ืื™ืš ืฉื—ื–ืจืชื™ ื ืชื•ื ื™ื ื‘ืคื•ืจืžื˜ ืœื ื™ื“ื•ืข ืžืกืจื˜ ืžื’ื ื˜ื™

ืคืจื”ื™ืกื˜ื•ืจื™ื”

ื‘ื”ื™ื•ืชื™ ื—ื•ื‘ื‘ ื—ื•ืžืจืช ืจื˜ืจื•, ืจื›ืฉืชื™ ืคืขื ZX Spectrum+ ืžืžื•ื›ืจ ื‘ื‘ืจื™ื˜ื ื™ื”. ืžืฆื•ืจืฃ ืœืžื—ืฉื‘ ืขืฆืžื•, ืงื™ื‘ืœืชื™ ืžืกืคืจ ืงืœื˜ื•ืช ืฉืžืข ืขื ืžืฉื—ืงื™ื (ื‘ืืจื™ื–ื” ื”ืžืงื•ืจื™ืช ืขื ื”ื•ืจืื•ืช), ื•ื›ืŸ ืชื•ื›ื ื™ื•ืช ืžื•ืงืœื˜ื•ืช ืขืœ ืงืœื˜ื•ืช ืœืœื ืกื™ืžื•ื ื™ื ืžื™ื•ื—ื“ื™ื. ืœืžืจื‘ื” ื”ื”ืคืชืขื”, ื ืชื•ื ื™ ืงืกื˜ื•ืช ื‘ื ื•ืช 40 ืฉื ื” ื”ื™ื• ืงืจื™ืื™ื ื”ื™ื˜ื‘ ื•ื”ืฆืœื—ืชื™ ืœื”ื•ืจื™ื“ ืžื”ื ื›ืžืขื˜ ืืช ื›ืœ ื”ืžืฉื—ืงื™ื ื•ื”ืชื•ื›ื ื™ื•ืช.

ืื™ืš ืฉื—ื–ืจืชื™ ื ืชื•ื ื™ื ื‘ืคื•ืจืžื˜ ืœื ื™ื“ื•ืข ืžืกืจื˜ ืžื’ื ื˜ื™

ืขื ื–ืืช, ื‘ื—ืœืง ืžื”ืงืœื˜ื•ืช ืžืฆืืชื™ ื”ืงืœื˜ื•ืช ืฉื‘ืจื•ืจ ืฉืœื ื ืขืฉื• ืขืœ ื™ื“ื™ ืžื—ืฉื‘ ZX Spectrum. ื”ื ื ืฉืžืขื• ืื—ืจืช ืœื’ืžืจื™ ื•ื‘ื ื™ื’ื•ื“ ืœื”ืงืœื˜ื•ืช ืžื”ืžื—ืฉื‘ ื”ื ื–ื›ืจ, ื”ื ืœื ื”ืชื—ื™ืœื• ืขื ืžื˜ืขื™ืŸ BASIC ืงืฆืจ, ืฉื‘ื“ืจืš ื›ืœืœ ืงื™ื™ื ื‘ื”ืงืœื˜ื•ืช ืฉืœ ื›ืœ ื”ืชื•ื›ื ื•ืช ื•ื”ืžืฉื—ืงื™ื.

ื‘ืžืฉืš ื–ืžืŸ ืžื” ื–ื” ืจื“ืฃ ืื•ืชื™ - ืžืื•ื“ ืจืฆื™ืชื™ ืœื’ืœื•ืช ืžื” ืžืกืชืชืจ ื‘ื”ื. ืื ืืชื” ื™ื›ื•ืœ ืœืงืจื•ื ืืช ืื•ืช ื”ืฉืžืข ื›ืจืฆืฃ ืฉืœ ื‘ืชื™ื, ืืชื” ื™ื›ื•ืœ ืœื—ืคืฉ ืชื•ื•ื™ื ืื• ื›ืœ ื“ื‘ืจ ืฉืžืฆื™ื™ืŸ ืืช ืžืงื•ืจ ื”ืื•ืช. ืกื•ื’ ืฉืœ ืจื˜ืจื•-ืืจื›ืื•ืœื•ื’ื™ื”.

ืขื›ืฉื™ื•, ืื—ืจื™ ืฉื”ืœื›ืชื™ ืขื“ ื”ืกื•ืฃ ื•ืžืกืชื›ืœ ืขืœ ื”ืชื•ื•ื™ื•ืช ืฉืœ ื”ืงืกื˜ื•ืช ืขืฆืžืŸ, ืื ื™ ืžื—ื™ื™ืš ื›ื™

ื”ืชืฉื•ื‘ื” ื”ื™ื™ืชื” ืžืžืฉ ืžื•ืœ ืขื™ื ื™ื™ ื›ืœ ื”ื–ืžืŸ
ืขืœ ื”ืชื•ื•ื™ืช ืฉืœ ื”ืงืกื˜ื” ื”ืฉืžืืœื™ืช ืžื•ืคื™ืข ืฉืžื• ืฉืœ ืžื—ืฉื‘ ื”-TRS-80, ื•ืžืžืฉ ืžืชื—ืช ืœืฉื ื”ื™ืฆืจืŸ: "ืžื™ื•ืฆืจ ืขืœ ื™ื“ื™ Radio Shack ื‘ืืจื”"ื‘"

