반응형

8비트 msx 컴퓨터의 에뮬레이터의 메뉴에 변경이 있다고 해서 이번에 새로 다운받아서 실행해 봤습니다. 2.0 나온지는 좀 되었지만 이 소식을 저는 이제야 알았네요. ^^;

 

>

 

예전에는 catapult 라는 프론트엔드 프로그램을 이용해서 openmsx 를 많이 실행했었습니다. 물론 그때도 catapult 를 이용하지 않고도 (다소 빈약한)메뉴를 이용해 어느정도 사용할수는 있었지만 openmsx 의 기능을 모두 사용하기 위해서는 catapult 를 사용해야 했습니다.

 

 

2.0에서는 위 스크린샷과 같이 풀다운 메뉴를 이용해서 손쉽게 프로그램을 이용할 수 있도록 변경되었습니다.

 

catapult 와 openmsx 두개의 창을 왔다 갔다 할 필요가 없어져서 이 때문에 openmsx 를 이용하지 않았던 분들에겐 희소식일것 같습니다.

 

>

 

 

메뉴에서 퀵세이브라던가 상태저장, 불러오기가 가능해서 편하게 사용하실 수 있습니다. 리플레이 저장 불러오기 기능도 있네요.(안써봤지만....)

 

>

 

openmsx 홈페이지에 가면 설치용파일과 일반 압축파일 2가지가 있는데 맘에드는 걸로 사용하시면 됩니다. 그리고 2.0 은 32비트 os 용 실행파일은 제공하지 않습니다. 32비트 os 의 경우는 구버전을 사용하셔야 합니다.

 

openmsx 홈페이지에 리눅스용 바이너리 파일도 있기는 한데....받아서 해 볼까 하다가......

제가 쓰는 우분투의 저장소를 보니 우분투 저장소에는 아직 19.1 버전밖에 없네요. flatpak 으론 설치가 가능한데 flatpak 은 보안상 홈디렉토리만 엑세스 가능하게 하는게 국룰이라....다른 드라이브의 롬파일을 읽을 수 없어서 사용하기는 좀 불편할 수 있습니다.(해결방법은 있긴 합니다만....)

 

제 경우는 19.1 구버전을 써도 딱히 큰 불편함은 없어서....(귀찮음의 승리~~~!!!) 언젠가 우분투 저장소에 2.0 올라오겠죠. ㅎㅎ

 

 

반응형


휴일날 msx-basic 을 가지고 좀 놀아 보았는데요. 프로그램 실행시 중간에 중단하는것이 안되더군요.

msx-basic 의 중단키는 ctrl+stop 입니다.

openmsx 에서는 ctrl 키는 윈도우에서의 키와 같고 stop 키는 f8 펑션키로 할당이 되어 있는데 이상하게 제 컴퓨터에서는 ctrl + stop( ctrl + f8) 의 키조합은 작동하지 않았습니다. 이 문제에 대해 국내에서는 답을 찾을 수가 없었고요. 해외포럼에서 해결방법을 발견했는데 키보드의 다른키로 할당해 주는 방법을 사용했습니다.

https://www.msx.org/forum/msx-talk/openmsx/openmsx-question-how-bind-keys

위 링크에 키보드의 다른키로 바인딩 해주는 방법이 있습니다. 

bind Pageup "keymatrixdown 7 16"
bind Pageup,release "keymatrixup 7 16"
bind Pageup+CTRL "keymatrixdown 6 2 ; keymatrixdown 7 16"
bind Pageup+CTRL,release "keymatrixup 6 2 ; keymatrixup 7 16"

위 방법은 pageup 키를 stop 키로 바꾸고 ctrl+pageup 키를 누르면 ctrl+stop 이 누른것 처럼 작동하도록 키를 재정의 해 줍니다.

keymatrix 에 사용된 숫자들은 http://map.grauw.nl/articles/keymatrix.php 를 참고 하시기 바라고요. 2진수니 잘 계산해 보면 답이 나옵니다. ^^;

openmsx 실행후 f10 키를 눌러 콘솔을 열고, 콘솔에서 위와 같이 입력해 주면 값은 저장되어 계속 적용됩니다.

값이 저장되는 곳은 제 경우 리눅스에서의 위치를 알려드리면...홈 디렉토리에....

".openMSX/share/settings.xml" 에 기록됩니다.

제 경우 파일의 일부를 발췌해서 보여드리면.....

  <bindings>
    <bind key="keyb PAGEUP,RELEASE">keymatrixup 7 16</bind>
    <bind key="keyb PAGEUP+CTRL,RELEASE">keymatrixup 6 2; keymatrixup 7 16</bind>
    <bind key="keyb PAGEUP">keymatrixdown 7 16</bind>
    <bind key="keyb PAGEUP+CTRL">keymatrixdown 6 2; keymatrixdown 7 16</bind>
  </bindings>

