ืคืจืืืกืืืจืื
ืืืืืชื ืืืื ืืืืจืช ืจืืจื, ืจืืฉืชื ืคืขื ZX Spectrum+ ืืืืืจ ืืืจืืื ืื. ืืฆืืจืฃ ืืืืฉื ืขืฆืื, ืงืืืืชื ืืกืคืจ ืงืืืืช ืฉืืข ืขื ืืฉืืงืื (ืืืจืืื ืืืงืืจืืช ืขื ืืืจืืืช), ืืื ืชืืื ืืืช ืืืงืืืืช ืขื ืงืืืืช ืืื ืกืืืื ืื ืืืืืืื. ืืืจืื ืืืคืชืขื, ื ืชืื ื ืงืกืืืช ืื ืืช 40 ืฉื ื ืืื ืงืจืืืื ืืืื ืืืฆืืืชื ืืืืจืื ืืื ืืืขื ืืช ืื ืืืฉืืงืื ืืืชืืื ืืืช.
ืขื ืืืช, ืืืืง ืืืงืืืืช ืืฆืืชื ืืงืืืืช ืฉืืจืืจ ืฉืื ื ืขืฉื ืขื ืืื ืืืฉื ZX Spectrum. ืื ื ืฉืืขื ืืืจืช ืืืืจื ืืื ืืืื ืืืงืืืืช ืืืืืฉื ืื ืืืจ, ืื ืื ืืชืืืื ืขื ืืืขืื BASIC ืงืฆืจ, ืฉืืืจื ืืื ืงืืื ืืืงืืืืช ืฉื ืื ืืชืืื ืืช ืืืืฉืืงืื.
ืืืฉื ืืื ืื ืื ืจืืฃ ืืืชื - ืืืื ืจืฆืืชื ืืืืืช ืื ืืกืชืชืจ ืืื. ืื ืืชื ืืืื ืืงืจืื ืืช ืืืช ืืฉืืข ืืจืฆืฃ ืฉื ืืชืื, ืืชื ืืืื ืืืคืฉ ืชืืืื ืื ืื ืืืจ ืฉืืฆืืื ืืช ืืงืืจ ืืืืช. ืกืื ืฉื ืจืืจื-ืืจืืืืืืืื.
ืขืืฉืื, ืืืจื ืฉืืืืชื ืขื ืืกืืฃ ืืืกืชืื ืขื ืืชืืืืืช ืฉื ืืงืกืืืช ืขืฆืื, ืื ื ืืืืื ืื
ืืชืฉืืื ืืืืชื ืืืฉ ืืื ืขืื ืื ืื ืืืื
ืขื ืืชืืืืช ืฉื ืืงืกืื ืืฉืืืืืช ืืืคืืข ืฉืื ืฉื ืืืฉื ื-TRS-80, ืืืืฉ ืืชืืช ืืฉื ืืืฆืจื: "ืืืืฆืจ ืขื ืืื Radio Shack ืืืจื"ื"
(ืื ืืชื ืจืืฆื ืืฉืืืจ ืืช ืืชืืืื ืขื ืืกืืฃ, ืื ืชืืื ืก ืืกืคืืืืจ)
ืืฉืืืื ืืื ืืืชืืช ืฉืืข
ืงืืื ืื, ืืืื ื ืขืฉื ืืืืืืฆืื ืฉื ืืงืืืืช ืืืืืื. ืืชื ืืืื ืืฉืืืข ืืื ืื ื ืฉืืข:
ืืืจืืื ืืืงืืื ืืืืืฉื ZX Spectrum ื ืฉืืขืช:
ืืฉื ื ืืืงืจืื, ืืชืืืืช ืืืงืืื ืืฉ ืื ืฉื ืงืจื ืืื ืืืืก - ืฆืืื ืืืืชื ืชืืจ (ืืืงืืื ืืจืืฉืื ื ืืื ืงืฆืจ ืืืื < ืฉื ืืื ืืืช, ืื ื ืืชื ืืืืืื ืื). ืฆืืื ืืคืืืืื ืืืืชืช ืืืืฉื ืืืชืืื ื ืืงืืืช ื ืชืื ืื. ืืืื, ืื ืืืฉื ืืืื ืจืง ืืช ืฆืืื ืืคืืืืื "ืฉืื" ืืคื ืฆืืจืช ืืืืช ืืืชืืจ ืฉืื.
ืืฉ ืฆืืจื ืืืืจ ืืฉืื ืขื ืฆืืจืช ืืืืช ืขืฆืื. ืืืืืื, ื-ZX Spectrum ืฆืืจืชื ืืืื ืืช:
ืืืฉืจ ืืืืื ืฆืืื ืืืืก, ื-ZX Spectrum ืืฆืื ืคืกืื ืืืืืื ืืืืืืื ืืกืืจืืืื ืขื ืืืื ืืืกื ืืื ืืฆืืื ืฉืืืืช ืืืื. ืืื ืืคืืืืื ืืกืชืืื ืืืคืง ืกืื ืืจืื, ืฉืืืืชืช ืืืืฉื ืืืชืืื ืืงืื ื ืชืื ืื. ืืื ืืืืคืืื ืขื ืืื ืืฉื ืงืฆืจ ืืืชืจ (ืืืฉืืืื ืืืื ืืคืืืืื ืืื ืชืื ืื ืืืืื) (ืจืื ืืืืจ)
ืืืืจ ืงืืืช ืืืคืง ืืกืื ืืจืื, ืืืืฉื ืืชืขื ืื ืขืืืื/ืืจืืื ืฉื ืืืืช, ืืืืื ืืช ืืฉื ืืืื ืฉืื. ืื ืืฉื ืืืื ืงืื ืืืืื ืืกืืื, ืืื 1 ื ืืชื ืืืืืจืื, ืืืจืช 0. ืืืืืื ื ืืกืคืื ืืืืืืื ืืืชืืืื ืืืืจ ืขื ืขืฆืื ืขื ืืงืืืช N ืืชืื. ืืืกืคืจ N ื ืืงื ืืืจื ืืื ืืืืืชืจืช ืฉื ืืงืืืฅ ืฉืืืจื. ืจืฆืฃ ืืืขืื ื ืืื ืืืืงืื:
- ืืื ืืืืก
- ืืืชืจืช (ืืืจื ืงืืืข), ืืืืื ืืช ืืืื ืื ืชืื ืื ืฉืืืจืืช (N), ืฉื ืืงืืืฅ ืืืกืื
- ืืื ืืืืก
- ืื ืชืื ืื ืขืฆืื
ืืื ืืืืื ืฉืื ืชืื ืื ื ืืขื ืื ืืฆืืจื ื ืืื ื, ื-ZX Spectrum ืงืืจื ืืช ืื ืฉื ืงืจื ืืืื ืืืืืืช (Parity byte), ืืฉืจ ืืืืฉื ืืขืช ืฉืืืจืช ืงืืืฅ ืขื ืืื XOR ืืืฆืืข XOR ืฉื ืื ืืืชืื ืฉื ืื ืชืื ืื ืืืชืืืื. ืืขืช ืงืจืืืช ืงืืืฅ, ืืืืฉื ืืืฉื ืืช ืืืื ืืืืืืืช ืืื ืชืื ืื ืฉืืชืงืืื, ืืื ืืชืืฆืื ืฉืื ื ืืืชืืฆืื ืฉื ืฉืืจื, ืืฆืื ืืช ืืืืขืช ืืฉืืืื "R Tape loading error". ืืืืคื ืงืคืื ื, ืืืืฉื ืืืื ืืื ืคืืง ืืืืขื ืื ืืืงืื ืืืชืจ ืื, ืืขืช ืืงืจืืื, ืืื ืื ืืืื ืืืืืช ืืืคืง (ืืืืืฆื ืื ืืฉื ืืืื ืฉืื ืืื ื ืชืืื ืืืืืืืช ืืกืืืืื)
ืื ืืืื ื ืจืื ืขืืฉืื ืืื ื ืจืื ืืืช ืื ืืืืข:
ืื ื ืืืช ืืคืืืืื. ืฆืืจืช ืืืืช ืฉืื ื ืืืืคื ืืฉืืขืืชื, ืื ืืจืืจ ืฉืืืืช ืืืจืื ืืืืจื ืขื ืคืืืกืื ืงืฆืจืื ืืชืืจ ืืกืืื. ืืชืืจ ืืืืื ืฉื 44100 ืืจืฅ, ืืืจืืง ืืื ื"ืคืกืืืช" ืืื ืืขืจื 48 ืืืืืืช (ืฉืืชืืื ืืชืืจ ืฉื ~918 ืืจืฅ). ืืืื ื ืืืืจ ืืช ืื ืชืื ืืื.
ืืขืช ื ืกืชืื ืขื ืงืืข ืื ืชืื ืื:
ืื ืืืืืื ืืช ืืืจืืง ืืื ืคืืืกืื ืืืืืื, ืืชืืจืจ ืฉืืืจืืง ืืื ืคืืืกืื "ืืจืืืื" ืืื ืขืืืื ~48 ืืืืืืช, ืืืื ืงืฆืจืื - ~24. ืืืกืชืืืืช ืงืื ื ืงืืืื, ืืืื ืฉืืกืืคื ืฉื ืืืจ ืืชืืจืจ ืฉืคืืืกื "ืจืคืจื ืก" ืืชืืจ ืฉื 918 ืืจืฅ ืขืืงืืื ืืจืฆืืคืืช, ืืชืืืืชื ืืขื ืกืืคื ืฉื ืืงืืืฅ. ื ืืชื ืืื ืื ืื ืืขืช ืฉืืืืจ ื ืชืื ืื, ืื ื ืชืงืืื ืืคืืืก ื ืืกืฃ ืืื ืคืืืกื ืืืืืืก, ืื ื ืืืฉืืืื ืืืชื ืืืื 1, ืืืจืช 0.
ืื ืขื ืืืคืง ืืกื ืืจืื? ืืืื ื ืกืชืื ืขื ืชืืืืช ืื ืชืื ืื:
ืฆืืื ืืคืืืืื ืืกืชืืื ืืื ืชืื ืื ืืชืืืืื ืืื. ืืขื ืืืืืจ ืืืชืจ, ืืืืจ ื ืืชืื ืืกืคืจ ืืงืืืืช ืืืืื ืฉืื ืืช, ืืฆืืื ื ืืืืืช ืฉืืืืื ืืจืืฉืื ืฉื ืื ืชืื ืื ืืื ืชืืื ืืื (10100101b, A5h). ืืืืฉื ืขืฉืื ืืืชืืื ืืงืจืื ื ืชืื ืื ืืืืจ ืฉืืงืื ืืืชื.
ืืชื ืืืื ืื ืืฉืื ืื ืืืืื ืฉื ืืืคืง ืืืชืืืืกืืช ืืจืืฉืื ืืื ืืืืจ ื-1 ืืืืจืื ืืืืื ืืกื ืืจืื. ืื ืืชืืื ืืจืื ืืืชืจ ืืืืืจ ืืชืืืื ืืคืืชืื ืฉื ืชืืื ืช ืืืืื ื ืชืื ืื, ืืืฉืจ ืื ืชืื ืื ืืชืืืืช ืืงืืืฅ ืื ื ืืชื ืื ืืงืจืืื ืืฆืืื.
ืืขืช ื ื ืกื ืืชืืจ ืืืืืจืืชื ืฉืืขืื ืงืืืฅ ืฉืืข ืืืืขื ื ืชืื ืื.
ืืืขื ื ืชืื ืื
ืจืืฉืืช, ืืืื ื ืกืชืื ืขื ืืื ืื ืืืช ืืฉืืืจื ืขื ืืืืืืจืืชื ืคืฉืื:
- ื ืฉืงืื ืจืง ืงืืฆืื ืืคืืจืื WAV;
- ืงืืืฅ ืืฉืืข ืืืื ืืืชืืื ืืฆืืื ืคืืืืื ืืืกืืจ ืืืืื ืฉืชืืงื ืืืชืืื
- ืงืืืฅ ืืืงืืจ ืืืื ืืืืืช ืืขื ืงืฆื ืืืืื ืฉื 44100 ืืจืฅ. ืืืงืจื ืื, ืืืจืืง ืืื ืคืขืืืืช ืืืืืืก ืฉื 48 ืืืืืืช ืืืจ ื ืงืืข ืืืื ืื ื ืฆืืจื ืืืฉื ืืืชื ืืืืคื ืชืืื ืชื;
- ืคืืจืื ืืืืืื ืืืื ืืืืืช ืื (8/16 ืกืืืืืช/ื ืงืืื ืฆืคื) - ืฉืื ืืขืช โโืืงืจืืื ื ืืื ืืืืืจ ืืืชื ืืจืฆืื;
- ืื ื ืื ืืืื ืฉืงืืืฅ ืืืงืืจ ืื ืืจืื ืขื ืืื ืืฉืจืขืช, ืื ืฉืืืืจ ืืืืฆื ืืช ืืชืืฆืื;
ืืืืืจืืชื ืืงืจืืื ืืืื ืืืืงืื:
- ืื ื ืงืืจืืื ืืช ืืงืืืฅ ืืืืืจืื, ืืืืงืืื ื ืืืจ ืืช ืคืืจืื ืืืืืื ื-8 ืกืืืืืช;
- ืงืืข ืืช ืืืืงืื ืฉื ืืืืคืง ืืจืืฉืื ืื ืชืื ื ืืืืืื. ืืื ืืขืฉืืช ืืืช, ืืชื ืฆืจืื ืืืฉื ืืช ืืกืคืจ ืืืืื ืขื ืืืฉืจืขืช ืืืงืกืืืืืช. ืืฉื ืืคืฉืืืช, ื ืืฉื ืืืชื ืคืขื ืืืช ืืืืคื ืืื ื. ืืืื ื ืฉืืืจ ืืืชื ืืืฉืชื ื prev_pos;
- ืืืกืฃ 48 ืืืืงืื ืืืืคืง ืืืืจืื (pos := prev_pos + 48)
- ืืืืืื ืฉืืืืืช ืืืืงืื ื-48 ืืื ื ืืืืืื ืฉื ืืืข ืืืฆื ืฉื ืืืคืง ืืืืืืก ืืื (ืคืืืื ืืงืืืช, ืคืขืืื ืื ืืฆืืื ืฉื ืื ืื ืื ืืืืืค ืืจืืื ืืื'), ืขืืื ื ืืืชืืื ืืช ืืืงืื ืืืืคืง. ืืื ืืขืฉืืช ืืืช, ืงื ืคืืกืช ื ืชืื ืื ืงืื ื (pos-8;pos+8) ืืืฆื ืขืืื ืืช ืขืจื ืืืฉืจืขืช ืืืงืกืืืืืช. ืืืืงืื ืืืชืืื ืืืงืกืืืื ืืืฉืืจ ื-pos. ืืื 8 = 48/6 ืืื ืงืืืข ืฉืืชืงืื ืื ืืกืื, ืื ืฉืืืืื ืฉื ืงืืข ืืช ืืืงืกืืืื ืื ืืื ืืื ืืฉืคืืข ืขื ืืืคืื ืืืจืื ืฉืขืฉืืืื ืืืืืช ืืงืจืืช ืืงืื. ืืืงืจืื ืจืขืื ืืืื, ืืืฉืจ ืืืจืืง ืืื ืคืืืกืื ืืื ืืจืื ืคืืืช ืื ืืืื ื-48, ื ืืชื ืืืืฉื ืืืคืืฉ ืืืืืฅ ืืืจ ืคืืืก, ืื ืืืกืืจืช ืืืืืจ ืื ืืชืืจ ืืืช ืืืืืืจืืชื;
- ืืฉืื ืืงืืื, ืืืื ืฆืืจื ืื ืืืืืง ืฉืืืคืง ืืืืืืก ื ืืฆื ืืืื. ืืืืืจ, ืื ืคืฉืื ืืืคืฉืื ืืช ืืืงืกืืืื, ืื ืื ืืืืื ืฉืืืืฃ ืงืืื ืืงืืข ืืื. ืืืืฉืื ืืืืจืื ืฉืื ืฉื ืชืืื ืืช ืืงืจืืื, ืื ื ืืืืง ืืช ืืืืื ืืื ืขืจืื ืืืฉืจืขืช ืืืงืกืืืืืช ืืืืื ืืืืืช ืืงืืข, ืืื ืืื ืืืจื ืืืืื ืืกืืื, ืื ื ืกืืคืจ ืืช ื ืืืืืชื ืฉื ืืืฃ. ืืฉืืื ืืื ืื ืื ืืขืฉืืช ืื ืืืคืง ืืืืืืก ืื ื ืืฆื. ืืฉื ื 2 ืืคืฉืจืืืืช: ืื ืฉืื ืชืื ืื ืืกืชืืืื ืืืฉืชืืงื ืืื ืืืืจ ืืื, ืื ืฉืืฉ ืืจืืืช ืืื ืฉืืืืช ืงืจืืื. ืขื ืืืช, ื ืฉืืื ืืืช ืืื ืืคืฉื ืืช ืืืืืืจืืชื;
- ืืฉืื ืืื, ืขืืื ื ืืงืืืข ืืช ื ืืืืืชื ืฉื ืืืคืง ื ืชืื ืื (ืกืืืืืช 0 ืื 1), ืืฉื ืื ื ืืงื ืืช ืืืฆืข ืืงืืข (prev_pos;pos) middle_pos ืฉืืื ื-middle_pos := (prev_pos+pos)/2 ื ืืฉืืื ื ืืืฉืื ืฉื middle_pos ืืงืืข (middle_pos-8;middle_pos +8) ืืืื ื ืืฉื ืืช ืืืฉืจืขืช ืืืงืกืืืืืช ืืืืื ืืืืืช. ืื ืืืืื ืืื ืืื ืืื ืืืชืจ ื-10, ื ืืชืื ืกืืืืืช 1 ืืชืืฆืื, ืืืจืช 0. 10 ืืื ืงืืืข ืฉืืชืงืื ืื ืืกืื;
- ืฉืืืจ ืืช ืืืืงืื ืื ืืืื ื-prev_pos (prev_pos := pos)
- ืืืืจ ืขื ืืื ืืฉืื 3 ืขื ืฉื ืงืจื ืืช ืืงืืืฅ ืืืื;
- ืืฉ ืืฉืืืจ ืืช ืืขืจื ืืกืืืืืช ืืืชืงืื ืืงืืืฆื ืฉื ืืชืื. ืืืืืื ืฉืื ืืงืื ื ืืืฉืืื ืืช ืืืื ืืกืื ืืจืื ืืขืช โโืืงืจืืื, ืืืชืื ืฉืืกืคืจ ืืกืืืืืช ืื ืืืื ืืคืืื ืฉื 8, ืืื ืืืกื ืืกืืืืืช ืื ืืจืฉ ืืื ื ืืืืข. ืืืืฉืื ืืจืืฉืื ืฉื ืืืืืืจืืชื, ืื ืืืขืชื ืขื ืงืืืื ืฉื ืืืื ืืกืื ืืจืื ืืืื ืคืฉืื ืฉืืจืชื 8 ืงืืฆืื ืขื ืืกืคืจ ืฉืื ื ืฉื ืกืืืืืช ืืืคืกื. ืืื ืืื ืืืื ื ืชืื ืื ื ืืื ืื. ืืืืืืจืืชื ืืกืืคื, ืื ื ืคืฉืื ืืกืืจ ืืช ืื ืืืืืื ืขื A5h, ืื ืฉืืืคืฉืจ ืื ืืงืื ืืื ืืช ืงืืืฅ ืืคืื ืื ืืื
ืืืืืจืืชื ืืจืืื, ืืืขืื ืืื ืื
ืืืจืชื ืืจืืื ืืฉืคื ืืืชืืืช ืืชืืื ืืช, ืื... ืื ื ืืชืื ืช ืขืืื ืจืื ืืืื. ืืืคืฉืจืืช ืืื ื ืืขืืช ืืืฆืืขืื ืืืืืื, ืื ืืืฉืืื ืืืคืื ืืช ืืืืจืืช ืืงืจืืื ืืืืืจื ืืื ืืืคืฉืจ ืืื ื ืฉืืื ืืช ืื.
# ะัะฟะพะปัะทัะตะผ gem 'wavefile'
require 'wavefile'
reader = WaveFile::Reader.new('input.wav')
samples = []
format = WaveFile::Format.new(:mono, :pcm_8, 44100)
# ะงะธัะฐะตะผ WAV ัะฐะนะป, ะบะพะฝะฒะตััะธััะตะผ ะฒ ัะพัะผะฐั Mono, 8 bit
# ะะฐััะธะฒ samples ะฑัะดะตั ัะพััะพััั ะธะท ะฑะฐะนั ัะพ ะทะฝะฐัะตะฝะธัะผะธ 0-255
reader.each_buffer(10000) do |buffer|
samples += buffer.convert(format).samples
end
# ะะพะทะธัะธั ะฟะตัะฒะพะณะพ ะธะผะฟัะปััะฐ (ะฒะผะตััะพ 0)
prev_pos = 0
# ะ ะฐัััะพัะฝะธะต ะผะตะถะดั ะธะผะฟัะปััะฐะผะธ
distance = 48
# ะะฝะฐัะตะฝะธะต ัะฐัััะพัะฝะธั ะดะปั ะพะบัะตััะฝะพััะธ ะฟะพะธัะบะฐ ะปะพะบะฐะปัะฝะพะณะพ ะผะฐะบัะธะผัะผะฐ
delta = (distance / 6).floor
# ะะธัั ะฑัะดะตะผ ัะพั
ัะฐะฝััั ะฒ ะฒะธะดะต ัััะพะบะธ ะธะท "0" ะธ "1"
bits = ""
loop do
# ะ ะฐัััะธััะฒะฐะตะผ ะฟะพะทะธัะธั ัะปะตะดัััะตะณะพ ะธะผะฟัะปััะฐ
pos = prev_pos + distance
# ะัั
ะพะดะธะผ ะธะท ัะธะบะปะฐ ะตัะปะธ ะดะฐะฝะฝัะต ะทะฐะบะพะฝัะธะปะธัั
break if pos + delta >= samples.size
# ะะพััะตะบัะธััะตะผ ะฟะพะทะธัะธั pos ะพะฑะฝะฐััะถะตะฝะธะตะผ ะผะฐะบัะธะผัะผะฐ ะฝะฐ ะพััะตะทะบะต [pos - delta;pos + delta]
(pos - delta..pos + delta).each { |p| pos = p if samples[p] > samples[pos] }
# ะะฐั
ะพะดะธะผ ัะตัะตะดะธะฝั ะพััะตะทะบะฐ [prev_pos;pos]
middle_pos = ((prev_pos + pos) / 2).floor
# ะะตัะตะผ ะพะบัะตััะฝะพััั ะฒ ัะตัะตะดะธะฝะต
sample = samples[middle_pos - delta..middle_pos + delta]
# ะะฟัะตะดะตะปัะตะผ ะฑะธั ะบะฐะบ "1" ะตัะปะธ ัะฐะทะฝะธัะฐ ะผะตะถะดั ะผะฐะบัะธะผะฐะปัะฝัะผ ะธ ะผะธะฝะธะผะฐะปัะฝัะผ ะทะฝะฐัะตะฝะธะตะผ ะฝะฐ ะพััะตะทะบะต ะฟัะตะฒััะฐะตั 10
bit = sample.max - sample.min > 10
bits += bit ? "1" : "0"
end
# ะะฟัะตะดะตะปัะตะผ ัะธะฝั
ัะพ-ะฑะฐะนั ะธ ะทะฐะผะตะฝัะตะผ ะฒัะต ะฟัะตะดัะตััะฒัััะธะต ะฑะธัั ะฝะฐ 256 ะฑะธั ะฝัะปะตะน (ัะพะณะปะฐัะฝะพ ัะฟะตัะธัะธะบะฐัะธะธ ัะพัะผะฐัะฐ)
bits.gsub! /^[01]*?10100101/, ("0" * 256) + "10100101"
# ะกะพั
ัะฐะฝัะตะผ ะฒัั
ะพะดะฝะพะน ัะฐะนะป, ัะฟะฐะบะพะฒัะฒะฐั ะฑะธัั ะฒ ะฑะฐะนัั
File.write "output.cas", [bits].pack("B*")
ืชืืฆืื
ืืืืจ ืฉื ืืกืืชื ืืื ืืจืกืืืช ืฉื ืืืืืืจืืชื ืืืงืืืขืื, ืืชืืื ืืืื ืืงืื ืืฉืื ืืืื ืืขื ืืื:
ืื, ืื ืืฉืคืื ืืคื ืืืจืืืืช ืืชืืืื, ืืฉ ืื ื ืชืืื ืืช ืืฉืจืืื ืืจืคืื. ืขื ืืืช, ืืื ืืืืืช ืืคืชื ืืืงืกื ืืชืืื ืืช. ืื ืืืืืช ืืืคืชื ืืงืืืืืช ืืืชืื (ืื ืขืจื > 80 ืฉืขืืช). ืขืืฉืื ืื ืื ื ืฆืจืืืื ืืืืืช ืืืื ืืืฉื ืืฉื ืืช ื-80 ืืืื ืืฉืืืจ ืชืืื ืืืช ืืคืืจืื ืืื.
ืืืขืฉื, ืื ืืืื ืืืื ืืชืืื ืืช BASIC. ืืืฉื ZX Spectrum ืืืืกื ืชืืื ืืืช ืืขืจื ืืืืชื ืคืืจืื ืืืืืจืื ืืฉืืืจ ืชืืื ืืืช ืืงืืืช. ืืืชืจ ืืืืื, ืืืงืชื ืืช ืืืืืช ืืืคืชื ืืืื
ืืืงืชื ืื ืืช ืืืืืช ืืืคืชื BASIC ืฉื Atari, Commodore 64 ืืคืืคืืืจืืื ืืขืื ืืื ืืืฉืืื ืฉื ืื, ืขืืืจื ืืฆืืืชื ืืืฆืื ืชืืขืื, ืื ืืื ืืฆืืื โ ืืชืืจืจ ืฉืืืืข ืฉืื ืืกืืื ืืืฉืื ืืจืืจื ืื ืื ืื ืจืื.
ืืื ืืืืืชื ืืืืช
ืืืฉื Tandy/Radio Shack TRS-80
ืกืืืจ ืืืื ืฉืืงืืืช ืืืืืื ืืืืืืจืช, ืฉื ืชืชื ืืืืืื ืืชืืืืช ืืืืืจ, ื ืขืฉืชื ืขื ืืืฉื ืืื:
ืืชืืจืจ ืฉืืืืฉื ืืื ืืืื ืื ืฉืื (ืืื I/Model III/Model IV ืืื') ืืื ืืืื ืคืืคืืืจืืื ืืืื ืืกืืื (ืืืืื, ืื ืืจืืกืื). ืจืืื ืืฆืืื ืฉืืืขืื ืื ืืฉืชืืฉื ืืื ืื Z80. ืขืืืจ ืืืฉื ืื ืืชื ืืืื ืืืฆืื ืืืื ืืจื ื
ืืืจืืชื ืืช ืืืืืืืืจ
ืื ืื ื ืืฆืืชื
ืืืืจ ืฉืืื ืชื ืืช ืคืืจืื ืงืืืฅ ื-CAS (ืฉืืชืืจืจ ืื ืืื ืจืง ืขืืชืง ืืื ืืืจ ืกืืืืืช ืฉื ืื ืชืื ืื ืืืงืืืช ืฉืืืจ ืืืืชื ืื ืืืืฉื ืื, ืคืจื ืืืืชืจืช ืขื ื ืืืืืช ืฉื ืืืื ืกืื ืืจืื), ืขืฉืืชื ืืื ืฉืื ืืืื ืืชืืื ืืช ืฉืื ืืืฆืืื ืืืืฆืื ืงืืืฅ CAS ืขืืื ืฉืขืื ืืืืืืืืจ (TRS-80 Model III):
ืขืืฆืืชื ืืช ืืืจืกื ืืขืืื ืืช ืืืืชืจ ืฉื ืืื ืืืืจื ืขื ืงืืืขื ืืืืืืืืช ืฉื ืืืืคืง ืืจืืฉืื ืืืืจืืง ืืื ืคืขืืืืช ืืคื ืื ืืืืืืช GEM, ืงืื ืืืงืืจ ืืืื ืืืชืืืช
ืืกืงื ื
ืืฉืืื ืฉืขืืจื ื ืืชืืจืจ ืืืกืข ืืจืชืง ืื ืืขืืจ, ืืื ื ืฉืื ืฉืืกืืคื ืฉื ืืืจ ืืฆืืชื ืืช ืืชืฉืืื. ืืื ืืืชืจ, ืื ื:
- ืืื ืชื ืืช ืืคืืจืื ืืฉืืืจืช ื ืชืื ืื ื-ZX Spectrum ืืืืืชื ืืช ืฉืืจืืช ื-ROM ืืืืื ืืช ืืฉืืืจืช/ืงืจืืืช ื ืชืื ืื ืืงืืืืช ืฉืืข
- ืืืจืชื ืืช ืืืฉื ื-TRS-80 ืืืื ืื ืฉืื, ืืืืชื ืืช ืืขืจืืช ืืืคืขืื, ืืกืชืืืชื ืขื ืชืืื ืืช ืืืืืื ืืืคืืื ืืืืื ืื ืืืฆืข ืืืชืืจ ืืืืื ืืงืืื ืืืื ื (ืืืจื ืืื, ืื ืืืืจืื ืืช ืฉื ื-Z80 ืืืืจืื ืื)
- ืืชื ืืื ืขืืจ ืืื ืืืืจืช ืืงืืืืช ืืืืื ืืคืืจืื CAS, ืฉืืืื ืืงืจืื ื ืชืื ืื ืฉืืื ื ืืืืืื ืขื ืืื ืืืื ื"ืจืฉืื"
ืืงืืจ: www.habr.com