2016년 3월 17일 목요일

FS-A1GT 키보드 필름커넥터 보수

제 터보알은 키입력이 가끔 안되는 경우가 있어요.ㅋ

키보드의 필름으로 된 커넥터 부분이 문제인데... 뺏다 꽂았다 반복하면서 많이 긁힌게 원인이 아닐까 싶었습니다.


암튼, 키가 잘 안눌리면 커넥터쪽을 좀 건드려주면 되었는데, 이젠 완전히 끊어진건지 살아날 생각을 안하더군요. 어흥...-_-

연필로 칠하면 좀 나을까 해서, 이리저리 색칠도 해보고 지우개로 좀 지웠다가... 삽질을 좀 했더니!!


드.디.어. 두둥~

.

.

.

입력 안되는 키가 더 늘었습니다!!!!!!!!!!!!!!! -_- 망했...

커넥터 끝부분을 2~3mm 정도 잘라내고 꽂았더니... 그래도... 역시나 안되네요.

아~ 멘붕!


일단 사건을 덮기(?) 위해, 멀쩡한 A1WSX를 열었습니다.

키보드 적출~ 흐흐흐 ㅋ


키보드를 바꾸고 사건은 깨끗하게 마무리~ 룰루루~ㅎ

색깔도 나름 잘 어울리네요. ㅎ.ㅎb




이렇게 끝나면 WSX가 섭섭하겠지요?


게시판을 뒤져보니, 고명호님의 키보드 수리기에서 "열선 보수제" 얘기가 있더군요.

옥션에서 검색해보니 종류가 하나 나오네요.

아래처럼 생긴 용액입니다. 사진은 크게 나왔지만 실제로는 쬐그만 병에 들어있어요.

1.4ml 대용량! 




먼저 멀티미터로 단선된 부분을 찾아서, 테스트 해봤습니다.

제품 안에 작은 붓이 하나 들어있는데요, 요걸로 칠하고 말리고 또 칠하고 반복하면 됩니다.


키보드 필름이 두장인데, 아래 사진의 필름은 그나마 양호한 편이구요. 선 하나만 끊어졌더군요.

살살 발라서 테스트해보니... 오호~ 전기가 통합니다. 구리를 갈아서 만든 용액인지는 몰겠지만, 암튼 신기합니다. ㅎ.ㅎㅋ




그럼, 본격적으로 작업에 돌입!

심각하게 긁힌 필름을 전부 재도색 하기로 결정했습니다.

3M 마스킹 테입으로 선따라 붙여주었구요.

붓으로 열심히 덧칠했습니다. 용액 한병으로 꽤 많이 쓸 수 있더라구요.




24시간 건조 후, 마스킹 테입을 걷어냈습니다.

약간 지저분하지만 OK 하고 넘어갑니다. ㅋ




살살 조심해서 메인보드에 끼우고, 키입력 테스트를 해봤습니다.

오오... 잘 되네요. "역시 돈으로 안되는건 없구나."를 가슴 깊이 새기고~ ㅎ.ㅎ

본체 나사를 조였습니다.


WSX랑 GT의 키보드가 서로 바뀌었는데, 그냥 이대로 쓰렵니다.

괜히 커넥터 뺏다 꽂았다 반복하다, 맛이 가면 머리가 아프니까요~ㅋ



그럼 즐거운 밤 되셔요~



2016년 3월 10일 목요일

MMC/SD Drive V3 제작 #9 - 스캔라인 효과를 넣어보자

저희 집에는 CRT 모니터가 하나도 없습니다. 전부 LCD만 갖고 있어요.

가끔 MSX로 게임하다 보면, 옛날(?) CRT에서 보여주던 스캔라인이 그리울 때가 있습니다.


그.래.서.

이걸 한번 만들어 봤습니다!


"응? 혹시 5년전에 만들었던 [스캔라인 이레이져] 얘기인가요? 라고 물으신다면,

"NO" 라고 일단 대답을 드리구요. ㅎ.ㅎㅋ


이번엔 순수 S/W 만으로 구현을 해보았습니다.

에뮬레이터 아니고, 실기에서 돌아가는거에요. 흐...


CRT 스캔라인 효과를 잠깐 설명드리면...

CRT에 전자가 주르르 스치며 영상을 만들어내면, 가로방향 전자 이동한 곳은 영상이 남게 되는데요.

