์ž๊ธฐ ํ…Œ์ดํ”„์—์„œ ์•Œ ์ˆ˜ ์—†๋Š” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•

์„ ์‚ฌ ์‹œ๋Œ€

๋ณต๊ณ ํ’ ํ•˜๋“œ์›จ์–ด๋ฅผ ์ข‹์•„ํ•˜๋Š” ์ €๋Š” ํ•œ๋•Œ ์˜๊ตญ ํŒ๋งค์ž๋กœ๋ถ€ํ„ฐ ZX Spectrum+๋ฅผ ๊ตฌ์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ ์ž์ฒด์—๋Š” ๊ฒŒ์ž„์ด ํฌํ•จ๋œ ์—ฌ๋Ÿฌ ์˜ค๋””์˜ค ์นด์„ธํŠธ(์ง€์‹œ ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ์›๋ž˜ ํฌ์žฅ)์™€ ํŠน๋ณ„ํ•œ ํ‘œ์‹œ ์—†์ด ์นด์„ธํŠธ์— ๋…น์Œ๋œ ํ”„๋กœ๊ทธ๋žจ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋†€๋ž๊ฒŒ๋„ 40๋…„ ๋œ ์นด์„ธํŠธ์˜ ๋ฐ์ดํ„ฐ๋Š” ์ž˜ ์ฝ์„ ์ˆ˜ ์žˆ์—ˆ๊ณ  ๊ฑฐ๊ธฐ์—์„œ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒŒ์ž„๊ณผ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ž๊ธฐ ํ…Œ์ดํ”„์—์„œ ์•Œ ์ˆ˜ ์—†๋Š” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ถ€ ์นด์„ธํŠธ์—์„œ ZX Spectrum ์ปดํ“จํ„ฐ๋กœ ๋…น์Œํ•œ ๊ฒƒ์ด ๋ถ„๋ช…ํ•˜์ง€ ์•Š์€ ๋…น์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์™„์ „ํžˆ ๋‹ค๋ฅด๊ฒŒ ๋“ค๋ ธ์œผ๋ฉฐ ์–ธ๊ธ‰๋œ ์ปดํ“จํ„ฐ์˜ ๋…น์Œ๊ณผ ๋‹ฌ๋ฆฌ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ๊ณผ ๊ฒŒ์ž„์˜ ๋…น์Œ์— ์กด์žฌํ•˜๋Š” ์งง์€ BASIC ๋ถ€ํŠธ๋กœ๋”๋กœ ์‹œ์ž‘๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

ํ•œ๋™์•ˆ ์ด๊ฒƒ์ด ๋‚˜๋ฅผ ๊ดด๋กญํ˜”์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ ์•ˆ์— ๋ฌด์—‡์ด ์ˆจ๊ฒจ์ ธ ์žˆ๋Š”์ง€ ์ •๋ง๋กœ ์•Œ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋””์˜ค ์‹ ํ˜ธ๋ฅผ ์ผ๋ จ์˜ ๋ฐ”์ดํŠธ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์‹ ํ˜ธ์˜ ์ถœ์ฒ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž๋‚˜ ๋ชจ๋“  ๊ฒƒ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ์ข…์˜ ๋ณต๊ณ ํ’ ๊ณ ๊ณ ํ•™.

์ด์ œ ์ญ‰ ๊ฐ€๋ณด๋‹ˆ ์นด์„ธํŠธ ๋ผ๋ฒจ ์ž์ฒด๋ฅผ ๋ณด๋‹ˆ ๋ฏธ์†Œ๊ฐ€ ์ง€์–ด์ง€๋„ค์š”.

๋‹ต์€ ์ญ‰ ๋‚ด ๋ˆˆ์•ž์— ์žˆ์—ˆ์–ด
์™ผ์ชฝ ์นด์„ธํŠธ์˜ ๋ผ๋ฒจ์—๋Š” TRS-80 ์ปดํ“จํ„ฐ ์ด๋ฆ„์ด ์žˆ๊ณ  ์ œ์กฐ์—…์ฒด ์ด๋ฆ„ ๋ฐ”๋กœ ์•„๋ž˜์—๋Š” "Manufactured by Radio Shack in USA"๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

(๋๊นŒ์ง€ ์ค„๊ฑฐ๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„์€ ์Šคํฌ์ผ๋Ÿฌ์— ๋“ค์–ด๊ฐ€์ง€ ๋งˆ์„ธ์š”)

