Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Софт (http://zx-pk.ru/forumdisplay.php?f=10)
-   -   Fatall (Фаталл) - копировщик для HDD/SD (http://zx-pk.ru/showthread.php?t=7238)

balu_dark 19th March 2010 19:30

та места как раз было полно - карта 2 гига. занято мег 100. в корне от силы файлов 40 было. а трд все расно не создавало. посему то вопрос и возник. кстати - а сделай чтото аналогичное Cntrl+A чтобы выделялись сразу все файлы на текущем диске. очень удобно было бы.

savelij 19th March 2010 19:53

Сделать можно и даже не особо сложно ;)

VELESOFT 19th March 2010 22:45

Is source code of IDE DRIVERS for FATALL free ?
I need rewrite IDE ports for european DivIDE interface:
http://velesoft.speccy.cz/zx/divide/divide-gallery.htm

http://velesoft.speccy.cz/zx/divide/...-prototype.jpg

Actually is tested new IDE DRIVER with DIVIDE ports for WDC :v2_wink2:

I can rewrite also NEMO IDE driver for FATALL if source will possible. :v2_wink:

This is ports table of russian NEMO IDE:
Code:

;-NEMO IDE Ports:-----------------------
RCOM    EQU #00F0
RHEAD  EQU #00D0

RCYLH  EQU #00B0
RCYLL  EQU #0090

RSEC    EQU #0070
RCOUNT  EQU #0050

RERR    EQU #0030

RDATL  EQU #0010
RDATH  EQU #0011

And this is european IDE ports for DIVIDE interface:
Code:

;-DIVIDE IDE Ports:---------------------
RCOM    EQU #00BF
RHEAD  EQU #00BB

RCYLH  EQU #00B7
RCYLL  EQU #00B3

RSEC    EQU #00AF
RCOUNT  EQU #00AB

RERR    EQU #00A7

RDAT    EQU #00A3

DIVIDE interface use only one DATA port (RDAT).
Reading from IDE: low byte, high byte (same as NEMO IDE)
Writing to IDE: low byte, high byte (NEMO write high byte as first and low byte as second).

READ one sector 512 bytes on DIVIDE:
LD BC,data port
INIR
INIR

WRITE one sector 512 bytes on DIVIDE:
LD BC,data port
OTIR
OTIR

:v2_thumb:

savelij 19th March 2010 23:38

1 Attachment(s)
Quote:

Originally Posted by VELESOFT (Post 266859)
Is source code of IDE DRIVERS for FATALL free ?
I need rewrite IDE ports for european DivIDE interface:
http://velesoft.speccy.cz/zx/divide/divide-gallery.htm

http://velesoft.speccy.cz/zx/divide/...-prototype.jpg

Actually is tested new IDE DRIVER with DIVIDE ports for WDC :v2_wink2:

I can rewrite also NEMO IDE driver for FATALL if source will possible. :v2_wink:

This is ports table of russian NEMO IDE:
Code:

;-NEMO IDE Ports:-----------------------
RCOM    EQU #00F0
RHEAD  EQU #00D0

RCYLH  EQU #00B0
RCYLL  EQU #0090

RSEC    EQU #0070
RCOUNT  EQU #0050

RERR    EQU #0030

RDATL  EQU #0010
RDATH  EQU #0011

And this is european IDE ports for DIVIDE interface:
Code:

;-DIVIDE IDE Ports:---------------------
RCOM    EQU #00BF
RHEAD  EQU #00BB

RCYLH  EQU #00B7
RCYLL  EQU #00B3

RSEC    EQU #00AF
RCOUNT  EQU #00AB

RERR    EQU #00A7

RDAT    EQU #00A3

DIVIDE interface use only one DATA port (RDAT).
Reading from IDE: low byte, high byte (same as NEMO IDE)
Writing to IDE: low byte, high byte (NEMO write high byte as first and low byte as second).

READ one sector 512 bytes on DIVIDE:
LD BC,data port
INIR
INIR

WRITE one sector 512 bytes on DIVIDE:
LD BC,data port
OTIR
OTIR

:v2_thumb:

Буду отвечать по русски. Надеюсь проблем с переводом не будет. Во вложении драйвер Nemo. Протестировать я все равно не смогу. Переделанный драйвер включу в fatall как еще один драйвер.

VELESOFT 20th March 2010 00:19

Quote:

Originally Posted by savelij (Post 266887)
Буду отвечать по русски. Надеюсь проблем с переводом не будет. Во вложении драйвер Nemo. Протестировать я все равно не смогу. Переделанный драйвер включу в fatall как еще один драйвер.

What is it ?
P_3F6 EQU #C8 ;РЕГИСТР СОСТОЯНИЯ/УПРАВЛЕНИЯ

And this is driver for DIVIDE interface:
Code:

Hddinit EQU 0
Hddoff  EQU 1
Hddrds  EQU 2
Hddrdm  EQU 3
Hddwrs  EQU 4
Hddwrm  EQU 5

;ОБЩАЯ ТОЧКА ВХОДА ДЛЯ РАБОТЫ С HDD DIVIDE
        EXA
        EX (SP),HL
        LD A,(HL)
        INC HL
        EX (SP),HL
        ADD A,A
        PUSH HL
        LD HL,TBLHDDN
        ADD A,L
        LD L,A
        LD A,H
        ADC A,0
        LD H,A
        LD A,(HL)
        INC HL
        LD H,(HL)
        LD L,A
        EXA
        EX (SP),HL
        RET

TBLHDDN DW HDDINIT        ;INIT HDD
        DW HDDOFF
        DW HDDRDS        ;READ SINGLE SECTOR
        DW HDDRDM        ;READ MULTI SECTOR
        DW HDDWRS        ;SAVE SINGLE SECTOR
        DW HDDWRM        ;SAVE MULTI SECTOR

;Входные параметры общие:
;HL-адрес загрузки в память
;BCDE-32-х битный номер сектора
;A-количество блоков (блок=512 байт)
;только для многоблочной записи/чтении

P_1F7  EQU #BF                        ;РЕГИСТР СОСТОЯНИЯ/РЕГИСТР КОМАНД
P_1F6  EQU #BB                        ;CHS-НОМЕР ГОЛОВЫ И УСТР/LBA АДРЕС 24-27
P_1F5  EQU #B7                        ;CHS-ЦИЛИНДР 8-15/LBA АДРЕС 16-23
P_1F4  EQU #B3                        ;CHS-ЦИЛИНДР 0-7/LBA АДРЕС 8-15
P_1F3  EQU #AF                        ;CHS-НОМЕР СЕКТОРА/LBA АДРЕС 0-7
P_1F2  EQU #AB                        ;СЧЕТЧИК СЕКТОРОВ
P_1F1  EQU #A7                        ;ПОРТ ОШИБОК/СВОЙСТВ
P_1F0  EQU #A3                        ;ПОРТ ДАННЫХ
P_3F6  EQU #C8        ;РЕГИСТР СОСТОЯНИЯ/УПРАВЛЕНИЯ (UNUSED ON DIVIDE)
P_HI    EQU #A3                        ;СТАРШИЕ 8 БИТ
PRT_RW  EQU P_1F0*256+P_HI        ;ПОРТЫ ЧТЕНИЯ/ЗАПИСИ ОДНИМ СЛОВОМ

;НА ВЫХОДЕ:
;H-ДЛЯ MASTER 0-HDD, 1-CDROM, #FF-NONE
;L-ДЛЯ SLAVE  0-HDD, 1-CDROM, #FF-NONE
HDDINIT        LD A,#E0
        PUSH HL
        CALL ID_DEV
        POP HL
        AND A
        CALL Z,INIT_91
        LD D,A
        LD A,#F0
        PUSH DE
        PUSH HL
        CALL ID_DEV
        POP HL
        AND A
        CALL Z,INIT_91
        POP HL
        LD L,A
        XOR A

HDDOFF        RET

INIT_91        PUSH HL
        LD L,49*2+1,A,(HL)
        AND 2
        JR Z,INI_912
        LD BC,#FF00+P_1F2
        LD L,#0C
        LD A,(HL)
        OUT (C),A
        LD L,6
        LD C,P_1F6
        LD A,(HL)
        DEC A
        OUT (C),A
        LD C,P_1F7
        LD A,#91
        OUT (C),A
        LD DE,#1000
INI_911        DEC DE
        LD A,D
        OR E
        JR Z,INI_912
        IN A,(C)
        AND #80
        JR NZ,INI_911
        POP HL
        RET

INI_912        LD A,#FF
        POP HL
        RET

;READ 1 SECTOR HDD
HDDRDS        LD A,1

;READ "A" SECTORS HDD
HDDRDM        PUSH BC
        PUSH DE
        CALL SETHREG
        EXA
        LD C,P_1F7
        LD A,#20
        OUT (C),A
        LD C,P_1F7
HDDRD1        IN A,(C)
        AND #88
        CP 8
        JR NZ,HDDRD1
        EXA
HDDRD2        EXA
        CALL READSEC
        LD C,P_1F7
HDDRD3        IN A,(C)
        AND #80
        JR NZ,HDDRD3
        EXA
        DEC A
        JR NZ,HDDRD2
        JR EXITNHD

;WRITE 1 SECTOR HDD
HDDWRS        LD A,1

;WRITE "A" SECTORS HDD
HDDWRM        PUSH BC
        PUSH DE
        CALL SETHREG
        EXA
        LD C,P_1F7
        LD A,#30
        OUT (C),A
        LD C,P_1F7
HDDWR1        IN A,(C)
        AND #88
        CP 8
        JR NZ,HDDWR1
        EXA
HDDWR2        EXA
        CALL WRITSEC
        LD C,P_1F7
HDDWR3        IN A,(C)
        AND #80
        JR NZ,HDDWR3
        EXA
        DEC A
        JR NZ,HDDWR2
EXITNHD POP DE
        POP BC
        LD A,B
        AND #0F
        LD B,A
        XOR A
        RET

;READ SECTOR (512 BYTES)
READSEC        LD DE,PRT_RW
        LD A,#40
READSC1        LD C,D
        INI
        INI
        INI
        INI
        INI
        INI
        INI
        INI
        DEC A
        JR NZ,READSC1
        RET

;SAVE SECTOR (512 BYTES)
WRITSEC        EXX
        PUSH HL
        LD HL,0
        ADD HL,SP
        EXX
        LD SP,HL
        LD A,#40
        LD HL,PRT_RW
WR_SEC1        POP DE
        LD C,L
        OUT (C),E
        OUT (C),D
        POP DE
        OUT (C),E
        OUT (C),D
        POP DE
        OUT (C),E
        OUT (C),D
        POP DE
        OUT (C),E
        OUT (C),D
        DEC A
        JR NZ,WR_SEC1
        LD HL,0
        ADD HL,SP
        EXX
        LD SP,HL
        POP HL
        EXX
        RET

;SET HDD PORTS
SETHREG        PUSH DE
        LD D,B
        LD E,C
        LD BC,#FF00+P_1F6
        OUT (C),D
        EXA
        LD C,P_1F7
SETHRE1        IN A,(C)
        AND #80
        JR NZ,SETHRE1
        LD C,P_1F5
        OUT (C),E
        POP DE
        LD C,P_1F4
        OUT (C),D
        LD C,P_1F3
        OUT (C),E
        LD C,P_1F2
        EXA
        OUT (C),A
        RET

;HL-АДРЕС БУФЕРА СЕКТОРА ИДЕНТИФИКАЦИИ
;A=E0-ДЛЯ MASTER, A=F0-ДЛЯ SLAVE
ID_DEV        LD BC,#FF00+P_1F6
        OUT (C),A
        LD C,P_1F7
        LD D,26
ID_DEV3        EI
        HALT
        DI
        DEC D
        JR Z,NO_DEV
        IN A,(C)
        BIT 7,A
        JR NZ,ID_DEV3
        AND A
        JR Z,NO_DEV
        INC A
        JR Z,NO_DEV
        XOR A
        LD C,P_1F5
        OUT (C),A
        LD C,P_1F4
        OUT (C),A
        LD A,#EC
        LD C,P_1F7
        OUT (C),A
        LD C,P_1F7
ID_DEV1        IN A,(C)
        AND A
        JR Z,NO_DEV
        INC A
        JR Z,NO_DEV
        DEC A
        RRCA
        JR C,ID_DEV2
        RLCA
        AND #88
        CP 8
        JR NZ,ID_DEV1
ID_DEV2        LD C,P_1F4
        IN E,(C)
        LD C,P_1F5
        IN D,(C)
        LD A,D
        OR E
        JP Z,READSEC
        LD HL,#EB14
        SBC HL,DE
        LD A,1
        RET Z
NO_DEV        LD A,#FF
        RET


savelij 20th March 2010 02:27

Quote:

Originally Posted by VELESOFT (Post 266909)
What is it ?
P_3F6 EQU #C8 ;РЕГИСТР СОСТОЯНИЯ/УПРАВЛЕНИЯ

Не используется, адреса портов названы по портам PC контроллера.

Сделал версию fatall только для divide. Попробуй. Копирование файлов из SCL образов с ошибкой.

VELESOFT 20th March 2010 03:26

Quote:

Originally Posted by savelij (Post 266955)
Не используется, адреса портов названы по портам PC контроллера.

Сделал версию fatall только для divide. Попробуй. Копирование файлов из SCL образов с ошибкой.

Fatall work. I can enter to TRD/SCL file, but after exit from trd show message "Disk empty" and right window is complette blue with pink cursor. I must press key 2 and select E:HDD MS for return to root directory... :v2_conf2:

Tested on:
- real ZX Spectrum 128+2 with Pentagon 1024 mode
- DIVIDE interface with CF card 256MB (fat 32)
- trdos + ramdisc in drive A

savelij 20th March 2010 15:15

1 Attachment(s)
Quote:

Originally Posted by VELESOFT (Post 266964)
Fatall work. I can enter to TRD/SCL file, but after exit from trd show message "Disk empty" and right window is complette blue with pink cursor. I must press key 2 and select E:HDD MS for return to root directory... :v2_conf2:

Tested on:
- real ZX Spectrum 128+2 with Pentagon 1024 mode
- DIVIDE interface with CF card 256MB (fat 32)
- trdos + ramdisc in drive A

Немного модифицировал драйвер HDD, возможно проблема была в нем. Попробуй вот в таком виде. Предыдущую версию удалил.

VELESOFT 20th March 2010 15:39

Quote:

Originally Posted by savelij (Post 267057)
Немного модифицировал драйвер HDD, возможно проблема была в нем. Попробуй вот в таком виде. Предыдущую версию удалил.

COMPACT FLASH 256MB with FAT32 partition:
ENTER and EXIT from SCL files work correct.
ENTER to TRD file is ok, but EXIT from TRD incorrect ( right window is blue with message "DICS EMPTY" )
if I set cursor in TRD image to any file and press ENTER, then also right window is blue with message "DICS EMPTY"

Same COMPACT FLASH 256MB with FAT16 partition
All work correct !!!

savelij 20th March 2010 16:28

Quote:

Originally Posted by VELESOFT (Post 267063)
ENTER to TRD file is ok, but EXIT from TRD incorrect ( right window is blue with message "DICS EMPTY" )
if I set cursor in TRD image to any file and press ENTER, then also right window is blue with message "DICS EMPTY"

Очень странно. Буду смотреть.


All times are GMT +4. The time now is 14:49.

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