Re: [FUG-BR] acesso ao hardware (via gcc) - complementando
(resposta entre parágrafos do original) Original Message: - From: Antonio Torres [EMAIL PROTECTED] Date: Tue, 28 Mar 2006 21:56:12 -0300 O objetivo do programa (pelo que eu entendi) é meramente manter o disco rodando e mover a cabeça da trilha 0 até a 79.. exatamente isso :) em DOS é bico fazer... um programinha em assembler usando as INTs da BIOS pois é.. o programa original é em dos mesmo, usando os INT(xx). Mas isso não existe nos *nix :( --- saudações, irado furioso com tudo FreeBSD BSD50853/Linux User 179402 As pessoas fazem coisas horríveis por dinheiro, até trabalhar. mail2web - Check your email from the web at http://mail2web.com/ . ___ freebsd mailing list freebsd@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
Re: [FUG-BR] acesso ao hardware (via gcc) - complementando
hmm... nem preciso que se escreva mesmo - afinal, não se consegue escrever nada (ou ler) em floppy de limpeza. Mas vou experimentar o fdformat - vagamente lembra-me que vai de trilha em trilha mesmo, e o (V)erify é posterior. Original Message: - From: Paulo Pires [EMAIL PROTECTED] Date: Tue, 28 Mar 2006 22:58:37 -0300 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. --- saudações, irado furioso com tudo FreeBSD BSD50853/Linux User 179402 As pessoas fazem coisas horríveis por dinheiro, até trabalhar. mail2web - Check your email from the web at http://mail2web.com/ . ___ freebsd mailing list freebsd@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
Re: [FUG-BR] acesso ao hardware (via gcc) - complementando
Irado, O que significa ... um skeleton...? Celso Em 27/03/06, [EMAIL PROTECTED][EMAIL PROTECTED] escreveu: 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) } (atenção: minha memória, após 15 anos sem programar em 'c', tá meio combalida - risos) abraços, irado Original Message: - From: Eder [EMAIL PROTECTED] Date: Mon, 27 Mar 2006 20:46:32 -0300 A resposta é sim o FreeBSD possui vários (header's) para fazer acesso direto ao hadware da máquina. Mais o que você quer precissamente. mail2web - Check your email from the web at http://mail2web.com/ . ___ freebsd mailing list freebsd@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br -- Celso Vianna BSD User: 51318 http://www.bsdcounter.org Palmas/TO ___ freebsd mailing list freebsd@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
Re: [FUG-BR] acesso ao hardware (via gcc) - complementando
amostra de função, um padrão qualquer, que mostra a ´montagem´ da verdadeira função, onde trocaríamos os parâmetros e/ou variáveis. mais ou menos: void nome-de-função(void) { conteúdo conteúdo conteúdo } Original Message: - From: Celso Viana [EMAIL PROTECTED] O que significa ... um skeleton...? mail2web - Check your email from the web at http://mail2web.com/ . ___ freebsd mailing list freebsd@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
Re: [FUG-BR] acesso ao hardware (via gcc) - complementando
On 3/27/06, [EMAIL PROTECTED] [EMAIL PROTECTED] 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 o driver de floppy, em resposta ao lseek(2) condicionado ao parâmetro skip, não vai levar o cabeçote para a trilha N? -- Um abraço. Paulo A. P. Pires ... Qui habet aurem audiat quid Spiritus dicat ecclesiis. ___ freebsd mailing list freebsd@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
Re: [FUG-BR] acesso ao hardware (via gcc) - complementando
Paulo Pires wrote: On 3/27/06, [EMAIL PROTECTED] [EMAIL PROTECTED] 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 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@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
Re: [FUG-BR] acesso ao hardware (via gcc) - complementando
On 3/28/06, Antonio Torres [EMAIL PROTECTED] wrote: Paulo Pires wrote: On 3/27/06, [EMAIL PROTECTED] [EMAIL PROTECTED] 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@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@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
[FUG-BR] acesso ao hardware (via gcc) - complementando
bem, complementando: muitos séculos atrás eu cometi um pequeno programa em turbo-c o qual, acessando o hardware (floppy) diretamente, fazia uma ´leitura´ das trilhas 0 a 79, trilha a trilha. Bem, não havia leitura alguma, apenas o deslocamento da cabeça por essas trilhas, sendo que o diskette era o conhecido(?) dispositivo para limpeza de cabeças. Com isso, eu evitava ficar digitando insaciávelmente ´dir´ (era dos, não esqueçam) além de evitar o desgaste apenas da trilha 0 do diskette de limpeza. A idéia agora é (re)fazer o programa para funcionar em FreeBSD, mas eu precisaria saber os int(errupts) correspondentes. Com certeza deve haver um ´#include.h´ pra isso e, possívelmente, não seja visível no fonte do kernel. Mas - seguramente - vou olhar o fonte sim, mas só no fim de semana. Ah, em asm eu creio que é imraticável, pra mim pelo menos, que já nem vejo isso desde.. hmmm.. ´79/80.. se alguém tiver alguma idéia de onde procurar, a semântica empregada (pragma, inline, int-xx, etc), já ajudará bastante :) obrigado. mail2web - Check your email from the web at http://mail2web.com/ . ___ freebsd mailing list freebsd@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
Re: [FUG-BR] acesso ao hardware (via gcc) - complementando
[EMAIL PROTECTED] wrote: bem, complementando: muitos séculos atrás eu cometi um pequeno programa em turbo-c o qual, acessando o hardware (floppy) diretamente, fazia uma ´leitura´ das trilhas 0 a 79, trilha a trilha. Bem, não havia leitura alguma, apenas o deslocamento da cabeça por essas trilhas, sendo que o diskette era o conhecido(?) dispositivo para limpeza de cabeças. Com isso, eu evitava ficar digitando insaciávelmente ´dir´ (era dos, não esqueçam) além de evitar o desgaste apenas da trilha 0 do diskette de limpeza. ... no FreeBSD 6 (cvsup 1 semana), de uma olhada em /usr/src/lib/libdisk/test01.c é um programinha com diversos acessos diretos a trilhas e setores de fd. Não sei se é o que voce precisa, mas pode ser um excelente ponto de partida. []s Antonio Torres ___ freebsd mailing list freebsd@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
Re: [FUG-BR] acesso ao hardware (via gcc) - complementando
On Mon, 27 Mar 2006 09:49:00 -0500, [EMAIL PROTECTED] wrote bem, complementando: muitos séculos atrás eu cometi um pequeno programa em turbo-c o qual, acessando o hardware (floppy) diretamente, fazia uma ´leitura´ das trilhas 0 a 79, trilha a trilha. Bem, não havia leitura alguma, apenas o deslocamento da cabeça por essas trilhas, sendo que o diskette era o conhecido(?) dispositivo para limpeza de cabeças. Com isso, eu evitava ficar digitando insaciávelmente ´dir´ (era dos, não esqueçam) além de evitar o desgaste apenas da trilha 0 do diskette de limpeza. Irado, Da uma olhada em man -k device (device_get*, device_set*) veja se com isso voce consegue fazer o que precisa ser feito. Partindo do principio que o nosso sistema é multitarefa os acessos *devem* ser feitos através de API do kernel, *acho* (quase certeza absoluta) que não tem como fazer isso em userland direto e nem é preciso usar assembler, pos tbm não tem acesso direto aos dispositivos. Rizzo A idéia agora é (re)fazer o programa para funcionar em FreeBSD, mas eu precisaria saber os int(errupts) correspondentes. Com certeza deve haver um ´#include.h´ pra isso e, possívelmente, não seja visível no fonte do kernel. Mas - seguramente - vou olhar o fonte sim, mas só no fim de semana. Ah, em asm eu creio que é imraticável, pra mim pelo menos, que já nem vejo isso desde.. hmmm.. ´79/80.. se alguém tiver alguma idéia de onde procurar, a semântica empregada (pragma, inline, int-xx, etc), já ajudará bastante :) obrigado. mail2web - Check your email from the web at http://mail2web.com/ . ___ freebsd mailing list freebsd@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br -- Nilton José Rizzo 805 Informatica 021 2413 9786 ___ freebsd mailing list freebsd@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
Re: [FUG-BR] acesso ao hardware (via gcc) - complementando
Olá, O uso de __asm é igual para todas as plataformas, existem muitos sites que falam a respeito, além da maioria de bons livros de C. Quanto as int, o FreeBSD (como os outros UNIX) usa apenas a int 80 para acesso ao sistema, tem alguma documentação no Architecture Handbook do FreeBSD e algo no site http://www.int80h.org. Abraços. Em 27/03/06, Nilton Jose Rizzo [EMAIL PROTECTED] escreveu: On Mon, 27 Mar 2006 09:49:00 -0500, [EMAIL PROTECTED] wrote bem, complementando: muitos séculos atrás eu cometi um pequeno programa em turbo-c o qual, acessando o hardware (floppy) diretamente, fazia uma ´leitura´ das trilhas 0 a 79, trilha a trilha. Bem, não havia leitura alguma, apenas o deslocamento da cabeça por essas trilhas, sendo que o diskette era o conhecido(?) dispositivo para limpeza de cabeças. Com isso, eu evitava ficar digitando insaciávelmente ´dir´ (era dos, não esqueçam) além de evitar o desgaste apenas da trilha 0 do diskette de limpeza. Irado, Da uma olhada em man -k device (device_get*, device_set*) veja se com isso voce consegue fazer o que precisa ser feito. Partindo do principio que o nosso sistema é multitarefa os acessos *devem* ser feitos através de API do kernel, *acho* (quase certeza absoluta) que não tem como fazer isso em userland direto e nem é preciso usar assembler, pos tbm não tem acesso direto aos dispositivos. Rizzo A idéia agora é (re)fazer o programa para funcionar em FreeBSD, mas eu precisaria saber os int(errupts) correspondentes. Com certeza deve haver um ´#include.h´ pra isso e, possívelmente, não seja visível no fonte do kernel. Mas - seguramente - vou olhar o fonte sim, mas só no fim de semana. Ah, em asm eu creio que é imraticável, pra mim pelo menos, que já nem vejo isso desde.. hmmm.. ´79/80.. se alguém tiver alguma idéia de onde procurar, a semântica empregada (pragma, inline, int-xx, etc), já ajudará bastante :) obrigado. mail2web - Check your email from the web at http://mail2web.com/ . ___ freebsd mailing list freebsd@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br -- Nilton José Rizzo 805 Informatica 021 2413 9786 ___ freebsd mailing list freebsd@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br ___ freebsd mailing list freebsd@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br
Re: [FUG-BR] acesso ao hardware (via gcc) - complementando
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) } (atenção: minha memória, após 15 anos sem programar em 'c', tá meio combalida - risos) abraços, irado Original Message: - From: Eder [EMAIL PROTECTED] Date: Mon, 27 Mar 2006 20:46:32 -0300 A resposta é sim o FreeBSD possui vários (header's) para fazer acesso direto ao hadware da máquina. Mais o que você quer precissamente. mail2web - Check your email from the web at http://mail2web.com/ . ___ freebsd mailing list freebsd@fug.com.br http://lists.fug.com.br/listinfo.cgi/freebsd-fug.com.br