2024년 6월 12일 수요일

Leonardo Padial 아자씨와 'MMC Disk'

구글 포토에서 (많이) 지난 6월 12일 사진을 띄워주길래, 조금 적어봅니다.

아래 사진은 2005-06-12에 찍은 건데, 당시 폰카메라 화질이 안좋아서 흐릿하네욤 ㅎ.ㅎ

제 GT에 LPE-MMC-V1 카트리지를 꽂은 모습입니다.



기억하시는 분 계시겠지만, MMC/SD Drive의 옛 이름 'MMC Disk'이죠.

2004년에 MMC Disk를 만들어서 공개했을 때, 유럽 아자씨들이 관심을 꽤 보이더라구요.


사진 보시면 SCC 칩이 안보이죠?

코나미 SCC게임들을 구동하거나 MGSEL 등의 뮤직 프로그램을 활용하려면 SCC가 있는 편이 좋은데요.


왠만한 MSX 유저들은 사운드 전용 SCC카트리지를 하나씩은 갖고 있었으니까,

이런 MMC/SD 미디어를 쓰는 디스크드라이브에 자체에 대한 것으로 관심이 많이 받은 것 같아요.

그리고, 선라이즈 IDE에 CF-SD 어댑터 쓰면 되는데, 이딴 거 왜 만들었냐고 핀잔도 좀 받았다는 게...ㅎ.ㅎㅋ


암튼 2005년쯤 Padial씨가 연락이 왔는데,

제 회로를 기반으로 No SCC 버전의 MMC Disk를 만들었다고 하면서, 보드 하나를 선물로 주겠다고 그러더라구요.

그래서 그 때 받았던 보드가 LPE-MMC-V1이었습니다.


그 후로 많은 교류는 없었지만, 20년이 지난 지금은 고인이 되셨네요.

이젠 이메일도 못 보낸다능...ㅠ.ㅠ



암튼, 그 후로 LPE-MMC 시리즈가 꽤 많이 나왔는데요.

아래 사진은 2007년에 나왔던 LPE-MMC-V6입니다.

확장슬롯 통합 버전이라서, 서브슬롯 1개는 MMC Disk가 점유된 상태니 나머지 3개 슬롯만 보이네요 ㅎ.ㅎ




갑자기 구글 포토에서 사진이 뜨는 바람에 좀 끄적여봤습니다.


즐거운 오후 되세요~ ㅎ.ㅎ/


HI-TECH C v3.09 - Win32 Recompiled version test

모두(?)가 아시는 그 하이테크 C 컴파일러의 Win32 버전이 나왔습니다.

무슨 개소리냐구요? ㅎ.ㅎ


.

.

.


제가 20년 전에 처음 HI-TECH C를 쓸 때는 MSX 에뮬(paraMSX)을 이용했었습니다.

뭐, turboR 실기에서도 소스 컴파일을 할 수 있습니다만...

당시 GT + MMC/SD 조합으로도 긴~긴~ 빌드 타임을 기다리는 건 무리였죠ㅋ


암튼 그렇게 쓰다가, 2008년 부터는 성능이 괜찮은 윈도용 CP/M 에뮬을 발견해서 지금까지 활용했습니다.

커맨드 프롬프트에서 직접 실행 할 수 있어야, MAKE 등의 기타 툴을 활용하기 좋으니까요.

참고로 CP/M 에뮬은 일본 아자씨가 만든 CP/M EXEcutor입니다.


그러다가 개인 프로젝트의 소스가 점점 커지고 윈도에서도 작업 효율이 점점 안좋아졌는데요.

시간이 지나면 PC 성능도 함께 올라가니까 그럭저럭 에뮬로 버틸만 했습니다요.


시간은 흘러~ 1년, 5년, 10년, 15년...

어느날(며칠 전) HI-TECH C가 디컴파일이 되었다는 소식을 듣게 되었습니다 ㅎ.ㅎ


원래 HI-TECH C CP/M 버전은 ANSI C를 지원하는 상용 컴파일러입니다.

근데 20년 전에 제작사가 사후지원을 종료하면서, 프로그램을 공개(free)로 풀어버렸죠.

저도 옵티마이저, 뱅킹 툴 등을 만들고 짜깁기해서 지금껏 잘 쓰고 있는데요.


최근 이 CP/M용 실행파일을 디컴파일해서 활용가능한 수준의 C 소스로 만든 분이 나왔더라구요.

대충 히스토리를 보니...


먼저 CPP, P1, CGEN, ZAS, LINK 등의 기본 컴파일러, 어셈블러가 만들어졌구요.

https://github.com/nikitinprior?tab=repositories


다른분이 LIBR(라이브러리안)을 추가하고, 소스를 모두 묶어서 빌드할 수 있게 만들어놨네요.

https://github.com/ogdenpm/hitech


오~~ 필요한 거 다 있네요? ㄷㄷㄷ

궁금해서 바로 받아서 빌드해봤습니다 ㅎ.ㅎ

참고로, 최종 커밋은 지난 5월 31일에 들어갔네요.

