PDA

Просмотр полной версии : PAGING PORTS of ZX / CLONES



VELESOFT
06.12.2009, 20:57
Is this info true ?

Pentagon 128 kB ond ZX Spectrum 128 / +2
port 7FFD: (adressation 0xxxxxxx xxxxxx0x )
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram
D4 = rom
D5 = disable paging
D6 = unused
D7 = unused

Pentagon 512 kB
port 7FFD: (adressation 0xxxxxxx xxxxxx0x )
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram
D4 = rom
D5 = disable paging
D6 = bank 3 ;256 kB memory
D7 = bank 4 ;512 kB memory

Pentagon 1024 kB
port 7FFD: (adressation 01xxxxxx xxxxxx0x )
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram
D4 = rom
D5 = bank 5 ;1024 kB memory (if D2 of port EFF7=0)
D6 = bank 3 ;256 kB memory
D7 = bank 4 ;512 kB memory
port EFF7: (adressation 1110xxxx xxxx0xxx )
D2 = 1 - set 128 kB mode
0 - enable 1MB memory
(if D2 of port EFF7=1 then D5 of port 7FFD is used for disable paging)
D3 = 1 - disable rom and connect ram page 0 in adress space 0-3FFF

ZX Spectrum 128+2A / +3
port 7FFD: (adressation 01xxxxxx xxxxxx0x )
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram
D4 = rom
D5 = disable paging
D6 = unused
D7 = unused
port 1FFD: (adressation 0001xxxx xxxxxx0x )
D0 = 1 - disable rom and allram mode
D1 and D2 set layout of ram pages if allram is set (see +3 manual)

Scorpion 256 kB
port 7FFD: (adressation - 01xxxxxx xx1xxx01 )
(adressation in REALSPECTRUM emul is also different ) :v2_wacko:
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram
D4 = rom
D5 = disable paging
D6 = unused
D7 = unused
port 1FFD: (adressation - 00xxxxxx xx1xxx01 )
D0 = 1 - disable rom and connect ram page 0 in adress space 0-3FFF :v2_conf3:
(UNREAL SPECCY emulator set after OUT 1FFD,1 ram page 0 to low 16kB, but REALSPECTRUM emulator set ram page 8 to low 16kB :v2_jawdr: )
D4 = bank 3 ;256 kB memory
D6 = unused
D7 = unused

Scorpion 1024 kB
port 7FFD: (adressation - 01xxxxxx xx1xxx01 )
(adressation in REALSPECTRUM emul is also different ) :v2_wacko:
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram
D4 = rom
D5 = disable paging
D6 = unused
D7 = unused
port 1FFD: (adressation - 00xxxxxx xx1xxx01 )
D0 = 1 - disable rom and connect ram page 0 in adress space 0-3FFF
D4 = bank 3 ;256 kB memory
D6 = bank 4 ;512 kB memory
D7 = bank 5 ;1024 kB memory

KAY 256 kB - ( compatible with SCORPION 256kB )
port 7FFD: (adressation - 01xxxxxx xxxxxx01 )
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram
D4 = rom
D5 = disable paging
D6 = unused
D7 = unused
port 1FFD: (adressation - 00xxxxxx xxxxxx01 )
D0 = 1 - disable rom and connect ram page 0 in adress space 0-3FFF
D4 = bank 3 ;256 kB memory

KAY 1024 kB
port 7FFD: (adressation - 01xxxxxx xxxxxx01 )
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram
D4 = rom
D5 = disable paging
D6 = unused
D7 = bank 5 ;1024 kB memory
port 1FFD: (adressation - 00xxxxxx xxxxxx01 )
D0 = 1 - disable rom and connect ram page 0 in adress space 0-3FFF
D4 = bank 3 ;256 kB memory
D7 = bank 4 ;512 kB memory

ZX PROFI 1024 kB
port 7FFD: (adressation - 0xxxxxxx xxxxxx0x )
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram
D4 = rom
D5 = disable paging
D6 = unused
D7 = unused
port DFFD: (adressation - xx0xxxxx xxxxxx0x )
D0 = bank 3 ;256 kB memory
D1 = bank 4 ;512 kB memory
D2 = bank 5 ;1024 kB memory

ATM 1 512 kB
port 7FFD: (adressation :v2_conf3: )
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram
D4 = rom
D5 = disable paging
D6 = unused
D7 = unused
port FDFD:
D0 = bank 3 ;256 kB memory
D1 = bank 4 ;512 kB memory
D2 = unused

ATM 1 1024 kB
port 7FFD: (adressation :v2_conf3: )
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram
D4 = rom
D5 = disable paging
D6 = unused
D7 = unused
port FDFD:
D0 = bank 3 ;256 kB memory
D1 = bank 4 ;512 kB memory
D2 = bank 5 ;1024 kB memory

