2009년 12월 6일 일요일

MMC/SD Drive V1,V2 - 동영상/음악 인코더

인코더는 아래 파일 받으면 됩니다.

MMCSD_MediaEncode_091206.zip


아래는 인코딩된 짧은 샘플입니다.

MEDIA_sample.zip



------------------------------------------------------------------------------

    MovEncode & MediaMan (2009.12.06)

        By 서영만 (E-mail:sharksym@hitel.net)

------------------------------------------------------------------------------

 

* MMC/SD Drive에서 구동 가능한 PCM 또는 MOV 파일을 변환하고,

  DISKMAN에서 Import 할수 있도록 Disk Image를 만들어줍니다.

 

* PCM 만들기

  22KHz 또는 44KHz의 8Bit RAW 데이터 파일을 지원합니다.

 

  - 변환 방법

  별도의 프로그램은 제공하지 않습니다.

  윈앰프 등의 프로그램으로 쉽게 변환 가능합니다.

 

* MOV 만들기

  112 x 68 크기(16:9 비율) 12FPS의 동영상 또는

  168 x 104 크기(16:9 비율) 8FPS의 동영상을 지원합니다.

  인코딩 시, 스크린8(256컬러) 또는 스크린12(1만9천컬러) 선택 가능합니다.

 

  - 변환 방법

  VirtualDub 등의 동영상 편집프로그램으로

  원하는 크기 및 프레임 레이트에 맞춰서, 각 프레임을 BMP 파일로 Export합니다.

  영상은 0000.BMP, 0001.BMP, 0002.BMP... 이런 순으로 되어야합니다.

  원본 16:9 영상을 쓰면 MSX에서 거의 비슷한 비율로 보이게됩니다.

  4:3 영상이라면 좌우에 빈 여백을 넣어서 Export하면 됩니다.

  오디오는 8Bit 44100Hz PCM으로 Export합니다.

  WAV로 저장 후 RAW 파일로 변환하는 등의 방법을 쓰면 됩니다.

 

  *.BMP 파일들과 AUDIO.RAW 파일을 준비한 후,

  MovEncode.exe를 사용하여 인코딩합니다.

  참고로 윈도용 콘솔 프로그램입니다.

  실행은 아래 처럼 하면 됩니다.

  MovEncode 0000.BMP AUDIO.RAW [Enter]

  BMP 크기는 자동으로 인식하므로, 컬러 모드는 선택하면 됩니다.

  RGB332(스크린8) 또는 YJK(스크린12) 두가지만 됩니다.

  인코딩이 완료되면 MOVIE8.DAT 또는 MOVIE12.DAT 파일이 생성됩니다.

 

* PCM / MOV 파일을 묶어서 MMC/SD용 *.DSK 만들기

  MediaMan.exe을 이용하여 여러개의 PCM 또는 MOV를 합칠수 있습니다.

  최대 64MBytes까지 지원합니다.  (약7분의 동영상 또는 50분의 22KHz 오디오)

 

  - 실행 방법

  MediaMan Filename [Enter]

  MediaMan은 MEDIA.DSK 라는 파일로 미디어 파일을 한개로 묶습니다.

  MEDIA.DSK 파일이 없는 경우 새로 생성하며,

  이미 존재하는 경우 미디어 파일만 추가하게 됩니다.

  용량이 64MBytes를 넘어가는 경우 DISKMAN에서 Import가 불가능하니

  적당한 크기로 만드세요. ㅎ.ㅎ

 

* DISKMAN에서 Import 하기


  - 주의 사항

  MediaMan으로 만들어진 DSK 파일이 30MBytes보다 크면

  MMC/SD 시스템 디스크에 넣을 수 없으므로, 별도의 FAT16 포맷의 카드가 필요합니다.

 

  DISKMAN을 실행하여 디스크파일을 하나 만듭니다.

  INS키를 눌러 디스크를 추가할때, 디스크 종류를 Movie/Music 으로 선택합니다.

  리턴키를 눌러 Import를 하면 됩니다.

  Import가 완료되면 해당 디스크로 파티션 전환하여 실행하면 됩니다.

  디스크 자체는 DOS1 부팅디스크로 이루어지고,

  미디어 리스트(DISKLIST.DAT)와 미디어 플레이어(MPLAY.COM)가 들어있게 됩니다.

  MPLAY를 실행하면 MediaMan으로 추가했던 파일을 선택하여 플레이 할 수 있습니다.




2009년 11월 15일 일요일

파라동-4SLOT #1 CPLD 구현 및 테스트

이번에 흥건남자님이 확장슬롯 보드를 제작하고 있습니다.

여기 들어갈 서브슬롯 레지스터 회로를 제가 CPLD로 넣기로 약속(?)했습니다.

 

사실 서브슬롯 레지스터 구현은 간단한 것이라, 테스트 보드를 안만들어도 될 것 같았지만,

아무래도 안전하게 미리 해보는 게 좋겠지요. ㅎ.ㅎ;

 

일단 코드 다운로드(JTAG)하고 납땜하기 편하도록,

ALTERA CPLD인 EPM3032 44핀 PLCC 타입으로 결정했습니다.

 

44핀으로 만들려면 입력핀이 좀 부족하긴 한데 TQFP 납땜하는 것보다는 PLCC 소켓 꼽는게 제작하기 쉬우니까

일단 이렇게 하고, 모자라는 핀(어드레스 디코더 용)은 72LS20 한개로 보완하도록 했습니다.

(디바XX마트 쇼핑몰에서 구입시, 재료비 4000원 정도 나오네요.)

 

확장슬롯 처리는 왼쪽 소켓의 CPLD가 담당이고, 윗쪽에 3.3V 레귤레이터(CPLD 전원)랑 74LS20이 필요합니다.

보드에 슬롯 커넥터는 2개만 넣었습니다. (2개만 납땜하는데도 힘들어요...ㅋ)

 

