Откуда растут руки у эмуляторописателей?

 

Этим вопросом я задавался не раз, когда сталкивался с кривой эмуляцией. Недавно на недопц увидел заметку о запуске линупса на компе на базе i4004. Глянул на исходник:

      case 0xf8: {            //DAC
         
         uint8_t t = mCPU.A - 1;

         mCPU.A = t;
         mCPU.C = 1 ^ (t >> 4);
         break;

подобная мешанина найдется и в других исходных текстах эмуляции. Дело в том, что опкод DAC описан как AC=AC-1, но  в руководстве описан подробнее: AC=AC+15, что для 4бит это то же самое. Только вот флаг переноса меняется иначе, и в каждом исходнике используются не пойми какие конструкции. Оставлю описание.




Комментарии