venerdì 14 settembre 2012

FreeDos in Qemu

Per installare FreeDos in QEmu la procedura e' abbastanza semplice

prima si crea un file della dimensione voluta del futuro C:\ (in questo caso 400 Mb) e si scarica il file fdfullcd.iso dal sito di FreeDos

dd if=/dev/zero of=freedosfile.img bs=1024 count=400000

successivamente si lancia l'emulatore indicando il supporto di installazione nel cdrom e specificando di fare il boot da D

qemu -cdrom fdfullcd.iso -hda freedosfile.img -boot d

si seguono quindi le istruzioni a schermo

Per avviare la macchina una volta terminato il processo e' sufficiente

qemu -hda freedosfile.img -boot c

Uno dei problemi con QEmu/FreeDos e' quello di non poter indicare in modo semplice una cartella condivisa tra il sistema Guest e quello Host in modo da inserire i file di installazione dei futuri programmi

Leggendo su Internet molti settano QEmu per gestire una rete virtuale ed effettuano un collegamento di rete tra Host e Guest

per me e' stata piu' semplice inserire i file dei programmi su una chiavetta USB e poi creare una immagine img della chiavetta mediante il seguente comando

dd if=/dev/sdb of=/home/luca/qemu/usb.img bs=1024

a questo punto si puo' lanciare QEmu indicando nel disco D: l'immagine della chiavetta

qemu -hda freedos.img -hdb usb.img -boot c

Prompt di FreeDos
Nell'immagine di FreeDos completa sono inclusi molti software compreso OpenGem. Prima di poterlo utilizzare deve essere pero' installato. Per farlo si deve andare nella cartella FDos/OpenGem e far partire l'installazione

Open Gem

Ovviamente poter usare nell'emulatore un programma che e' stato tuo compagno per almeno 5 anni non ha prezzo e quindi via con l'installazione di Turbo Pascal 5


 Per il funzionamento del Turbo Pascal 5 e' importante selezionare l'opzione 1 al boot di FreeDos

 Dopo l'installazione dei dischetti il rassicurante schermo blu e bianco della IDE di Turbo Pascal

Fa abbastanza impressione vedere funzionare dopo tanto tempo l'esempio BGIDemo
BGIDemo Turbo Pascal



Quasi quasi provo ad installare Fractint.........................

Debian Testing in Fujitsu Siemens Amilo M6500

Questa macchina e' stato il mio computer di produzione per almeno un anno intorno all'anno 2002 e montava una Debian 3.0.

Dopo un po' di tempo, circa un anno fa, ho provato a farlo ripartire per reinstallare una nuova Debian ma non sono riuscito a fare partire il boot da CD (il Bios non ammette la partenza da USB); in vena al masochismo avevo provato a creare il boot da floppy ma senza successo.

Un paio di giorni fa ho ritirato fuori la macchina dal deposito e presentava lo stesso problema...un po' per scherzo ho aperto il cassetto del  CD ed ho spostato a mano la slitta che pilota il laser in quanto era parcheggiata in una posizione anomale tutta sull'esterno...da quel momento il computer e' ripartito ed ho potuto effettuare l'installazione di una Debian Testing Wheezy


Le caratteristiche del computer (derivate anche da cat /proc/cpuinfo) sono

Pentium III Coppermine 995.6 MHz
Hd 10GigaByte
Risoluzione monitor1024x768

il computer adesso ha 192 Mb di Ram anche se di fatto sono montate una SoDimm da 256 Mb ed una da 64 Mb in quanto vengono lette solo schedine Ram single side...comunque in totale la scheda madre regge al massimo 256 Mb

Il Modem interno, recuperato tramite lo script,
Model Intel 82440MX Ac'97 modprobe snd_intel8x0m

Amilo  M6500 con Wheezy in funzione

Scheda identificativa

Per la connettivita' wireless ho ritirato fuori una scheda Belkin che. leggendo /var/log/messages, possiede un chip Broadcom 4318 che avendo un driver proprietario non e' installato di default in Linux
Belkin Wireless PCMCIA
per rendere funzionante la scheda e' sufficiente usare il comando

apt-get install firmware-b43-installer

e' importante avere la connessione di rete perche' lo script scarica da Internet in automatico i driver necessari


La connettivita' via cavo e' stata assicurata da una IBM Etherjet 10/100 con monta un chip Xircom che viene riconosciuto senza problemi durante l'installazione
IBM EtherJet 10/100
PS: mi ero scordato di quanto scaldavano i portatili di qualche anno fa

mercoledì 12 settembre 2012

Esempio Mandelbrot in C/Ncurses

In questo caso l'insieme di Mandelbrot e' stato restituito su un display a caratteri 80x25 usando la libreria ncurses

Il progetto puo' essere scaricato a questo link
----------------------------------------------

#include <ncurses.h>

#define SCREEN_WIDTH 80
#define SCREEN_HEIGHT 25


float re_min = -2.0;
float im_min = -1.2;

float re_max = 1.0;
float im_max = 1.2;
int iterazioni = 255;


float a,b;
float x,y,x_new,y_new;

int k,j,i;

int keypress = 0;


