Splitting the Atom back exit forward page 13
C3E5 to C3ED Deal with assignments such as "X=...".
C3EE to C405 Deal with the command ! (quad-poke)
C406 to C40D Deal with the command ? (poke)
C40F to C423 Executes the cassette operating system commands starting with *. The routine strips off the * and copies the remainder of the (5),Y string, up to a <CR>, into the indirect input buffer at 100. A subroutine is then called which passes interpretation over to COS by JSR FFF7 (indirected by (OSCLI)).
C424 to C433 Checks to see if the Floating Point ROM is in. The lowest two bytes of the FP ROM are a signature (AA 55), and this routine tests for these values at D000 and D001, then returns with the carry clear if the ROM is not there. The routine is called from C550, where the machine is deciding whether to pass a string it can't understand to the interpreter in the floating point ROM, or to give up and signal an error.
C434 to C464 The interpreter "Pre-Test" subroutine whose effect is to take the character pointed to by 5,Y (where Y=?3) and if this character is alphabetic it converts it to the number 1 to 26, then places it at 16,X (where X=?4), then ?4 is incremented. If the next character is non-alphabetic the carry is cleared before return (e.g. the command P.), but if the next character is alphabetic then the carry is set before return. This routine therefore enables the machine to rapidly execute abbreviated commands, since it need not read the entire command.
C465 to C4DD A valuable subroutine to read a decimal string. It read a string pointed to by (5),Y (where Y=?3) as ASCII decimal characters, and converts the decimal numeric value to a binary value, then stores it in the 16,X workspace stack (where X=?4). ?4 is incremented so the workspace stack can continue. If the first non-space character is not a number, then BRK is executed. Spoils A, X and Y registers.
C4E4 to C50B A subroutine used as the interpreter's post-test. It checks that (5),Y (where Y=?3) is pointing at a carriage return or a semi-colon, or spaces leading thereto. If not, then it executes BRK.
C4F6 consolidates (5) by (5)=(5)+Y and Y=1
C504 checks to see if the ESC key is depressed. If not then RTS, otherwise it jumps to direct mode and executes the escape code.
C50C to C546 A subroutine which copies a new line number to 1,2 and checks if the line is labelled. If there is a label this routine passes the current text-position pointer at (5),Y to the label store (LSB 38D,X MSB 38E,X).
C54A to C565 Execution of a statement pointed to by 5,Y. It also checks for the Floating Point ROM, and if it is there this routine jumps indirectly to (D002). If not then it returns to default handling. C55B is the best place to return to BASIC after a m/c routine, whether in direct or program mode

back exit forward