사실 확장슬롯만 쓰면 아까울까봐, 여기에 1024KB 램 매퍼을 서브슬롯 0에 넣어서 IQ2000 활용에 보태려고 합니다. ㅎ

오른쪽 CPLD가 램매퍼 역할이고 그 옆에는 512KB SRAM 두개가 올라갈 예정입니다.

 

아래는 테스트 보드와 IQ2000/터보알에 꽂아 본 모습입니다.




본체에 꽂으면 사이즈가 딱 맞습니다. ㅎ.ㅎ

확장 슬롯에는 MMC/SD Drive v1.0과 v2.2를 한번 꽂아봤습니다.





PS. 완성 후 사진 추가합니다.

 

어제는 확장 슬롯만 동작 확인했었는데요, 이제 램매퍼도 구현되었습니다.

아래 사진 나갑니다요.

 

오른쪽 하단에 512KB SRAM 두개가 서브슬롯 0번에 연결됩니다.

(참고로 이 보드를 확장슬롯에 꽂으면 그냥 1024KB 램팩이 됩니다.)

 

램 매퍼도 같은 용량의 CPLD 한개로 구현되었습니다. OR 게이트 모자라서 74LS32 하나 추가했네요. ㅡ.ㅡ

램은 512KB / 1024KB  선택할 수 있도록 작은 딥스위치 하나 넣었습니다.




아래는 512KB SRAM 모듈 두장을 엎은 부분 사진입니다.

(SOP 변환 보드 무지 비싸요 ㅜ.ㅜ)

높이가 거의 일반 카트리지 높이랑 비슷합니다요.

왼쪽의 핀헤더 소켓은 IQ2000 상단 슬롯에 꼽을 때, 덮개에 걸리지 않도록 해줍니다. ㅋ




2009년 11월 13일 금요일

CPC-300 (IQ2000) 개조 - 동작 모습

막상 동작하는 것 찍어보려니, 특별 해볼만한게 생각이 안나네요. ㅎ.ㅎ;

 

BASIC으로 부팅 후, 키보드 (한글/일어/유럽 특수 문자/그래픽 문자 등) 좀 눌러보는 걸 찍어보았습니다.

 

순서는

대우 IQ2000, 대우 X-II, 파나소닉 FS-A1F, 필립스 VG-8240 순입니다.

참고로 모두 MSX2 모델입니다.

 

그럼, 감상하세요.

VG-8240의 경우 VDP 출력이 50Hz인데 수직해상도가 높다보니,

화면이 좀 눌린것 처럼 보이네요.




2009년 11월 12일 목요일

CPC-300 (IQ2000) 개조 - 플래쉬롬 조합

대우 IQ2000을 X-II 및 일제/필립스 MSX로 개조해보았습니다.

 

국산/일산/유럽산 등 MSX2는 내부 슬롯 세팅 외에, 기본적으로 MSX-BIOS 세팅에서 차이가 납니다.

- TV 영상 출력에 맞춘 VDP V-sync 50Hz/60Hz

   이 때문에 타이머 인터럽트 속도가 다른데, 유럽 MSX에서는 게임이 약간 느리게 구동되지요. ㅋ

- 각 나라별 키보드의 키 배열 및 문자 폰트. 

  참고로 대우는 일제 키보드와 같은 배열을 씁니다. 흔히 보는 미국식 배열이 아니고요.

 

여기서 대우 IQ2000는 내부에 3개의 EPROM이 들어있습니다.

MSX-BIOS ROM          : 슬롯 0-0

한글 BASIC                 : 슬롯 0-1

EXT-BIOS / 한글 BIOS : 슬롯 0-3

이 세개의 롬이 내부 확장된 슬롯0에서 동작합니다.

 

근본적으로 MSX에서 메인 BIOS만 슬롯 0-0에 있으면 되고, (일단 시스템 기동을 해야하니...불변입니다.)

나머지 확장 롬 또는 메모리는 아무 슬롯에 있어도 상관이 없는데요.

이것을 이용하면, 원래 슬롯 세팅이 다른 일본산/유럽산 MSX2으로도 개조할 수 있게 됩니다.

 

슬롯 세팅은 아래처럼 해보았습니다.




모델 하나 당 BIOS 롬이 128KB 필요한데요. (사실 슬롯 0-2는 램이라서 못쓰니까 96KB가 되겠네요.)

여기서 한글/KANJI BASIC은 Page1,2에 위치하도록 해야합니다.

실제 IQ2000의 EPROM 핀을 살펴보니, 이부분은 미러 롬이 되도록 (16KB 상하위를 반대로) 만들면 되겠더군요.

 

HW 구현은 간단하게 만들어졌습니다.

IQ2000의 보드상의 EPROM 3개를 뽑고 소켓의 위치를 맞춰보니,

일반 만능기판(2.54mm)이랑 같네요. 앗싸~ㅋ

핀헤더를 이용해서 기존 롬소켓 3개에 맞도록해주면 OK입니다.

 

남은 것은 512KB 플래쉬롬을 16등분해서 각 모델의 서브슬롯에 맞도록 매핑하는 것인데,

이건 EPROM의 /CE,/OE 신호를 A16,A15로 활용해서 간단하게 구현했습니다.

128KB씩 구분하는 부분은 외부에 스위치 2개를 조합하도록 했습니다.

플래쉬롬의 /CE, /OE를 위해 3인풋 AND TTL 칩하나만 쓰면 되는군요.

 

아래는 실제 IQ2000 보드에 꽂은 모습입니다.


세개의 롬 소켓이 보이는데,

왼쪽이 한글 BASIC, 가운데가 메인 BIOS, 오른쪽이 EXT 및 한글 BIOS입니다.




작업된 보드를 끼운 모습입니다.

대부분의 Addr/Data 라인은 가운데 소켓이랑 연결됩니다.




아래는 보드의 밑면이군요.

IQ2000 보드의 콘덴서랑 간섭되는 부분이 있어서, 모서리 부분을 조금 잘랐습니다.ㅋ