์˜ค๋””์˜ค ์‹ ํ˜ธ ๋น„๊ต

์šฐ์„ , ์˜ค๋””์˜ค ๋…น์Œ์„ ๋””์ง€ํ„ธํ™”ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†Œ๋ฆฌ๋ฅผ ๋“ค์–ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๊ทธ๋ฆฌ๊ณ  ํ‰์†Œ์™€ ๊ฐ™์ด ZX Spectrum ์ปดํ“จํ„ฐ์˜ ๋…น์Œ ์†Œ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.


๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋…น์Œ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์†Œ์œ„ ํŒŒ์ผ๋Ÿฟ ํ†ค - ๋™์ผํ•œ ์ฃผํŒŒ์ˆ˜์˜ ์‚ฌ์šด๋“œ(์ฒซ ๋ฒˆ์งธ ๋…น์Œ์—์„œ๋Š” 1์ดˆ ๋ฏธ๋งŒ์œผ๋กœ ๋งค์šฐ ์งง์ง€๋งŒ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ์Œ). ํŒŒ์ผ๋Ÿฟ ํ†ค์€ ์ปดํ“จํ„ฐ์— ๋ฐ์ดํ„ฐ ์ˆ˜์‹ ์„ ์ค€๋น„ํ•˜๋ผ๋Š” ์‹ ํ˜ธ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ ์ปดํ“จํ„ฐ๋Š” ์‹ ํ˜ธ์˜ ๋ชจ์–‘๊ณผ ์ฃผํŒŒ์ˆ˜๋ฅผ ํ†ตํ•ด "์ž์ฒด" ํŒŒ์ผ๋Ÿฟ ํ†ค๋งŒ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.

์‹ ํ˜ธ ํ˜•ํƒœ ์ž์ฒด์— ๋Œ€ํ•ด ๋งํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ZX ์ŠคํŽ™ํŠธ๋Ÿผ์—์„œ๋Š” ๋ชจ์–‘์ด ์ง์‚ฌ๊ฐํ˜•์ž…๋‹ˆ๋‹ค.

์ž๊ธฐ ํ…Œ์ดํ”„์—์„œ ์•Œ ์ˆ˜ ์—†๋Š” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•

ํŒŒ์ผ๋Ÿฟ ํ†ค์ด ๊ฐ์ง€๋˜๋ฉด ZX Spectrum์€ ํ™”๋ฉด ํ…Œ๋‘๋ฆฌ์— ๋นจ๊ฐ„์ƒ‰๊ณผ ํŒŒ๋ž€์ƒ‰ ๋ง‰๋Œ€๋ฅผ ๋ฒˆ๊ฐˆ์•„ ํ‘œ์‹œํ•˜์—ฌ ์‹ ํ˜ธ๊ฐ€ ์ธ์‹๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํŒŒ์ผ๋Ÿฟ ํ†ค ์ข…๋ฃŒ ๋™๊ธฐ ํŽ„์Šค, ์ด๋Š” ์ปดํ“จํ„ฐ์— ๋ฐ์ดํ„ฐ ์ˆ˜์‹ ์„ ์‹œ์ž‘ํ•˜๋ผ๋Š” ์‹ ํ˜ธ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. (ํŒŒ์ผ๋Ÿฟ ํ†ค ๋ฐ ํ›„์† ๋ฐ์ดํ„ฐ์™€ ๋น„๊ตํ•˜์—ฌ) ์ง€์† ์‹œ๊ฐ„์ด ๋” ์งง์€ ๊ฒƒ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค(๊ทธ๋ฆผ ์ฐธ์กฐ).