molodcov_alex
06.12.2009, 21:08
ZX PROFI 1024 kB
port 7FFD adressation - 0xxxxxxx xxxxxx0x
port DFFD adressation - xx0xxxxx xxxxxx0x

---------- Post added at 21:08 ---------- Previous post was at 21:05 ----------


KAY 1024 kB
port 7FFD adressation - 01xxxxxx xxxxxx01
port 1FFD adressation - 00xxxxxx xxxxxx01

VELESOFT
06.12.2009, 21:33
And what is adressation of AY ports for all this clones ?
Porf FF adressation ?
CACHE adressation ?
Port FE adressation ?

I can implement all this ZX clones to my PROFI INTERFACE: :v2_wink2:

http://zx.pk.ru/showthread.php?t=11479

http://velesoft.speccy.cz/other/profi-2009-3d.jpg

Black_Cat
07.12.2009, 00:04
KAY 1024 kB
port 7FFD: (adressation in UNREAL SPECCY - 01xxxxxx xx1xx10x )
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram
D4 = rom
D5 = disable paging
D6 = unused
D7 = bank 5 ;1024 kB memory
port 1FFD:
D0 = 1 - disable rom and connect ram page 0 in adress space 0-3FFF
D4 = bank 3 ;256 kB memory
D7 = bank 4 ;512 kB memory

