2020년 10월 10일 토요일

SLT-Turbo 제작 #1 - 슬롯터보

[서론]


터보알이 등장한지 이제 30년이 된 것 같네요.

혹시 '이게 진짜 빠른 MSX가 맞나!?' 의심이 들었던 분 있으세요?

MSX를 주로 게이밍 용도로 쓰신다면, 터보알의 용도는 '환영도시 게임기'에 그치는게 맞겠죠? ㅎ.ㅎ


터보알은 고속의 R800 CPU와 내장기기, 그리고 3.58MHz 버스 타이밍이 공존하는 오묘한 MSX입니다.

제가 터보알을 처음 접한 건, ST/GT 실기가 아니라 NLMSX 에뮬레이터였는데요.

그 때는 빠른 MSX의 느낌보다는 '환영도시 게임기'에 가까웠습니다.

딱히 활용할 곳이 없었으니까요ㅋ


그렇게 몇해가 지나고 실제 GT를 구하게 되었습니다.

BASIC과 DOS2을 구동해보니...어? 이게 예상과는 좀 다르네요.

생각보다 너무 빠르더라구요.

이 때부터 MSX 실기를 계속(?) 써야겠다는 생각이 들었고, 이걸 어떻게 해야 쓸모있는 환경이 될까?

고민을 해봤습니다. 사실 정답은 정해져있습니다ㅋ


터보알의 외부 슬롯은 3.58MHz 타이밍이라서, 내장 메모리에서 프로그램이 동작해야만 고속으로 돌아갑니다.

제 개발 환경을 DOS2 기반으로 만들고, 메모리매퍼를 적극적으로 쓸 수 있는 툴을 만들기 시작했습니다.

HI-TECH C에 전용 툴을 섞는 식으로 만들었지요.


그렇게 차근차근 진행되어 처음 나온 프로그램이 HV 한글뷰어였습니다.

메모리 사용량과 인터레이스 스크린7을 보면 딱 느낌이 들죠? "이거 터보알 아니면 못 쓰겠네!"

그리고는 M 파일 매니저가 등장합니다. (본격적으로 터보알을 갈구는 프로그램이...)

MMC/SD V3,V4처럼 터보알 구조에서 빠르게 동작할 수 있는 기기도 만들게 되었구요.

아마 벤치마킹해보셨으면, 이게 3.58MHz 버스가 맞는지 의심이 갈 정도일겁니다ㅋ

.

.

.

그렇게 10년이 흘러 여기까지 왔습니다.

한때는 MSX 본체 메모리를 512KB로 늘려야한다고 얘기하면, DOL-A-I 취급당하던 시절도 있었는데...

이제는 많이 변했죠~ㅋ


하지만 여전히 문제는 있습니다... '고속 MSX를 어디에 써야하나?' 입니다.

활용할 방법이 없으면 고속 MSX도 필요가 없고, 고속 MSX 사용자가 적으니 활용할 H/W, S/W를 만들 이유도 없죠.

근데 '닭이 먼저냐 알이 먼저냐'라는 개발자의 고통을 20년동안 "떠들기"만 해서는 바뀌는게 아무것도 없습니다.

뭔가를 직접 만들고 보편화시키는 것 말고는 방법이 없...ㅋ


그.래.서.

이제 때가 된 것 같네요.

'고속 MSX를 활용할 수 있는 환경을 만들고 같이 활용해보자'로 가는겁니다요~ ㅎ.ㅎ


서론을 좀 주절주절 썼지만...

제가 나름 생각하는 '앞으로 가는 MSX 환경'에 공감하시는데 도움이 되고자 길게 적어봤습니다ㅋㅋ



[본론]


고속 MSX를 활용하려면? 뭐, 고속의 본체가 있어야겠죠? ㅎ.ㅎ;

ST, GT가 널려있다면 고민할 필요가 없는데 말이죠.

그래서 SLT-Turbo라는게 나오게되었습니다.


이름에서 대충 짐작하셨겠지만, 요놈은 SLT-X에 CPU 가속기가 합체된 기기입니다.

일반 MSX를 빠르게 구동하기 위한 가장 간단한 방법은 본체의 CPU를 고속으로 바꾸는건데요.

빨라진 만큼 외부 I/O에 WAIT를 넣는 식으로, 유럽에서는 MSX2 용 Z80 7MHz킷으로 쓰인 것으로 알고 있습니다.

그 외 스페인의 레오나르도 아자씨가 만든 Z380 카트리지도 있는데...

이건 I/O없는 단순한 코드를 빠르게 구동하는 것만 되는 듯 합니다.

저도 실사용하는걸 본적이 없어요. (사용자가 별로 없는 듯요)


SLT-Turbo는 MSX 표준 주변기기입니다.

기본슬롯에 꽂는 확장슬롯과 유사하게 생겼구요. 3.58MHz로 동작하는 일반 버스 타이밍으로 돌아갑니다.

BIOS를 포함 모든 코드는 SLT-Turbo의 터보 보드에서 구동이 됩니다.