https://github.com/ogdenpm/hitech/commit/6c762963ce7ab16fef74b7551588411abbc6e69a



간단한 Hello World 프로그램을 컴파일해서 비교해보니, 출력물이 오리지널과 똑같습니다. 굿굿!!


모든 툴이 진짜 다 괜찮은지 확인하려면, 큰 소스를 빌드해보는 방법뿐이겠죠?

M 파일매니저를 빌드해봅시다!


먼저, CP/M 에뮬을 쓰는 MAKEFILE을 뜯어고쳐서 Win32 리컴파일 버전을 쓰도록 수정했습니다.

참고로 CP/M은 서브디렉토리 개념이 없어서, 편하게 쓰려면 Tool, LIB, Source 등을 모두 개별 드라이브로 분리해야하는데요.

다행하게도 CP/M EXEcutor는 윈도의 폴더를 에뮬의 드라이브로 매핑해주는 기능이 있습니다.

그래서 제가 쓰는 툴들은 가상의 드라이브(A: B: C: D:)를 쓰도록 환경을 구성했었죠.


Win32 리컴파일 버전은 파일명에 디렉토리 패쓰를 쓸 수 있고, 긴파일명도 당근 지원됩니다.

M 파일매니저를 빌드해보니, 출력물은 거의 똑같네요.

바이너리에서 차이나는 부분은 사실 CP/M의 레코드 사이즈(128 바이트)로 인한 거였구요.

실제 동작하는 영역은 똑같았습니다. 완벽하네요!! ㅎ.ㅎb


아래의 M.COM 실행파일(멀티뱅크 로더)를 비교해보면, 끝부분의 dummy 영역만 차이가 나는 것을 볼 수 있습니다.




아래는 긴파일명(LFN)을 테스트해 본 모습입니다.

MPXFW.C였던 파일명을 길게~~ 30글자 넘게 만들어도 잘 컴파일됩니다.



링커의 MAP파일에서도 아래처럼 정상적으로 표시됩니다.

라이브러리도 디렉토리 패쓰를 지정할 수 있어서 좋아요.



아래는 MAP파일에서 조금 동작이 달랐던 부분인데요.

같은 오브젝트 내의 심볼을 이름으로 정렬하느냐, 주소로 정렬하느냐 정도의 차이였습니다.

어차피 사람이 인식하는데엔 별 문제없는 수준입니다요 ㅎ.ㅎ




그리고, 가장 중요한 빌드 타임을 비교해보아요~


CP/M 에뮬 + Z80 바이너리 VS Win32 네이티브 프로그램

얼마나 빨라졌을까 궁금하시죠? ㅎ.ㅎ


# M 파일매니저 빌드

CP/M 에뮬 조합 환경 -> 약 55초

Win32 리컴파일 버전 -> 약 16초


# C LIB x 8개 빌드

CP/M 에뮬 조합 환경 -> 약 10분

Win32 리컴파일 버전 -> 약 1분 15초


속도가 많이~많이~ 빨라졌네요!

참고로, C 라이브러리는 멀티코어로 8개 동시에 빌드한 상태였습니다.

이거 순차적으로 빌드하면 1시간 걸립니다요. (아마 MSX로 빌드하면 하루종일ㅋ)

제 PC는 라이젠5 7600입니다. 참고하셔요~



그럼, 이만...


2024년 6월 9일 일요일

지난 20년 개발의 추억 #9 - XII-V

월간 추억팔이 #9편이 나왔습니다~ ㅎ.ㅎ


#1 ~ #8편은 아래 링크를 이용하세요!

https://sharksym.blogspot.com/2023/07/20-1.html

https://sharksym.blogspot.com/2023/08/20-2.html

https://sharksym.blogspot.com/2023/10/20-3.html

https://sharksym.blogspot.com/2023/10/20-4-mmcsd-drive-v3.html

https://sharksym.blogspot.com/2023/11/20-5-paramsx-r.html

https://sharksym.blogspot.com/2024/01/20-6-paramsx-r-v11.html

https://sharksym.blogspot.com/2024/03/20-7-audiofactory.html

https://sharksym.blogspot.com/2024/04/20-8-mmcsd-drive-v4.html


2019년으로 넘어가면서 파라동에도 많은 변화가 생깁니다.

일명 '대란 X-II' 본체 수백대가 장터에 나오면서, 새로운 X-II 유저가 많이 늘었습니다.

작년 2018년에 MMC/SD V4가 나오게 되면서, 주변기기가 없던 분들도 X-II를 쉽게 활용할 수 있게 된 것도 하나의 이유겠죠? ㅎ.ㅎ


조금 문제라면...

'대란 X-II'로 MSX 실기를 처음 접하시는 분들은, 어쩔수 없이 '삽질'을 많이 하셨던 것 정도겠네요.

안그래도 슬롯 동작에 좀 문제가 있던 모델인데, 침수 피해를 복구한 본체들이라... 상태가 더 메롱메롱ㅋ


저는 X-II를 써본 기억이라고는 88년 쯤, 아는 형네 컴터로 조금 만져본 게 전부였는데요.

