1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2026-04-21 07:17:03 +00:00
Files
PLASMA/src/samplesrc/examples/ex.5.pla
T
2018-02-20 17:27:44 -08:00

41 lines
1.0 KiB
Plaintext

//
// YOU'VE ALREADY SEEN SOME OF THE
// BUILT-IN FUNCTIONS IN PLASMA, NOW
// IT IS TIME TO DEFINE OUR OWN. THE
// REAL POWER OF PLASMA COMES FROM
// FUNCTION DEFINITIONS THAT USE LOCAL
// VARIABLES, AND THE ABILITY FOR
// RECURSION - FUNCTIONS THAT CAN CALL
// THEMSELVES. THE APPLE II DOES LIMIT
// THESE ABILITIES SOMEWHAT, BUT SOME
// COMPLEX ALGORITHMS WORK JUST FINE
// WITH THESE LIMITATION (INCLUDING
// THE PLASMA COMPILER, ITSELF).
//
// A FUNCTION DEFINITION HAS OPTIONAL
// ARGUMENTS, OPTIONAL LOCAL VARIABLES,
// AND AN OPTIONAL RETURN VALUE.
//
DEF ADD(A, B)
WORD C
C = A + B
RETURN C
END
PUTI(ADD(1, 2))
DONE
IN THE ABOVE EXAMPLE, THE RETURN COULD
BE SIMPLIFIED TO "RETURN A + B" BUT
I WAS TRYING TO SHOW HOW TO USE LOCAL
VARIABLES. ARRAYS CAN ALSO BE PLACED
IN THE LOCAL VARIABLES, BUT NOTE THAT
THE MAXIMUM SIZE OF LOCAL VARIABLES HAS
TO BE 255 BYTES OR LESS, PER DEFINITION.
ALSO, DUE TO THE NATURE OF THE 6502 CALL
STACK, ONLY A CALL DEPTH OF ABOUT 96 IS
AVAILABLE. AFTER THAT, THE STACK
OVERFLOWS AND UNEXPECTED THINGS HAPPEN.