แฌแแแแแกแขแแ แแ
แ แแแแ แช แ แแขแ แ แขแแฅแแแแแก แแแงแแแ แฃแแ, แแ แแฎแแ แแแงแแแ ZX Spectrum+ แแแ แแ แแขแแแแแจแ แแแแงแแแแแแแกแแแ. แแแแแ แแแแแแฃแขแแ แแแ แแ แแแ, แแแแแฆแ แ แแแแแแแแ แแฃแแแ แแแกแแขแ แแแแแจแแแแ (แแ แแแแแแ แจแแคแฃแแแแจแ แแแกแขแ แฃแฅแชแแแแแ), แแกแแแ แแแกแแขแแแแ แฉแแฌแแ แแแ แแ แแแ แแแแแ แกแแแชแแแแฃแ แ แแแ แแแ แแแแก แแแ แแจแ. แแแกแแแแแ แแ, แ แแ 40 แฌแแแก แฌแแแแแแแแ แแแกแแขแแแแก แแแแแชแแแแแ แแแ แแแ แแแแแฎแแแแแ แแ แแแแแแ แแแแฅแแแก แงแแแแ แแแแแจแ แแ แแ แแแ แแแ แแแแแแแฌแแ แ.
แแฃแแชแ, แแแแแแ แ แแแกแแขแแแ แแแแแแ แฉแแแแฌแแ แแแ, แ แแแแแแแช แแจแแแ แแ แแ แแงแ แแแแแแแแฃแแ ZX Spectrum แแแแแแฃแขแแ แแก แแแแ . แแกแแแ แกแ แฃแแแแ แแแแกแฎแแแแแแฃแแแ แแฆแแ แแแแ แแ, แฎแกแแแแแฃแแ แแแแแแฃแขแแ แแแแ แฉแแแแฌแแ แแแแกแแแ แแแแกแฎแแแแแแแ, แแ แแแฌแงแแแฃแแ แแแแแ BASIC แฉแแแขแแแ แแแแแแ, แ แแแแแแช แฉแแแฃแแแแ แแ แงแแแแ แแ แแแ แแแแกแ แแ แแแแแจแแก แฉแแแแฌแแ แจแแ.
แแแ แแแแฃแแ แแแ แแแแแก แแแแแแแแแแแจแ แแก แแแฌแฃแฎแแแแ - แซแแแแแ แแแแแแแ แแแแแ แแแแ แ แ แแแแแแแแแ แแแแจแ. แแฃ แแฅแแแ แจแแซแแแแ แแฃแแแ แกแแแแแแแก แฌแแแแแฎแแแก แแแแขแแแแก แแแแแแแแแแ แแแแ, แจแแแแซแแแแ แแแซแแแแแ แกแแแแแแแแแ แแ แงแแแแแคแแ แ, แ แแช แแแฃแแแแแแก แกแแแแแแแก แฌแแ แแแจแแแแแ. แแ แแแแแ แ แ แแขแ แ-แแ แฅแแแแแแแ.
แแฎแแ, แ แแชแ แแแแแ แแแ แแแแแแ แ แแ แแแแแ แแแกแแขแแแแก แแขแแแแขแแแก แแฃแงแฃแ แแ, แแแฆแแแแแ, แ แแแแแ
แแแกแฃแฎแ แกแฃแ แแแแแฌแแ แแงแ
แแแ แชแฎแแแ แแแกแแขแแก แแขแแแแขแแ แแ แแก TRS-80 แแแแแแฃแขแแ แแก แแแกแแฎแแแแแ, แฎแแแ แแฌแแ แแแแแแแก แกแแฎแแแแก แฅแแแแแ: "แแแแแแแแแฃแแแ Radio Shack-แแก แแแแ แแจแจ-แจแ"
(แแฃ แแแแแแ แแแขแ แแแ แแแแแแแ แจแแแแแฎแแ, แกแแแแแแ แแก แฅแแแจ แแ แแแแแฎแแแแแ)
แแฃแแแ แกแแแแแแแแแก แจแแแแ แแแ
แแแ แแแ แ แแแจแ แแแแแชแแคแ แแ แแฃแแแแฉแแแแฌแแ แแแ. แจแแแแซแแแแ แแแฃแกแแแแแ แ แแแแ แแฆแแ แก:
แแ แฉแแแฃแแแแแกแแแแแ แแฆแแ แก แฉแแแแฌแแ แ ZX Spectrum แแแแแแฃแขแแ แแแแ:
แแ แแแ แจแแแแฎแแแแแจแ, แฉแแฌแแ แแก แแแกแแฌแงแแกแจแ แแ แแก แ.แฌ แแแแแขแแก แขแแแ - แแแแแ แกแแฎแจแแ แแก แฎแแ (แแแ แแแ แฉแแแแฌแแ แจแ แซแแแแแ แแแแแแ <1 แฌแแแ, แแแแ แแ แแแแแ แฉแแฃแแแ). แกแแแแแแขแ แขแแแ แแชแแแแแแก แแแแแแฃแขแแ แก, แ แแ แแแแแแแแแก แแแแแชแแแแแแก แแแกแแฆแแแแ. แ แแแแ แช แฌแแกแ, แแแแแแฃแแ แแแแแแฃแขแแ แ แชแแแแก แแฎแแแแ "แกแแแฃแแแ แ" แแแแแขแแก แขแแแก แกแแแแแแแก แคแแ แแแกแ แแ แกแแฎแจแแ แแก แแแฎแแแแแ.
แแฃแชแแแแแแแแ แ แแฆแแชแแก แแฅแแ แแแแแ แกแแแแแแแก แคแแ แแแก แจแแกแแฎแแ. แแแแแแแแแ, ZX Spectrum-แแ แแแกแ แคแแ แแ แแแ แแแฃแแฎแแ:
แแแแแขแฃแ แ แขแแแแก แแฆแแแฉแแแแกแแก, ZX Spectrum แแฉแแแแแแก แแแแแชแแแแแแแ แฌแแแแ แแ แแฃแ แฏ แแแแแแก แแแ แแแแก แกแแแฆแแแ แแ, แ แแแ แแแฃแแแแแก, แ แแ แกแแแแแแ แแฅแแ แแฆแแแ แแแฃแแ. แแแแแขแแก แขแแแ แแแแแ แแแแ แกแแแฅแ แแแฃแแ แแฃแแกแ, แ แแแแแแช แแซแแแแก แกแแแแแแก แแแแแแฃแขแแ แก, แ แแ แแแแฌแงแแก แแแแแชแแแแแแก แแแฆแแแ. แแแ แฎแแกแแแแแแแ แฃแคแ แ แแแแแ แฎแแแแ แซแแแแแแแ (แกแแแแแแขแ แขแแแแแ แแ แจแแแแแแ แแแแแชแแแแแแแ แจแแแแ แแแแ) (แแฎ. แกแฃแ แแแ)
แกแแแฅแ แแแแแแชแแแก แแฃแแกแแก แแแฆแแแแก แจแแแแแ, แแแแแแฃแขแแ แ แแฆแ แแชแฎแแแก แกแแแแแแแก แงแแแแ แแฌแแแแก/แแแชแแแแก, แแแแแแแแก แแแก แฎแแแแ แซแแแแแแแก. แแฃ แฎแแแแ แซแแแแแแ แแแแแแแแ แแแ แแแแฃแ แแฆแแแ แแ, แแแขแ 1 แแฌแแ แแแ แแแฎแกแแแ แแแแจแ, แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ 0. แแแขแแแ แแ แแแแแแ แแแแขแแแแ แแ แแ แแชแแกแ แแแแ แแแแ N แแแแขแแก แแแฆแแแแแแ. แแแแแ แ N แฉแแแฃแแแแ แแ แแฆแแแฃแแแ แแแแแแฌแแ แแแ แคแแแแแก แกแแแแฃแ แแแแ. แแแขแแแ แแแแก แแแแแแแแแแ แแแ แจแแแแแแแ:
- แแแแแขแแก แขแแแ
- header (แคแแฅแกแแ แแแฃแแ แกแแแ แซแ), แจแแแชแแแก แแแแแแฌแแ แแแ แแแแแชแแแแแแก แแแแแก (N), แคแแแแแก แกแแฎแแแกแ แแ แขแแแก
- แแแแแขแแก แขแแแ
- แแแแแ แแแแแชแแแแแ
แแแแแชแแแแแแก แกแฌแแ แแ แฉแแขแแแ แแแแจแ แ แแ แแแ แฌแแฃแแแแก, ZX Spectrum แแแแฎแฃแแแแก แ.แฌ แแแ แแขแแขแแก แแแแขแ (แแแ แแขแแขแแก แแแแขแ), แ แแแแแแช แแแแแแแแแแแ แคแแแแแก แจแแแแฎแแแกแแก แฉแแฌแแ แแแ แแแแแชแแแแแแก แงแแแแ แแแแขแแก 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 แขแแแ แจแฃแ_pos := (prev_pos+pos)/2 แแ แจแฃแ_pos-แแก แแแแแแ แ แฃแแแแจแ แกแแแแแแขแแ (middle_pos-8;middle_pos +8) แแแแแแแแแแแ แแแฅแกแแแแแฃแ แ แแ แแแแแแแแฃแ แ แแแแแแขแฃแแ. แแฃ แแแ แจแแ แแก แกแฎแแแแแ 10-แแ แแแขแแ, แจแแแแแจแ แแฌแแ แ 1 แแแขแก, แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ 0. 10 แแ แแก แแฅแกแแแ แแแแแขแฃแแแ แแแฆแแแฃแแ แแฃแแแแแ;
- แจแแแแแฎแแ แแแแแแแแ แ แแแแแชแแ prev_pos-แจแ (prev_pos := pos)
- แแแแแแแ แแ แแ-3 แแแแแฏแแแแ, แกแแแแ แแ แฌแแแแแแแฎแแแ แแแแ แคแแแแก;
- แจแแแแแแ แแแฆแแแฃแแ แแแขแแแแก แแแกแแแ แฃแแแ แแงแแก แจแแแแฎแฃแแ แแแแขแแแแก แแแแ แแแแก แกแแฎแแ. แแแแแแแแ แฌแแแแแฎแแแกแแก แแ แแแแแแแแแแกแฌแแแแ แกแแแฅแ แแแแแแชแแแก แแแแขแ, แแแขแแแแก แ แแแแแแแแ แจแแแซแแแแ แแ แแงแแก 8-แแก แฏแแ แแแ แแ แแกแแแ แฃแชแแแแแ แแแขแแก แกแแญแแ แ แแคแกแแขแ. แแแแแ แแแแแก แแแ แแแ แแแแฎแแ แชแแแแแแแจแ แแ แแ แแแชแแแ แกแแแฅแ แแแแแแชแแแก แแแแขแแก แแ แกแแแแแแก แจแแกแแฎแแ แแ แแแแขแแ แฃแแ แแแแ แจแแแแแแฎแ 8 แคแแแแ แกแฎแแแแแกแฎแแ แ แแแแแแแแแก แแคแกแแขแฃแ แ แแแขแแ. แแ แ-แแ แแ แแแแแแแ แจแแแชแแแแ แกแฌแแ แแแแแชแแแแแก. แกแแแแแแ แแแแแ แแแแจแ, แแ แฃแแ แแแแ แแฎแกแแ แงแแแแ แแแขแก A5h-แแแ, แ แแช แกแแจแฃแแแแแแก แแแซแแแแก แแแฃแงแแแแแแแแ แแแแแฆแ แกแฌแแ แ แแแแแแแแแแ แคแแแแ
แแแแแ แแแแ แ แฃแแแจแ, แแแแแขแแ แแกแแแฃแแแแแแแก
แแ แแแ แแแแก แแแฌแแ แแก แแแแ Ruby แแแแ แฉแแ, แ แแแแแ... แแ แแแกแแ แแแแ แแแ แแแแ แฃแแแขแแก แแ แแก. แแแ แแแแขแ แแ แแ แแก แแแฆแแแ แฎแแ แแกแฎแแก, แแแแ แแ แแแแฎแแแก แกแแฉแฅแแ แแก แ แแช แจแแแซแแแแ แกแฌแ แแคแ แแแขแแ แแแแก แแแแชแแแ แแ แฆแแ แก.
# ะัะฟะพะปัะทัะตะผ 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 แแแแแแฃแขแแ แ แแแแฎแแแก แแ แแแ แแแแแก แแแแฎแแแแแแ แแแแแ แคแแ แแแขแจแ แแแฎแกแแแ แแแแจแ แแ แแแแฎแแแก แแ แแแ แแแแแก แคแแ แแ. แงแแแแ แจแแแแฎแแแแแจแ, แแ แจแแแแแแฌแแ แกแแแแแแซแ แกแแขแงแแแแ แฌแแแแแฆแแแแ
แแ แแกแแแ แจแแแแแแฌแแ แแแแฃแแแ แฃแแ Atari, Commodore 64 แแ แแแแ แแแแแแแ แ แแแแแแแแ แกแฎแแ แแแแแแฃแขแแ แแก BASIC แกแแแแแแซแ แกแแขแงแแแแ, แ แแกแแแแกแแช แจแแแซแแแ แแแแฃแแแแขแแชแแแก แแแแแ, แแแแ แแ แฃแจแแแแแแ - แฉแแแ แชแแแแ แ แแขแ แ แแแแแแฃแขแแ แแแแก แขแแแแแแก แจแแกแแฎแแ แแ แช แแกแ แคแแ แแ แแฆแแแฉแแแ.
แแแ แ แแแแแแฌแงแแแขแ แฌแแกแแแ
แแแแแแฃแขแแ แ Tandy/Radio Shack TRS-80
แซแแแแแ แกแแแแ แแฃแแแ, แ แแ แแแแกแแฎแแแแแแ แแฃแแแแฉแแแแฌแแ แ, แ แแแแแแช แแ แแแแแงแแแแ แกแขแแขแแแก แแแกแแฌแงแแกแจแ แแแแแแแแแ, แแแแแแแ แแแแแแฃแขแแ แแ แแกแ:
แแฆแแแฉแแแ, แ แแ แแก แแแแแแฃแขแแ แ แแ แแแกแ แฏแแจแแแ (Model I/Model III/Model IV แแ แ.แจ.) แแ แ แแ แแก แซแแแแแ แแแแฃแแแ แฃแแ แแงแ (แ แ แแฅแแ แฃแแแ, แแ แ แ แฃแกแแแจแ). แแฆแกแแแแจแแแแแ, แ แแ แแแ แแแแ แแแแแงแแแแแฃแแ แแ แแชแแกแแ แแช แแงแ Z80. แแ แแแแแแฃแขแแ แแกแแแแก แจแแแแซแแแแ แแแแแแ แแแขแแ แแแขแจแ
แแแฃแแแขแแ แ แแแแแแแฌแแ แ
แแแช แแแแแแ
แ แแแแกแแช แแแแแ แแแแ CAS แคแแแแแก แคแแ แแแขแ (แ แแแแแแช แแฆแแแฉแแแ แแฎแแแแ แคแแ แแ แแแแแชแแแแแแก แแแข-แแแขแ แแกแแ, แ แแแแแแช แฃแแแ แฎแแแ แแฅแแแแ, แแแ แแ แกแแแแฃแ แแก แกแแแฅแ แแแแแแชแแแก แแแแขแแก แแ แกแแแแแแ), แแแแแแแแ แ แแแแแแแแ แชแแแแแแแ แฉแแแก แแ แแแ แแแแจแ แแ แจแแแซแแแ แกแแแฃแจแแ CAS แคแแแแแก แแแแแขแแแ, แ แแแแแแช แแฃแจแแแแแ แแแฃแแแขแแ แจแ (TRS-80 Model III):
แแ แแแแแแ แแแฅแขแ แแแแแแ แขแแชแแแก แแ แแแ แแแแก แฃแแฎแแแกแ แแแ แกแแ แแแ แแแแ แแฃแแกแแก แแแขแแแแขแฃแ แ แแแแกแแแฆแแ แแ แแ แแแแแแแแแก แแฃแแกแแแก แจแแ แแก แแแแซแแแแ, แ แแแแ แช GEM แแแแแขแ, แฌแงแแ แแก แแแแ แฎแแแแแกแแฌแแแแแแ แแฅ
แแแกแแแแ
แแแ, แ แแแแแแช แฉแแแ แแแแแแ แแ, แฌแแ แกแฃแแจแ แแแแฎแแแแแแ แแแแแแฃแ แแแ แแฆแแแฉแแแ แแ แแแฎแแ แแ, แ แแ แกแแแแแแแ แแแกแฃแฎแ แแแแแแ. แกแฎแแ แกแแแแแฎแแแแแ แแ แแแ แแ:
- แแ แแแแแ แแแแ ZX Spectrum-แจแ แแแแแชแแแแแแก แจแแแแฎแแแก แคแแ แแแขแ แแ แจแแแแกแฌแแแแ แฉแแจแแแแแฃแแ ROM แ แฃแขแแแแแ แแฃแแแ แแแกแแขแแแแแแ แแแแแชแแแแแแก แจแแกแแแแฎแแ/แฌแแแแแฎแแแกแแแแก.
- แแแแแชแแแ TRS-80 แแแแแแฃแขแแ แ แแ แแแกแ แฏแแจแแแ, แจแแแแกแฌแแแแ แแแแ แแชแแฃแแ แกแแกแขแแแ, แแแแแแฎแแแ แแ แแแ แแแแแก แแ แแแแแ แแฅแแแแ แจแแกแแซแแแแแแแ แแแแแแแแแแแแ แแแแแ แแแ แแแแฅแแแแแแก แแแแแแจแ (แแแแแก แแ แแแแแก, แงแแแแ Z80 แแแแแแแแแ แฉแแแแแแก แแแชแแแแแ)
- แแแฌแแ แ แกแ แฃแแคแแกแแแแแ แแ แแแ แแแ แแฃแแแ แฉแแแแฌแแ แแแแก CAS แคแแ แแแขแจแ แแแแแกแแงแแแแแ, แ แแแแแกแแช แจแแฃแซแแแ แฌแแแแแแฎแแก แแแแแชแแแแแ, แ แแแแแแแช แแ แแ แแก แแฆแแแ แแแฃแแ "แแคแแชแแแแฃแ แ" แแ แแแ แแแแก แแแแ
แฌแงแแ แ: www.habr.com