- case EE_STATE_START: {
- jerry_ee_state=EE_STATE_OP_A;
- break;
- }
- case EE_STATE_OP_A: {
- jerry_ee_op=(data<<1);
- jerry_ee_state=EE_STATE_OP_B;
- break;
- }
- case EE_STATE_OP_B: {
- jerry_ee_op|=data;
- jerry_ee_direct_jump=0;
-// fprintf(log_get(),"eeprom: opcode %i\n",jerry_ee_op);
- switch (jerry_ee_op)
- {
- case 0: jerry_ee_state=EE_STATE_0; break;
- case 1: jerry_ee_state=EE_STATE_1; break;
- case 2: jerry_ee_state=EE_STATE_2; break;
- case 3: jerry_ee_state=EE_STATE_3; break;
- }
- eeprom_set_di(data);
- break;
- }
- case EE_STATE_0: {
- jerry_ee_rstate=EE_STATE_0_0;
- jerry_ee_state=EE_READ_ADDRESS;
- jerry_ee_direct_jump=1;
- jerry_ee_address_cnt=6;
- jerry_ee_address_data=0;
- break;
- }
- case EE_STATE_0_0: {
- switch ((jerry_ee_address_data>>4)&0x03)
- {
- case 0: jerry_ee_state=EE_STATE_0_0_0; break;
- case 1: jerry_ee_state=EE_STATE_0_0_1; break;
- case 2: jerry_ee_state=EE_STATE_0_0_2; break;
- case 3: jerry_ee_state=EE_STATE_0_0_3; break;
- }
- eeprom_set_di(data);
- break;
- }
- case EE_STATE_0_0_0:{
- // writes disable
- // fprintf(log_get(),"eeprom: read only\n");
- jerry_writes_enabled=0;
- jerry_ee_state=EE_STATE_START;
- break;
- }
- case EE_STATE_0_0_1:{
- // writes all
- jerry_ee_rstate=EE_STATE_0_0_1_0;
- jerry_ee_state=EE_READ_DATA;
- jerry_ee_data_cnt=16;
- jerry_ee_data=0;
- jerry_ee_direct_jump=1;
- break;
- }
- case EE_STATE_0_0_1_0:{
- // fprintf(log_get(),"eeprom: filling eeprom with 0x%.4x\n",data);
- if (jerry_writes_enabled)
- {
- for (int i=0;i<64;i++)
- eeprom_ram[i]=jerry_ee_data;
- }
- //else
- // fprintf(log_get(),"eeprom: not writing because read only\n");
- jerry_ee_state=EE_STATE_BUSY;
- break;
- }
- case EE_STATE_0_0_2:{
- // erase all
- //fprintf(log_get(),"eeprom: erasing eeprom\n");
- if (jerry_writes_enabled)
- {
- for (int i=0;i<64;i++)
- eeprom_ram[i]=0xffff;
- }
- jerry_ee_state=EE_STATE_BUSY;
- break;
- }
- case EE_STATE_0_0_3:{
- // writes enable
- //fprintf(log_get(),"eeprom: read/write\n");
- jerry_writes_enabled=1;
- jerry_ee_state=EE_STATE_START;
- break;
- }
- case EE_STATE_1: {
- jerry_ee_rstate=EE_STATE_1_0;
- jerry_ee_state=EE_READ_ADDRESS;
- jerry_ee_address_cnt=6;
- jerry_ee_address_data=0;
- jerry_ee_direct_jump=1;
- break;
- }
- case EE_STATE_1_0: {
- jerry_ee_rstate=EE_STATE_1_1;
- jerry_ee_state=EE_READ_DATA;
- jerry_ee_data_cnt=16;
- jerry_ee_data=0;
- jerry_ee_direct_jump=1;
- break;
- }
- case EE_STATE_1_1: {
- //fprintf(log_get(),"eeprom: writing 0x%.4x at 0x%.2x\n",jerry_ee_data,jerry_ee_address_data);
- if (jerry_writes_enabled)
- eeprom_ram[jerry_ee_address_data]=jerry_ee_data;
- jerry_ee_state=EE_STATE_BUSY;
- break;
- }
- case EE_STATE_2: {
- jerry_ee_rstate=EE_STATE_2_0;
- jerry_ee_state=EE_READ_ADDRESS;
- jerry_ee_address_cnt=6;
- jerry_ee_address_data=0;
- jerry_ee_data_cnt=16;
- jerry_ee_data=0;
- break;
- }
- case EE_STATE_3: {
- jerry_ee_rstate=EE_STATE_3_0;
- jerry_ee_state=EE_READ_ADDRESS;
- jerry_ee_address_cnt=6;
- jerry_ee_address_data=0;
- jerry_ee_direct_jump=1;
- break;
- }
- case EE_STATE_3_0: {
- //fprintf(log_get(),"eeprom: erasing 0x%.2x\n",jerry_ee_address_data);
- if (jerry_writes_enabled)
- eeprom_ram[jerry_ee_address_data]=0xffff;
- jerry_ee_state=EE_STATE_BUSY;
- break;
- }
+ case EE_STATE_START:
+ jerry_ee_state = EE_STATE_OP_A;
+ break;
+ case EE_STATE_OP_A:
+ jerry_ee_op = (data << 1);
+ jerry_ee_state = EE_STATE_OP_B;
+ break;
+ case EE_STATE_OP_B:
+ jerry_ee_op |= data;
+ jerry_ee_direct_jump = 0;
+// WriteLog("eeprom: opcode %i\n",jerry_ee_op);
+ switch (jerry_ee_op)
+ {
+ case 0: jerry_ee_state = EE_STATE_0; break;
+ case 1: jerry_ee_state = EE_STATE_1; break;
+ case 2: jerry_ee_state = EE_STATE_2; break;
+ case 3: jerry_ee_state = EE_STATE_3; break;
+ }
+ eeprom_set_di(data);
+ break;
+ case EE_STATE_0:
+ jerry_ee_rstate = EE_STATE_0_0;
+ jerry_ee_state = EE_READ_ADDRESS;
+ jerry_ee_direct_jump = 1;
+ jerry_ee_address_cnt = 6;
+ jerry_ee_address_data = 0;
+ break;
+ case EE_STATE_0_0:
+ switch ((jerry_ee_address_data >> 4) & 0x03)
+ {
+ case 0: jerry_ee_state=EE_STATE_0_0_0; break;
+ case 1: jerry_ee_state=EE_STATE_0_0_1; break;
+ case 2: jerry_ee_state=EE_STATE_0_0_2; break;
+ case 3: jerry_ee_state=EE_STATE_0_0_3; break;
+ }
+ eeprom_set_di(data);
+ break;
+ case EE_STATE_0_0_0:
+ // writes disable
+ // WriteLog("eeprom: read only\n");
+ jerry_writes_enabled = 0;
+ jerry_ee_state = EE_STATE_START;
+ break;
+ case EE_STATE_0_0_1:
+ // writes all
+ jerry_ee_rstate = EE_STATE_0_0_1_0;
+ jerry_ee_state = EE_READ_DATA;
+ jerry_ee_data_cnt = 16;
+ jerry_ee_data = 0;
+ jerry_ee_direct_jump = 1;
+ break;
+ case EE_STATE_0_0_1_0:
+ // WriteLog("eeprom: filling eeprom with 0x%.4x\n",data);
+ if (jerry_writes_enabled)
+ for(int i=0; i<64; i++)
+ eeprom_ram[i] = jerry_ee_data;
+ EEPROMSave(); // Save it NOW!
+ //else
+ // WriteLog("eeprom: not writing because read only\n");
+ jerry_ee_state = EE_STATE_BUSY;
+ break;
+ case EE_STATE_0_0_2:
+ // erase all
+ //WriteLog("eeprom: erasing eeprom\n");
+ if (jerry_writes_enabled)
+ for(int i=0; i<64; i++)
+ eeprom_ram[i] = 0xFFFF;
+
+ jerry_ee_state = EE_STATE_BUSY;
+ break;
+ case EE_STATE_0_0_3:
+ // writes enable
+ //WriteLog("eeprom: read/write\n");
+ jerry_writes_enabled = 1;
+ jerry_ee_state = EE_STATE_START;
+ break;
+ case EE_STATE_1:
+ jerry_ee_rstate = EE_STATE_1_0;
+ jerry_ee_state = EE_READ_ADDRESS;
+ jerry_ee_address_cnt = 6;
+ jerry_ee_address_data = 0;
+ jerry_ee_direct_jump = 1;
+ break;
+ case EE_STATE_1_0:
+ jerry_ee_rstate = EE_STATE_1_1;
+ jerry_ee_state = EE_READ_DATA;
+ jerry_ee_data_cnt = 16;
+ jerry_ee_data = 0;
+ jerry_ee_direct_jump = 1;
+ break;
+ case EE_STATE_1_1:
+ //WriteLog("eeprom: writing 0x%.4x at 0x%.2x\n",jerry_ee_data,jerry_ee_address_data);
+ if (jerry_writes_enabled)
+ eeprom_ram[jerry_ee_address_data] = jerry_ee_data;
+ EEPROMSave(); // Save it NOW!
+ jerry_ee_state = EE_STATE_BUSY;
+ break;
+ case EE_STATE_2:
+ jerry_ee_rstate = EE_STATE_2_0;
+ jerry_ee_state = EE_READ_ADDRESS;
+ jerry_ee_address_cnt = 6;
+ jerry_ee_address_data = 0;
+ jerry_ee_data_cnt = 16;
+ jerry_ee_data = 0;
+ break;
+ case EE_STATE_3:
+ jerry_ee_rstate = EE_STATE_3_0;
+ jerry_ee_state = EE_READ_ADDRESS;
+ jerry_ee_address_cnt = 6;
+ jerry_ee_address_data = 0;
+ jerry_ee_direct_jump = 1;
+ break;
+ case EE_STATE_3_0:
+ //WriteLog("eeprom: erasing 0x%.2x\n",jerry_ee_address_data);
+ if (jerry_writes_enabled)
+ eeprom_ram[jerry_ee_address_data] = 0xFFFF;
+ jerry_ee_state = EE_STATE_BUSY;
+ break;