You are on page 1of 4

Disco de 3.5" sin sistema, contiene dos files, README.

HTM de 602 bytes y


HPLGLOVE.GIF de 1603 bytes. Uso el debug del DOS y cargo en el offset 100 del
debug los 48 (30H) sectores del disco usando L 100 0 0 30. Luego leo en memoria
los datos:
A offset 100H esta el boot record.
La fat esta detras del boot sector (1 sector, 512 bytes(200H)). 100H+200H=300H
El directorio esta detras de la FAT empezando en el offset
300H+(12H*200H)=2700H. 12H=18 son los sectores por pista y 200H=512 los bytes
del sector (en los discos de 1,44 el directorio comienza en el sector relativo
nmero 19).
BOOT RECORD
En orden por offset address
00H Salta a la rutina de bootstrap en el offset 3EH del boot record.
03H Nombre o version del DOS cuando el boot fue creado.
0BH Bytes por sector, usualmente 200H (512)
0DH Sectores por cluster (1, 2, 4 u 8)
0EH Numero de sectores reservados.
10H Numero de copias de la FAT (1 o 2).
11H Numero de bits del boot (200H).
13H Numero de sectores del disco si es menor de 32 MB (101H=160).
15H Media descriptor byte (equivalente al primer byte de la FAT).
16H Numero de sectores para la FAT (200H=512).
18H Numero de sectores por track.
1AH Numero de cabezas lectoras-escritoras (lados).
1CH Numero de sectores ocultos.
1EH Reservado para el sistema.
20H Numero total de sectores si el disco es mayor de 32 MB.
24H Numero de drive fisico. (A=0, B=1, C=2, etc).
25H Reservado para el sistema.
26H Extension de la firma del boot sector.
27H Identificacion del Volumen.
2BH Nombre del volumen.
36H Reservado para el sistema.
3EH-1FFH Boostrap comienza en esta zona.
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
-----------------------------------------------------------------------------d100
0F71:0100
0F71:0110
0F71:0120
0F71:0130
0F71:0140
0F71:0150
0F71:0160
0F71:0170
-d180
0F71:0180
0F71:0190
0F71:01A0
0F71:01B0
0F71:01C0
0F71:01D0
0F71:01E0

EB
02
00
4D
FA
1E
F3
F9

3E
E0
00
45
33
56
A4
FB

90
00
00
20
C9
16
06
38

2A
40
00
20
8E
55
1F
66

69
0B
00
20
D1
BF
BD
24

4B
F0
00
20
BC
22
00
7C

68
09
29
46
FC
05
7C
04

26-49
00-12
68-15
41-54
7B-16
89-7E
C6-45
CD-13

48
00
05
31
07
00
FE
72

43
02
17
32
BD
89
0F
3C

00
00
4E
20
78
4E
8B
8A

02
34
4F
20
00
02
46
46

01
00
20
20
C5
B1
18
10

01
60
4E
F1
76
0B
88
98

00
0F
41
7D
00
FC
45
F7

