반응형


휴일날 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