๋™๊ธฐํ™” ํŽ„์Šค๊ฐ€ ์ˆ˜์‹ ๋œ ํ›„ ์ปดํ“จํ„ฐ๋Š” ์‹ ํ˜ธ์˜ ๊ฐ ์ƒ์Šน/ํ•˜๊ฐ•์„ ๊ธฐ๋กํ•˜์—ฌ ์ง€์† ์‹œ๊ฐ„์„ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๊ฐ„์ด ํŠน์ • ์ œํ•œ๋ณด๋‹ค ์ž‘์œผ๋ฉด ๋น„ํŠธ 1์ด ๋ฉ”๋ชจ๋ฆฌ์— ๊ธฐ๋ก๋˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 0์ด ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ๋น„ํŠธ๋Š” ๋ฐ”์ดํŠธ๋กœ ์ˆ˜์ง‘๋˜๊ณ  N ๋ฐ”์ดํŠธ๊ฐ€ ์ˆ˜์‹ ๋  ๋•Œ๊นŒ์ง€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค. ์ˆซ์ž N์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•œ ํŒŒ์ผ์˜ ํ—ค๋”์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋กœ๋”ฉ ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ํŒŒ์ผ๋Ÿฟ ํ†ค
  2. ํ—ค๋”(๊ณ ์ • ๊ธธ์ด), ๋‹ค์šด๋กœ๋“œํ•œ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ(N), ํŒŒ์ผ ์ด๋ฆ„ ๋ฐ ์œ ํ˜•์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  3. ํŒŒ์ผ๋Ÿฟ ํ†ค
  4. ๋ฐ์ดํ„ฐ ๊ทธ ์ž์ฒด

๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋กœ๋“œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ZX Spectrum์€ ์†Œ์œ„ ๋งํ•˜๋Š” ํŒจ๋ฆฌํ‹ฐ ๋ฐ”์ดํŠธ (ํŒจ๋ฆฌํ‹ฐ ๋ฐ”์ดํŠธ), ์“ด ๋ฐ์ดํ„ฐ์˜ ๋ชจ๋“  ๋ฐ”์ดํŠธ๋ฅผ XORํ•˜์—ฌ ํŒŒ์ผ์„ ์ €์žฅํ•  ๋•Œ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ์ฝ์„ ๋•Œ ์ปดํ“จํ„ฐ๋Š” ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ์—์„œ ํŒจ๋ฆฌํ‹ฐ ๋ฐ”์ดํŠธ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ์ €์žฅ๋œ ๊ฒƒ๊ณผ ๋‹ค๋ฅผ ๊ฒฝ์šฐ "R Tape loading error"๋ผ๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด ์ปดํ“จํ„ฐ๊ฐ€ ์ฝ์„ ๋•Œ ํŽ„์Šค๋ฅผ ์ธ์‹ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(๋ˆ„๋ฝ๋˜์—ˆ๊ฑฐ๋‚˜ ์ง€์† ์‹œ๊ฐ„์ด ํŠน์ • ์ œํ•œ์— ํ•ด๋‹นํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ) ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋” ์ผ์ฐ ๋ฐœํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์•Œ ์ˆ˜ ์—†๋Š” ์‹ ํ˜ธ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ž๊ธฐ ํ…Œ์ดํ”„์—์„œ ์•Œ ์ˆ˜ ์—†๋Š” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•

์ด๊ฒƒ์ด ํŒŒ์ผ๋Ÿฟ ํ†ค์ด๋‹ค. ์‹ ํ˜ธ์˜ ๋ชจ์–‘์€ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€๋งŒ ์‹ ํ˜ธ๊ฐ€ ํŠน์ • ์ฃผํŒŒ์ˆ˜์˜ ์งง์€ ํŽ„์Šค๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Œ์€ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. 44100Hz์˜ ์ƒ˜ํ”Œ๋ง ์ฃผํŒŒ์ˆ˜์—์„œ "ํ”ผํฌ" ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋Š” ๋Œ€๋žต 48๊ฐœ ์ƒ˜ํ”Œ์ž…๋‹ˆ๋‹ค(์ด๋Š” ์ฃผํŒŒ์ˆ˜ ~918Hz์— ํ•ด๋‹น). ์ด ์ˆ˜์น˜๋ฅผ ๊ธฐ์–ตํ•ด ๋ด…์‹œ๋‹ค.

์ด์ œ ๋ฐ์ดํ„ฐ ์กฐ๊ฐ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ž๊ธฐ ํ…Œ์ดํ”„์—์„œ ์•Œ ์ˆ˜ ์—†๋Š” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ฐœ๋ณ„ ํŽ„์Šค ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ •ํ•˜๋ฉด "๊ธด" ํŽ„์Šค ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ~48๊ฐœ ์ƒ˜ํ”Œ์ด๊ณ , ์งง์€ ํŽ„์Šค ์‚ฌ์ด๋Š” ~24๊ฐœ์ž…๋‹ˆ๋‹ค. ์กฐ๊ธˆ ์•ž์„ ๋‚ด๋‹ค๋ณด๋ฉด ๊ฒฐ๊ตญ 918Hz ์ฃผํŒŒ์ˆ˜์˜ "์ฐธ์กฐ" ํŽ„์Šค๊ฐ€ ํŒŒ์ผ์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ๋”ฐ๋ฅธ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ๊ธฐ์ค€ ํŽ„์Šค ์‚ฌ์ด์— ์ถ”๊ฐ€ ํŽ„์Šค๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด๋ฅผ ๋น„ํŠธ 1๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 0์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋™๊ธฐํ™” ํŽ„์Šค๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๋ฐ์ดํ„ฐ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ž๊ธฐ ํ…Œ์ดํ”„์—์„œ ์•Œ ์ˆ˜ ์—†๋Š” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•

