-------------------------------------------------------------------------
TRSDOS
Setores e cilindros são numerados a partir de 0
os disquetes podem ser de densidade simples ou dupla
Aparentemente os setores sempre tem 256 bytes

SD: 256 bytes por setor, 5 setores por granule, 2 granules por trilha, 1 trilha por cilindro, 40 cilindros por drive
DD: 256 bps, 6 spg, 3 gpt, 1 tpc, 40 cpd

Um cilindro inteiro é usado para o diretório
Pelo menos um granule é usado para o código de bootstrap

Máximo de 32 setores para o diretório, por causa de limitações da HIT
1 setor é sempre reservado para a GAT e 1 para a HIT, os demais setores do cilindro ficam para o diretório

Cada registro do diretório tem 32 bytes
Cada setor de diretório contém 8 registros

Em discos de sistema, os 2 primeiros registros dos 8 primeiros setores são reservados para arquivos de overlay

Máximo de 8 granules por cilindro, restrito pela GAT

Nos bytes da GAT, cada bit 1 indica um granule em use, e bit 0 livre.
O bit 0 corresponde ao primeiro granule relativo, o bit 1 ao segundo etc.

Num disco de densidade simples, com dois granules por cilindro, só dois bits de cada byte são usados. Os bits restantes são setados (1) para indicar que estão indisponíveis. 1 byte para cada cilindro, portanto.

A GAT fica no primeiro setor do cilindro de diretório.

A posição da entrada na tabela de hashes é chamada de Directory Entry Code (DEC) do arquivo.

Todos os arquivos tem pelo menos um DEC.

Arquivos com mais de 4 extents tem um DEC para cada entrada no diretório extendido e usam mais que um slot de diretório.

Deve-se manter os arquivos abaixo de 5 extents sempre que possível (?)

Cada entrada na HIT é mapeada ao setor de diretório pela posição do DEC na HIT.


HIT
8 linhas
32 colunas

cada linha = 1 registro de diretório
cada coluna = 1 setor de diretório (0-31)

Cada byte contém um hash
um byte contendo 00 indica uma posição livre

and 1Fh
add 2
-> Calcula o setor
and E0h
-> calcula o offset no setor


DIR/SYS -> Diretorio

GAT: Tabela de alocação de granules
HIT: Índice para acelerar o acesso ao diretório

Na GAT tem um Id do disco
Cada byte da GAT corresponde a um cilindro
Cada bit desses bytes corresponde a um granule (1 = ocupado, 0 = livre)


-------------------------------------------------------------------------
Tipos de Floppy:

0CC0 SD 5.25"
1900 DD 5.25"
1980 DD 5.25" (?)
14E0 SD 8"
2940 DD 8"

-------------------------------------------------------------------------
Cálculo de Setores Relativos:

Imagem setores absolutos:

T:0 S:0	   T:1 S:0    T:2 S:0    T:3 S:0    T:4 S:0
[0 1][2 3] [0 1][2 3] [0 1][2 3] [0 1][2 3] [0 1][2 3]
[0 1][2 3] [0 1][2 3] [0 1][2 3] [0 1][2 3] [* 1][2 3]
T:0 S:1	   T:1 S:1    T:2 S:1    T:3 S:1    T:4 S:1

Imagem setores relativos:

0 1 2 3  8 9 0 1  6 7 8 9  4 5 6 7  2 3 4 5
4 5 6 7  2 3 4 5  0 1 2 3  8 9 0 1  * 7 8 9

Parâmetros deste disco imaginário:
Setores Por Trilha = 4, Granules Por Trilha = 2, Trilhas = 5, Lados = 2

Exemplo de Codificação:

Trilha 4, Granule 2 (0-based):

(Trilha "4" * (2*2) + 3) * 2 = 36 Perfeita!!!

Exemplo de Decodificação:

36 / (4*2) = 4 resto 4 (Trilha 4)
4 / 4 = 1 resto 0 (Lado 1, Setor 0) OK

22 / 8 = 2 resto 6 (Trilha 2)
6 / 4 = 1 resto 2 (Lado 1, Setor 2) OK

27

27 / 8 = 3 resto 3 (Trilha 3)
3 / 4 = 0 resto 3 (Lado 0, Setor 3) OK	PERFEITO!!!

-------------------------------------------------------------------------

TRSDOS v2.3: 
- Cilindro do diretório no 3o byte do setor de boot
- Trilhas e setores começam em 0
- O formato do diretório parece ser o mesmo (GAT, HIT, FPDE etc.)