.>.*iKh&IHC.....
...@........4.`.
......)h...NO NA
ME
FAT12
.}
.3.....{...x..v.
.V.U."..~..N....
......|.E...F..E
..8f$|...r<.F...

66
46
03
8B
8B
3B
75

16
FC
C3
FB
76
FB
99

03
89
48
B1
3E
72
BE

46
56
F7
01
F3
E5
80

1C
FE
F3
E8
A6
EB
7D

13
B8
01
94
5E
D7
AC

56
20
46
00
74
2B
98

1E-03
00-8B
FC-11
72-47
4A-4E
C9-B8
03-F0

46
76
4E
38
74
D8
AC

0E
11
FE
2D
0B
7D
84

13
F7
5A
74
03
87
C0

D1
E6
58
19
F9
46
74

50
8B
BB
B1
83
3E
17

52
5E
00
0B
C7
3C
3C

89
0B
07
56
15
D8
FF

f..F..V..F...PR.
F..V.. ..v....^.
..H...F..N.ZX...
.......rG8-t...V
.v>..^tJNt......
;.r...+...}.F><.
u...}.......t.<.

0F71:01F0
-d200
0F71:0200
0F71:0210
0F71:0220
0F71:0230
0F71:0240
0F71:0250
0F71:0260
0F71:0270
-d280
0F71:0280
0F71:0290
0F71:02A0
0F71:02B0
0F71:02C0
0F71:02D0
0F71:02E0
0F71:02F0

74 09 B4 0E BB 07 00 CD-10 EB EE BE 83 7D EB E5

t............}..

BE
CD
48
B1
00
33
F2
13

81
19
8A
04
02
D2
8A
59

7D
BE
4E
E8
42
F7
56
5A

EB
82
0D
16
4A
76
24
58

E0
7D
F7
00
75
18
8A
72

33
8B
E1
5B
9F
91
E8
09

C0
7D
03
72
EA
F7
D0
40

CD-16
0F-83
46-FC
C8-81
00-02
76-18
CC-D0
75-01

5E
FF
13
3F
70
42
CC
42

1F
02
56
4D
00
87
0A
03

8F
72
FE
5A
50
CA
CC
5E

04
C8
BB
75
52
F7
B8
0B

8F
8B
00
A7
51
76
01
E2

44
C7
07
81
91
1A
02
CC

02
48
53
BF
92
8A
CD
C3

..}..3...^....D.
....}.}....r...H
H.N....F..V....S
.....[r..?MZu...
..BJu....p.PRQ..
3..v...v.B...v..
..V$............
.YZXr.@u.B.^....

03
73
20
6C
6E
79
53
00

18
74
49
61
64
20
59
57

01
65
2F
63
20
6B
53
49

27
6D
4F
65
74
65
4D
4E

0D
20
20
20
68
79
53
42

0A
64
65
74
65
0D
44
4F

49
69
72
68
6E
0A
4F
4F

6E-76
73-6B
72-6F
65-20
20-70
00-49
53-20
54-20

61
FF
72
64
72
4F
20
53

6C
0D
FF
69
65
20
20
59

69
0A
0D
73
73
20
53
53

64
44
0A
6B
73
20
59
00

20
69
52
2C
20
20
53
00

73
73
65
20
61
20
80
55

79
6B
70
61
6E
20
01
AA

...'..Invalid sy
stem disk...Disk
I/O error...Rep
lace the disk, a
nd then press an
y key...IO
SYSMSDOS
SYS..
.WINBOOT SYS..U.

LA FAT
Sirve para dar direccionar espacio en el disco para los archivos. Contiene una
entrada en el disco para cada cluster. Para un disco de alta densidad, cada
cluster contiene 1 sector. En general cuantos mas sectores contenga un cluster,
mayor cantidad de direcciones el disco podra albergar y menor sera el nmero de
entradas a la FAT. Se ha mantenido desde el diseno original dos copias de la
FAT, solo uso la 1, la 2 es por si la uno falla.
Se hacen dos entradas en la FAT, el primer byte indica el tipo de dispositivo:
F0H 3.5 2 lados/18 sectores por pista y 36 sectores por pista. (1,44 y 2,88 MB)
F8H Disco duro
F9H 3.5 2 lados 9 sectores por pista y 5.25 2 lados 15 sectores por pista
(720Kb y 1,2 Mb)
La Segunda entrada en la FAT indica FFFFH para FAT de 12 bits o FFFFFFH para
discos duros que soporten FAT de 16 bits. Para dar un ejemplo las primeras dos
entradas para un disquette serian: F0 FF FF indicando disco de 3.5 con FAT de
12 bits.
La FAT funciona asi, el sector de directorio para cada fila en la zona 1AH-1BH
contiene la ubicacion en la FAT del primer cluster de un archivo, Luego la FAT
contiene una cadena de punteros para cada uno de los clusters que contienen el
archivo. La longitud de cada entrada para disquettes es de 3 Hexa y para discos
duros es de 4 Hexa, Windows tambien ofrece entradas de 32 bits. Valores que se
pueden encontrar en cada entrada:
12 bits
000
nnn
FF0-FF6
FF7
FFF

16 bits
0000
nnnn
FFF0-FFF6
FFF7
FFFF

Cluster vacio
Proximo cluster de la cadena
Cluster reservado
No utilizable.
Ultimo cluster de un archivo.

En el caso de una FAT de 12 bit, y recordando que el sistema usa el sistema de


byte en reversa se lee de la siguiente forma. Para procesar la primera entrada a
la FAT se multiplica 2 (el primer cluster del archivo, segun dice el directorio)
por 1,5 y se obtiene 3. Se accede al word (2 bytes) en bytes 3 y 4 de la FAT. En
nuestro caso 03 y F0 que al ponerlos en reversa forma F003. Como el cluster 2 es
par se utilizan los 3 ultimos digitos dando como resultado 003, que es el valor

del segundo cluster donde continua el archivo el archivo. Para el siguiente


cluster se multiplica el cluster 3 por 1,5 obteniendose 4. Se accede a los bytes
4 y 5 de la FAT, F0 y FF que al revertirlos dan FFF0, como el cluster 3 es impar
tomamos los 3 primeros digitos, resultado FFF que indica ser el ultimo cluster
del archivo.
Para el siguiente archivo, el directorio indica que comienza en el cluster 4,
multiplicando 4 por 1,5, el resultado 6, indicando bytes 6 y 7, con los valores
05 y 60 que al ser revertidos 6005 y considerando que el cluster 4 es par se
utilizan solo los 3 ultimos digitos 005, indicando que el archivo continua en el
cluster 5 del area de datos. Para el quinto cluster se multiplica el 5 por 1,5,
resultado 7, que indica bytes 7 y 8, de valores 60 y 00 que al revertirlos dan
0060, como 5 es impar se utilizan los 3 primeros digitos 006, indicando que el
cluster 6 es donde continua el archivo. Para el sexto cluster se multiplica 6
por 1,5 dando 9, indicando bytes 9 y 10, que contienen 07 y F0, que revertidos
dan F007 indicando que el siguiente cluster es el nmero 7. Para el septimo
cluster, multiplicamos 7 por 1,5, dando 10, que indica bytes 10 y 11 de valores
F0 y FF que al ser revertidos son FFF0 y como 7 es impar se usan solo los 3
primeros digitos indicando que esa es la ultima entrada.
Si tenemos en cuenta que cada cluster en un disquette de 1,44 Mb. Contiene 1
sector, y que un sector son 512 bytes. El archivo nmero 1 que contiene este
disquette (README.htm) es de 602 bytes, lo cual indica que utiliza 2 clusters
para ser almacenado en el disco, lo cual acabo de comprobar en los pasos
anteriores, clusters 2 y 3.
El segundo archivo (HLPGLOBE.GIF) es de 1603 bytes, lo cual indica que debe ser
almacenado en 4 clusters (512*3=1536 no es suficiente), ellos son 4, 5, 6 y 7.
Tambien se observa como los archivos pequenos disminuyen el rendimiento del
espacio en el disco, ya que de 4 clusters con una capacidad de almacenamiento de
512*4 bytes=2048 bytes solo se usan 1603 bytes para almacenar el archivo y el
resto queda inutilizable (2048-1603=445 bytes) y se pierde.
-d300
0F71:0300
0F71:0310
0F71:0320
0F71:0330
0F71:0340
0F71:0350
0F71:0360
0F71:0370

F0
00
00
00
00
00
00
00

FF
00
00
00
00
00
00
00

FF
00
00
00
00
00
00
00

03
00
00
00
00
00
00
00

F0
00
00
00
00
00
00
00

FF
00
00
00
00
00
00
00

05
00
00
00
00
00
00
00

60-00
00-00
00-00
00-00
00-00
00-00
00-00
00-00

07
00
00
00
00
00
00
00

F0
00
00
00
00
00
00
00

FF
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00

00
00
00
00
00
00
00
00

.......`........
................
................
................
................
................
................
................

