안녕하세요, 개발자 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에서 허우적대는 일을 막을수 있을 것 같습니다.