And what is adressation of AY ports for all this clones ?
Porf FF adressation ?
CACHE adressation ?
Port FE adressation ?Guide to the ZX Spectrum ports (http://zx.clan.su/forum/11-46-1)

VELESOFT
07.12.2009, 02:24
Adressation of attribute port FF:

ZX Spectrum 16/48/48+/128/+2(grey):
xxxxxxxx xxxxxxxx

ZS SCORPION 256/1024:
xxxxxxxx xx1xxx11

-------------------------------------

Adressation of ula port FE: (border/keyboard/tape)

ZX Spectrum 16/48/48+/128/+2(grey)/+2A/+3, KAY , PENTAGON 128, ZX PROFI:
xxxxxxxx xxxxxxx0

ZS SCORPION 256/1024:
xxxxxxxx xx1xxx10

Black_Cat
07.12.2009, 06:55
Scorpion ZS256 Turbo+:

#FF xxxxxxxx xx1xxx11
#FE xxxxxxxx xx1xxx10

Scorpion ZS256:

#FF xxxxxxxx xx1xx111
#FE xxxxxxxx xx1xx110

Computer ZS SCORPION 1024 has never been produced. This is an amateur expansion.

SAM style
07.12.2009, 09:24
ZS Scorpion 256 turbo+ (i'm not sure about other Scorpions)
1FFD: D1 - select shadow rom (moa service)

m.d.
08.12.2009, 11:40
Early versions (1.xx) of Pentagon 1024SL have configuration ports mostly like KAY-1024 (some memory testers work fine with such assumption) except additional bits:

Pentagon 1024 1.xx
port 7FFD: (adressation - 01xxxxxxxxxxxx01, write-only except r/w in TR-DOS mode)
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram
D4 = rom
D5 = disable paging
D6 = unused
D7 = bank 5 ;1024 kB memory
port 1FFD: (adressation - 00xxxxxx xxxxxx01, write-only)
D0 = 1 - disable rom and connect ram page 0 in adress space 0-3FFF
D1 = 1* - enable "protected mode": port 1FFD and bit 7 of port 7FFD are accessable only in TR-DOS mode
D3 = 1 - select shadow ROM (unused first page of 64k ROM)
D4 = bank 3 ;256 kB memory
D5 = 1* - lock port 1FFD and bit 7 of port 7FFD
D7 = bank 4 ;512 kB memory

* - this features can be disabled only by hardware reset.

Black_Cat
08.12.2009, 22:35
ROM / RAM managetment in the CPU0 window:

- for the all Scorpions and Pentagon-1024SL v1.xx and all KAY's and ZXM-Phoenix:

D0 #1FFD CPU0: 0-ROM, 1-RAM0 - this method of control has been supported in software.

- for the Pentagon-1024SL v2.xx:

D3 #EFF7 CPU0: 0-ROM, 1-RAM0 - this method of control has no support in the software.


ZS Scorpion 256 turbo+ (i'm not sure about other Scorpions)This is true for all the Scorpions, and ZXM-Phoenix.

Unconditional call Service ROM page for the all Scorpions and ZXM-Phoenix:

D1 #1FFD SERVICEROM>CPU0: 0-off, 1-on

ROM disk for the Pentagon-1024SL v1.xx and all KAY's and ZXM-Phoenix:

A14"ROM Change Adress - D4 #7FFD
A15"ROM Change Adress - D3 #1FFD

Recommended control RD/WR RAM in CPU0 of the future computers:

|D0#1FFD|D3#EFF7 r/wCPU0 MANAGETMENT - determines the mode of operation and type of memory in the window CPU0:
|_0 _____|_0 - rdROM(or virtual ROM*)
|_0 _____|_1 - rdROM(or virtual ROM*) & wrRAM
|_1 _____|_0 - r/wRAM0
|_1 _____|_1 - rdRAM0

Recommended control ROM disk in future computers:

D1 #1FFD SERVICEROM>CPU0: 0-off, 1-on - unconditional call Service ROM(or virtual ROM*) page.

A14"ROM Change Adress - D4 #7FFD
A15"ROM Change Adress - D3 #1FFD
A16"ROM Change Adress - D2 #1FFD
A17"ROM Change Adress - D6 #1FFD
A18"ROM Change Adress - D5 #1FFD

* - virtual ROM page - this is the image of ROM, located in a protected area of RAM.

VELESOFT
12.12.2009, 19:29
And what about ATM TURBO 2+ ports ? :v2_conf2:

Black_Cat
12.12.2009, 20:55
And what about ATM TURBO 2+ ports ?Ports identical ZX +128.

VELESOFT
13.12.2009, 00:10
Ports identical ZX +128.

ATM TURBO 2+ use 1MB memory and some extra ports. :v2_conf3:
ZX 128 use only 128kB memory.

Black_Cat
13.12.2009, 00:38
ATM is not a clone of the ZX Spectrum, although in one of the modes and is compatible with ZX +128. Mode extended memory is not intended for use with the ZX Spectrum SOS. Initially, this mode is intended solely for work in CP/M. Developers ATM did not expect to work in a mode ZX Spectrum with a RAM capacity more than 128k.
In Sam Coupe, too, there is a compatibility mode with the ZX Spectrum 48, but this does not mean that this computer is a clone of the ZX Spectrum.

CHRV
13.12.2009, 01:04
ATM is not a clone of the ZX Spectrum, although in one of the modes and is compatible with ZX +128. Mode extended memory is not intended for use with the ZX Spectrum SOS. Initially, this mode is intended solely for work in CP/M. Developers ATM did not expect to work in a mode ZX Spectrum with a RAM capacity more than 128k.

Velesoft, Sorry!
BK0010 not competent in ATM turbo. He is (BK0010) very religion man (adept of Nemo religion) and give to You false information.
If You have question for ATM and other clones please wrote me by email or on forum by next reference http://dlcorp.ucoz.ru/forum .
Good luck! :cool:

P.S. Not dispute with BK it very no point.

Black_Cat
13.12.2009, 01:51
BK0010 not competent in ATM turbo. He is (BK0010) is very religion man (adept of Nemo religion) and give to You false information.Unfortunately words CHRV not reflect reality. He mistakenly believed that the changes made in the scheme of ATM converts this computer in ZX Spectrum. He believes in it as a religious dogma. But the facts suggest otherwise. He (CHRV) is wrong and is afraid to admit their mistakes. In contrast CHRV my knowledge based on facts, not delusions. ATM has never been a clone of the ZX Spectrum, and never will be despite the fact that CHRV believe in miracles.

P.S. Persuade such religious adherents as CHRV useless, they ignore the facts.

VELESOFT
13.12.2009, 02:15
ATM is not a clone of the ZX Spectrum, although in one of the modes and is compatible with ZX +128. Mode extended memory is not intended for use with the ZX Spectrum SOS. Initially, this mode is intended solely for work in CP/M. Developers ATM did not expect to work in a mode ZX Spectrum with a RAM capacity more than 128k.
In Sam Coupe, too, there is a compatibility mode with the ZX Spectrum 48, but this does not mean that this computer is a clone of the ZX Spectrum.

O.K. But all machines with real Z80CPU, similar speed as 3.5MHz, all ZX ports and compatible memory layout is ZX COMPATIBLE or ZX CLONE (for me :v2_wink2: ). Exist any russian ZX clone ? CLONE = 100% copy = identical :v2_conf3:
No, all "ZX based computers" is only compatible with ZX, but CPU timing, screen timing, ports adressation and ZX bus is different (only similar). For example ZS SCORPION, etc. But some people sign all this computers as "ZX CLONES". Ok, it's not important for me. If any computer use real Z80CPU and can run in ZX mode, this is same. My SPRINTER 2000 is also usable in ZX mode after start up :v2_thumb:

I have real SAM COUPE and several years experiences with this hardware. If you remove rom chips from SAM COUPE and replace this with ZX ROM then will after start machine in ZX mode. ZX resolition 256x192, same ports is used, etc... :v2_wink2:

I do not care if ATM TURBO 2+ is designed as ZX clone or not. I just want to emulate the paging ports only. (for possibility using trdos with FDC ports emulation on real ZX)

Black_Cat
13.12.2009, 02:26
I do not care if ATM TURBO 2+ is designed as ZX clone or not. I just want to emulate the paging ports only. (for possibility using trdos with FDC ports emulation on real ZX)In memory manager ATM-2 uses of registry RAM 128 bits(16x8). Your CPLD is sufficient to accommodate this RAM?

VELESOFT
13.12.2009, 02:55
In memory manager ATM-2 uses of registry RAM 256 bytes. Your CPLD is sufficient to accommodate this RAM?

256 bytes ? What is access to this bytes ?
It's only 256 ports used as memory 256 bytes ?

Black_Cat
13.12.2009, 03:07
Sorry, I was wrong. Correct: 128-bit (16x8)

Vadim
22.12.2009, 09:52
ZX PROFI 1024 kB
port 7FFD: (adressation - 0xxxxxxx xxxxxx0x )
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram
D4 = rom
D5 = disable paging
D6 = unused
D7 = unused
port DFFD: (adressation - xx0xxxxx xxxxxx0x )
D0 = bank 3 ;256 kB memory
D1 = bank 4 ;512 kB memory
D2 = bank 5 ;1024 kB memory


ZX PROFI 1024 kB
port 7FFD: (adressation - 0xxxxxxx xxxxxx0x )
named on Profi CMR0
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram **
D4*= rom (rom14)
D5 = disable paging
D6 = unused
D7 = unused

port DFFD: (adressation - xx0xxxxx xxxxxx0x )
named on Profi CMR1
D0 = bank 3 ;256 kB memory
D1 = bank 4 ;512 kB memory
D2 = bank 5 ;1024 kB memory
D3 = select the window in the address space for mapping memory pages
0 - adress C000 (ZX-Spectrum 128 standart);
1 - adress 4000 Then the address c000 will bank 07
D4 = disable rom and connect ram page 0 in adress space 0-3FFF
D5*=
0 - port addresses (1F, 3F, 5F and 7F) are used to access i8255A (KP580BB55)
1 - port addresses (1F, 3F, 5F and 7F) are used to access 1818WG93
D6 = if D4=1, 8000..C000 =page6 (pixels 512x240)
D7 = screen mode 512x240 (extended video mode used in CP/M)



(*) ZX-Profi 3+ (board ver 5.xx) unlike ZX-Profi (board ver 3.xx)
use extended address space which changed the port addresses of
the expanded peripheral devices.
Combinations of these bits select the list of available ports.
Ie choose a method of addressing.
1) rom14=0 addressing as a ver 3.xx. Bit D5(dffd) selects 8255 (0) or VG93 (1)
The rest of the extended peripherals are not available.
2) rom14=1 & D5(dffd)=0 Addressing as a ver 5.xx. Set accessible peripheral expansion ports:
i8253, i8251, hw clock (mc146818), IDE interface. i8255A &1818VG93 have their addresses and ports are available at the same time.

**
3) In the enhanced video mode (512x240) this bit so chooses display options:
= 0 - pixel page 06, attributes (for each byte pixels) - 58 (72 in octal)
= 1 - pixel page 04, attributes (for each byte pixels) - 56 (70 in octal)
And also if you set bit 4 in DFFD (CMR1), then register CMR0 unlocked.
Ie it cancels bit 5=1 CMR0.