제작하는 것도 별로 힘들지 않고 재밌네요.

 

외부 스위치로 IQ2000, X-II, FS-A1F, VG-8240을 맘데로 선택할 수 있습니다.

특히 필립스의 유럽 모델은 VDP 출력 50Hz가 되니까, SW 테스트 할때도 요긴할 것 같네요.

 

물론 이걸로 끝나는 것은 아닙니다.

X-II와 일제 MSX2의 완성형 폰트 로직을 만들어야 하는데,

일단 각 폰트롬 256KB는 덤프되어 있으니, HW만 만들면 되겠네요.

이것도 외부 스위치로 한글 또는 한자 모드로 선택할 수 있도록 만들려고 합니다.

512KB 플래쉬롬이 하나 더 쓰이겠군요.


테스트해보니 X-II의 스크린9에서 한글/한자 폰트가 없으면, 그냥 내부 조합형 한글 출력으로 나오네요.

화면 가득히 박스만 나오려나 싶었는데, BIOS에서 롬체크를 하나봅니다.

에뮬에서도 테스트해보니 같은 결과네요. ㅎ.ㅎ

 

그럼, 다음 편을 기대해주세요.

2009년 10월 8일 목요일

paraMSX v0.50b에서 MMC/SD Drive 사용법

음... 제가 만드는 것들이 한가지 공통점이 있는데...

설명서가 부실하거나 없다는 것이지요. ㅎ.ㅎ;;;

 

이번에 paraMSX의 MMC/SD Drive 에뮬레이션을 이용해서,

메모리카드 초기화하고 YS1 게임을 하나 인스톨 해보는 가이드(?)를 만들어보았습니다.

 

스크린샷만 보셔도 이해하실수 있으리라 믿습니다. ㅋ

 

--------------------------------------------------------------------------------------

먼저 MMC/SD 바이오스 롬을 준비합니다.

여기서는 MMCDISK3.ROM을 MEGAROM 폴더에 넣어놓았습니다.

이름은 적당히 MMCDISK3_v4.00b4_2048KB.ROM라고 바꿨습니다.

 

paraMSX의 MMC/SD 에뮬레이션에서는 SD카드 1슬롯만 처리가능하고,

바이오스 파일명과 같은 명의 디스크 이미지(*.DSK)를 메모리카드 이미지로 사용합니다.

 

여기서 바이오스롬을 MMCDISK3_v4.00b4_2048KB.ROM 을 쓰기 때문에

메모리카드 이미지는 MMCDISK3_v4.00b4_2048KB.DSK 로 됩니다.

 

paraMSX의 시스템 메뉴에서 'MSX2+ FS-A1WSX.DAT'를 선택하면,

메인램 512KB로 설정되기 때문에 MSX-DOS2를 바로 쓸수 있습니다.

 

아래는 슬롯1에 MMC/SD 바이오스롬을 선택했고,

롬매퍼는 9 MMC/SD Drive (SCC)로 선택했습니다.

(다른 매퍼를 선택하면 제대로 동작하지 않습니다.)




[Power] 버튼을 눌러서 에뮬을 구동하면,

아래처럼 MMC/SD 부팅화면이 나타납니다.

(음... 바이오스 v4.01로 캡쳐됬네요. ㅎ.ㅎ;;)

아직은 메모리카드 이미지 파일(DSK)이 없기 때문에, 카드 초기화에 Fail이라고 나타납니다.




MMC/SD의 내장 플래쉬롬 디스크가 Drive A:로 매핑되어 부팅된 것을 볼수 있습니다.




여기서 INSTALL.COM을 실행하면 메모리카드 초기화를 하게 되며,

유저가 선택한 시스템 디스크 A/B도 함께 설정됩니다.

시스템 디스크 A,B는 MMC/SD에서 기본으로 설정되는 두개의 파티션을 의미합니다.

 

인스톨 중, 메모리 카드를 넣고 아무키를 누르라고 표시되는데,

그냥 아무키나 누르면 paraMSX 상에서 메모리 카드 이미지(DSK)파일을 자동으로 생성하게 됩니다.




전체 메모리카드 용량은 2GB로 선택되었고,

시스템 디스크 A,B는 각각 32MB로 선택했습니다.





인스톨이 종료된 후, Drive A,B를 DIR해본 모습입니다.

대부분의 프로그램은 B:\UTILS 폴더에 들어있습니다.

DOS2에서 PATH가 설정되기 때문에 유틸은 쉽게 실행가능합니다.




이제 본격적으로 YS1 게임 디스크를 MMC/SD로 옮겨보겠습니다.

아래 처럼 paraMSX의 디스크-A에 YS1.DSK를 선택했습니다.

여기서 디스크-A,B는 에뮬중인 시스템(현재 FS-A1WSX)의 내장 FDD를 의미합니다.

 

이 경우, MMC/SD가 MSX 드라이브 A,B,C,D를 처리하고 있으니까,

내장 FDD는 드라이브 E,F가 됩니다.

결국 드라이브 E에 YS1 디스크가 들어있는 셈이지요.




DISKMAN.COM을 실행하면 아래와 같은 화면이 나타납니다.

Root System 폴더에 이미 시스템 디스크-A,B 및 파티션 테이블이 들어있습니다.

 

일단 INS 키를 눌러서 Game 폴더를 하나 생성합니다.




'리턴'키를 누르면 해당 폴더로 들어가는데,

이번엔 Game폴더안에서 'YS I' 이라는 파일을 새로 만듭니다.

 

파일은 단지 파티션 이름으로만 의미가 있고, 실제 디스크 파티션은 파일 내에서 생성해야합니다.




YS I 파일에서 리턴키를 누르면 디스크 편집창이 나옵니다.

INS를 눌러서 새 디스크를 추가해봅니다.

 

현재 추가된 디스크가 하나도 없는 경우에는,

디스크 타입(용량)을 먼저 물어보게 됩니다.

대부분 플로피 디스크 게임은 2DD(720KB)니까 1번을 선택하면 되겠습니다.




