배열 "대위 0 나쁜" 플로피
이 프로그램은 DOS 또는 창으로 배열될 때 그들의 대위 0에 잘못된 섹터를 비치하고 있는 그 플로피, "대위 0 악" 같이 전시 착오 알림말을 배열하기 위하여 이용되고. 그러나 당신은 또한 정상적인 플로피를 배열하기 위하여 그것을 이용할 수 있다.
프로그램의 코딩은 이름 "TTFORMAT.C"를 가진 이 책으로 포함된 디스크에서 주어졌다. 프로그램의 작동 논리는 2003년 2월 판에서 PCQUEST 컴퓨터 잡지에서, 간행된 프로그램과 같다.
이 프로그램에서는, 우리는 그들을 배열해서 재사용할 수 있는 플로피의 이 유형을 하는 것을 시도한다. 당신이 그것에 몇몇 잘못된 섹터를 가진 조차 플러피 디스크를 취급할 수 있다 프로그램 소리. 그러나, 디스크의 첫번째 분야가 나쁜 경우에, 플로피는 배열될 수 없다.
프로그램은 모든 DBR, 지방질 및 루트 디렉토리 정보를 다시 쓴다. 만약에 디스크의 표면에 잘못된 섹터가 있으면, 그들은 지방질에 있는 악으로 표를 한다.
프로그램의 코딩에서는, 구조 BPB는 작가에게 DBR의 BIOS 매개변수 구획 이용된다. 구조 boot_sector는 디스크의 DBR를 쓰는 이용된다. 구조 address_field는 대위 당 그리고 분야의 크기를 가진 실린더, 머리 및 분야의 수로 상호 작용을 위해 이용된다.
프로그램 및 그들의 묘사의 코딩에서 사용된 다른 기능은 다음 주어진 테이블에서 주어졌다.
기능 |
묘사 |
Random_VolumeID () |
이 기능은 디스크의 양 ID를 제공한다. DOS가 생성하는 방법 (플로피의 일련 번호는 이 테이블의 옆에 토론되었다) |
mark_bad () |
분야를 확인하는 INT 13H의 기능 04H를 사용하는 표 잘못된 섹터. |
sector_no_to_physical () |
이 기능은 대위, 머리 및 분야로 분야의 수를 개조하기 위하여 이용된다 |
format_term () |
포맷으로 만듬을 종결하고 프로그램을 나가기 위하여 |
write_boot_info () |
디스크의 부트 섹터를 쓴다 |
set_media_type_for_format () |
기능은 INT 13H의 기능 18H를 사용하여 체재를 위한 미디어 타입을 놓기 위하여 이용된다 |
volume_label () |
기능은 양 상표를 디스크의 양 상표를 쓰는 얻는다 |
format () |
잘못된 섹터 조사 취급 뿐만 아니라 포맷으로 만듬 동안에 디스크의 표면을 닦는다. |
get_drive_parameters () |
기능은 드라이브 매개변수를 얻기 위하여 INT 13H 의 기능 08H를 이용한다. |
mark_bad () |
나쁜 송이의 정보를 지방질에서 표를 하기 위하여 보전된다 |
ask_for_continue () |
디스크를 배열하기 전에 확인할 것이다 기능 |
check_bad () |
돌려보내진 상태가 잘못된 섹터를 위한 오류 코드인지 검사하는 기능 |
error () |
이 기능은 대응 오류 코드를 위한 착오 알림말을 디스플레이한다 |
lock_volume () |
기능은 INT 21H, 기능 44H 및 이하 기능 0DH를 사용하여 드라이브를 잠그기 위하여 이용된다 |
unlock_volume () |
기능은 INT 21H, 기능 44H 및 이하 기능 0DH를 사용하여 드라이브를 자물쇠로 열기 위하여 이용된다 |
physical_to_sector_no () |
기능은 대위, 머리 및 분야 수에서 분야의 수를 산출하기 위하여 이용된다 |
플러피 디스크의 볼륨 일련 번호는 시스템 클럭의 오늘날짜 그리고 시간에 따르면 DOS에 의해 산출된다.
일련 번호의 첫번째 부분은 시간 (초의 초 그리고 백번째)와 날짜의 합계에 의해 산출된다 (달과 일). 일련 번호의 두번째 부분은 시간 (시간과 분)와 날짜 (년)의 합계와 동등하다.
모든 계산은 16 진법 체계에서 실행된다. 예를 들면 당신이 11:16에 DOS 환경에 있는 플로피를 배열했다고, 저희를 추정한다 시키십시오: 28: 10/23/2003에 65. 지금 저희를 산출한다 디스크의 일련 번호를 시키십시오.
(초의 초 그리고 백번째) 체재에 있는 시간은 이다
= (28 and 65)
= (1CH and 41H)
Write it as 1C41
유사하게, (달과 일) 체재에 있는 날짜는 이다
= (10 and 23)
= (0AH and 17H)
Write it as 0A17
유사하게, (시간과 분) 체재에 있는 시간은 이다,
= (11 and 16)
= (0BH and 10H)
Write it as 0B10
그리고 년은 일 것이다
= 2003
= 07D3
지금, 저희를 산출한다 전에 주어진 묘사에 따르면 플러피 디스크의 일련 번호를, 시키십시오. 일련 번호 우물의 첫번째 부분은 (1C41 + 0A17) = 2658있고 일련 번호의 두번째 부분은 (0B10 + 07D3) = 12E3 일 것이다.
|
page 1 | 2 | 3 | 4 | 5 | 6 |
|
|
|