int main() {


initscr();
start_color();

init_pair(0,COLOR_RED,COLOR_BLACK);
init_pair(1,COLOR_RED,COLOR_RED);
init_pair(2,COLOR_RED,COLOR_GREEN);
init_pair(3,COLOR_RED,COLOR_YELLOW);
init_pair(4,COLOR_RED,COLOR_BLUE);
init_pair(5,COLOR_RED,COLOR_MAGENTA);
init_pair(6,COLOR_RED,COLOR_CYAN);
init_pair(7,COLOR_RED,COLOR_WHITE);

float re_factor = (re_max-re_min);
float im_factor = (im_max-im_min);
     

for (i=0;i<SCREEN_HEIGHT;i++)
{
for (j=0;j<SCREEN_WIDTH;j++)
{
a = re_min+(j*re_factor/SCREEN_WIDTH);
b = im_min+(i*im_factor/SCREEN_HEIGHT);

x = 0;
y = 0;

for (k=0;k<iterazioni;k++)
{
x_new = (x*x)-(y*y)+a;
y_new = (2*x*y)+b;
if (((x_new*x_new)+(y_new*y_new))>4)
{
switch (k%8)
{
case 0:
attron(COLOR_PAIR(0));
break;
case 1:
attron(COLOR_PAIR(1));
break;
case 2:
attron(COLOR_PAIR(2));
break;
case 3:
attron(COLOR_PAIR(3));
break;
case 4:
attron(COLOR_PAIR(4));
break;
case 5:
attron(COLOR_PAIR(5));
break;
case 6:
attron(COLOR_PAIR(6));
break;
case 7:
attron(COLOR_PAIR(7));
break;

}


mvprintw(i,j," ");
break;
}
x = x_new;
y = y_new;
}
       
}

}
refresh();
getch();
endwin();

return(0);
}


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

Era un po' di tempo che non vedevo Mandelbrot in modalita' testo...piu' o meno dal 1991 quando un virus per DOS visualizzava l'immagine sottostante  (nel dettaglio era Tequila Virus)

Il virus era scritto in Assembler e ricordo che lo debuggai per estrarre la parte di codice relativa a Mandelbrot

Esempio insieme di Mandelbrot in C/SDL

Un esempio di creazione dell'insieme di Mandelbrot impiegando la libreria SDL per la parte grafica


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

#include "SDL/SDL.h"
#include <stdio.h>

#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
#define SCREEN_DEPTH 8

float re_min = -2.0;
float im_min = -1.2;

float re_max = 1.0;
float im_max = 1.2;
int iterazioni = 255;


float a,b;
float x,y,x_new,y_new;

int test;

int k,j,i;

int keypress = 0;


int main() {

SDL_Surface *screen;
Uint8       *p;
SDL_Event event;

float re_factor = (re_max-re_min);
float im_factor = (im_max-im_min);
     
SDL_Init(SDL_INIT_VIDEO);
screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_DEPTH, SDL_SWSURFACE);

for (i=0;i<SCREEN_HEIGHT;i++)
{
for (j=0;j<SCREEN_WIDTH;j++)
{
a = re_min+(j*re_factor/SCREEN_WIDTH);
b = im_min+(i*im_factor/SCREEN_HEIGHT);

x = 0;
y = 0;
test = 0;

for (k=0;k<iterazioni;k++)
{
x_new = (x*x)-(y*y)+a;
y_new = (2*x*y)+b;
if (((x_new*x_new)+(y_new*y_new))>4)
{
test = k;
p = (Uint8 *)screen->pixels + i * screen->pitch + j * screen->format->BytesPerPixel;
*p=(k%255);
break;
}
x = x_new;
y = y_new;
}
       
}

}
SDL_Flip(screen);

printf("Finito\n\r");

while (!keypress)
{
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_KEYDOWN:
keypress = 1;
}
}
}
SDL_Quit();

return(0);

}
--------------------------------------------

il progetto puo' essere scaricato a questo indirizzo link

martedì 11 settembre 2012

Ubuntu 12.04 su VirtualBox

Con l'arrivo di Ubuntu 12.04 sono comparsi problemi nell'installazione della stessa come macchine virtuale in VirtualBox

Tentando il boot dalla Iso questo si interrompe subito con il seguente messaggio

Il kernel e' stato compilato con il supporto obbligatorio a PAE (un sistema per i processori a 32 bit di indirizzare quantita' di memoria superiori ai 2 Gb)

Per risolvere il problema si deve andare nella scheda di configurazione del processore virtuale e spuntare la flag Abilita PAE

PS: mi sono accorto che anche Debian Testing propone di default con kernel con compilato PAE

lunedì 10 settembre 2012

Esempio GUI con QTCreator (2)

Per questo esempio di GUI e' sempre stata usato QtCreator ma utilizzando la creazione manuale dell'evento e non legando in modo automatico i widgets come nell'esempio precedente; cio' comporta la scrittura seppur minima di codice






asdasd
asdasd
Finestra di creazione della gestione dell'evento







sabato 8 settembre 2012

Download Debian con Jigdo e Wget

In alcuni casi (vedi per esempio alcune versione testing con processori differenti da i386) e' difficile trovare un numero sufficiente di seeders per scaricare in tempi ragionevoli una ISO via Torrent

Per questo motivo puo' essere utile utilizzare il protocollo Http in modo intelligente ovvero senza sovraccaricare i server che mettono a disposizione le immagini

Wget
con questo comando e' sufficiente conoscere l'indirizzo dell'immagine iso

wget -c URL

con lo switch -c e' possibile interrompere il download e riprenderlo in un secondo momento



Jigdo invece di scarica una ISO preleva i singoli file DEB e poi li ricompone in una immagine
Per fare eseguire il programma si deve scaricare il file .jigdo della distribuzione di interesse e poi digitate

jigdo-lite file.jigdo

in automatico il programma prima scarica un file .template. Nel caso in cui non venga scaricato in automatico (puo' succedere con le testing) si devono scaricare nello stesso momento il file .jigo e .template (sono associati l'uno all'altro e vengono generati nuovi ogni settimana)


FigSpec FS-60CL

A lavoro mi hanno rifilato questo sensore iperspettrale cinese (pushbroom 400-1000 nm con larghezza di banda di 0.5 nm compatibile con DJI M...