Какова цель фиктивного аргумента, который передается в POS-функцию BASI C? - PullRequest
1 голос
/ 27 марта 2020

Недолго go Я прочитал, что интерпретатор BASI C Commodore 64 содержит функцию POS, которая возвращает текущую горизонтальную позицию курсора. С тех пор я заметил эту идиосинкразию на некоторых других диалектах BASI C, включая Microsoft QBASI C и даже BrightScript Roku, который гораздо более поздний.

Что мне интересно, почему это вещь? Если значение аргумента не используется, зачем вообще его требовать? Я предполагаю, что, возможно, на ранних этапах BASI C не поддерживал функции без аргументов, и по какой-то причине он застрял, возможно, на совместимость. Но это не объясняет, почему это все еще обязательный аргумент.

Стоит упомянуть, что QBASI C также включает в себя CSRLEN, который возвращает вертикальную позицию курсора, но это не так. не требую / не принимаю никаких аргументов. Это подтверждает мою идею, что это пришло из «древних времен» - POS было бы четко определенной операцией на самых ранних терминалах (телетайпах), но CSRLEN не имело бы смысла до более позднего аппаратного обеспечения.

1 Ответ

1 голос
/ 27 марта 2020

Кажется, я помню (очень расплывчато), что таблица поиска, в которую был помещен pos, была той, в которой все функции имели аргумент (например, sin или fre). С этой целью pos использовал общий код, чтобы имел аргумент, даже если он был проигнорирован.

Интерпретатор BASI C в C64, основанный на ( довольно ограниченный) Процессор 6502 должен был использовать всевозможные изумительные приемы, чтобы обеспечить все его функциональные возможности.


Теперь имейте в виду, что требовалось проникнуть в мое серое вещество через 30 с лишним лет детрита. Я подозреваю, что вы получите более точный ответ (a) на сайте-партнере ретро-вычислений .


(a) И, вероятно, более полный, почти болезненный: -)

...