VELESOFT
30.12.2009, 22:59
If is disabled port 7FFD via OUT 32765,48 (D5=1) then will block access to paging port 7FFD. And all other paging ports for extended memory is always enabled ?

After OUT 32765,48 is possible use port 8189 in SCORPION mode, it's correct ?
Also ports DFFD in PROFI mode is usable after disable 7FFD ?
It is same on all other clones as KAY and ATM ? :v2_conf2:

Black_Cat
31.12.2009, 05:30
If is disabled port 7FFD via OUT 32765,48 (D5=1) then will block access to paging port 7FFD. And all other paging ports for extended memory is always enabled ?

After OUT 32765,48 is possible use port 8189 in SCORPION mode, it's correct ?
Also ports DFFD in PROFI mode is usable after disable 7FFD ?That's true. Clones Pentagon and Profi additionally have the opportunity to unlock the port #7FFD.
Pentagon: #EFF7 D2 = 0 - lock off D5#7FFD.
Profi: #DFFD D4 = 1 - lock off D5#7FFD & RAM0>CPU0.

Vadim
31.12.2009, 19:17
Also ports DFFD in PROFI mode is usable after disable 7FFD ?

Port DFFD not depend on 7FFD and, consequently, it remains accessible. A Bit 4 register DFFD unlocks 7FFD.

