레이블이 _RS-232C인 게시물을 표시합니다. 모든 게시물 표시
레이블이 _RS-232C인 게시물을 표시합니다. 모든 게시물 표시

2023년 2월 8일 수요일

윈도 CMD에 MSX를 연결해봤습니다~

갑자기 예전 프로그램이 생각나서 다시 빌드를 해보았어요.

Simple Terminal이라고 이름을 대충 붙였던 프로그램인데요 ㅎ.ㅎ


MSX쪽 프로그램은 바뀐 부분은 없구요.

윈도 PC쪽에서는, CMD를 띄워놓고 stdio(pipe 사용)를 UART 통신으로 연결했습니다.

MSX를 PC의 키보드로 쓰는 느낌? 정도로 보시면 되겠습니다.




편안한 밤 되셔요~ ㅎ.ㅎ/


2023년 2월 1일 수요일

오랜만의 PC <-> MSX 파일전송

흡혈양파님의 글을 보다가 갑자기 생각나서, 서랍구석에 있던 카트리지를 하나 꺼냈습니다.

자작 RS-232C 카트리지입니다. 마지막으로 구동해본게 언제인지 기억이 잘 안나네욤ㅋ


SLT-X V2의 맨앞 자리에 꽂고 사진을 찰칵!





파일 전송이나 한번 해보아요~


윈도에서 파일 Tx를 실행!




MSX에서 파일 Rx를 실행!





잘 돌아가는군욤. SLT-X에 맨 뒷자리에 걍 꽂아둘까요?

풀파티가 된 SLT-X V2!! 가끔 MMC/SD BIOS 업뎃할 때나 써먹는걸로...ㅎ.ㅎ





참고로 자작 RS-232C 카트리지의 글은 아래 링크에서 보시면 되겠네요. 2010년 글입니다 ㅎ.ㅎ

http://sharksym.egloos.com/4680576


2011년 7월 5일 화요일

RS-232C를 이용한 파일 전송 (PC -> MSX)

MSX용 프로그램을 개발할때는 저는 주로 윈도우에서 작업을 합니다.

CP/M 에뮬을 쓰고 있습지용~

 

최종 결과물을 실제 MSX(제 터보알~)에서 테스트 하려면 아래의 시퀀스를 따르게 되는데요.

 

1. MSX에서 XCHGMMC.COM으로 SD카드 교체 상태 진입

2. MMC/SD 드라이브에서 노트북으로 해당 SD카드를 옮김

3. 원하는 파일들을 SD카드로 복사

4. SD카드를 MSX의 MMC/SD 드라이브로 옮김

 

반복 작업을 하다보면 쬐금 귀찮죠.

다행히 터보알 바로 옆에 노트북을 놓고 쓰느라, SD카드 옮길때 별로 시간이 안걸리긴 합니다...ㅎ

 

요걸 MSX와 노트북의 시리얼 포트를 이용해서, 파일을 전송하도록 해보았는데요.

 

아래 사진을 보시면 되겠습니다




윈도에서 MSX_FX를 실행시키면, MSX가 RS-232C로 연결되는 걸 기다리게 되는데요.

MSX에서는 아래처럼 FXR 프로그램을 실행하면,

파일들을 전송받아 현재 디렉토리에 생성해줍니다.



 

이제 SD카드 바꿔끼는 불편함을 좀 줄일 수 있겠습니다요..ㅋ

 

물론 115200BPS로 전송하면 거의 FDD 속도가 나오지만,

배치 파일로 한방에 전송이 되니, 실행해놓고 딴짓하고 있으면 되겠습니다. ㅎ.ㅎ

2011년 6월 23일 목요일

RS-232C 카트리지 - 오실레이터 업데이트

작년에 CPLD인 EPM3064로 만들었던 232C 카트리지가 있었는데요,

만들다 보니, 로직셀의 부족으로 원래 계획했던 사양은 되지 못했었지용...


클럭 소스를 MSX의 3.58MHz 출력을 사용하느라,

31 분주해서 state machine 만드는데 로직의 낭비가 좀 있었습니다.

계산해보면 3579545 / 31 = 115469Hz 가 나옵니다. 115200에서 약간의 오차도 있었고요.


좀 늦었지만 ㅡ.ㅡ 마무리를 해야될 것 같아서,

쇼핑몰에서 1.8432MHz 오실레이터를 질렀습니다.