추가될 디스크 이름을 입력합니다.

여기서는 그냥 Main이라고 입력했습니다.

(참고로 이름은, 최대 7자까지만 입력가능합니다.)




1번 디스크로 Main이 추가되었습니다.

[ 96 - 96] 숫자는 파티션의 블럭 위치를 의미합니다. 별로 중요한 건 아닙니다. ㅎ




1번 디스크에서, 리턴키를 누르면 디스크 Import 메뉴가 나오는데,

이미지 파일(DSK)를 사용할 것인지, 아니면 실제 FDD에서 읽을 것인지를 골라야합니다.

 

지금은 실제 FDD(드라이브 E)에서 복사해야 되니까, Import from FDD를 선택합니다.




드라이브 명(E)을 입력합니다




드라이브 E에서 섹터를 읽어 MMC/SD 메모리로 복사하는 모습입니다.




Import가 완료되면, ESC를 눌러 File 메뉴로 돌아갑니다.

여기서 F5를 누르면 아래처럼 디스크 부팅/선택 등의 메뉴가 나옵니다.

 

첫번째 Set disk & Boot disk를 선택하면,

현재 000.YS I 파일의 1번 디스크(Main)를 드라이브 A로 매핑한 후, 부팅시켜줍니다.

참고로, 세번째 메뉴는 드라이브 A로 매핑한후 DOS로 복귀합니다.




잠시 기다리면 YS1이 실행되는 것을 볼수 있습니다.





paraMSX v0.50b

paraMSX v0.50 beta 버전입니다.

필요하신분 받으세요~~

 

MSXturboR 호환의 8BIT Audio DAC이 추가되었습니다.

(MMC/SD Drive의 Movie/Music Disk 테스트 용입니다.)

 

에뮬레이션 윈도 크기 설정이 수정되었습니다.


Download: paraMSX050b.zip


2009년 10월 1일 목요일

뜨개질 확장슬롯 #2 삽질의 연속

지난번 만든 확장슬롯에서,

 

DATA 라인과 몇몇 컨트롤 라인에 문제가 있어, A1WSX에서 제대로 동작이 안되었었지요.

게다가 지난번 Sander씨와 파라동 모임에서도,

Sander씨가 갖고온 필립스 MSX2에서도 불안한 동작을 하다가 결국 SD카드도 깨먹었고요. ㅡ.ㅡㅋ

(근데 곰돌아빠님 OCM에서는 잘 동작하더군요. 헙헙..ㅎ)

 

그 후로 며칠 고민하다가 확장슬롯을 새로 만들기로 결심했습니다.

50핀 슬롯 커넥터는 기존에 납땜된걸 뽑아서 재사용하고 나머지는 새 부품으로 만들었습니다.

만든지 좀 됬는데, 이제 글을 써보네요.

 

보드는 기존꺼랑 똑같은 사이즈고,

문제되던 DATA 라인과 BUSDIR등 잡다 신호는 버퍼링 안하는 걸로 했습니다.

아래부분 TTL칩 8개가 확장슬롯 레지스터 구현한 것이고요.

슬롯 커넥터 사이의 칩들은 ADDR라인 및 잡다 신호선들 버퍼 및 신호 ON/OFF 할수 있도록 했습니다.

 

기존 것 써보고 알게된 것 하나가...

슬롯 6개에 사운드 관련 카트리지를 많이 꽂으니 MSX 본체내의 PSG/OPL의 사운드와 밸런스가 안맞게 되더군요.

그래서 요번엔 슬롯 SOUNDIN 쪽에 스위치 하나 넣어서 개별로 ON/OFF가능하게 해놨습니다.

제 경우 필립스 뮤직 모듈은 사운드 외부 출력을 쓰고.

FM-PAC의 경우는 SRAM 세이브만 필요하니까 둘다 기본으로 SOUND OFF로 쓰고 있습니다.

SCC 게임 구동하는 경우에도 해당 슬롯의 사운드만 ON해야 볼륨이 줄어드는 문제가 없지요.

 

암튼 전체 모습은 지난번과 비슷합니다.




뒷면입니다.

74LS244 하나로 슬롯 2개씩 버퍼링합니다.

두 슬롯끼리 공통으로 연결된 선들이 보이시죠? (으... 납땜도 중노동 ㅜ.ㅜ)




외부는 마우스 패드 하나 오려붙이고 테입으로 칭칭 감았네요.

 

제목: MUMMY III - 확장슬롯 V2의 탄생 ㅡ.ㅡ




이번에는 A1WSX에서도 잘 동작하는군요.

다된건가...하는 생각으로 카트리지 다 꽂고 테스트해보니...

역시나 또 문제가 하나 ㅜ.ㅜ

 

슬롯 전원을 외부 5V 연결하니 신호 레벨이 좀 틀어지는지... 문제가 생기네요.

딴건 다 잘되는데, 준성님 MPX가 제대로 동작을 안합니다. 어허허...ㅜ.ㅜ

MP3 플레이중에 Data가 깨지는지 노래가 좀 끊어지네요.

내부 전원으로 쓰면 당연 문제 없고요.

 

좀 아쉬움이 남는 삽질이었습니다.

납땜하느라 힘들어 쓰러지는줄...


2009년 8월 28일 금요일

APPLE IIc - 처음으로 갖게 된 애플2

거의 일년 넘게 고민한 끝에 비타민을 지르게 되었습니다.

안전하게 건강한 애플을 보내주신 장박사님께 감사드립니다.

도스랑 ADT 디스켓도 함께 보내주셨습니다.

 

그럼, 인증샷 들어갑니다~ ㅎ.ㅎ

 

책상에 놓을 공간이 없어서, 아이큐2000이 있던 자리에 비타민을 들여놓았습니다.

모니터도 아이큐2000님이 놓고 간걸 재활용~ㅋ

사진으로는 상당히 아이보리 색깔을 보여주는데, 실제로는 썬텐이 조금 되어있습니다.