ํŒŒ์ผ๋Ÿฟ ํ†ค์ด ์ข…๋ฃŒ๋˜๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ‰์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์ž ์‹œ ํ›„, ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์˜ค๋””์˜ค ๋…น์Œ์„ ๋ถ„์„ํ•œ ํ›„ ๋ฐ์ดํ„ฐ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๊ฐ€ ํ•ญ์ƒ ๋™์ผํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค(10100101b, A5h). ์ปดํ“จํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•œ ํ›„ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋™๊ธฐํ™” ๋ฐ”์ดํŠธ์˜ ๋งˆ์ง€๋ง‰ ์ฒซ ๋ฒˆ์งธ ํŽ„์Šค ์งํ›„ ์ฒซ ๋ฒˆ์งธ ๊ธฐ์ค€ ํŽ„์Šค์˜ ์ด๋™์— ์ฃผ์˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ์ฐธ ํ›„์— ๋ฐ์ดํ„ฐ ์ธ์‹ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ณผ์ •์—์„œ ํŒŒ์ผ ์‹œ์ž‘ ๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ฝ์„ ์ˆ˜ ์—†๋Š” ํ˜„์ƒ์ด ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์˜ค๋””์˜ค ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๋ช…ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋กœ๋“œ

๋จผ์ €, ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ฐ€์ •์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. WAV ํ˜•์‹์˜ ํŒŒ์ผ๋งŒ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.
  2. ์˜ค๋””์˜ค ํŒŒ์ผ์€ ํŒŒ์ผ๋Ÿฟ ํ†ค์œผ๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ ์‹œ์ž‘ ๋ถ€๋ถ„์— ๋ฌด์Œ์ด ํฌํ•จ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  3. ์†Œ์Šค ํŒŒ์ผ์˜ ์ƒ˜ํ”Œ๋ง ์†๋„๋Š” 44100Hz์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ 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. ์ด์ „ ๋‹จ๊ณ„์—์„œ๋Š” ๊ธฐ์ค€ ํŽ„์Šค๊ฐ€ ์ „ํ˜€ ๋ฐœ๊ฒฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋‹จ์ˆœํžˆ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ๋Š”๋‹ค๊ณ  ํ•ด์„œ ์ด ์„ธ๊ทธ๋จผํŠธ์— ์ถฉ๋™์ด ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ ๊ตฌํ˜„ํ•œ ์ฝ๊ธฐ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ์„ธ๊ทธ๋จผํŠธ์˜ ์ตœ๋Œ€ ์ง„ํญ ๊ฐ’๊ณผ ์ตœ์†Œ ์ง„ํญ ๊ฐ’์˜ ์ฐจ์ด๋ฅผ ํ™•์ธํ•˜๊ณ , ํŠน์ • ํ•œ๋„๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ์ž„ํŽ„์Šค์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๊ธฐ์ค€ ํŽ„์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€์ž…๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์ข…๋ฃŒ๋˜๊ณ  ์นจ๋ฌต์ด ์ด์–ด์ง€๊ฑฐ๋‚˜, ์ด๋ฅผ ์ฝ๊ธฐ ์˜ค๋ฅ˜๋กœ ๊ฐ„์ฃผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฅผ ์ƒ๋žตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
  6. ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” ๋ฐ์ดํ„ฐ ํŽ„์Šค(๋น„ํŠธ 0 ๋˜๋Š” 1)์˜ ์กด์žฌ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์„ธ๊ทธ๋จผํŠธ์˜ ์ค‘๊ฐ„(prev_pos;pos) middle_pos๋ฅผ middle_pos := (prev_pos+pos)/2์™€ ๋™์ผํ•˜๊ฒŒ ์ทจํ•˜๊ณ  ์„ธ๊ทธ๋จผํŠธ(middle_pos-8;middle_pos +8)์˜ middle_pos ๊ทผ์ฒ˜์—์„œ ์ตœ๋Œ€ ๋ฐ ์ตœ์†Œ ์ง„ํญ์„ ๊ณ„์‚ฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‘˜ ์‚ฌ์ด์˜ ์ฐจ์ด๊ฐ€ 10๋ณด๋‹ค ํฌ๋ฉด ๊ฒฐ๊ณผ์— ๋น„ํŠธ 1์„ ์“ฐ๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 0์„ ์”๋‹ˆ๋‹ค. 10์€ ์‹คํ—˜์ ์œผ๋กœ ์–ป์€ ์ƒ์ˆ˜์ž…๋‹ˆ๋‹ค.
  7. ํ˜„์žฌ ์œ„์น˜๋ฅผ prev_pos์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. (prev_pos := pos)
  8. ์ „์ฒด ํŒŒ์ผ์„ ์ฝ์„ ๋•Œ๊นŒ์ง€ 3๋‹จ๊ณ„๋ถ€ํ„ฐ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
  9. ๊ฒฐ๊ณผ ๋น„ํŠธ ๋ฐฐ์—ด์€ ๋ฐ”์ดํŠธ ์ง‘ํ•ฉ์œผ๋กœ ์ €์žฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ์„ ๋•Œ ๋™๊ธฐํ™” ๋ฐ”์ดํŠธ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํŠธ ์ˆ˜๊ฐ€ 8์˜ ๋ฐฐ์ˆ˜๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•„์š”ํ•œ ๋น„ํŠธ ์˜คํ”„์…‹๋„ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„์—์„œ๋Š” ๋™๊ธฐํ™” ๋ฐ”์ดํŠธ์˜ ์กด์žฌ๋ฅผ ๋ชฐ๋ž๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํžˆ ์˜คํ”„์…‹ ๋น„ํŠธ ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ 8๊ฐœ์˜ ํŒŒ์ผ์„ ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ํ•˜๋‚˜์—๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์ข… ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ๋Š” A5h๊นŒ์ง€์˜ ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ๊ฐ„๋‹จํžˆ ์ œ๊ฑฐํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅธ ์ถœ๋ ฅ ํŒŒ์ผ์„ ์ฆ‰์‹œ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด€์‹ฌ ์žˆ๋Š” ๋ถ„๋“ค์„ ์œ„ํ•œ Ruby ์•Œ๊ณ ๋ฆฌ์ฆ˜