1450원짜리 가격이 ㄷㄷㄷ

EPM3064가 4200원인데, 걍 CPLD 하나 더 쓰고 기능을 늘리는게 좋았으려나요~ ㅋ


이거 하나만 택배로 받으려면 민망하니깐 하나를 더 질렀습니다.


ALTERA JTAG 다운로더인 USB-BLASTER입니다.

29,000원의 위용~ 두둥~~




그 동안, 노트북 윈7에서 LPT포트용 BYTE-BLASTER 쓰느라 무지 귀찮았었는데, USB로 바꾸니 좋군요.


참고로 LPT 포트없는 윈7깔린 노트북에서 BYTE-BLASTER 쓰려면,

PCMCIA용 LPT 어댑터랑 VMware에 윈2000에 Quartus 깔아서 쓰는 방법뿐이었습니다.


이제 VMware 없어도 되니 너무 좋네요. ㅋ


음... 이야기가 옆으로 좀 샜습니다만,

클럭을 외부 오실레이터로 바꾸니, CPLD에서 사용되는 로직이 좀 줄어드네요.

16분주 하면 딱 115200Hz가 나옵니다.


사실 내부적으로는 UART의 4배수 클럭을 쓰고 있어서, 실제로는 4분주만 해서 사용합니다.

57600bps용으로는 8분주하고요.


어쨋거나 로직 여유 생긴 걸로,

UART TX, RX LED 두개 컨트롤과 RX FULL 됐을 때 INT(인터럽트) 넣도록 추가했습니다.

이제 CPLD의 남은 I/O 핀이 0개가 됐습니다. ㅎ.ㅎ


아래 사진에서 추가된 오실레이터를 볼수 있습니다.

LED랑 인터럽트 라인도 연결했고요.





아래는 최종 HW 스펙입니다.


- RS-232C TX, RX, GND 3핀 사용

- TX, RX 동작 표시 LED

- Start 1BIT, Data 8BIT, No Parity, Stop 1BIT 전용

- 115200 및 57600 BPS 지원

- RX Full 시 interrupt 지원


아래는 사용된 I/O 포트입니다.


- 30H (Control 레지스터)

  BIT7 = RX Full (Read only)

  BIT6 = TX Full (Read only)

  BIT5,4,3,2 = 사용 안함

  BIT1 = RX Full 인터럽트 1: ON, 0: OFF (R/W)

  BIT0 = Baud rate 1: 57600, 0: 115200 (R/W)


- 31H (8BIT TX, RX 버퍼 레지스터)

  BIT7~0 = TX data (Write시), RX data (Read 시)



일단 RX 시 인터럽트가 되니까, 터미널 프로그램 코딩에 여유가 생겨서 좋네요.

코드 정리해서 돌려보니 안정적이네요.

기존엔 status 폴링하느라 코드가 좀 난잡하기도 하고,

 가끔 화면 스크롤 하다 보면 1바이트 깨지는 경우도 나왔었지요.


내친김에 기능하나 더 넣어봤습니다.


MSX-DOS에서는 AUX 디바이스를 지원하는데요.

예전엔 이걸 어떻게 구현하는지 몰라서 보류 중이었는데...

그냥 AUX IN/OUT 훅에 UART 1바이트 전송 루틴 추가하면 일단 동작이 되더군요. *_*


아래는 간단하게 DOS2에서 AUX로 출력 및 콘솔 리다이렉션을 해본 모습입니다.




아래는 윈도 쪽의 터미널에 출력된 모습입니다.




완전한건 아니지만, 이정도만으로도 꽤 쓸만한거 같네용.

그럼, 또 여유가 생기면 노닥거리는 걸로 하고, 여기서 마무리~ 합니다. ㅎ.ㅎ;


2011년 6월 5일 일요일

간이 터미널 프로그램으로 리눅스 우분투 로그인

작년에 간단한 RS232C 카트리지를 만들었는데... 아마 기억하시는 분 있으시죠? ㅎ.ㅎ;

그 때, 제 노트북(OS는 윈도) VMware에 깔린 리눅스에, 시리얼포트로 로그인 해보려다 실패했었지요.

VMware에서 시리얼 포트 I/O가 충돌하면서 포트가 끊어지는 현상이었는데요.


오늘 다시 테스트를 해봤습니다.