EL DIRECTORIO
Todas los archivos comienzan en el primer sector del cluster. Para cada fila el
sistema crea una entrada de directorio donde se describen el nombre, extension,
etc. Una entrada de directorio tiene el siguiente formato:
00H-07H Nombre de archivo. Tambien el primer byte indica el estatus del archivo.
00H La fila nunca ha sido usada.
05H Primer caracter del archivo es E5H
2EH El archivo es un subdirectorio.
E5H El archivo ha sido borrado.
08H-0AH Extension del archivo.
0BH Atributo del archivo.
00H Archivo normal.
01H Solo lectura.
02H Archivo oculto.
04H Archivo de sistema.

08H Etiqueta del volumen.


10H Subdirectorio
20H Archivo modificado.
Estos atributos se pueden sumar, ejemplo 07H significa, archivo de sistema
(04H) mas archivo de solo lectura (01H) mas archivo oculto (02H).
0CH-15H
16H-17H
18H-19H
1AH-1BH
ultimos
1CH-1FH

Reservado por el sistema.


Hora del dia en que la fila fue creada (h*5+m*6+s*4)
Fecha (ano*7+m*4+d*5). Recordar ano mas 1980.
Cluster donde comienza el archivo. El numero es relativo a los dos
sectores del sector de directorio.
Tamano del archivo en bytes.

-d2700
0F71:2700
0F71:2710
0F71:2720
0F71:2730
0F71:2740
0F71:2750
0F71:2760
0F71:2770

52
6E
48
6E
00
00
00
00

45
2C
4C
2C
00
00
00
00

41
6E
50
6E
00
00
00
00

44
2C
47
2C
00
00
00
00

4D
00
4C
00
00
00
00
00

45
00
4F
00
00
00
00
00

20
20
42
20
00
00
00
00

20-48
A0-AB
45-47
A0-AB
00-00
00-00
00-00
00-00

54
24
49
24
00
00
00
00

4D
02
46
04
00
00
00
00

Criticas o correcciones: fabigp@hotmail.com

20
00
20
00
00
00
00
00

00
5A
00
43
00
00
00
00

92
02
81
06
00
00
00
00

91
00
A0
00
00
00
00
00

86
00
86
00
00
00
00
00

README HTM ....


n,n,.. ..$..Z...
HLPGLOBEGIF ....
n,n,.. ..$..C...
................
................
................
................

You might also like