Many thanks to all you assisted, the ported code is below.
' Ported to BlitzMax by scsicork@... August 2006 ' Thanks to all at the BlitzMax forums for their help ' Version 2.0 ' Februar 2001 ' Made by Einar Wedoe ' Programtype: Novell server screensaver look-a-like ' Use arrow-keys to change speed and length of tail ! Import "bbtype.bmx" Import "bbvkey.bmx" AppTitle ="Novell screensaver" Graphics 800,600,32 ' Sett Grphics mode SetColor 255,0,0 ' Set Color HideMouse() Global x=400 ' Leader-dot-x-pos Global y=300 ' Leader-dot-y-pos Global direction=1 ' Direction variable Global directiontmp=0 ' Temporary direction variable Global round=10 ' How long between every change of direction ? Global roundcount=0 ' Counter for the rounds Global speed#=3 ' Speed Global speedcount=1 ' Counter for speed Global length=35 ' Initial tail-length Global show=0 ' Variable for showing speed and length on screen Global tailX[100+1] ' Tail x can be up to 1000 blocks long Global tailY[100+1] ' Tail y can be up to 1000 blocks long For a=1 To 100 ' Set the current tail off the screen tailx(a)=-20 taily(a)=-20 Next SeedRnd MilliSecs() ' Make random even more random Global frametimer=CreateTimer(75) ' Set up timer to make everything run nice on all PC's '----------------------------------------- MAIN ----------------------------- #start ' Mainloop While Not VKeyHit(1) ' Loop until ESC is pressed WaitTimer(frametimer) ' Wait.... Cls ' Clean up novell() ' Do stuff changespeedortail() ' Wanna change speed or/and tail ? Flip ' Change buffer Wend ' Next round please End '----------------------------------------- NOVELL ---------------------------- Function novell() ' Start the function to actually put something on the screen speedcount=speedcount+1 If speed > speedcount Then Goto draw Select direction ' Moving blocks about Case 1 x=x-11 y=y-13 Case 2 y=y-13 Case 3 y=y-13 x=x+11 Case 4 x=x+11 Case 5 x=x+11 y=y+13 Case 6 y=y+13 Case 7 x=x-11 y=y+13 Case 8 x=x-11 End Select speedcount=0 border ' Check if we hit the border If direction=100 Then roundcount=round+1 ' If we did, do something about it ! directiontest ' Check if time for change of direction For a=length To 1 Step-1 ' Move the x and y down the line tailx(a+1)=tailx(a) taily(a+1)=taily(a) Next tailx(1)=x ' Put x in the end of the line taily(1)=y ' Put y in the end of the line #draw colordrop=255/length ' Find how much to drop color pr. rect colortmp=0 ' Set color to 0 For a=length To 1 Step -1 ' Draw tail SetColor colortmp,0,0 ' Set color for current rect DrawRect tailx(a),taily(a),10,12 ' Draw current rect colortmp=colortmp+colordrop ' Count up color Next End Function '----------------------------------------- BORDER ---------------------- Function border() ' Set direction to 100 if border is reached Select direction Case 1 If x < 15 Or y < 5 Then direction=100 Case 2 If y < 5 Then direction=100 Case 3 If x > 780 Or y < 5 Then direction=100 Case 4 If x > 780 Then direction=100 Case 5 If x > 780 Or y > 585 Then direction=100 Case 6 If y > 585 Then direction=100 Case 7 If x < 15 Or y > 585 Then direction=100 Case 8 If x < 15 Then direction=100 End Select End Function '----------------------------------------- Function directiontest() ' Find new direction if it's time roundcount=roundcount+1 If roundcount > round Then ' Time for a change directiontmp=direction ' Temporary store old direction #findnewdirection direction=Rand(8) ' Find new direction If direction=directiontmp Then Goto findnewdirection ' If it's the same then try again border ' Check for border If direction=100 Then Goto findnewdirection ' Bounce border roundcount=0 ' Reset counter round=Rand(20) ' Set new point for change of direction again EndIf End Function '----------------------------------------- Function changespeedortail() ' Change things If VKeyDown(200) And length < 99 Then ' Add length of tail if arrow-up is pressed length=length+1 ' All length by 1 tailx(length)=-20 ' Set new x-part of tail offscreen taily(length)=-20 ' Set new x-part of tail offscreen show=255 ' Set show variable to print to scren for 200 rasters EndIf If VKeyDown(208) And length > 5 Then ' Decrease length of tail if arrow down is pressed length=length-1 ' Dec by 1 show=255 ' Set show variable to print to scren for 200 rasters EndIf If VKeyDown(203) And speed < 10 Then ' Add speed if arrow-right is pressed speed=speed+0.05 ' Add speed by 0.05 show=255 ' Set show variable to print to scren for 200 rasters EndIf If VKeyDown(205) And speed > 1 Then ' Dec speed if arrow-left is pressed speed=speed-0.05 ' Dec speed by 0.05 show=255 ' Set show variable to print to scren for 200 rasters EndIf show=show-1 ' Decrease show-variable If show < 0 Then show=0 ' If show drops below zero keep it on zero If show > 0 Then ' If show-variable is activated SetColor show,0,0 ' Fade away text DrawText "Length: "+length,0,0 ' Show length DrawText "Speed: "+Int(10-speed+1),0,12 ' Show speed but since speed is oposite of normal recalculate it EndIf End Function '-----------------------------------------