Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
Напомните, плиз, элегантный универсальный загрузчик тырдос/лента. Вроде встречался раньше, вроде даже там не было конструкции "IF ... THEN" (?)
ASC выпускал игры с "универсальными загрузчиками". Выполнялась команда вида RANDOMIZE USR x:REM:LOAD "file" CODE

Где x - адрес машинного кода, встроенного в бейсик-программу, который определял, имеется ли TR-DOS. Если имеется - то код переходил на адрес 15619 - тем самым RANDOMIZE USR x было эквивалентно RANDOMIZE USR 15619, а дальнейший текст программы являлся "легальным" вызовом команд TR-DOS из бейсика. Если TR-DOS не было - то машинный код переставлял системную переменную CH_ADD, чтобы интерпретатор обошел команду REM, и возвращался в бейсик. После этого интерпретатор выполнял LOAD "file" CODE и грузил файл с кассеты.

Некоторая сложность была с определением адреса x, ведь он был различным для случаев наличия или отсутствия TR-DOS. Для определения правильного адреса считывалась системная переменная PROG (адрес бейсик-программы), и к этому значению прибавлялось смещение.
Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
Вроде даже на бейсике он был. Хотя может и на асме
На чистом бейсике тоже можно сделать, и пользуясь только "легальными" средствами определения наличия TR-DOS, без "инсайдерских" POKE/PEEK, опирающихся на знание прошивок бейсика и TR-DOS. По-моему в инструкции к TR-DOS был приведен способ, как следует определять наличие TR-DOS определенной командой PEEK. Дальше надо использовать IF...THEN, без "инсайдерских" POKE иначе никак. Ведь синтаксис команд загрузки с ленты и диска разный.