[FUG-BR] acesso ao hardware (via gcc) - complementando

Paulo Pires pappires em gmail.com
Ter Mar 28 22:58:37 BRT 2006


On 3/28/06, Antonio Torres <antonio.torres em newspace.net.br> wrote:
> Paulo Pires wrote:
> > On 3/27/06, irado em hotpop.com <irado em hotpop.com> wrote:
> >> bem.. um 'skeleton' de função que acesse diretamente o floppy na função
> >> leitura ou gravação, ou seja, qualquer coisa assim como:
> >> track == 0;
> >> { while track < 79
> >>       read track++; (ou write)
> >>  }
> >
> > Que mal lhes pergunte, se se fizer um simples
> >
> >     dd if=/dev/fd0 of=/dev/null bs=36b skip=N count=1
> >
> ...
>
> não vai sair da trilha 0 setor 0: o `dd` tem "um monte" de verificações
> de erros... vai dar erro de leitura logo de cara....

Então vejamos.  O dd não vai ser mais "esperto" do que as chamadas que
ele faz para realizar o I/O.  Fiz um teste e vi que não dá erro no
open(2) nem no lseek(2), só no read(2).  Resta saber se o movimento da
cabeça realmente ocorre no momento do read(2), ou se ele tenta ler
alguma coisa antes de movimentá-la.  Se não depender de um estado
anterior, o seguinte script se presta muito bem (embora seja
miseravelmente ineficiente).

    #!/bin/sh
    a=0
    while [ $a -lt 80 ]; do
        dd if=/dev/fd0 of=/dev/null bs=36b skip=$a count=1 2> /dev/null
        a=`expr $a + 1`
    done


Vai aparecer uma montanha de erros no console, mas não se está
tentando ler um disquete de verdade.  (A julgar pelo barulho de seek
de cabeçote no meu drive, mesmo vazio (para (mal-)simular um disquete
que vai dar erro de todo jeito), acho que funciona.)

Alguém pode preferir operações de escrita, ao invés de leitura.  Mas
talvez melhor ainda seja uma operação de formatação do disquete de
limpeza, já que o fdformat(8) vai em trilha por trilha,
independentemente de se a trilha anterior formatou corretamente.

> O objetivo do programa (pelo que eu entendi) é meramente manter o disco
> "rodando" e mover a cabeça da trilha 0 até a 79..
>
>
> em DOS é "bico" fazer... um programinha em assembler usando as INTs da
> BIOS....
>
>
> []s
>
> Antonio Torres
> _______________________________________________
> freebsd mailing list
> freebsd em fug.com.br
> http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
>


--
Um abraço.
        Paulo A. P. Pires

... Qui habet aurem audiat quid Spiritus dicat ecclesiis.
_______________________________________________
freebsd mailing list
freebsd em fug.com.br
http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br



Mais detalhes sobre a lista de discussão freebsd