Monday, 19 July 2010

Pesto



Made some pesto. Eric grew several basil pots in his greenhouse, from BBC free seeds.Basil,garlic, pine nuts,almonds,virgin olive oil and parmesan cheese.


Sunday, 4 July 2010

Pea harvest Abergavenny



The weather has turned more chilly, with dark sky and quite windy. Today we went to Abergavenny to pick peas, broad beans, red currants and raspberries.



Monday, 28 June 2010

Kitchen sink




Eric and Chris put in a new kitchen sink, also boxed off the boiler pipes.



Sunday, 27 June 2010

PYO strawberry fileds




Went to Hendrewennol fruit garden near Welsh St. Donats. The strawberries were a bit small, but there were lots of them. I think the very hot weather needs to break and a pour down to happen to fatten them up. England lost to Germany at football world cup 4-1. Sad that Wales lost 29-10 to New Zealand played in NZ.



Saturday, 26 June 2010

Real-time clock program


Downloaded DJGPP 32bit C compiler GNU, used RHIDE old fashioned text mode IDE to update a program to show an on screen clock. It pokes the time into direct screen memory, keeping it simple, so it doesn't conflict with system stuff.

Nice hot Saturday!


//Simple Example of chaining interrupt handlers

//Adopted from Matthew Mastracci's code
//Lyndon Smith added poking screen memory with clock time

#include
#include
#include
#include
#include
#include

//macros by Shawn Hargreaves from the Allegro library for locking
//functions and variables.
#define LOCK_VARIABLE(x) _go32_dpmi_lock_data((void *)&x,(long)sizeof(x));
#define LOCK_FUNCTION(x) _go32_dpmi_lock_code(x,(long)sizeof(x));

//timer interrupt 8 is generated every 18.2 ms
#define TIMER 8
#define NORMAL 7
#define CLOCKOFFSET (80*3)+52

//global counter
int counter = 0;
int hour=0,minute=0,second =0,tens=0,units=0;
int CLOCKATTR=3,showclock=1;

char *daiclock = "lyndon smith testing clock interrupt";


//the new ISR, will be called automatically every 18.2 ms once installed


void TickHandler(void)
{
counter++;
if(counter==18)
{
counter=0;
if(showclock==1)
{
second++;
if(second==60) {minute++;second=0;}
tens=second/10;
units=second-(tens*10);
_farpokeb(_dos_ds, 0xB800*16+12+CLOCKOFFSET,'0'+tens);
_farpokeb(_dos_ds, 0xB800*16+12+CLOCKOFFSET+1,CLOCKATTR);
_farpokeb(_dos_ds, 0xB800*16+14+CLOCKOFFSET,'0'+units);
_farpokeb(_dos_ds, 0xB800*16+14+CLOCKOFFSET+1,CLOCKATTR);
_farpokeb(_dos_ds, 0xB800*16+10+CLOCKOFFSET,':');
_farpokeb(_dos_ds, 0xB800*16+10+CLOCKOFFSET+1,CLOCKATTR);
if(minute==60) {hour++;minute=0;}
tens=minute/10;
units=minute-(tens*10);
_farpokeb(_dos_ds, 0xB800*16+6+CLOCKOFFSET,'0'+tens);
_farpokeb(_dos_ds, 0xB800*16+6+CLOCKOFFSET+1,CLOCKATTR);
_farpokeb(_dos_ds, 0xB800*16+8+CLOCKOFFSET,'0'+units);
_farpokeb(_dos_ds, 0xB800*16+8+CLOCKOFFSET+1,CLOCKATTR);
_farpokeb(_dos_ds, 0xB800*16+4+CLOCKOFFSET,':');
_farpokeb(_dos_ds, 0xB800*16+4+CLOCKOFFSET+1,CLOCKATTR);
if(hour==99) hour=0;
tens=hour/10;
units=hour-(tens*10);
_farpokeb(_dos_ds, 0xB800*16+0+CLOCKOFFSET,'0'+tens);
_farpokeb(_dos_ds, 0xB800*16+0+CLOCKOFFSET+1,CLOCKATTR);
_farpokeb(_dos_ds, 0xB800*16+2+CLOCKOFFSET,'0'+units);
_farpokeb(_dos_ds, 0xB800*16+2+CLOCKOFFSET+1,CLOCKATTR);
}
}
}

void junk(void)
{
}


int main(void)
{
//structures to hold selector:offset info for the ISRs
_go32_dpmi_seginfo OldISR, NewISR;
int i,j,limit;

//lock the functions and variables
LOCK_FUNCTION(TickHandler);
LOCK_VARIABLE(counter);
LOCK_VARIABLE(second);
LOCK_VARIABLE(minute);
LOCK_VARIABLE(hour);
LOCK_VARIABLE(tens);
LOCK_VARIABLE(units);
LOCK_VARIABLE(CLOCKATTR);
LOCK_VARIABLE(showclock);

//load the address of the old timer ISR into the OldISR structure
_go32_dpmi_get_protected_mode_interrupt_vector(TIMER, &OldISR);

//point NewISR to the proper selector:offset for handler
//function
NewISR.pm_offset = (int)TickHandler;
NewISR.pm_selector = _go32_my_cs();

//chain the new ISR onto the old one so that first the old
//timer ISR
//will be called, then the new timer ISR
_go32_dpmi_chain_protected_mode_interrupt_vector(TIMER,&NewISR);

//notice no changes to counter in this loop- the interrupt changes it
clrscr();
gotoxy(13,7);printf("Lyndon's interrupt clock routine for DJGPP 32bit C");
i=9;
srand(time(0));
while (!kbhit())
{
i++;
if (i>20) i=9;
gotoxy(10,i);limit=1+rand() % 60;
for(j=0;j }

printf("Removing new ISR from the timer ISR chain\n");

//load the old timer ISR back without the new ISR chained on
_go32_dpmi_set_protected_mode_interrupt_vector(TIMER,&OldISR);

return 0;
}

Sunday, 13 June 2010

HMS Scott docked





Visited Cardiff Bay, went to see HMS Scott. A very big ship,you could go on board and have a look around,if you wanted to climb up the many high gang way stairs. Kids could man the machine guns, you could hear the clicking from below.





Sunday, 6 June 2010

Linux

I was asked to set up Windows XP on a DELL Latitude E5500 laptop ,after a user cleared their data off it.But the laptop kept freezing up, so I installed Xubuntu. It worked very well, Wifi and sound configured straight away! Played DVD and audio CD's OK.