최근에 천국동 질답 게시판에 MAD-80 글이 하나 올라왔었습니다.
http://cafe.naver.com/msx/13227
메모리 덤프 명령 쓸 때, 시작 주소를 C000H 이후(페이지3)로 설정하면 주소가 0000H으로 바뀌는 현상에 대한 것이었습니다.
일단 이경우가 발생하면 0000H ~ BFFFH 메모리 덤프를 반복하게 됩니다. (무한루프~ㅋ)
MAD80이 오래된 프로그램이긴 하지만...
80년대에 아이큐1000/2000에서 쓰셨던 분들이 많을거라 생각해서 몇가지 테스트를 해보았습니다.
사실 저는 이거 안써봤어요. ㅎ.ㅎ
아래는 MAD80 설명서에서 긁어온 내용입니다.
1) MAD80 2.0 의 상주과정.
기존의 MAD80 에서는 무조건 슬롯 2에 MAD80 을 세트시킴으로 메인램이 슬롯 0의
확장슬롯2에 있던 MSX 2 에서는 안될수밖에 없었다. 그러나 MAD80 2.0 에서는 다
음과 같은방법으로어떤환경에서든 잘 상주시킬수 있게 되었다. MAD80 2.0 은 페
이지 1에 상주하고 페이지 0을 오브젝트 영역으로 쓰는데 찾는방법은 각 기본슬
롯 및 확장슬롯을 모두조사하여 그 페이지가 램이면 그 슬롯의 페이지 1에 MAD80
2.0 을 상주시킨다. 예를들어 MSX 2 의 경우라면 0(기본슬롯)-0(확장슬롯),0-1로
찾아나가다가 0-2의 페이지 1에서 램이 발견되므로 그곳의 페이지 1에 MAD80 2.0
을 상주시키고 페이지 0을 오브젝트 영역으로 사용한다. 그러나 항상 상주하는
위치가 같은것은 아니다.(확장램이 있을경우 그곳에 자리잡는다)
요약을 해보면,
- MAD80.BIN 파일을 로딩/실행하면 램에 상주한다.
- 페이지1 (4000H~7FFFH)에 상주하며, 슬롯 위치에 상관없이 상주 메모리를 찾는다.
- 확장램이 발견되면 확장램에 상주한다. (여기서 확장램은 재미나 램카드일 확률이 높겠죠?)
그럼, 테스트를 해봅니다.
blueMSX 에뮬에서 FS-A1WSX 머신으로 구동했습니다.
참고1) A1WSX는 슬롯0, 슬롯3 두곳이 확장되어있고, 메인메모리(64KB)는 슬롯3-0에 위치합니다.
참고2) MAD80의 슬롯지정은 일반적인 MSX BIOS의 슬롯ID와는 다릅니다. 설정값은 매뉴얼을 참고하세요.
1)
#DC00,DC01F 명령으로 메모리 32바이트를 덤프해봤습니다.
어라? 메인램이 있는 슬롯3-0은 덤프가 정상적으로 되네요.
그 외의 슬롯은 모두 오동작합니다.
아래 슬롯0-0에서 덤프한 것 처럼 무한루프로 빠지면서, 0000H ~ BFFFH 덤프가 반복됩니다.
비어있는 카트리지 슬롯이든, 64KB 롬팩을 넣은 슬롯 상관없이 오동작합니다. (페이지3은 덤프 불가!)
2)
메인메모리(BIOS가 선택하는 메인메모리) 위치와 덤프 조건과 연관이 있을까요?
슬롯2에 메모리매퍼 2048KB를 설정하고 부팅합니다. 이렇게 되면 메인메모리가 슬롯2로 선택이 되겠죠?
덤프를 해보면 아래처럼 나오네요.
메인램이 있는 슬롯2에서는 C000H 이후 메모리가 제대로 덤프가 됩니다.
근데, 본체 내장메모리인 슬롯3-0에서 덤프하면 오동작하네요. @.@
그럼, 메인메모리가 아닌 슬롯은 무조건 오동작하는걸까요?
3)
그럼, MAD80 프로그램이 어느 슬롯에 상주해있는지 확인해봅시다.
슬롯2의 페이지1을 덤프합니다. --> 아무것도 없네요. FFFF....
슬롯3-0의 페이지1을 덤프합니다. --> MAD80 프로그램이 보이네요.
어랏, 아까 슬롯3-0의 페이지3을 덤프하면 맛이 갔는데...ㅋ
현상을 정리하면...
- 메인메모리로 선택된 슬롯은 페이지3을 덤프할 수 있다.
- 메인메모리로 선택된 슬롯이 아니라면, 본체 내장/외부 상관없이 페이지3을 덤프할 수 없다.
그럼, 결론은 뭘까요?
-> MAD80으로 페이지3을 덤프하는 용도로 쓰지 못함
이상입니다~ ㅎ.ㅎ