mirror of
https://github.com/dschmenk/PLASMA.git
synced 2026-04-21 07:17:03 +00:00
41 lines
1.0 KiB
Plaintext
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.
|