VELESOFT
16.01.2010, 02:37
What is hardware layout of 1MB memory pages on PENTAGON 1024SL 2.2 ?

This text is in documentation:
1. 7FFDh (на запись) (физический адрес %1xxxxxxxxxxxx0x)
bit 0, bit 1, bit 2 - выбор страницы ОЗУ для режима 128k
bit 3 - проецирование экрана (0 - с адреса 4000h, 1 - c адреса
C00h основной страницы)
bit 4 - выбор страницы ПЗУ (0-бейсик-128, 1-бейсик-48)
bit 5 - при bit 2 EFF7h = 0 – первый разряд расширения памяти сверх 128k
при bit 2 EFF7h = 1 - защелка (0 - порт 7FFDh работает нормально,
1 - порт и все функции, осуществляемые им, блокируются. Выход
из этого режима возможен только путем аппаратного сброса.
bit 6 - второй разряд расширения ОЗУ сверх 128k
bit 7 - третий разрад расширения памяти сверх 128k.

Software for PENTAGON 128 use only bits 0,1,2 on port 7FFD.
Software for PENTAGON 256 use only bits 0,1,2 and 6 on port 7FFD.
Software for PENTAGON 512 use only bits 0,1,2 and 6,7 on port 7FFD.
(D0-D2 is signed as BANK 0-2, D6 = BANK 3, D7 = BANK 4)

But what is "BANK" layout on Pentagon 1024SL ?
In documentation is signed D5 as first BANK (BANK 3) register of extra memory, D6 as next (BANK 4) and D7 is second (BANK 5)

On old Pentagons 256/512kB select D6 next 128kB and D7 next 256kB. But on PENTAGON 1024 is used D5 for next 128kB,D6 for next 256kB and D7 for next 512kB ?

Software writed for Pentagon 512kB will work on Pentagon 1024SL 2.2 ?
Is possible load from 512kB ramdisc some software for Pentagon 512kB ?

I need combine more memory layouts(ports) in one ZX Spectrum with 1MB memory (one memory for all modes). For example:
I set via OUT command machine ZX PROFI and sign all 1MB memory pages with page number, set logical page 31 and load some utility to ZX ram. After switch to PENTAGON 1024 must be in same memory page this utility.
Page 31 on ZX PROFI:OUT DFFD,3 + OUT 32765,16+7
Page 31 on Pentagon 512:OUT 32765,128+64+16+7
Page 31 on Pentagon 1024:OUT 32765,64+32+16+7 (or OUT 32765,128+64+16+7 ??? )

Black_Cat
16.01.2010, 13:33
On old Pentagons 256/512kB select D6 next 128kB and D7 next 256kB. But on PENTAGON 1024 is used D5 for next 128kB,D6 for next 256kB and D7 for next 512kB ?Yes


Software writed for Pentagon 512kB will work on Pentagon 1024SL 2.2 ?Yes


Is possible load from 512kB ramdisc some software for Pentagon 512kB ?Yes


I need combine more memory layouts(ports) in one ZX Spectrum with 1MB memory (one memory for all modes). For example:
I set via OUT command machine ZX PROFI and sign all 1MB memory pages with page number, set logical page 31 and load some utility to ZX ram. After switch to PENTAGON 1024 must be in same memory page this utility.Location memory pages for the different clones is not significant.

VELESOFT
16.01.2010, 16:54
Location memory pages for the different clones is not significant.

Yes, but I must contended last 512kB of 1MB memory for more internal peripherals (DivIDE interface/MB02+/ROM emulator, etc....)

Actually I must use last 64kB of 1MB ram for emulation DIVIDE inerface. This 64kB block can be removed to any other memory banks, but it's not selectable by software, this is fixed in hardware (CPLD).

What about ramdisc on different ZX clones ?
TR-DOS 5.666?? for ZX PROFI use different memory pages for ramdisc than TRDOS 6.09? for Pentagon 1024 ? (ALONE write yes - ramdisc on trdos 5.09? on Pent.1024 begin at second memory page)

Ideal will rewrite all modern TR-DOS versions for all ZX clones with 1MB memory (PROFI,ATM,SCORPION,KAY,PHOENIX,PENTAGON,etc...). Only rewrite paging code !!! If will used same ramdisc layout on all ZX clones, then will same memory layout = compatible layout. Ramdisc begin at second memory page. ZX128 memory begin at first page 0.
After switch ZX clone type will ramdisc always in same memory pages = usable

Black_Cat
16.01.2010, 17:39
If will used same ramdisc layout on all ZX clones, then will same memory layout = compatible layout.The best way to create a new standard - to kill all the developers and do as you please. :)

