Attribute VB_Name = "Module1"
Option Explicit

Type FS_Drive
     VolumeName As String * 64
     VolumeSize As Double
     VolSerialNo As Double
     BeginningSector As Double
     MAT_Location As Double
     DAT_Location As Double
     DAT_SectorCount As Double
     RDT As Double
     StartupFDT As Double
     FreeSectors As Double
     CDirNum As Double
     CDir As String * 512
     FileName As String * 64
     FileNumber As Integer
     FileSize As Double
     FilePointer As Double
     FileStatus As Long
End Type

Type FDT_Structure
     FDTSign As String * 3
     FDTVersion As Byte
     SectorSize As Integer
     FDTNumber As Integer
     FileNumber As Double
     NextFDTNumber As Double
     SectorCount As Double
     ParentDirNumber As Double
     ParentDirSerial As Double
     FileSize As Double
     FileSizeHigh As Integer
     FileType As Integer
     CheckSum As Byte
     Attributes As Byte
     OwnerCode As Double
     GroupCode As Double
     Country As Byte
     TimeZone As Byte
     CreatingCentury As Byte
     CreatingYear As Byte
     CreatingMonth As Byte
     CreatingDay As Byte
     CreatingHour As Byte
     CreatingMinute As Byte
     CreatingSecond As Byte
     CTimeMode As Byte
     LastModifCentury As Byte
     LastModifYear As Byte
     LastModifMonth As Byte
     LastModifDay As Byte
     LastModifHour As Byte
     LastModifMinute As Byte
     LastModifSecond As Byte
     LMTimeMode As Byte
     FileName As String * 64
     FileDescription As String * 128
End Type
     
Type DDT_Structure
     DDTSign As String * 3
     DDTVersion As Byte
     SectorSize As Integer
     DDTNumber As Integer
     DirectoryNumber As Double
     NextDDTNumber As Double
     SectorCount As Double
     ParentDirNumber As Double
     ParentDirSerial As Double
     DirectorySerial As Double
     EntrySize As Byte
     Reserved As Byte
     DirectoryType As Integer
     CheckSum As Byte
     Attributes As Byte
     OwnerCode As Double
     GroupCode As Double
     Country As Byte
     TimeZone As Byte
     CreatingCentury As Byte
     CreatingYear As Byte
     CreatingMonth As Byte
     CreatingDay As Byte
     CreatingHour As Byte
     CreatingMinute As Byte
     CreatingSecond As Byte
     CTimeMode As Byte
     LastModifCentury As Byte
     LastModifYear As Byte
     LastModifMonth As Byte
     LastModifDay As Byte
     LastModifHour As Byte
     LastModifMinute As Byte
     LastModifSecond As Byte
     LMTimeMode As Byte
     DirectoryName As String * 64
     DirectoryDescription As String * 128
End Type
     
Public DRV As FS_Drive
Public FD As FDT_Structure
Public DD As DDT_Structure

Public Counter As Integer
Public RD_Ccentury As Integer
Public RD_Cyear As Integer
Public RD_Cmonth As Integer
Public RD_Cday As Integer
Public RD_Chour As Integer
Public RD_Cminute As Integer
Public RD_Csecond As Integer
Public BS(511) As Byte
Public MAT(511) As Byte
Public DAT(3071) As Byte
Public RDT(511) As Byte
Public RD_Data(511) As Byte
Public DDT(511) As Byte
Public SD_Data(511) As Byte
Public FDT(511) As Byte
Public File_Data(511) As Byte
Public DirNameBuffer(511) As Byte
Public FS_StartupFileNumber As Double
Public OpenFileNumber As Double
Public FS_DirNumber As Double
Public FS_CDIR As String
Public FName As String
Public PName As String

Public FFF_DRV As Integer
Public FFF_FNAME As String
Public FFF_DDT As Double
Public FFF_DSEC As Long
Public FFF_DENUM As Integer

Global Const OFN_EXPLORER = &H80000
Global Const OFN_FILEMUSTEXIST = &H1000
Global Const OFN_HIDEREADONLY = &H4

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Public Const BytesPerSector = 512

