diff --git a/chap/Fortran.tex b/chap/Fortran.tex index bad6e2f..9bf0a0e 100644 --- a/chap/Fortran.tex +++ b/chap/Fortran.tex @@ -5,6 +5,8 @@ un des premiers langages évolués. Il a été conçu après la seconde guerre mondiale, en 1954, par John Warner Backus, ingénieur en radiophonie chez IBM\index{IBM}, +% ======================================== + \section{F77} Dernière version à exiger le format '80 colonnes' des cartes perforées, @@ -12,7 +14,27 @@ cette version est aussi (aux yeux de vieux dinos) la plus pure, à cause d'instructions comme le \textsl{computed goto} ou le mythique \textsl{comefrom}. Nom officiel : \texttt{ANSI X3.9-1978}. -\section{Et après} \index{gfortran} +% ======================================== + +\section{Gfortan} \index{gfortran} Puis ce langage du passé a subi une évolution lente vers quelque -chose de bien plus moderne. Les dinos vont devoir s'adapter. +chose de bien plus moderne : le Fortran 90. +Les dinos vont devoir s'adapter. Et utiliser \texttt{gfortran}, +de la Gnu Compiler Collection\index{gcc}. + +Il est obligatoire d'avoir l'exemple canonique, donc le voilà. +Il faut l'enregister dans un fichier nommé \texttt{hello.f90} +pour que le compilateur le comprenne. + +\begin{verbatim} +program hello + implicit none + print *, "hello world" +end +\end{verbatim} + + + +% ======================================== + diff --git a/chap/curses.tex b/chap/curses.tex index 5154532..e9cb5fe 100644 --- a/chap/curses.tex +++ b/chap/curses.tex @@ -6,8 +6,8 @@ \index{curses} En fait, nous allons plutôt parler de \textbf{ncurses} qui est -l'implémentation actuelle de l'ancêtre \texttt{curses}. Voic ce -qu'en dit une page de man~: +l'implémentation actuelle de l'ancêtre \texttt{curses}. +Voici ce qu'en dit une page de man~: \begin{quote} The ncurses library routines give the user a terminal-independent @@ -23,6 +23,46 @@ chaque cellule de votre écran (la case où l'on peut mettre un caractère) pour y écrire quelque chose, en gérant des attributs tels que gras ou souligné. +% ========================================================= + +\section{Les principes} + +\begin{itemize} +\item{Indépendance de l'écran physique} +\item{Fenêtre et sous-fenêtre} +\item{Deux écrans : stdscr et curscr} +\end{itemize} + +Au tout début était le terminal canonique, la \textsc{Teletype}. +C'est dans le doux cliquetis de la vénérable \texttt{ASR33} +que se sont échaffaudées les premières lignes du code, écrites +avec \textsl{the only true one}\footnote{ed}. +Ensuite sont arrivés les terminaux à écran vidéo, les fameuses +\textsl{Glass TTYs}, qui ne tardèrent pas à se munir d'un +curseur adressable, ce qui permet alors d'écrire un caractère +à n'importe quelle endroit de l'écran. + +Adm3a, vt52, Qume 60... + +Une structure essentielle dans curses est l'écran, +appelé \textsl{screen} dans l'original. C'est une matrice +rectangulaire de cellules caractère/attribut et quelques +données associées. + +Pourquoi deux écrans ? La mécanique interne de curses +maintient en interne deux écrans (qui sont en fait des fenêtres +de la taille de l'écran physique) connus sous les noms de +\texttt{stdscr} et \texttt{curscr}. +Le premier est celui que voit l'application, et qu'il peut manipuler +avec les fonctions (genre \texttt{mvaddstr}) +que nous verrons très bientôt. +Et le second est l'image que se fait la mécanique de l'écran +physique, donc ce que voit le yuser. + + + +% ========================================================= + \section{Premier exemple} Bien entendu, nous commencerons par l'ECM traditionnel de rigueur. @@ -43,6 +83,8 @@ une capture d'écran, puisque je me permet de supposer que vous avez pris le temps de compiler l'exemple, et de voir par vous même ce que ça donne. +% ========================================================= + \section{Bell and whistles} Voici comment centrer sur la ligne du haut @@ -62,6 +104,14 @@ La liste complète est dans le man~: \texttt{attr(3NCURSES)}, avec plein de fonctions spécialisées dans le traitement des attributs. +% ========================================================= + +\section{Les fenêtres} + + + +% ========================================================= + \section{Astuces} Dans une boucle interactive, on va utiliser \texttt{getch()}, qui va diff --git a/chap/hardware.tex b/chap/hardware.tex index b2156b1..fd60f50 100644 --- a/chap/hardware.tex +++ b/chap/hardware.tex @@ -1,7 +1,20 @@ \chapter{Hardware} \label{chap:hardware} +% ----------------------------------------------------------- +\section{Joystick}\index{joystick} +\begin{verbatim} +int foo, joy_fd; +struct js_event js; + + +joy_fd = open(joy_device , O_RDONLY); +foo = read(joy_fd, &js, sizeof(struct js_event)); + +\end{verbatim} + +% ----------------------------------------------------------- \section{Diagnostics} @@ -12,7 +25,7 @@ dmesg, lshw, lsusb, lspci\dots % ----------------------------------------------------------- \section{Ports série} -\index{rs232} +\index{rs232} \label{rs232} \begin{quote} RS-232 (parfois appelée EIA RS-232, EIA 232 ou TIA 232) est @@ -55,7 +68,7 @@ servir un port série ? » appelle un réponse presque évidente~: « à plusieurs choses ». Une petite liste~: Connecter un Minitel\index{MINITEL} pour dialoguer avec Ulla Trentsixquinze ? Brancher un -Sportster 14400 pour retouver Fidonet\index{Fidonet} ? +Sportster 14400 pour retrouver Fidonet\index{Fidonet} ? Discuter avec un équipement avionnique ? Rediriger l'impression d'un MSX\index{MSX} vers Cups\index{cups} ? @@ -64,7 +77,6 @@ est la limite\footnote{Comme à peu près tout dans la vie.} % ----------------------------------------------------------- - \section{Disques durs} Iozone ? Bonnie ? Smart\index{smart} ? UUID\index{uuid} ? diff --git a/chap/ioctl.tex b/chap/ioctl.tex new file mode 100644 index 0000000..eb93254 --- /dev/null +++ b/chap/ioctl.tex @@ -0,0 +1,26 @@ +\chapter{I/O control} +\label{chap:ioctl} \index{ioctl} + + +Un des paradigmes les plus connus à propos des systèmes de la +famille Unix est : \textsf{Tout est vu comme un fichier}. +C'est souvent vrai, mais parfois ce n'est pas suffisant. +Prenons rapidement un exemple, le baton de joie\index{joystick} +dans Linux. + +\begin{verbatim} +int foo, joy_fd; +struct js_event js; +char joy_name[128]; + +joy_fd = open(joy_device , O_RDONLY); + +\end{verbatim} + + + +% ========================================================= + +Ailleurs dans ce document : Ports série (p. \pageref{rs232}) + +% ========================================================= diff --git a/chap/openwrt.tex b/chap/openwrt.tex index 610c329..d762444 100644 --- a/chap/openwrt.tex +++ b/chap/openwrt.tex @@ -1,9 +1,11 @@ \chapter{OpenWrt} \label{chap:openwrt} -\index{openwrt} +\index{OpenWrt} + +Sur quoi tenter de le faire tourner ? \begin{verbatim} -TP Ling +TP Link AC 1750 Archer C7 \end{verbatim} diff --git a/chap/sdr.tex b/chap/sdr.tex new file mode 100644 index 0000000..24a376e --- /dev/null +++ b/chap/sdr.tex @@ -0,0 +1,37 @@ +\chapter{Sofware Defined Radio} +\label{chap:sdr} \index{sdr} + +Beaucoup d'empirisme danc ce chapitre. + +Tout d'abord, le matériel à ma disposition~: + +\begin{verbatim} +Bus 004 Device 010: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T +\end{verbatim} + +Ensuite, le premier hack, dont je n'ai pas encore bien capté +la raison~: + +\begin{verbatim} +$ cat /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf +# added by tth +blacklist dvb_usb_rtl28xxu +\end{verbatim} + +% =================================================== + +\section{CubicSDR} + +\begin{quote} +CubicSDR is a cross-platform Software Defined Radio application which +allows you to navigate the radio spectrum and demodulate any signals +you might discover. It currently includes several common analog +demodulation schemes such as AM and FM and will support digital modes +in the future. +SDR hardware is accessed through SoapySDR and therefore any +hardware for which a SoapySDR module exists can be used as a receiver +with CubicSDR. +\end{quote} + + +% =================================================== diff --git a/chap/son.tex b/chap/son.tex index ff9fef9..509af29 100644 --- a/chap/son.tex +++ b/chap/son.tex @@ -4,7 +4,7 @@ Abordons maintenant un sujet complexe : le son en général, la musique (p. \pageref{chap:musique}) et la -synthèse(p. \pageref{chap:modular}). +synthèse de sons (p. \pageref{chap:modular}). %------------------------------------------------------------------ diff --git a/code/xf_yesno.c b/code/xf_yesno.c deleted file mode 100644 index a560ffc..0000000 --- a/code/xf_yesno.c +++ /dev/null @@ -1,33 +0,0 @@ -#include - -int main(int argc, char *argv[]) { - FL_FORM *form; - FL_OBJECT *yes, - *no, - *but; - - fl_initialize(&argc, argv, "FormDemo", 0, 0); - - form = fl_bgn_form(FL_UP_BOX, 320, 120); - fl_add_box(FL_BORDER_BOX, 160, 40, 0, 0, \ - "Do you want to Quit?"); - yes = fl_add_button(FL_NORMAL_BUTTON, \ - 40, 70, 80, 30, "Yes"); - no = fl_add_button(FL_NORMAL_BUTTON, \ - 200, 70, 80, 30, "No"); - fl_end_form(); - - fl_show_form(form, FL_PLACE_MOUSE, FL_TRANSIENT, \ - "Question"); - - while (1) { - if (fl_do_forms() == yes { - printf("Yes is pushed\n"); - break; - } - else printf("No is pushed\n"); - } - - fl_finish(); - return 0; -} diff --git a/main.tex b/main.tex index 7f803d2..68b35fe 100644 --- a/main.tex +++ b/main.tex @@ -30,6 +30,7 @@ \makeatletter \def\verbatim@font{\normalfont\ttfamily\small} +% XXX \def\quote@font{\sffamily} \makeatother \title{Tricks pour mon ordinateur} @@ -117,7 +118,7 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots \input{chap/webcam} % \input{chap/SCSI} \input{chap/X11} -% \input{chap/Fortran} +\input{chap/Fortran} % \input{chap/GMP} \input{chap/Python} \input{chap/dino} @@ -136,6 +137,8 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots \input{chap/photos} \input{chap/plugins} \input{chap/Bonjour} +\input{chap/ioctl} + \input{chap/debug} \input{chap/buzybox} \input{chap/gif89a} @@ -146,6 +149,8 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots \input{chap/ssh} \input{chap/hardware} \input{chap/gadgets} +\input{chap/sdr} + % \input{chap/slang} \input{chap/curses} \input{chap/openwrt}