VELESOFT
16.01.2010, 19:23
The best way to create a new standard - to kill all the developers and do as you please. :)

1MB memory is on ZX clones often used only for ramdisc. Begin of memory is always used as ZX128 memory (extended memory = next banks after first 128kB). We need only standard (compatible) ramdisc = same TRDOS version for all 1MB machines. This is not hard. All software use classic TRDOS service calling and only trdos rom contain ramdisc support. If you replace TRDOS with new version using ramdisc from end of memory, then will memory layout on all clones identical. Assemblers and utilities can use extra memory up to 384 kB ram (if ramdisc size will full 640kB). Or 256kB ram + 128kB reserved + 640kB ramdisc.

---------- Post added at 14:23 ---------- Previous post was at 13:58 ----------

I fill all 1MB memory pages in ZX PROFI 1024kB mode and test page numbers after switch (in 48basic) to other ZX CLONES:

- pentagon 1024kB use bit D5 of port 7FFD as first paging bit of extra memory = software for Pentagon 512kB will use different memory pages on Pent.1024.

Ramdisc on Pentagon 1024kB machines must use modified numbers of ram pages for possibility use software for Pentagon 512 parallel with TRDOS ramdisc in extra ram. Ramdisc is not linear block of ram pages, all is scrambled :v2_sick:
Best way is change paging bits on Port 7FFD in PENTAGON 1024kB to this layout:
D0-D4 = same as on ZX128/Pentagon 128
D5 = bank 5 - new pagong bit for select second 512kB memory
D6 = bank 3 - compatibiliy with memory layout of Pentagons 256 and 512kB
D7 = bank 4 - compatibiliy with memory layout of Pentagons 256 and 512kB
This is better and compatible, but need correct memory paging in TRDOS 6.0x by Alone Coder. This is only idea for new ZX clones using also PENTAGON 1024 layout.

Black_Cat
16.01.2010, 20:08
Best way is change paging bits on Port 7FFD in PENTAGON 1024kB to this layout:
D0-D4 = same as on ZX128/Pentagon 128
D5 = bank 5 - new pagong bit for select second 512kB memory
D6 = bank 3 - compatibiliy with memory layout of Pentagons 256 and 512kB
D7 = bank 4 - compatibiliy with memory layout of Pentagons 256 and 512kB
This is better and compatible, but need correct memory paging in TRDOS 6.0x by Alone Coder. This is only idea for new ZX clones using also PENTAGON 1024 layoutYes, I agree :)

VELESOFT
23.01.2010, 13:18
This is adressation of ZX PROFI ports:
ZX PROFI 1024 kB
port 7FFD: (adressation - 0xxxxxxx xxxxxx0x )
D0 = bank 0 ;128 kB memory
D1 = bank 1 ;128 kB memory
D2 = bank 2 ;128 kB memory
D3 = videoram
D4 = rom
D5 = disable paging
D6 = unused
D7 = unused
port DFFD: (adressation - xx0xxxxx xxxxxx0x )
D0 = bank 3 ;256 kB memory
D1 = bank 4 ;512 kB memory
D2 = bank 5 ;1024 kB memory

Both ports use D0-D2 for set memory pages. As I see uncomplette ports adressation then is possible reset/set both ports via one OUT to port adress 0x0xxxxx xxxxxx0x . For example: OUT 1FFD,0 reset paging bits on both ports (set page 0 and disconnect extra memory). OUT 1FFD,4 set ram page 4 + extra memory block(128kB) 4. Software using write to port 1FFD for SCORPION machines or ZX128+2A/+3 can set incorrect memory page in high 16kB on ZX PROFI. Where can I find schematic of different versions ZX PROFI computer ? Last ZX PROFI versions use identical ports adressation ?

Black_Cat
23.01.2010, 19:33
VELESOFT, change decoding port #DFFD as you will be comfortable.

VELESOFT
19.01.2013, 14:45
Ideal will rewrite all modern TR-DOS versions for all ZX clones with 1MB memory (PROFI,ATM,SCORPION,KAY,PHOENIX,PENTAGON,etc...). Only rewrite paging code !!! If will used same ramdisc layout on all ZX clones, then will same memory layout = compatible layout. Ramdisc begin at second memory page. ZX128 memory begin at first page 0.
After switch ZX clone type will ramdisc always in same memory pages = usable

Done. Now exist TR-DOS 6.11Q for ZX PROFI 1024, Scorpion 1024, Pentagon 1024(v2.2 using 7FFD only),ZXM Phoenix.
http://zx-pk.ru/showthread.php?p=568409#post568409
Only in ZXM Phoenix mode detect memory size and if 2MB ram are detected, then ramdisc are in second 1MB block. This tr-dos version can be also modified for 1MB(only) support and use compatible ramdisc layout in first 1MB ram as Scopion/Pentagon/Profi....

