telescrivente.c 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include <stdio.h>
  2. #include "elea_tipi.h"
  3. #include "governo.h"
  4. #include "memoria.h"
  5. static const carattere mappa_caratteri[64][3] = {
  6. "0", "1", "~", "2", "4", "+", "#", "3", "5", "6", "/", "7", "9", "-", "÷", "8",
  7. "Φ", "A", "δ", "B", "D", "=", "α", "C", "E", "F", "%", "G", "I", ",", "γ", "H",
  8. ".", "S", "θ", "T", "V", "!", ")", "U", "W", "X", "?", "Y", "\'", "&", "⊗", "Z",
  9. "ε", "J", "*", "K", "M", "(", "β", "L", "N", "O", "$", "η", "R", "P", "π", "Q"
  10. };
  11. int op_cm(istruzione *i)
  12. {
  13. return 0;
  14. }
  15. int op_ms(istruzione *i)
  16. {
  17. struct istruzione_gen *ms = &i->gen;
  18. uint32_t ind;
  19. int len;
  20. int j;
  21. int r;
  22. carattere c, *stampabile;
  23. r = estrai_cifra(ms->L[0]);
  24. if (r < 0)
  25. return -1; /* Errore */
  26. len = r;
  27. r = estrai_cifra(ms->L[1]);
  28. if (r < 0)
  29. return -1; /* Errore */
  30. len += 10 * r;
  31. len = estrai_cifra(ms->L[0]) + 10 * estrai_cifra(ms->L[1]);
  32. ind = estrai_indirizzo(ms->I);
  33. if (ind == (uint32_t)(-1))
  34. return -1; /* Errore */
  35. for (j = 0; j < len; j++) {
  36. c = mem_leggi_carattere(ind + j);
  37. printf("%s", mappa_caratteri[c]);
  38. }
  39. printf("\r\n");
  40. return 0;
  41. }