Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Для начинающих (http://zx-pk.ru/forumdisplay.php?f=43)
-   -   Basic 128 & usr 15619 (http://zx-pk.ru/showthread.php?t=17886)

Alex Rider 15th January 2012 20:51

Basic 128 & usr 15619
 
Всем привет!
Столкнулся с интересной проблемой, может, на форуме пролетало, но не нашел. Может, кому пригодится.
Итак, дисковал я ленточную прогу, заточенную под 128К. Прока грузила бэйсиком с ленты блоки кодов и закидывала их на RAM-диск 128-го. Чтобы не испытывать проблем с синтаксисом операторов загрузки/записи на RAM-диск, решил переделать бэйсик-загрузчик в редакторе 128К. Заменил всякие LOAD "" CODE на RANDOMIZE USR 15619: REM: LOAD "NAME" CODE, разбил строки с операторами зарузки, сохранил, запустил, и... "C, Nonsense in BASIC"! Бэйсик после первой строки загрузки был испорчен.
Причина тут в том, что редактор BASIC 128 не токеризирует набранные по буквам ключевые слова после REM. А вот TR-DOS при исполнении токенизирует, но не меняет длину строки.
В общем, чтобы работал USR 15619, надо либо править строку в 2 приема (REM добавлять после ввода LOAD "NAME" CODE), либо делать это в BASIC 48.
Вопрос к гуру: если об этои где-то писалось, не подскажете, где можно почитать еще?

Eugen 15th January 2012 21:02

REM это коменты. так что 128 их не так использует - это нормально. найди 1 отличие между 128 и 48 бейсиком)))

Alex Rider 16th January 2012 00:00

Да понятно, что это комменты. Мне интересно почему TR-DOS токенизирует набранные по буквам комманды, но не меняет длину строки.

null_device 16th January 2012 00:27

Между прочим, набирать строку работы с tr-dos именно токенами, рекомендовали в книжке ".. для пользователей и программистов" - Ларченко-Родионова (правда, там это рекомендовали с иной целью).

Alex Rider 16th January 2012 01:12

Быть может, есть резон поправить эту проблему в модифицированных прошивках TR-DOS? Правда, вариант токенизации с удалением набора символов и правкой длины строки может привести к другим проблемам. Так что, если уж править, было бы здорово заменять первую букву набранного токена на его код, а остальные - на пробел. Ну или вообще избавиться от токенизации.

null_device 16th January 2012 01:53

Quote:

Originally Posted by Alex Rider (Post 455995)
было бы здорово заменять первую букву набранного токена на его код, а остальные - на пробел

Вообще-то, примерно так и происходит. Набрав в 128 бейсике программу, выполните все инструкции tr-dos и сохраните ее. Загрузитесь из 48 режима, посмотрите листинг - какие проблемы?!
Использование токенов, удобно тем, что не нужно "знать" как пишется та или иная команда (также не тратится лишнее время на набор и место в памяти). Логичнее не пользоваться таким "атавизмом", как 128 бейсик.
А изменение содержимого любого из ПЗУ может вызвать "несовместимость" ряда программ. Поэтому, мне не совсем понятна причина недовольства текущим положением вещей.

Alex Rider 16th January 2012 02:24

Quote:

Вообще-то, примерно так и происходит. Набрав в 128 бейсике программу, выполните все инструкции tr-dos и сохраните ее. Загрузитесь из 48 режима, посмотрите листинг - какие проблемы?!
Хоть в 128-м, хоть в 48-м одно и то же: токенизация операторов звгрузки после REM без исправления длин строк. Для инструкции LOAD "NAME" CODE 4-х буквенные слова LOAD и CODE, заменяются на односимвольные токены, строка укорачивается на 6 символов, но байты длины строки после ее номера не корректируется. Если посмотреть листинг, будет все, что угодно.

Quote:

Использование токенов, удобно тем, что не нужно "знать" как пишется та или иная команда (также не тратится лишнее время на набор и место в памяти). Логичнее не пользоваться таким "атавизмом", как 128 бейсик.
Читаем сообщения внимательно - я дисковал программу, рассчитанную на 128-й бэйсик. В частности, использующую команды LOAD ! и SAVE !. Ясно, что в "прогрессивном" BASIC 48 строки с такими командами не введутся.

Quote:

А изменение содержимого любого из ПЗУ может вызвать "несовместимость" ряда программ.
Я предлагал изменения не в канонические прошивки типа 5.03/5.04Т - их я и сам могу модифицировать и словить несовместимость. Изменения можно внести в уже модифицированные прошивки с поддержкой RAM-диска, фиксами известных багов и т.п., явно на 100% не совместимые с оригиналами.

Eugen 16th January 2012 02:30

Quote:

Originally Posted by Alex Rider (Post 456021)
я дисковал программу, рассчитанную на 128-й бэйсик. В частности, использующую команды LOAD ! и SAVE !

а можно подробней об этом. листинг например

null_device 16th January 2012 07:29

Quote:

Originally Posted by Alex Rider (Post 456021)
байты длины строки после ее номера не корректируется

Так что мешает набрать строки tr-dos в 48 бейсике токенами?

Quote:

Originally Posted by Alex Rider (Post 456021)
в "прогрессивном" BASIC 48 строки с такими командами не введутся.

Опять же, что мешает набрать эти команды уже в 128 бейсике?

goodboy 16th January 2012 12:25

вспомнился ещё один баг который не позволяет сделать программу короче - это выполнение команды RUN (загрузка кодового блока и его старт с адреса загрузки). точнее один раз RUN можно выполнить, но корректного возврата в бейсик не получится.


All times are GMT +4. The time now is 00:21.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.