Any next ideas ? I can in source code of TR-DOS 6.11Q add ramdisc support for other ZX models/clones as KAY 1024, Pentagon 1024 (v1.4), etc...

Vadim
24.01.2013, 13:05
Any next ideas ? I can in source code of TR-DOS 6.11Q add ramdisc support for other ZX models/clones as KAY 1024, Pentagon 1024 (v1.4), etc...
Смысл? Зачем нужен электронный диск в TR-DOS'е? На Профи электронный диск в CP/M был очень востребован в 90-е годы по причине того, что поддержки HDD не было сначала, а потом когда появилась далеко не каждый мог себе позволить такое дорогое удовольствие. Вот и использовали вместо HDD (очень, кстати продуктивно). А для TRDOS зачем? Сейчас поддержка HDD интереснее.

VELESOFT
25.01.2013, 19:08
Смысл? Зачем нужен электронный диск в TR-DOS'е? На Профи электронный диск в CP/M был очень востребован в 90-е годы по причине того, что поддержки HDD не было сначала, а потом когда появилась далеко не каждый мог себе позволить такое дорогое удовольствие. Вот и использовали вместо HDD (очень, кстати продуктивно). А для TRDOS зачем? Сейчас поддержка HDD интереснее.

Yes. HDD is best for load/save TRD images but not ideal for direct access. In ramdisc you can make TRD image and use this virtual drive for your work. Some russian games use save to TRD images and disc can't be protected. If you will work only with TRD image on HDD, then any program can rewrite or destroy data in TRD and not exist way for return to original state. If you have WDC or FATALL instead service rom(or instead 128 editor) + TR-DOS rom with ramdisc support, then after reset start FAT browser with comfortable possibility import/export TRD/SCL/HOBETA/any other files between IDE device and RAMDISC. Data in ramdisc are ideal for testing/coding and original TRD image on IDE is without changes. At end of using TRD image can be saved from ramdisc to IDE. Without save will on IDE device original TRD image without changes :-) I can also add IDE support, but with some limits (without FAT support, TR-DOS will find only unfragmented block of TRD images and you can switch between TRD images via new command... This TRD images can be on any FS = FAT16/FAT32/NTFS/etc, only can't be this block fragmented.

Vadim
25.01.2013, 19:26
В общем ответ понятен, а если нам надо сохранить оригинальный TRD (или любой другой) образ без изменений - можно на HDD сделать копию и работать с ней. Пусть даже она будет испорчена - не проблема сделать копию ещё раз, но с электронным диском конечно в этом плане проще и доступ быстрее.


I can also add IDE support, but with some limits (without FAT support, TR-DOS will find only unfragmented block of TRD images and you can switch between TRD images via new command... This TRD images can be on any FS = FAT16/FAT32/NTFS/etc, only can't be this block fragmented.
Да да, это понятно, по сути без поддержки указанных FS. Узнаем лишь стартовый сектор файла на устройстве и в путь)). Для нормальной же поддержки FAT12/16/32 не обойтись без использования дополнительного ОЗУ (страниц в расширенной памяти, к примеру) и память в ПЗУ TR-DOS нужна. Или вычищаем её от ненужных/мало востребованных функций или выносим новый код в страницу Basic-128, к примеру. Кстати, для корректной поддержки FAT12/16 (про 32 не скажу, не обдумывал), не так много и надо. Савелий для Pentevo уже это реализовал, правда пока некоторые глюки (ошибки) в реализации наблюдаются. Другой вопрос, что есть программы которые вызывают подпрограммы TR-DOS по конкретным адресам, часто без особой на то причины. Есть такие которые просто проверяют содержимое на соответствие сигнатуре, вот с ними будут проблемы.

VELESOFT
25.01.2013, 21:09
Any idea about new commands for switch TRD images ? Each TRD image=640kB. If I select TRD number 120 then shift LBA position to BEGIN(first sector of first TRD image) to 120 x 1280 ide sectors. Can be used two new commands - one for set ABSOLUTE position(number) of TRD, next for set RELATIVE position(number) of TRD.

example:
NEW 10 = select disc 10 (absolute position)
NEW +4 = jump to 4th disc (if current position is 10 then after this command is position 14)
NEW -2 = jump 2 discs back

