RESULTS.txt 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. 1. Interpretation of results
  2. The test program syncs with the 9918 (or similar) interrupt. It does not
  3. consider any of the other interrupts in the V9938 or later.
  4. The results will probably be meaningless in any machine with separate clocks
  5. for the CPU and the VDP. Even in machines with a shared clock, there seem
  6. to be three possible phases (for the 9918 family) or more (for the V9938)
  7. between CPU and VDP, as demonstrated by the three different results obtained
  8. in the VG-8020/40 and the NMS-8250.
  9. All measurements are taken from the CPU (no hardware probes), therefore
  10. they all use the CPU clock as a basis.
  11. Cyc,Err <a> <b>
  12. a: total CPU cycles per frame.
  13. b: exit error code; a value of 0 means no error.
  14. Note: The value of a has been found to be stable in all tested computers,
  15. even in those with separate clocks. Cause is unknown.
  16. ACK <a> <b> <c> <d>
  17. a: Number of ticks, relative to the interrupt, at which an interrupt may
  18. be acknowledged. Negative means before the interrupt.
  19. b: Number of ticks, relative to the interrupt, at which the Status
  20. Register bit 7 starts being set. Negative means before the interrupt.
  21. c, d: Minimum and maximum number of cycles for interrupt acknowledgement,
  22. that is, from the I/O read of the status register to an INT being
  23. no longer triggered. d=-1 means from c up. Possible values of c,d are:
  24. 0-2; 3-5; 6-10; 11-12; 13-13; 14-14; 15-15; 16- -1.
  25. I don't think software can distinguish finer results. Suggestions for
  26. a test are welcome.
  27. None of the ACK tests has been run while the VDP is busy serializing.
  28. Results are not guaranteed there.
  29. Example using the values obtained in the Philips VG-8020/40:
  30. Cyc,Err: 71364 0
  31. - 71364 cycles (T-states) per frame (typical in PAL machines).
  32. - Error code: 0, meaning no error.
  33. ACK -5 -3 3 5
  34. - If the status register is read 5 cycles before the interrupt, the
  35. interrupt is not triggered. This counts the I/O exact timing, not the
  36. start of the instruction.
  37. - Bit 7 of the status register is set 3 cycles before the interrupt.
  38. (Presumably, the ACK prevents bit 7 from going high, so if the read
  39. happens at cycle -5 or -4, it won't ever be set).
  40. - Once the int line goes low (active), it takes between 3 and 5 cycles
  41. inclusive (but we don't know how many) for the interrupt to be blocked
  42. after being acknowledged. Note: Since the /INT line is sampled at the
  43. last cycle of each instruction, this probably means that at the hardware
  44. level, it takes 2 to 4 cycles for this line to go high again.
  45. 2. Results for machines with synced clocks
  46. Philips VG-8020/40 (VDP: TMS9129NL):
  47. Cyc,Err 71364 0
  48. ACK -5 -3 3 5 (sometimes -5 -4 3 5, sometimes -4 -3 3 5, consistent
  49. between different runs or soft resets, inconsistent
  50. between hard resets or power cycles)
  51. Philips NMS-8250 (VDP: V9938):
  52. Cyc,Err 71364 0 (after VDP(10)=0: Cyc,Err 59736 0)
  53. ACK -6 -3 3 5 Generally consistent between runs but not between boots,
  54. -6 -2 3 5 as in the VG-8020/40. One inconsistency between runs was
  55. -6 -3 6 10 possibly found (-6 -3 3 5 vs -6 -2 3 5, but not sure).
  56. -6 -2 6 10
  57. 3. Results for machines with separate clocks
  58. Sony HB-10P (VDP: T6950, separate clocks):
  59. Cyc,Err 71745 0
  60. ACK -14 -15 3 5 (a oscillates between -13 and -15, b oscillates between
  61. -14 and -16, between runs; c and d were always 3 and 5
  62. respectively. Longer run times made the -16 less
  63. frequent, so this may be due to temperature. a and b
  64. were always 0 to 1 cycles away from each other.)
  65. 4. Results for openMSX
  66. All machines:
  67. Cyc,Err 71364 0 (on PAL; 59736 0 on NTSC machines)
  68. ACK 0 0 0 2