(ืื ืืชื” ืจื•ืฆื” ืœืฉืžื•ืจ ืืช ื”ืชื›ื›ื™ื ืขื“ ื”ืกื•ืฃ, ืืœ ืชื™ื›ื ืก ืœืกืคื•ื™ืœืจ)

ื”ืฉื•ื•ืื” ื‘ื™ืŸ ืื•ืชื•ืช ืฉืžืข

ืงื•ื“ื ื›ืœ, ื‘ื•ืื• ื ืขืฉื” ื“ื™ื’ื™ื˜ืฆื™ื” ืฉืœ ื”ืงืœื˜ื•ืช ื”ืื•ื“ื™ื•. ืืชื” ื™ื›ื•ืœ ืœืฉืžื•ืข ืื™ืš ื–ื” ื ืฉืžืข:


ื•ื›ืจื’ื™ืœ ื”ื”ืงืœื˜ื” ืžื”ืžื—ืฉื‘ ZX Spectrum ื ืฉืžืขืช:


ื‘ืฉื ื™ ื”ืžืงืจื™ื, ื‘ืชื—ื™ืœืช ื”ื”ืงืœื˜ื” ื™ืฉ ืžื” ืฉื ืงืจื ื˜ื•ืŸ ื˜ื™ื™ืก - ืฆืœื™ืœ ื‘ืื•ืชื• ืชื“ืจ (ื‘ื”ืงืœื˜ื” ื”ืจืืฉื•ื ื” ื”ื•ื ืงืฆืจ ืžืื•ื“ < ืฉื ื™ื™ื” ืื—ืช, ืืš ื ื™ืชืŸ ืœื”ื‘ื—ื™ืŸ ื‘ื•). ืฆืœื™ืœ ื”ืคื™ื™ืœื•ื˜ ืžืื•ืชืช ืœืžื—ืฉื‘ ืœื”ืชื›ื•ื ืŸ ืœืงื‘ืœืช ื ืชื•ื ื™ื. ื›ื›ืœืœ, ื›ืœ ืžื—ืฉื‘ ืžื–ื”ื” ืจืง ืืช ืฆืœื™ืœ ื”ืคื™ื™ืœื•ื˜ "ืฉืœื•" ืœืคื™ ืฆื•ืจืช ื”ืื•ืช ื•ื”ืชื“ืจ ืฉืœื•.

ื™ืฉ ืฆื•ืจืš ืœื•ืžืจ ืžืฉื”ื• ืขืœ ืฆื•ืจืช ื”ืื•ืช ืขืฆืžื”. ืœื“ื•ื’ืžื”, ื‘-ZX Spectrum ืฆื•ืจืชื• ืžืœื‘ื ื™ืช:

ืื™ืš ืฉื—ื–ืจืชื™ ื ืชื•ื ื™ื ื‘ืคื•ืจืžื˜ ืœื ื™ื“ื•ืข ืžืกืจื˜ ืžื’ื ื˜ื™

ื›ืืฉืจ ืžื–ื•ื”ื” ืฆืœื™ืœ ื˜ื™ื™ืก, ื”-ZX Spectrum ืžืฆื™ื’ ืคืกื™ื ืื“ื•ืžื™ื ื•ื›ื—ื•ืœื™ื ืœืกื™ืจื•ื’ื™ืŸ ืขืœ ื’ื‘ื•ืœ ื”ืžืกืš ื›ื“ื™ ืœืฆื™ื™ืŸ ืฉื”ืื•ืช ื–ื•ื”ื”. ื˜ื•ืŸ ื”ืคื™ื™ืœื•ื˜ ืžืกืชื™ื™ื ื“ื•ืคืง ืกื™ื ื›ืจื•ืŸ, ืฉืžืื•ืชืช ืœืžื—ืฉื‘ ืœื”ืชื—ื™ืœ ืœืงื‘ืœ ื ืชื•ื ื™ื. ื”ื•ื ืžืื•ืคื™ื™ืŸ ืขืœ ื™ื“ื™ ืžืฉืš ืงืฆืจ ื™ื•ืชืจ (ื‘ื”ืฉื•ื•ืื” ืœื˜ื•ืŸ ื”ืคื™ื™ืœื•ื˜ ื•ืœื ืชื•ื ื™ื ื”ื‘ืื™ื) (ืจืื” ืื™ื•ืจ)

ืœืื—ืจ ืงื‘ืœืช ื“ื•ืคืง ื”ืกื™ื ื›ืจื•ืŸ, ื”ืžื—ืฉื‘ ืžืชืขื“ ื›ืœ ืขืœื™ื™ื”/ื™ืจื™ื“ื” ืฉืœ ื”ืื•ืช, ื•ืžื•ื“ื“ ืืช ืžืฉืš ื”ื–ืžืŸ ืฉืœื•. ืื ืžืฉืš ื”ื–ืžืŸ ืงื˜ืŸ ืžื’ื‘ื•ืœ ืžืกื•ื™ื, ื‘ื™ื˜ 1 ื ื›ืชื‘ ืœื–ื™ื›ืจื•ืŸ, ืื—ืจืช 0. ื”ื‘ื™ื˜ื™ื ื ืืกืคื™ื ืœื‘ื™ื™ื˜ื™ื ื•ื”ืชื”ืœื™ืš ื—ื•ื–ืจ ืขืœ ืขืฆืžื• ืขื“ ืœืงื‘ืœืช N ื‘ืชื™ื. ื”ืžืกืคืจ N ื ืœืงื— ื‘ื“ืจืš ื›ืœืœ ืžื”ื›ื•ืชืจืช ืฉืœ ื”ืงื•ื‘ืฅ ืฉื”ื•ืจื“. ืจืฆืฃ ื”ื˜ืขื™ื ื” ื”ื•ื ื›ื“ืœืงืžืŸ:

  1. ื˜ื•ืŸ ื˜ื™ื™ืก
  2. ื›ื•ืชืจืช (ืื•ืจืš ืงื‘ื•ืข), ืžื›ื™ืœื” ืืช ื’ื•ื“ืœ ื”ื ืชื•ื ื™ื ืฉื”ื•ืจื“ืช (N), ืฉื ื”ืงื•ื‘ืฅ ื•ื”ืกื•ื’
  3. ื˜ื•ืŸ ื˜ื™ื™ืก
  4. ื”ื ืชื•ื ื™ื ืขืฆืžื