본체에 내장된 키보드, VDP, PSG 등은 본체의 CPU가 처리를 대신하게 됩니다.


사실 MSX는 슬롯 구조를 쓰면서 얻는 장점이 매우 큽니다만...

Z80 상위 CPU의 Cache, MMU, DMA를 쓸 수 없는 단점을 갖고 있어요. (단점이라고 하긴 좀 그렇지만요ㅋ)

슬롯 외부의 CPU가 메인으로 구동하려면, 본체 내장 I/O는 본체의 CPU로 처리할 수 밖에 없는 구조입니다.


.

.

.

아마 이쯤에서 궁금한 부분이 하나 있으실 것 같은데...

'기존 MSX의 주변기기가 아닌 본체를 만드는게 더 좋지 않나요?'

사실 파라동 오프모임에서 단골 메뉴로 등장하는 얘기죠.


MSX2+, turboR 기종들이 나온지 30년 넘었는데, 이걸 제대로 활용하는 S/W, H/W도 잘 없어요.

근데 새로운 MSX가 나온다고해서 뭔가 달라질까 싶습니다.

혹시 뭔가 새로운걸 해보고 싶다면...

openMSX 소스에 가상의 주변기기를 추가하고 프로그램도 만들어서 돌려보시면 되겠습니다.


저의 희망사항은

'여러분들의 창고에 처박아둔 실기들이 책상위로 올라와서 전기를 먹는 모습'

정도로 많이(?) 소박합니다 ㅎ.ㅎ



프로젝트 소개는 요렇게 마무리합니다.

SLT-Turbo는 SLT-X에 터보가 추가된거라고 설명드렸는데요. 아래 PCB 사진을 보시면 납득이 되실겁니다요~

보드는 2층으로 합체합니다. PAC-V 구조를 생각하시면 비슷해요.





합체해서 케이스에 넣으면 이런모양입니다. 케이스는 오버리치 카트리지 1개가 필요합니다ㅋㅋ





그럼, 다음편에서 보아요~ ㅎ.ㅎ


궁금한 점 있으시면 댓글로 ㄱㄱㄱ


2020년 8월 22일 토요일

paraMSX-R에서 산요 PHC-70FD 데모 디스크 구동

오랜만의 paraMSX-R 사용기입니다~


FDD가 내장된 MSX 본체를 구매하면, 대게 MSX-DOS 및 각종 유틸리티, 데모 등이 포함된 디스켓이 들어있습니다.

번들 프로그램 중에는 해당 기종에서만 실행이 가능한 것들도 있는데요.

Sanyo PHC-70FD 데모 디스크의 경우가 그렇습니다.


아래는 저의 GT에서 실행한 모습입니다.

PHC-70FD의 데모 소프트라고 나오네요. (일알못이라 나머지는 pass)




그럼, paraMSX-R 카트리지의 PHC-70FD 머신에뮬로 구동하면 어떨까요?

2DD 디스켓으로 느린 로딩을 감상해도 되겠지만, 귀찮으니 그냥 V4의 DSK 에뮬을 씁시다~ ㅎ.ㅎ


데모디스크는 자료실에 DSK 이미지파일이 있으니, 그걸 그대로 쓰면 되겠네요.

파일명은 PHC70FD.DSK입니다.



먼저 약간의 준비과정이 필요한데요.

예전 2DD로 구동되는 대부분의 프로그램들이 드라이브 A:로 부팅해서 자동실행되는 구조로 되어있습니다.

FDD가 비싼시절이었으니, 드라이브가 여러개인 환경을 고려할 필요가 없긴 했네요...


그럼 데모 디스크는 V4의 DSK에뮬로 구동하면 되는데,

paraMSX-R의 런처 프로그램(PARAMSX.COM)은 어떻게 실행하면 될까요?


MMC/SD는 여러장의 DSK 이미지를 에뮬할 수 있습니다.

그러니까 PARAMSX.COM를 실행하기 위한 DSK이미지와 데모 디스크 용 DSK를 함께 로딩하면 되겠네요.

DSK파일이 두개뿐이니 둘 중 하나를 USR 디스크(유저디스크)로 설정하거나,

그냥 DSK파일을 합쳐서 하나로 만들면 되겠습니다.


이번에는 DSK파일을 하나로 합쳐서 실행했어요.

윈도의 프롬프트에서 아래처럼 COPY 명령을 쓰면 파일을 하나로 만들 수 있습니다.

COPY /B PARAMSXR.DSK + PHC70FD.DSK PARA70FD.DSK


합쳐진 PARA70FD.DSK를 V4로 실행하면, paraMSX-R 런처(PARAMSX.COM)가 담긴 1번 디스크로 부팅되겠죠?

그럼 런처를 실행 후 V4의 DSK를 2번 디스크(PHC70FD 데모)로 변경하면 되겠습니다.


아래처럼 산요 기종으로 설정된 상태에서 잘 실행되네요!





영상으로도 한번 찍어보았어요.

데모 디스크의 1번 메뉴(자연화 사진 스크롤)과 3번 메뉴(BASIC 컴파일러 데모)의 동작모습입니다.





