안녕하세요, 개발자 kkamagui님의 『64비트 멀티코어 OS 원리와 구조』 책으로 OS 공부를 하고 있는 개발자 입니다.
다름이 아니라, 5장 - "플로피 디스크에서 OS 이미지를 로딩하자" 내용 중 BootLoader.asm에
Floppy Disk의 트랙 당 섹터 개수가 18개라 소개되어 있고, 섹터 번호를 19와 비교(cmp al, 19)하도록 되어있는데요
책을 쓰신 시점에서 사용하신 qemu@0.10.4 를 사용하면 정상적으로 작동하지만,
(어떤 버전부터 변경된 건지는 확인을 못하였는데) 최신 버전(20181211)인 qemu@3.1.0에서는
FDRIVE_DISK_144 1.44 MB disk FDRIVE_DISK_288 2.88 MB disk
에뮬레이터의 Floppy Disk가 1.44 MB FD에서 2.88 MB FD로 변경되면서
트랙 당 섹터 개수가 36개로 변경되었습니다, 따라서 19(=18 + 1)가 아닌 37(=36 + 1)과 비교를 해야 정상 작동합니다.
qemu@3.1.0에서 Floppy Disk의 트랙 당 섹터 개수를 18개로 상정하고 제작한 BootLoader를 실행하면
1234567890123456763610
18개의 섹터까지는 정상적으로 출력되지만, 19번째에는 19번째 섹터를 읽지 않고 헤드/트랙을 변경하기 때문에
19번째 값을 읽어와 출력하는 부분 부터는 정상적인 값들이 나오지 않습니다.
요약하자면, BootLoader.asm에 Floppy Disk의 트랙 당 섹터 개수를 36개로 바꿔 설명하고
섹터 번호를 37(36 + 1)과 비교해야 한다고 정정해주시면
초반에 초심자 분들이 BootLoader에서 허우적대는 일을 막을수 있을 것 같습니다.