์ œ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ ์–ธ์–ด๋กœ 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*")

๊ฒฐ๊ณผ

์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์ƒ์ˆ˜์˜ ์—ฌ๋Ÿฌ ๋ณ€ํ˜•์„ ์‹œ๋„ํ•œ ๊ฒฐ๊ณผ ์šด์ด ์ข‹๊ฒŒ๋„ ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

์ž๊ธฐ ํ…Œ์ดํ”„์—์„œ ์•Œ ์ˆ˜ ์—†๋Š” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•

๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด๋กœ ํŒ๋‹จํ•˜๋ฉด ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ๊ทธ๋žจ ํ…์ŠคํŠธ์—๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํ‚ค์›Œ๋“œ๋Š” ๋ฐ”์ดํŠธ๋กœ ์ธ์ฝ”๋”ฉ๋ฉ๋‹ˆ๋‹ค(๊ฐ ๊ฐ’ > 80h). ์ด์ œ ์šฐ๋ฆฌ๋Š” 80๋…„๋Œ€์˜ ์–ด๋–ค ์ปดํ“จํ„ฐ๊ฐ€ ์ด ํ˜•์‹์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ BASIC ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ZX Spectrum ์ปดํ“จํ„ฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฑฐ์˜ ๋™์ผํ•œ ํ˜•์‹์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ํ…Œ์ดํ”„์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํ˜น์‹œ๋‚˜ ํ•ด์„œ ํ‚ค์›Œ๋“œ๋ฅผ ํ™•์ธํ•ด๋ดค๋Š”๋ฐ ํ…Œ์ด๋ธ”. ๊ทธ๋Ÿฌ๋‚˜ ๊ฒฐ๊ณผ๋Š” ๋ช…๋ฐฑํžˆ ๋ถ€์ •์ ์ด์—ˆ๋‹ค.