화면 전체를 가로선(스캔라인)으로 모두 채우기 힘들기 때문에, 빈공간이 검게 남아있게 됩니다.

뭐, CRT 크기가 아주 작으면 이 공간이 안보일 수도 있어요.

20인치 쯤 되는 모니터에 240p 같은 몇개(?) 안되는 스캔라인 뿌리면, 검은 부분(라인)이 상당히 도드라지게 보입니다.


이런 현상은 LCD처럼 촘촘히 픽셀을 뿌려주는 디스플레이 기기에서는 나타나지 않습니다.

일부러 만들어내지 않는다면요.

MAME 같은 에뮬레이터는 단순히 빈 검정 라인뿐만 아니라, CRT/LCD의 RGB 형광 패턴도 흉내내는 기능도 있더라구요.


암튼, 이걸 MSX에서 S/W적으로 만들어보는겁니다.

최종 목표는 아래 그림처럼 되겠습니다.

캐슬에 나오는 주인공 되겠습니다요~ ㅋ



완전히 검정라인을 넣는 것 보다는, 50% 정도의 어두운 색으로 보이는게 좀 더 보기가 좋네요.



그럼, 이걸 어떻게 만들면 될까요?

아래처럼 주인공 그림이 16라인으로 만들어져 있는데, LCD 모니터는 이 그림을 화면 비율에 맞게 세로로 늘려서 표시합니다.

MSX에서 넌인터레이스 모드(240p)에서 쓰이는 부분이 192 또는 212라인 정도인데요.

1920 x 1080 해상도의 LCD 모니터에 출력하면, 세로가 5배 뻥튀기 되는 셈이죠.



만약 인터레이스 모드(480i)로 출력하게 되면 어떻게 될까요?

아래처럼 홀수, 짝수 화면이 번갈아가며 출력됩니다. 보통 odd, even field라고 불러요.

이 신호를 받은 LCD 모니터는 원래의 480라인 화면으로 재구성(디인터레이스) 후, 화면 크기에 맞게 늘려서 표시합니다.


아래 주인공은 원래 16라인으로 출력되지만,

LCD 모니터는 "아... 이거 원래 32라인 그림이구나" 라고 생각해서 홀/짝 화면을 합성하게 되는거지요.

눈에 보이는 영상에는 별 차이가 없지만, LCD 모니터가 생각하는 원본 영상은 이미 해상도 두배가 되었습니다.



그럼 여기서 홀/짝 화면 중 하나만 어둡게 만들수 있다면...

PC 용 에뮬레이터에서 보던 스캔라인 효과가 되지 않을까? 생각이 들지요?


아래처럼 홀수 화면(필드)는 원래 그림 그대로 출력하고, 짝수 화면(필드)는 어둡게 출력하면...

LCD 모니터가 합성을 해줍니다. "이건 원래 32라인으로 된 그림이야"라고 하면서요~

(줄무니가 있는 이상한 그림이라고 생각하겠죠. ㅋ)



그럼 어두운 화면은 어떻게 만들면 될까요?

잘 생각해보시면 답이 나옵니다. ㅋ



그럼, 결과 화면 감상하셔요~

MMC/SD Drive V3에서 구현된 CRT 스캔라인 효과입니다.

바이오스 다음 버전(v5.13)에서 기능 추가될 예정입니다.




2016년 2월 20일 토요일

메인 메모리의 최대치는?

얼마나 많은 메모리를 쓸 수 있을지 한번 테스트해보았습니다.

메인 메모리로 사용되는 메모리 매퍼만 의미합니다. VRAM 이런건 제외하구요.


실기에 4MBytes 확장램 카트리지를 꽂아서 테스트하면 좋겠지만,

제가 가진 카트리지가 얼마안되니, 에뮬레이터의 힘을 빌렸습니다.


참고로 MSX 슬롯은 총 16개이구요.

MSX2 이상인 경우 메인/확장 BIOS가 슬롯2개를 점유하니까,

남은 슬롯에 메모리 몽땅 장착하면 14개, 총 용량 4MB x 14 = 56MBytes 넣을 수 있습니다.

근데 이렇게 다 채우면, 디스크 드라이브도 없고 DOS2도 없고... 사실 할 수 있는게 없어요. ㅎ.ㅎ


그래서 일반 MSX2+ 모델인 파나소닉 A1WSX 모델을 기준으로 테스트하였습니다.

