about-clare

The boring self importance rubbish.

Well I was born in 1967 in Reading, Berkshire and initially lived in Theale just down the road. Over the years we moved because of my dads job. We moved to Caversham which is a part of Reading, then moved to Slough. In 1977 we moved again to Stourport in Worcestershire, and stayed there until 1984 when I finsihed school.

My parents divorced in about 1980 and my dad ended up in Shrewsbury and remarried. I started using computers in 1982 while at school. These days it was the BBC Micro.

After leaving school in 1984 I moved back down to Theale, and in the late 80s or early 90s I got hold of a Sinclair Spectrum.

This was my first home computer, which plugged into your TV. Its where I learned how to type, program and other basic computer skills. Back then speccy games were not protected. You pressed the Break key and could list the program. I very quickly learned how to change code and alter the games to make them easier, and more winable.

I then progressed to the Amstrad CPC, then onto an old 286 PC and finally upto a Pentium PC. I now have a Lenovo netbook. It was on the PC's that I taught myself how to rip apart, rebuild and the basics of PC repairs.

Ive used Microsoft Windows since ver 3.x and Dos 6.22. Then in 1999 I decided to drop myself into the world of web design, by offering the Berkshire Elvis fanclub my services to build them a website. Id never done web design before, so quickly had to learn, and you see the results today of my own home schooling.

Now forward to about 2004 and my sudden desire to look at Linux. Over the last 16 years Ive had to learn the hard way of how to install a Linux distro, how (not) to dual boot with Microsoft Windows, and how to partition Hard Discs. Ive built a Linux firewall server using Clearos; an intranet server using Ubuntu with mysql, and many triple boot desktop PCs

Ive had some interesting hobbies. I decided to start horse riding. Ended up working in a private racing yard which had quite a few thoroughbred horses, some nutters and some OK. Shovelling horse shit and fighting with an unbroken yearly, who wants to rip out your throat, is a great way to spend your weekends and keep fit.

Now all I have to do is decide what new project I wish to try out.

Heres a Speccy Basic program listing. Lines 7020 to 7120 is a small amount of Data, some of the programs from the speccy magazines had about 6 times the lines of Data which had to be entered.

