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

User Tag List

Показано с 1 по 6 из 6

Тема: Загрузка файла в TR-DOS (Ассемблер) не получается

  1. #1
    Master
    Регистрация
    31.03.2008
    Адрес
    Москва
    Сообщений
    573
    Благодарностей: 275
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Загрузка файла в TR-DOS (Ассемблер) не получается

    Приветствую!

    Пишу демо-прогу, соответственно требуется загрузка файла с дискеты (TRDOS), помогите с процедурой.
    Код:
    ;-------------------------------------------------
    ; LOADFILEMEM - load 60K "file5" file to GPU RAM
    ;-------------------------------------------------
    LOADFILEMEM:
    	push af
    	push bc
    	push de
    	push hl
    ;
    	ld hl,Name
    	ld c,13h
    	call GPUDISABLE
    	call 3d13h
    	call GPUENABLE
    	xor a
    LOADFILEMEM1:	
    	ld (sMP),a
    	inc a
    	push af
    ;
    	xor a
    	ld (5cf9h),a
    	ld c,0eh
    	ld a,3
    	ld de,1000h
    	ld hl,0c000h
    	call GPUDISABLE
    	call 3d13h ; <-------получаю noncence in basic
    	call GPUENABLE
    ;
    	ld hl,0c000h
    	ld de,0
    	ld bc,1000h
    	ldir
    ;
    	pop af
    	cp a,15
    	jp nz,LOADFILEMEM1
    ;
    	pop hl
    	pop de
    	pop bc
    	pop af
    	ret
    ;
    Name	     defm      "file5   C"
    Гружу 60К файл 15-ю кусками по 4К и копирую их в свой видеоконтроллер (запись в область ПЗУ 0..4095).
    Исходник брал из книги Поморцева про TRDOS. Раньше в TRD0S не программировал, где ошибка, непонятно.
    TRD-шку прилагаю. Тестил на реале и в UnrealSpeccy.
    Вложения Вложения
    • Тип файла: 7z ipvc5.7z (4.1 Кб, Просмотров: 144)
    Последний раз редактировалось IanPo; 30.01.2011 в 12:56.
    ZXM-Phoenix rev01 2048, FloppyEmulator/SD, IDE->CF 4Gb

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

  3. #2
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    3,378
    Благодарностей: 719
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от IanPo Посмотреть сообщение
    Код:
    ----
    Гружу 60К файл 15-ю кусками по 4К и копирую их в свой видеоконтроллер (запись в область ПЗУ 0..4095).
    Исходник брал из книги Поморцева про TRDOS. Раньше в TRD0S не программировал, где ошибка, непонятно.
    TRD-шку прилагаю. Тестил на реале и в UnrealSpeccy.
    это какая-то ересь
    перечитай внимательнее книжку Поморцева

    ТР Дос не дает простых способов загрузки произвольного куска файла

    Код:
    ;-------------------------------------------------
    ; LOADFILEMEM - load 60K "file5" file to GPU RAM
    ;-------------------------------------------------
    LOADFILEMEM:
        push af
        push bc
        push de
        push hl
    ;
         call GPUDISABLE
      
        LD C,#18 ; настройки на тип дискеты
        CALL #3D13
    
        ld hl,Name
        ld c,13h
        call 3d13h
    ;копируем имя
        ld c,#0a
        call #3d13
    ;проверяем наличие файла
    
        ld a,c
        inc c
        jp z,file_not_found
    
        ld c,#08
        call #3d13
    ;считываем его данные
    ;теперь можем грузить
    
        ld de,(#5ceb)  
    ;берем физический адрес на диске
        ld bc,#0f05 
    ;определяем количество 4х кб блоков (15)
    ;с=5 для загрузки блока
    LOADFILEMEM1:    
        push  bc
        ld hl,#c000  ;адрес загрузки
        ld b,#10      ;длина в секторах =16
        call 3d13h ; 
        ld de,(#5cf4) ;берем физический адрес на диске следующего блока
    
        push de
        call GPUENABLE
    ;
        ld hl,0c000h
        ld de,0
        ld bc,1000h
        ldir
    ;
         call GPUDISABLE
       pop de
       pop bc 
        djnz LOADFILEMEM1
    ;
    file_not_found
        call GPUENABLE
         pop hl
        pop de
        pop bc
        pop af
        ret
    ;
    Name         defm      "file5   C"
    как то так - не тестировал
    дергать это самое ГПУ без надобности - не вижу смысла
    Последний раз редактировалось jerri; 30.01.2011 в 14:58.
    С уважением,
    Jerri / Red Triangle.
    [02.05.2014] не забудь этот день. Чубайс должен умереть. Dixi.
    [l'Abbey des morts TSEvo EV...5%] kiwi кошелек +79178162712

  4. Этот пользователь поблагодарил jerri за это полезное сообщение:
    IanPo (30.01.2011)

  5. #3
    Guru Аватар для Дмитрий
    Регистрация
    01.01.2009
    Адрес
    Донецк, Украина
    Сообщений
    3,234
    Благодарностей: 715
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я в свое время юзал такую процедуру загрузки файла:
    Код:
    start
              ld hl,#f700 ; буфер для загрузки каталога
              ld de,0
              ld bc,#0805    ;грузим каталог дискеты
              call 15635
              ld de,NameFile ;имя файла
              ld hl,#f700
              call SearchFile ;ищем файл в каталоге и берем инфу о его расположении (трек, сектор)
              jpc Exit       ; а нет такого файла - выход!
              ld hl,#9700   ;грузим 1 сектор файла по адресу #9700
              ld bc,#0105 
              call 15635
              ...
    ;routines
    SearchFile ld b,128
              ld (S_file1+1),de
    S_file1   ld de,0
              ld a,(hl)
              or a
              jrz No_file
              ld a,(de)
              cp (hl)
              jrz found_symb
    N_file2   ld a,b
              ld bc,16
              add hl,bc
              ld b,a
              djnz S_file1
    No_file   scf
              ret
    found_symb
              ld (N_file1+1),hl
              ld c,10
              inc hl
              inc de
    S_file2   ld a,(de)
              cp (hl)
              jrnz N_file1
              inc de
              inc hl
              dec c
              jrnz S_file2
              inc hl
              inc hl
              ld b,(hl)
              inc hl
              ld e,(hl)
              inc hl
              ld d,(hl)
              or a
              ret
    N_file1   ld hl,0
              jr N_file2
    NameFile  db "Levels  dat"

  6. Этот пользователь поблагодарил Дмитрий за это полезное сообщение:
    IanPo (30.01.2011)

  7. #4
    Master
    Регистрация
    31.03.2008
    Адрес
    Москва
    Сообщений
    573
    Благодарностей: 275
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я потестирую вариант jerri как мне, начинающему, более понятный (похож на тот, что из книги Поморцева). Второй вариант про запас будет
    В Unreal Speccy код не глючит, буду смотреть на реале.
    Похоже, я, действительно, не тот код скопировал вначале. Тот был для монолитной сборки Basic-файла с кодом.
    ZXM-Phoenix rev01 2048, FloppyEmulator/SD, IDE->CF 4Gb

  8. #5
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    3,378
    Благодарностей: 719
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Там еще вопрос у меня есть

    ;
    ld hl,0c000h
    ld de,0
    ld bc,1000h
    ldir
    ;
    вот этот кусок кода копируется в одни и теже адреса
    как у тебя определялось что и куда будет адресоваться?
    С уважением,
    Jerri / Red Triangle.
    [02.05.2014] не забудь этот день. Чубайс должен умереть. Dixi.
    [l'Abbey des morts TSEvo EV...5%] kiwi кошелек +79178162712

  9. #6
    Master
    Регистрация
    31.03.2008
    Адрес
    Москва
    Сообщений
    573
    Благодарностей: 275
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    как у тебя определялось что и куда будет адресоваться?
    Спасибо, я уже поправил. Забыл вставить переключатель страниц. Файл, кстати, грузится
    ZXM-Phoenix rev01 2048, FloppyEmulator/SD, IDE->CF 4Gb

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

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

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

Похожие темы

  1. Помогите с расширением файла
    от Rindex в разделе Музыка
    Ответов: 6
    Последнее: 28.10.2009, 10:16
  2. Архивирование wav файла
    от p@lex в разделе Музыка
    Ответов: 4
    Последнее: 09.02.2008, 00:23
  3. Ответов: 13
    Последнее: 24.09.2006, 10:39

Метки этой темы

Ваши права

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