๋˜ํ•œ ์ธ๊ธฐ ์žˆ๋Š” Atari, Commodore 64 ๋ฐ ๋‹น์‹œ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ์˜ BASIC ํ‚ค์›Œ๋“œ๋ฅผ ํ™•์ธํ•˜์—ฌ ๋ฌธ์„œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ ˆํŠธ๋กœ ์ปดํ“จํ„ฐ ์œ ํ˜•์— ๋Œ€ํ•œ ์ง€์‹์ด ๊ทธ๋ฆฌ ๋„“์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ๊ฐ€๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์–ด์š” ๋ชฉ๋ก, ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์ œ์กฐ์—…์ฒด Radio Shack์˜ ์ด๋ฆ„๊ณผ TRS-80 ์ปดํ“จํ„ฐ์— ์‹œ์„ ์ด ๋–จ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ๋‚ด ํ…Œ์ด๋ธ” ์œ„์— ๋†“์—ฌ ์žˆ๋˜ ์นด์„ธํŠธ ๋ผ๋ฒจ์— ์ ํžŒ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค! ์˜ˆ์ „์—๋Š” ์ด๋Ÿฐ ์ด๋ฆ„๋„ ๋ชจ๋ฅด๊ณ  TRS-80 ์ปดํ“จํ„ฐ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— Radio Shack์€ BASF, Sony, TDK ๋“ฑ์˜ ์˜ค๋””์˜ค ์นด์„ธํŠธ ์ œ์กฐ์‚ฌ์ด๊ณ , ์žฌ์ƒ์‹œ์—๋Š” TRS-80์ด ์•„๋‹Œ๊ฐ€ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์™œ ์•ˆ ๋ผ?

์ปดํ“จํ„ฐ ํƒ ๋””/๋ผ๋””์˜ค ํŒ์žฃ์ง‘ TRS-80

๊ธฐ์‚ฌ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ ์ œ๊ฐ€ ์˜ˆ์‹œ๋กœ ์ œ์‹œํ•œ ๋ฌธ์ œ์˜ ์˜ค๋””์˜ค ๋…น์Œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ปดํ“จํ„ฐ์—์„œ ๋งŒ๋“ค์–ด์กŒ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’์Šต๋‹ˆ๋‹ค.

์ž๊ธฐ ํ…Œ์ดํ”„์—์„œ ์•Œ ์ˆ˜ ์—†๋Š” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•

์ด ์ปดํ“จํ„ฐ์™€ ๊ทธ ์ข…๋ฅ˜(๋ชจ๋ธ I/๋ชจ๋ธ III/๋ชจ๋ธ IV ๋“ฑ)๋Š” ํ•œ๋•Œ ๋งค์šฐ ์ธ๊ธฐ๊ฐ€ ์žˆ์—ˆ๋˜ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค(๋ฌผ๋ก  ๋Ÿฌ์‹œ์•„์—์„œ๋Š” ์•„๋‹˜). ๊ทธ๋“ค์ด ์‚ฌ์šฉํ•œ ํ”„๋กœ์„ธ์„œ๋„ Z80์ด๋ผ๋Š” ์ ์ด ์ฃผ๋ชฉํ•  ๋งŒํ•˜๋‹ค. ์ด ์ปดํ“จํ„ฐ์˜ ๊ฒฝ์šฐ ์ธํ„ฐ๋„ท์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์ •๋ณด. 80๋…„๋Œ€์—๋Š” ์ปดํ“จํ„ฐ ์ •๋ณด๊ฐ€ ์œ ํ†ต๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์žก์ง€. ํ˜„์žฌ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—๋ฎฌ๋ ˆ์ดํ„ฐ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์šฉ ์ปดํ“จํ„ฐ.

์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค trs80gp ๊ทธ๋ฆฌ๊ณ  ์ฒ˜์Œ์œผ๋กœ ๋‚˜๋Š” ์ด ์ปดํ“จํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ปดํ“จํ„ฐ๋Š” ์ปฌ๋Ÿฌ ์ถœ๋ ฅ์„ ์ง€์›ํ•˜์ง€ ์•Š์•˜๊ณ  ํ™”๋ฉด ํ•ด์ƒ๋„๋Š” 128x48 ํ”ฝ์…€์— ๋ถˆ๊ณผํ–ˆ์ง€๋งŒ ํ™”๋ฉด ํ•ด์ƒ๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ํ™•์žฅ๊ณผ ์ˆ˜์ •์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์ปดํ“จํ„ฐ์˜ ์šด์˜ ์ฒด์ œ์— ๋Œ€ํ•œ ๋งŽ์€ ์˜ต์…˜๊ณผ BASIC ์–ธ์–ด ๊ตฌํ˜„์„ ์œ„ํ•œ ์˜ต์…˜์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค(ZX Spectrum๊ณผ ๋‹ฌ๋ฆฌ ์ผ๋ถ€ ๋ชจ๋ธ์—์„œ๋Š” ROM์— "ํ”Œ๋ž˜์‹œ"๋˜์ง€๋„ ์•Š์•˜์œผ๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ”Œ๋กœํ”ผ ๋””์Šคํฌ์—์„œ ๋ชจ๋“  ์˜ต์…˜์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Œ). OS ์ž์ฒด)

