ConclusionEl GAP no puede ser ausencia de reloj ya que en tal caso la region virgen de la cinta (mas alla del ultimo bloque) pudiera confundirse con un GAP. El GAP debe consistir en un tono de baja frecuiencia (posiblemente 1 KHz) en el track del reloj (que es 9.6 KHz).
Siempre observar las siguientes reglas:
* La cinta nunca se detiene sino es sobre un GAP
* La cinta nunca comienza a escribirse ni leerse sino es despues de detectado
el GAP de comienzo de bloque.
Para poder detecat el GAP correctamente, la cinta ha de detenerse justo en la mitad del GAP de modo que al comenzar a leer (o escribir) ese mismo GAP sea detectado.
Hay que implementar las siguientes operaciones a nivel de Drive, es decir, escribiendo en el registro C del controlador.
READ
Pone el transporte en PLAY sin leer nada, solo buscando el proximo GAP.
Cuando se cuentra el GAP, lo deja pasar y comienza a leer a partir de ahi.
Cuando se cuentra el siguiente GAP, se cae en modo STOP, terminando la lectura.
=> Pudieramos pensar en una opcion de lectura que no se detenga en el GAP, o una
que cuente GAPs permitiendo leer N bloques.
WRITE
Same as READ but writing
STOP
Stop reading or writting but continue to run the tape at nominal speed until
the next GAP (or non-clock zone) is found, then stop the tape and declare being in STOP mode.
=> "non-clock" zone es "cinta virgen": aquella mas alla del ultimo bloque. Tambien puede
tratarse de un tape sin gaps. La operacion STOP no debe quedarse buscando un GAP eternamente
en caso de que este no exista.
STEP-RWD
=> Esto no hace falta pues ya se tiene SEEK_BACK count.
Rewind just a little (aprox a block back, little more), then STOP (meaning
play again until the next GAP, of course).
La siguiente es una operacion a nivel de device driver:
SEEK-EOT
READ from current tape position overwritting buffer with each new block
until the EOT mark is found, then STOP. The operation ends up with the buffer
containing the last block on the tape (that containing the EOT mark).
=> Usa operaciones READ, STOP del drive.
|