ื›ื“ื™ ืœื•ื•ื“ื ืฉื”ื ืชื•ื ื™ื ื ื˜ืขื ื™ื ื‘ืฆื•ืจื” ื ื›ื•ื ื”, ื”-ZX Spectrum ืงื•ืจื ืืช ืžื” ืฉื ืงืจื ื‘ื™ื™ื˜ ื–ื•ื’ื™ื•ืช (Parity byte), ืืฉืจ ืžื—ื•ืฉื‘ ื‘ืขืช ืฉืžื™ืจืช ืงื•ื‘ืฅ ืขืœ ื™ื“ื™ XOR ื‘ื™ืฆื•ืข XOR ืฉืœ ื›ืœ ื”ื‘ืชื™ื ืฉืœ ื”ื ืชื•ื ื™ื ื”ื›ืชื•ื‘ื™ื. ื‘ืขืช ืงืจื™ืืช ืงื•ื‘ืฅ, ื”ืžื—ืฉื‘ ืžื—ืฉื‘ ืืช ื‘ื™ื™ื˜ ื”ื–ื•ื’ื™ื•ืช ืžื”ื ืชื•ื ื™ื ืฉื”ืชืงื‘ืœื•, ื•ืื ื”ืชื•ืฆืื” ืฉื•ื ื” ืžื”ืชื•ืฆืื” ืฉื ืฉืžืจื”, ืžืฆื™ื’ ืืช ื”ื•ื“ืขืช ื”ืฉื’ื™ืื” "R Tape loading error". ื‘ืื•ืคืŸ ืงืคื“ื ื™, ื”ืžื—ืฉื‘ ื™ื›ื•ืœ ืœื”ื ืคื™ืง ื”ื•ื“ืขื” ื–ื• ืžื•ืงื“ื ื™ื•ืชืจ ืื, ื‘ืขืช ื”ืงืจื™ืื”, ื”ื•ื ืœื ื™ื›ื•ืœ ืœื–ื”ื•ืช ื“ื•ืคืง (ื”ื•ื—ืžืฆื” ืื• ืžืฉืš ื”ื–ืžืŸ ืฉืœื• ืื™ื ื• ืชื•ืื ืœื’ื‘ื•ืœื•ืช ืžืกื•ื™ืžื™ื)

ืื– ื‘ื•ืื• ื ืจืื” ืขื›ืฉื™ื• ืื™ืš ื ืจืื” ืื•ืช ืœื ื™ื“ื•ืข:

ืื™ืš ืฉื—ื–ืจืชื™ ื ืชื•ื ื™ื ื‘ืคื•ืจืžื˜ ืœื ื™ื“ื•ืข ืžืกืจื˜ ืžื’ื ื˜ื™

ื–ื” ื ื™ืžืช ื”ืคื™ื™ืœื•ื˜. ืฆื•ืจืช ื”ืื•ืช ืฉื•ื ื” ื‘ืื•ืคืŸ ืžืฉืžืขื•ืชื™, ืืš ื‘ืจื•ืจ ืฉื”ืื•ืช ืžื•ืจื›ื‘ ืžื—ื–ืจื” ืขืœ ืคื•ืœืกื™ื ืงืฆืจื™ื ื‘ืชื“ืจ ืžืกื•ื™ื. ื‘ืชื“ืจ ื“ื’ื™ืžื” ืฉืœ 44100 ื”ืจืฅ, ื”ืžืจื—ืง ื‘ื™ืŸ ื”"ืคืกื’ื•ืช" ื”ื•ื ื‘ืขืจืš 48 ื“ื’ื™ืžื•ืช (ืฉืžืชืื™ื ืœืชื“ืจ ืฉืœ ~918 ื”ืจืฅ). ื‘ื•ืื• ื ื–ื›ื•ืจ ืืช ื”ื ืชื•ืŸ ื”ื–ื”.

ื›ืขืช ื ืกืชื›ืœ ืขืœ ืงื˜ืข ื”ื ืชื•ื ื™ื:

ืื™ืš ืฉื—ื–ืจืชื™ ื ืชื•ื ื™ื ื‘ืคื•ืจืžื˜ ืœื ื™ื“ื•ืข ืžืกืจื˜ ืžื’ื ื˜ื™