화면에는 로드런너2가 돌아가는 중이네요.

한번 실행해봤는데, 첫판 넘기기도 힘들더군요. 머리가 나빠진건지 손이 느려진건지..ㅡ.ㅡ



 

도스 3.3도 부팅해보았습니다.

왜 캡스락 눌러야 되는지는 catalog 쳐본 후 자연히 알게되더군요.

소문자로 치니까 SYNTAX ERROR 하핫... 에러 메시지도 대문자로 나온다는 거...ㅋ




베이직으로 간단하게 40컬럼 문자 출력을 해봤습니다.

사실 애플 베이직은 써본적이 없었는데, 타이핑 하다보니 예전 금성의 FC-40 이 생각나더군요. (FC-30인가..기억이 가물가물)



 

80컬럼 출력도 해봤습니다.

생각보다 글씨 폭이 상당히 좁더군요. 텍스트모드 많이 쓴다면, 아무래도 모노크롬 CRT가 좋겠습니다.



 

국딩때 친구집에서 하던 레스큐레이더스가 생각나서 한번 실행해봤습니다...만...

키 조작을 모르겠네요. 설마 조이스틱 전용인가요?



 

이번엔 로드런너/레스큐레이더스를 넣은 디스크를 지우고 코난을 다운로드했습니다.

저만 그런지는 모르겠는데요. ADT_2007_2 받아서 해보니 제대로 동작이 안되더군요.

DIR 명령시 글자가 중간중간 깨지던데... 암튼 ADT_2004 받아서 해보니 잘 되었습니다.

아래는 ADT 동작중인 모습이군요.



 

어흑...ㅜ.ㅜ 드디어 코난을 실기로 구동해보는군요.

이십여년 전 친구집 그린모니터로 본 기억이 아직도 생생합니다. 드드드 하는 FDD 소리와 함께...

역시나 키보드로는 좀 어렵네요. ㅋ



 

이상 간단한 첫 사용기였습니다.

앞으로 조금씩 공부하면서 적응해야겠네요.

그나저나, 비타민 키보드 클릭감은 정말 좋네요. 쫀득쫀득한 맛(?)이...

궁금하시면 비타민 하나 사서 눌러보세요. 제껀 안빌려줌~ㅋ

 

PS. 090830 추가 사진

      혹시 위의 LCD TV가 궁금하신 분을 위한 보너스샷입니다.

      패널 + 보드 + SW 따로 DIY(?)된 개인 TV입니다...ㅋ

      윙즈 오브 퓨리 게임이 같이 나오고 있네요.

      (조이스틱부터 빨리 해결해야할텐데...ㅎ.ㅎ;)



뜨개질 확장슬롯 #1 삽질의 시작

거의 열흘 가까이 바느질 납땜을 한 결과...

확장 슬롯을 하나 만들게 되었습니다.

 

슬롯은 6개를 넣었고요.

4개는 기본 확장 슬롯이고,

나머지 두개는 MSX슬롯핀의 안쓰는 5번,16번 핀을 SLTSL로 쓸 수 있도록 해놨습니다.

파나소닉 MSX인 A1-WSX와 A1-GT는 MSX-ENGINE(T9769C)가 사용되는데,

WSX는 슬롯0-1, 슬롯0-3의 SLTSL 신호를 쓸 수 있고,

GT는 슬롯0-1의 SLTSL 신호를 쓸 수 있습니다.

이걸 안쓰는 슬롯핀으로 빼내서 쓰기 위한 것이지요.

물론, 연결 안하더라도 마지막 두 슬롯은 일반 IO 기기 연결용으로 쓸 수 있겠습니다.

 

어차피 확장 슬롯 하나만 만들거니까, 조금 오버해서...ㅋ

신호선의 버퍼(74LS244/245)를 각 슬롯마다 넣었고요,

슬롯 전원은 외부 DC 5V를 연결할 수 있도록 해놨습니다.

5V 3A 정도면 슬롯 6개 다 써도 남을 듯 하네요.

 

근데 만들다가 이거 알게 된 사실인데,

MSX 슬롯에 Z80 BUS-REQ/ACK 신호를 안쓰네요. ㅡ.ㅡ

당연히 있다고 생각했는데... 그러면 DMA 기기는 아예 만들지 못하는 거였네요.

그리고 BUSDIR 핀은 단순히 Data 라인 방향 제어에만 쓰이더군요.

근데, 메모리 R/W 할때는 SLTSL/MERQ를 참조하면 되니까,

결국 IN/OUT 때만 BUSDIR이 필요하네요. (OUT 시에는 그냥 두면 되니, 결국 IN할때만 컨트롤 하면 OK)

어쨌거나, 개별 슬롯 ON/OFF 스위치도 넣고 잡다하게 뭔가 하려다보니 납땜만 잔뜩되었네요.

 

근데 칩을 너무 꽂아서 그런지, WSX에서는 슬롯 다켜면 본체가 켜지질 않습니다. ㅜ.ㅜㅋ

GT는 괜찮은데..에거... 뭔가 HW 에러가 있는 것 같긴 합니다.


암튼, 사진 나갑니다.

 

MSX 슬롯 연결부는 못쓰는 팩에 50핀 케이블로 연결했습니다.


 


터보알 후면 슬롯에 꽂아서 동작중인 모습입니다.

참고로 MPXP도 서브슬롯 체크하도록 수정되었습니다. (차후 릴리즈 예정)

MPX 카트리지가 슬롯0-1에, MMC/SD 드라이브가 슬롯2-3에 있네요.




아래는 삽질의 현장입니다.

터보알의 T9769C의 SLOT01, SLOT03 핀을 외부 슬롯의 핀5번, 16번으로 연결했습니다.

핀 5번은 보드에 연결안된 점퍼에 납땜했는데, 회로도에는 뭔가 외부 입력으로 쓸수 있게 해놓은 것 같더군요.