1 LET hi=0: GO SUB 7000
5 PAPER 5: CLS
10 LET c=14
20 LET sub=0
30 LET f1=0: LET f2=0
40 PRINT AT 4,0;"______________ ______________" 50 BORDER 2
60 FOR n=5 TO 21
70 PRINT AT n,0; PAPER 1;" "
80 NEXT n
90 LET d=.9
100 LET score=0
110 PRINT AT 0,0; PAPER 2;"SCORE=00000-------HI-SCORE=00000-----------LIVES=3--------------"
120 LET subm=0
130 LET lives=3
140 PRINT PAPER 2;AT 0,28+(hi<1000)+(hi<100)+(hi<10);hi 150 INPUT ""
1000 LET z$=CHR$ PEEK 23556
1010 IF z$="5" AND c>0 THEN LET c=c-1: PRINT AT 4,c;" _"
1020 IF z$="8" AND c<28 THEN LET c=c+1: PRINT AT 4,c-1;"_ "
1030 IF f1=1 THEN GO SUB 2500
1040 IF f2=1 THEN GO SUB 3500
1050 IF z$="1" AND f1=0 THEN IF
c>0 THEN GO SUB 2000
1060 IF z$="2" AND f2=0 THEN IF c<28 THEN GO SUB 3000
1070 IF sub=0 AND RND>d THEN LET sub=1: GO SUB 4000: GO TO 1090
1080 IF sub=1 THEN GO SUB 4500
1090 PRINT AT 0,7+(score<1000)+(
score<100)+(score<10); PAPER 2;score
1100 IF sub=1 AND subm=0 AND RND>d THEN GO SUB 5000: GO TO 1120
1110 IF subm=1 THEN GO SUB 5500
1120 IF lives=0 THEN GO TO 9000
1130 GO TO 1000
2000 REM init f1
2010 LET f1=1
2020 LET l1=5
2030 LET c1=c-1
2500 REM f1
2510 LET l1=l1+1
2520 IF SCREEN$ (l1,c1)<>" " THEN GO TO 2700
2530 IF l1=21 THEN GO TO 2900
2540 PRINT AT l1-1,c1; PAPER 1;" ";AT l1,c1;" "
2550 RETURN
2700 REM bang f1
2710 LET sub=0
2720 LET f1=0
2730 PRINT AT l1-1,c1; PAPER 1;" ";AT l1,c1; PAPER 2; INK 6; FLASH 1;" "
2740 FOR i=1 TO 10: NEXT i
2750 PRINT AT sl,sc; PAPER 1;" "
2760 LET score=score+10*sl
2770 LET d=d-.05+.05*(d=0)
2780 RETURN
2900 REM boom f1
2910 PRINT AT l1-1,c1; PAPER 1;" ";AT l1,c1; PAPER 2; INK 6; FLASH 1;" "
2920 FOR i=1 TO 10: NEXT i
2930 PRINT AT l1,c1; PAPER 1;" "
2940 LET f1=0
2950 RETURN
3000 REM init f2
3010 LET f2=1
3020 LET l2=5
3030 LET c2=c+4
3500 REM f2
3510 LET l2=l2+1
3520 IF SCREEN$ (l2,c2)<>" " THEN GO TO 3700
3530 IF l2=21 THEN GO TO 3900
3540 PRINT AT l2-1,c2; PAPER 1;" ";AT l2,c2;" "
3550 RETURN
3700 REM bang f2
3710 LET sub=0
3720 LET f2=0
3730 PRINT AT l2-1,c2; PAPER 1;" ";AT l2,c2; PAPER 2; INK 6; FLASH 1;" "
3740 FOR i=1 TO 10: NEXT i
3750 PRINT AT sl,sc; PAPER 1;" "
3760 LET score=score+10*sl
3770 LET d=d-.05+.05*(d=0)
3780 RETURN
3900 REM boom f2
3910 PRINT AT l2-1,c2; PAPER 1;" ";AT l2,c2; PAPER 2; INK 6; FLASH 1;" "
3920 FOR i=1 TO 10: NEXT i
3930 PRINT AT l2,c2; PAPER 1;" "
3940 LET f2=0
3950 RETURN
4000 REM init sub
4010 LET sl=6+INT (RND*16)
4020 LET r=RND
4030 IF r>.5 THEN LET sd=-1
4040 IF r<=.5 THEN LET sd=1
4050 IF sd=-1 THEN LET sc=28
4060 IF sd=1 THEN LET sc=0
4070 LET sub=1
4500 REM sub
4510 IF (sc=1 AND sd=-1) OR (sc=27 AND sd=1) THEN GO TO 4700
4520 LET sc=sc+sd
4530 IF sd=1 THEN PRINT AT sl,sc-1; PAPER 1;" "
4540 IF sd=-1 THEN PRINT AT sl,sc; PAPER 1;" "
4550 RETURN
4700 REM sub stop
4710 LET sub=0
4720 PRINT AT sl,sc; PAPER 1;" "
4730 RETURN
5000 REM sub missile init
5010 LET sml=sl-1
5020 LET smc=sc+1
5030 LET subm=1
5500 REM sub missile
5510 LET sml=sml-1
5520 IF SCREEN$ (sml,smc)="" AND sml=4 THEN GO TO 6500
5530 IF sml=4 THEN GO TO 6000
5540 PRINT AT sml+1,smc; PAPER 1;" ";AT sml,smc;" "
5550 RETURN
6000 REM sub missile boom
6010 PRINT AT sml+1,smc; PAPER 2; INK 6; FLASH 1;" "
6020 FOR i=1 TO 10: NEXT i
6030 PRINT AT sml+1,smc; PAPER 1;" "
6040 LET subm=0
6050 RETURN
6500 REM sub missile bang
6510 PRINT AT 4,c; PAPER 2; INK6; FLASH 1;" "
6520 PRINT AT sml+1,smc; PAPER 1;" "
6530 FOR i=1 TO 30: NEXT i
6540 LET lives=lives-1
6560 PRINT AT 4,c;" "
6570 PRINT AT 1,17; PAPER 2;live s
6580 LET subm=0
6590 RETURN
7000 REM characters
7010 RESTORE 7010: FOR n=1 TO 11: READ a$: FOR m=0 TO 7: READ z: POKE USR a$+m,z: NEXT m: NEXT n: RETURN
7020 DATA " ",0,0,0,60,60,0,0,0
7030 DATA " ",145,82,52,7,224,44,74,137
7040 DATA " ",0,64,60,28,255,127,63,255
7050 DATA " ",0,53,53,127,255,255,255,255
7060 DATA " ",128,241,251,255,255,255,255,255
7070 DATA " ",0,2,28,156,255,254,252,255
7080 DATA " ",0,24,24,24,24,24,36,36
7090 DATA " ",0,0,0,0,127,255,255,127
7100 DATA " ",0,0,62,8,255,255,255,255
7110 DATA " ",126,126,126,126,255,255,255,255
7120 DATA " ",0,0,0,0,254,255,255,254
9000 PRINT AT 10,10; FLASH 1; PAPER 1; INK 7;"YOU ARE DEAD!"
9010 IF score>hi THEN LET hi=score: PRINT AT 12,10; INVERSE 1; FLASH 1; PAPER 1; INK 7;"NEW HIGH-SCORE!"
9020 PRINT AT 14,8; PAPER 1; INK 7; FLASH 1;"ANOTHER GAME Y/N?"
9030 IF INKEY$="y" OR INKEY$="Y" THEN GO TO 5
9040 IF INKEY$="n" OR INKEY$="N" THEN STOP
9050 GO TO 9030