ืื ืžื•ื“ื“ื™ื ืืช ื”ืžืจื—ืง ื‘ื™ืŸ ืคื•ืœืกื™ื ื‘ื•ื“ื“ื™ื, ืžืชื‘ืจืจ ืฉื”ืžืจื—ืง ื‘ื™ืŸ ืคื•ืœืกื™ื "ืืจื•ื›ื™ื" ื”ื•ื ืขื“ื™ื™ืŸ ~48 ื“ื’ื™ืžื•ืช, ื•ื‘ื™ืŸ ืงืฆืจื™ื - ~24. ื‘ื”ืกืชื›ืœื•ืช ืงื˜ื ื” ืงื“ื™ืžื”, ืื’ื™ื“ ืฉื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ื”ืชื‘ืจืจ ืฉืคื•ืœืกื™ "ืจืคืจื ืก" ื‘ืชื“ืจ ืฉืœ 918 ื”ืจืฅ ืขื•ืงื‘ื™ื ื‘ืจืฆื™ืคื•ืช, ืžืชื—ื™ืœืชื• ื•ืขื“ ืกื•ืคื• ืฉืœ ื”ืงื•ื‘ืฅ. ื ื™ืชืŸ ืœื”ื ื™ื— ื›ื™ ื‘ืขืช ืฉื™ื“ื•ืจ ื ืชื•ื ื™ื, ืื ื ืชืงืœื™ื ื‘ืคื•ืœืก ื ื•ืกืฃ ื‘ื™ืŸ ืคื•ืœืกื™ ื”ื™ื™ื—ื•ืก, ืื ื• ืžื—ืฉื™ื‘ื™ื ืื•ืชื• ื›ื‘ื™ื˜ 1, ืื—ืจืช 0.

ืžื” ืขื ื“ื•ืคืง ื”ืกื ื›ืจื•ืŸ? ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืชื—ื™ืœืช ื”ื ืชื•ื ื™ื:

ืื™ืš ืฉื—ื–ืจืชื™ ื ืชื•ื ื™ื ื‘ืคื•ืจืžื˜ ืœื ื™ื“ื•ืข ืžืกืจื˜ ืžื’ื ื˜ื™

ืฆืœื™ืœ ื”ืคื™ื™ืœื•ื˜ ืžืกืชื™ื™ื ื•ื”ื ืชื•ื ื™ื ืžืชื—ื™ืœื™ื ืžื™ื“. ืžืขื˜ ืžืื•ื—ืจ ื™ื•ืชืจ, ืœืื—ืจ ื ื™ืชื•ื— ืžืกืคืจ ื”ืงืœื˜ื•ืช ืื•ื“ื™ื• ืฉื•ื ื•ืช, ื”ืฆืœื—ื ื• ืœื’ืœื•ืช ืฉื”ื‘ื™ื™ื˜ ื”ืจืืฉื•ืŸ ืฉืœ ื”ื ืชื•ื ื™ื ื”ื•ื ืชืžื™ื“ ื–ื”ื” (10100101b, A5h). ื”ืžื—ืฉื‘ ืขืฉื•ื™ ืœื”ืชื—ื™ืœ ืœืงืจื•ื ื ืชื•ื ื™ื ืœืื—ืจ ืฉื™ืงื‘ืœ ืื•ืชื.

ืืชื” ื™ื›ื•ืœ ื’ื ืœืฉื™ื ืœื‘ ืœื”ื–ื–ื” ืฉืœ ื“ื•ืคืง ื”ื”ืชื™ื™ื—ืกื•ืช ื”ืจืืฉื•ืŸ ืžื™ื“ ืœืื—ืจ ื”-1 ื”ืื—ืจื•ืŸ ื‘ื‘ื™ื™ื˜ ื”ืกื ื›ืจื•ืŸ. ื–ื” ื”ืชื’ืœื” ื”ืจื‘ื” ื™ื•ืชืจ ืžืื•ื—ืจ ื‘ืชื”ืœื™ืš ื”ืคื™ืชื•ื— ืฉืœ ืชื•ื›ื ืช ื–ื™ื”ื•ื™ ื ืชื•ื ื™ื, ื›ืืฉืจ ื”ื ืชื•ื ื™ื ื‘ืชื—ื™ืœืช ื”ืงื•ื‘ืฅ ืœื ื ื™ืชื ื™ื ืœืงืจื™ืื” ื™ืฆื™ื‘ื”.

ื›ืขืช ื ื ืกื” ืœืชืืจ ืืœื’ื•ืจื™ืชื ืฉื™ืขื‘ื“ ืงื•ื‘ืฅ ืฉืžืข ื•ื™ื˜ืขืŸ ื ืชื•ื ื™ื.

ื˜ื•ืขืŸ ื ืชื•ื ื™ื

