( a blank file ) %+ { ADD } %- { SUB } %* { MUL } %/ { DIV } %< { LTH } %> { GTH } %= { EQU } %! { NEQ } %++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 } %<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 } ( fixed-point ) %RESF { #0008 } %TO2F { RESF #0040 SFT2 SFT2 } %MUL2F { MUL2 RESF SFT2 } %DIV2F { SWP2 TO2F SWP2 DIV2 } %RTN { JMP2r } %TOB { SWP POP } %MOD2 { OVR2 OVR2 DIV2 MUL2 SUB2 } %MOD { DUP2 / * - } %SFL2 { #0040 SFT2 SFT2 } %DEBUG { .Console/byte DEO #0a .Console/char DEO } %DEBUG2 { .Console/short DEO2 #0a .Console/char DEO } %WIDTH { #0080 } %HEIGHT { #0080 } ( devices ) |00 @System [ &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 ] |10 @Console [ &pad $8 &char $1 &byte $1 &short $2 &string $2 ] |20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &color $1 ] |30 @Audio0 [ &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 ] |40 @Audio1 [ &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 ] |50 @Audio2 [ &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 ] |60 @Audio3 [ &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 ] |70 @Midi [ &vector $2 &channel $1 ¬e $1 &velocity $1 ] |80 @Controller [ &vector $2 &button $1 &key $1 ] |90 @Mouse [ &vector $2 &x $2 &y $2 &state $1 &chord $1 ] |a0 @File [ &vector $2 &success $2 &offset $2 &pad $2 &name $2 &length $2 &load $2 &save $2 ] |b0 @DateTime [ &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 ] ( variables ) |0000 @zoom $1 @iter $1 @fractal [ &c_re $2 &c_im $2 &x $2 &y $2 ] ( program ) |0100 ( -> ) ( theme ) #f840 .System/r DEO2 #f840 .System/g DEO2 #f840 .System/b DEO2 #20 .iter POK #04 .zoom POK #0000 #0080 &ver ( col ) OVR2 .Screen/y DEO2 #0000 #0080 &hor ( row ) OVR2 .Screen/x DEO2 ,mandelbrot JSR ( incr ) SWP2 #0001 ++ SWP2 OVR2 OVR2 LTH2 ,&hor JNZ POP2 POP2 ( incr ) SWP2 #0001 ++ SWP2 OVR2 OVR2 LTH2 ,&ver JNZ POP2 POP2 BRK @mandelbrot ( -- ) ( .Screen/x DEI2 .Screen/y DEI2 ) ( double c_re = [col - width/2.0]*4.0/width; double c_im = [row - height/2.0]*4.0/width; double x = 0, y = 0; int iteration = 0; while [x*x+y*y <= 4 && iteration < max] { double x_new = x*x - y*y + c_re; y = 2*x*y + c_im; x = x_new; iteration++; } if [iteration < max] putpixel[col, row, white]; else putpixel[col, row, black]; ) ( c_re = [col - width / 2.0] * 4.0 / width ) ( .Screen/x DEI2 TO2F WIDTH TO2F #0002 TO2F DIV2F SUB2 #0002 TO2F WIDTH TO2F DIV2F MUL2F .fractal/c_re POK2 ) #01 .Screen/color DEO RTN