(회로도 글씨가 잘 안보여서 무슨 기능인지는 모른다는 거...ㅋ)

핀 16번은 후면 커넥터 다리에 납땜했습니다.




근데 막상 뚜껑 덮고 켜니까, 터보알 부팅 로고가 안나오네요. 허거...

구글님께 물어본 결과 슬롯 0-3은 부팅 로고 프로그램이 있다고 합니다.

이 내용은 터보알 매뉴얼에도 없어요. 암튼 슬롯0-3은 다시 땠습니다.

아마 WSX에서는 쓸 수 있을 것 같네요. (아직 해보지는 않았습니다.)





2009년 8월 7일 금요일

MMC/SD Drive V2 - 동영상 구현 #2

이번엔 데이터량을 MMC/SD 드라이브 한계까지 올려서 만들어보았습니다.


지난번 12프레임 영상은 128 x 68 크기였는데, 104KB/s 정도이고요. (오디오는 13KHz)

이번 8프레임 영상은 192 x 104 크기로 159KB/s 정도입니다. (오디오는 19KHz)


3.58MHz Z80 노말 모드에서 구동되고,

스크린12 모드를 쓰기 때문에 MSX2+ 또는 터보알에서만 제대로 볼 수 있습니다.


참고로, 256 x 138 크기로도 테스트를 해봤는데, 이걸로는 4프레임이 한계네요.

움직임이 느린 뮤직비디오 정도는 괜찮겠지만 별로 안좋더군요.


그럼, 동영상 감상해보세요~

이번에도 매트릭스 릴로디드 트레일러입니다.



2009년 8월 6일 목요일

MMC/SD Drive V2 - 동영상 구현 #1

그저께 PCM 플레이어 만든 후, 바로 동영상 플레이어 제작에 들어갔습니다.


일단 CPU 여유 타임을 고려해보니,

초당 128 x 68 (와이드 영상) x 1Byte x 12 frame이 처리 가능하겠더군요.

수평 128 Bytes중 16Bytes가 사운드로 재생(13056Hz)됩니다.


초당 104KB 데이터를 처리하는 것인데,

아직 30%정도 CPU 여유가 있긴 합니다.


그래픽 모드의 MSX2+ 이상에서만 사용되는 스크린12모드입니다.

수평 4픽셀끼리 컬러를 공유하기 때문에 약간 눈에 거슬리는 것도 있지만,

테스트 해보니 스크린8의 256고정 컬러보다는 더 낫더군요.


화면의 1/6정도로 작은 크기지만, 초당 12프레임의 부드러운 영상을 볼 수 있습니다.

참고로, 페이지 플리핑도 하고 있어서 볼만하네요. ㅎ.ㅎㅋ


전에 SymbOS에서 동영상 플레이 할때는 비슷한 크기에 사운드 없이 5프레임/초 정도가 한계였는데,

역시 메모리 전송없이 바로 VDP로 쏘니깐 빨리할 수 있네요.


설명이 길었습니다. 아래 동영상 감상하세요~



2009년 8월 4일 화요일

MMC/SD Drive로 PCM 오디오 구현

오늘(아... 어제인가요ㅋ) 갑자기 MMC/SD Drive 전용 동영상 플레이어를 만들면 어떨가 생각되서,

일차로 PCM 사운드 플레이어를 만들어봤습니다.

메가스카시/선라이즈IDE용으로는 Eva Player라는 동영상 플레이어가 있는데 같은 종류라고 보면 됩니다.

(전 이거 구동되는 걸 본 적이 없네요. ㅎ.ㅎㅋ)

 

사운드 출력은 터보알의 내장 8비트 DAC을 씁니다.

PCM 데이터를 전송하는 방법은,

일단 디스크 파티션을 하나 만들고 0번 섹터부터 그냥 PCM RAW 데이터를 주욱 넣었습니다.

FAT를 안쓰는 것이지요. 으흠...

 

데이터는 8Bit 44.1KHz 오디오입니다. 윈앰프 플러그인으로 간단하게 몇개 만들어서 넣어봤습니다.

음이 안끊기고 출력하려면, 디스크에서 읽은 데이터를 타이밍 맞춰서 DAC으로 보내야하는데,

이걸 MMC/SD BIOS 내부에서 직접 1Byte씩 읽어서 출력하도록 만들었습니다.

 

실제 해보니, MMC/SD HW V2에서는 속도가 빨라 여유가 좀 되는 듯 하고요.

HW V1에서는 가까스로 타이밍이 맞긴하네요. ㅎ.ㅎㅋ


2009년 7월 30일 목요일

Philips Music Module 샘플램 256KB 확장

얼마전 ebay에서 구한 필립스 뮤직 모듈입니다.


야마하의 Y8950 MSX-AUDIO 칩이 들어있습니다.

AUDIO 바이오스가 없어서, 파나소닉의 오리지날 MSX-AUDIO과는 조금 다른 물건인데요.

대신 뮤직박스라는 간단한 샘플링/작곡 비슷하게 할수 있는 프로그램이 내장되어있습니다.

 

그 외, 미디 입출력 포트가 있고, 내장 마이크가 있어서 바로 샘플링도 할수 있지요.

샘플 메모리는 256K x 1Bit (32KB)가 장착되어 있습니다.

메모리 확장은 최대 256KB로 비교적 쉽게 확장이 가능하다길래,

굴러다니는 DRAM을 달아주었습니다.

 

패키지가 세로로 크다는게 좀 불편한데요.

두께도 일반 팩의 2배정도 되기 때문에 파나소닉 MSX 후면 슬롯에 꽂으면, 본체가 붕 뜹니다. ㅡ,.ㅡ;

 

사진 나갑니다~~

 

전면에는 약간 졸린 눈으로 "나~나~나~" 하는 사진이 붙어있습니다. ㅎ.ㅎ




웹에 널린 뮤직 모듈 단독 사진만 봤을 때는 그냥 약간 큰 정도겠구나 생각했었는데,