ืจืืฉื™ืช, ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื›ืžื” ื”ื ื—ื•ืช ืœืฉืžื™ืจื” ืขืœ ื”ืืœื’ื•ืจื™ืชื ืคืฉื•ื˜:

  1. ื ืฉืงื•ืœ ืจืง ืงื‘ืฆื™ื ื‘ืคื•ืจืžื˜ WAV;
  2. ืงื•ื‘ืฅ ื”ืฉืžืข ื—ื™ื™ื‘ ืœื”ืชื—ื™ืœ ื‘ืฆืœื™ืœ ืคื™ื™ืœื•ื˜ ื•ืืกื•ืจ ืœื”ื›ื™ืœ ืฉืชื™ืงื” ื‘ื”ืชื—ืœื”
  3. ืงื•ื‘ืฅ ื”ืžืงื•ืจ ื—ื™ื™ื‘ ืœื”ื™ื•ืช ื‘ืขืœ ืงืฆื‘ ื“ื’ื™ืžื” ืฉืœ 44100 ื”ืจืฅ. ื‘ืžืงืจื” ื–ื”, ื”ืžืจื—ืง ื‘ื™ืŸ ืคืขื™ืžื•ืช ื”ื™ื™ื—ื•ืก ืฉืœ 48 ื“ื’ื™ืžื•ืช ื›ื‘ืจ ื ืงื‘ืข ื•ืื™ืŸ ืœื ื• ืฆื•ืจืš ืœื—ืฉื‘ ืื•ืชื• ื‘ืื•ืคืŸ ืชื•ื›ื ืชื™;
  4. ืคื•ืจืžื˜ ื”ื“ื•ื’ืžื ื™ื›ื•ืœ ืœื”ื™ื•ืช ื›ืœ (8/16 ืกื™ื‘ื™ื•ืช/ื ืงื•ื“ื” ืฆืคื”) - ืฉื›ืŸ ื‘ืขืช โ€‹โ€‹ื”ืงืจื™ืื” ื ื•ื›ืœ ืœื”ืžื™ืจ ืื•ืชื• ืœืจืฆื•ื™;
  5. ืื ื• ืžื ื™ื—ื™ื ืฉืงื•ื‘ืฅ ื”ืžืงื•ืจ ืžื ื•ืจืžืœ ืขืœ ื™ื“ื™ ืžืฉืจืขืช, ืžื” ืฉืืžื•ืจ ืœื™ื™ืฆื‘ ืืช ื”ืชื•ืฆืื”;

