장 - 9
대용량 하드 드라이브 작업
대용량 하드 드라이브 작업
이전 장에서는 BIOS 디스크 기능과 하드 디스크의 물리적 미디어에 액세스하기 위해 인터럽트를 사용하는 방법에 대해 논의했습니다. 거기서는 INT 13H 함수를 사용하여 하드 드라이브에 접근했습니다.
INT 13H 인터페이스는 읽기, 쓰기, 포맷, 확인 등 다양한 명령을 지원하며, 이러한 명령은 BIOS로 전달된 후 하드 드라이브로 전달됩니다. 오랫동안 DOS에서 사용되었기 때문에 INT13H가 수년간 표준이었습니다.
INT 13H는 디스크 기하 구조 사양에 24비트를 할당하고, 호출 프로그램이 하드 디스크의 특정 매개변수를 알고 디스크에 액세스하기 위한 정확한 헤드, 실린더, 섹터 주소 지정을 루틴에 제공하도록 요구합니다.
BIOS는 BIOS 설정 프로그램에서 구성된 대로 하드 드라이브 구조를 사용합니다. INT 13H 인터페이스에서 디스크 지오메트리 사양을 위해 할당된 24비트는 다음과 같이 구분됩니다.
- 실린더 번호는 10비트입니다. 따라서 실린더 총 개수의 최대 한도는 1024개입니다.
- 8비트는 헤드 번호입니다. 따라서 총 골 수의 최대 한도는 256입니다.
- 섹터 번호는 6비트입니다. 따라서 최대 총 섹터 수는 63개까지 가능합니다.
따라서 이 접근 방식이 지원하는 최대 섹터 수는 1024 * 256 * 63 = 16515072에 도달할 수 있습니다.
즉, INT13H 인터페이스는 최대 약 1,650만 개의 섹터를 포함하는 드라이브를 지원할 수 있으며, 섹터당 512바이트를 기준으로 최대 8.46GB가 됩니다. 제가 설명하고 싶은 것은 바로 이것입니다. 따라서 이 모든 함수나 INT 13H를 사용하면 최대 8.46GB의 디스크에만 액세스할 수 있습니다.
이것이 최근 몇 년 사이에 이 기존 인터페이스의 한계로 인해 하드 드라이브를 처리하는 새로운 방식이 선호되면서 이 기존 인터페이스를 폐기하게 된 이유입니다. 이에 대해서는 이 장에서 나중에 설명하겠습니다.
우선, 이야기 하나 해드릴게요!
11년 전, 제가 중학교 7학년이었을 때, 우리 학교에서 42MB 하드 드라이브에 대해 들었습니다. 아마도 IBM의 WDA-L42였을 겁니다. 당시에 저와 제 친구들에게는 그렇게 큰 용량의 하드 드라이브가 있을 거라고 상상하기가 정말 어려웠습니다.
INT 13H 방법론은 오늘로부터 약 20년 전에 개발되었습니다. 이제 8GB 하드 드라이브가 당시 누구도 꿈에서도 상상하지 못했을 만큼 큰 용량이었다는 걸 알 수 있을 겁니다. 하지만 오늘날 8GB 하드 드라이브에 관해 PC 사용자에게 이야기하면, 아마도 저장 용량이 작다고 하며 사용하고 싶어하지 않을 것입니다.
이것이 INT 13H 인터페이스가 마침내 현대 시스템에서 더 이상 유용하지 않게 된 이유입니다. INT 13H는 디스크 지오메트리를 할당하는 데 24비트를 사용했으며, 안타깝게도 기존 BIOS INT 13H 인터페이스를 확장할 수 없었습니다. 확장했다면 많은 오래된 하드웨어와 소프트웨어 제품이 작동을 멈출 것이기 때문입니다. 수백만 개의 오래된 소프트웨어와 하드웨어 제품이 작동을 멈추면 오늘날의 컴퓨터 시장은 결코 이런 큰 변화를 견뎌낼 수 없을 것입니다.
이러한 상황을 고려하여 INT 13H는 INT 13H 확장이라는 새로운 인터페이스로 대체되었습니다. 그러나 INT 13H는 DOS 및 일부 다른 오래된 운영 체제에서도 호환 목적으로 사용될 수 있습니다.
새로운 INT 13H 인터페이스는 주소 지정에 24비트 대신 64비트를 사용하고 최대 9.4 * 1021바이트의 하드 디스크 크기를 허용합니다. 이는 실제로 9.4조 기가바이트 또는 94000000000000기가바이트입니다. 다행히도 우리는 이 한계를 넘을 때까지 잠시 진정할 수 있을 것입니다.
인터럽트 13H에 대한 몇 가지 중요한 확장 기능은 아래에 설명되어 있습니다. 이러한 함수는 INT 13H 함수를 사용했던 것과 같은 방식으로 프로그래밍에서 사용할 수 있습니다. 이러한 이유로 이러한 함수는 INT 13H 확장이라고 불립니다.
INT 13H 확장:
내부 13H(0x13)
기능 1BH(0x1B 또는 27) --> 프로덕션 헤더 가져오기(ESDI 고정 디스크)
호출: AH = 1BH
AL = 읽을 섹터 수
DL = 드라이브
ES:BX = 프로덕션 헤더용 버퍼
(결함 목록)
반환: 함수가 성공한 경우
캐리 플래그 = 클리어
아 = 00X
기능이 실패하면
캐리 플래그 = 설정
AH = 상태
댓글:
이 기능은 고정 디스크의 제조 헤더를 가져오는 데 사용됩니다. 첫 번째 섹터 읽기에는 결함 항목 수와 결함 맵의 시작이 있는 제조 헤더가 포함됩니다. 나머지 섹터에는 결함 맵의 나머지가 포함됩니다. 제조 헤더 형식(결함 맵 레코드 형식)은 IBM 70MB, 115MB 고정 디스크 드라이브 기술 참조에서 찾을 수 있습니다.
INT 13H (0x13)
기능 1BH(0x1B 또는 27) --> SCSI 디스크 정보 블록에 대한 포인터 가져오기(향후 도메인 SCSI 컨트롤러)
호출: AH = 1BH
DL = 하드 드라이브 ID
반환: 함수가 성공한 경우
캐리 플래그 = 클리어
아 = 01H
기능이 실패하면
캐리 플래그 = 설정
AH = 상태
ES:BX = SCSI 디스크 정보 블록
댓글:
이 기능은 SCSI 디스크 정보 블록에 대한 포인터를 가져오는 데 사용됩니다. 또한 일부 컨트롤러 메시지가 표시되지 않도록 하는 재설정 불가능한 플래그를 설정합니다.
INT 13H (0x13)
기능 1CH(0x1C 또는 28) --> 여유 컨트롤러 RAM에 대한 포인터 가져오기(미래 도메인 SCSI 컨트롤러)
AH = 1CH로 전화하세요
DL = 유효한 SCSI에 대한 하드 드라이브 ID
하드 디스크
반환: 함수가 성공한 경우
캐리 플래그 = 클리어
아 = 01H
기능이 실패하면
캐리 플래그 = 설정
AH = 상태
ES:BX = 컨트롤러의 사용 가능한 RAM의 첫 번째 바이트
댓글:
이 함수는 자유 컨트롤러 Ram을 가져오는 데 사용됩니다. ES:BX는 다른 용도로 사용할 수 있는 컨트롤러의 자유 RAM의 첫 번째 바이트를 가리킵니다. ES에는 컨트롤러가 상주하는 세그먼트가 들어 있습니다. 컨트롤러의 두 개의 메모리 매핑된 I/O 포트는 오프셋 1C00H 및 1E00H에 있습니다.
INT 13H (0x13)
함수 1C08H(0x1C08) --> 명령 완료 상태 가져오기(ESDI 고정 디스크)
AX = 1C08H로 전화하세요
DL = 드라이브
ES:BX = 명령 완료를 위한 버퍼
상태 블록
반환: 함수가 성공한 경우
캐리 플래그 = 클리어
아 = 01H
기능이 실패하면
캐리 플래그 = 설정
AH = 상태
댓글:
이 함수는 명령 완료 상태를 가져오는 데 사용됩니다. 함수가 성공하면 캐리 플래그가 지워지고 실패하면 캐리 플래그가 설정됩니다.
INT 13H (0x13)
함수 1C09H(0x1C09) --> 장치 상태 가져오기(ESDI 고정 디스크)
AX = 1C09H로 전화하세요
DL = 드라이브
ES:BX = 장치 상태 블록을 위한 버퍼
반환: 함수가 성공한 경우
캐리 플래그 = 클리어
아 = 01H
기능이 실패하면
캐리 플래그 = 설정
AH = 상태
댓글:
이 함수는 장치 상태를 가져오는 데 사용됩니다. 함수가 성공하면 캐리 플래그가 지워지고 실패하면 캐리 플래그가 설정됩니다.
INT 13H (0x13)
기능 1C0AH(0x1C0A) --> 장치 구성 가져오기(ESDI 고정 디스크)
AX = 1C0AH로 호출
DL = 드라이브
ES:BX = 드라이브 구성 상태에 대한 버퍼
차단하다
반환: 함수가 성공한 경우
캐리 플래그 = 클리어
아 = 01H
기능이 실패하면
캐리 플래그 = 설정
AH = 상태
댓글:
이 함수는 디스크의 장치 구성을 가져오는 데 사용됩니다. 함수가 성공하면 캐리 플래그가 지워지고 AH 레지스터는 01H가 되고 그렇지 않으면 캐리 플래그가 설정되고 AH 레지스터는 상태를 반환합니다. 다음 표는 ESDI 드라이브 구성 상태 블록의 형식을 보여줍니다.
오프셋
|
크기
|
설명
|
00시
|
바이트
|
09시
|
01시
|
바이트
|
블록 내 단어 수 (06H)
|
02시
|
바이트
|
깃발
|
03시
|
바이트
|
실린더당 예비 섹터 수
|
04시
|
더블워드
|
사용 가능한 섹터의 총 수
|
08시
|
단어
|
실린더 총 개수
|
0아
|
바이트
|
실린더당 트랙
|
0비에이치
|
바이트
|
트랙당 섹터
|
INT 13H (0x13)
기능 1C0BH(0x1C0B) --> 어댑터 구성 가져오기(ESDI 고정 디스크)
AX = 1C0BH로 호출
ES:BX = 컨트롤러 구성을 위한 버퍼
상태 블록
반환: 함수가 성공한 경우
캐리 플래그 = 클리어
아 = 01H
기능이 실패하면
캐리 플래그 = 설정
AH = 상태
댓글:
이 함수는 어댑터 구성을 가져오는 데 사용됩니다. 함수가 성공하면 캐리 플래그가 지워지고 AH는 01H이고, 실패하면 캐리 플래그가 설정되고 AH는 상태를 반환합니다.
INT 13H (0x13)
기능 1C0CH (0x1C0C) --> POS 정보 가져오기(ESDI 고정 디스크)
AX = 1C0CH로 전화하세요
ES:BX = POS 정보 상태 버퍼
차단하다
반환: 함수가 성공한 경우
캐리 플래그 = 클리어
아 = 01H
기능이 실패하면
캐리 플래그 = 설정
AH = 상태
댓글:
이 함수는 POS 정보를 얻는 데 사용됩니다. 함수가 성공하면 캐리 플래그가 지워지고 AH는 01H이고, 실패하면 캐리 플래그가 설정되고 AH는 상태를 반환합니다.
INT 13H (0x13)
기능 1C0EH(0x1C0E) --> RBA를 ABA(ESDI 고정 디스크)로 변환
AX = 1C0EH로 전화하세요
CH = 실린더 번호의 하위 8비트
CL = 섹터 번호(상위 2비트)
비트 6과 7의 실린더 번호)
DH = 헤드 넘버
DL = 드라이브 번호
ES:BX = ABA (절대 블록 주소)
숫자
반환: 함수가 성공한 경우
캐리 플래그 = 클리어
아 = 01H
기능이 실패하면
캐리 플래그 = 설정
AH = 상태
댓글:
이 함수는 RBA(상대 블록 주소)를 ABA(절대 블록 주소)로 변환합니다. 함수가 성공하면 캐리 플래그가 지워지고 AH 레지스터가 01H가 되고, 그렇지 않으면 캐리 플래그가 설정되고 AH가 상태를 반환합니다.
INT 13H (0x13)
기능 20H(0x20 또는 32) --> 현재 미디어 형식 가져오기(Compaq ATAPI 이동식 미디어 장치)
호출: AH = 20H
DL = 드라이브 번호
반환: 함수가 성공하면,
캐리 플래그 = 클리어
AL = 미디어 유형
아 = 00H
함수가 실패하면,
CF = 설정
AH = 오류 코드
댓글:
이 함수는 현재 미디어 형식을 가져오는 데 사용됩니다. Compaq/ATAPI 디스켓 미디어 유형의 값은 다음 표에 나와 있습니다.
값
|
메디아
|
03시
|
720K(포맷되지 않은 1M)
|
04시
|
1.44M(포맷되지 않은 경우 2M)
|
06시
|
2.88M(포맷되지 않은 경우 4M)
|
0CH
|
36만
|
0DH
|
1.2M
|
0EH
|
Toshiba 3mode
|
0FH
|
NEC 3모드(섹터당 1024바이트)
|
10시간
|
ATAPI 이동식 미디어 장치
|
INT 13H (0x13)
기능 21H(0x21 또는 33) --> 여러 디스크 섹터 읽기(PS 및 PS/2, 하드 디스크)
AH = 21H로 호출
AL = 읽을 섹터 수
CH = 12비트 실린더 번호의 하위 바이트
CL = 시작 섹터(비트 0~5) 및 비트 8
그리고 실린더의 9개(비트 6과 7)
DH = 헤드 번호(비트 0~5) 및 비트 10
그리고 실린더 11개(비트 6 및 7)
DL = 드라이브 번호
ES:BX = 읽을 데이터 버퍼
반환: 함수가 성공하면,
캐리 플래그 = 클리어
ES:BX = 채워진 데이터 버퍼
함수가 실패하면,
캐리 플래그 = 설정
AH = 상태
댓글:
이 기능은 다중 블록 모드를 사용하여 여러 디스크 섹터를 읽는 데 사용되며, 각 섹터 이후가 아닌 섹터 그룹의 전송이 끝난 후에만 인터럽트를 생성합니다.
INT 13H (0x13)
기능 22H(0x22 또는 34) --> 여러 디스크 섹터 쓰기(PS 및 PS/2, 하드 디스크)
AH = 22H로 호출
AL = 기록할 섹터 수
CH = 12비트 실린더 번호의 하위 바이트
CL = 시작 섹터(비트 0~5) 및 비트 8
그리고 실린더의 9개(비트 6과 7)
DH = 헤드 번호(비트 0~5) 및 비트 10
그리고 실린더 11개(비트 6 및 7)
DL = 드라이브 번호
ES:BX = 쓰여질 데이터가 들어있는 버퍼
반환: 함수가 성공하면,
캐리 플래그 = 클리어
아 = 01H
기능이 실패하면,
캐리 플래그 = 설정
AH = 상태
댓글:
이 기능은 다중 블록 모드를 사용하여 여러 디스크 섹터를 쓰는 데 사용됩니다. 이 모드에서는 각 섹터 이후가 아닌 섹터 그룹의 전송이 끝난 후에만 인터럽트가 발생합니다.
INT 13H (0x13)
기능 22H(0x22 또는 34) --> 캐시 활성화/비활성화(QuickCache II v4.20)
AH = 22H로 호출
AL = 새 상태(비활성화된 경우 00H, 비활성화된 경우 01H)
활성화된 경우)
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 기능은 모든 드라이브의 캐싱을 활성화 및/또는 비활성화합니다. 기능이 성공하면 AX 레지스터는 0000H이고 그렇지 않으면 상태를 반환합니다.
INT 13H (0x13)
기능 23H(0x23 또는 35) --> 컨트롤러 기능 레지스터 설정(PS 및 PS/2, 하드 디스크)
AH = 23H로 호출
AL = 기능 번호
DL = 드라이브 번호
반환: 함수가 성공하면,
캐리 플래그 = 클리어
함수가 실패하면,
캐리 플래그 = 설정
AH = 상태
댓글:
이 기능은 컨트롤러 기능 레지스터를 설정하는 데 사용됩니다. 함수가 성공하면 캐리 플래그가 지워지고 실패하면 캐리 플래그가 설정되고 AH 레지스터가 상태를 반환합니다.
INT 13H (0x13)
기능 24H(0x24 또는 36) --> 다중 설정 - 전송 모드(하드 디스크, PS 및 PS/2)
AH = 24H로 전화하세요
AL = 블록당 섹터 수
DL = 드라이브 번호
반환: 함수가 성공하면,
캐리 플래그 = 클리어
함수가 실패하면,
캐리 플래그 = 설정
AH = 상태
댓글:
이 기능은 다중 전송 모드를 설정하는 데 사용됩니다. 다중 전송 모드를 비활성화하려면 섹터 수를 0으로 설정하세요. 블록 크기의 최대값(예: 2, 4, 6, 8, 16 등)은 고정 디스크 드라이브 유형에 따라 달라집니다.
값은 POST(Power On Self-Test)에서 생성된 고정 디스크 드라이브 매개변수 표의 바이트 15H에 저장됩니다. 주소 0040H:0074H의 바이트는 작동 상태로 설정됩니다. PS/1 하드 디스크 기능 번호의 값은 다음 표에 나열되어 있습니다.
값
|
설명
|
01시
|
16비트 대신 8비트 데이터 전송을 선택하세요
|
02시
|
쓰기 캐시 활성화
|
22시
|
동일, 사용자 지정 영역 쓰기
|
33시간
|
재시도 비활성화
|
44시간
|
읽기 긴/쓰기 긴에 대한 ECC 바이트 수를 설정합니다.
|
54시간
|
캐시 세그먼트 설정
|
55H
|
미리 보기 비활성화
|
66시간
|
전원 켜기 기본값으로 되돌리기 비활성화
|
77시간
|
오류 수정 비활성화
|
81H
|
16비트 데이터 전송 선택(기본값)
|
82시간
|
쓰기 캐시 비활성화
|
88H
|
오류 수정 활성화(기본값)
|
99시간
|
재시도 활성화(기본값)
|
아아
|
미리 보기 활성화
|
비비에이치
|
읽기 긴/쓰기 긴에 대한 ECC 길이를 4바이트로 설정
|
한국어:
|
전원 켜기 기본값으로 되돌리기 활성화
|
디디에이치
|
동일 쓰기, 전체 디스크
|
INT 13H (0x13)
기능 24H(0x24 또는 36) --> 섹터 설정(QuickCache II v4.20)
AX = 24H로 전화하세요
BX = 새로운 섹터 버퍼 수
은닉처
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 함수는 섹터를 설정하는 데 사용됩니다. 함수가 성공하면 AX 레지스터는 0000H이고 그렇지 않으면 AX는 상태를 반환합니다.
INT 13H (0x13)
기능 25H(0x25 또는 37) --> 드라이브 식별(하드 디스크, PS 및 PS/2)
호출: AH = 25H
DL = 드라이브 번호
ES:BX = 응답 패킷을 위한 512바이트 버퍼
반환: 함수가 성공하면,
캐리 플래그 = 클리어
드라이브 정보 블록으로 채워진 버퍼
함수가 실패하면,
캐리 플래그 = 설정
AH = 상태
댓글:
이 기능은 드라이브를 식별하는 데 사용됩니다. 주소 0040h:0074h의 바이트는 작업 상태로 설정됩니다. IBM은 공식적으로 이 기능을 선택 사항으로 분류합니다. 일반 드라이브 구성에 대한 비트 필드는 다음 표에 나와 있습니다.
비트(들)
|
설명
|
0
|
예약됨 (0)
|
1
|
하드 섹터
|
2
|
소프트 섹터
|
3
|
MFM 인코딩되지 않음
|
4
|
헤드 스위치 시간이 15msec 이상
|
5
|
스핀들 모터 제어 옵션 구현
|
6
|
고정 드라이브
|
7
|
이동식 카트리지 드라이브
|
8
|
디스크 전송 속도가 5Mbs 이하입니다.
|
9
|
디스크 전송 속도는 5Mbs보다 크고 10Mbs 이하입니다.
|
10
|
디스크 전송 속도가 10Mbs보다 큽니다.
|
11
|
회전 속도 허용 오차는 0.5% 이상입니다.
|
12
|
데이터 스트로브 오프셋 옵션 사용 가능
|
13
|
트랙 오프셋 옵션 사용 가능
|
14
|
포맷 속도 허용 오차 간격이 필요합니다
|
15
|
비자성 드라이브용으로 예약됨(0)
|
ATA(AT 첨부 파일) 사양에 명시된 드라이브 정보 블록의 형식에 대한 설명은 다음 표에 나와 있습니다.
오프셋
|
크기
|
설명
|
00시
|
단어
|
일반 드라이브 구성
|
02시
|
단어
|
실린더 수
|
04시
|
단어
|
예약된
|
06시
|
단어
|
머리의 수
|
08시
|
단어
|
트랙당 포맷되지 않은 바이트 수
|
0아
|
단어
|
섹터당 포맷되지 않은 바이트 수
|
0CH
|
단어
|
트랙당 섹터 수
|
0EH
|
6바이트
|
공급업체 고유
|
14시간
|
20바이트
|
ASCII 형식의 일련 번호(0000H=지정되지 않음)
|
28시간
|
단어
|
버퍼 유형
|
2AH
|
단어
|
512바이트 단위로 버퍼 크기(0000H=지정되지 않음)
|
2채널
|
단어
|
Read/Write Long 명령에서 전달된 ECC 바이트 수 0000H = 지정되지 않음
|
2EH
|
8바이트
|
ASCII 형식의 펌웨어 개정판, 0000H=지정되지 않음
|
36시간
|
40바이트
|
ASCII 형식의 모델 번호, 0000H=지정되지 않음
|
5EH
|
단어
|
비트 15-8 공급업체 고유, 비트 7-0, (00H = 읽기/쓰기 다중 명령이 구현되지 않은 경우, 그렇지 않은 경우 xxH = 읽기 및 쓰기 다중 명령에서 인터럽트당 전송할 수 있는 최대 섹터 수)
|
60시간
|
단어
|
0000H = 더블워드 I/O를 수행할 수 없음, 0001H = 더블워드 I/O를 수행할 수 있음.
|
62시간
|
단어
|
비트 15-9(0=예약됨), 비트 8(1=DMA 지원됨), 비트 7-0 공급업체 고유성.
|
64시간
|
단어
|
예약된
|
66시간
|
단어
|
비트 15-8 PIO 데이터 전송 주기 타이밍 모드, 비트 7-0 공급업체 고유
|
68시간
|
단어
|
비트 15-8 DMA 데이터 전송 사이클 타이밍 모드, 비트 7-0 공급업체 고유
|
6AH
|
단어
|
비트 15-1 예약됨, 비트 0(1=변환 모드에서 보고된 필드가 유효함, 0=변환 모드에서 보고된 필드가 유효할 수 있음)
|
6채널
|
단어
|
현재 실린더 수
|
6EH
|
단어
|
현재 헤드 수
|
70시간
|
단어
|
트랙당 현재 섹터 수
|
72시간
|
단어
|
현재 부문별 용량
|
76시간
|
>단어
|
예약된
|
78시간
|
136바이트
|
정의되지 않음
|
100시간
|
64바이트
|
공급업체 고유
|
140시간
|
96바이트
|
예약된
|
INT 13H (0x13)
기능 25H(0x25 또는 37) --> 플러시 간격 설정(QuickCache II v4.20)
호출: AH = 25H
BX = 플러시 간격
반환: 함수가 성공하면,
아 = 0000H
함수가 실패하면,
AH = 상태
댓글:
이 기능은 플러시 간격을 설정하는 데 사용됩니다. 기능이 성공하면 AH는 0000H이고 그렇지 않으면 AH는 상태를 반환합니다.
INT 13H (0x13)
기능 26H(0x26 또는 38) --> QuickCache II v4.20 제거
AH = 26H로 호출
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
AX는 다른 TSR에 의해 연결된 인터럽트 벡터에 대해 0001H에서 00FFH까지의 상태를 반환합니다.
INT 13H (0x13)
기능 27H(0x27 또는 39) --> 설치 확인(QuickCache II v4.20)
AH = 27H로 호출
BX = 0000H
반환: BH = 메이저 버전
BL = 바이너리 마이너 버전
설치가 되어 있으면,
AX = 0000H
BX = 0이 아님
댓글:
설치된 경우, AX 레지스터는 0000H이고 BX는 0이 아닌 값을 반환합니다.
INT 13H (0x13)
기능 28H(0x28 또는 40) --> 자동 마운트 해제 설정(QuickCache II v4.20)
AH = 28H로 호출
AL = 새로운 주
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
AL = 00H인 경우 함수를 호출하면 비활성화되고, AL = 01H인 경우 함수를 호출하면 활성화됩니다.
INT 13H (0x13)
기능 29H(0x29 또는 41) --> 작업 없음(QuickCache II v4.20)
AH = 29H로 호출
반환 : AX = 0000H
INT 13H (0x13)
기능 2AH(0x2A 또는 42) --> 버퍼 크기 설정(QuickCache II v4.20)
호출: AH = 2AH
AL = 버퍼 크기
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 함수는 버퍼 크기를 설정하는 데 사용됩니다. 함수가 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다.
INT 13H (0x13)
기능 2BH(0x2B 또는 43) --> 드라이브 액세스 사운드(QuickCache II v4.20)
호출: AH = 2BH
AL = 새 상태(00h 비활성화, 01h
활성화됨)
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
함수가 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다. AL = 00H로 함수를 호출하여 비활성화하고 AL = 01H로 함수를 호출하여 드라이브 액세스 사운드를 활성화합니다.
INT 13H (0x13)
기능 2CH(0x2C 또는 44) --> 버퍼링된 쓰기 설정(QuickCache II v4.20)
AH = 2CH로 호출
AL = 새로운 상태
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 기능은 모든 드라이브에 대한 지연된 쓰기를 활성화 또는 비활성화합니다. 단일 드라이브를 변경하려면 AH=38H를 사용합니다. 비활성화하려면 AL = 00H를 사용하고 활성화하려면 01H를 사용합니다.
INT 13H (0x13)
기능 2DH(0x2D 또는 45) --> 버퍼링된 읽기 설정(QuickCache II v4.20)
AH = 2Dh로 전화하세요
AL = 새 상태(00h 비활성화, 01h
활성화됨)
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 기능은 모든 드라이브에 대한 미리 읽기를 활성화하거나 비활성화합니다. 비활성화하려면 AL = 00H를 사용하고 활성화하려면 AL = 01H를 사용합니다. 단일 드라이브를 변경하려면 AH=37H를 사용합니다.
INT 13H (0x13)
기능 2EH(0x2E 또는 46) --> 플러시 카운트 설정(QuickCache II v4.20)
AH = 2EH로 호출
BX = 플러시 카운트
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 기능은 플러시 카운트를 설정하는 데 사용됩니다. 기능이 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다.
INT 13H (0x13)
기능 2FH(0x2F 또는 47) --> 강제 즉시 증분 플러시(QuickCache II v4.20)
AH = 2FH로 호출
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
함수가 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다.
INT 13H (0x13)
기능 30H(0x30 또는 48) --> 정보 가져오기(QuickCache II v4.20)
호출: AH = 30H
AL = 정보 번호(표 참조)
댓글)
DS:DX = 정보 버퍼
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 함수는 AL에서 지정한 시스템에 대한 다양한 유형의 정보를 가져오는 데 사용됩니다. 함수가 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다. AX = 8000H는 잘못된 정보 지정자를 나타냅니다. AL에 지정할 정보 번호는 다음 표에 나열되어 있습니다.
값
|
설명
|
00시
|
시스템 정보
|
01시
|
운전 정보
|
02시
|
접근 빈도 (30단어 배열)
|
03시
|
드라이브 인덱스(DOS 드라이브용 BIOS 드라이브를 나타내는 32바이트 배열)
|
INT 13H (0x13)
기능 31H(0x31 또는 49) --> 메모리 예약(QuickCache II v4.20)
AH = 31H로 호출
BX = 문단 수
예약할 기존 메모리
응용 프로그램.
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 함수는 애플리케이션에 대한 메모리를 예약하는 데 사용됩니다. 함수가 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다.
INT 13H (0x13)
기능 32H(0x32 또는 50) --> 특정 드라이브에 대한 캐싱 활성화(QuickCache II v4.20)
호출: AH = 32H
AL = 드라이브 번호
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 함수는 특정 드라이브에 대한 캐싱을 활성화하는 데 사용됩니다. 예를 들어, A:에 대해 AL = 00H로 함수를 호출합니다. 함수가 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다.
INT 13H (0x13)
기능 33H(0x33 또는 51) --> 특정 드라이브에 대한 캐싱 비활성화(QuickCache II v4.20)
AH = 33H로 호출
AL = 드라이브 번호
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 함수는 특정 드라이브에 대한 캐싱을 비활성화하는 데 사용됩니다. 예를 들어, A:에 대해 AL = 00H로 함수를 호출합니다. 함수가 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다.
INT 13H (0x13)
기능 34H(0x34 또는 52) --> 섹터 잠금/잠금 해제(QuickCache II v4.20)
AH = 34H로 호출
AL = 잠금/잠금 해제 기능 번호
(주석에 주어진 표 참조)
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 함수는 AL로 지정된 섹터의 잠금/잠금 해제 함수를 호출하는 데 사용됩니다. 함수가 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다. AL로 호출할 다른 함수 번호는 다음 표에 나와 있습니다.
값
|
기능
|
00시
|
엔드 섹터 잠금/잠금 해제
|
01시
|
액세스된 모든 섹터를 캐시에 잠급니다.
|
02시
|
액세스된 모든 섹터의 잠금을 해제하고 캐시에서 삭제
|
INT 13H (0x13)
기능 35H(0x35 또는 53) --> 잠금 풀 크기 설정(QuickCache II v4.20)
호출: AH = 35H
BX = 잠금 풀의 섹터 수
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 함수는 잠금 풀 크기를 설정하는 데 사용됩니다. 함수가 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다.
INT 13H (0x13)
기능 36H(0x36 또는 54) --> 추적 버퍼 크기 설정
호출: AH = 36H
AL = 추적 버퍼의 새 크기
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 함수는 추적 버퍼 크기를 설정하는 데 사용됩니다. 함수가 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다. 이 함수는 일반적으로 AL=05H인 INT 13H의 함수 24H로 호출됩니다.
INT 13H (0x13)
기능 37H(0x37 또는 55) --> 특정 드라이브에 대한 버퍼링된 읽기 설정(QuickCache II v4.20)
AH = 37H로 호출
AL = 새로운 상태
DL = 드라이브 번호
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 기능은 특정 드라이브에 대한 버퍼링된 읽기를 설정하는 데 사용됩니다. AL = 00H이면 상태가 활성화되고, 그렇지 않으면 비활성화됩니다. 기능이 성공하면 AX는 0000H이고, 실패하면 AX가 상태를 반환합니다.
INT 13H (0x13)
기능 38H(0x38 또는 56) --> 특정 드라이브에 대한 버퍼링된 쓰기 설정(QuickCache II v4.20)
AH = 38H로 호출
AL = 새로운 상태
DL = 드라이브 번호
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 기능은 특정 드라이브에 대한 버퍼링된 쓰기를 설정하는 데 사용됩니다. AL = 00H이면 상태가 활성화되고, 그렇지 않으면 비활성화됩니다. 기능이 성공하면 AX는 0000H이고, 실패하면 AX가 상태를 반환합니다.
INT 13H (0x13)
기능 39H(0x39 또는 57) --> 특정 드라이브에 대한 읽기 버퍼 크기 설정(QuickCache II v4.20)
AH = 39H로 호출
AL = 읽기 버퍼의 새 크기
DL = 드라이브 번호
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 기능은 A:의 경우 DL = 00H와 같이 특정 드라이브의 읽기 버퍼 크기를 설정하는 데 사용됩니다. 기능이 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다.
INT 13H (0x13)
기능 3AH(0x3A 또는 58) --> 특정 드라이브에 대한 쓰기 버퍼 크기 설정(QuickCache II v4.20)
호출: AH = 3AH
AL = 쓰기 버퍼의 새 크기
DL = 드라이브 번호
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 기능은 A:의 경우 DL = 00H와 같이 특정 드라이브의 쓰기 버퍼 크기를 설정하는 데 사용됩니다. 기능이 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다.
INT 13H (0x13)
기능 3DH(0x3D 또는 61) --> 드라이브의 실린더 플러시 활성화/비활성화(QuickCache II v4.20)
AH = 3DH로 전화하세요
AL = 새로운 상태
DL = 드라이브 번호
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 기능은 DL = 00H(A:) 등과 같이 특정 드라이브에 대한 실린더 플러시를 활성화/비활성화하는 데 사용됩니다. 기능이 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다. AL 레지스터가 01H로 설정된 경우 상태는 활성화되고, 그렇지 않으면 비활성화됩니다.
INT 13H (0x13)
기능 3EH(0x3E 또는 62) --> 단일 섹터 보너스 설정(QuickCache II v4.20)
AH = 3EH로 호출
AL = 보너스에 대한 새로운 값
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 기능은 단일 섹터 보너스를 설정하는 데 사용됩니다. 기능이 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다.
INT 13H (0x13)
기능 3FH(0x3F 또는 63) --> 보너스 임계값 설정(QuickCache II v4.20)
AH = 3FH로 호출
AL = 보너스 임계값의 새 값
반환: 함수가 성공하면,
AX = 0000H
함수가 실패하면,
AX = 상태
댓글:
이 기능은 보너스 임계값을 설정하는 데 사용됩니다. 기능이 성공하면 AX는 0000H이고, 실패하면 AX는 상태를 반환합니다.
INT 13H (0x13)
기능 41H(0x41 또는 65) --> 설치 확인(IBM/MS INT 13H 확장)
AH = 41H로 호출
BX = 55AAH
DL = 드라이브 번호(80H-FFH)
반환: 확장 기능이 지원되고 기능이 성공한 경우
캐리 플래그 = 클리어
BX = AA55H
AH = 확장의 주요 버전(참조
(주석에 있는 표)
AL = 내부 사용
CX = API 하위 집합 지원 비트맵(참조
(주석의 표)
DH = 확장 버전(v2.0 이상)
확장 기능이 지원되지 않거나 기능이 실패하는 경우
캐리 플래그 = 설정
AH = 01H (함수 무효)
댓글:
이 기능은 IBM/MS INT 13H Extensions가 설치되고 지원되는지 확인합니다. 확장의 주요 버전에 대한 값은 다음 표에 나와 있습니다.
값
|
확장의 주요 버전
|
01시
|
1.x
|
20시간
|
2.0 / EDD-1.0
|
21시
|
2.1 / EDD-1.1
|
30시간
|
EDD-3.0
|
IBM/MS INT 13H 확장 API 지원 비트맵의 비트 필드는 다음 표에 나와 있습니다.
비트(들)
|
설명
|
0
|
확장된 디스크 접근 기능(AH=42H, 43H, 44H, 47h 및 48H)이 지원됩니다.
|
1
|
분리형 드라이브 컨트롤러 기능(AH=45H, 46H, 48H, 49H 및 INT15/AH=52H)이 지원됩니다.
|
2
|
향상된 디스크 드라이브(EDD) 기능(AH=48H 및 AH=4EH)이 지원됩니다. 확장된 드라이브 매개변수 표가 유효합니다.
|
3-15
|
예약됨 (0)
|
INT 13H (0x13)
기능 42H(0x42 또는 66) --> 확장 읽기(IBM/MS INT 13H 확장)
AH = 42H로 호출
DL = 드라이브 번호
DS:SI = 디스크 주소 패킷(표 참조)
댓글)
반환: 함수가 성공하면,
캐리 플래그 = 클리어
아 = 00H
함수가 실패하면,
캐리 플래그 = 설정
AH = 오류 코드
댓글:
이 기능은 디스크 읽기 기능의 확장입니다. 이 기능이 성공하면 캐리 플래그가 지워지고 AH 레지스터가 00H가 되고, 그렇지 않으면 캐리 플래그가 설정되고 AH가 오류 코드를 반환합니다. 디스크 주소 패킷의 블록 카운트 필드는 성공적으로 전송된 블록 수로 설정됩니다. 디스크 주소 패킷의 형식은 다음과 같습니다.
오프셋
|
크기
|
설명
|
00시
|
바이트
|
패킷 크기(10H)
|
01시
|
바이트
|
예약됨 (0)
|
02시
|
단어
|
전송할 블록 수
|
04시
|
단어
|
전송 버퍼
|
08시
|
질문 단어
|
시작 절대 블록 번호(LBA)
|
INT 13H (0x13)
기능 43H(0x43 또는 67) --> 확장 쓰기(IBM/MS INT 13H 확장)
AH = 43H로 호출
AL = 쓰기 플래그(표 참조)
댓글)
DL = 드라이브 번호.
DS:SI = 디스크 주소 패킷
반환: 함수가 성공하면,
캐리 플래그 = 클리어
아 = 00H
함수가 실패하면,
캐리 플래그 = 설정
AH = 오류 코드
댓글:
이 기능은 디스크 쓰기 기능의 확장입니다. 이 기능이 성공하면 캐리 플래그가 지워지고 AH 레지스터가 00H가 되고, 그렇지 않으면 캐리 플래그가 설정되고 AH가 오류 코드를 반환합니다. 디스크 주소 패킷의 블록 카운트 필드는 성공적으로 블록 수로 설정됩니다. 다양한 버전의 쓰기 플래그 정보는 다음 표에 나와 있습니다.
버전 1.0 및 2.0
|
버전 2.1 이상
|
값
|
설명
|
값
|
설명
|
비트 0
|
쓰기 확인
|
00H와 01H
|
확인없이 쓰기
|
비트 1~7
|
예약됨 (0)
|
02시
|
검증하여 쓰세요
|
INT 13H (0x13)
기능 44H(0x44 또는 68) --> 섹터 확인(IBM/MS INT 13H 확장)
AH = 44H로 호출
DL = 드라이브 번호
DS:SI = 디스크 주소 패킷
반환: 함수가 성공하면,
캐리 플래그 = 클리어
아 = 00H
함수가 실패하면,
캐리 플래그 = 설정
AH = 오류 코드
댓글:
이 기능은 Verify Sectors 기능의 확장입니다. 이 기능이 성공하면 캐리 플래그가 지워지고 AH 레지스터가 00H가 되고, 그렇지 않으면 캐리 플래그가 설정되고 AH가 오류 코드를 반환합니다. 디스크 주소 패킷의 블록 카운트 필드는 성공적으로 블록 수로 설정됩니다.
INT 13H (0x13)
기능 45H(0x45 또는 69) --> 드라이브 잠금/잠금 해제(IBM/MS INT 13H 확장)
AH = 45H로 호출
AL = 작업 번호(표 참조)
댓글)
DL = 드라이브 번호
반환: 함수가 성공하면,
캐리 플래그 = 클리어
아 = 00H
AL = 잠금 상태(00H = 잠금 해제됨)
함수가 실패하면,
캐리 플래그 = 설정
AH = 오류 코드
댓글:
이 기능은 드라이브를 잠금/잠금 해제하는 데 사용됩니다. 이 기능은 80H 이상의 번호가 매겨진 모든 이동식 드라이브에 지원되어야 합니다. 드라이브에 최대 255개의 잠금을 설정할 수 있으며 모든 잠금이 제거될 때까지 미디어는 물리적으로 잠금 해제되지 않습니다.
함수가 성공하면 캐리 플래그가 지워지고 AH 레지스터는 00H가 되고, 그렇지 않으면 캐리 플래그가 설정되고 AH는 오류 코드를 반환합니다.
드라이브의 다양한 잠금/잠금 해제 작업에 대한 작업 번호는 다음 표에 나와 있습니다.
값
|
기능
|
00시
|
드라이브에 미디어 잠금
|
01시
|
미디어 잠금 해제
|
02시
|
잠금 상태 확인
|
INT 13H (0x13)
기능 46H(0x46 또는 70) --> 미디어 꺼내기(IBM/MS INT 13H 확장)
AH = 46H로 호출
AL = 00H (예약됨)
DL = 드라이브 번호
반환: 함수가 성공하면,
캐리 플래그 = 클리어
아 = 00H
함수가 실패하면,
캐리 플래그 = 설정
AH = 오류 코드
댓글:
이 기능은 미디어를 꺼내는 것입니다. 이 기능이 성공하면 캐리 플래그가 지워지고 AH 레지스터가 00H가 되고, 그렇지 않으면 캐리 플래그가 설정되고 AH가 오류 코드를 반환합니다.
INT 13H (0x13)
기능 47H(0x47 또는 71) --> 확장 탐색(IBM/MS INT 13H 확장)
AH = 47H로 호출
DL = 드라이브 번호
DS:SI = 디스크 주소 패킷
반환: 함수가 성공하면,
캐리 플래그 = 클리어
아 = 00H
함수가 실패하면,
캐리 플래그 = 설정
AH = 오류 코드
댓글:
이 기능은 seek 기능의 확장입니다. 함수가 성공하면 캐리 플래그가 지워지고 AH 레지스터가 00H가 되고, 그렇지 않으면 캐리 플래그가 설정되고 AH가 오류 코드를 반환합니다. 디스크 주소 패킷의 블록 카운트 필드는 성공적으로 블록 수로 설정됩니다.
INT 13H (0x13)
기능 48H(0x48 또는 72) --> 드라이브 매개변수 가져오기(IBM/MS INT 13H 확장)
AH = 48H로 호출
DL = 드라이브(80H-FFH)
DS:SI = 드라이브 매개변수 버퍼
반환: 함수가 성공하면,
캐리 플래그 = 클리어
아 = 00H
DS:SI = 버퍼가 채워짐
함수가 실패하면,
캐리 플래그 = 설정
AH = 오류 코드
댓글:
이 기능은 드라이브 매개변수를 얻는 데 사용됩니다. 이 기능이 성공하면 캐리 플래그가 지워지고 AH 레지스터는 채워진 버퍼의 DS:SI와 함께 00H가 되고, 그렇지 않으면 캐리 플래그가 설정되고 AH는 오류 코드를 반환합니다.
INT 13H (0x13)
기능 49H(0x49 또는 73) --> 확장된 미디어 변경(IBM/MS INT 13H 확장)
AH = 49H로 호출
DL = 드라이브 번호(모든 드라이브 번호 참조)
댓글)
반환: 미디어가 변경되지 않은 경우,
캐리 플래그 = 클리어
아 = 00H
미디어가 변경되었을 수 있는 경우,
캐리 플래그 = 설정
AH = 06H (미디어 변경 오류 코드)
댓글:
이 기능은 미디어 변경 기능의 확장입니다. 기능이 성공하면 캐리 플래그가 지워지고 AH 레지스터가 00H가 되고, 그렇지 않으면 캐리 플래그가 설정되고 AH가 오류 코드를 반환합니다.
이 함수와 INT 13H의 AH = 16H 함수의 주요 차이점은 어떤 드라이브 번호라도 지정할 수 있다는 점입니다. 반면 함수 16H는 플로피 디스크의 드라이브 번호 00H~7FH만 허용합니다.
INT 13H (0x13)
기능 4AH(0x4A 또는 74) --> 디스크 에뮬레이션 시작(부팅 가능 CD-ROM)
AH = 4AH로 호출
알 = 00H
DS:SI = 사양 패킷(주석의 표 참조)
반환: 함수가 성공하면,
캐리 플래그 = 클리어
함수가 실패하면,
캐리 플래그 = 설정
AX = 상태 코드
댓글:
이 기능은 디스크 에뮬레이션을 시작하는 데 사용됩니다. 이 기능이 성공하면 캐리 플래그가 지워지고, 그렇지 않으면 캐리 플래그가 설정되고 AX 레지스터가 상태 코드를 반환하고 드라이브는 에뮬레이션 모드가 아닙니다.
부팅 가능한 CD-ROM 사양 패킷의 형식은 다음 표에 나와 있습니다.
오프셋
|
크기
|
설명
|
00시
|
바이트
|
패킷 크기(바이트) (13H)
|
01시
|
바이트
|
부트 미디어 유형
|
02시
|
바이트
|
드라이브 번호
드라이브 번호
|
드라이브 설명
|
00시
|
플로피 이미지
|
80H
|
부팅 가능한 하드 디스크
|
81H에서 FFH까지
|
부팅 불가능 또는 에뮬레이션 없음
|
|
03시
|
바이트
|
CD-ROM 컨트롤러 번호
|
04시
|
단어
|
디스크 이미지의 논리 블록 주소를 Emu로 전송
|
08시
|
단어
|
장치 사양
값
|
설명
|
(IDE) 비트 0
|
드라이브가 마스터가 아닌 슬레이브입니다.
|
(SCSI) 비트 0~7
|
LUN(논리 단위 번호) 및 PUN(물리적 단위 번호)
|
비트 8~15
|
버스 번호
|
|
0아
|
단어
|
CD-ROM 읽기 캐싱을 위한 3Kb 버퍼 세그먼트
|
0CH
|
단어
|
초기 부팅 이미지에 대한 세그먼트 로드(0000H인 경우 세그먼트 07C0H에서 로드)
|
0EH
|
단어
|
로드할 512바이트 가상 섹터 수(INT 13H의 기능 4CH에만 유효)
|
10시간
|
바이트
|
실린더 카운트의 하위 바이트(INT 13H의 함수 08H용)
|
11시
|
바이트
|
섹터 카운트, 실린더 카운트의 상위 비트(INT 13H의 함수 08H용)
|
12시
|
바이트
|
인원수(INT 13H의 기능 08H용)
|
부팅 가능한 CD-ROM 부팅 미디어 유형에 대한 비트 필드는 다음 표에 나와 있습니다.
비트(들)
|
설명
|
3-0
|
미디어 유형
값
|
설명
|
0000
|
에뮬레이션 없음.
|
0001
|
1.2M 디스켓.
|
0010
|
1.44M 디스켓.
|
0011
|
2.88M 디스켓.
|
0100
|
하드 디스크(드라이브 C:)
|
다른
|
예약된
|
|
5-4
|
예약됨 (0)
|
6
|
이미지에 ATAPI 드라이버가 포함되어 있습니다
|
7
|
이미지에 SCSI 드라이버가 포함되어 있습니다.
|
INT 13H (0x13)
기능 4B00H (0x4B00) --> 디스크 에뮬레이션 종료(부팅 가능 CD-ROM)
AX = 4B00H로 전화하세요
DL = 드라이브 번호(또는 종료하려면 7FH)
모든 에뮬레이션)
DS:SI = 빈 사양 패킷
반환: 함수가 성공하면,
캐리 플래그 = 클리어
함수가 실패하면,
캐리 플래그 = 설정
AX = 상태 코드
DS:SI = 사양 패킷이 채워짐
댓글:
이 함수는 디스크 에뮬레이션을 종료하는 데 사용됩니다. 모든 에뮬레이션을 종료하려면 DL = 7FH로 함수를 호출합니다. 함수가 성공하면 캐리 플래그가 지워지고, 그렇지 않으면 캐리 플래그가 설정되고 AX 레지스터는 상태 코드를 반환하고 드라이브는 에뮬레이션 모드로 유지됩니다.
INT 13H (0x13)
함수 4B01H (0x4B01) --> 상태 가져오기(부팅 가능한 CD-ROM)
AX = 4B01H로 전화하세요
DL = 드라이브 번호
DS:SI = 빈 사양 패킷
반환: 함수가 성공하면,
캐리 플래그 = 클리어
함수가 실패하면,
캐리 플래그 = 설정
AX = 상태 코드
DS:SI = 사양 패킷이 채워짐
댓글:
이 함수는 상태를 가져오는 데 사용됩니다. 함수가 성공하면 캐리 플래그가 지워지고, 그렇지 않으면 캐리 플래그가 설정되고 AX 레지스터가 상태 코드를 반환합니다.
INT 13H (0x13)
기능 4CH(0x4C 또는 76) --> 디스크 에뮬레이션 및 부팅 시작(부팅 가능한 CD-ROM)
AH = 4CH로 전화하세요
알 = 00H
DS:SI = 사양 패킷
반환: 함수가 성공하면,
아무것도 아님
함수가 실패하면,
캐리 플래그 = 설정
AX = 상태 코드
댓글:
이 함수는 디스크 에뮬레이션을 시작하고 시스템을 부팅하는 데 사용됩니다. 함수가 성공하면 아무것도 반환하지 않고 캐리 플래그가 설정되고 AX 레지스터는 상태 코드를 반환합니다.
INT 13H (0x13)
기능 4D00H (0x4D00) --> 부팅 카탈로그(부팅 가능 CD-ROM)로 돌아가기
AX = 4D00H로 전화하세요
DS:SI = 명령 패킷(표 참조)
댓글)
반환: 함수가 성공하면,
캐리 플래그 = 클리어
함수가 실패하면,
캐리 플래그 = 설정
AX = 상태 코드
댓글:
이 함수는 부트 카탈로그를 반환하는 데 사용됩니다. 함수가 성공하면 캐리 플래그가 지워지고, 그렇지 않으면 캐리 플래그가 설정되고 AX 레지스터가 상태 코드를 반환합니다. "Get Boot Catalog" 명령 패킷의 부팅 가능 CD-ROM 형식은 다음 표에 나와 있습니다.
오프셋
|
크기
|
설명
|
00시
|
바이트
|
패킷 크기(바이트) (08H)
|
01시
|
바이트
|
읽을 부트 카탈로그 섹터 수
|
02시
|
단어
|
부트 카탈로그용 버퍼
|
06시
|
단어
|
전송할 부팅 카탈로그의 첫 번째 섹터
|
INT 13H (0x13)
기능 4EH(0x4E 또는 78) --> 하드웨어 구성 설정(IBM/MS INT 13H Extensions v2.1)
AH = 4EH로 호출
AL = 함수 번호 (주석의 표 참조)
DL = 드라이브 번호
반환: 함수가 성공하면,
캐리 플래그 = 클리어
아 = 00H
함수가 실패하면,
캐리 플래그 = 설정
AH = 오류 코드
AL = 상태
댓글:
이 기능은 하드웨어 구성을 설정하는 데 사용됩니다. AL이 이 기능을 호출하는 기능 번호는 다음 표에 나와 있습니다.
값
|
설명
|
00시
|
프리페치 활성화
|
01시
|
프리페치 비활성화
|
02시
|
최대 PIO 전송 모드 설정
|
03시
|
PIO 모드 0 설정
|
04시
|
기본 PIO 전송 모드 설정
|
05시
|
INT 13H DMA 최대 모드 활성화
|
06시
|
INT 13H DMA 비활성화
|
DMA 및 PIO 모드는 상호 배타적이므로 DMA를 선택하면 지정된 장치 또는 해당 컨트롤러의 모든 장치에 대한 PIO가 비활성화되고 PIO를 선택하면 DMA가 비활성화됩니다.
INT 13H (0x13)
기능 5001H(0x5001) --> 패킷 전송 명령(향상된 디스크 드라이브 사양 v3.0)
AX = 5001H로 전화하세요
DL = 드라이브 번호
ES:BX = 명령 패킷(표 참조)
댓글)
반환: 함수가 성공하면,
캐리 플래그 = 클리어
아 = 00H
함수가 실패하면,
캐리 플래그 = 설정
AH = 오류 코드
댓글:
이 기능은 패킷 명령을 보내는 데 사용됩니다. 함수가 성공하면 캐리 플래그가 지워지고 AH 레지스터가 00H가 되고, 그렇지 않으면 캐리 플래그가 설정되고 AH가 오류 코드를 반환합니다. Enhanced Disk Drive Spec v3.0 명령 패킷의 형식은 다음 표에 나와 있습니다.
오프셋
|
크기
|
설명
|
00시
|
단어
|
시그니처 B055H
|
02시
|
바이트
|
패킷의 길이(바이트)
|
03시
|
바이트
|
예약됨 (0)
|
04시
|
N바이트
|
포맷된 패킷 데이터
|
INT 13H (0x13)
기능 5501H (0x5501) --> 문의 (Seagate ST01/ST02)
AX = 5501H로 전화하세요
DH = 전송할 바이트 수
DL = 드라이브 번호
ES:BX = 결과 버퍼
반품
ES:BX 버퍼, 조회 결과로 채워짐.
댓글:
이 기능은 문의를 보내는 데 사용됩니다. ST01/ST02 BIOS는 이 기능에 대한 성공 또는 실패 표시를 반환하지 않으므로 모든 명령은 성공한 것으로 가정해야 합니다.
ST01/ST02 BIOS는 0040H:0075H에서 BIOS 드라이브 수를 변경하지 않고 항상 이전 BIOS 드라이브 뒤에 드라이브를 매핑합니다. 이 명령은 SCSI Inquiry 명령과 동일합니다.
INT 13H (0x13)
기능 5502H(0x5502) --> 예약됨(Seagate ST01/ST02)
INT 13H (0x13)
기능 5503H(0x5503) --> DTQ(장치 유형 한정자) 설정(Seagate ST01/ST02)
AX = 5503H로 전화하세요
DH = DTQ 바이트(표 참조)
댓글)
DL = 드라이브 번호
반환: 없음
댓글:
이 함수는 DTQ(Device Type Qualifier)를 설정하는 데 사용됩니다. 이 함수는 아무것도 반환하지 않습니다. DTQ 바이트의 비트 필드는 다음 표에 나와 있습니다.
비트(들)
|
설명
|
0
|
Seagate 설치 소프트웨어가 존재합니다
|
1
|
선택된 드라이브가 설치되었습니다
|
2
|
호스트 어댑터가 선택한 드라이브의 패리티를 확인합니다.
|
3
|
선택된 드라이브는 ST225N입니다
|
4
|
선택된 드라이브는 ST225N/NP와 페어링됩니다.
|
5
|
예약된
|
6
|
SCSI 드라이브가 연결됨
|
7
|
예약된
|
INT 13H (0x13)
기능 5504H(0x5504) --> 반환 식별(Seagate ST01/ST02)
AX = 5504H로 전화하세요
DL = 드라이브 번호
반품:
축 = 4321H
BL = 선택된 드라이브 번호(00H, 01H)
BH = 호스트에 연결된 드라이브 수
어댑터
댓글:
이 함수는 드라이브의 식별 정보를 반환하는 데 사용됩니다.
INT 13H (0x13)
기능 5505H(0x5505) --> 파크 헤드(Seagate ST01/ST02)
AX = 5505H로 전화하세요
DL = 드라이브 번호
DH = 하위 함수 (주석 참조)
반품:
아무것도 아님
댓글:
이 기능은 디스크 헤드를 주차하는 데 사용됩니다. 이 기능은 오래된 하드 디스크 디스크에서 사용되었지만 최신 하드 디스크는 헤드를 주차하는 데 외부 프로그램이 필요하지 않습니다.
하위 기능 00H는 디스크 헤드를 주차(SCSI 중지 명령)하고 하위 기능 01H는 디스크 헤드의 주차 해제(SCSI 시작 명령)를 수행합니다.
INT 13H (0x13)
기능 5506H(0x5506) --> SCSI 버스 패리티(Seagate ST01/ST02)
AX = 5506H로 전화하세요
DL = 드라이브 번호
DH = 하위 기능 번호(참조)
댓글)
반품:
AL = 상태(00H 패리티 검사
비활성화됨, 01H 패리티 검사 활성화됨)
댓글:
DH에 대해 다음 하위 함수 번호로 함수를 호출합니다.
값
|
설명
|
00시
|
패리티 검사 비활성화
|
01시
|
패리티 검사 활성화
|
02시
|
현재 패리티 설정 반환
|
INT 13H (0x13)
기능 5507H(0x5507)에서 기능 550DH(0x550D)로 --> 예약된 기능(Seagate ST01/ST02)
AX = 5507H에서 AX = 550DH로 전화하세요.
댓글:
이러한 기능은 공식적으로 "예약됨"으로 나열되었습니다.
INT 13H (0x13)
기능 A0H(0xA0 또는 160) --> 상주 코드 세그먼트 가져오기(Super PC-Kwik v3.20 이상)
AH = A0H로 호출
IF = 4358H
반품:
AX = 주민코드 세그먼트
댓글:
이 함수는 상주 코드 세그먼트를 가져오는 데 사용됩니다. AX는 상주 코드의 세그먼트를 반환합니다.
INT 13H (0x13)
기능 A1H(0xA1 또는 161) --> 캐시 플러시(Super PC-Kwik v3.20 이상)
AH = A1H로 호출
IF = 4358H
반품:
캐리 플래그 = 클리어
AH = 00H(v5.10)
댓글:
해당 함수는 캐시를 플러시하는 데 사용됩니다.
INT 13H (0x13)
기능 A3H(0xA3 또는 163) --> 캐시 비활성화(Super PC- Kwik v3.20 이상)
AH = A3H로 호출
IF = 4358H
반품:
캐리 플래그 = 클리어
댓글:
이 함수는 캐시를 비활성화하는 데 사용됩니다.
INT 13H (0x13)
기능 A4H(0xA4 또는 164) --> 캐시 활성화(Super PC-Kwik v3.20 이상)
AH = A4H로 호출
IF = 4358H
반품:
캐리 플래그 = 클리어
댓글:
이 기능은 캐시를 활성화하는 데 사용됩니다.
INT 13H (0x13)
기능 EEH(0xEE 또는 238) --> 1024-실린더 플래그 설정(SWBIOS)
AH = EEH로 호출
DL = 드라이브 번호
반품:
캐리 플래그 = 클리어
아 = 00H
댓글:
이 함수는 1024 - 실린더 플래그를 설정하는 데 사용됩니다. 이 플래그는 AH=EEH 및 AH=EFH를 제외한 모든 INT 13H 호출에 의해 지워집니다. Disk Manager도 이러한 호출을 지원합니다. 이 함수는 해당 호출을 지원하는 소프트웨어에 대해 CX=0400H로 함수 AH=EFH를 호출하는 것과 동일합니다.
이 기능은 HyperDisk v4.01 이상 및 PC-Cache v5.5 이상에서도 지원되며, SWBIOS를 사용하여 드라이브를 캐싱하여 1024개 이상의 실린더에 액세스할 수 있습니다.
INT 13H (0x13)
기능 EFH(0xEF 또는 239) --> 실린더 오프셋 설정(Ontrack Drive Rocket)
AH = EFH로 호출
CX = 다음 INT 13H 호출을 위한 실린더 오프셋
DL = 드라이브 번호
반품:
캐리 플래그 = 클리어
아 = 00H
댓글:
이 함수는 실린더 오프셋을 설정하는 데 사용됩니다. 이 호출을 지원하는 소프트웨어의 경우, 함수 AH=EEH는 CX=0400H로 이 함수를 호출하는 것과 같습니다. 실린더 오프셋은 AH=EEH 및 AH=EFH를 제외한 모든 INT 13H 호출에 의해 0으로 재설정됩니다.
INT 13H (0x13)
기능 F9H (0xF9 또는 249) --> 설치 확인 (SWBIOS)
AH = F9H로 전화하세요
DL = 드라이브 번호
반환: 함수가 성공하면,
캐리 플래그 = 클리어
DX = 구성 단어(주석 참조)
함수가 실패하면,
캐리 플래그 = 설정
댓글:
이 기능은 설치 확인에 사용됩니다. 기능이 성공하면 캐리 플래그가 지워지고 DX가 구성 단어를 반환하고, 그렇지 않으면 캐리 플래그가 설정됩니다.
다른 SWBIOS 확장이 사용 가능한 경우 비트 15가 설정됩니다. Disk Manager도 이러한 호출을 지원합니다.
INT 13H (0x13)
기능 FEH(0xFE 또는 254) --> 확장 실린더 카운트 가져오기(SWBIOS)
AH = FEH로 호출
DL = 드라이브 번호
반품:
캐리 플래그 = 클리어
DX = 1024를 넘는 실린더 수
운전 중
댓글:
이 함수는 확장된 실린더 카운트를 얻는 데 사용됩니다. INT 13H의 AH = 08H 함수는 1024로 잘린 실린더 카운트를 반환합니다. 이 확장이 없는 BIOS는 카운트 모듈 1024를 반환합니다. Disk Manager도 이러한 호출을 지원합니다.
INT 13H (0x13)
함수 FFH(0xFF 또는 255) --> 공식적으로 비공개 함수(IBM SurePath BIOS)
INT 13H (0x13)
기능 FFFFH (0xFFFF) --> 터보 모드 설정(UNIQUE UX Turbo Utility)
AX = FFFFH로 전화하세요
BH = AAH
BL = 하위 기능 번호(표 참조)
(댓글에서)
반환: 설치된 경우,
축 = 1234H
댓글:
이 기능은 Turbo Mode를 설정하는 데 사용됩니다. BL로 함수를 호출하는 하위 함수 번호는 다음 표에 나와 있습니다.
값
|
설명
|
00시
|
설치 확인
|
01시
|
터보 모드를 켜세요
|
02시
|
터보 모드를 끄세요
|
03시
|
하드웨어 스위치에 따라 터보 모드 설정
|
04시
|
디스크 액세스를 터보 모드로 설정
|
05시
|
디스크 액세스를 일반 모드로 설정
|
C 프로그래밍에서 INT 13H 확장을 사용하는 방법
우리는 이전 장에서 사용했던 것과 같은 C 함수(int86(), int86x() 등)로 INT 13H의 확장 함수를 호출할 수 있습니다. 예를 들어 알아보겠습니다.
다음 예는 세 가지 기능(확장 기능 존재 확인, 확장 읽기 및 확장 쓰기)에 초점을 맞춥니다. 그러나 이 장에서는 확장 쓰기 기능을 사용하지 않습니다.
프로그램은 먼저 확장이 지원되는지 여부를 확인하고 INT 13H에 확장이 있는지 확인합니다. 디스크의 절대 섹터 0(따라서 MBR)을 읽습니다. 프로그램의 코딩은 다음과 같은 방식으로 진행됩니다.
/* INT 13 BIOS 확장을 사용하여 8.46GB 이상의 섹터에 액세스하는 프로그램 */
#include<stdio.h>
#include<dos.h>
/* 데이터 유형에 식별자를 할당합니다. */
typedef unsigned char 바이트;
typedef unsigned int Word;
typedef unsigned long DWord;
/* disk_packet 구조가 DS:SI에 로드되고 명령이 실행됨 */
구조체 disk_packet
{
Byte size_pack; // 패킷 크기는 16 또는 16+ 여야 합니다.
바이트 reserved1; // 예약됨
Byte no_of_blocks;// 전송할 블록 수
바이트 reserved2; // 예약됨
/* Segment:Offset 형식의 주소 */
단어 오프셋; // 오프셋 주소
단어 세그먼트; //세그먼트 주소
/* 1152921504.607GB 용량의 디스크도 지원 */
DWord lba1;
DWord lba2;
}
디스크팩;
/* 확장 기능이 지원되는지 확인하는 함수 */
void check_ext_present()
{
union REGS inregs, outregs; /* 입력 레지스터 및
출력 */
inregs.h.ah=0x41; /* 확인할 함수
확장자 현재 */
등록.x.bx=0x55AA;
inregs.h.dl=0x80; /* 첫 번째 하드 디스크의 드라이브 번호 */
int86(0x13,&inregs,&outregs); /*인터럽트 호출 */
if(outregs.x.cflag)
{
/* 확장이 지원되지 않습니다. */
printf("\nBIOS 확장이 지원되지 않습니다");
출구(1);
}
if(outregs.x.bx==0xAA55)
if(outregs.x.cx & 0x1)
/* 확장 기능 존재 */
printf("\n확장 I/O 지원");
}
/* 섹터를 읽는 함수 */
void read_sectors(void *버퍼)
{
union REGS inregs, outregs; /* 입력 및 출력
레지스터 */
struct SREGS segregs; // 세그먼트 레지스터
disk_pack.size_pack=16; // 크기를 16으로 설정
disk_pack.no_of_blocks=1; // 블록 1개
disk_pack.reserved1=0; // 예약어
disk_pack.reserved2=0; // 예약어
disk_pack.segment=FP_SEG(버퍼);// 버퍼의 세그먼트
disk_pack.offset=FP_OFF(버퍼); // 버퍼의 오프셋
/* 하드 디스크 1의 MBR 요청 */
/* 절대 섹터 0 읽기 */
disk_pack.lba1=0; /* LBA 주소, 첫 번째 포함
32비트 */
/* 일반적으로 드라이브 < 2.1TB를 설정하려면 다음이 필요합니다.
이것만 */
disk_pack.lba2=0; // 마지막 32비트 주소
inregs.h.ah=0x42; // 읽을 함수
inregs.h.dl=0x80; // 첫 번째 하드 디스크의 드라이브 번호 inregs.x.si = FP_OFF(&disk_pack); /* DS:SI 지점 만들기
disk_pack으로 */
segregs.ds = FP_SEG(&disk_pack);
/* 호출 인터럽트 */
int86x(0x13,&inregs,&outregs,&segregs);
if(outregs.x.cflag)
printf("\n\n오류 %d\n", outregs.h.ah);
또 다른
printf("\n\n모든 것이 괜찮기를 바랍니다");
}
//// 섹터 함수 쓰기 \\\\
무효 write_sector()
{
/* read_sectors 함수와 같은 방식으로 작성되지만, 이 함수에서는 함수 번호가 0x43입니다. 다음 장에서 확장된 쓰기 함수에 대해 논의합니다.
이 기능을 사용하기 전에 무엇을 할 것인지 확인하고 검증하세요. 무엇을 할 것인지에 대한 적절한 지식이 있어야 합니다. 지식이 부족하거나 부주의하게 이 기능을 사용하면 데이터가 파괴될 수 있습니다. */
}
/// 주요 함수 \\\\
void 메인()
{
int i=0;
/* MBR을 보관할 버퍼 */
바이트 mfr[512];
영어: clrscr();
/* BIOS 확장 기능이 있는지 확인 */
현재_외부_표시_확인();
/* 섹터 읽기 */
섹터 읽기(&mbr);
printf("\n\n MBR의 데이터 \n");
printf("▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\n\n\n");
while(i++<512)
{
/* MBR 버퍼를 표시합니다. */
printf("%c",mbr[i]);
}
}
MBR의 데이터
프로그램 코딩에 대한 의견
typedef 식별자를 데이터 유형에 할당합니다. typedef unsigned char Byte;는 데이터 유형 char에 식별자 Byte를 할당합니다. 마찬가지로 식별자 Word는 int에 할당되고 DWord는 long에 할당됩니다.
disk_packet 구조는 DS:SI에 로드되고 명령(예: 확장 읽기, 확장 쓰기 또는 확인 등)이 실행됩니다. 이전에 제공된 IBM/MS INT 13H 확장(함수 41H~함수 49H)의 함수를 참조하세요.
check_ext_present() 함수는 확장이 사용 가능/지원되는지 여부를 확인합니다. 이 함수는 BX=55AAH(inregs.x.bx=0x55AA;)로 호출되고 확장이 지원되는 경우 BX 레지스터는 AA55H로 설정됩니다. (앞서 제공된 함수 41H 참조)
함수 read_sectors는 disk_pack.lba1로 지정된 디스크의 절대 섹터를 읽는 데 사용됩니다. 이 프로그램에서는 disk_pack.lba1=0을 지정했으므로 절대 섹터 0을 읽을 것입니다(아래 참고 사항 참조). 따라서 디스크의 MBR을 읽을 것입니다.
write_sector 함수는 read_sectors 함수와 동일하며 동일한 방식으로 작성되지만 Function 옵션이 다릅니다. 다음 장에서 사용하겠습니다.
메모:
다음 두 가지 방법으로 디스크 섹터를 읽습니다.
- 상대 섹터 읽기(또는 쓰기)
- 절대 섹터 읽기(또는 쓰기)
상대 섹터 읽기에서 우리는 디스크의 CHS(실린더, 헤드 및 섹터) 지오메트리에 따라 디스크 섹터를 읽습니다. 상대 섹터 읽기에서 디스크의 MBR(디스크의 첫 번째 섹터)은 실린더 0, 헤드 0 및 섹터 1에 있습니다.
디스크 섹터의 절대 읽기에서, 우리는 프로그램에서 실린더나 헤드 번호를 지정할 필요가 없습니다. 절대 섹터는 절대 섹터 0에서 계산됩니다.
따라서 디스크의 MBR(디스크의 첫 번째 섹터)을 읽으려면 절대 섹터 0을 읽으려고 합니다. 절대 섹터 번호를 해당 실린더, 헤드, 섹터 번호로 변환하는 것은 BIOS의 역할입니다.
절대 섹터 읽기(또는 쓰기)의 경우 전체 디스크 읽기 또는 쓰기와 같은 작업에서 루프 내의 절대 섹터만 계산해야 하지만, 상대 섹터 읽기(또는 쓰기)의 경우 CHS를 계산하기 위해 한 번에 세 개의 루프를 실행해야 하므로 절대 섹터 읽기/쓰기가 상대 섹터 읽기/쓰기보다 훨씬 빠릅니다.
예를 들어, 16개 헤드(면), 12개 실린더, 63개 섹터가 있는 하드 디스크가 있다면, 다음 표는 두 가지 읽기 방법의 절차와 차이점을 보여주며, 절대 섹터 접근 방식이 시간이 많이 걸리는 프로그램(예: 전체 디스크 읽기/쓰기 또는 전체 디스크 삭제 프로그램 등)을 훨씬 더 빠르게 실행하는 데 어떻게 도움이 될 수 있는지 보여줍니다.
상대적인 분야 읽기
|
절대 섹터 판독
|
실린더 = 0, 헤드 = 0, 섹터 = 1
|
절대 섹터 = 0
|
실린더 = 0, 헤드 = 0, 섹터 = 2
|
절대 섹터 = 1
|
실린더 = 0, 헤드 = 0, 섹터 = 3
|
절대 섹터 = 2
|
.
.
.
.
|
.
.
.
.
|
실린더 = 0, 헤드 = 0, 섹터 = 62
|
절대 섹터 = 61
|
실린더 = 0, 헤드 = 0, 섹터 = 63
|
절대 섹터 = 62
|
실린더 = 0, 헤드 = 1, 섹터 = 1
|
절대 섹터 = 63
|
실린더 = 0, 헤드 = 1, 섹터 = 2
|
절대 섹터 = 64
|
실린더 = 0, 헤드 = 1, 섹터 = 3
|
절대 섹터 = 65
|
실린더 = 0, 헤드 = 1, 섹터 = 4
|
절대 섹터 = 66
|
.
.
.
.
|
.
.
.
.
|
실린더 = 0, 헤드 = 1, 섹터 = 63
|
절대 섹터 = 125
|
실린더 = 0, 헤드 = 2, 섹터 = 1
|
절대 섹터 = 126
|
실린더 = 0, 헤드 = 2, 섹터 = 2
|
절대 섹터 = 127
|
실린더 = 0, 헤드 = 2, 섹터 = 3
|
절대 섹터 = 128
|
.
.
.
.
|
.
.
.
.
|
실린더 = 0, 헤드 = 15, 섹터 = 63
|
절대 섹터 = 1007
|
실린더 = 1, 헤드 = 0, 섹터 = 1
|
절대 섹터 = 1008
|
실린더 = 1, 헤드 = 0, 섹터 = 2
|
절대 섹터 = 1009
|
실린더 = 1, 헤드 = 0, 섹터 = 3
|
절대 섹터 = 1010
|
.
.
.
.
|
.
.
.
.
|
실린더 = 1, 헤드 = 0, 섹터 = 63
|
절대 섹터 = 1070
|
실린더 = 1, 헤드 = 1, 섹터 = 1
|
절대 섹터 = 1071
|
실린더 = 1, 헤드 = 1, 섹터 = 2
|
절대 섹터 = 1072
|
실린더 = 1, 헤드 = 1, 섹터 = 3
|
절대 섹터 = 1073
|
.
.
.
.
|
.
.
.
.
|
실린더 = 1, 헤드 = 15, 섹터 = 63
|
절대 부문 = 2015
|
실린더 = 2, 헤드 = 0, 섹터 = 1
|
절대 부문 = 2016
|
실린더 = 2, 헤드 = 0, 섹터 = 2
|
절대 부문 = 2017
|
실린더 = 2, 헤드 = 0, 섹터 = 3
|
절대 부문 = 2018
|
.
.
.
.
|
.
.
.
.
|
실린더 = 11, 헤드 = 15, 섹터 = 60
|
절대 섹터 = 12092
|
실린더 = 11, 헤드 = 15, 섹터 = 61
|
절대 섹터 = 12093
|
실린더 = 11, 헤드 = 15, 섹터 = 62
|
절대 섹터 = 12094
|
실린더 = 11, 헤드 = 15, 섹터 = 63
|
절대 섹터 = 12095
|
디스크의 MBR 분석 도구에서 표시되는 MBR 파티션 테이블에 대한 정보는 다음과 같습니다.
디스크의 모든 MBR 분석 도구에 의해 표시됨
위 정보에서 두 파티션의 시작 부분에 대한 상대적인 섹터 번호는 각각 63과 11277630이며, 이는 파티션이 없는 상태이며 디스크에서 사용 가능한 섹터 수에 따라 계산됩니다.