32 lines
764 B
Plaintext
32 lines
764 B
Plaintext
STACKSIZE = 1000
|
|
|
|
FOR n = 3 TO 5
|
|
PRINT "Push ";n : PROCpush(n)
|
|
NEXT
|
|
PRINT "Pop " ; FNpop
|
|
PRINT "Push 6" : PROCpush(6)
|
|
REPEAT
|
|
PRINT "Pop " ; FNpop
|
|
UNTIL FNisempty
|
|
PRINT "Pop " ; FNpop
|
|
END
|
|
|
|
DEF PROCpush(n) : LOCAL f%
|
|
DEF FNpop : LOCAL f% : f% = 1
|
|
DEF FNisempty : LOCAL f% : f% = 2
|
|
PRIVATE stack(), sptr%
|
|
DIM stack(STACKSIZE-1)
|
|
CASE f% OF
|
|
WHEN 0:
|
|
IF sptr% = DIM(stack(),1) ERROR 100, "Error: stack overflowed"
|
|
stack(sptr%) = n
|
|
sptr% += 1
|
|
WHEN 1:
|
|
IF sptr% = 0 ERROR 101, "Error: stack empty"
|
|
sptr% -= 1
|
|
= stack(sptr%)
|
|
WHEN 2:
|
|
= (sptr% = 0)
|
|
ENDCASE
|
|
ENDPROC
|