ืืœื’ื•ืจื™ืชื ื”ืงืจื™ืื” ื™ื”ื™ื” ื›ื“ืœืงืžืŸ:

  1. ืื ื• ืงื•ืจืื™ื ืืช ื”ืงื•ื‘ืฅ ืœื–ื™ื›ืจื•ืŸ, ื•ื‘ืžืงื‘ื™ืœ ื ืžื™ืจ ืืช ืคื•ืจืžื˜ ื”ื“ื•ื’ืžื ืœ-8 ืกื™ื‘ื™ื•ืช;
  2. ืงื‘ืข ืืช ื”ืžื™ืงื•ื ืฉืœ ื”ื“ื•ืคืง ื”ืจืืฉื•ืŸ ื‘ื ืชื•ื ื™ ื”ืื•ื“ื™ื•. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืืชื” ืฆืจื™ืš ืœื—ืฉื‘ ืืช ืžืกืคืจ ื”ืžื“ื’ื ืขื ื”ืžืฉืจืขืช ื”ืžืงืกื™ืžืœื™ืช. ืœืฉื ื”ืคืฉื˜ื•ืช, ื ื—ืฉื‘ ืื•ืชื• ืคืขื ืื—ืช ื‘ืื•ืคืŸ ื™ื“ื ื™. ื‘ื•ืื• ื ืฉืžื•ืจ ืื•ืชื• ื‘ืžืฉืชื ื” prev_pos;
  3. ื”ื•ืกืฃ 48 ืœืžื™ืงื•ื ื”ื“ื•ืคืง ื”ืื—ืจื•ืŸ (pos := prev_pos + 48)
  4. ืžื›ื™ื•ื•ืŸ ืฉื”ื’ื“ืœืช ื”ืžื™ืงื•ื ื‘-48 ืื™ื ื” ืžื‘ื˜ื™ื—ื” ืฉื ื’ื™ืข ืœืžืฆื‘ ืฉืœ ื“ื•ืคืง ื”ื™ื™ื—ื•ืก ื”ื‘ื (ืคื’ืžื™ื ื‘ืงืœื˜ืช, ืคืขื•ืœื” ืœื ื™ืฆื™ื‘ื” ืฉืœ ืžื ื’ื ื•ืŸ ื”ื˜ื™ื™ืค ื“ืจื™ื™ื‘ ื•ื›ื•'), ืขืœื™ื ื• ืœื”ืชืื™ื ืืช ืžื™ืงื•ื ื”ื“ื•ืคืง. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืงื— ืคื™ืกืช ื ืชื•ื ื™ื ืงื˜ื ื” (pos-8;pos+8) ื•ืžืฆื ืขืœื™ื” ืืช ืขืจืš ื”ืžืฉืจืขืช ื”ืžืงืกื™ืžืœื™ืช. ื”ืžื™ืงื•ื ื”ืžืชืื™ื ืœืžืงืกื™ืžื•ื ื™ื™ืฉืžืจ ื‘-pos. ื›ืืŸ 8 = 48/6 ื”ื•ื ืงื‘ื•ืข ืฉื”ืชืงื‘ืœ ื‘ื ื™ืกื•ื™, ืžื” ืฉืžื‘ื˜ื™ื— ืฉื ืงื‘ืข ืืช ื”ืžืงืกื™ืžื•ื ื”ื ื›ื•ืŸ ื•ืœื ื™ืฉืคื™ืข ืขืœ ื“ื—ืคื™ื ืื—ืจื™ื ืฉืขืฉื•ื™ื™ื ืœื”ื™ื•ืช ื‘ืงืจื‘ืช ืžืงื•ื. ื‘ืžืงืจื™ื ืจืขื™ื ืžืื•ื“, ื›ืืฉืจ ื”ืžืจื—ืง ื‘ื™ืŸ ืคื•ืœืกื™ื ื”ื•ื ื”ืจื‘ื” ืคื—ื•ืช ืื• ื’ื“ื•ืœ ืž-48, ื ื™ืชืŸ ืœื™ื™ืฉื ื—ื™ืคื•ืฉ ืžืื•ืœืฅ ืื—ืจ ืคื•ืœืก, ืืš ื‘ืžืกื’ืจืช ื”ืžืืžืจ ืœื ืืชืืจ ื–ืืช ื‘ืืœื’ื•ืจื™ืชื;
  5. ื‘ืฉืœื‘ ื”ืงื•ื“ื, ื™ื”ื™ื” ืฆื•ืจืš ื’ื ืœื‘ื“ื•ืง ืฉื“ื•ืคืง ื”ื™ื™ื—ื•ืก ื ืžืฆื ื‘ื›ืœืœ. ื›ืœื•ืžืจ, ืื ืคืฉื•ื˜ ืžื—ืคืฉื™ื ืืช ื”ืžืงืกื™ืžื•ื, ื–ื” ืœื ืžื‘ื˜ื™ื— ืฉื”ื“ื—ืฃ ืงื™ื™ื ื‘ืงื˜ืข ื”ื–ื”. ื‘ื™ื™ืฉื•ื ื”ืื—ืจื•ืŸ ืฉืœื™ ืฉืœ ืชื•ื›ื ื™ืช ื”ืงืจื™ืื”, ืื ื™ ื‘ื•ื“ืง ืืช ื”ื”ื‘ื“ืœ ื‘ื™ืŸ ืขืจื›ื™ ื”ืžืฉืจืขืช ื”ืžืงืกื™ืžืœื™ืช ื•ื”ืžื™ื ื™ืžืœื™ืช ื‘ืงื˜ืข, ื•ืื ื”ื•ื ื—ื•ืจื’ ืžื’ื‘ื•ืœ ืžืกื•ื™ื, ืื ื™ ืกื•ืคืจ ืืช ื ื•ื›ื—ื•ืชื• ืฉืœ ื“ื—ืฃ. ื”ืฉืืœื” ื”ื™ื ื’ื ืžื” ืœืขืฉื•ืช ืื ื“ื•ืคืง ื”ื™ื™ื—ื•ืก ืœื ื ืžืฆื. ื™ืฉื ืŸ 2 ืืคืฉืจื•ื™ื•ืช: ืื• ืฉื”ื ืชื•ื ื™ื ื”ืกืชื™ื™ืžื• ื•ื”ืฉืชื™ืงื” ื‘ืื” ืœืื—ืจ ืžื›ืŸ, ืื• ืฉื™ืฉ ืœืจืื•ืช ื‘ื›ืš ืฉื’ื™ืืช ืงืจื™ืื”. ืขื ื–ืืช, ื ืฉืžื™ื˜ ื–ืืช ื›ื“ื™ ืœืคืฉื˜ ืืช ื”ืืœื’ื•ืจื™ืชื;
  6. ื‘ืฉืœื‘ ื”ื‘ื, ืขืœื™ื ื• ืœืงื‘ื•ืข ืืช ื ื•ื›ื—ื•ืชื• ืฉืœ ื“ื•ืคืง ื ืชื•ื ื™ื (ืกื™ื‘ื™ื•ืช 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 ื”ื•ื ืงื‘ื•ืข ืฉืžืชืงื‘ืœ ื‘ื ื™ืกื•ื™;
  7. ืฉืžื•ืจ ืืช ื”ืžื™ืงื•ื ื”ื ื•ื›ื—ื™ ื‘-prev_pos (prev_pos := pos)
  8. ื—ื–ื•ืจ ืขืœ ื”ื—ืœ ืžืฉืœื‘ 3 ืขื“ ืฉื ืงืจื ืืช ื”ืงื•ื‘ืฅ ื›ื•ืœื•;
  9. ื™ืฉ ืœืฉืžื•ืจ ืืช ืžืขืจืš ื”ืกื™ื‘ื™ื•ืช ื”ืžืชืงื‘ืœ ื›ืงื‘ื•ืฆื” ืฉืœ ื‘ืชื™ื. ืžื›ื™ื•ื•ืŸ ืฉืœื ืœืงื—ื ื• ื‘ื—ืฉื‘ื•ืŸ ืืช ื‘ื™ื™ื˜ ื”ืกื™ื ื›ืจื•ืŸ ื‘ืขืช โ€‹โ€‹ื”ืงืจื™ืื”, ื™ื™ืชื›ืŸ ืฉืžืกืคืจ ื”ืกื™ื‘ื™ื•ืช ืœื ื™ื”ื™ื” ื›ืคื•ืœื” ืฉืœ 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 ื”ืคื•ืคื•ืœืจื™ื™ื ื•ืขื•ื“ ื›ืžื” ืžื—ืฉื‘ื™ื ืฉืœ ืื–, ืขื‘ื•ืจื ื”ืฆืœื—ืชื™ ืœืžืฆื•ื ืชื™ืขื•ื“, ืืš ืœืœื ื”ืฆืœื—ื” โ€“ ื”ืชื‘ืจืจ ืฉื”ื™ื“ืข ืฉืœื™ ื‘ืกื•ื’ื™ ืžื—ืฉื‘ื™ ื”ืจื˜ืจื• ืœื ื›ืœ ื›ืš ืจื—ื‘.

ื•ืื– ื”ื—ืœื˜ืชื™ ืœืœื›ืช ื”ืจืฉื™ืžื”, ื•ืื– ื ืคืœ ืžื‘ื˜ื™ ืขืœ ืฉืžื• ืฉืœ ื”ื™ืฆืจืŸ Radio Shack ื•ืขืœ ื”ืžื—ืฉื‘ TRS-80. ืืœื• ื”ืฉืžื•ืช ืฉื”ื™ื• ื›ืชื•ื‘ื™ื ืขืœ ื”ืชื•ื•ื™ื•ืช ืฉืœ ื”ืงืกื˜ื•ืช ืฉื”ื™ื• ืžื•ื ื—ื•ืช ืขืœ ืฉื•ืœื—ื ื™! ืœื ื”ื›ืจืชื™ ืืช ื”ืฉืžื•ืช ื”ืœืœื• ืœืคื ื™ ื›ืŸ ื•ืœื ื”ื›ืจืชื™ ืืช ืžื—ืฉื‘ ื”-TRS-80, ืื– ื ืจืื” ืœื™ ืฉ-Radio Shack ื”ื™ื ื™ืฆืจื ื™ืช ืงืœื˜ื•ืช ืฉืžืข ื›ืžื• BASF, Sony ืื• TDK, ื•ื”-TRS-80 ื”ื™ื” ื–ืžืŸ ื”ื”ืฉืžืขื”. ืœืžื” ืœื?

ืžื—ืฉื‘ Tandy/Radio Shack TRS-80

ืกื‘ื™ืจ ืžืื•ื“ ืฉื”ืงืœื˜ืช ื”ืื•ื“ื™ื• ื”ืžื“ื•ื‘ืจืช, ืฉื ืชืชื™ ื›ื“ื•ื’ืžื” ื‘ืชื—ื™ืœืช ื”ืžืืžืจ, ื ืขืฉืชื” ืขืœ ืžื—ืฉื‘ ื›ื–ื”:

ืื™ืš ืฉื—ื–ืจืชื™ ื ืชื•ื ื™ื ื‘ืคื•ืจืžื˜ ืœื ื™ื“ื•ืข ืžืกืจื˜ ืžื’ื ื˜ื™

ื”ืชื‘ืจืจ ืฉื”ืžื—ืฉื‘ ื”ื–ื” ื•ื”ื–ื ื™ื ืฉืœื• (ื“ื’ื I/Model III/Model IV ื•ื›ื•') ื”ื™ื• ืžืื•ื“ ืคื•ืคื•ืœืจื™ื™ื ื‘ื–ืžืŸ ืžืกื•ื™ื (ื›ืžื•ื‘ืŸ, ืœื ื‘ืจื•ืกื™ื”). ืจืื•ื™ ืœืฆื™ื™ืŸ ืฉื”ืžืขื‘ื“ ื‘ื• ื”ืฉืชืžืฉื• ื”ื™ื” ื’ื Z80. ืขื‘ื•ืจ ืžื—ืฉื‘ ื–ื” ืืชื” ื™ื›ื•ืœ ืœืžืฆื•ื ื‘ืื™ื ื˜ืจื ื˜ ืžื™ื“ืข ืจื‘. ื‘ืฉื ื•ืช ื”-80 ื”ื•ืคืฅ ืžื™ื“ืข ืžื—ืฉื‘ ื‘ ื›ืชื‘ื™ ืขืช. ื›ืจื’ืข ื™ืฉ ื›ืžื” ืืžื•ืœื˜ื•ืจื™ื ืžื—ืฉื‘ื™ื ืœืคืœื˜ืคื•ืจืžื•ืช ืฉื•ื ื•ืช.

ื”ื•ืจื“ืชื™ ืืช ื”ืืžื•ืœื˜ื•ืจ trs80gp ื•ื‘ืคืขื ื”ืจืืฉื•ื ื” ื”ืฆืœื—ืชื™ ืœืจืื•ืช ืื™ืš ื”ืžื—ืฉื‘ ื”ื–ื” ืขื•ื‘ื“. ื›ืžื•ื‘ืŸ ืฉื”ืžื—ืฉื‘ ืœื ืชืžืš ื‘ืคืœื˜ ืฆื‘ืขื•ื ื™, ืจื–ื•ืœื•ืฆื™ื™ืช ื”ืžืกืš ื”ื™ื™ืชื” ืจืง 128x48 ืคื™ืงืกืœื™ื, ืื‘ืœ ื”ื™ื• ื”ืจื—ื‘ื•ืช ื•ืฉื™ื ื•ื™ื™ื ืจื‘ื™ื ืฉื™ื›ื•ืœื™ื ืœื”ื’ื“ื™ืœ ืืช ืจื–ื•ืœื•ืฆื™ื™ืช ื”ืžืกืš. ื”ื™ื• ื’ื ืืคืฉืจื•ื™ื•ืช ืจื‘ื•ืช ืœืžืขืจื›ื•ืช ื”ืคืขืœื” ืœืžื—ืฉื‘ ื–ื” ื•ืืคืฉืจื•ื™ื•ืช ืœื”ื˜ืžืขืช ืฉืคืช ื”-BASIC (ืฉื‘ื ื™ื’ื•ื“ ืœ-ZX Spectrum, ื‘ื—ืœืง ืžื”ื“ื’ืžื™ื ืืคื™ืœื• ืœื "ื”ื‘ื–ืง" ืœ-ROM ื•ื ื™ืชืŸ ื”ื™ื” ืœื˜ืขื•ืŸ ื›ืœ ืืคืฉืจื•ืช ืžืชืงืœื™ื˜ื•ืŸ, ื‘ื“ื™ื•ืง ื›ืžื• ืžืขืจื›ืช ื”ื”ืคืขืœื” ืขืฆืžื”)

ื’ื ืื ื™ ืžืฆืืชื™ ืชื•ึนืขึถืœึถืช ืœื”ืžื™ืจ ื”ืงืœื˜ื•ืช ืื•ื“ื™ื• ืœืคื•ืจืžื˜ CAS, ื”ื ืชืžืš ืขืœ ื™ื“ื™ ืืžื•ืœื˜ื•ืจื™ื, ืืš ืžืฉื•ื ืžื” ืœื ื ื™ืชืŸ ื”ื™ื” ืœืงืจื•ื ื”ืงืœื˜ื•ืช ืžื”ืงืœื˜ื•ืช ืฉืœื™ ื‘ืืžืฆืขื•ืชื.

ืœืื—ืจ ืฉื”ื‘ื ืชื™ ืืช ืคื•ืจืžื˜ ืงื•ื‘ืฅ ื”-CAS (ืฉื”ืชื‘ืจืจ ื›ื™ ื”ื•ื ืจืง ืขื•ืชืง ื‘ื™ื˜ ืื—ืจ ืกื™ื‘ื™ื•ืช ืฉืœ ื”ื ืชื•ื ื™ื ืžื”ืงืœื˜ืช ืฉื›ื‘ืจ ื”ื™ื™ืชื” ืœื™ ื‘ื”ื™ืฉื’ ื™ื“, ืคืจื˜ ืœื›ื•ืชืจืช ืขื ื ื•ื›ื—ื•ืช ืฉืœ ื‘ื™ื™ื˜ ืกื™ื ื›ืจื•ืŸ), ืขืฉื™ืชื™ ื›ืžื” ืฉื™ื ื•ื™ื™ื ื‘ืชื•ื›ื ื™ืช ืฉืœื™ ื•ื”ืฆืœื™ื— ืœื”ื•ืฆื™ื ืงื•ื‘ืฅ CAS ืขื•ื‘ื“ ืฉืขื‘ื“ ื‘ืืžื•ืœื˜ื•ืจ (TRS-80 Model III):

ืื™ืš ืฉื—ื–ืจืชื™ ื ืชื•ื ื™ื ื‘ืคื•ืจืžื˜ ืœื ื™ื“ื•ืข ืžืกืจื˜ ืžื’ื ื˜ื™

ืขื™ืฆื‘ืชื™ ืืช ื”ื’ืจืกื” ื”ืขื“ื›ื ื™ืช ื‘ื™ื•ืชืจ ืฉืœ ื›ืœื™ ื”ื”ืžืจื” ืขื ืงื‘ื™ืขื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ื”ื“ื•ืคืง ื”ืจืืฉื•ืŸ ื•ื”ืžืจื—ืง ื‘ื™ืŸ ืคืขื™ืžื•ืช ื”ืคื ื™ื” ื›ื—ื‘ื™ืœืช GEM, ืงื•ื“ ื”ืžืงื•ืจ ื–ืžื™ืŸ ื‘ื›ืชื•ื‘ืช GitHub.

ืžืกืงื ื”

ื”ืฉื‘ื™ืœ ืฉืขื‘ืจื ื• ื”ืชื‘ืจืจ ื›ืžืกืข ืžืจืชืง ืืœ ื”ืขื‘ืจ, ื•ืื ื™ ืฉืžื— ืฉื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ืžืฆืืชื™ ืืช ื”ืชืฉื•ื‘ื”. ื‘ื™ืŸ ื”ื™ืชืจ, ืื ื™:

  • ื”ื‘ื ืชื™ ืืช ื”ืคื•ืจืžื˜ ืœืฉืžื™ืจืช ื ืชื•ื ื™ื ื‘-ZX Spectrum ื•ืœืžื“ืชื™ ืืช ืฉื’ืจื•ืช ื”-ROM ื”ืžื•ื‘ื ื•ืช ืœืฉืžื™ืจืช/ืงืจื™ืืช ื ืชื•ื ื™ื ืžืงืœื˜ื•ืช ืฉืžืข
  • ื”ื›ืจืชื™ ืืช ืžื—ืฉื‘ ื”-TRS-80 ื•ื”ื–ื ื™ื ืฉืœื•, ืœืžื“ืชื™ ืืช ืžืขืจื›ืช ื”ื”ืคืขืœื”, ื”ืกืชื›ืœืชื™ ืขืœ ืชื•ื›ื ื•ืช ืœื“ื•ื’ืžื” ื•ืืคื™ืœื• ื”ื–ื“ืžืŸ ืœื™ ืœื‘ืฆืข ืื™ืชื•ืจ ื‘ืื’ื™ื ื‘ืงื•ื“ื™ ืžื›ื•ื ื” (ืื—ืจื™ ื”ื›ืœ, ื›ืœ ื”ื–ื›ืจื•ื ื•ืช ืฉืœ ื”-Z80 ืžื•ื›ืจื™ื ืœื™)
  • ื›ืชื‘ ื›ืœื™ ืขื–ืจ ืžืœื ืœื”ืžืจืช ื”ืงืœื˜ื•ืช ืื•ื“ื™ื• ืœืคื•ืจืžื˜ CAS, ืฉื™ื›ื•ืœ ืœืงืจื•ื ื ืชื•ื ื™ื ืฉืื™ื ื ืžื–ื•ื”ื™ื ืขืœ ื™ื“ื™ ื”ื›ืœื™ ื”"ืจืฉืžื™"

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”