C'est très perfectible et ça n'aura probablement aucun intérêt sauf pour des développeurs. Pour ceux qui souhaitent un émulateur de calculatrices NumWorks grand public style CEmu, je doute très fortement que QEMU soit la réponse ici pour des raisons techniques.
La liste des défauts connus:
- Seul le tout premier modèle (N0100) est géré.
- Les boucles de timing en dur d'epsilon vont être très problématiques avec QEMU, qui n'est pas un émulateur cycle-accurate.
- L'émulation du framebuffer ST7789V est très incomplet. En particulier, la lecture du framebuffer n'est pas implémenté et cela donne des artefacts avec le color blending.
L'ADC n'est pas correctement émulé, ce qui fige le firmware très vite. Cela peut être contourné en commentant la lecture du niveau de batterie dans epsilon.- Le sleep/wakeup n'est pas implémenté, le firmware se fige après qu'il pense que 30 secondes d'inactivité se sont déroulées.
- L'émulation de clavier de QEMU se base sur des scancodes (=touches physiques) et j'ai pas trouvé de bonne solution pour mapper le clavier d'une NumWorks.
- ...
En dehors de tout ça, techniquement ça "fonctionne" et ça fait même des calculs... C'est juste pas envisageable pour des utilisateurs finaux, même en corrigeant tout ce qui est corrigeable.
Pour ceux que ça intéresse, la version expéditive des instructions:
- Code: Select all
$ git clone https://github.com/boricj/qemu.git
$ cd qemu
$ git checkout numworks_calculators
$ ./configure --target-list=arm-softmmu
$ ninja -C build
$ ./build/arm-softmmu/qemu-system-arm -M n0100 -kernel ~/Documents/epsilon/output/release/device/n0100/epsilon.elf