şükela:  tümü | bugün
  • 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.
  • c64'un amos'u..
  • 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.
    format: key number,"code"
    purpose: to assign a command to function key
    example: key 8,"run"<return>

    format: display
    purpose: to list the command assigned to the function keys
    example: display<return>

    format: auto start-line-number,increment
    purpose: to automatically generate program line numbers
    example: auto 10,5<return>

    format: renumber start-line-number,increment
    purpose: to automatically renumber all program lines
    example: renumber 100,10<return>

    format: pause"message",number-of-seconds
    or: pause number of seconds
    purpose: to stop program execution for a specific interval
    example: pause 10

    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

    format: reset line number
    purpose: to move data pointers to a specific line of data
    example: reset 100

    format: merge"program name",devicenumber
    purpose: to load the program and incorporate it to current program
    example: merge"additional",8

    format: page n
    purpose: to divide a program listing into 'pages' of n lines
    example: page 5<return>

    format: option n
    purpose: to highlight in listing all simon's commands
    example: option 10 (to start)
    option 0 (to return to normal listing)

    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)

    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>

    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)

    format: retrace
    purpose: to recall the last trace window on screen
    example: retrace<return>

    format: dump
    purpose: to display the values of all non-array variables
    example: dump<return>

    format: cold
    purpose: to reset c-64 to the start of simon's basic
    example: cold<return>

    format: disapa:
    purpose: to indicate that the code in a program line is to be hidden
    example: 10 disapa: print"program example"

    format: secure 0
    purpose: to hide all program lines, beginning with the disapa command
    example: secure 0<return>

    format: old
    purpose: to reverse the new command
    example: old<return>

    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
    example: a$=insert("bye","good he said",5)
    or: a=(insert("bye","good he said",5)=good bye)

    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)

    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$)

    format: dup("string",n)
    purpose: to duplicate a character string n times
    example: a$=dup("hello",3)

    format: center"character string"
    purpose: to center a character string on a screen line
    example: center"commodore 64"<return>

    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$

    format: lin
    purpose: to determine the cursor position in a line
    example: a=lin

    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

    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$

    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

    format: disable
    purpose: to terminate the on key command
    example: 50 disable

    format: resume
    purpose: to reinstate the previous on key command
    example: 20 resume

    format: mod(x,y)
    purpose: to return the remainder when one integer is divided by another
    example: g=mod(15,4)

    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)

    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

    format: exor(n,n1)
    purpose: to perform an exclusive 'or' between two number
    example: l=exor(87,45)

    format: disk"operation"
    purpose: to open a diskette channel and close it then the operation is
    example: disk"i"<return>

    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

    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

    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

    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

    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

    format: nrm
    purpose: to clear a high-resolution screen and return to a low-resolution
    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

    format: plot x,y,plot type
    purpose: to plot one dot
    example: 80 plot 34,56,1

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    format: graphics
    purpose: to return the base address of vic (53248 dec or $d000 hex)
    example: g=graphics or poke graphics+32,4

    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

    format: flash col,speed
    purpose: to flash a defined by 'col' a screen colour
    example: flash 2,10

    format: off
    purpose: to turn the flash command off
    example: off<return>

    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

    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

    format: fcol r,c,w,d,colour
    purpose: to change a character colour.
    see also previous section.
    example: fcol 12,15,5,5,2

    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

    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

    format: inv r,c,w,d
    purpose: to display in reverse field a specified screen area.
    example: inv 1,2,19,4

    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.

    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"

    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>

    format: copy
    purpose: to produce a hard copy of a graphics screen
    example: copy<return>

    format: hrdcpy
    purpose to print a hard copy of a low-resolution screen.
    example: hrdcpy<return>

    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
    mobs b colour 1 in the cmob command
    c the colour assigned in the mob set
    d colour 2 in the cmob command.
    example of one of 21 lines:100 @.......bbbb....bbbb.....

    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

    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

    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

    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

    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

    format: mem
    purpose: to move the character rom to ram
    example: 10 mem

    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

    cset 0/1
    format: cset 0 or cset 1
    purpose: to switch between character sets
    example: cset 0

    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

    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

    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

    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

    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

    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

    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%

    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

    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

    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.

    format: variable=peny
    purpose: to return the y coordinate of the light pen (on the range 0-200)
    example: 100 x=penx:y=peny

    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)

    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.
    8 ^ 2
    7 <-+-> 3
    6 | 4
    example: if joy=3 then 100

    format: vol n
    purpose: to select music volume.
    volume levels range from 0 thru 15. 0 turn the sound off.
    example: 100 vol 10

    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

    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.

    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$

    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.

    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.