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

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: "длина программной части" BASIC

  1. #1
    Master Аватар для boo_boo
    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию "длина программной части" BASIC

    плз, ткните носом, откуда берется "длина программной части" BASIC, та самая, что записывается в 11-12 байтах заголовка файла в трдос-каталоге.
    в смысле, как её выкопать из бинарного бейсик-файла?

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

  3. #2
    Master Аватар для andreil
    Регистрация
    20.06.2005
    Адрес
    Светлогорск
    Сообщений
    885
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вроде бы это длинна всей программы в байтах (те каждая команда=1байт и каждый символ=1байту + еще нумерация строк).
    "Байт-48"

  4. #3
    Guru Аватар для breeze
    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,692
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    42
    Поблагодарили
    30 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    Thumbs up

    Цитата Сообщение от boo_boo Посмотреть сообщение
    в смысле, как её выкопать из бинарного бейсик-файла?
    ну я фиг его знает ну я лично блал экзамплы из sjasmplus, немного подкорректировав получил такую картинку своего загрузчика для дверей:

    Код:
                    DISP    23867
        
    Basic           db        #00,#00                ; basic number string [#00,#01]
                    dw        EndBasic-Begin        ; size of basic string
    Begin           db        #FD                    ; "CLEAR" token
                    db        #30                    ; "0" fake numeber
                    db        #0e,#00,#00
                    dw        #5fff                ; real stack (CLEAR) [#5fb3]
                    db        #00
                    db        #3a                    ; ":"
                    db        #f9                    ; "RANDOMIZE" token
                    db        #c0                    ; "USR" token
                    db        #30                    ; "0" fake numeber
                    db        #0e,#00,#00
                    dw        #5d53                ; real call (USR) [#5d53]
                    db        #00
                    db        #3a                    ; ":"
                    db        #ea                    ; "REM" token
                    
                    include    "bootloader/basicboot.asm"
    
                    db        #D
    EndBasic
    сохранял брав разницу EndBasic-Basic, кроме того она указана в 2-м и 3-м байте
    (๑•̀ㅂ•́)و✧ Doors UI → https://t.me/doorsui | https://t.me/atari_xl_xe ← Atari XL/XE (●´ω`●)ゞ

  5. #4
    Banned
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а после EndBasic ниче в файле нет?? там же должно быть че-то типа то ли 0х80, то ли 0хАА.. за которым идет адрес строки автозапуска..

  6. #5
    Guru Аватар для breeze
    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,692
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    42
    Поблагодарили
    30 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    Red face

    Цитата Сообщение от psb Посмотреть сообщение
    а после EndBasic ниче в файле нет?? там же должно быть че-то типа то ли 0х80, то ли 0хАА.. за которым идет адрес строки автозапуска..
    Не знаю но заметил, что если в уже сохранённом на диске имени файла длина и адрес одинаковые числа, то автозапуск работает - иначе нет.
    (๑•̀ㅂ•́)و✧ Doors UI → https://t.me/doorsui | https://t.me/atari_xl_xe ← Atari XL/XE (●´ω`●)ゞ

  7. #6
    Veteran Аватар для TomCaT
    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,794
    Спасибо Благодарностей отдано 
    54
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    22 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Одно из них (из START/LENGTH) -- длина всей области от переменной PROG до VARS. Второе -- длина в байтах обоих этих областей. В файле сохраняются обе области, т.к. в памяти они все равно лежат подряд. Что есть что легко проверяется однострочной программкой, в которой перед сохранением любой переменной присвоили любое значение между последним CLEAR и сохранением на диск. А т.к. заголовок кассетный длиннее дискетных 16 байт, TR-DOS выдумали цеплять в конце файла-с-автозапуском еще 3 байта -- AA и 2 байта номера LINE-строки. Имо, очень неудобно, т.к. с вероятностью 3/256 это займет целый сектор! Но раз уж иначе никак...
    Кроме того, существуют условия, когда эти байты не добавляются, не проверяются -- условия без автозапуска. Точно знаю, что если START больше 32767, автостарта не происходит.
    Последний раз редактировалось TomCaT; 05.10.2007 в 21:46. Причина: пр(в<->о)еряются
    Помни. Только на компьютере можно семь раз Cut, а один - Format. В реале все иначе. (c)
    Власть людей сильнее, чем люди у власти.
    Чем меньше мы смотрим на мир, тем больше задумываемся о нем. (c)

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

    Can you help Robin in his quest for the silver arrow? (c) Odin "Robin of the Wood"
    Мы все немного режем по дереву, а потом собираем корабли в бутылках.
    Is it the same old story you are going to tell me
    or is it the old story telling me and you we are the same?
    http://www.sky.od.ua/~ptsk
    [свернуть]


  8. #7
    Master Аватар для boo_boo
    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    то есть, я правильно понял, что способа определить по имеющемуся бинарнику длину BASIC-программы, не перекапывая эту самую программу построчно, науке неизвестно?

  9. #8
    Banned
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от TomCaT Посмотреть сообщение
    Имо, очень неудобно, т.к. с вероятностью 3/256 это займет целый сектор!
    да к тому же в 5.03 есть глючок, по которому следующий трек-сектор в сист.переменных выставляется неправильно - можно наткнутся на это при монолоадерах.
    Цитата Сообщение от boo_boo Посмотреть сообщение
    способа определить по имеющемуся бинарнику длину BASIC-программы, не перекапывая эту самую программу построчно, науке неизвестно?
    вроде так..

  10. #9
    Veteran Аватар для TomCaT
    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,794
    Спасибо Благодарностей отдано 
    54
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    22 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если в этом бинарнике -- только бэйсик файл, то отчего же?
    Не самый надежный, но простой способ -- проверить последние 3 байта на предмет AA -- но есть шанс, хоть и маленький, что в программе сохраняли переменные. Тогда более надежно -- назначить поиск с конца байта 0x80 -- марекр конца переменных. Если AA есть, то этот байт лежит сразу за ним.
    Ну, а случай, когда в конце последнего сектора бэйсик-файла кто-то умышленно навалил мусор из 0x80-байтов можно не рассматривать
    Помни. Только на компьютере можно семь раз Cut, а один - Format. В реале все иначе. (c)
    Власть людей сильнее, чем люди у власти.
    Чем меньше мы смотрим на мир, тем больше задумываемся о нем. (c)

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

    Can you help Robin in his quest for the silver arrow? (c) Odin "Robin of the Wood"
    Мы все немного режем по дереву, а потом собираем корабли в бутылках.
    Is it the same old story you are going to tell me
    or is it the old story telling me and you we are the same?
    http://www.sky.od.ua/~ptsk
    [свернуть]


  11. #10
    Member Аватар для Vovoi
    Регистрация
    06.07.2005
    Адрес
    г. Петрозаводск
    Сообщений
    151
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Интересный текст можно обнаружить в ZX-Ревю.
    http://trd.speccy.cz/book/REVU9645.ZIP
    файл - Dos_tx.txt
    "РАЗДЕЛ TR DOS ДЛЯ НАЧИНАЮЩИХ"
    ГЛАВА 2 "ВНУТРЕННЯЯ ОРГАНИЗАЦИЯ ДИСКА"
    (c) В.Сироткин, г.Краснокаменск.
    Продолжение (начало см. ZX 96/1-2)

    зы:
    Можно в тексте задать поиск: "Давайте теперь посмотрим как лежит на диске в секторе блок файла"

    (то же и здесь - http://trd.speccy.cz/book/REVU3_96.ZIP)
    Spectrum Basic

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 67
    Последнее: 21.04.2021, 14:51
  2. Ответов: 6
    Последнее: 20.11.2007, 11:29
  3. Ответов: 5
    Последнее: 20.06.2005, 00:10
  4. "Ремейк или плагиат?" или "про FIRE & ICE..."
    от antiplagiat в разделе Игры
    Ответов: 27
    Последнее: 04.06.2005, 02:55

Ваши права

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