2024년 6월 19일 수요일

PAC-V Tool v1.10

 


Download: PAC-V_Tool_110_20240619_1.zip


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

    PAC-V Tool v1.10 (2024-06-19)

        By Yeongman Seo <sharksym@hitel.net>

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


* UPDATE


  SRAM/FRAM 구조가 변경되었습니다.

  FMPAC.ROM을 다운로드하면, 새로운 BIOS로 동작합니다.


  기존 Dummy BIOS 모드가 삭제되고, BASIC'n 2.1 롬이 탑재됩니다.

  참고) BASIC'n 모드에서도 PAC 카트리지로 정상 인식됩니다.


  PAC SRAM 8KB 영역이 두개로 늘어났습니다.

  부팅 시, P키를 눌러서 동작모드 및 SRAM 영역 선택이 가능합니다.

  커서 좌/우로 모드 선택 후 RETURN 키를 눌러 적용합니다.


  동작모드는 아래 4가지입니다.

  BASIC'n 2.1 [PAC SRAM #0]

  BASIC'n 2.1 [PAC SRAM #1]

  FMPAC BIOS [PAC SRAM #0]

  FMPAC BIOS [PAC SRAM #1]



* PACV.COM


  PAC-V 카트리지의 SRAM을 관리하는 프로그램입니다.

  MSX-DOS1 및 MSX-DOS2 에서 동작합니다.

  BIOS롬, LED패턴을 카트리지에 다운로드 할 수 있으며,

  파나소닉 PAC 데이터를 SAVE/LOAD 할 수 있습니다.



* 요구 사항


  PAC-V 카트리지

  MSX-DOS1 또는 MSX-DOS2



* 파일 목록


  PACV.COM     - 카트리지 관리 프로그램

  PACV.INI     - LED 패턴 (기본 수직 막대)

  PACV_1.INI   - LED 패턴 샘플#1

  PACV_2.INI   - LED 패턴 샘플#2

  PACV_3.INI   - LED 패턴 샘플#3

  README_K.TXT - 한글 설명서



* 사용법


  PACV W|P|S|L Filename [Slot[SubSlot]]


    W: FMPAC BIOS 다운로드   (영어 및 한글 패치버전 가능)

    P: LED 패턴 데이터 다운로드       (슬롯번호 생략가능)

    S: PAC 데이터 덤프 및 디스크 저장 (슬롯번호 생략가능)

    L: PAC 데이터 다운로드            (슬롯번호 생략가능)


  예) PACV W FMPAC.ROM 1

      PACV P PACV.INI

      PACV S SRAM.PAC

      PACV L SRAM.PAC



* 주의 사항


  PACV.COM 프로그램은 PAC-V 카트리지 전용 툴입니다.

  파나소닉의 PAC 및 FM-PAC 카트리지에서는 동작하지 않습니다.


  S 또는 L 커맨드로 PAC 데이터 SAVE/LOAD 시,

  현재 설정된 SRAM 8KB 영역 한개만 적용됩니다.

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입니다. 참고하셔요~



그럼, 이만...