본문 바로가기
코딩과 알고리즘

추억의 IQ1000,2000 MSX 에뮬레이터

오늘은 X세대 분들 중 8비트 컴퓨터 MSX 기종을 다룬 분들에게 친숙한 내용입니다 :)


64비트 컴퓨터를 사용하는 현 시대에 8비트 컴퓨터를 논하다니 크레이가 어떻게 된 것은 아닌가 싶지만,
크레이에게는 최초로 접한 추억의 컴퓨터입니다 :)
크레이는 대우에서 나온 1983년형 IQ1000 오락실용 컴퓨터를 학습용으로 다뤄보았습니다.
당시 이 8비트 컴퓨터로 게임 만드는 방법을 찾아다니느라 서점을 쏘다녔지요.

16비트 컴퓨터가 나오기 전까지는 당시 MSX IQ1000, MSX2 IQ2000 등의 컴퓨터가
한국에서 인기 몰이를 했었는데요.
재미있는 것은 16비트 컴퓨터가 처음 나왔을 당시 모니터 화면은 흰색과 검은색만 표시하는 흑백인 반면, 
그 전의 이 8비트 컴퓨터는 알록 달록한 칼라 화면이었다는 점입니다. 16색상밖에 사용 못하는 제한이 있었고
그것도 고작 메모리 64kbyte(저장불가능한 공간 롬을 제외한 RAM만 치자면 32Kbye) 가 전부인 환경에서 말이지요. ( 요새는 8000 배에 해당하는 1 Gbyte 메모리로도 컴퓨터 작동이 안되지요 )

웹을 검색하던중 재미있는 사이트를 발견했는데요.
바로 MSX PC를 에뮬레이트하는 웹사이트입니다.

https://webmsx.org/

 

WebMSX - The online MSX emulator

Play MSX2+ games in your browser, phone or tablet!

webmsx.org

사이트에 진입하면 크레이에게는 아주 친숙한 MSX 8비트 컴퓨터 화면이 등장하는데요.

파란색 안쪽 영역을 클릭 후 명령어를 입력하여 코딩을 할 수 있습니다.
MSX-BASIC 이라는 언어로 말이지요.

만약 36 곱하기 45를 계산하려면 아래와 같이 타이핑하는 것이지요.
무조건 인터프리터 방식이라 컴파일 같은건 필요없습니다.

print 36 * 45

당시 하드 디스크나 플로피 디스크와 같은 저장 장치가 없었기 때문에 프로그램 코드를 카세트 테이프에 저장해야 하는 열악한 환경이었지요.
그래서 한줄짜리 명령어가 아닌 연속 코딩을 하기 위해서는 프로그래밍하는 방법이 매우 독특했었는데요.
바로 문번호를 이용하는 방법입니다.

만일 1부터 100까지의 합을 구하는 코드를 작성하려면,
아래와 같이 타이핑하는 것이지요.

10 for i=1 to 100
20 sum=sum+i
30 next
40 print sum

여기서 10, 20, 30, 40 등은 실행순서를 결정하는 문번호라고 하는데요.
1, 2, 3단위로 입력해도 되지만 중간에 누락된 코드를 넣기가 불편해서 보통 이렇게 코딩합니다.

이제 4줄까지 코딩이 완료되었는데요.
이 코드를 실행하려면 run 명령을 내려주면 됩니다.
그러면 결과가 등장하지요.

run

사실 이 코드에서는 SUM 이라는 변수를 초기화하는 부분이 빠졌는데요.
MSX-BASIC 은 프로그램 시작 전 변수를 모두 초기화해서 문제는 없습니다.
그래도 만일 초기화하는 코드를 넣으려면 아래와 같이 코딩을 해넣으면 되는데요.

5 sum=0

이렇게 작성된 코드는 list 라는 명령어를 입력하여 그 결과를 확인할 수 있습니다.

list

만일 빠뜨린 코드가 너무 많아 중간에 코드를 많이 넣으려면 어떻게 해야 할까요?
참고로 문번호는 소숫점은 지원되지 않습니다.
그럴 경우 renum 명령을 사용하면 문번호가 10단위로 재배열 되기 때문에 편리합니다.
아래는 renum 명령을 내린 후, 다시 list 명령어를 사용한 결과입니다.

renum
list

이제 이 프로그램 코드를 어딘가에 보관헤야 하는데요.
컴퓨터 전원이 꺼지면 코드가 사라지기 때문이지요.

바로 자기디스크(카세트 테이프)에 이 파일을 보관하면 되는데요.
사실 크레이가 다룬 컴퓨터는 오락실용이라서 단자가 없어 시도해본 적은 없습니다.

보관하는 명령어는 csave 인데요 아래와 같이 사용합니다.
보관할 때마다 테이프를 되감아야 하고 시간도 꽤 걸린다고 해 사실 자주 사용할 수가 없습니다.

csave "파일명", 전송속도(1 또는 2)

반대로 카세트 테이프에서 코드를 불러오려면 cload 명령어를 사용하는데요.
실제로 해본적은 없습니다.

cload "파일명"

8비트 컴퓨터 시절에는 이런 방식으로 프로그램을 코딩했는데요.
요새같이 코딩하기 편한 시절에 비하자면 '으악-!'이 아닐 수 없습니다.

이러한 코딩 방식은 16비트 컴퓨터 시절에도 이어져 GW-BASIC 이라는 언어에서도 그대로 개념을 계승을 했는데요.


8비트의 컴퓨터에서 MSX-BASIC은 게임 제작용밖에는 그 한계가 제한적이었던 반면,
16비트 컴퓨터에서 GW-BASIC은 메모리가 크기 때문에 업무용으로 그 영역을 확장할 수 있었습니다.
크레이의 첫 직장에서 사용한 프로그램이 바로 GW-BASIC 이거든요.

8비트 컴퓨터에 대해 궁금하신 분들에게 도움이 될 것 같아
크레이의 8비트 컴퓨터 시절에 대한 추억담을 공유합니다 :)


chatGPT 가 과연 이 8비트 시절의 프로그램 코딩도 해낼까요?

[크레이]
msx-basic 을 이용해 버블소트 프로그램 코드를 만들어 줘. 핧수 있지?
I want you to make a code for bubble sort algorithm with msx-basic. could you?

하하하...

물론이죠! 여기 MSX-BASIC 으로 된 버블소트 알고리즘 샘플 코드가 있습니다.
Certainly! Here's an example code for implementing the bubble sort algorithm in MSX-BASIC:

10 REM Bubble sort implementation in MSX-BASIC
20 DIM arr(10)
30 FOR i = 1 TO 10
40   INPUT "Enter element " + STR$(i) + ": ", arr(i)
50 NEXT i
60 FOR i = 1 TO 9
70   FOR j = 1 TO 10 - i
80     IF arr(j) > arr(j + 1) THEN
90       temp = arr(j)
100      arr(j) = arr(j + 1)
110      arr(j + 1) = temp
120    END IF
130  NEXT j
140 NEXT i
150 PRINT "Sorted array:"
160 FOR i = 1 TO 10
170   PRINT arr(i)
180 NEXT i

흥미롭거나 도움이 되셨다면?
공감과 구독! 부탁드립니다!
크레이의 블로그 활동에 크나큰 힘이 됩니다!