Public Sub BS_reset()
BS(0) = &HEB
BS(1) = &H3F
BS(2) = &H90
BS(3) = &H46
BS(4) = &H53
BS(5) = &H0
BS(6) = &H0
BS(7) = &H2
BS(8) = &H3
BS(9) = &HA1
BS(10) = &H1
BS(11) = &H0
BS(12) = &H0
BS(13) = &H0
BS(14) = &H0
BS(15) = &H0
BS(16) = &H40
BS(17) = &HB
BS(18) = &H0
BS(19) = &H0
BS(20) = &H0
BS(21) = &H0
BS(22) = &H0
BS(23) = &H0
BS(24) = &H1
BS(25) = &H0
BS(26) = &H0
BS(27) = &H0
BS(28) = &H8
BS(29) = &H0
BS(30) = &H0
BS(31) = &H0
BS(32) = &H0
BS(33) = &H0
BS(34) = &H0
BS(35) = &H0
BS(36) = &H0
BS(37) = &H0
BS(38) = &H0
BS(39) = &H0
BS(40) = &H0
BS(41) = &H0
BS(42) = &H0
BS(43) = &H0
BS(44) = &H0
BS(45) = &H0
BS(46) = &HA1
BS(47) = &H1
BS(48) = &H54
BS(49) = &H52
BS(50) = &H2D
BS(51) = &H53
BS(52) = &H49
BS(53) = &H4E
BS(54) = &H47
BS(55) = &H4C
BS(56) = &H49
BS(57) = &H58
BS(58) = &H20
BS(59) = &H76
BS(60) = &H31
BS(61) = &H2E
BS(62) = &H30
BS(63) = &H62
BS(64) = &H0
BS(65) = &HE
BS(66) = &H1F
BS(67) = &HFA
BS(68) = &H1E
BS(69) = &H17
BS(70) = &HBC
BS(71) = &HFE
BS(72) = &HFF
BS(73) = &HFB
BS(74) = &H88
BS(75) = &H16
BS(76) = &H2C
BS(77) = &H7C
BS(78) = &HC6
BS(79) = &H6
BS(80) = &H2E
BS(81) = &H7C
BS(82) = &H12
BS(83) = &HC6
BS(84) = &H6
BS(85) = &H2F
BS(86) = &H7C
BS(87) = &HC
BS(88) = &HA1
BS(89) = &H14
BS(90) = &H7C
BS(91) = &H8B
BS(92) = &H16
BS(93) = &H16
BS(94) = &H7C
BS(95) = &H83
BS(96) = &HFA
BS(97) = &H0
BS(98) = &H77
BS(99) = &H5
BS(100) = &H83
BS(101) = &HF8
BS(102) = &H0
BS(103) = &H77
BS(104) = &H11
BS(105) = &HBE
BS(106) = &H90
BS(107) = &H7D
BS(108) = &HE8
BS(109) = &HA5
BS(110) = &H0
BS(111) = &H32
BS(112) = &HE4
BS(113) = &HCD
BS(114) = &H16
BS(115) = &HCD
BS(116) = &H19
BS(117) = &HBE
BS(118) = &H6C
BS(119) = &H7D
BS(120) = &HEB
BS(121) = &HF2
BS(122) = &HBD
BS(123) = &H0
BS(124) = &H7E
BS(125) = &HA3
BS(126) = &H62
BS(127) = &H7D
BS(128) = &H1E
BS(129) = &H7
BS(130) = &H8B
BS(131) = &HDD
BS(132) = &HB9
BS(133) = &H1
BS(134) = &H0
BS(135) = &HE8
BS(136) = &H99
BS(137) = &H0
BS(138) = &H72
BS(139) = &HE9
BS(140) = &H81
BS(141) = &H7E
BS(142) = &H0
BS(143) = &H46
BS(144) = &H44
BS(145) = &H75
BS(146) = &HE2
BS(147) = &H80
BS(148) = &H7E
BS(149) = &H2
BS(150) = &H54
BS(151) = &H75
BS(152) = &HDC
BS(153) = &H81
BS(154) = &H7E
BS(155) = &H4
BS(156) = &H0
BS(157) = &H2
BS(158) = &H75
BS(159) = &HD5
BS(160) = &HA1
BS(161) = &H64
BS(162) = &H7D
BS(163) = &H8B
BS(164) = &H4E
BS(165) = &H10
BS(166) = &H8B
BS(167) = &H56
BS(168) = &H12
BS(169) = &H8B
BS(170) = &HD8
BS(171) = &H83
BS(172) = &HFA
BS(173) = &H0
BS(174) = &H77
BS(175) = &HB9
BS(176) = &H83
BS(177) = &HF9
BS(178) = &H1
BS(179) = &H72
BS(180) = &HB4
BS(181) = &H3
BS(182) = &HD9
BS(183) = &H72
BS(184) = &HB0
BS(185) = &H81
BS(186) = &HFB
BS(187) = &H7F
BS(188) = &H4
BS(189) = &H77
BS(190) = &HAA
BS(191) = &HBB
BS(192) = &H20
BS(193) = &H0
BS(194) = &HF7
BS(195) = &HE3
BS(196) = &H83
BS(197) = &HFA
BS(198) = &H0
BS(199) = &H77
BS(200) = &HAC
BS(201) = &H5
BS(202) = &H10
BS(203) = &H10
BS(204) = &H72
BS(205) = &HA7
BS(206) = &H3D
BS(207) = &H0
BS(208) = &HA0
BS(209) = &H73
BS(210) = &HA2
BS(211) = &H8E
BS(212) = &HC0
BS(213) = &H33
BS(214) = &HDB
BS(215) = &HA1
BS(216) = &H62
BS(217) = &H7D
BS(218) = &H83
BS(219) = &HC0
BS(220) = &H1
BS(221) = &HE8
BS(222) = &H43
BS(223) = &H0
BS(224) = &H72
BS(225) = &H93
BS(226) = &H1
BS(227) = &HE
BS(228) = &H64
BS(229) = &H7D
BS(230) = &H8B
BS(231) = &H46
BS(232) = &HC
BS(233) = &H8B
BS(234) = &H56
BS(235) = &HE
BS(236) = &H83
BS(237) = &HFA
BS(238) = &H0
BS(239) = &H77
BS(240) = &H84
BS(241) = &H83
BS(242) = &HF8
BS(243) = &H0
BS(244) = &H77
BS(245) = &H87
BS(246) = &HBE
BS(247) = &H69
BS(248) = &H7D
BS(249) = &HE8
BS(250) = &H18
BS(251) = &H0
BS(252) = &HB8
BS(253) = &H0
BS(254) = &H10
BS(255) = &H50
BS(256) = &H1F
BS(257) = &H50
BS(258) = &H7
BS(259) = &HFA
BS(260) = &H50
BS(261) = &H17
BS(262) = &HBC
BS(263) = &HFE
BS(264) = &HFF
BS(265) = &HFB
BS(266) = &HB8
BS(267) = &HA1
BS(268) = &H1
BS(269) = &HEA
BS(270) = &H0
BS(271) = &H1
BS(272) = &H0
BS(273) = &H10
BS(274) = &HEB
BS(275) = &HFE
BS(276) = &HBB
BS(277) = &H7
BS(278) = &H0
BS(279) = &HAC
BS(280) = &H22
BS(281) = &HC0
BS(282) = &H74
BS(283) = &H6
BS(284) = &HB4
BS(285) = &HE
BS(286) = &HCD
BS(287) = &H10
BS(288) = &HEB
BS(289) = &HF5
BS(290) = &HC3
BS(291) = &HC6
BS(292) = &H6
BS(293) = &H66
BS(294) = &H7D
BS(295) = &H4
BS(296) = &H51
BS(297) = &H50
BS(298) = &HB1
BS(299) = &H12
BS(300) = &HF6
BS(301) = &HF1
BS(302) = &H8A
BS(303) = &HCC
BS(304) = &HFE
BS(305) = &HC1
BS(306) = &H32
BS(307) = &HE4
BS(308) = &HB2
BS(309) = &H2
BS(310) = &HF6
BS(311) = &HF2
BS(312) = &H8A
BS(313) = &HF4
BS(314) = &H8A
BS(315) = &H16
BS(316) = &H2C
BS(317) = &H7C
BS(318) = &HB2
BS(319) = &H0
BS(320) = &H8A
BS(321) = &HE8
BS(322) = &HB8
BS(323) = &H1
BS(324) = &H2
BS(325) = &HCD
BS(326) = &H13
BS(327) = &H58
BS(328) = &H59
BS(329) = &H72
BS(330) = &HF
BS(331) = &H40
BS(332) = &H49
BS(333) = &H74
BS(334) = &H12
BS(335) = &H81
BS(336) = &HC3
BS(337) = &H0
BS(338) = &H2
BS(339) = &HC6
BS(340) = &H6
BS(341) = &H66
BS(342) = &H7D
BS(343) = &H4
BS(344) = &HEB
BS(345) = &HCE
BS(346) = &HFE
BS(347) = &HE
BS(348) = &H66
BS(349) = &H7D
BS(350) = &H75
BS(351) = &HC8
BS(352) = &HF9
BS(353) = &HC3
BS(354) = &H0
BS(355) = &H0
BS(356) = &H0
BS(357) = &H0
BS(358) = &H4
BS(359) = &H1
BS(360) = &H7
BS(361) = &HD
BS(362) = &HA
BS(363) = &H0
BS(364) = &HD
BS(365) = &HA
BS(366) = &H44
BS(367) = &H72
BS(368) = &H69
BS(369) = &H76
BS(370) = &H65
BS(371) = &H20
BS(372) = &H6E
BS(373) = &H6F
BS(374) = &H74
BS(375) = &H20
BS(376) = &H72
BS(377) = &H65
BS(378) = &H61
BS(379) = &H64
BS(380) = &H79
BS(381) = &H20
BS(382) = &H6F
BS(383) = &H72
BS(384) = &H20
BS(385) = &H72
BS(386) = &H65
BS(387) = &H61
BS(388) = &H64
BS(389) = &H20
BS(390) = &H65
BS(391) = &H72
BS(392) = &H72
BS(393) = &H6F
BS(394) = &H72
BS(395) = &H20
BS(396) = &H21
BS(397) = &HD
BS(398) = &HA
BS(399) = &H0
BS(400) = &HD
BS(401) = &HA
BS(402) = &H52
BS(403) = &H65
BS(404) = &H6D
BS(405) = &H6F
BS(406) = &H76
BS(407) = &H65
BS(408) = &H20
BS(409) = &H74
BS(410) = &H68
BS(411) = &H65
BS(412) = &H20
BS(413) = &H64
BS(414) = &H69
BS(415) = &H73
BS(416) = &H6B
BS(417) = &H20
BS(418) = &H61
BS(419) = &H6E
BS(420) = &H64
BS(421) = &H20
BS(422) = &H70
BS(423) = &H72
BS(424) = &H65
BS(425) = &H73
BS(426) = &H73
BS(427) = &H20
BS(428) = &H61
BS(429) = &H6E
BS(430) = &H79
BS(431) = &H20
BS(432) = &H6B
BS(433) = &H65
BS(434) = &H79
BS(435) = &H20
BS(436) = &H74
BS(437) = &H6F
BS(438) = &H20
BS(439) = &H72
BS(440) = &H65
BS(441) = &H62
BS(442) = &H6F
BS(443) = &H6F
BS(444) = &H74
BS(445) = &H2E
BS(446) = &H2E
BS(447) = &H2E
BS(448) = &HD
BS(449) = &HA
BS(450) = &HD
BS(451) = &HA
BS(452) = &H0
BS(453) = &H0
BS(454) = &H0
BS(455) = &H0
BS(456) = &H0
BS(457) = &H0
BS(458) = &H0
BS(459) = &H0
BS(460) = &H0
BS(461) = &H0
BS(462) = &H0
BS(463) = &H0
BS(464) = &H0
BS(465) = &H0
BS(466) = &H0
BS(467) = &H0
BS(468) = &H0
BS(469) = &H0
BS(470) = &H0
BS(471) = &H0
BS(472) = &H0
BS(473) = &H0
BS(474) = &H0
BS(475) = &H0
BS(476) = &H0
BS(477) = &H0
BS(478) = &H0
BS(479) = &H0
BS(480) = &H0
BS(481) = &H0
BS(482) = &H0
BS(483) = &H0
BS(484) = &H0
BS(485) = &H0
BS(486) = &H0
BS(487) = &H0
BS(488) = &H0
BS(489) = &H0
BS(490) = &H0
BS(491) = &H0
BS(492) = &H0
BS(493) = &H0
BS(494) = &H0
BS(495) = &H0
BS(496) = &H0
BS(497) = &H0
BS(498) = &H0
BS(499) = &H0
BS(500) = &H0
BS(501) = &H0
BS(502) = &H0
BS(503) = &H0
BS(504) = &H0
BS(505) = &H0
BS(506) = &H0
BS(507) = &H0
BS(508) = &H0
BS(509) = &H0
BS(510) = &H55
BS(511) = &HAA
End Sub

