이번에는 특정 슬롯의 메모리를 R/W 할수 있는 함수들을 만들어봤습니다.
MPX 또는 MMC/SD 드라이브, 메가플래시롬팩 등의 메모리맵 I/O를 쓰는 기기를 액세스시 사용할 수 있습니다.
1바이트 R/W는 MSX 메인 바이오스 루틴을 쓰면 페이지 제한없이 가능하니깐,
일단 메인 바이오스 콜을 기본으로 넣었습니다.
그 다음은 블럭 메모리 전송인데, 이 경우는 목적지 페이지1,2만 가능하도록 했습니다.
메모리 위치는 페이지 상관없지만, 목적지 페이지와 동일하면 안되겠지요.
물론 전송 사이즈가 커서 어드레스가 페이지를 가로지르면 문제가 됩니다요. ㅋ
안전하게 페이지0->1, 페이지1->2, 페이지2->1 등등으로
테스트용으로 MPXP 프로그램을 뱅킹 라이브러리를 쓰도록 초간단 버전을 하나 만들었습니다.
이름은 MPXPS (마지막 S는 Simple을 의미합니다.ㅋ)
참고로, 뱅킹라이브러리 릴리즈할때, MPXPS 소스도 예제로 들어갈 예정입니다.
실행해보니, MMC/SD HW V2에서 128KBPS짜리가 겨우 돌아가는 정도는 되네요. ㅎ.ㅎ
사실 원본 MPXP는 전송루틴이 어셈으로 되어서 속도가 조금 빠른편인데요,
어셈 안쓰고 일반 C함수 콜만으로도 어느정도는 쓸만한 것 같습니다. ㅋ
그 외, 틈틈히 필요한 함수들 만들고 있습니다.
키보드 입력(RAW I/O)이나 터보알/파나소닉MSX2P CPU 모드 등등...
점점 라이브러리가 커지고 있네요. ㅋ
그래픽과 사운드(BGM?) 예제 두어개 만들면, 이대로 1차 릴리즈해야될거 같습니다.
생각날때마다 조금씩 진행하다보니 진도가 넘 느리네요. ㅎ.ㅎ
혹시 관심있으신분, 요청사항 있으면 댓글 달아주세요.
댓글 없음:
댓글 쓰기