๋‚˜๋„ ์ฐพ์•˜์–ด ๊ณต์ต์‚ฌ์—… ์˜ค๋””์˜ค ๋…น์Œ์„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ์ง€์›ํ•˜๋Š” CAS ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ–ˆ์ง€๋งŒ ์–ด๋–ค ์ด์œ ๋กœ ๋‚ด ์นด์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋…น์Œ์„ ์ฝ์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

CAS ํŒŒ์ผ ํ˜•์‹(๋™๊ธฐํ™” ๋ฐ”์ดํŠธ๊ฐ€ ์žˆ๋Š” ํ—ค๋”๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ…Œ์ดํ”„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„ํŠธ ๋‹จ์œ„๋กœ ๋ณต์‚ฌํ•œ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์ง)์„ ์•Œ์•„๋‚ธ ํ›„ ๋‹ค์Œ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ํ”„๋กœ๊ทธ๋žจ์— ๋ช‡ ๊ฐ€์ง€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๊ณ  ์—๋ฎฌ๋ ˆ์ดํ„ฐ(TRS-80 Model III)์—์„œ ์ž‘๋™ํ•˜๋Š” CAS ํŒŒ์ผ์„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ž๊ธฐ ํ…Œ์ดํ”„์—์„œ ์•Œ ์ˆ˜ ์—†๋Š” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•

๋‚˜๋Š” ์ฒซ ๋ฒˆ์งธ ํŽ„์Šค์™€ ๊ธฐ์ค€ ํŽ„์Šค ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ฒฐ์ •ํ•˜๋Š” ๋ณ€ํ™˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ์˜ ์ตœ์‹  ๋ฒ„์ „์„ GEM ํŒจํ‚ค์ง€๋กœ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ๋Š” ๋‹ค์Œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊นƒํ—ˆ๋ธŒ.

๊ฒฐ๋ก 

์šฐ๋ฆฌ๊ฐ€ ๊ฑธ์–ด์˜จ ๊ธธ์€ ๊ณผ๊ฑฐ๋กœ์˜ ๋งคํ˜น์ ์ธ ์—ฌํ–‰์ด์—ˆ๊ณ , ๊ฒฐ๊ตญ ๊ทธ ๋‹ต์„ ์ฐพ๊ฒŒ ๋˜์–ด ๊ธฐ์˜๋‹ค. ๋ฌด์—‡๋ณด๋‹ค๋„ ๋‚˜๋Š”:

  • ZX Spectrum์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํ˜•์‹์„ ํŒŒ์•…ํ•˜๊ณ  ์˜ค๋””์˜ค ์นด์„ธํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ/์ฝ๊ธฐ ์œ„ํ•œ ๋‚ด์žฅ ROM ๋ฃจํ‹ด์„ ์—ฐ๊ตฌํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” TRS-80 ์ปดํ“จํ„ฐ์™€ ๊ทธ ์ข…๋ฅ˜์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , ์šด์˜ ์ฒด์ œ๋ฅผ ์—ฐ๊ตฌํ•˜๊ณ , ์ƒ˜ํ”Œ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ดํŽด๋ณด๊ณ , ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋กœ ๋””๋ฒ„๊น…ํ•  ๊ธฐํšŒ๋„ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค(๊ฒฐ๊ตญ Z80 ๋‹ˆ๋ชจ๋‹‰์€ ๋ชจ๋‘ ๋‚˜์—๊ฒŒ ์ต์ˆ™ํ•ฉ๋‹ˆ๋‹ค).
  • ์˜ค๋””์˜ค ๋…น์Œ์„ "๊ณต์‹" ์œ ํ‹ธ๋ฆฌํ‹ฐ์—์„œ ์ธ์‹๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” CAS ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ๋ณธ๊ฒฉ์ ์ธ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€