blueMSX의 A1WSX 머신 컨피그를 기본으로 사용합니다.

슬롯0,1,2,3 모두 확장한 상태에서 BIOS 등의 내장 롬이 있는 슬롯 외엔 몽땅 램 4MBytes 장착!!

컨피그 파일은 아래처럼 됩니다.

[CMOS]

Enable CMOS=1

Battery Backed=1

[FDC]

Count=1

[CPU]

Z80 Frequency=3579545Hz

[Board]

type=MSX-T9769B

[Video]

version=V9958

vram size=128kB

[Subslotted Slots]

slot 0=1

slot 1=1

slot 2=1

slot 3=1

[External Slots]

slot A=1 0

slot B=1 1

[Slots]

0 0 0 0 84 "" ""

0 0 0 0 32 "" ""

0 0 0 0 34 "" ""

0 0 0 0 26 "" ""

0 0 0 0 24 "Machines\MSX2+ - Panasonic FS-A1WSX\a1wskfn.rom" ""

0 0 0 4 20 "Machines\MSX2+ - Panasonic FS-A1WSX\a1wsbios.rom" ""

0 1 0 4096 22 "" ""

0 2 2 2 78 "Machines\MSX2+ - Panasonic FS-A1WSX\a1wsmus.rom" ""

0 3 0 4096 22 "" ""

1 2 0 4096 22 "" ""

1 3 0 4096 22 "" ""

2 0 0 4096 22 "" ""

2 1 0 4096 22 "" ""

2 2 0 4096 22 "" ""

2 3 0 4096 22 "" ""

3 0 0 4096 22 "" ""

3 1 0 2 20 "Machines\MSX2+ - Panasonic FS-A1WSX\a1wsext.rom" ""

3 1 2 4 42 "Machines\MSX2+ - Panasonic FS-A1WSX\a1wskdr.rom" ""

3 2 2 4 57 "Machines\MSX2+ - Panasonic FS-A1WSX\a1wsdisk.rom" ""

3 3 0 6 142 "Machines\MSX2+ - Panasonic FS-A1WSX\a1wsfirm.rom" ""

 


늘어난 램을 쉽게 테스트하기 위해, DOS2로 부팅합니다.

카트리지 슬롯 A에 DOS2를 장착하구요, 슬롯 B에는 4MBytes 램 카트리지 장착했습니다.

결국 램이 장착된 슬롯은 아래처럼 되네요.

슬롯0-1, 슬롯0-3

슬롯1-0, 슬롯1-2, 슬롯1-3

슬롯2-0, 슬롯2-1, 슬롯2-2, 슬롯2-3

슬롯3-0


슬롯 10개에 모두 4MBytes, 총 용량 40MBytes를 장착했습니다. ㅎㄷㄷㄷㄷ


그럼 제대로 부팅되는지 볼까요?

아래처럼 정상적으로 40960KBytes 표시됩니다.

전원 올리면, 화면 깜깜한 상태로 한참 있길래 안켜지는 줄 알았습니다.ㅋ

40메가 램 체크하는데 시간이 좀 걸리네요.




DOS2 부팅 후, 매퍼가 모두 인식되었는지 확인해봅니다.

memory 명령을 쳤어요.

슬롯0-1의 메모리가 메인(primary) 메모리로 등록이 됐군요. 






슬롯0-1 이후 부터는,

번호가 큰 슬롯3-0 부터 역순으로 슬롯0-3까지 10개 모두 제대로 표시가 되었습니다.


음... 결론은 "40MBytes 까지는 잘 되더라" 입니다.


그럼, 즐거운 주말되셔요~ ㅎ.ㅎ


PS. MSX-DOS2의 메모리 매퍼 루틴은 한가지 제약이 있습니다.


메모리 매퍼 한개는 H/W적으로는 4MB(4,194,304 bytes)가 최대 용량이니까,

각 매퍼의 세그먼트(16KB) 갯수는 256개가 됩니다.

근데, DOS2의 매퍼 세그먼트 루틴은 Z80의 8BIT 레지스터를 세그먼트 갯수로 사용하는데,

8BIT 최대치인 255까지만 쓸 수 있어요.


위의 스크린 샷에서 total RAM 정보에 4,177,920 bytes로 나오는 이유가 그 때문입니다.

마지막 1개 세그먼트(16KB)를 사용하지 못하기 때문에 나타나는 현상이에요. ㅎ.ㅎ