Public Sub MAT_Reset()
MAT(0) = AscB("M")
MAT(1) = AscB("A")
MAT(2) = AscB("T")
MAT(3) = 0
MAT(4) = &H40
MAT(5) = &HB
MAT(6) = 0
MAT(7) = 0
MAT(8) = 0
MAT(9) = 0
MAT(10) = 0
MAT(11) = 0
MAT(12) = &H2
MAT(13) = 0
MAT(14) = 0
MAT(15) = 0
MAT(16) = &H6
MAT(17) = 0
MAT(18) = 0
MAT(19) = 0
MAT(20) = &H36
MAT(21) = &HB
MAT(22) = 0
MAT(23) = 0
MAT(24) = &HA
MAT(25) = 0
MAT(26) = 0
MAT(27) = 0
For Counter = 28 To 511
    MAT(Counter) = 0
Next Counter
End Sub

Public Sub DAT_Reset()
DAT(0) = &H1
DAT(1) = &H2
DAT(2) = &H3
DAT(3) = &H3
DAT(4) = &H3
DAT(5) = &H3
DAT(6) = &H3
DAT(7) = &H3
DAT(8) = &H4
DAT(9) = &H5
For Counter = 10 To 2879
    DAT(Counter) = &H90
Next Counter
For Counter = 2880 To 3071
    DAT(Counter) = 0
