There's just one thing though: the Z80 doesn't flip the highest bit of the R register,
and so R only iterates across 32k.
Not really, it doesn't access 32 Ki but 128 rows.
So how does the Leningrad refresh the entire DRAM?
Well, like any other machine using 4164 RAMs - by refreshing all 128 rows.
It is important to separate address ...
From the schematics, I can see this uses a single RAM bank, opposed to the original Sinclair machine, which uses two separate RAM banks.
That means that the entire RAM address space must be shared between the video circuit and the CPU, while the original Sinclair machine only shared 16KB of RAM. Now, it happens that DRAMs are not only refreshed using RAS ...
The original Spectrum +3 manual has a comprehensive description of the disk format:
For TR-DOS, it's worth knowing that the .TRD file format is a simple sector-by-sector dump of the disk contents with no additional headers, so any description of the .TRD format (such as this one on zx-...
Very little seems to be known about the SPC-650. Apparently it didn't sell well, and ZX Spectrum compatibles were on the whole pretty much overlooked in the far east, excepting Russia.
There's a blog which appears to claim that it, and the other clones in the series, has some design and performance changes. It doesn't say what exactly, which makes me think ...
I think possibly your emulator is fooling you. Per this FUSE feature request, leading to this patch in particular and this commit, FUSE synthesises a boot.b and adds it to the disk directory if you open a disk that does not otherwise have one.
So the reason that you can't locate the file within the disk image is that it isn't there. The emulator is ...
Look carefully at the docs again (Web Archive one).
"The file bodies are stored after the directory entries.
Basic program and data array files have an addition at the end of the file."
If it is basic program, there are 4 bytes: 2 fixed values 127,170 and autostart line number 0.. 9999.
If it is data array, there are also 4 bytes: 2 fixed values 127,170, 1 ...
The ideas behind:
DRAM access takes place at every CPU cycle.
Every other DRAM access (or slot) is for video (further differing between attribute and pixel reads), the rest slots are for CPU. In fact, CPU and video slots simply follow each other in a rigid sequence.
As the M1 read signals are active for only 1.5 clocks, the Leningrad phases or 'aligns' each ...
Working backwards from FUSE — machine_current->ram.last_byte appears to be the current state of 7ffd and machine_current->ram.last_byte2 is 1ffd:
1ffd:d1 is active high;
1ffd:d0 appears to override d1 — d1 selects which ROM would be visible in the usual ROM area if ROM were selected; d0 determines whether ROM or RAM is selected;
d1 does sit in front ...
This is only a partial answer so far.
TR-DOS was first part of the Beta 128 disk interface, which was cloned along with the Spectrum itself in Russia and Eastern Europe.
According to this Beta 128 manual I found online, by default code does both load and start at the same address. Loading such code files manually is known as "auto-run". But you can also ...
The usual way of such HW peripherials was switching the original ZX ROM (0-16384) chip for its own memory space where was usually another ROM or even RAM on the runtime. It was done by the /ROMCS pin on the extention bus/connector.
I am not famillair with TR-DOS as I was heavily using MDOS instead. The MDOS was an ZX OS extention for Didaktik D40/D80 ...
Files themselves have no header at all. Metadata is stored in the directory section of the disk, along with the filename.
The metadata has a type field, which is also the file extension. Depending on this field you interpret some of the other fields in different ways. "B" for Basic programs. "C" for machine code, or any binary file ...