FM-PAC과 SCC 사운드팩이랑 같이 놓으니 정말 큽니다. 둘이 합체해도 못 이기네요. 허허~

면적만 넓은게 아니라 두께도 두배 !!!




볼륨이 좀 작은 것 같아서 저항 떼고, 가변 저항 하나 달아줬고요.

샘플용 DRAM은 EPROM 옆에 얹어서 배선했습니다.

원래 1비트짜리 DRAM이 하나 있는데, 이건 그대로 동작하고요.

나머지 7비트를 위에 얹은 DRAM으로 액세스합니다.

 

가만히 보니, 팩이 두꺼운 이유가 왼쪽의 미디 포트 때문이더군요.

암튼 빈공간이 많아서 개조하는데는 별 문제가 안됩니다.

인터넷 뒤져보니, 파나소닉의 AUDIO 바이오스를 개조해서 장착하는 것도 나오더군요.

이건 시간날때 해볼 생각입니다. 




짜잔~ 드디어 UNKNOWN REALITY 데모를 전부 돌릴 수 있는 환경이 갖춰졌네요.

샘플램 256KB 확장된 Y8950 사운드가 없으면, 제대로 안나오지요. ㅎ.ㅎㅋ

아래는 데모 첫부분의 메모리 용량 보여주는 부분입니다.

 

근데 이 화면을 포함한, 몇몇 데모에서  VDP 50Hz 모드로 진행되기 때문에,

아마 S-Video나 일반 컴퍼짓 비디오 케이블로 보시면 국산 TV에서는 제대로 안나올꺼에요.

수직 라인수가 많아서 화면도 좀 납작하네요. ㅋ

 

참고로 UNKNOWN REALITY 데모는 터보알 내장 메모리를 512KB 넘게 확장하면 구동이 안됩니다.

어쩔수 없이 A1WSX로 실행했어요.




소리도 잘 나오네요.

모노 출력이지만 오디오 연결이 쉽도록, 팩 우측에 사운드 출력 잭이 두개 달려있습니다.

전 그냥 슬롯 오디오-인 그대로 듣고 있습니다.




이제 남은건 문사운드군요. 이베이에 싸게 뜨기만을 기다릴뿐..ㅋ

 

아래에 샘플 메모리 확장 내용을 넣었습니다. 참고하세요.

 

File: AUDIO256.TXT - 28/09/1998

Subject: description to build 256kB Sampleram into Philips NMS1205 MSX-Audio

By: Jon De Schrijder (Jon.DeSchrijder@rug.ac.be) / MCCM

Needed:

*2 Dynamic RAM chips type 44256 (=4bits*256kB, 20pins DIL) These are rather expensive if you buy them new,

 but they can also easily been found on most older PC VGA-videocards, or on some 80286 motherboards, ...

*1 chipsocket DIL 16pins of a good quality (goldplated contacts)

*some wire

*of course: soldering iron, tin, tools, patience, ...

Step 1

------

Open your MSX-Audio module. (4 screws) There is no need to remove the print from the cartridgebox.

Step 2

------

Solder the chipsocket on top of IC8 (4256).

The best way to do this is to put some tin on the pins of IC8 and on the pins of the socket

 *before* you place the socket in its position.

Work as 'flat' as possible if you want to be able to close the cartridgebox afterwards.

Step 3

------

Take the first 44256chip and bend the following pins in a horizontal position,

 cut them shorter and put some tin on them: pin 1,2,5,8,16,17,18,19

Cut the following pins shorter and put some tin on them (do not bend in a horizontal position): pin 9,10,11,12

Pin assignments are as follows:

    ++ ++ ++ ++          

 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 

+20-19-18-17-16-15-14-13-12-11-+

+                              +

+++                            +

  +  view from above 44256 (1) +

+++                            +

+                              +

+-1--2--3--4--5--6--7--8--9-10-+

 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++

 ++ ++       ++       ++

Step 4

------

Take the second 44256chip and bend the following pins in a horizontal position,

 cut them shorter and put some tin on them: pin 1,2,5,18,19

Pin assignments are as follows:

    ++ ++          

 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 

+20-19-18-17-16-15-14-13-12-11-+

+                              +

+++                            +

  +  view from above 44256 (2) +

+++                            +

+                              +

+-1--2--3--4--5--6--7--8--9-10-+

 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++

 ++ ++       ++

Step 5

------

Put the second 44256(2) chip on top of the first one 44256(1) (both in the same direction)

 and solder them toghether with the vertical pins of 44256(2): 3,4,6,7,8,9,10,11,12,13,14,15,16,17,20

Step 6

------

The annoying part; make the following connections with some wire:

*pin 1 (44256(1)) to pin 7 (44256)

*pin 2 (44256(1)) to pin 6 (44256)

*pin 1 (44256(2)) to pin 12 (44256)

*pin 2 (44256(2)) to pin 11 (44256)

*pin 13 (44256) to pin 18 (44256(1))

*pin 14 (44256) to pin 18 (44256(2))

*pin 15 (44256) to pin 19 (44256(2))

Step 7

------

The difficult part; put the construction you have just made into the socket;

 in such a way that the pins 1 of all 3 chips (44256(1),(2) and the original 4256) match.

 (also pins 3,4,6,7,13,14,15,20 (44256) are put in their corresponding hole)

Before you press it definitely into place, make the following connections with wire:

*hole 1 (of the socket=pin 1 of the original 4256 chip) to pin 8 (44256)

*hole 2 to pin 9 (44256)

*hole 8 to pin 10 (44256)

*hole 12 to pin 11 (44256)

*hole 13 to pin 12 (44256)

*hole 15 to pin 17 (44256)

hole assignment is as follows:

+16-15-14-13-12-11-10--9+

+                       +

++                      +

 +                      +

++                      +

+                       +

+-1--2--3--4--5--6--7--8+

Note: only hole 5 and 14 remain open

Step 8

------

Make the following connections with wire:

