Важная информация

User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 27

Тема: Basic 128 & usr 15619

  1. #11
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,908
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    89
    Поблагодарили
    31 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да багов там попой кушать можно... Помню, книжка про дизассемблер на каждой странице пестрит словом "Ошибка!!!". В тему парсера, тоже моск съело как-то - если LOAD "NAME" CODE набрать с пробелом между " и CODE (тоже в 128-м бейсике, хотя, это можно и в 48-м набрать), то парсер не распознает команду - пробела быть не должно.

  2. #12
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,908
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    89
    Поблагодарили
    31 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Eugen Tsalapov Посмотреть сообщение
    а можно подробней об этом. листинг например
    Сорри, не заметил пост сразу. Тебе листинг того, что дисковал, или можно изобретенный мной искусственно пример, демонстрирующий проблему? Я придумал прогу, которая показывает фокус с самомодифицирующимся на рантайме бэйсиком (при этом остающимся работоспособным), могу поделиться.

    ---------- Post added at 14:54 ---------- Previous post was at 14:50 ----------

    Так что мешает набрать строки tr-dos в 48 бейсике токенами?
    Опять же, что мешает набрать эти команды уже в 128 бейсике?
    Собственно, уже ничего. Знал бы где падать, постелил бы солому. Надо было в 128-м сделать разбивку строк с кучей LOAD "NAME" CODE и LOAD! с SAVE!, а потом в 48-м ее "TRDOSифицировать" добавлением RANDOMIZE USR 15619:REM: с заменой набранных по буквам команд на токены.

  3. #13
    Guru Аватар для Vadim
    Регистрация
    24.07.2008
    Адрес
    г. Курган
    Сообщений
    2,062
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Мне интересно почему TR-DOS токенизирует набранные по буквам команды, но не меняет длину строки.
    совсем недавно делая вменяемый исходник TR-DOS я наткнулся на эту процедуру, которая делает "упаковку" бейсик строк. Сначала я не понял для чего оно вообще надо, т.к. 48-й бейсик сразу токенизирует текст и 128-й мне казалось тоже (т.к. я последнее время чаще работал с +3, а там не используется 15619:REM:, а после ввода текста программы без REM - всё прекрасно токенизируется. Так вот, сегодня попробовал набрать примерно то, что написано в самом начале темы и понял, к чему нужен этот "пакер". В 5.03/5.04t корректируется длина бейсик строки, я вводил строку 10 RANDOMIZE USR 15619: REM: cat - проблем не было, запустил - слово cat токенизировалось, команда выполнилась. Может это сработало лишь с одной строкой? Это первое, что хотел сказать. Второе - процедура опознания токена написана очень коряво. Зачем-то каждое слово прописано дважды, номера токенов хранятся отдельно. Переписал сегодня этот кусок. Стало компактнее, пока не проверял, но думаю будет работать.

    ---------- Post added at 15:01 ---------- Previous post was at 14:49 ----------

    Сейчас проверил новую процедуру - работает. Список токенов стал короче в 2 раза

    Скрытый текст

    Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
    ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
    ZX Evolution Rev B.
    Color 48 + Beta Disk Interface +FDD+YM2149F
    Орель-08БК
    Pentagon-48 (недоссобранный кем-то)
    Pentagon-128 (полуубитый)
    Кворум-128 (в ремонте)
    Магик-05 (в ремонте)
    Robotron 1715
    Корвет ПК8020 и ПК8010
    Amstrad CPC 464
    Amstrad CPC 6128
    [свернуть]

  4. #14
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,908
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    89
    Поблагодарили
    31 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vadim Посмотреть сообщение
    10 RANDOMIZE USR 15619: REM: cat - проблем не было, запустил - слово cat токенизировалось, команда выполнилась.
    Посмотри чему равна длина бейсик-строки 10 до токенизации и после. Несмотря на то, что твоя строка станет на 2 байта короче ("c" от "cat" заменится на токен "CAT", "a" и "t" удалятся), длина этой строки не изменится, останется равной 19 байт. Навскидку по памяти - после выполнения этого оператора любой GO TO на строку после этого оператора тут же покажет дулю.

  5. #15
    Guru Аватар для Vadim
    Регистрация
    24.07.2008
    Адрес
    г. Курган
    Сообщений
    2,062
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Только что проверил - работает как нужно. Набрал следующую программку:
    1 go to 30
    10 randomize usr 15619:rem:cat
    20 print
    25 stop
    30 goto 10
    Сохранил ее сразу, CAT ещё посивольное, длина - 64 байта. Запустил, сохранил, длина - 62 байта. GOTO на строку работает. Длина строки откорректирована, проверил. tr-dos 5.03 в спектакуляторе которая. В 5.04T, как и писал выше - тот же самый код. Моя новая процедура тоже работает (я заменил процедуру распознавания токена, она стала занимать меньше и меньше требовать данных)

    Скрытый текст

    Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
    ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
    ZX Evolution Rev B.
    Color 48 + Beta Disk Interface +FDD+YM2149F
    Орель-08БК
    Pentagon-48 (недоссобранный кем-то)
    Pentagon-128 (полуубитый)
    Кворум-128 (в ремонте)
    Магик-05 (в ремонте)
    Robotron 1715
    Корвет ПК8020 и ПК8010
    Amstrad CPC 464
    Amstrad CPC 6128
    [свернуть]

  6. #16
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,908
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    89
    Поблагодарили
    31 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Repro

    Вот так вот воспроизводится.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	program.jpg 
Просмотров:	228 
Размер:	17.5 Кб 
ID:	38110   Нажмите на изображение для увеличения. 

Название:	run_result.jpg 
Просмотров:	253 
Размер:	17.8 Кб 
ID:	38111   Нажмите на изображение для увеличения. 

Название:	list.jpg 
Просмотров:	239 
Размер:	16.6 Кб 
ID:	38112   Нажмите на изображение для увеличения. 

Название:	tr-dos.jpg 
Просмотров:	242 
Размер:	17.3 Кб 
ID:	38113  

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Guru Аватар для Vadim
    Регистрация
    24.07.2008
    Адрес
    г. Курган
    Сообщений
    2,062
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ясно, буду проверять код и избавляться от ошибки.

    Скрытый текст

    Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
    ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
    ZX Evolution Rev B.
    Color 48 + Beta Disk Interface +FDD+YM2149F
    Орель-08БК
    Pentagon-48 (недоссобранный кем-то)
    Pentagon-128 (полуубитый)
    Кворум-128 (в ремонте)
    Магик-05 (в ремонте)
    Robotron 1715
    Корвет ПК8020 и ПК8010
    Amstrad CPC 464
    Amstrad CPC 6128
    [свернуть]

  9. #18
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,908
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    89
    Поблагодарили
    31 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Чтобы избавиться от этого фокуса, надо в токенизаторе посчитать на сколько байтов сократилась команда, и вычесть это число из байтов длины текущей исполняемой строки (взять из системных переменных номер и посчитать адрес, в SOS ROM есть процедура для этого дела). Если номер равен #FFFE, то можно не править длину - это непосредственная команда, а не строка программы. Если нужна помощь, обращайся.

    ---------- Post added at 12:36 ---------- Previous post was at 12:33 ----------

    Кстати, насколько я помню (сейчас проверить не могу), в TR-DOS есть еще один забавный прикол - если в моей программе перед cat поставить пробел, cat не выполнится (или load "smth" code с пробелом перед code не выполнится). А все потому, что токенизатор должен пропускать незначащие символы (<= 32) при поиске первого символа токена после двоеточия. Если есть возможность, сделай такой фикс тоже.

  10. #19
    Guru Аватар для Vadim
    Регистрация
    24.07.2008
    Адрес
    г. Курган
    Сообщений
    2,062
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Если нужна помощь, обращайся.
    Там, в токенизаторе всё так и написано. Всё работает нормально. Я проверил. Твой пример не выдает ошибок. Про пропуск символов понял, сделаю. И парсер надо тоже менять. Во вложении пример, как было и как стало. На адреса не смотри, "как стало" это из тестового варианта. Полностью заменена процедура FindZXTalk и данные для неё.
    Вложения Вложения
    Последний раз редактировалось Vadim; 07.11.2012 в 14:08. Причина: надо

    Скрытый текст

    Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
    ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
    ZX Evolution Rev B.
    Color 48 + Beta Disk Interface +FDD+YM2149F
    Орель-08БК
    Pentagon-48 (недоссобранный кем-то)
    Pentagon-128 (полуубитый)
    Кворум-128 (в ремонте)
    Магик-05 (в ремонте)
    Robotron 1715
    Корвет ПК8020 и ПК8010
    Amstrad CPC 464
    Amstrad CPC 6128
    [свернуть]

  11. #20
    Guru Аватар для Vadim
    Регистрация
    24.07.2008
    Адрес
    г. Курган
    Сообщений
    2,062
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В fzxt1 исправил (не заметил сначала что значение то беру в Б в итоге)
    fzxt1: ld b,(hl) ;берем символ слова из нашей строки
    res 5,b ;буква заглавная
    ld a,(de) ;берем символ из таблицы
    cp 0FFh ;end of talk list?

    Скрытый текст

    Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
    ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
    ZX Evolution Rev B.
    Color 48 + Beta Disk Interface +FDD+YM2149F
    Орель-08БК
    Pentagon-48 (недоссобранный кем-то)
    Pentagon-128 (полуубитый)
    Кворум-128 (в ремонте)
    Магик-05 (в ремонте)
    Robotron 1715
    Корвет ПК8020 и ПК8010
    Amstrad CPC 464
    Amstrad CPC 6128
    [свернуть]

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. BASIC ДВК
    от AlecV в разделе ДВК, УКНЦ
    Ответов: 135
    Последнее: 07.02.2022, 23:02
  2. 128 basic
    от sevol в разделе Для начинающих
    Ответов: 31
    Последнее: 21.04.2020, 13:25
  3. Tiny Basic
    от Kakos_nonos в разделе Зарубежные компьютеры
    Ответов: 0
    Последнее: 25.04.2011, 16:51
  4. Дизассемблер BASIC-48
    от Prusak в разделе Пресса
    Ответов: 4
    Последнее: 22.06.2010, 22:52
  5. Программы на BASIC
    от form в разделе ДВК, УКНЦ
    Ответов: 14
    Последнее: 17.04.2010, 15:41

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •