Interrupt $0x1e 에 해당하는 벡터위치에 DPT의 위치주소가 담겨있습니다.
우리는 이 값을 통해서 플로피의 정보를 얻어볼수 있습니다. Interrupt 0x1e 는 0x1e * 4 = 0x0078 에
해당하는 주소이며 이 주소에 DPT가 담겨져 있는 메모리를 가르키는 주소값이 존재하게 됩니다. 여기서 Interrupt
0x1e는 "Disk Initialization Parameter Table Vector" 라고 부릅니다. 그리고 DPT는
"Disk parameter table"이라고 합니다.
참고로 아래의 내용중에 시간의 단위는 Milli second입니다.
디스크로부터 읽는 것은 Interrupt $0x13 을 사용하는 방법이 있고 PIO 방식도 있으니 그 부분은 가장 많이 알려져 있는 "랄프브라운의 인터럽트 리스트"를 참고하시면 될겁니다.
참고로 아래의 내용중에 시간의 단위는 Milli second입니다.
디스크로부터 읽는 것은 Interrupt $0x13 을 사용하는 방법이 있고 PIO 방식도 있으니 그 부분은 가장 많이 알려져 있는 "랄프브라운의 인터럽트 리스트"를 참고하시면 될겁니다.
| 코드: |
|
Offset 내용 0x00 Bit 0~3까지 4bit는 Head의 지연시간을 가집니다. Bit 4~7까지 4bit는 Head가 자유로워지는에 걸리는 시간입니다. 0x01 Bit 0은 DMA의 사용가능 여부입니다. Bit 1~7까지 7Bit는 Head의 접근시간에 대하여 2를 나누어 1을 뺀 값의 시간을 뜻합니다. 0x02 Motor의 전원이 완전히 꺼지기까지의 Clock tick수를 의미합니다. 0x03 FM 또는 MFM모드에 대하여 각각 내용이 다른데 그냥 섹터당 바이트수를 128로 나눈값으로 생각하시면 무난할듯. 0x04 Track당 Sector수 (본래 의미는 Track에서 마지막 섹터번호입니다.) 0x05 Sector당 byte수 (본래 의미는 Sector간격입니다.) 0x06 Format을 결정하는 값 (0x80이면 섹터당 128byte이고 그 외의 값은 필자도 정확히 모르며 정확하지 않아도 잘 되네요.) 0x07 Format간격 (포맷시에 하나의 그룹을 단위로 포맷을 하게 되는데 이때 이 그룹간격) 0x08 위와 비슷한데 Data형식 지정자라고 해야 할까? (필자는 이것에 대해서도 잘 모르겠습니다.) 0x09 Head가 접근후에 준비까지의 시간 0x0a Motor가 기동되어 준비될때까지의 시간 0x0b Motor가 중지될때까지의 시간 (디스켓 빼려면 이것이 정지될때까지는 빼지 말라고 할수 있겠죠?) |




댓글을 달아 주세요