제 노트북엔 시리얼 포트가 없어서 USB to 232C 어댑터를 쓰고 있습니다.

VMware에서는 이 포트의 리소스를 공유해서 시리얼 포트로 에뮬레이션이 가능한데요.

이러면, VMware 내의 리눅스에서는 제대로 동작이 안되었습니다.

참고로 VMware player 3.1.4 버전을 쓰고 있는데요, 암튼 정확한 원인은 모르겠지만... 아무리해도 안되더군요. ㅋ


근데 시리얼 포트 에뮬을 끄고, 대신 USB 에뮬쪽을 켜면 이게 리눅스 쪽에서 정상적으로 쓸수가 있었습니다. ㅎ.ㅎ;

해당 어댑터는 우분투 11.04에서 ttyUSB0 로 자동 인식 되네요.


암튼 문제없이 연결이 되서, 제 터보알로 로그인을 해봤습니다.

아래 인증샷 나갑니다.




ls 실행했을때, 디렉토리 앞에 이상한 글자가 마구 찍히는데요.

이건 MSX쪽 터미널 프로그램이 ANSI 컬러코드를 처리 못해서 그런거니 이해해주세요. ㅎ.ㅎㅋ

원래는 아래 터미널처럼 나와야하는 것이죵~ ㅋ




PS. 2011.06.05

눈에 거슬리는 터미널 컬러코드를 무시하도록 해봤습니다. 아래처럼 나오는군요.

나중에 시간나면 컬러 처리 가능한 터미널을 하나 만들어봐야겠군요. 스크린7을 써야겠죠. 아마도...



2010년 3월 21일 일요일

paraMSX_Linux & RS-232C - 키보드 사운드

지난번 보여드린 TV 내장의 리눅스용으로 포팅된 paraMSX 활용을 위한,

터보알의 키보드 및 사운드(PSG)를 연결해보았습니다.

 

에뮬레이터와 터보알 실기 간의 연결은 RS-232C 카트리지를 썼습니다.

속도는 115200BPS 상태이고요.

 

에뮬레이터에서 PSG Port 출력은 터보알에서 시리얼로 받아 실제 PSG을 구동하고,

반대로 터보알의 키보드 포트 입력은 시리얼로 전달해서 에뮬레이터가 동작하는 형태입니다.

 

결국 키보드와 PSG 사운드 IO만 서로간의 전송이 되고,

나머지 VDP, CPU등 대부분 기능은 에뮬레이터에서 구현됩니다.

 

아래 동작하는 영상을 한번 보세요.

사운드랑 키보드 IO를 넣으니까 에뮬 구동 속도가 좀 떨어지는군요.

 

사운드를 안쓴다면 에뮬의 CPU클럭을 높여서 고속 MSX 에뮬하는 것도 재밌을것 같네요.




2010년 3월 1일 월요일

RS-232C 용 LPT 드라이버 제작

삼일절 기념으로 약간의 코딩이 들어갔습니다.

두 아들은 자고있습니다요. ㅎ.ㅎ

 

다 아시겠지만, MSX에는 프린터 포트가 준비되어있고,

관련된 루틴이 메인 BIOS에 들어가 있습니다.

 

이번엔 LPT 출력 훅을 고쳐서 프린터 대신 RS-232C TX를 사용하도록 해봤습니다.

그러니까, 도스에서 COPY PRN 이라던가 베이직에서 LPRINT 류의 명령을 시리얼로 출력하는 것이지요.

 

아래는 동작되는 모습을 찍은 것입니다.

구경하세용~

 

 

UARTLPT.COM 라는 간단한 드라이버를 만들었습니다.

물론 제가 만든 RS-232C 카트리지만 지원하고요.

Baud Rate는 선택가능합니다.

 

DOS에서 TYPE, ECHO 명령으로 PRN 으로 출력해봤습니다.




이번엔 BASIC 모드에서 LFILES, LLIST, LPRINT 명령을 사용해본 모습입니다.




아래는 윈도에서 시리얼 터미널에 출력된 모습입니다.




2010년 2월 21일 일요일

RS-232C 카트리지 만들기

즐거운(?) 주말을 맞아 작업중이던 RS-232C 카트리지를 완성했습니다.

 

속도는 115200BPS와 57600BPS 두가지만 지원합니다. ㅋ

포트는 한개밖에 없고요.

프로토콜도 한개만 지원합니다.

