In BASIC when you press enter, it usually denotes the end of a code statement. What that means is that the interpreter can take what you just typed and convert it into tokens and execute it on the fly.
That is fine and dandy for small one line expressions but what about complex constructs like loops and functions. Its hard to go back and edit mistakes. The original BASIC was designed to work with line numbers. We had the ability to overwrite line numbers to fix mistakes. Things have changed since then. Line numbers are obsolete. FreeBASIC is a compiler and its not interactive. Hence they didn't have to worry about that stuff. Personally, I do like the ability to do interactive development. What Microsoft did in Q'BASIC is, they had a text editor on top and an interactive command prompt at the bottom. Q'BASIC does allow complex statements on the command prompt but I don't like it.
I am thinking of only allowing a subset of the language to be interpreted interactively. For example no loops, no case select statements, no functions, etc. Code containing complex statements can be saved on a text file separately and loaded on the console.
Also, modern languages like to use a semicolon to denote the end of a code statement. I prefer the semicolon over the carriage return as a delimiter because of long statements. Sometimes to make the code prettier I want to break down a long statement into multiple lines. I can do this the semicolon but not with the carriage return.
So this is what is going to happen. I will use the semicolon as the delimiter. In the interactive console the semicolon will be optional and as soon as you press enter that will denote the end of the code statement. Shift + Enter will allow you to span multiple lines. When writing code on a text file. The semicolon will be required.