Lời giới thiệu
Phương tiện lưu trữ dữ liệu phổ biến nhất hiện nay là CD-ROM. Các nhà sản xuất máy tính hàng đầu cũng đã trang bị CD cho các máy tính PC. CD ngày nay đã đến với từng gia đình, mang lại cho người sử dụng rất nhiều tiện ích mutimedia.
Các nhà phát triển hệ thống đã điều chỉnh các ổ đĩa cứng với các phần mềm phù hợp để chạy trên đĩa CD. Các ứng dụng thấy được sự tiện lợi khi sử dụng đĩa CD cũng như thấy được khối lượng dữ liệu khổng lồ mà CD có khả năng lưu trữ.
Trong phần báo cáo này của chúng em, phần đầu chúng em trình bày về cơ sở lý thuyết về cấu trúc lưu trữ của ổ đĩa CD. Phần sau trên cơ sở những lý thuyết đó chúng em xây dựng chương trình để truy cập vào cấu trúc điều khiển của đĩa CD.
Báo cáo đề tài CDROM.
Khuôn dạng vật lý:
- CD-ROM được tổ chức như thế nào:Bề mặt có thể ghi của CD-ROM có thể được chia thành 3 phần:
+ Lead in: 4mm đầu tiên, chứa các bảng nội dung.
+ Data Area: có thể đạt tới 33 mm tuỳ thuộc vào số lượng dữ liệu.
+ Lead out: đánh dấu sự kết thúc của vùng dữ liệu, rộng khoảng 1mm.
Cấu trúc của đĩa CD
Thông tin được lưu trữ trên CD dưới dạng các pit (vết lõm) và các lands;CD được lưu trữ từ trong ra ngoài.
Vị trí của các pit và land trên CD-ROM
Các phương pháp lưu trữ dữ liệu CAV và CLV:
ã CAV (Constant Angular Velocity): tốc độ góc không đổi, ứng dụng trong đĩa cứng, tiến hành truy cập dữ liệu ở các tốc độ khác nhau, tuỳ theo khoảng cách của đầu từ đến trục ổ đĩa ở xa hay gần. Do đó thời gian khôI phục dữ liệu nhanh hơn khi đầu từ ở gần trục trung tâm, và trung gian khôI phục sẽ chậm dần khi đầu từ được chuyển từ trong ra ngoài.
ã CLV (Constant Linear Velocity):tốc độ tuyến tính không đổi, làm nhanh hoặc làm chậm tốc độ quay của đĩa để đảm bảo tốc độ đĩa ở điểm đọc luôn không đổi. Để đảm bảo tốc độ tuyến tính không đổi đĩa phải quay chậm hơn khi đọc hoặc ghi ở gần trục tâm.
Sự thay đổi tốc độ quay liên tục của đĩa CD là một trong những lý do làm cho thời gian truy cập trên CD ROM chậm hơn trên ổ cứng.
19 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2581 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Tìm hiểu truy cập cdrom, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Lêi giíi thiÖu
Ph¬ng tiÖn lu tr÷ d÷ liÖu phæ biÕn nhÊt hiÖn nay lµ CD-ROM. C¸c nhµ s¶n xuÊt m¸y tÝnh hµng ®Çu còng ®· trang bÞ CD cho c¸c m¸y tÝnh PC. CD ngµy nay ®· ®Õn víi tõng gia ®×nh, mang l¹i cho ngêi sö dông rÊt nhiÒu tiÖn Ých mutimedia.
C¸c nhµ ph¸t triÓn hÖ thèng ®· ®iÒu chØnh c¸c æ ®Üa cøng víi c¸c phÇn mÒm phï hîp ®Ó ch¹y trªn ®Üa CD. C¸c øng dông thÊy ®îc sù tiÖn lîi khi sö dông ®Üa CD còng nh thÊy ®îc khèi lîng d÷ liÖu khæng lå mµ CD cã kh¶ n¨ng lu tr÷.
Trong phÇn b¸o c¸o nµy cña chóng em, phÇn ®Çu chóng em tr×nh bµy vÒ c¬ së lý thuyÕt vÒ cÊu tróc lu tr÷ cña æ ®Üa CD. PhÇn sau trªn c¬ së nh÷ng lý thuyÕt ®ã chóng em x©y dùng ch¬ng tr×nh ®Ó truy cËp vµo cÊu tróc ®iÒu khiÓn cña ®Üa CD.
B¸o c¸o ®Ò tµi CDROM.
Khu«n d¹ng vËt lý:
- CD-ROM ®îc tæ chøc nh thÕ nµo:BÒ mÆt cã thÓ ghi cña CD-ROM cã thÓ ®îc chia thµnh 3 phÇn:
+ Lead in: 4mm ®Çu tiªn, chøa c¸c b¶ng néi dung.
+ Data Area: cã thÓ ®¹t tíi 33 mm tuú thuéc vµo sè lîng d÷ liÖu.
+ Lead out: ®¸nh dÊu sù kÕt thóc cña vïng d÷ liÖu, réng kho¶ng 1mm.
CÊu tróc cña ®Üa CD
Th«ng tin ®îc lu tr÷ trªn CD díi d¹ng c¸c pit (vÕt lâm) vµ c¸c lands;CD ®îc lu tr÷ tõ trong ra ngoµi.
VÞ trÝ cña c¸c pit vµ land trªn CD-ROM
C¸c ph¬ng ph¸p lu tr÷ d÷ liÖu CAV vµ CLV:
CAV (Constant Angular Velocity): tèc ®é gãc kh«ng ®æi, øng dông trong ®Üa cøng, tiÕn hµnh truy cËp d÷ liÖu ë c¸c tèc ®é kh¸c nhau, tuú theo kho¶ng c¸ch cña ®Çu tõ ®Õn trôc æ ®Üa ë xa hay gÇn. Do ®ã thêi gian kh«I phôc d÷ liÖu nhanh h¬n khi ®Çu tõ ë gÇn trôc trung t©m, vµ trung gian kh«I phôc sÏ chËm dÇn khi ®Çu tõ ®îc chuyÓn tõ trong ra ngoµi.
CLV (Constant Linear Velocity):tèc ®é tuyÕn tÝnh kh«ng ®æi, lµm nhanh hoÆc lµm chËm tèc ®é quay cña ®Üa ®Ó ®¶m b¶o tèc ®é ®Üa ë ®iÓm ®äc lu«n kh«ng ®æi. §Ó ®¶m b¶o tèc ®é tuyÕn tÝnh kh«ng ®æi ®Üa ph¶i quay chËm h¬n khi ®äc hoÆc ghi ë gÇn trôc t©m.
Sù thay ®æi tèc ®é quay liªn tôc cña ®Üa CD lµ mét trong nh÷ng lý do lµm cho thêi gian truy cËp trªn CD ROM chËm h¬n trªn æ cøng.
C¸c ph¬ng ph¸p lu tr÷ th«ng tin trªn ®Üa tõ
Lu tr÷ c¸c bit vµ c¸c byte:
Bëi sù giíi h¹n vÒ kü thuËt, mçi land (hoÆc pit) cã ®é dµi tèi thiÓu lµ 3 bit, vµ lín nhÊt lµ 11 bit. Víi giíi h¹n nµy ta kh«ng thÓ biÓu diÔn hai bit 1 liÒn nhau, cho nªn kh«ng diÔn t¶ hÕt ®îc c¸c ho¸n vÞ cña 0 vµ 1, dÉn ®Õn ph¶i dïng lîc ®å EFM (Eight-to-Fourteen Modulation).
B¶ng EFM
Mçi byte 8 bit th«ng thêng giê ®©y ®îc chuyÓn thµnh byte víi 14 chanel bit, vµ sù chuyÓn ®æi nµy dùa vµo mét b¶ng lµ mét phÇn cña ®¬n vÞ ®iÒu khiÓn trªn mäi æ CD-ROM.
Nhng cßn vÊn ®Ò n÷a ®Æt ra lµ nÕu kÕt thóc cña mét byte lµ mét chanel 1 vµ b¾t ®Çu cña byte tiÕp theo lµ chanel 1 th× kh«ng thÓ thÓ hiÖn ®îc, cho nªn ph¶i chÌn thªm 3 bit ®îc gäi lµ 3 bit trén ®Ó t¸ch biÖt gi÷a c¸c byte, dÉn ®Õn mét byte cã 17 chanel bit.
C¸c frames:
Khèi th«ng tin nhá nhÊt trªn mét CD ®îc gäi lµ mét frame.
Mét frame bao gåm 24 byte.
C¸c sector:
CD Audio cã thÓ ®äc 75 sector/second.
§Þa chØ d÷ liÖu trªn CD dùa trªn c¬ së c¸c ®¬n vÞ thêi gian cã d¹ng: minutes/seconds /sector.
Mét sector ®îc ®Þnh d¹ng trªn CD
C¸c subchannel:
Mét subchannel lµ sù kÕt hîp cña tÊt c¶ c¸c bit trong cïng mét vÞ trÝ cñ© c¸c byte ®iÒu khiÓn cña c¸c frame kÕ tiÕp.
Luång d÷ liÖu bao gåm c¸c bit d÷ liÖu cña 98 byte ®iÒu khiÓn trong mét sector ®îc gäi lµ P-channel, vµ t¬ng tù c¸c luång d÷ liÖu ®îc thiÕt lËp tõ bit thø hai lµ Q-channel. S¸u bit tiÕp theo lËp nªn sau kªnh tõ R ®Õn W.
Minh ho¹ mét Subchannel
Subchannel P chØ ra r»ng music hay d÷ liÖu m¸y tÝnh ®îc t×m thÊy trong mét sector.
Subchannel Q chøa ®ùng c¸c th«ng tin thêi gian, nã cã thÓ lµ thêi gian tuyÖt ®èi tÝnh tõ sù khëi ®Çu cña CD (ATime ) hay lµ thêi gian tÝnh theo track.
Trong vïng Lead in, 72 bit cña subchannel Q chøa ®ùng b¶ng néi dung 26 bit sö dông cho ®ång bé vµ söa lçi.
Subchannel RàW chøa ®ùng d÷ liÖu ®ång bé vµ s÷a lçi.
Söa Lçi:
Cã 2 x 39 Byte th«ng tin söa lçi trªn mçi Sector
Víi CD Audio sö dông kü thuËt - Reed - Solomon - Code.
Víi CD - ROM sö dông - Cross Interleaved Reed Solomon Code
CIRC:
Sö dông CIRC, víi khu«n d¹ng CD - DA ta cã tû lÖ m¾c lçi lµ 1/108.
tû lÖ vÉn cao ®èi víi c¸c d÷ liÖu quan träng à cã mét khu«n d¹ng míi
C¸c khu«n d¹ng CD – ROM:
XÐt mode 1: víi viÖc gi¶m vïng data (2352 -> 2048 byte) vµ t¨ng th«ng tin söa lçi -> kh¶ n¨ng sinh lçi gi¶m.
Lµm viÖc víi 2k data lµ dÔ dµng nhÊt ®èi víi lËp tr×nh viªn -> dïng ®Ó lu c¸c th«ng tin quan träng.
XÐt mode 2: kh«ng thªm vµo c¸c tÝn hiÖu söa lçi -> dïng lu c¸c th«ng tin kh«ng quan träng (vÝ dô ¶nh).
¦u ®iÓm: tû lÖ chuyÓn giao d÷ liÖu nhanh, vÝ dô trong 1 gi©y.
chÕ ®é 1: 75 x 2048 = 150 K
chÕ ®é 2: 75 x 236 = 171 K
Mode 0: Sector rçng, lÊp ®Çy bëi 0
Khu«n d¹ng XA (Extended Architecture):
ChuÈn XA ®îc ph¸t triÓn ®Ó gi¶i quyÕt mét vÊn ®Ò ®Æc biÖt cho c¸c øng dông Multimedia. VÝ dô hiÓn thÞ v¨n b¶n trªn mµn h×nh trong khi ®ang ch¹y video vµ cã nÒn cña mét b¶n nh¹c, mét øng dông ph¶i ®ång thêi sö lý 3 luång d÷ liÖu tõ 3 file riªng biÖt. H¬n n÷a, øng dông ph¶i thùc hiÖn trong thêi gian thùc. Tuy nhiªn víi mét CPU th× nã ph¶i lÆp ®i lÆp l¹i c¸c c«ng viÖc víi c¸c sè lîng nhá d÷ liÖu cña v¨n b¶n, video vµ music. §iÒu ®ã cã nghÜa lµ CPU ph¶i t¶i mét phÇn file v¨n b¶n sau ®ã lµ mét phÇn video, vµ cuèi cïng lµ mét phÇn cña file music. Víi kh¶ n¨ng truy cËp chËm cña CD - ROM th× thÕ giíi mu«n mµu cña Multimedia sÏ bÞ ®æ sËp nhanh chãng, video sÏ giËt ©m thanh bÞ mÐo vµ v¨n b¶n hiÓn thÞ kh«ng phï hîp.
NÐt ®Æc trng quan träng cña XA ®ã lµ kh¶ n¨ng chÌn c¸c Sector. Bëi kü thuËt nµy mµ CPU ®äc c¶ 3 lo¹i d÷ liÖu mµ kh«ng ph¶i di chuyÓn ®Çu däc. Víi kü thuËt nµy, c¸c Sector ®îc lång vµo mét file, vÝ dô nh 3 Sector v¨n b¶n b¾t ®Çu mét d·y tiÕp theo lµ 4 Sectors video vµ tiÕp theo lµ 3 Sector Audio. Bíc nµy cø lÆp ®i lÆp l¹i cho tíi khi c¶ 3 luång d÷ liÖu ®Òu hÕt.
XA flag trong Subheader cña mét Sector trong CD-ROM XA
High Sierra diÔn t¶ khu«n d¹ng logic
B©y giê ta sÏ ®i t×m hiÓu vÒ c¸c khu«n d¹ng logic - files vµ directorys.
Khu«n d¹ng HSG (High Sierra Group) nãi vÒ - Volume and File structure of compact Read only Optical Disk for Information Interchange.
ISO 9660 chÊp nhËn 99.5% sù ®Ò xuÊt cña HSG, ®iÒu kh¸c biÖt ®ã lµ cÊu tróc c¸c phÇn tö directory.
Logical Sectors
KÝch thíc cña Sector logic HSG lµ 2048 byte (2k)
Mçi Sector cã mét sè duy nhÊt ®îc gäi lµ Logical Sector Number (LSN)
§Þa chØ ®Çu tiªn cña LSN lµ 0 t¬ng øng víi Sector vËt lý t¹i ®Þa chØ 00:02:00, v× thÕ mét sè Sector vËt lý ®Çu tiªn h×nh thµnh 2s ®Çu tiªn cña CD kh«ng thÓ truy cËp t¹i møc logic
C«ng thøc chuyÓn ®æi
LSN ( mm : ss : ff) = (mm*60 +ss)*75 - 150
Logical Blocks (LBN)
§Õ dÔ dµng cho viÖc xö lý c¸c Sector logic cã thÓ ®îc chia thµnh c¸c logical blocks (LBN)
LBN cã thÓ lµ 512 byte, 1024 byte, hay 2048 byte.
LBN còng ®îc ®¸nh sè, ta lÊy vÝ dô víi LBN = 512 byte
File vµ tªn file
C¸c file HSG ®îc lu tr÷ díi d¹ng mét d·y liªn tiÕp c¸c Logical blocks vµ ®îc gäi lµ ‘extent’, v× thÕ ta sÏ kh«ng t×m thÊy mét b¶ng FAT trªn CD-ROM, thay vµo ®ã ta chØ cÇn biÕt vÞ trÝ b¾t ®Çu vµ ®é dµi cña file lµ ®ñ.
Tªn file HSG: 8 byte cho tªn (chØ chøa c¸c ký tù hoa A-Z, c¸c sè 0-9 vµ dÊu g¹ch díi “_”) vµ 3 fbyte cho ®u«i më réng.
Tªn file ISO: 1 tªn file cã 32 ký tù cã hoÆc kh«ng cã dÊu chem.
Directory vµ SubDirectory
Cd cã mét th môc gèc cho cÊu tróc c¸c file lu tr÷, th môc gèc cã thÓ cã th môc con, th môc con cã thÓ cã th môc con cña nã, à cÊp cao nhÊt lµ 8.
Th môc gèc vµ tÊt c¶ c¸c th môc con cña nã ®îc lu tr÷ nh mét file. C¸c file th môc cã thÓ ®îc s¾p xÕp gi÷a c¸c th môc kh¸c ë bÊt kú vÞ trÝ nµo trªn ®Üa.
Offset
HSG field
Type
Meaning
ISO field
Type
00h
Len-dr
1 Byte
§é dµi c¸c phÇn tö Direction (Byte)
=
01h
XAR-len
1Byte
Sè lîng Sector logic dù tr÷ cho XAR
=
02h
Loc-ExtendI
1Word
Block logical ®Çu tiªn cña file tÝnh theo Intel.
=
06h
Loc-ExtendM
1Word
Block logical ®Çu tiªn cña file tÝnh theo Motorola.
=
0Ah
Data-len I
1Word
§é dµi file (Byte) tÝnh theo Intel.
=
0Eh
Data-len M
1Word
§é dµi file (Byte) tÝnh theo Motorola.
=
12h
Record time
6Byte
Ngµy vµ thêi gian cña file
Record time
7Byte
18h
File flag HSG
1Byte
C¸c cê cña file HSG
19h
Reserver
1Byte
File flag ISO
1Byte
1Ah
Il-Size
1Byte
Sè c¸c sector liªn tiÕp trong viÖc ...
1Bh
Il-Skip
1Byte
1Ch
VSSN 1
1Word
Sè Volume theo ®Þnh d¹ng Intel.
1Eh
VSSN M
1Word
Sè Volume theo ®Þnh d¹ng Motorola.
20h
Len-fi
1Byte
§é dµi tªn file.
21h
File-Id
nByte
Tªn file, ®é dµi ®îc x¸c ®Þnh trong len-fi (32byte)
21h+n
Padding
1Byte
Fill Byte, khi trêng kÕ tiÕp kh«ng b¾t ®Çu t¹i ®Þa chØ bé nhí even
Sys-data
nByte
Mäi th«ng tin ghi vµo, tõ chiÒu dµi tªn file (len-fi), chiÒu dµi cña trêng fixed fiedls vµ toµn bé chiÒu dµi cña th môc vµo (len-dr) cã thÓ ®îc tÝnh to¸n.
Kh«ng cã nhiÒu h¬n 40 file trong mét th môc è cho ta t×m kiÕm mét file nhanh chãng.
V× cã nhiÒu phÇn tö Directory n»m trong mét sector logic nªn chØ cÇn ®äc sector ®Çu tiªn cña mét th môc ®Ó t×m file mong muèn.
B¶ng ®êng dÉn:
Cho ta t×m ra vÞ trÝ file mét c¸ch nhanh nhÊt.
B¶ng ®êng dÉn chøa ®ùng tªn cña tÊt c¶ c¸c th môc vµ c¸c th môc con trªn CD, nã còng chøa chØ sè sector ®Çu tiªn cña file th môc.
Cã hai b¶n sao ®êng dÉn cho Intel vµ Motorola.
Extended Attribute Records (XAR):
Cã b¶n ghi XAR cho ngêi t¹o ra file cã kh¶ n¨ng lùa chän c¸c th«ng tin vÒ file mµ ta muèn, h×nh thµnh mét kiÓu hÖ thèng file híng ®èi tîng.
Bªn c¹nh nh÷ng thuéc tÝnh ®îc ®Þnh nghÜa bëi ngêi dïng, HSG cã thÓ cung cÊp mét vµi thuéc tÝnh XAR nh: ThÈm ®Þnh quyÒn.
Volume:
Volume ®îc h×nh thµnh bëi tÊt c¶ c¸c file vµ c¸c Directory lu tr÷ trªn CD.
HSG diÔn t¶ Volume dùa trªn hai thµnh phÇn: vïng hÖ thèng vµ vïng d÷ liÖu.
Vïng hÖ thèng chiÕm gi÷ 16 Sector logic ®Çu tiªn cña CD (LSNO à LSN 15).
Standard Volume Descriptor: lu gi÷ ®Þa chØ file directory víi th môc gèc vµ ®Þa chØ cña Path table. C¸c tªn cña file CopyRight vµ Abstract file còng ®îc liÖt kª ë ®©y, chóng n»m trong th môc gèc. CopyRight cho biÕt th«ng tin vÒ t¸c gi¶, Abstract file cho biÕt th«ng tin vÒ néi dung cña CD.
BootSector: b¹n cã thÓ ®Æt mét boot sector ë ®©y nÕu muèn ®Üa CD trë thµnh mét ®Üa khëi ®éng hÖ thèng.
Volume Sequential Terminal: chØ ra lÖnh kÕt thóc cña CD.
Giíi thiÖu vÒ ng¾t 2Fh truy cËp æ ®Üa CDROM:
B¶ng liÖt kª c¸c chøc n¨ng cña ng¾t 2Fh truy cËp CDROM:
AH
AL
Chøc n¨ng
15h
00h
LÊy sè æ ®Üa CDROM trong hÖ thèng.
15h
01h
LÊy danh s¸ch æ ®Üa CDROM.
15h
02h
LÊy tªn file CopyRight
15h
03h
LÊy tªn file Abstract
15h
04h
LÊy tªn file Biblioghapic
15h
05h
§äc néi dung b¶ng Volume.
15h
06h
§Ó dµnh (cha dïng ®Õn)
15h
07h
§Ó dµnh.
15h
08h
§äc sector
15h
09h
Ghi sector
15h
0Ah
§Ó dµnh
15h
0Bh
KiÓm tra æ ®Üa CDROM
15h
0Ch
LÊy sè hiÖu phiªn b¶n MSCDEX
15h
0Dh
LÊy c¸c ®¬n vÞ cña CD.
15h
0E/00h
LÊy m« t¶ tham chiÕu Volume
15h
0E/01h
ThiÕt lËp m« t¶ tham chiÕu Volume
15h
0Fh
§äc th môc vµo
15h
10h
Göi truy vÊn thiÕt bÞ
ý nghÜa cña c¸c thanh ghi sö dông trong lêi gäi ng¨t 2Fh:
AH: Sè hiÖu chøc n¨ng cña ng¾t.
AL: Sè hiÖu hµm ng¾t.
CX: Dïng cho c¸c hµm chê nh·n æ ®Üa CDROM ®îc truy cËp.
(0= A, 1 = B...).
ES:BX: Hµm chê mét con trá trá tíi vïng ®Öm. ES chøa 8 bit cao, BX chøa 8 bit thÊp.
DX: Víi c¸c hµm yªu cÇu chÝnh x¸c sè lîng sector.
DI:SI: Víi c¸c hµm yªu cÇu sè sector,
CF: chØ ra lçi sau lêi gäi ng¾t (NÕu cã).
AL: M· lçi tr¶ vÒ khi CF kh¸c 0.
Mét sè hµm truy cËp CDROM quan träng:
KiÓm tra æ ®Üa CD-ROM (ng¾t 2fh, hµm 15h, chøc n¨ng 00h):
(Tr¶ vÒ sè lîng æ CD mµ MSCDEX cã thÓ ®Þa chØ ho¸ trong thanh ghi BX).
§Çu vµo:
AH=15H.
AL=00H.
§Çu ra:
BX= Sè lîng æ ®Üa CDROM ®îc qu¶n lý.
CX = Nh·n æ ®Üa CDROM ®Çu tiªn.
LÊy th«ng tin version cña tr×nh ®iÒu khiÓn MSCDEX ®ang sö dông (ng¾t 2fh, hµm 15h, chøc n¨ng 0Ch):
§Çu vµo:
AH=15H.
AL=0CH.
§Çu ra:
BH= Gi¸ trÞ phÇn nguyªn cña sè hiÖu phiªn b¶n (vÝ dô: version = 2.1 th× BH = 2 ).
BL = Gi¸ trÞ phÇn thËp ph©n cña sè hiÖu phiªn b¶n (BL = 1).
X¸c ®Þnh nh·n æ ®Üa CDROM (ng¾t 2fh, hµm 15h, chøc n¨ng 0Dh):
§Çu vµo:
AH=15H.
AL=0DH.
ES:BX = Con trá FAR trá tíi vïng nhí chøa th«ng tin vÒ danh s¸ch nh·n æ CDROM.
§Çu ra:
ES:BX = con trá FAR trá tíi vïng nhí chøa th«ng tin vÒ danh s¸ch nh·n æ CDROM.
Truy vÊn æ CDROM (ng¾t 2fh, hµm 15h, chøc n¨ng 0Bh):
§Çu vµo:
AH=15H.
AL=0BH.
CX=Nh·n æ CDROM ®îc truy cËp (vÝ dô: 0 = A; 1 = B...etc.)
§Çu ra:
AX = 0: Lçi, ®Êy kh«ng ph¶i lµ mét æ ®Üa CDROM.
AX 0: Lçi, ®Êy kh«ng ph¶i lµ mét æ ®Üa CDROM.
§äc néi dung mét Sector (ng¾t 2fh, hµm 15h, chøc n¨ng 08h):
§Çu vµo:
AH=15H.
AL=08H.
CX=Nh·n æ CDROM ®îc truy cËp (vÝ dô: 0 = A; 1 = B...etc.)
DX: Sè sector cÇn ®äc.
ES:BX= Con trá FAR trá tíi vïng sector cÇn ®äc
§Çu ra:
CF = 0: §äc thµnh c«ng.
CF = 1: Cã lçi.(nÕu AL=15:Nh·n æ CD kh«ng hîp lÖ, AL=21: æ cha s½n sµng)
Ghi Sector (ng¾t 2fh, hµm 15h, chøc n¨ng 09h):
§Çu vµo:
AH=15H.
AL=09H.
CX=Nh·n æ CDROM ®îc truy cËp (vÝ dô: 0 = A; 1 = B...etc.)
DX= Sè sector cÇn ghi.
ES:BX= FAR trá tíi vïng ®Öm chøa c¸c sector cÇn ghi.
§Çu ra:
CF = 0: §äc thµnh c«ng.
CF = 1: Cã lçi.(nÕu AL=15:Nh·n æ CD kh«ng hîp lÖ, AL=21: æ cha s½n sµng)
Lu ý: Mçi Sector cã 2048 byte nªn vïng nhí (buffer) ph¶i ®¸p øng ®ñ sè bé nhí cho viÖc ®äc Ýt nhÊt lµ 2048 byte ®Ó thùc hiÖn thao t¸c ®äc hoÆc ghi sector.
LÊy th«ng tin vÒ tªn file CopyRight, Abstract, Bibliogragh :
LÊy tªn file CopyRight (ng¾t 2fh, hµm 15h, chøc n¨ng 02h):
CopyRight cho biÕt th«ng tin vÒ t¸c gi¶ cña ®Üa ®ang ®îc qu¶n lý.
§Çu vµo:
AH=15H.
AL=02H.
CX=Nh·n æ CDROM ®îc truy cËp (vÝ dô: 0 = A; 1 = B...etc.)
ES:BX= FAR trá tíi vïng ®Öm chøa tªn file ®äc ®îc.
§Çu ra:
CF = 0: §äc thµnh c«ng.
CF = 1: Cã lçi.(nÕu AL=15:Nh·n æ CD kh«ng hîp lÖ).
LÊy tªn file Abstract (ng¾t 2fh, hµm 15h, chøc n¨ng 03h):
Abstract file cho biÕt tæng quan vÒ néi dung d÷ liÖu ghi trªn ®Üa.
§Çu vµo:
AH=15H.
AL=03H.
CX=Nh·n æ CDROM ®îc truy cËp (vÝ dô: 0 = A; 1 = B...etc.)
ES:BX= FAR trá tíi vïng ®Öm chøa tªn file ®äc ®îc.
§Çu ra:
CF = 0: §äc thµnh c«ng.
CF = 1: Cã lçi.(nÕu AL=15:Nh·n æ CD kh«ng hîp lÖ).
LÊy tªn file tµi liÖu Biblioghraphic (ng¾t 2fh, hµm 15h, chøc n¨ng 04h):
File Biblioghraphic cho ta biÕt th«ng tin vÒ nguån th«ng tin ghi trªn ®Üa.
§Çu vµo:
AH=15H.
AL=04H.
CX=Nh·n æ CDROM ®îc truy cËp (vÝ dô: 0 = A; 1 = B...etc.)
ES:BX= FAR trá tíi vïng ®Öm chøa tªn file ®äc ®îc.
§Çu ra:
CF = 0: §äc thµnh c«ng.
CF = 1: Cã lçi.(nÕu AL=15:Nh·n æ CD kh«ng hîp lÖ).
§äc VTOC (ng¾t 2fh, hµm 15h, chøc n¨ng 05h):
§Çu vµo:
AH=15H.
AL=05H.
CX=Nh·n æ CDROM ®îc truy cËp (vÝ dô: 0 = A; 1 = B...etc.)
ES:BX= FAR trá tíi vïng ®Öm chøa tªn file ®äc ®îc.
§Çu ra:
CF = 0: §äc thµnh c«ng.
CF = 1: Cã lçi.(nÕu AL=15:Nh·n æ CD kh«ng hîp lÖ).
Göu yªu cÇu ®Õn tr×nh ®iÒu khiÓn thiÕt bÞ (ng¾t 2fh, hµm 15h, chøc n¨ng 10h):
§Çu vµo:
AH=15H.
AL=10H.
CX=Nh·n æ CDROM ®îc truy cËp (vÝ dô: 0 = A; 1 = B...etc.)
ES:BX= FAR trá tíi vïng ®Öm chøa yªu cÇu cho thiÕt bÞ.
§Çu ra: (Kh«ng cã)
LÊy th«ng tin cña tr×nh ®iÒu khiÓn æ ®Üa CDROM (ng¾t 2fh, hµm 15h, chøc n¨ng 01h):
§Çu vµo:
AH=15H.
AL=01H.
ES:BX= FAR trá tíi vïng ®Öm chøa th«ng tin tr¶ vÒ.
§Çu ra: (Kh«ng cã)
Trªn ®©y lµ mét sè th«ng tin vÒ c¸c ng¾t 2fh truy cËp æ ®Üa CDROM.
Giíi thiÖu vÒ ch¬ng tr×nh:
Ch¬ng tr×nh thùc hiÖn mét sè chøc n¨ng truy cËp CDROM sau:
LÊy sè lîng æ ®Üa CDROM trªn m¸y:
LÊy tªn file CopyRight:
LÊy tªn file Abstract:
LÊy tªn file Bibliographic:
§Èy æ ®Üa CD (Eject CDROM):
§äc néi dung b¶ng Volume:
§äc néi dung sector:
HiÓn thÞ Directory:
HiÓn thÞ Directory Entry:
Ch¹y Audio track:
Cµi ®Æt ch¬ng tr×nh
C¬ së d÷ liÖu
const DevError=(1 shr 15);
Dev_readlong=128;
Devcmd_Seek=131;
Type
Requestheader = record
blength,bsubunit,bcommand:Byte;
Wstatus:Word;
bReserved:array[0..7] of Byte;
end;
ReadWriteL = record
reqhdr: requestHeader;
bAdressingMode:Byte;
lpTransferAdress:pointer;
wNumsec:word;
lStartingSector:longint;
bdataReadWritemode,binterleaveSize,
binterleaveskipfactor:Byte;
end;
SeekReq=record
Reqhdr:requestheader;
bAdressingMode:byte;
lpTranferAdress:Pointer;
WNumSec:Word;
LstartingSector:longint;
end;
IOCTLIO =record
reqhdr :requestheader;
bmediadescriptor:Byte;
lptranferAdress:Pointer;
wtransferCount,wstartingsectorno:word;
lpvolumeID:Pointer;
end;
cd_Eject=record
bcontrolBlockCode:Byte;
end;
reset=record
bcontrolBlockCode:byte;
end;
LockDoor=record
bcontrolBlockCode,block:byte;
end;
VolSize=record
bcontrolBlockCode:Byte;
lVolumeSize:Longint;
end;
Diskinfo=record
bcontrolblockCode,blowestTrack,
bHighestTrack:Byte;
bLeadOutTrack:longint;
end;
Tnoinfo=record
bcontrolBlockCode,bTrackNo:Byte;
lstartingPoint:longint;
bTrackControlInfo:Byte;
end;
dir_entry=record
loc_extent:longint;
lb_size:word;
data_len:word;
record_time : Array[0..6] of Byte;
file_flags,il_size,il_skip,len_fi,len_su,xar_len : Byte;
VSSN : Word;
file_id : Array[0..37] of Byte;
file_version : Word;
su_data : Array[0..219] of byte;
End;
Requestheader = record
blength,bsubunit,bcommand:Byte;
Wstatus:Word;
bReserved:array[0..7] of Byte;
end;
MSCDEX_DevStat = Record
bControlBlockCode : Byte; { = 6 }
lDeviceStatus : Longint; { after call contains the }
End;
IOCTLIO =record
reqhdr :requestheader;
bmediadescriptor:Byte;
lptranferAdress:Pointer;
wtransferCount,wstartingsectorno:word;
lpvolumeID:Pointer;
end;
const
struct_copy=true;
c¸c hµm trong ch¬ng tr×nh
Function Time2Frame( iMin,iSec,iFrame : Integer ):Longint;
Procedure Frame2Time( lFrame : Longint;
var Min, Sec, Frame : Integer );
Function Time2HSG( iMin, iSec, iFrame : Integer) : Longint;
Procedure REDBOOK2Time( lREDBOOK : Longint;
var Min, Sec, Frame : Integer );
Function REDBOOK2HSG( lREDBOOK : Longint ) : Longint;
var iMin, iSec, iFrame : Integer;
Function GetNumberOfDriveLetters( var Number,StartLetter :
Integer ) : Boolean
Function ReadVtoc(DrvLetter:integer;lpSector:Pointer;
LNumsec:integer):integer;
function Hex(hz:word):string;
procedure PrintSector(lpsector:pointer ;
iSize:Integer;
icols:integer;
iRows:integer);
function GetVersion:integer;
Function SendDeviceRequest(iDriver:integer;var
reqhdr:requestheader):integer;
function Readlong(iDriver:integer;iadressmode:integer;
istart:longint;inumsec:integer;
lpreadData:Pointer;iDataMode:integer):integer;
function Error(wstatus:word):boolean;
function ReadWritereq(iDrive,icommand:integer;
lpcontrolblock:Pointer;
iControlBlockSize:integer):integer;
Function Eject(iDrive:integer):integer;
function getVolumeSize(iDrive:integer;var
VS:VolSize):integer;
function GetaudioDiskInfo(iDrive:integer;var
DI:DiskInfo):integer;
function getAudiotrackInfo(iDrive:integer;itrackNo:integer;
var TI :TnoInfo ):integer;
function IntOut(z:integer;l:integer):string;
procedure PrintDiskTracks(idrive:integer);
function GetDirEntry(iDrive:Integer;iCopyFlag:
Boolean;PathName : String;
lpData : Pointer;var HSG : Integer ) : Boolean;
Procedure cd_PrintDirEntry( var DirEntry : DIR_ENTRY );
function cd_GetAudioDiskInfo( iCD_Drive_Letter : Integer;
var DI : MSCDEX_DiskInfo ) : Integer;
function cd_GetAudioTrackInfo( iCD_Drive_Letter : integer;
iTrackNo : Integer; var TI : MSCDEX_TnoInfo ) : Integer;
function cd_IsDataTrack( var TI : MSCDEX_TnoInfo ) : Boolean
Function cd_PlayAudio( iCD_Drive_Letter :Integer;iAdressMode
: Integer;
lStart : longint;lLen : Longint ) : Integer;
Function cd_StopAudio( iCD_Drive_Letter : Integer): Integer;
Các file đính kèm theo tài liệu này:
- Tìm hiểu truy cập CDROM.DOC