1 REM ********************************************************************
2 REM ZXSnake by Federico J. Alvarez Valero (2003-02-05)
10 REM This program is free software; you can redistribute it and/or modify
11 REM it under the terms of the GNU General Public License as published by
12 REM the Free Software Foundation; either version 2 of the License, or
13 REM (at your option) any later version.
14 REM This program is distributed in the hope that it will be useful,
15 REM but WITHOUT ANY WARRANTY; without even the implied warranty of
16 REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 REM GNU General Public License for more details.
18 REM You should have received a copy of the GNU General Public License
19 REM along with this program; if not, write to the Free Software
20 REM Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
30 REM ENGLISH VERSION
40 REM ********************************************************************
50 BORDER 7 : PAPER 7 : INK 0 : CLS
51 PRINT AT 3,13 ; PAPER 1 ; INK 7 ; "ZXSnake"
52 PRINT AT 5,9 ; PAPER 7 ; INK 0 ; "Q - Up"
53 PRINT AT 6,9 ; PAPER 7 ; INK 0 ; "A - Down"
54 PRINT AT 7,9 ; PAPER 7 ; INK 0 ; "O - Left"
55 PRINT AT 8,9 ; PAPER 7 ; INK 0 ; "P - Right"
56 PRINT AT 10,3 ; PAPER 7 ; INK 0 ; "You have to pick up every"
57 PRINT AT 11,3 ; PAPER 7 ; INK 0 ; "fruit on the screen while"
58 PRINT AT 12,3 ; PAPER 7 ; INK 0 ; "growing up more and more..."
59 PRINT AT 15,3 ; PAPER 7 ; INK 0 ; "Press any key to start"
60 LET j$ = INKEY$
61 IF j$ = "" THEN GOTO 60: END IF
70 REM UDG
71 DIM udg(1, 7) AS uByte => { {60, 66, 129, 129, 129, 129, 66, 60}, _
{24, 60, 60, 60, 126, 251, 247, 126}}
73 POKE UINTEGER 23675, @udg(0, 0): REM Sets UDG variable to point to the first element
74 LET S$ = CHR$(144): LET F$ = CHR$(145)
75 REM Variable declaration
76 DIM p(23,34) AS UBYTE: REM Screen
77 DIM x(23,34) AS UBYTE: REM Xorientations
78 DIM y(23,34) AS UBYTE: REM Yorientations
79 DIM c, f AS UBYTE
80 DIM headx, heady AS UBYTE : REM Head coordinates
81 DIM tailx, taily AS UBYTE : REM Tail coordinates
90 DIM score, eaten as ULONG
95 DIM maxx, maxy, minx, miny as UByte
100 REM Variable definition
110 LET headx = 11 : REM head x coordinate
120 LET heady = 5 : REM head y coordinate
130 LET tailx = 5 : REM tail x coordinate
140 LET taily = 5 : REM tail y coordinate
150 LET orientationx = 1
160 LET orientationy = 0
165 REM Clear arrays p, x and y
170 FOR c = 1 to 23: FOR f = 1 to 34
180 LET p(c, f) = 0: LET x(c, f) = 0: LET y(c, f) = 0
190 NEXT f: NEXT c
200 LET score = 0
210 LET eaten = 0
220 LET maxx = 33
230 LET maxy = 22
240 LET minx = 0
250 LET miny = 0
1000 REM Screen Initialization
1010 BORDER 1
1015 CLS
1020 PRINT AT 21,0 ; PAPER 1 ; INK 7 ; " SCORE :
" 1030 FOR c = minx TO maxx
1040 LET p(miny+1,c+1) = 4
1050 LET p(maxy+1,c+1) = 4
1060 NEXT c
1070 FOR f = miny TO maxy
1080 LET p(f+1,minx+1) = 4
1090 LET p(f+1,maxx+1) = 4
1100 NEXT f
1500 GOSUB 8000 : REM Place first fruit
2000 REM Draw snake in its initial position
2001 PAPER 7 : INK 0
2005 REM Draw the body
2010 FOR c = tailx TO headx-1
2020 PRINT AT taily,c ; INK 0 ; "O"
2025 LET p(taily+2,c+2) = 3
2026 LET x(taily+2,c+2) = 1
2027 LET y(taily+2,c+2) = 0
2030 NEXT c
2040 REM Draw the Head
2050 PRINT AT heady,headx ; INK 0 ; S$;
2055 LET p(heady+2,headx+2) = 2
2056 LET x(heady+2,headx+2) = 1
2057 LET y(heady+2,headx+2) = 0
3000 REM Update snake position
3005 INK 0 3010 REM Change the orientation if needed
3015 LET x(heady+2,headx+2) = orientationx
3020 LET y(heady+2,headx+2) = orientationy
3025 REM Erase previous head
3030 PRINT AT heady,headx ; "O"
3035 LET p(heady+2,headx+2) = 3
3040 LET headx = headx + orientationx
3045 LET heady = heady + orientationy
3050 IF p(heady+2,headx+2) > 1 THEN GOTO 9900: END IF
3051 IF p(heady+2,headx+2) = 1 THEN
LET score = score + 10 : PRINT AT 21,10 ; _
PAPER 1 ; INK 7 ; score : LET eaten = 1 : GOSUB 8000: END IF
3055 REM Print the new head
3060 PRINT AT heady,headx ; S$;
3065 LET p(heady+2,headx+2) = 2
3070 IF eaten = 0 THEN GOSUB 8100: END IF
3080 LET eaten = 0
3200 REM Read the keyboard
3210 LET a$ = INKEY$
3220 IF orientationx < 1 AND (a$ = "O" OR a$ = "o") THEN
LET orientationx = -1 : LET orientationy = 0: END IF
3230 IF orientationx > -1 AND (a$ = "P" OR a$ = "p") THEN
LET orientationx = 1 : LET orientationy = 0: END IF
3240 IF orientationy < 1 AND (a$ = "Q" OR a$ = "q") THEN
LET orientationx = 0 : LET orientationy = -1: END IF
3250 IF orientationy > -1 AND (a$ = "A" OR a$ = "a") THEN LET orientationx = 0 : LET orientationy = 1: END IF 3500 REM Pausa / Delay
3505 BEEP 0.005, 0
3510 FOR i = 1 TO 500:
NEXT i
7998 GOTO 3000
8000 REM Fruit placement
8010 LET fruitx = INT(RND*30)+1
8020 LET fruity = INT(RND*20)+1
8030 IF p(fruity+2,fruitx+2) = 0 THEN GOTO 8050: END IF
8040 GOTO 8010
8050 PRINT AT fruity,fruitx ; INK 2 ; F$;
8060 LET p(fruity+2,fruitx+2) = 1
8070 RETURN
8100 REM Erase tail
8110 PRINT AT taily,tailx ; " "
8120 LET newtailx = tailx + x(taily+2,tailx+2)
8130 LET newtaily = taily + y(taily+2,tailx+2)
8140 LET p(taily+2,tailx+2) = 0
8150 LET x(taily+2,tailx+2) = 0
8160 LET y(taily+2,tailx+2) = 0
8170 LET tailx = newtailx
8180 LET taily = newtaily
8190 RETURN
9900 REM Game over
9910 PRINT AT 10,12 ; INK 2 ; "GAME OVER..."
9920 PRINT AT 11,10 ; INK 2 ; "SCORE : " ; score
9930 PRINT AT 13,10 ; INK 0 ; "Press any key"
9931 REM Mondatory pause so the msg. can be read
9932 FOR i = 0 TO 100
9933 NEXT i
9940 LET j$ = INKEY$
9950 IF j$ <> "" THEN GOTO 100: END IF
9960 GOTO 9940