xml 파일에 위와 같이 bind 내용이 추가 되어 있습니다. 

이것 해결하는데 조금 시간이 걸렸습니다. 인터넷도 오래 썼는데 검색방법이 잘못된건지.....ㅡㅡ; 그래도 검색어 잘 쓰니 역시 구글신이 잘 찾아주시는군요. ^^;


반응형


openmsx 에서의 플로피 디스크를 사용하는 방법에 대해 간단히 적어 보고자 합니다. 제가 사용하는 것은 우분투 리눅스이지만 윈도우에서도 큰 차이는 없을 것으로 봅니다.

openmsx 에서는 콘솔이 있으며 F10 키를 눌러서 콘솔을 엽니다. 여기서 플로피 디스크를 관리할 수 있습니다.

F10 을 누르면 위 스샷과 같이 콘솔이 나타납니다. 위와 깉이 입력하면 플로피 디스크 이미지가 생성됩니다. 720 은 디스크 용량으로 예전 3.5인치 플로피 디스크 양면의 용량입니다. 물론 생성하는 디렉토리의 위치는 다른 위치여도 상관없습니다.


만들어진 디스크를 에뮬레이터에서 사용할 수 있도록 연결합니다. openmsx 의 gui 인 catapult 의 gui 에서도 가능하지만 위와 같이 콘솔에서의 입력으로도 가능합니다.


import 기능입니다. 만들어진 가상 플로피 디스크에 외부의 파일을 추가하는 것 입니다.

위의 스크린샷은 제 컴에서 hello.bas 를 텍스트 에디터로 만든 이후에 그 파일을 가상 플로피 디스크로 넣는 작업입니다.

주의해야 할 점은....리눅스에서만 해당되는 이야기인데요. 리눅스에서는 자신의 홈 디렉토리를 "~/" 로 표시 할 수 있습니다. 즉 실제 디렉토리는 "/home/xxx/" 이지만 이걸 간단히 "~/"로 대체할 수 있는데 위의 스크린샷을 보면 에러가 발생하고 있습니다.

플로피 디스크생성 등에는 "~/" 를 사용해도 문제가 없었으나 가상플로피 디스크로 집어넣을 파일을 선택하는 부분은 실제 디렉토리 경로를 모두 입력해야 가능했습니다. 주의가 필요합니다.


디스크 export 입니다. 스크린샷에 삽질의 흔적이 보입니다....^^;

import 와 반대로 가상플로피 디스크의 파일을 외부로 내보내는 기능입니다.

위 스크린샷을 보시면 사용법을 아실 수 있습니다.


디스크 베이직에서 베이직 프로그램을 작성하고 저장할때....

save "filename.bas" 로 저장이 가능합니다. 다만 이 경우는 자체적인 tokenizer 저장방법을 쓴다고 합니다. 이 파일을 export 해 보면 일반 텍스트 파일과 전혀 달라서 외부 텍스트 에디터로 수정할 수 없습니다.

저장시에 save "filename.bas",a  로 ",a" 를 붙여주면 ascii 방식으로 저장 되기 때문에 이 경우 파일을 외부로 export 해서 에디터로 확인, 수정하기 좋습니다. 참고 하시길 바랍니다.


쉬는 동안 msx 를 조금 사용해 보았습니다. 뭐....나름 재미 있었습니다.

msx-basic  으로 조금 놀아 보았는데, 사실 좀 답답하기도 했습니다. 함수도 만들수 없고....gosub, return 으로 조금 비슷하게 만들순 있습니다만....while 문도 없는것 같았는데 좀 더 확인이 필요할것 같네요.

이리저리 goto 문을 사용해 이리 갔다가 저리 갔다가 하니 정신도 없고요. ^^; 하지만 재미 있었습니다. 부족하면 또 부족한대로 가지고 노는 재미도 있지요. 그리고 인터프리터라 run 하면 바로 실행되는 재미도 있고요. 

애플 베이직에는 없는 함수들도 있었고....그런데 생각보다 더 느리더군요. 예....8비트에 64k 램 쓰던 시절의 컴퓨터니 느릴건 예상했지만 예상보다도 훨 느렸습니다.

예전에 MSX 는 사용해 본적이 거의 없어서 이리저리 검색해보면서 하나하나 익혀 가고 있습니다. 하지만 역시 오래되서 국내 자료는 별로 없는듯 하네요. 천천히 또 자료 수집이나 해 봐야 겠습니다. ^^;


+ Recent posts