Hello again. A bit of nostalgia.
// Adaptation from ZX Spectrum BASIC program "Funciones 3D", "RUN, Enciclopedia Práctica del Spectrum", nº 2, 1985
// to Yabasic 2.78.0, by Galileo, 8/2017
clear screen
LET LRG=256 : LET ALT=192
open window LRG,ALT
window origin "lb" : REM Origin of the graphical coordinates: left bottom
print "Enter '(Q)uit' for exit the program"
do
	LET XG=5: LET ZG=XG-2
	LET CT=INT (LRG/XG/2)
	LET PF=INT (ALT/ZG/3)
	INPUT "F(X,Z)= " A$
	LET A$=trim$(upper$(A$))
	if left$(A$,1)="Q" exit
	LET P=0
	REM CALCULO GRAFICO
	DIM P(CT,PF)
	FOR A=-PF/2 TO PF/2
		FOR B=-CT/2 TO CT/2
			LET X=A*20/CT: LET Z=B*20/PF
			LET Y=EVAL(A$)
			//LET Y=(X*X+Z*Z)/1000
			//LET Y=LOG(1+(X+Z)*SIG(X+Z))/10
			//LET Y=SIN(((60-X*X-Z*Z)*(ABS(SIN(60-X*X-Z*Z))+1))/3000)
			//LET Y=SIG(INT(23/(.00001+X*X+Z*Z)))/3+SIG(INT(55/(.00001+X*X+Z*Z)))/15
			LET P((B+CT)/2,(A+PF)/2)=Y*ALT*(-1)
			IF P=8 LET P=0
			LET P=P+1
		NEXT B
	NEXT A
	clear window 
	REM DIBUJO PLANO X-Y
	FOR Z=1 TO PF
		LET X1=XG*Z
		LET Z1=ALT/2+Z*ZG+20*(-1)
		new curve
		FOR X=1 TO CT
			LET XP=X1+X*XG
			LET ZP=Z1-X*ZG-P(X,Z)
			line to XP,ZP
		NEXT X
	NEXT Z
	REM DIBUJO PLANO Z-Y
	FOR X=1 TO CT
		LET X1=XG*X+PF*XG
		LET Z1=ALT/2-X*ZG+PF*ZG+20*(-1)
		new curve
		FOR Z=0 TO PF-1
			LET XP=X1-Z*XG
			LET ZP=Z1-Z*ZG-P(X,PF-Z)
			line to XP,ZP
		NEXT Z
	NEXT X
loop
sub EVAL(c$)
	static linea
	
	linea=linea+1
	c$="sub s"+str$(linea+1000000,"#######")+"():return "+c$+":end sub"
	compile c$
	return execute(mid$(c$,5,8))
end sub