*pin 36 of the mainchip (Y8950) (=4th pin of the upper row, counting from right) to pin 9 of IC2 (74LS04)

 (somewhere near the msxslot connector)

*pin 8 of IC2 (74LS04) to pin 16 (44256)

+14-13-12-11-10- 9- 8-+

+                     +

+++                   +

  +   74LS04          +

+++                   +

+                     +

+-1--2--3--4--5--6--7-+

Note: pin 5 (44256(1)), pin 5 (44256(2)), pin 19 (44256(1)) remain unconnected.

That's it!


2009년 6월 28일 일요일

MMC/SD Drive V2 - BIOS 전면개편

간만에 바이오스 수정계획을 잡아봤습니다.

사실 며칠 작업해서 50%정도 진행되었네요.

 

처음 생각은 기존 바이오스 유틸과 호환되는 수준에서 고치려고 했는데,

제한된 부분이 너무많아 그냥 호환 무시하고 만들고 있습니다.

 

아래가 바뀌게 되는 부분입니다.

 

- 바이오스(v3.10)에서 테스트 결과, 추가된 BASIC'N 동작에 문제가 많아서, 빠지게 됩니다.

  CALL 명령이 DOS1,DOS2,KANJI,BASIC'N 뱅크 스위칭되면서 이리저리 꼬이더군요.

  결론은 포기~ ㅎ.ㅎ

 

- DOS2와 묶여있던 KANJI 드라이버는 그대로 동작하도록 해놨습니다.

  물론 한자롬이 없는 시스템에서는 의미가 없지만,

  포트I/O로 된 한자롬 액세스를 메가롬 액세스로 패치할 여유가 될지도 모르겠습니다.

  어쨌거나 우선순위 꼴찌에 놔둡니다요.

 

- MMC/SD 카드는 16MB~2GB까지 지원합니다.

  기존 디스크 관리에서는 256MB까지가 한계였습니다. (FAT16모드 제외)

  이것 때문에 메모리카드 관리 구조를 몽땅 바꿔야해서 기존롬과 호환안됩니다.

 

- 많은 수의 디스크 관리를 위해서,

  디스크 매니져에서 폴더(그룹)를 사용합니다.

  파티션 정보는 기존 DISKMAN.DAT를 쓰지않고, 카드의 따로 할당된 영역을 사용합니다.

 

- MMC/SD 시스템 첫 인스톨시, 파티션 초기화를 DISKMAN이 하던 것을 바이오스가  하도록 수정되었습니다.

  파티션 초기화 안한상태로 윈도에서 DISKMAN구동시 인식불가되던 것도 사라지겠지요.

  그 외 유틸 내부적으로 수행되던 부분들이 바이오스 루틴으로 많이 옮겨졌습니다.

  결과적으로, 유틸과 바이오스의 버전 충돌도 인한 디스크 손상을 좀 줄일수 있을 듯 합니다.

 

- 파티션에서 기존 디스크 포맷은 1DD부터 23MB까지 많은 종류를 넣었는데요.

  활용도가 낮아서, 아래 4가지 포맷만 지원합니다.

  1DD(360KB), 2DD(720KB), HD(23MB),  HD(32MB)

  HD(32MB)는 DOS2에서만 쓸수 있습니다. DOS1에서는 용량 인식이 제대로 안되서 못씁니다요.

  (왜그런지는 저도 몰라요.ㅋ)

 

- 드라이브 4개 할당되는 것은 기존과 동일합니다.

  대신 드라이브 B를 내장 플래쉬디스크 대신, 메모리카드에 파티션 하나를 만들어서 쓸 수 있습니다.

  DOS 동작중에 내장디스크와 교환 가능합니다.

 

- 기존 디스크(파티션) 관련 유틸인

  DISKMAN, DSKCOPY, DISKEXE는 DISKMAN 하나로 통합됩니다.

  DISKMAN의 UI도 좀더 사용하기 쉽도록 바뀔 예정입니다.

  사실 메뉴얼이 부실해서 그렇겠지만, 기존 유틸의 사용법이 좀 어려웠던 것 같았습니다. ㅋ

 

- 디스크 부팅 옵션을 DISKMAN에서 관리합니다.

  기존의 SCC뱅킹 Disable, 디스크 속도 낮추기 등의 부팅옵션을 저장할 수 있습니다.

  매번 손으로 누르는 수고를 덜어주겠지요.

 

- 멀티-디스크 파티션의 관리가 좀더 편하게 됩니다.

  내부의 디스크 순서를 바꾸거나, 추가/삭제를 할 수 있습니다.

  각 디스크 별로 쓰기방지 기능을 쓸 수 있습니다.

  첫 실행(부팅) 디스크 설정이 가능합니다.

      예) 알레스트2의 경우 멀티디스크 순서가 데모-게임A-게임B 세장으로 되어있다면,

           2번 디스크(게임A)를 디폴트 부팅으로 설정가능합니다. 데모를 보려면 부팅중에 1번으로 바꾸면 되겠지요.

  유저 디스크 선택 옵션이 추가됩니다.

     이건 RunIT이라는 최근 등장한 FDD 에뮬의 기능인데 좋은 아이디어더군요.

     멀티-디스크 중 한장의 디스크를 유저디스크 옵션을 붙여두면,

     디스크 교환시 숫자키가 아닌 'U'키 혹은 특정키로 선택됩니다.

     예) 이스3의 경우, 유저디스크 한장에 게임 하나만 저장하기 때문에

           여러개 저장을 위해 유저디스크 5장을 추가했다면,

           자주쓰는 디스크 한개를 등록해서 쉽게 디스크 교환이 가능합니다.

 

아래는 바뀐 시스템 인스톨 과정을 볼 수 있습니다.

바이오스는 80% 작업이 완료된 상태입니다.

DISKMAN은 새로 만들어야하고요. 윈도용도 만들어야되니, 시간이 좀 걸릴 듯 하네요.

 

혹시, 더 필요한 기능 있으면 알려주세요~ ㅎ.ㅎ