simons' basic *
-
14 ya$inda adi simon olan bir cocuk tarafindan yazilmi$, (bkz: commodore 64)'un basic v2'sine super disk, grafik, ses ve degi$ken komutlari ekleyen unofficial cbm-basic release'i.
-
-
14 yasinda programi yazmis cocugun ilerde hayatina renk getirip bill gates olmasina fayda saglayip saglamadigini merak ettigim release.ne yapiyor acaba simon su an? burnunu karistirmiyor umarim.
-
yukleyince free basic ram ~38 kb'den ~31 kb'ye duserdi.
quick reference card'i huzurlarinizda, hani olur da c64'de programlama yapmak isteyenleriniz olur diye. project 64'e tesekkurlerimi iletiyorum.
key
format: key number,"code"
purpose: to assign a command to function key
example: key 8,"run"<return>
display
format: display
purpose: to list the command assigned to the function keys
example: display<return>
auto
format: auto start-line-number,increment
purpose: to automatically generate program line numbers
example: auto 10,5<return>
renumber
format: renumber start-line-number,increment
purpose: to automatically renumber all program lines
example: renumber 100,10<return>
pause
format: pause"message",number-of-seconds
or: pause number of seconds
purpose: to stop program execution for a specific interval
example: pause 10
cgoto
format: cgoto expression
or: cgoto operand-operator-variable
purpose: to compute the line number to which the program should go
example: cgoto i*10+40
reset
format: reset line number
purpose: to move data pointers to a specific line of data
example: reset 100
merge
format: merge"program name",devicenumber
purpose: to load the program and incorporate it to current program
example: merge"additional",8
page
format: page n
purpose: to divide a program listing into 'pages' of n lines
example: page 5<return>
option
format: option n
purpose: to highlight in listing all simon's commands
example: option 10 (to start)
option 0 (to return to normal listing)
delay
format: delay n
purpose: to vary the rate of scrolling of a program listing
example: delay 10<return> (a large value of 'n' cause a slower scrolling)
or: delay 0<return> (to return to normal listing)
find
format: findcode
or: findstring
purpose: to search a basic program for a given code or string and display
the numbers of program lines where it appears
example: findabcd<return>
trace
format: trace n
purpose: to display the number of program line being executed
example: trace 10<return>(to turn on trace mode)
trace 0<return>(to turn off trace mode)
retrace
format: retrace
purpose: to recall the last trace window on screen
example: retrace<return>
dump
format: dump
purpose: to display the values of all non-array variables
example: dump<return>
cold
format: cold
purpose: to reset c-64 to the start of simon's basic
example: cold<return>
disapa
format: disapa:
purpose: to indicate that the code in a program line is to be hidden
example: 10 disapa: print"program example"
secure
format: secure 0
purpose: to hide all program lines, beginning with the disapa command
example: secure 0<return>
old
format: old
purpose: to reverse the new command
example: old<return>
insert
format: insert("substring","mainstring",p)
purpose: to insert one character string to another
p indicate the position in mainstring after which the substring
is inserted. the insert command may also be used to compare two
character string using 'true/false' logic (-1 if true and 0 if
false).
example: a$=insert("bye","good he said",5)
or: a=(insert("bye","good he said",5)=good bye)
inst
format: inst("substring","mainstring",p)
purpose: to overwrite a string beginning at a specific position
(specified by p). see also insert command
example: a$=inst("better",b$,7)
place
format: place("substring","mainstring")
purpose: to determine the position of a substring within a mainstring. if
the group specified by sub string is found, the position of the
first character of the group is returned. if a match is not
found a value of zero is returned.
example: b=place(a$,b$)
dup
format: dup("string",n)
purpose: to duplicate a character string n times
example: a$=dup("hello",3)
center
format: center"character string"
purpose: to center a character string on a screen line
example: center"commodore 64"<return>
at
format: print at(c,r)"character string"
purpose: to print a string at a specified screen location.
the parameters c and r define the column and row coordinates of
the location on the screen where the string begin.
example: print at(13,8)a$
lin
format: lin
purpose: to determine the cursor position in a line
example: a=lin
use
format: use"####.###",a$
or: use"##text.###text",a$
purpose: to format numeric data.
the amount of hash signs (#) either side of the decimal point
instruct the c-64 to display the corresponding number of figures
from the string relative to this position.
use command do not force carriage return.
example: use"$###.##c",d$:print
fetch
format: fetch"control character",i,designated-string
purpose: to limit the type and number of character for user input.
the control character within quotation marks determines the
types of characters allowed.
control character valid characters
clr/home un-shifted alphabetic character
crsr down numeric character only
crsr right alphanumeric and shifted character
parameter i is the number which specifies the maximum amount of
characters that the user may enter.
example: fetch"<clr/home>",9,a$
inkey
format: inkey
purpose: to test for a function key input
example: a=inkey
on key
format: on key"character(s)":goto linenumber
purpose: to branch to a specific point in a program.
the on key command cause the c-64 to scan the keyboard for input
of one of character defined in the command. when on key command
is executed, the disable command must be used.
example: on key"asdfghjk":goto 20
disable
format: disable
purpose: to terminate the on key command
example: 50 disable
resume
format: resume
purpose: to reinstate the previous on key command
example: 20 resume
mod
format: mod(x,y)
purpose: to return the remainder when one integer is divided by another
example: g=mod(15,4)
div
format: div(x,y)
purpose: to return the largest integer which, when multiplied by y is
equal to or less than x
example: a=div(10,3)
frac
format: frac(n)
purpose: to return the fractional part of a number
example: a=frac(12.456)
%
format: %binary-number
purpose: to convert from 8-bit binary to decimal
example: t=%11000111
$
format: $hexadecimal-number
purpose: to convert from 16-bit hexadecimal into decimal
example:k=$f3ea
exor
format: exor(n,n1)
purpose: to perform an exclusive 'or' between two number
example: l=exor(87,45)
disk
format: disk"operation"
purpose: to open a diskette channel and close it then the operation is
executed
example: disk"i"<return>
dir
format: dir"$
or: dir"$:pattern
purpose: to list some or all of diskette directory
example: dir"$<return>
plot types:
hires mode:
0 clear the dot
1 plot a dot on the screen
2 inverse a dot
multi-color mode:
0 clear the dot
1 plot a dot in colour 1
2 plot a dot in colour 2
3 plot a dot in colour 3
4 inverses the dot colour
size of hires screen is 320 x 200 pixels
size of multi-color screen is 160 x 200 pixels
colour
format: colour bo,sc
purpose: to set up the screen background and border colours.
the parameter sc refers to the screen background colour and
the parameter bo to the border colour.
example: 10 colour 1,6
hires
format: hires pc,sb
purpose: to initialize the high-resolution graphics mode and select a
plotting colour and screen background colour
example: 30 hires 0,1
rec
format: rec x,y,a,b,plot-type
purpose: to draw a rectangle.
the x and y specify the coordinates of top left corner of
the rectangle. the parameter a indicate the distance from the
top left to the top right corner and b from the top left to
the bottom left corner.
example: 40 rec 0,0,40,20,1
multi
format: multi c1,c2,c3
purpose: to initialize the multicolor graphics mode and select three
plotting colours.
the multi command must follow the hires command.
example: 50 multi 0,2,6
cset 2
format: cset 2
purpose: to view the graphics screen without clear
example: cset 2
nrm
format: nrm
purpose: to clear a high-resolution screen and return to a low-resolution
screen
example: 60 nrm
low col
format: low col c1,c2,c3
purpose: to change plotting colours
example: 70 low col 3,4,5
hi col
format: hi col
purpose: to revert to the originally plotting colour
example: 70 hi col
plot
format: plot x,y,plot type
purpose: to plot one dot
example: 80 plot 34,56,1
test
format: test(x,y)
purpose: to determine if something has been drawn at a screen location
example: 90 if test(r,i)=1 then goto 10
line
format: line x,y,x1,y1,plot-type
purpose: to plot a line.
the parameters x and y are screen coordinates of the start
of the line, the x1 and y1 are the coordinates of the end of
the line.
example: 100 line 0,0,320,200,1
circle
format: circle x,y,xr,yr,plot-type
purpose: to plot a circular shape.
the parameters x and y specify the screen coordinates of the
center of the circle. the parameters xr and yr indicate the
horizontal and vertical radius of the shape respectively.
example: 110 circle 20,20,10,10,1
arc
format: arc x,y,sa,ea,i,xr,yr,plot-type
purpose: to draw an arc of a circular shape.
the x and y are the screen coordinates of the center of
shape from which the arc is draw, sa and ea define the start
and end angles of the arc, the parameter i specifies the
plotting increment, i.e. the interval in degrees between each
point. to obtain a solid arc, this value is 1, xr and yr
indicate the horizontal and vertical radius of circular shape.
example: 120 arc 160,100,x,40*1.4,1,4,40,1
angl
format: angl x,y,angle,xr,yr,plot-type
purpose: to draw the radius of a circle.
the parameters x and y are the screen coordinates of the
center of the circle. 'angle' is the angle in degrees, at
which the radius is draw relative to the perpendicular.
also see circle command.
example: 130 angle 20,30,2,a,d,1
paint
format: paint x,y,plot-type (0,1,2,3 only)
purpose: to fill an enclosed area with colour.
the area to be painted must be completely enclosed.
the area to be painted is specified by x and y coordinate of
any point within the boundaries.
example: 140 paint 130,70,1
block
format: block x,y,x1,y1,plot-type
purpose: to draw a fully shaded block of colour.
the parameters x and y specify the top left-hand corner of the
block of colour. parameters x1 and y1 are the coordinates of the
bottom right-hand corner of the block.
example: 150 block 10,50,50,90,1
draw
format: block "graphic string",x,y,plot-type
purpose: to draw complex objects.
the parameters x and y specify the starting point of draw. the
graphic string specifies to which direction draw:
code function plot
0 right no
1 up no
2 down no
3 left no
4 down no
5 right yes
6 up yes
7 down yes
8 left yes
9 stop draw
graphic string stops executing by end or 9.
the scale and rotation specified by rot command.
example: draw "5678",160,100,1 or draw a$,160,100,1
rot
format: rot f,n
purpose: to set rotatation angle and scale factor for draw command.
the parameter f specify the rotation angle (default 0):
f angle
0 0
1 45
2 90
3 135
4 180
5 225
6 270
7 315
the parameter n specifies the scaling factor (default 1).
example: rot 0,20
char
format: char x,y,c,plot-type,s
purpose: to print a single character on a graphics screen.
the parameters x and y specify the coordinates of character. the
parameter s specifies the character in the range 1 thru 8.
example: char 160,100,2,1,3
text
format: text x,y,"<ctrla>character string",plot-type,s,i
or: text x,y,"<ctrlb>character string",plot-type,s,i
purpose: to print a character string on a graphics screen.
the parameters x and y specify the coordinates of the first
letter of the string. the control character preceding the
string indicates whether the text is to be displayed in upper
(a) or lower (b) case letters. the parameter s specifies the
height of each character in the range 1 thru 8. the parameter
i defines the number of pixels between each character.
example: text 60,20,"<ctrla>text on hires",1,2,10
graphics
format: graphics
purpose: to return the base address of vic (53248 dec or $d000 hex)
example: g=graphics or poke graphics+32,4
bckgnds
format: bckgnds sc,c1,c2,c3
purpose: to change the background colour of a character.
the parameter sc defines the colour of the screen. the next
three parameters specify the background colour of a shifted
character, a reverse-field unshifted character and a reverse
field shifted character respectively.
example: bckgnds 1,3,5,6
flash
format: flash col,speed
purpose: to flash a defined by 'col' a screen colour
example: flash 2,10
off
format: off
purpose: to turn the flash command off
example: off<return>
bflash
format: bflash speed,c1,c2
or: bflash 0
purpose: to flash or turn off flashing the screen border.
the parameters c1 and c2 are the numbers of the colours with
which the border will be flashed.
example: bflash 25,2,110
fchr
format: fchr r,c,w,d,code
purpose: to fill an area of the screen with a character.
the parameters r and c are the row and column coordinates of
the start. the parameters w and d define the width and depth
of the screen area. 'code' is the 'poke' code of the character.
example: fchr 0,0,10,30,1
fcol
format: fcol r,c,w,d,colour
purpose: to change a character colour.
see also previous section.
example: fcol 12,15,5,5,2
fill
format: fill r,c,w,d,code,colour
purpose: to fill a defined area of the screen with a specific character
in a particular colour.
example: fill 12,15,5,5,2,4
move
format: move r,c,w,d,dr,dc
purpose: to duplicate a section of the screen.
the first four parameters define the screen area to
reproduce (see the fchr command). the last two parameters
specify the row and column coordinates of the top left corner
of the area into which the information will be reproduced.
example: move 0,0,17,5,15,20
inv
format: inv r,c,w,d
purpose: to display in reverse field a specified screen area.
example: inv 1,2,19,4
'scrolling'
format: direction w,sr,sc,ec,er
or: direction b,sr,sc,ec,er
purpose: to scroll an area of the screen.
the first parameter in a scrolling command specifies the
direction of scrolling - left, right, up or down. the second
command parameter (w or b) indicate scrolling with 'wrap
round' or 'blanking' respectively.
the parameters: sr and sc define the row and column
coordinates of the start of the area to scroll. ec and er
specify height and width of area.
scrsv
format: scrsv 2,8,2,"name,s,w"
or: scrsv 1,1,1,"name"
purpose: to store data from a low-resolution screen.
the format of scrsv is the same as save command.
example: scrvs 2,8,2,"tricolor,s,w"
scrld
format: scrld 2,8,2,"name"
or: scrld 1,1,0,"name"
purpose: to recall stored screen data
example: scrld 2,8,2,"tricolor"<return>
copy
format: copy
purpose: to produce a hard copy of a graphics screen
example: copy<return>
hrdcpy
format: hrdcpy
purpose to print a hard copy of a low-resolution screen.
example: hrdcpy<return>
design
format: design c,ad
or: design c,ad+gc
purpose: to allocate memory space for a mob.
c=0 specifies a high-resolution mob, c=1 specifies a multi
colour mob. the second parameter ad defines the start address of
the first byte of mob data. this number must be a multiple of 64
within the range 2048 to 16319 and can be entered in decimal or
hexadecimal form. if a mob is to be used on a high-resolution
screen, the graphics constant value of 49152 decimal or $c000
(gc) must be added. each 64-byte area is called a block. the
block numbers, available for mob are: 32 - 63 or 128 - 255.
the gc value must not be added to start address when calculating
a block number.
example: 10 design 1,$0800 (note: block number is 32)
@
format: @........................
or: @............
purpose: to set up the design grid for a mod.
the grid is 24 dot wide for hires mobs and 12 dot wide for
multicolour mobs, the grid is 21 lines deep.
the colour for each point of the mob are assigned by using one
of the characters:
hires mobs b the colour assigned in the mob set
command.
multicolour
mobs b colour 1 in the cmob command
c the colour assigned in the mob set
command
d colour 2 in the cmob command.
example of one of 21 lines:100 @.......bbbb....bbbb.....
cmob
format: cmob c1,c2
purpose: to set up colours for a multicolour mob
example: 600 cmob 0,5
mob set
format: mob set mn,blk,col,pr,res
purpose: to set up a mob.
the parameter mn specifies the number of the mob. the blk
defines the memory block from which the mob data will be
taken. the next parameter, col, defines the main mob colour.
the pr specifies the priority of the mob over screen data. a
'0' give the mob priority, a '1' give screen priority. the
res indicates whether the mob was created in multicolour (1)
or hires mode (0).
example: 700 mob set 0,32,0,1,0
mmob
format: mmob mn,x1,y1,x2,y2,expansion,speed
purpose: to display and/or move a mob
the parameters x1 and y1 are the coordinates of the point where
the mob will be displayed before it is moved.
x2 and y2 indicate the mob destination point.
expansion result
0 the mob is displayed in normal size
1 the mob is expanded in the x axis.
2 the mob is expanded in the y axis.
3 the mob is expanded in both axes.
the speed is the number in the range 1 thru 255. 1 is the
fastest speed.
example: 800 mmob 1,0,0,200,200,2,20
rlocmob
format: rlocmob mn,x,y,expantion,speed
purpose: to move the mob between two screen location.
the parameters x and y are the coordinates of the point to which
the mob will be moved.
example: 830 rlocmob 1,x,200,2,10
detect
format: detect n
purpose: to initialize mob collision detection
n=0 cause to detect collision between one mob and another. if
n=1 collision detection between mobs and screen data is
initialized. the detect command must always be used twice.
example: 825 detect 0
check
format: if check(mn1,mn2)=0 then action
or: if check(0)=0 then action
purpose: to check for mob collision.
a parameter of zero within brackets cause to check collisions
between any sprite and screen data.
example: 859 detect 0: if check(0,1)=0 then 865
mob off
format: mob off mn
purpose: to clear a mob from the screen
example: mob off 1
mem
format: mem
purpose: to move the character rom to ram
example: 10 mem
design
format: design 2,$e000+ch*8
purpose: to specify the character which a user-defined graphics character
is to replace. the parameter ch is the poke code of the
character to be changed.
example: 20 design 2,$e000+26*8
@
format: @........
purpose: to set up a grid for the design of a user-defined character.
the grid is 8 dots wide and 8 lines deep. the new character is
designed by placing a letter 'b' over the appropriate dot on the
grid.
cset 0/1
format: cset 0 or cset 1
purpose: to switch between character sets
example: cset 0
if...then...else
format: if condition then true:else:false
purpose: to test for a condition and branch to one instruction if the
condition is true or to another instruction if the condition
is false.
example: 10 if a$=n then 70:else:goto 30
repeat...until
format: repeat loop until condition is met
purpose: to perform a program loop until a specified condition is met
example: 10 repeat:print chr$(a):a=a+1:until a>70
rcomp
format: rcomp:true:else:false
purpose: to re-execute the last if...then...else condition test
example: rcomp:print a$:else:a=a+1
loop...exit if...end loop
format: loop program loop exit if condition true end loop
purpose: to perform a continuos loop until a specified condition is met
example: 20 loop:a=a+1
....
....
80 exit if asc(a$)>70
....
....
200 end loop
proc
format: proc name
purpose: to label a program routine.
note(*). proc and the procedure name must not be followed by any
other code on the same program line.
example: 100 proc input name
end proc
format: end proc
purpose: to indicate the end of procedure.
this command acts in the same way as return in standard basic.
example: 130 end proc:a=23
call
format: call procedure name
purpose: to transfer program execution to a specific line of code.
the call command acts in the same way as goto in standard basic.
see also the note '*'.
example: call input name
exec
format: exec procedure name
purpose: to call a program routine and return to the line following the
call when the procedure has been completed.
exec perform the same function as gosub in standard basic.
see also the note '*'.
example: exec sort
local
format: local variable1,variable2,......
purpose: to clear the value of previously defined variables on a
temporary basis and then use these variables locally within
a specific program routine.
warning: the variables defined with local command must have
previously been declared to avoid program 'hanging'.
example: local a$,s,g%
global
format: global
purpose: to restore original values to local variables
example: global
on error
format: on error:goto line number
purpose: to trap program error.
when an error is found, the program jumps to the line
specified with the goto. the error number is held in the
variable errn. the line in which the error has occured is
held in the variable errln. after testing for a specific error
the out command always must be used.
error number error
1 to many files
2 file open
3 file not open
4 file not found
5 device not present
10 next without for
11 syntax
12 return without gosub
13 out of data
14 illegal quantity
15 overflow
16 out of memory
17 undefined statement
18 bad subscript
19 re-dimensioned array
20 division by zero
21 illegal direct
22 type mismatch
23 string too long
example: 100 on error:goto 100
out
format: out
purpose: to disable the last on error command
example: out<return>
no error
format: no error
purpose: to re-enable the normal error-handling routines
example: 100 no error
penx
format: variable=penx
purpose: to return the x coordinate of the light pen (on the range 0-320)
the penx value must always be read before that of peny.
peny
format: variable=peny
purpose: to return the y coordinate of the light pen (on the range 0-200)
example: 100 x=penx:y=peny
pot
format: variable=pot(n)
purpose: to return the resistance of a paddle.
the number returned is in range 0 thru 255. n define the paddle.
example: 100 pa=pot(0)
joy
format: variable=joy
purpose: to return the value associated with the position of a joystick.
if the 'fire button' is pressed, the returned value is 128.
1
8 ^ 2
|
7 <-+-> 3
|
6 | 4
5
example: if joy=3 then 100
vol
format: vol n
purpose: to select music volume.
volume levels range from 0 thru 15. 0 turn the sound off.
example: 100 vol 10
wave
format: wave voice number,binary-number
purpose: to set the music voice type
bit 0 - the gate bit
bit 1 - synchronization
bit 2 - ring modulation
bit 3 - the test bit
bit 4 - triangular waveform
bit 5 - sawtooth waveform
bit 6 - pulse/square waveform
bit 7 - noise
refer to the commodore 64 programmer's reference guide
example: 100 wave 1,00010000
envelope
format: envelope vn,a,d,s,r
purpose: to define the 'shape' of a sound
the parameter vn is the number of the voice. the parameters
a, d and r specify, respectively, the duration of the attack,
decay and release cycles. the duration of these cycles are
measured in units of one thousandth of a second. refer to
commodore 64 reference guide for more details.
music
format: music n,"music string"
or: music n,variable+variable+.....
purpose: to write music or create sound effects.
the parameter n specifies the duration of one music beat.
this number must be in range 1 thru 255. 1 is the longest
duration. the voice through which the note is specified by
pressing shift key, clr/home key and relevant voice number.
only one voice can be used in an string.
music note are in the range a thru g. c is the first note in
each octave. a music sharp is defined by holding down the
shift key and pressing the letter of relevant note. music
rest are indicated by letter z. the octave in which the note
will be played is defined after the note by a number from 0
thru 8. the duration of each note is specified by a control
character following the octave number.
control character note duration
f1 one sixteen of a beat
f3 one eighth of a beat
f5 one quarter of a beat
f7 half a beat
f2 one beat
f4 two beats
f6 four beats
f8 eight beats
the last letters in music string must be the shift clr/home
and the letter g.
example: 30 a$="<shift clr/home>1z<f1>c5<f1>e5<shift clr/home>g"
40 music 8,a$
play
format: play n
purpose: to play composed music.
the parameter n indicate how the music will be played in
relation the rest of the program. a '0' in this position turns
music off. a '1' plays the music and waits for it to end before
proceeding with the program. a '2' plays the music and continues
executing the program.
note: play 2 cannot be used in conduction with high-resolution
or multi-colour graphics.
sound
format: sound
purpose: to return the base address of sid (54272 dec or $d400 hex)
example: s=sound or poke sound+24,0 -
yuklendikten sonra 'list' yazip return'e basinca tum kod kabak gibi geliyordu. kod gordugumde hayretler icinde ilk kali$im o gune tekabul eder.
-
simon's basic, richy ve ralf gunlerimize tekabul eder. simon'in koduyla karsilasan cocuklar richi ve ralf'te fbi'nin sitesine modemle giren richy'iyle cosardi. programciliginin ilk adimi olan meshur sayi tahmini programini commodore 64 kilavuzundan bakarak yazmaya calismam o gunlere rastlar. kucuk ellerimizde 20 satirlik programi on kere yazar, her defasindan bir tirnak, bir noktali virgul bir ufacik-tefecik hatadan dolayi syntax error'i alirdik. zamanla ustalastik, on parmak daktilo kursuna gitmis gibi olduk. simdiki cocuklar bir harika degil bana gore. bu is disketi yuvasina ittirmekten ibaret degildi eskiden, sevgiyle, sabirla oya gibi islenmek isterdi. kiymetini bilemedik o guzelim gunlerin, nostaljiya nostaljiya, nausea nausea olmadan kesmek isterim ve derim ki aziz nesin'in zamanindaki cocuklar harikaydi.
-
1982 yilinda 16 ya$indaki david simons tarafindan yazilmi$tir.
-
sanirim ilkokul 4 e gidiyorken komsunun odunc verdigi c64 e uskudar uncular carsisinin sonundan sola donup 200 metre yuruyerek ulastigimiz commodore, amiga dukkani olan huysuz ihtiyar bir amcadan (rahmetli bir keresinde bir kartusu kendisinde olmadigi icin nereden bulabilirim diye masumca sormama karsilik "arayan mevlasini da bulur belasini da" diye bir cevap vermisti hic unutmam) kasetlere oyun yukletip kafa ayari yaptirirken bir de eski commodore dergileri almaya baslamistim. bu dergilerde bir de simons' basic bolumu vardi. neyse ben o zamanki merakla bunlari alip simons'in ready sini gorur gormez 10 20 30 diye kodlari cakmaya basladim sabahtan aksama. butun gun tv karsisinda kafayi yedigimi dusunen babam; sanirim bakalla falan da gitmez olmustum, ekranda da sacma sapan sekilleri gorunce nush ile uslanmam konusunda bana on ayak olmustu ve akabinde hakkim olan tektiri de goren ben birakmistim o isleri. sonra kendinin tabiriyle en eski bilgisayarcilardan marjinal amcam babama cok kizmisti bunu duydugunda ama is isten gecmisti. neyse bu sayede ben de elektrikci oldum, hem herkesin atlayamayacagi; daha az rekabet daha cok kazanc ihtiva eden bir sektorde calisiyorum simdi pederin sayesinde.
ekşi sözlük kullanıcılarıyla mesajlaşmak ve yazdıkları entry'leri
takip etmek için giriş yapmalısın.
hesabın var mı? giriş yap