즐거운 주말되셔요~ ㅎ.ㅎ


2020년 7월 31일 금요일

T-Wave 제작 #8 - 라인아웃 어댑터

[ 서론 ]


T-Wave의 사운드는 헤드폰 단자로 출력됩니다.

근데 갑자기 왜 라인아웃 얘기냐구요? ㅎ.ㅎ


오디오 기기들의 아날로그 출력단자는 라인아웃, 헤드폰아웃 두 종류가 많이 쓰이는데요.

임피던스 차이로 인해 라인아웃은 구동 전류가 낮고, 헤드폰아웃은 높은 전류가 가능합니다.

헤드폰을 라인아웃에 꽂으면 소리가 잘 나오지않거나 작게 들리는게 이때문인데요.


근데, 헤드폰 출력단자를 오디오믹서의 라인인에 연결하면 어떻게 될까요?

특별한 문제는 없을거라 생각했거든요.

.

.

.

며칠전 MX-10 오디오믹서에 T-Wave 출력을 연결하면,

소리가 점점 작아지다가 결국 들리지않게 되는 현상이 나타난다고 알려주시더라구요.


맛탱이님께서 MX-10을 빌려주신다길래 일단 받아서 테스트를 해봤습니다.

... 진짜 소리가 줄어들더니, 뿅~하고 안들리게 되네요. ㅎ.ㅎ;;



[ 본론 ]


왜 이런 현상이 생기는지 봐야겠죠?

일단 위키에서 그림 한장을 퍼왔습니다.

아래는 오디오 라인 레벨을 표시한 그림입니다.





기준이 되는 dBV는 1Vrms입니다.

1 Vrms = 0 dBV, 이게 peak to peak 로는 2.828 Vpp가 되는데요.


일반적인 상용 오디오는 라인레벨이 -10 dBV = 0.894 Vpp

프로(?) 오디오는 +4 dBV = 3.472 Vpp라고 하네요.


T-Wave의 헤드폰 출력은 2.64 Vpp입니다.

아래는 1KHz WAV 파일을 MMC/SD로 재생했을 때의 모습입니다.




일반적인 오디오 믹서의 라인인에 그대로 연결해도 별 문제는 없는데, 왜 MX-10은 이상하게 동작할까요?

이유는 하나뿐이겠죠? -10 dBV보다 출력이 높아서?ㅋ

검색을 해보니... 일반기기의 라인아웃 레벨이 2 Vpp정도라고 하네요.

그러니까 일반적인 헤드폰 출력에 비하면 조금 낮습니다.


참고로 휴대폰 출력의 경우는,

예전 갤럭시들이 2.3 Vpp 정도이구요. 아이폰은 2.8 Vpp정도였습니다.

당시 기억으로는 갤럭시 헤드폰 출력이 너무 작은거 아니냐고 원성이 자자했던...ㅋ

요즘 폰들은 얼마인지 찾아보진 않았는데, 아마 좀 더 높을꺼에요.


그래서 MX-10의 라인인에 출력을 낮춰서 넣어보았습니다.

RCA 단자 4개를 붙여서 이렇게 어댑터를 만들었어요.





510옴 저항으로 출력이 반으로 낮춰 1.32 Vpp가 되었네요~





MX-10의 채널1,2 입력에 연결하고 출력을 최대로 올려서 테스트해보니,

... 소리가 잘 나오네요~ ㅎ.ㅎ

2 Vpp 넘어가면 문제가 되는걸까 싶은데... 출력을 이리저리 바꾸면서 테스트해보진 않았습니다.

더 궁금하신분 계시면 가변저항을 달아서 테스트해보셔요 (응?)



[결론]


결론은 'MX-10은 라인인 입력레벨이 너무 높으면 문제가 발생함'이 되겠습니다.


테스트는 했으니, MX-10 문제현상을 알려주신 분께 테스트 용 어댑터를 보내드려야겠죠? ㅎ.ㅎ

요렇게 만들었습니다.


재료: RCA 커넥터 4개, 510옴 저항 2개



1. 커넥터를 짧게 자르고, GND핀을 서로 연결합니다.





2. 저항을 연결 후, 커넥터의 플라스틱을 녹여서 서로 붙입니다. (인두로 지지직~~)





3. 검정색 종이테입으로 마무~으리!





4. 신호선에 저항이 연결된 것 뿐이니, 방향성은 없습니다.

입출력 케이블이 서로 마주보도록 연결하면 OK입니다요~






혹시 MX-10 외 다른 오디오 믹서/앰프에서 오동작하는 경우가 생기면...

간단하게 DIY해서 쓰시면 되겠습니다.

.

.

.

근데 옥션에 3.5파이 볼륨조절 케이블이 2450원이네요 -_-;

그냥 사서 쓰는게 낫겠습니다ㅋㅋ



즐거운 주말되세요~ ㅎ.ㅎ


PS. MX-10 매뉴얼을 보니, 라인입력 단자의 레벨은 -10dBm으로 나와있네요 ㅎ.ㅎ