On 8 Feb 2011, at 13:37, Plastic wrote: > Here are two fun weird things I like about SBASIC. Maybe others on this list > will add their quirks too...? > > 1. the "MISTake" keyword. > > If you load a BASIC program that contains an error that would normally > provoke a "bad line" response, it inserts the word "MISTake", to indicate > that the line will generate an error. The fun thing is, MISTake is a keyword > you can enter yourself. It's like REMark, but doesn't prevent parsing of the > following text. > > 2. Re-entrancy limits. > > Take the following contrived example of bad coding: > > 100 count=0 : mode 4 > 110 do_it > 120: > 130 DEFine PROCedure do_it > 140 count = count + 1 > 150 PRINT count : PRINT #2, FREE_MEM > 160 do_it > 170 END DEFine do_it > > In this example, the procedure gets called from within the procedure. This > creates a loop, d'uh! Every 20 or so cycles, the return stack fills, and > another 512 bytes is reserved. As the recursion goes deeper, memory starts > to run low. It takes about 20 loops to use 512 bytes, so it takes around > 25,060 loops to use up all the free RAM on a 640K QL. > > The fun part is, when the program finishes consuming all the memory, > FREE_MEM actually goes negative, to -512, and the program manages 20 more > loops before generating an out of memory error. > > Fun times! > > Anyone got any other little oddities or observations about this quirky > little OS that could? >
Recursion is always fun. My assembler, GWASS, allows you to write macros which can call themselves. GWASS keeps track of the amount of recursion and stops before the stack space is totally used up. Other users of GWASS can write programs which require more and more space to be allocated for their assembly. GWASS obligingly gets more and more space, but stops (I hope) before all available QL space is allocated. George _______________________________________________ QL-Users Mailing List http://www.q-v-d.demon.co.uk/smsqe.htm
