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

User Tag List

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

Тема: процедура загрузки с диска

  1. #1
    Junior Аватар для necroTrue
    Регистрация
    09.04.2010
    Адрес
    Львов
    Сообщений
    17
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию процедура загрузки с диска

    нужна процедура загрузки, что бы принимала имя файла и куда читать.

    ---------- Post added at 18:15 ---------- Previous post was at 18:05 ----------

    нашел, может кому пригодится. но остался вопрос - а как указать что я хочу конкретный адрес? я так понимаю сейчас оно смотрит свойства файла

    http://zxdn.narod.ru/coding/adv6dver.txt

    LOAD
    CALL SET_NAME ; готовим сист.
    ; переменные
    LD C,10 ; ищем файл
    CALL 15635
    LD A,C
    BIT 7,C
    JR Z,LD_1
    ; Сообщение "файл не найден" или...
    RET
    LD_1 ; грузим...
    LD A,C
    LD C,8
    CALL 15635
    XOR A
    LD (23801),A
    LD (23824),A
    LD C,14
    CALL 15635
    RET

    SET_NAME ; Подпрограмма установки сист.переменных
    LD HL,NAME ; перекидываем
    LD DE,23773 ; имя файла
    LD BC,8
    LDIR
    LD A,"C" ; тип файла м.б.
    LD (23781),A ; любой, кроме "#","D","B"
    LD A,9 ; поиск файла
    LD (23814),A ; по 9 символам
    RET

    NAME DEFM "filename"
    Последний раз редактировалось necroTrue; 13.06.2010 в 19:55.

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

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

    По умолчанию

    Цитата Сообщение от necroTrue Посмотреть сообщение
    а как указать что я хочу конкретный адрес?
    видимо, грузить не по номеру файла в каталоге (С=8), а самому (С=5) - надо точнее смотреть функции #3d13.

  4. #3
    Veteran Аватар для valeron
    Регистрация
    19.11.2006
    Адрес
    г.Слоним Гродненской области
    Сообщений
    1,283
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В этом месте
    ...
    XOR A
    LD (23801),A
    LD (23824),A
    LD C,14
    CALL 15635
    ...
    при LD C,14 имеет значение что в регистре А. В этом куске кода А был обнулен операцией XOR A, и тогда адрес загрузки файла берется из каталога. Если сделать
    LD A, 3 то нужно в DE указывать адрес куда грузить файл. Надеюсь ты именно это спрашивал, потому что вопрос поставлен не совсем понятно.

    PS. Вот нашел точное описание, проверил - работает.
    14 |Выполняет 5 функций:
    | | Загрузка файла: в 23801 и 23824 поместите 0, имя и расширение поместите с 23773, а также:
    | | Для бейсик - программ - больше ничего.
    | | Для файлов CODE :
    | | Пpи A=0 - адрес загрузки и длина берутся из каталога.
    | | При A=3 - адрес загрузки берется из HL, длина - из DE.
    | | Иначе - адрес загрузки берется из HL, длина - из каталога.

    | | Для массивов - A<>0, в HL - длина тела старого мас-
    | | сива или 0, если такового нет; в 23767 - адрес тела
    | | старого массива в памяти, в 23762 - имя массива.

    | | Верификация файла - все как и для загрузки, только в 23801 поместите 255.
    | | Загрузка сектора файла - в 23801 поместите 0, в 23824 - 255, в 23767 - адрес загрузки, в HL - номер
    | | сектора, в A - 3, в DE - 0 (два последних действия - для обхода ошибки. Внимание!!! Не работает с файлами
    | | BASIC и DATA из-за ошибки.
    | | Верификация сектора файла - все как и при загрузке, только в 23801 поместите 255.
    | | Запись сектора файла - в 23801 поместите 255 (для обхода ошибки), в 23824 - не 0 и не 255, в A - не 0, в
    | | HL - номер сектора, в 23767 - адрес в памяти.
    Последний раз редактировалось valeron; 26.06.2010 в 02:18. Причина: флудеразм

  5. #4
    Junior Аватар для necroTrue
    Регистрация
    09.04.2010
    Адрес
    Львов
    Сообщений
    17
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    да, думаю это. просто не переношу работу с диском, и влом разбиратся что и как там работает. вот какая-то нелюбовь к этим процессам
    вечерком попробую, посмотрю то ли что я хотел

  6. #5
    Veteran Аватар для valeron
    Регистрация
    19.11.2006
    Адрес
    г.Слоним Гродненской области
    Сообщений
    1,283
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Там совсем не сложно, может кажется что запутано, но если разобраться то займет минут 15. Запоминать не нужно, просто нужно иметь под руками список процедур для CALL 15635 и какие регистры за что отвечают. Из всех процедур ты станешь использовать только 2, одну на запись, вторую на чтение. Потом со временем тебе захочется большего, но обойтись можно малым.
    Да, еще при операциях с CALL 15635 имей ввиду что регистр IY должен быть на своем месте в системных переменных, прерывания IM1 и вектор прерываний I=#63. Я на этих граблях лажался в свое время...

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

    По умолчанию

    IY при IM1 должен быть всегда на своем месте. а #3d13 не приспособлен для IM2.

  8. #7
    Veteran Аватар для valeron
    Регистрация
    19.11.2006
    Адрес
    г.Слоним Гродненской области
    Сообщений
    1,283
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от valeron Посмотреть сообщение
    ...прерывания IM1 и вектор прерываний I=#63...
    Что-то меня никто не поправляет, а я тут по невнимательности 63 как # (HEX) обозначил, а надо десятиричное или уже #3F если в HEX

  9. #8
    Veteran
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,979
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    99 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я же выкладывал процедуру, правда без #3d13. Ей пофиг вообще на все переменные, регистры и режим прерываний.

    Ссылка на код.

    Код написан был для адаптации игры Helter Skelter.
    Последний раз редактировалось drbars; 22.06.2010 в 09:54.

  10. #9
    Veteran Аватар для valeron
    Регистрация
    19.11.2006
    Адрес
    г.Слоним Гродненской области
    Сообщений
    1,283
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Я же выкладывал процедуру, правда без #3d13. Ей пофиг вообще на все переменные, регистры и режим прерываний.

    Ссылка на код.

    Код написан был для адаптации игры Helter Skelter.
    Что-то мне кажется что с RAM диском она не подружится, да и здоровенная больно, если делаешь маленькую утилитку то просто в лом дублировать половину операционки, так что ее я бы стал применять только если уж совсем другого выхода не будет. В любом случаен спасибо за потраченные усилия и внимание.

  11. #10
    Veteran
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,979
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    99 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от valeron Посмотреть сообщение
    Что-то мне кажется что с RAM диском она не подружится, да и здоровенная больно, если делаешь маленькую утилитку то просто в лом дублировать половину операционки, так что ее я бы стал применять только если уж совсем другого выхода не будет. В любом случаен спасибо за потраченные усилия и внимание.
    Небыло у меня в те времена рамдисков и hdd Только дискеты

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

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

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

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

Похожие темы

  1. нужна процедура умножения 16b*8b
    от DimkaM в разделе Программирование
    Ответов: 0
    Последнее: 16.04.2010, 10:29
  2. Процедура рисования линии
    от newart в разделе Программирование
    Ответов: 3
    Последнее: 17.08.2008, 14:36
  3. Процедура заливки замкнутого контура
    от jim в разделе Программирование
    Ответов: 45
    Последнее: 07.02.2007, 17:50
  4. Процедура детекта TurboSound.
    от Shiru в разделе Программирование
    Ответов: 21
    Последнее: 27.05.2005, 18:45
  5. Процедура опроса клавиатуры
    от Aprisobal в разделе Программирование
    Ответов: 8
    Последнее: 19.02.2005, 18:12

Ваши права

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