Как работает стек GO SUB?
Роясь в литературе для соседней темы про отличия 16к и 48к, с удивлением обнаружил, что к нефиксированной области стека подпрограмм BASIC (стека GO SUB) не относится ни одна переменная-указатель адреса в системных переменных ОС. Известно, где его дно - адрес последнего байта совпадает с RAMTOP, но т.к. этот стек, как и машинный стек, тоже растет вниз (проверял), то где проходит граница стеков? Как, например, RETURN определяет адрес трехбайтной структуры оператора после последнего GO SUB?
Вот например книга "Программирование в машинных кодах" (VA PRINT'93) указывает пример просмотра содержимого стека. Пример не сильно правильный в плане адресов, но там много опечаток и ошибок, так что верить всему там надо с оглядкой (хотя именно по ней мне пришлось впервые изучать коды, ох это было нелегко копаться в ошибках :) ).
Но, короче, пример пользуется CLEAR, несколькими GO SUB, и затем выводом содержимого памяти от адреса до адреса, записанных числами, а не взятых из переменных... То есть, они заранее знали, куда помещают стек с помощью CLEAR, и сколько было выполнено GO SUB, поэтому знают примерное место, откуда начинать просмотр. Там же упоминается, что фирма SINCLAIR не совсем уверенна в написании GO SUB (??).
Во всяком случае, сколько написано программ с подпрограммами, и даже многократной вложенности, а все как будто хорошо работает. Знает ли уважаемый All, как ориентируются в памяти стековые команды, и действительно ли утверждение про фирму Sinclair?