We must also after each NEW XX command save number of selected TRD disc(position). I can save it to IDE sector, but trdos must before each read/save trdos sector also read selected TRD position. Next problem is in IDE sector size - TRDOS use 256bytes sectors and IDE device use 512kB secotrs. Then if I need save only one sector to IDE, my code must as first load one half of ide sector(256bytes) to ZX ram and save it as new 512bytes IDE sector (orig.half of ide sector + new 256 trdos sector data). And where I can find free 256 bytes in ZX ram ? On stack ?(it's can be with some loaders unusable). In extra ram >128kB ?(will work only on clones with big memory 256kB and more).

alone
25.01.2013, 21:37
Almost nobody ever types anything in TR-DOS prompt. Evo Service selects disks via menu.

VELESOFT
25.01.2013, 21:43
Almost nobody ever types anything in TR-DOS prompt. Evo Service selects disks via menu.

But it work only on EVO ?

Vadim
26.01.2013, 04:02
Any idea about new commands for switch TRD images ? Each TRD image=640kB. If I select TRD number 120 then shift LBA position to BEGIN(first sector of first TRD image) to 120 x 1280 ide sectors
Если делать полную поддержку FAT, то алгоритм будет примерно такой: - при начале работы с диском необходимо прочитать BPB из boot сектора FAT устройства, запомнить их в переменных (новых, расположенных в расширенном ОЗУ). Далее, при монтировании образа tr-dos диска, нужно посмотреть номер начального кластера. Используя номер начального кластера необходимо выбрать всю цепочку FAT из которых состоит файл .TRD. Далее, в процедурах TR-DOS чтения/записи сектора делаем анализ номера сектора (по сути в LBA формате, только относительно дискеты) - в какой номер кластера файла TRD от начала файла мы попадаем (используя ранее считанные параметры). Получив относительный номер кластера (Cluster from file start) просматриваем цепочку FAT считанную ранее, находим нужный номер кластера. Ну а далее совсем просто, используя параметры из BPB делаем расчеты в итоге получая номер сектора LBA HDD. Из номер сектора (как бы LBA 0-2559) диска TRDOS нужно получить номер сектора в кластере. Сделав and с маской кластера. Маска кластера = кол-во секторов в кластере -1. Вот и почти всё. Ещё придётся вводить буфер, т.к. программа от trdos вправе запросить для чтения 1 сектор или в запрошенном блоке секторов будет нечетное их количество. А т.к. размер сектора на hdd 512 байт, буфер необходим. (на самом деле для чтения можно сделать вариант и без буфера, если будет интересно - расскажу как).


But it work only on EVO ?
Думаю да, использована расширенная память. Скорее всего используется возможность подключения страниц в любое окно процессора.

p.s. забыл сказать, что расчёты сектора делаются на кластер, полный или нет. Т.е. вполне может быть ситуация, когда мы начинаем обращение к последнему сектору кластера. А какой он именно выясняем сделав and номера сектора относительно начала файла TRD с маской кластера. Если кластеры идут подряд (файл не фрагментирован), то более искать кластеры и делать вычисления не нужно

VELESOFT
26.01.2013, 17:11
Ещё придётся вводить буфер, т.к. программа от trdos вправе запросить для чтения 1 сектор или в запрошенном блоке секторов будет нечетное их количество. А т.к. размер сектора на hdd 512 байт, буфер необходим. (на самом деле для чтения можно сделать вариант и без буфера, если будет интересно - расскажу как).

Hmm, I have some ideas:
After open TRD file will this file(image) save to IDE as 2x longer image (each 512bytes sector contain only 256bytes of each trdos sector and second 256 bytes can be unused (fill with zero value). TR-DOS with IDE support will work only with this converted files (lenght 2x640kB=1280kB). After eject disc(close work with image) can user save image to original TRD(rewrite) or ignore all changes.

Next idea is use small swap ZX memory for use as buffer for IDE sector....

Vadim
26.01.2013, 17:43
Next idea is use small swap ZX memory for use as buffer for IDE sector....
Да, о чем я и писал выше. Можно использовать буфер на 1 сектор, тогда секторы 512 байт будут использованы полностью. В режиме чтения можно обойтись и без буфера, но с чуть меньшей производительностью: Если надо считать первые 256 байт, то читаем их как обычно, а следующие 256 в пустоту (в null). Для следующего сектора TRDOS наоборот, придется пропустить в пустоту первые 256 байт и считать оставшиеся. HDD drive кеширует данные, так что по сути производительность не уменьшится.

Alex Rider
28.01.2013, 11:29
After open TRD file will this file(image) save to IDE as 2x longer image (each 512bytes sector contain only 256bytes of each trdos sector and second 256 bytes can be unused (fill with zero value).

Where will this copy be located on a HDD?


After eject disc(close work with image) can user save image to original TRD(rewrite) or ignore all changes.

Can a user access this copy later when he forgot to eject an image before power off?

VELESOFT
28.01.2013, 20:02
Where will this copy be located on a HDD?

As 4 files before group of TRD images...



Can a user access this copy later when he forgot to eject an image before power off?

Yes. After power off and power on you can see last working image in this long files. But after open any next TRD image will previour working image rewrited.