This may help...
You are using a double buffer system. You draw to the backbuffer, and when you have finished drawing, you SYNC. This puts the backbuffer to the screen buffer, which is what your user sees. This prevents the user seeing half a rendered screen, they only see the complete article.
The backbuffer always starts blank. So even if you have dots on the screen, you don't have dots on the backbuffer. After "drawing all of your 2D stuff, DirectX overlays the 3D objects - models, sprites, shaders and so forth. So the 3D stuff is always present because DirectX is applying every time. In contrast, it's up to you to keep redrawing the 2D stuff over and over again.
Going back to ypur previous thread about starfields, this is why using a particle system, using 3D textured plains or sprites, is so much easier from a programmers perspective.
There are advanced methods to do what you are trying to do, saving the screen to a memblock (chunk of memory). However, for a first (or 2nd, 3rd or 4th!) project, it can cloud the simplicity of what DarkBASIC can do without getting complex.
SYNC
can effectively pause the program. If your program/system is running at 300 FPS, and you SYNC at 30 FPS, it will spend 90% of the time doing nothing. However, if your system runs at 15 FPS, there will be no delay and your code will run as fast as it possibly can. It will not run at 30 FPS though, this is simply the fastest rate you have specified for your application.