sharksym's MSX World

sharksym.egloos.com

포토로그


구글 애드센스


RS-232C 카트리지 업데이트 by sharksym

작년에 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로 출력 및 콘솔 리다이렉션을 해본 모습입니다.


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





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

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


덧글

  • 클랴 2013/10/28 16:57 # 답글

    안녕하세요. 이글루에서는 첨 뵙습니다 ^^

    아시다시피, 저도 요즘 RS-232C 팩을 만드는 중인데,
    AUX 장치를 연동하고 싶어서 이곳 저곳 뒤져보고 있습니다만..
    AUX IN/OUT 훅이 어느 것인지 찾을수가 없더군요.
    혹시 PARDEV (0FEB2H) 인지요?
  • 클랴 2013/10/28 18:15 #

    어이쿠 좀 더 뒤져보니,
    MSX-DOS용 후크 영역 자료가 쏟아져 나오네요.
    감사합니다. ^^
  • sharksym 2013/10/28 23:17 #

    클랴님 반갑습니다~ ㅎ.ㅎ

    저도 AUX 장치로 만들어보려고 생각은 했었는데...
    생각으로 그쳤네요. ㅎ.ㅎㅋ

    즐거운 하루 되셔요~~~
댓글 입력 영역



구글 애드센스 (작은사각형)

MSX rating

구글 애드센스 (세로 직사각형)