sharp(x2s(0)), h - 20.5);
		context.lineTo(sharp(x2s(0)), h + 0.5);
		context.moveTo(sharp(x2s(0)), 20.5);
		context.lineTo(sharp(x2s(0)), -0.5);
		context.stroke();
		context.closePath();
		context.setLineDash([]);

		context.beginPath();
		// horizontal
		const x_from = s2x(20);
		const x_to = s2x(620);
		for(var i = sign(x_from) * floor(log2(abs(x_from))) - 1; i <= sign(x_to) * ceil(log2(abs(x_to))); ++i) {
			if(i == 0)
				continue;
			const x_i = sign(i) * pow(2, abs(i) - 1);
			context.moveTo(sharp(x