machine.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package mz700_tape_wav_gen
  2. type MachineType uint8
  3. const (
  4. MACHINE_MZ_700 MachineType = iota
  5. MACHINE_MZ_80K MachineType = iota
  6. MACHINE_MZ_80A MachineType = iota
  7. MACHINE_MZ_80B MachineType = iota
  8. MACHINE_MZ_800 MachineType = iota
  9. )
  10. type machineRelatedConfig struct {
  11. Unsupported bool
  12. ShortPulseSampleHigh int
  13. ShortPulseSampleTotal int
  14. LongPulseSampleHigh int
  15. LongPulseSampleTotal int
  16. LongGapSize int
  17. ShortGapSize int
  18. ShortTapemarkSize int
  19. LongTapemarkSize int
  20. TapemarkEndLongPulse int
  21. }
  22. func getMachineRelatedConfigByType(mt MachineType) machineRelatedConfig {
  23. switch mt {
  24. case MACHINE_MZ_700:
  25. return machineRelatedConfig{
  26. Unsupported: false,
  27. ShortPulseSampleHigh: 10,
  28. ShortPulseSampleTotal: 21,
  29. LongPulseSampleHigh: 20,
  30. LongPulseSampleTotal: 42,
  31. LongGapSize: 22000,
  32. ShortGapSize: 11000,
  33. ShortTapemarkSize: 20,
  34. LongTapemarkSize: 40,
  35. TapemarkEndLongPulse: 1,
  36. }
  37. case MACHINE_MZ_80K:
  38. return machineRelatedConfig{
  39. Unsupported: false,
  40. ShortPulseSampleHigh: 10,
  41. ShortPulseSampleTotal: 21,
  42. LongPulseSampleHigh: 20,
  43. LongPulseSampleTotal: 42,
  44. LongGapSize: 22000,
  45. ShortGapSize: 11000,
  46. ShortTapemarkSize: 20,
  47. LongTapemarkSize: 40,
  48. TapemarkEndLongPulse: 1,
  49. }
  50. case MACHINE_MZ_80A:
  51. return machineRelatedConfig{
  52. Unsupported: false,
  53. ShortPulseSampleHigh: 10,
  54. ShortPulseSampleTotal: 21,
  55. LongPulseSampleHigh: 20,
  56. LongPulseSampleTotal: 42,
  57. LongGapSize: 22000,
  58. ShortGapSize: 11000,
  59. ShortTapemarkSize: 20,
  60. LongTapemarkSize: 40,
  61. TapemarkEndLongPulse: 1,
  62. }
  63. case MACHINE_MZ_80B:
  64. return machineRelatedConfig{
  65. Unsupported: false,
  66. ShortPulseSampleHigh: 7,
  67. ShortPulseSampleTotal: 14,
  68. LongPulseSampleHigh: 15,
  69. LongPulseSampleTotal: 30,
  70. LongGapSize: 10000,
  71. ShortGapSize: 5000,
  72. ShortTapemarkSize: 20,
  73. LongTapemarkSize: 40,
  74. TapemarkEndLongPulse: 1,
  75. }
  76. case MACHINE_MZ_800:
  77. return machineRelatedConfig{
  78. Unsupported: false,
  79. ShortPulseSampleHigh: 11,
  80. ShortPulseSampleTotal: 23,
  81. LongPulseSampleHigh: 21,
  82. LongPulseSampleTotal: 43,
  83. LongGapSize: 22000,
  84. ShortGapSize: 11000,
  85. ShortTapemarkSize: 20,
  86. LongTapemarkSize: 40,
  87. TapemarkEndLongPulse: 1,
  88. }
  89. default:
  90. return machineRelatedConfig{
  91. Unsupported: true,
  92. }
  93. }
  94. }