얼마나 많은 메모리를 쓸 수 있을지 한번 테스트해보았습니다.
메인 메모리로 사용되는 메모리 매퍼만 의미합니다. 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)를 사용하지 못하기 때문에 나타나는 현상이에요. ㅎ.ㅎ