Что меня интересует, так это то, что первый «аргумент» когда-либо использовался для чего-либо до GW-BASIC, то есть что-то вроде этого было действительно полезным:
CLEAR missingArg, basicMem, basicStack
REM ^^^^^^^^^^
REM here
То есть былкогда-либо целенаправленный непустой аргумент перед первой запятой?
Да, был первый аргумент, но никогда не было формы с тремя аргументами, которая фактически использовала бы его.
Microsoft (первоначально Micro-Soft) создала Altair BASIC.В нем была команда CLEAR
без аргументов, которая устанавливала все нулевые переменные программы.В версии 4K не было строк, поэтому не требовалось управлять строковым пространством.Однако версии 8K, Extended и Disk имели команду CLEAR
, которая также принимала один аргумент в виде CLEAR x
.Значение x
указывает максимальный объем доступного пространства строки в байтах, при этом значение по умолчанию во время загрузки BASIC составляет 50 байтов в версии 8K и 200 байтов в расширенной и дисковой версиях до тех пор, пока оно не будет изменено [источник].Вот откуда появился пропущенный первый аргумент и для чего он использовался изначально.Однако в то время действовал только один аргумент.
Microsoft продолжала разрабатывать производную, называемую «BASIC-80», для нескольких систем, в частности для операционных систем Intel ISIS-II, CP / M и TEKDOS.системы.Была также создана версия BASIC-80 "Standalone Disk BASIC", которая могла бы работать на "практически на любом дисковом оборудовании на базе 8080 или Z80 без операционной системы". Не было версии 4K BASIC-80, поэтомуРазумно предположить, что все версии BASIC-80 имели доступные строки, как и версия 8K Altair BASIC.В результате этого строкового пространства необходимо управлять.Однако именно в BASIC-80 был добавлен второй аргумент :
CLEAR [expression![,address]]
expression!
было выражением, определяющим объем пространства строки, как в 8K (Altair)BASIC, а address
был максимальным адресом, доступным для BASIC, т. Е. Объемом памяти, доступным для BASIC, подобно аргументу сразу после первой запятой в GW-BASIC.
В конце концов, BASIC-80, выпуск 5.0, был отправлен в мир, и он имел нечетный синтаксис вместо :
CLEAR [,[expression1][,expression2]]
expression1
был максимальный объем памяти, доступный для BASIC, и expression2
был объем стекапространство. Приложение A: Новые функции в BASIC-80, выпуск 5.0 , объясняет, почему был сброшен первый аргумент:
Строковое пространство выделяется динамически, и первый аргумент в операторе CLEAR
с двумя аргументами будет игнорироваться.
Другими словами, CLEAR strSpace!,maxMem
будет игнорировать strSpace!
аргумент в BASIC-80, выпуск 5.0, поэтому синтаксис стал CLEAR [,[maxMem][,maxStack]]
.
QuickBASIC в конечном итоге изменил синтаксис далее до CLEAR [,,stack]
.Смущает, что интерактивная справочная система QuickBASIC 4.5 гласит следующее:
Note: Two commas are used before stack to keep QuickBASIC compatible
with BASICA. BASICA included an additional argument that set the
size of the data segment. Because QuickBASIC automatically manages
the data segment, the first parameter is no longer required.
«Первый упомянутый параметр» - maxMem
, поскольку BASICA (и GW-BASIC) использовали синтаксис, доступный в BASIC-80., Выпуск 5.0, а не отсутствующий параметр strSpace!
, используемый в выпусках BASIC-80 до 5.0.