이번 '대란 X-II'로 구한 기기로 저의 주변기기 테스트용으로 잘 쓰고 있습니다요~ ㅎ.ㅎ

(MMC/SD V4 만들 때에도 X-II 땜에 겁나 힘들었슴다 ㅠ.ㅠ)



어느날, 이 많은 X-II를 좀 더 활용할 수 있는 방법이 없을까? 고민하다가 두가지를 생각했습니다.


1) Z80 고속모드 및 잡다


MSX 본체를 싸게 만들 수 있게 된 이유 중 하나는, 야마하, 도시바의 MSX-ENGINE 칩 때문이었는데요.

후기 MSX2+/turboR 기종들은 Z80 내장된 도시바의 T9769 시리즈를 사용하구요.

초기 MSX2 기종들은 Z80 없는 야마하 S1985를 주로 씁니다.

대우 MSX2(CPC-300/400) 기종들은 MSX-ENGINE이라고 부르긴 민망하지만, 확장슬롯과 메모리매퍼 256KB 로직을 묶은 칩을 썼습니다.


근데, 대란 X-II를 사용기들을 보니, 본체의 Z80, RTC 칩이 죽어있는 경우가 꽤 많더라구요.

저도 Z80 교체하고 VDP도 V9958로 하나 바꿔서 사용하고 있습니다.


암튼 기존 Z80 및 주변 칩들을 뽑고, 작은 도터보드를 꽂아서 활용성을 높이는 거죠.

Z80 20MHz + 램 + 기타 등등 짬뽕하는거죠. turboR BIOS로 노말/고속 모드 대응도 하구요.

물론 VDP는 V9958로 업글해야겠지만요.


근데 X-II를 일년 넘게 써보니...

보수했던 키보드는 역시나 또 접점불량 고질병 발생.

전면슬롯, 외부 확장슬롯 및 주변기기 카트리지들의 동작 호환문제.

AV 보드 동작 불안 등등

.

.

.

이건 뭐, 종합 병동이네요. 차라리 AV보드, 키보드를 새로 만드는 게 X-II 활용에 더 도움이 될 것 같았습니다.

결국 이 계획은 접었습니다요! 에혀...ㅋ



2) X-II 전용의 LED Visualizer


X-II 전면을 보면 FDD용 베이가 2개가 있는데요.

여기 여분의 FDD B: 쪽에 PAC-V의 LED 비주얼라이저를 박으면 멋지구리할 것 같은 느낌이 들더라구요.

사이즈를 측정해보니, LED도 잘 보이고 PCB도 수납하기에 별 문제 없어보였습니다.

아래처럼 만들면 되겠더라구요.



이름은 XII-V로 정했습니다. 이름만 봐도 X-II 전용 비주얼라이저 같죠? ㅎ.ㅎ


참고로 PAC-V는 PAC 기능에 LED Visualizer가 추가된 일반적인 카트리지 형태입니다.

슬롯 하나를 점유하는 방식이죠.

근데 X-II는 이걸 본체에 내장해야하니까, 사용자가 슬롯을 맘대로 고를 수가 없습니다.

게다가 본체의 확장슬롯(SLOT 0-0, 0-1, 0-2, 0-3)은 이미 점유된 상태라 빈 곳도 없구요.


그럼 XII-V에 확장슬롯을 넣고 슬롯 커넥터 3개 + 비주얼라이저를 만들면 어떨까? 고민도 잠깐 해봤는데요.

후면 슬롯을 개조해서 /SLTSL 3개를 reserved pin을 활용해서 출력, 전용의 서브슬롯 x3을 장착하는 방식이죠.

.

.

아앜... 배보다 배꼽이 커지네요. 포기~ㅋ


결국, PAC 기능은 완전히 제거하고 LED Visualizer만 I/O 포트로 구현하게 됩니다.

문사운드 같은 I/O 카트리지 형태로 진행합니다. 전면부 슬롯과 병렬로 케이블을 연결해서 I/O 포트만 사용합니다.


PAC-V의 비주얼라이저와의 차이라면...

PAC-V는 LED 애니매이션 패턴을 SRAM에 저장하고 배터리 백업으로 동작하지만,

XII-V는 이 패턴이 플래쉬롬에 미리 기록되어있어서 배터리를 쓰지않습니다.

대신 PAC-V처럼 유저가 패턴을 편집할 수는 없지만, 미리 내장된 패턴 4개 중에서 선택해서 쓰는 방식입니다.



이번 XII-V는 오버리치님, 곰님과의 협업(콜라보~)으로....

회원님들의 전면부 덮개를 받아서 레이저로 가공 및 아크릴 덮개 제작과 슬롯 케이블 작업도 진행되었습니다.

저는 LED쪽과 메인보드 제작만 했습니다 ㅎ.ㅎ


그리고, 가끔 장터를 보면 XII-V를 구하신다는 분이 계시던데, 이건 앞뒤가 좀 안맞는 얘기입니다요.

XII-V로 개조된 X-II를 구매하신다고 하면 말이 되겠지만요.



그럼, 다음편에서 뵙겠습니다! ㅎ.ㅎ/