(Start 1Bit, Data 8Bit, No parity, Stop 1Bit)

 

아직 MSX 표준 232C BIOS는 미완입니다만, 차후 시간나면 만들어볼 예정입니다.

사실 I/O가 MSX 표준 232C랑 달라서 크게 의미는 없겠지만,

DOS에서 AUX 정도만 쓸수 있어도 괜찮지않을까 생각해봅니다용...

 

아래는 만들면서 찍어둔 사진인데 구경하세요.

마땅한 PCB를 구하기 힘들어서, 멀쩡한(?) 게임팩 하나 부셨습니다. 으흐..ㅎ

 

ALTERA CPLD인 EPM3064 한개와 232C 라인 드라이버 IC 하나가 사용되었습니다.

팩안에 잘 구겨넣기 위해 이리저리 궁리를 해봤는데, 결과는 아래를 보시면 됩니다용~~~


 

보드의 우측 상단부위를 잘라내고, 추가될 보드와 연결하기 위해 핀헤더 커넥터를 넣었습니다.

이렇게 해도 팩안에 들어가네요! 신기~ ㅎ.ㅎ




CPLD 보드가 합체된 모습입니다.






이렇게 만들면 팩 뚜껑이 닫힌다는 소중한(?) 경험을 얻게 되었습니다요.



 

완성된 모습입니다.

오른쪽 빈 자리에는 232C BIOS 또는 잡다 롬을 넣을 생각입니다.




콘덴서랑 어레이저항이 사이좋게 자리잡고 있네요.

아직 LED는 아무데도 연결되어있지 않습니다.

만들다가보니 CPLD 용량 문제로 일단 보류한 상태네요. ㅋ




뚜껑을 닫으면 이렇게 됩니다.

계속 보고있으니 조금 징그러운 느낌이... ㅡ.ㅡ




확장슬롯에 꽂은 모습입니다.

어쩌다보니 6개 슬롯이 다 찼네요. ㅎ.ㅎ




아래는 터보알에서 구동하는 모습을 동영상으로 찍은 것입니다.

현재 115200BPS로는 터보알에서만 제대로 사용이 가능합니다.

속도를 낮추면 일반 MSX2에서도 쓸수 있겠지요.

 

날림(?)으로 만든 시리얼 터미널 프로그램으로 윈도의 터미널과 동작하는 모습과,

시리얼로 ROM파일 전송받아서 실행하는 프로그램을 볼 수 있습니다.

 

마지막으로 제 모니터(LCD TV)의 리눅스에 로그인해서 paraMSX 를 구동하는 모습도 담아봤습니다.

그럼, 즐감하세용~~




2010년 1월 24일 일요일

paraMSX_Linux & RS-232C - MSX를 TV안에

제가 메인으로 쓰는 모니터가 원래 유럽향 DTV인데, 시스템이 리눅스로 구동되고 있습니다.

(이쪽에 관심 있으신 분은 아시겠지만, 요즘은 TV, 휴대폰 등 제품에도 리눅스가 많이 쓰이고 있습니다.)

참고로 CPU는 MIPS의 MIPS24kec 324MHz가 들어있습니다.


기존 MSX 에뮬레이터(paraMSX) 소스를 좀 고쳐서 리눅스(TV 내장)에서 실행될 수 있도록 해보았습니다.

윈도용 에뮬처럼 모든 기능이 동작하는 건 아니지만,

MSX1/2/2+ 기본 세팅과 V9958 에뮬까지는 제대로 되도록 해놨습니다.

에뮬 화면은 리눅스의 프레임버퍼에 올리고 있습니다.

배경에는 SCART RGB입력의 터보알 화면이 나오고 있고 그위에 오버레이 되는 것이지요.

바꿔말하면, 그냥 TV의 OSD 메뉴 대신 paraMSX가 뜨는거라고 생각하시면 됩니다. ㅋ

 

아래 동영상 한번 보세요.

LCD TV랑 노트북이 시리얼(RS-232C)로 연결되어있고, 터미널 상에서 에뮬을 실행시켰습니다.

에뮬에서 사운드가 안나오기 때문에, 대신 터보알님이 MP3 배경음악을 넣어주셨습니다요. ㅎ.ㅎㅋ




 

아래는 터미널 스크린샷입니다.

USB 메모리스틱을 마운트해서 쓰고 있습니다.