Splitting the Atom back exit forward page 14
C566 to C574 Executes the IF command. C566 calls C70C, which is a truth test that puts a zero on the workspace stack (at 16,x where X = ?0) if false.
C575 to C5BB Executes the REM command by incrementing (5),Y until a <CR> is encountered.
C5B9 to C607 A subroutine which prints the lowest level of the workspace stack (i.e. 16,25,34,43) as a signed decimal number in field size @. A, X, Y are spoiled.
C608 to C620 Data tables for the above routine.
C62E to C660 A subroutine which uses the vector a (58) to search through a BASIC program looking for a line number match, or a line number greater than that recently input. The inputted line number is assumed to be on the 16,X workspace stack one level down from the workspace pointer (?4). The routine returns with (58),Y pointing at the character immediately after the matching line number, and the carry is clear. If the carry is set, then no line number match was found.
C661 to C688 A suboutine called by the C80B multiply routine.
C689 to C6D9 A subroutine of C661.
C70C to C713 A subroutine which is the truth test used by the IF and UNTIL commands. It evaluates an arbitrarily complex statement or equation [pointed at by (5),(73)] and places zero on the workspace stack at 16,X if false.
C714 to C721 The logical AND truth test (you use C70C).
C722 to C72B The logical OR truth test (you use C70C).
C731 to C79C String comparison truth test used by the above truth test.
C79D to C7B6 deals with adding together two adjacent 4-byte numbers on the workspace stack, viz:
14
23
32
41, X
= 14
23
32
41, X
+ 15
24
33
42, X
C7B7 to C7D2 As above, but subtraction.
C7D3 to C7E0 As above, but bitwise logical OR.
C7EF to C80A As above, but EOR.
C80B to C87A Deals with multiplication.
C87B to C89B Similar to C79D, but bitwise AND based on 16,X.
C8?C to C8DB As for C3C8, but increments workspace pointer, and does not copy the result to 52,53, etc.

back exit forward