Next Counter
End Sub

Public Sub RDT_Reset()
Randomize Timer
RDT(0) = AscB("R")
RDT(1) = AscB("D")
RDT(2) = AscB("T")
RDT(3) = 0
RDT(4) = 0
RDT(5) = &H2
RDT(6) = 0
RDT(7) = 0
RDT(8) = &H8
RDT(9) = 0
RDT(10) = 0
RDT(11) = 0
RDT(12) = 0
RDT(13) = 0
RDT(14) = 0
RDT(15) = 0
RDT(16) = &H1
RDT(17) = 0
RDT(18) = 0
RDT(19) = 0
RDT(20) = 0
RDT(21) = 0
RDT(22) = 0
RDT(23) = 0
RDT(24) = 0
RDT(25) = 0
RDT(26) = 0
RDT(27) = 0
RD_Csecond = Second(Now)
RD_Cminute = Minute(Now)
RD_Chour = Hour(Now)
RD_Cday = Day(Now)
RD_Cmonth = Month(Now)
RD_Cyear = Year(Now) - 2000
RD_Ccentury = 20
RDT(28) = CByte(Rnd * 256)
RDT(29) = CByte(Rnd * 256)
RDT(30) = CByte(Rnd * 256)
RDT(31) = CByte(Rnd * 256)
RDT(32) = &H4
RDT(33) = 0
For Counter = 34 To 45
RDT(Counter) = 0
Next Counter
RDT(46) = 0
RDT(47) = 0
RDT(48) = SetBCD(RD_Ccentury)
RDT(49) = SetBCD(RD_Cyear)
RDT(50) = SetBCD(RD_Cmonth)
RDT(51) = SetBCD(RD_Cday)
RDT(52) = SetBCD(RD_Chour)
RDT(53) = SetBCD(RD_Cminute)
RDT(54) = SetBCD(RD_Csecond)
RDT(55) = 0
RDT(56) = RDT(48)
RDT(57) = RDT(49)
RDT(58) = RDT(50)
RDT(59) = RDT(51)
RDT(60) = RDT(52)
RDT(61) = RDT(53)
RDT(62) = RDT(54)
RDT(63) = 0
RDT(64) = AscB("N")
RDT(65) = AscB("O")
RDT(66) = AscB(" ")
RDT(67) = AscB("N")
RDT(68) = AscB("A")
RDT(69) = AscB("M")
RDT(70) = AscB("E")
For Counter = 71 To 511
RDT(Counter) = 0
Next Counter
End Sub

Public Sub RD_Data_Reset()
For Counter = 0 To 511
RD_Data(Counter) = 0
Next Counter
End Sub

Public Sub SD_Data_Reset()
For Counter = 0 To 511
SD_Data(Counter) = 0
Next Counter
End Sub

Public Function SetBCD(Sayi As Integer) As Byte
Dim Rakam1 As Integer
Dim Rakam2 As Integer
Rakam1 = Sayi \ 10
Rakam2 = Sayi - (Rakam1 * 10)
SetBCD = CByte((Rakam1 * 16) + Rakam2)
End Function


