Tìm hiểu truy cập cdrom

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.

doc19 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2581 | Lượt tải: 0download
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 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. C¸c ph­¬ng ph¸p l­u tr÷ th«ng tin trªn ®Üa tõ L­u 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. Nh­ng 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 ®Ó l­u 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 l­u 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 tr­ng 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 l­u 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 l­u 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 l­u 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 l­u 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: l­u 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 (ch­a 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: æ ch­a 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: æ ch­a s½n sµng) L­u ý: 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:

  • docTìm hiểu truy cập CDROM.DOC
Luận văn liên quan