Play_TZX.$B - impressions

ZXNet echo conference «real.speccy»

From Stanislav Yudin To All 28 June 2003

Hello Alexey!

23 Jun 03 00:00, Alexey Voskresensky -> All:

AV> section 1 of 3 of file Play_TZX.$B

With us, as usual, a person wrote a program, launched it to the masses, society
the program silently swallowed and there was no answer, no greeting. And this despite the fact that very few new programs are being released. As soon as I received PlayTZX (I had problems with FIDO and ZXNet for several days), I immediately hasten to express my thoughts. True, I was not able to fully test the program, since it turned out that none of my
tape recorders work :( But I’m working on this issue. So for now I blindly
rely on the fact that the files recorded on the cassette will be loaded into the Spectrum
without problems.

So, First of all, I’m incredibly glad that a program of this type has finally appeared on the real Spectrum.

The program is designed quite well.

I don’t know whether it’s good or not that the help is built-in. And by the way, about the help.
I was not at all pleased with the presence of swear words in it. :(

I was simply delighted by the function of viewing screensavers.

After uploading a file, for some reason the border does not turn black, this
happens only after pressing a key.

In the next version it would be possible to introduce support for TAP files. I, Of course, I don’t
know the internal organization of the program, but such support should be provided,
especially since it should not representcomplexity.

It wouldn’t be bad before displaying the message “Record file (y/n)” or somewhere else
to display a message like “Duration of file playback is XX min. XX sec.”

One more thought. This program is already enough to create collections of original versions of Spectrum programs on cassettes with only a real Spectrum. However, using out-of-tzx it will not be very convenient to make several
copies of identical cassettes. It would be possible to make sure that your program, after analyzing and compressing the TZX file, could ship the resulting semi-finished product to disk. Next, in the same program (or make a separate program), introduce
the ability to do something like a play-list with time calculation and play
the resulting semi-finished products in the established order. That is, to turn on the tape recorder to record and approach it next time just to turn the tape over. This way it would be more convenient to make even single copies for yourself. So the process of recording a cassette with programs would include the following steps:

1. Selection of TZX's required for recording.
2. Analysis, compression and recording of intermediate files to disk.
3. Creating a list of programs to record on one side of the cassette.
4. Continuous recording of one side of the cassette.

Convenience on the face. There is no need to constantly press pause and sit neartape recorder.

Stanislav

From Nikolaj Amosov To All 28 June 2003

AV>> Las.>

SY> With us, as usual, a person wrote a program, launched it to
SY> the masses, society silently swallowed the program
SY> and neither answer nor greeting. And this despite the fact that

I prefer to communicate with authors via netmail. It’s true
letters are coming (are they coming???) very slowly.

SY> that there are very few new programs coming out
SY>. As soon as I received PlayTZX (for several days
SY> there were problems with FIDO
SY> and ZXNet), I immediately hasten to express my thoughts. True, I couldn’t fully test the
SY> program, as it turned out that none of my
SY> tape recorders worked

I had the same problem - the old tape recorder completely
refused to record (whistles instead of recording), and the new tape recorder
has no inputs at all ;(
I have to connect the Spectrum with a sound card on an offtopic and
record there, and then play in the opposite direction. It’s not very convenient, but there are great possibilities for adjusting the playback speed. So I found out that the spec can
load when changing the speed + -25%. In addition, it’s very
convenient to set the sound playback at a speed of 200% and
turn on the turbo on the GMX. the toy
uses a non-standard increased speed and at the same time everything loads without
problems, then you begin to wonder why
K. Sinclair flashed it into the ROMsuch a low speed?

SY> :( But I’m working on this issue. So for now I’m blindly
SY> relying on the fact that the files recorded
SY> on the cassette will be loaded into the Spectrum without problems.

I have only one toy so far that hasn’t started after loading and
I think that this is exactly the case with the decompression according to
the contents of the ROM.

SY> So, first of all, I am incredibly glad that a program of this type has finally appeared on the real
SY> Spectrum.

Oh, such a program would have been in the early 90s, and the TZX collection there too
- it would have been possible to organize a business selling branded
toys ;)

SY> The program is designed quite well.

Not the right word.

SY> I don’t know whether it’s good or not that the help is built-in. And by the way

It’s bad - I prefer to print and read from a sheet of paper. But
it’s up to anyone...

SY> about the help.
SY> was not at all pleased with the presence of swear words in it :(

I don’t remember anything.

SY> I was simply delighted by the function of viewing screensavers.

And it’s also displayed on the screen as if it’s loading like from a tape recorder, only faster ;)

SY> Not bad before displaying the inscription “Record file (y/n)” or
SY> somewhere else, display
SY> an inscription like “Duration of file playback is XX min.
SY> XX sec.”

It would also be nice to have the opportunity after recording orWhen recording is interrupted, record the file again without scanning the game
again. In addition, it would be nice to have a little interactivity, like
insert a wait for a button to be pressed. And then suddenly there is not much space left until the end of the cassette and I know for sure that some file will not fit on the side. This is where I’ll insert a pause, and after
stopping I’ll turn the cassette over to the other side.

PS: It’s still not clear what kind of hard drive support is mentioned in the description
???

From Alexey Voskresensky To All 29 June 2003

NA> Moreover, it is displayed on the screen as if it is loading like from
NA> a tape recorder, only faster ;)

This did not happen on purpose, but to save memory. There is no
buffer for the picture, so we unpack it directly onto the screen,
and save the contents of the screen in the place where the
picture was located. Exchange, in a word. But it turned out beautifully. :)

NA> It would also be nice to be able, after recording or
NA> when
NA> interrupting the recording, to record the file again without scanning the game
NA> again.

Great idea.

NA> In addition, it would be nice to have a little interactivity, like
NA> insert a wait for a button press. And then suddenly there is not much space left to the end
NA> of the cassette and I know for sure that some file
NA> will not
NA> fit on the side. This is where I’ll insert a pause, and after
NA> stopping I’ll turn the cassette over to the other side.

Great.

NA> PS: It’s still not clear what kind of hard drive support
NA> is mentioned
NA> in the description???

What other hard drive support? There, IMHO, it only says that the program _correctly_ works with hard drives and
ram disks. Those. regular #3d13 with error control.

Good luck!

P.S. What does out 0.64 do on GMX?

...

From Alexey Voskresensky To All 29 June 2003

KF> This is an error in the
KF> program or the emulator, which is difficult to say exactly. Other
KF> programs designed
KF> for pentagon-512 in ZXStealth work correctly.

Remember that the program has not been tested in emulators and is
offered only to real-life users.

Claims about glitches in emulators are not taken seriously and are not
considered due to the focus of this program on
real-life people.

Realists, owners Pentagon-512! If you still exist,
then please let us know about the behavior of the program on your
machines.

Good luck!

P.S. In general, any criticism is useful - it stimulates
new feats for the prosperity of the real estate.

...

From Kirill Frolov To All 29 June 2003

Press RESET immediately, Nikolaj Amosov!

On Sat, 28 Jun 03 21:13:58 +0400, Nikolaj Amosov wrote:

NA> turn on the turbo on the GMX. And if at the same time the toy
NA> itself uses a non-standard increased speed and at the same time everything loads without
NA> problems, then you begin to wonder why
NA> K. Sinclair flashed such a low speed into the ROM?

1500 bps is standard. Turbo loaders (acceleration 2 times) were cassette
required adjustment of the tape recorder and loaded not very reliably.
Perhaps the use of a more different method of signal encoding would allow
to increase the speed by 2-3 times.

From Kirill Frolov To All 29 June 2003

Press RESET immediately, Kirill Frolov!

On Sun, 29 Jun 2003 10:03:52 +0000 (UTC), Kirill Frolov wrote:

Watched Play_TZX.\$B. I consider the program to be non-functional: it does not understand files
without the ".TZX" extension. That is, the file is simply ".T??" she's not happy with it. And
most disk commanders, including the quick-commander
(or Max Petrov commander) I use, do not allow you to change the two remaining letters
of the extension, which are actually the file launch address. MMD doesn't allow it either. Most copiers (from iS-DOS, MS-DOS, PC programs)
also do not use a 3-character extension. I had to use STS.

I would like to remind you of the unspoken standard for naming TR-DOS files: ONLY THE FIRST LETTER OF THE EXTENSION is significant, the rest are only
for greater clarity. A long file with a size greater than 65280 bytes
can be cut into several parts that are multiples of the sector size, and
the files “file.E”, “file.0”, “file.1”..., “file.N” will be formed on the disk.
In some cases, files may be numbered not from zero, but from one.
Sometimes there may be no numbering, and all parts of the file will have same
name. The standards in this case are dictated primarily by modem
programs (for example Melon, MMD) and copiers (from MS-DOS, iS-DOS).

I didn't like the speed of the program. The analysis time for one
of the *.tzx files I had was comparable to the recording time for this
file (savage.tzx). However, due to the lack of a large number of *.tzx files, I do not have a clear opinion about the performance of the program. Among the minor shortcomings
I remember the inability to interrupt the unloading process with the BREAK key.

When launched in the ZXStealth emulator, in Pentagon-512 mode, the program
was reset! This was not observed in other emulators. This is a program
or emulator error, which is difficult to say specifically. Other programs designed
for pentagon-512 in ZXStealth work correctly.

From Alexey Voskresensky To All 30 June 2003

It is possible, but:

1. calculating the duration takes _VERY_ a lot of time, this
will greatly affect the speed of scanning the file
2. The calculation speed can be increased at the expense of a significant loss
of the accuracy of the result.

Choose one of the two.

SY> One more thought. This program is already enough for
SY> having only a real
SY> Spectrum to create collections of original
SY> versions of Spectrum programs on cassettes.
SY> However, using out-of-tzx it will not be very convenient to make
SY> several copies of identical
SY> cassettes. It would be possible to make sure that your program

And I thought that the time of the studios had long passed (replication).

SY> after analysis and compression
SY> of the TZX file, could ship the resulting semi-finished product to the
SY> disk. Next, in the same
SY> program (or make a separate program) introduce
SY> the ability to do something like a
SY> play-list with time calculation and play back the results

[skip]

Thoughts about the playlist are interesting. But is all this really necessary?
People should say so? :)

Good luck!
...

From Nikolaj Amosov To All 30 June 2003

KF> 1500 bps standard. There were turbo loaders (acceleration 2
KF> times) cassette
KF>, they required adjustment of the tape recorder and did not load very
KF> reliably.

You know, from 1994 to 1997 I had a Turbo ROM from 1991.
And during this time I recorded a large number of cassettes at double
speed. Specially, some of the most favorite games that had
ROM loaders were recorded using TurboComp at double
speed. This did not require any adjustment of the tape recorder from me. Reliability did not suffer at all, although he wrote on Soviet cassettes and many times re-recorded cassettes. I would
say that even on the contrary, in some cases at double
speed it was possible to read something that could not be read at normal speed.
Sometimes purchased cassettes were recorded in an incomprehensible way - like a
pure tone, but not readable. In this case, if it was not possible
to unscrew such a cassette by adjusting the head, I twisted the resistor
on the cassette drive and brought it up to double speed. After this
the tape could be read. There was even a case when a chewed
program was able to be read on the turbo.

KF> Perhaps using a more different method of encoding
KF> the signal would have allowed
KF> to increase the speed by 2-3 times.

By the way, I conducted such an experiment when my tape recorder was still working for recording - I took a TurboComp copier,I loaded the game there, turned it up to double speed, turned on turbo mode on Scorp and wrote at that speed. After that, I loaded the Turbo ROM into the zero bank, gave the command to double the speed and loaded the game recorded in this way. Everything worked great.
The cassettes were not new for a long time, and the head was worn out by time. So
what...

[REAL ZX]

From Nikolaj Amosov To All 30 June 2003

Hello, Kirill!

Sunday June 29, 2003 15:19:17 Kirill Frolov -> Kirill Frolov:

KF> Watched Play_TZX.\$B. I consider the program non-functional:

[disk error]

KF> MMD does not allow either
KF>. Most of the copiers (from iS-DOS, MS-DOS,
KF> PC-programs)

Your copier in iS-DOS is strange - mine normally understands
three-character extensions and copies them correctly.

KF> also does not use a 3-character extension. I had
KF> to use STS.

Disk Doctor will help you. STS is perverted.

KF> for greater clarity. A long file with a size
KF> greater than 65280 bytes
KF> can be cut into several parts that are multiples of the size of the
KF> sector, while
KF> files "file.E", "file.0",
KF> "file.1"..., "file.N".
KF> will be formed on the disk. In some cases, the files may not be numbered from
KF> zero, and from one.

In what cases is this? And who understands such files?

KF> Sometimes numbering may not be maintained, and all parts of the file will
KF> have the same
KF> name. The standards in this case are dictated primarily by
KF> modem
KF> programs (for example Melon, MMD) and copiers (from
KF> MS-DOS, iS-DOS).

I hope one of these days a normal copier for iS-DOS will appear,
which cuts files intogives normal satellites and names...

KF> I didn’t like the speed of the program. The
KF> analysis time for one
KF> of the *.tzx files I had was comparable to the
KF> recording time for this
KF> file (savage.tzx). However, due to the lack of a large number of
KF> *.tzx files
KF> I do not have a clear opinion about the performance of the program. From

Well, I don’t know - my analysis time rarely exceeded one and a half
minutes, and that was due to the fact that for unknown reasons on GMX
the program cuts off Tubro and does not allow it to be turned on.
For one and a half minutes, even games under 16 kB will not be recorded.


KF> minor shortcomings
KF> I remember the inability to interrupt the unloading process
KF> with the key BREAK.

You can interrupt in the intervals between blocks, but at the same time
the program is reset for some reason.
Perhaps the author is afraid of the processor being slowed down by the PC
keyboard controller?

KF> When running in the ZXStealth emulator, in the
KF> Pentagon-512 mode, the
KF> program was reset! This was not observed in other emulators.

I, for fun, tried to run the program on
Unreal Speccy and on Z80Stealth in different memory configurations -
the program never worked...

KF> This is an error in the
KF> program or the emulator, which is difficult to say specifically.

For emulators there is a similar program forПЦ.


[REAL ZX]

From Maxim Timonin To All 1 July 2003

> You know, from 1994 to 1997 I had a Turbo ROM from 1991.
> And during this time I recorded a large number of cassettes at double
> speed. Specially, some of the most favorite games that had
> ROM loaders were recorded using TurboComp at double
> speed. This did not require me to make any adjustments to the tape recorder. Reliability did not suffer at all, although I wrote on
Soviet cassettes and many times re-recorded cassettes. I would
> say that even on the contrary, in some cases at double
> speed it was possible to read something that could not be read at normal speed.
> Sometimes purchased cassettes were recorded in an unclear way - like
> pure tone, but not readable. In this case, if it was not possible
> to unscrew such a cassette by adjusting the head, I twisted the resistor
> on the cassette drive and brought it to double speed. After this
> it was possible to read the tape. There was even a case when a chewed
> program was read on the turbo.

From Nikolaj Amosov To All 1 July 2003

According to the description, bit 6 of port 0 is responsible for blocking all
xxFD ports, #7ffd is addressed by #FD. Those. it should turn out to be almost
Pentagon (also enable Pentagon scan bit 7 and
connect Pentagon ROMs), but in fact it turns out to be
complete garbage - the Profin memory port #DFFD remains accessible,
although it should be disabled. In general, your program on GMX works

From Alexey Voskresensky To All 2 July 2003

NA> For fun, I tried to run the program
NA> on
NA> Unreal Speccy and on Z80Stealth in different memory configurations
NA> -
NA> the program never worked...

Does it work in real life? Well, great.
And the quality of work in emulators (for a program of this type) personally does not interest me at all.
Not because of a dislike for emulators, but because of the uselessness of this program
for emulator users.


Good luck!

P.S. Could you please tell me any information on
GMX ports - turbo control, expansion ports (i.e. memory management and specifically additional GMX ports (for example, what is the port with the address
#0000 and what bits are switched)

P.P.S. Since Vega Station (500:812/19) is temporarily not working, I don't receive soap - write if possible, in the echo.

...

From Nikolaj Amosov To All 2 July 2003

AV> This did not happen on purpose, but to save memory. There is no
AV> buffer for the picture, so we unpack it directly onto the
AV> screen, and save the contents of the screen to the place where
AV> the picture was located. Exchange, in a word. But it turned out
AV> beautifully. :)

How do you determine that you have found a picture? Apparently the file length is 6912? If so, then you are not always able to identify these same pictures. In addition, sometimes
there are pictures divided into two files - one is a graphics file, and the second is an attributes file.
Maybe it’s worth doing such a viewing?

From Nikolaj Amosov To All 2 July 2003

AV> Strange... Is it reset only on GMX? And why are you silent?

We are not silent, it’s you who don’t respond to netmail.

[disk error]

AV> P.S. Could you please tell me any information on
AV> GMX ports - turbo control, expansion ports (i.e.
AV> memory control
AV> and specifically additional GMX ports (for example, what is the port with
AV> address
AV> #0000 and what bits switch what)

AV> P.P.S. Since Vega Station (500:812/19) temporarily does not
AV> work, then
AV> I don’t receive soap - write, if possible, in the echo.

Well, here’s a little for you:

---About GMX---

Brief information on programming.
1. Distribution and assignment of input/output ports.
Unused bits are not used.
XX - any bit values are allowed.
When the power is turned on, all ports are reset to zero.
The RESET signal affects all ports except the global settings port xx00.
xxFE Border port: D0-G, D1-R, D2-B
The remaining bits are not used in GMX, they must be used on the main one board.
xxFF Screen attribute port (read only)
Reading current screen attributes when accessing any physically
not implemented port.
7FFD Configuration port
D0-SYS0
D1-SYS1 - RAM page number
D2-SYS2
D3-SCR - screen locationarea
D4-ROM1 - switching ROM 0-ZX128, 1-ZX48
D5-BLKPK - blocking output to port #7FFD
1FFD Expansion port
D0-BLK1 - blocking ROM to area 0000-3FFFh
D1-ROM2 - selecting Shadow Monitor ROM
D2-TRDOS - forced selection of TRDOS ROM
D3-
D4-SYS1 - RAM expansion up to 256Kb
D5
D6
D7
7EFD GMX mode port
D0-EWR - write permission to 28F400
D1-Vpp - enable program voltage. on 28F400
D2-MagEnable - blocking the reaction to the Magic button (0-allowed,
1-button blocked).
D3-Graphic 256*192/640*200 (0/1)
D4-A16 - address A16 on 28F400
D5-A17 - address A17 on 28F400
D6-A18 -------A18----------
D7-Normal/Turbo(0/1) - in addition there is a Normal/Turbo button
that switches to the opposite mode each time
is pressed.
DFFD eXpanded Memory port (PROFI)
D0-SM0
D1-SM1 -expansion of RAM up to 2MB
D2-SM2
Thus, the full address of the RAM page (bank) is formed in the following form:
SYS0 D0-#7FFD-lowest bit
SYS1 D1-#7FFD
SYS2 D2-#7FFD
SYS3 D4-#1FFD
SM0 D0-#DFFD
SM1 D1-#DFFD
SM2 D2-#DFFD-st.bit
When using two 256K SIMMs, the bits SM0 and SM1 can be
arbitrary. For any combination of them, the appeal will be to the same bank. SM2 bitstill selects SIMM, i.e. in fact, the computer will have banks 0-#F and #40-#4F.
78FD Port of the 2nd window (#8000-#BFFF) for working with RAM
D0-SW0 SYS0 D4-SW4 SM0
D1-SW1/SYS1 D5-SW5 SM1
D2-SW2 SYS2 D6-SW6 SM2
D3-SW3 SYS3 D7-not yet used
Hardware inversion of bit D1 is necessary so that after
resetting the memory area #80000-#BFFF corresponds to bank #2. This
inversion must be taken into account when programming.
7AFD Scroller port ml.byte (8 bits)
D0-ml. bit
..........
D7-st. bit
In this case, D0,D1,D2,D3=0, i.e. Scrolling is possible in increments equal to
one graphic line.
7CFD Scroller port high byte (6 bits)
D0-ml. bit
..........
D5-st. bit
Unfortunately, in the GMX circuit it is not possible to read the current state of the scroller ports, so we strongly recommend that to preset these ports not to use direct writing
to them, but to use a special call to the shadow monitor (TM) function via RST8. In this case, the internal TM programs will correctly monitor the current state of the scroller ports and will not
disturb the screen structure after entering/exiting the TM using the Ma-
gic button.
xx00 Global settings port
D0-CONF0
D1-CONF1 FLEX8000 configuration option (select
D2-CONF2 one of the schemes)
D3-RECONF-record 1+CONF0..2-Overload GMX with a given circuit
D4-FIXROM-1 fixes the high Flash addresses (A16,A17,A18) in
port #7EFD, including 64Kb ROM with a specific firmware (for example
standard or test), while the RESET signal
does not reset these bits and There is no reboot of the GMX circuit.
D5-BLEXT - 1 blocks all new GMX ports, i.e. it turns out
the original SCORPION ZX256 TURBO+.
D6-BLEX2 - 1 (together with BLEXT=1) blocks all xxFD ports,
7FFD is addressed via FD at A15=0, in this case it is necessary to connect
ROM with standard firmware (A16=1, A17=0, A18=0 in port #7EFD)
D7-ST/PENT - 0-standard generation of the INT signal (at the end of the
KS), as well as a frame synchronization period of 312 lines; 1 - INT at
the beginning of the KS, period KS-320 lines (for the Pentagon scheme). The port is selected when A0..A7=0 (i.e. it has full decryption).
The RESET signal on port xx00 has no effect. It can be reset
only by loading a new circuit configuration option, or
turning off the power, i.e. loading the source circuit.
Since the GMX port is writable in any mode for proper operation, never write data to it!
Doing so will almost certainly freeze or incorrectly reboot the computer.
2. Reading the GMX configuration
When you press the Magic button, part of the bits of the registers described aboveis written to latch registers, i.e. The computer configuration is recorded at the moment you press Magic. These registers
are opened for writing again after a "idle" reading of port #FF. The digits that are latched are marked*. The remaining bits are simply
translated. When reading ports from programs (without pressing Magic), their current state is read.
#7AFD Port of the first window (#C00-#FFFF)
* D0 - SYS0
* D1 - SYS1 Bits D0-D2 of port 7FFD (Configuration port)
* D2 - SYS2
* D3 - SYS3 Bit D4 of port 1FFD (Expansion Port)
* D4 - SM0
* D5 - SM1 Bits D0-D2 of the DFFD port (eXpanded Memori
Profi Port))
* D6 - SM2
D7 - BRD0 - Bit D0 of the 0FEH border port
The second column shows the correspondence of the digits of this port to the digits ports 7FFD and DFFD to ensure selection of RAM pages of the same name.
#7EFD Mode port
* D0 - BLKPK1 Bit D5 of port 7FFD (Configuration Port)
* D1 - SCR Bit D3 of port 7FFD (Configuration Port)
* D2 - Normal/Turbo
* D3 - Graphic 256*192/640*200(0/1)
D4 - ST/PENT digit D7 of port xx00 (Global settings port)
D5 - BLKEXT digit D5 of port xx00(------------------)
* D6 - BLK1 digit D0 of port 1FFD (Expansion port)
D7 - BRD2 digit D2 of port 0FEH curb
#78FD 2nd window port(#8000-#BFFF)
D0 - SW0 SYS0
D1 - SW1 SYS1
D2 - SW2 SYS2
D3 - SW3 SYS3The format corresponds to the same register
D4 - SW4 SM0 for writing
D5 - SW5 SM1
D6 - SW6 SM2
D7 - BRD1 Bit D1 of port 0FEH border

3.Additional features.
These features are used for the operation of the Shadow Monitor and are described solely for the sake of completeness.
3.1 Made so that the action of the BLKPK1 bit (D5 of the 7FFD port (Configuration Port) is disabled when the D2 bit of the 7EFD (MGEN) port is set 3.2 If MAGIC is pressed when the ROM is locked (bit D0-BLK1
port 1FFD (Extension Port), then reading commands and data comes from the ROM, and write cycles are sent to RAM (i.e. write lock is in effect).
4. Flash ROM firmware map.
#00000-#01FFF - GMX startup bootloader, which then transfers
control to the address of the selected firmware
#02000-#03FFF - GMX startup configuration (circuit) when power is turned on
#04000-#05FFF -working circuit GMX
#06000-#07FFF -parameter block and service information GMX
#08000-#0FFFF -4 more configuration options (circuits) GMX
#10000-#1FFFF -Standard firmware (48+128+TRDOS v5.03)
#20000-#2FFFF -GMX test
#30000-#3FFFF -Free for now, in the future - expansion of the electronic ROM disk
#40000-#7FFFF -Scorpion with shadow monitor (version G4_03 or
later)

5. Graphic screen 640*200
Number of colors as well in a regular ZXSpectrum, but unlike ZX, each byte of graphics corresponds to a byte of attributes.
In order for the image to be in color, it is necessary to have 2 SIMMs, i.e. at least 512K. The addressing of the graphic screen starts from C000h, and is completely linear, i.e. the first 80 bytes are the first line of the screen, the next 80 bytes are the second line, etc. The graphic screen itself is located in bank #39(SCR=0)
or #3A(SCR=1). In total, the screen has 200 graphic lines and takes up 16,000 bytes of memory for graphics and the same amount for attributes.
Screen attributes are stored in a similar page of extended memory (SM2=1, D2-port DFFD), i.e. #79 or #7A. The addressing of attribute bytes is the same as for graphics bytes, the attribute byte structure is standard.
The main purpose of extended graphics is a standard
text screen of 80*25 characters (character 8*8 pixels), necessary for working with text editors and terminal programs.
To speed up work in text mode, it is used hardware scrolling up and down. To shift the image vertically by any number of lines, you only need to write
two bytes to the “scroller” ports, which specify the starting address in the video RAM area for image output. Ports #7AFD (low byte)
and #7CFD (high byte) are like a single 14bit register. Thus, in order to shift the image down one graphic line, you need to write the number 80d into this register, one text line - 640d, N text lines
- 640*N(N<=25). Note that the minimum scrolling step is equal to
one graphic line, since the least significant four bits are reset by hardware. We strongly do not recommend using direct
writing of data to the scroller ports. To set the scroller ports
use the appropriate function of RST 8.
6. Features of the implementation of the Pentagon computer circuit
The circuit of the Pentagon 128 computer implemented on the
GMX board (circuit 4) has the following features:
-all of the above “non-standard” GMX ports are absent;
-configuration port #7FFD is decrypted when A1, A15=0;
-the border port is decrypted at A0=0;
-simultaneous recording to these ports is allowed;
-the contents of the border register are displayed on the screen without gating;
-writing to the configuration and border ports is performed at the beginning of the processor write pulse;
-the frame synchronization period is 320 lines;
-the INT interrupt pulse is formed at the beginning of the frame sync pulse;
-the interval between the interrupt pulse and the active part of the screen is
80 lines.
All of the above features provide full compatibility with the Pentagon computer, includingparticulars when implementing various border and multicolor effects in demo programs.

After modification, the D2 bit of port #1FFD, in addition to the forced selection of the TRDOS ROM, will switch the main
decoders of the board, allowing direct access to the
TRDOS ports.
Changed layout of port #1FFD (expansion port):
D0- 1 blocking ROM in area 0000-3FFFh
D1- 1 selection of Shadow Monitor ROM
D2- 1 selection of TRDOS ROM and permission to access TRDOS ports from RAM
D4- 1 expansion of RAM up to 256K.

Material taken from the Connection, Programming
and Operation Manual.
GMX.
Company Scorpio 1998
---End of file---

[REAL ZX]

From Alexey Voskresensky To All 3 July 2003

NA> By the way, how do you know that the game is protected by Softlock? Will this be
NA> indicated in the text messages that appear during
NA> scanning?

Yes. For example, the message - Start Group: Softlock Group
Or something similar.

NA> Something is wrong with #3d13 - I load the program from
NA> hard drive,
NA> and immediately after launch it goes to the drive.

When I already posted this program in the echo, I discovered that I forgot to remove
forced access to drive A (I have firewood loaded
always from drive A).
And I couldn’t post it a second time: 812/19 was temporarily retired...

Well, it’s all bullshit, it’s still a test version, so consider
that this was done on purpose. :)

I'll finish the next beta version soon.
What has already been done:
1. Repeat recording without rescanning.
2. I made a search specifically for Frolov using the first character of the extension
3. The driver does not spoil the contents of buffer #5b00-#5bff (for
some homemade ROM firmware)
4. Still, I did the processing of tap files, albeit with reluctance.

What may still be done: Calculation of playback duration.

What will NOT be done even optionally:
pausing playback by key and constant
Break poll to interrupt playback:
due to a pathological fear of the brakes of XT/AT keyboard controllers.

NA> Found my letter in point-and-click?

Because the Vega Station node(500:812/19) is temporarily out of touch, so soap doesn’t come to me _at all_. (I hope, temporarily.)

NA> In general, your program on GMX works
NA> only with the above out. In all other cases
NA> hangs after confirming the memory driver selection. What
NA> is there

When choosing ANY memory driver? (for example, Pent-128, Scorp-256)?

NA> business? Are you trying to test additional memory after this? In
NA> in any case, it is not clear why such an inadequate reaction...

An idea appeared: check (test) whether commands
type outi and outd pass through GMX to access expansion ports. If they don't
pass (they don't work as they should according to the documentation for the z80),
then the problem is with them.

And if it's not with them, then... we'll figure it out.

Two other questions:
1. When does the turbo cut out? (which bit of which port responds)
2. In what cases is it reset by break during recording?

NA> Write in more detail with the addresses, what and how happens after
NA> confirmation - I’ll try to determine what we’re stuck on.

What we consider confirmation:
1. selecting a driver from the list (pressing Enter)?
2. positive answer to the question "OK y/n" after testing
available memory ?

Good luck!
...

From Nikolaj Amosov To All 3 July 2003

Hello, Alexey!

Thursday 03 July 2003 07:00:09 Alexey Voskresensky -> Nikolaj Amosov:

NA>> By the way, how do you know that the game is protected by Softlock? Will this
NA>> be
NA>> indicated in the text messages that appear during
NA>> scanning?

AV> Yes. For example, the message - Start Group: Softlock Group
AV> Or something similar.

Yes, I remember such an inscription.

NA>> In general, your program on GMX works
NA>> only with the above out. In all other cases
NA>> hangs after confirming the memory driver selection. What's
NA>> here

AV> When choosing ANY memory driver? (for example, Pent-128,
AV> Scorp-256)?

Yes, absolutely any driver.

NA>> business? Are you trying to test the additional memory after this?
NA>> In
NA>> in any case, it is not clear why such an inadequate
NA>> reaction...

AV> An idea appeared: check (test) whether commands
AV> like outi and outd pass through GMX
AV> to access expansion ports. If
AV> do not pass (they do not work as they should according to the documentation for
AV> z80),
AV> then the problem is in them.

And here is the letter I wrote to you about this:

======================================== ne-0226a.0 ==========================

[disk error]

In addition, I’ve been digging around a little in the program on subject
of discoverycode that for some reason turns off Turbo mode for me immediately after loading the program. Here's what I dug up:

#BEE5 PUSH HL:LD HL,#B934:JR #BEEC
PUSH HL
#BEEC DI
PUSH BC
LD BC,(#B9D4):OUTI
LD BC,(#B9D6):OUTI
POP BC:POP HL
RET

Shadow monitor why then it turned out to be unable to trace the
OUTI command. But for some reason, after executing this fragment of code, the program crashes on GMX. If you do not trace anything, then the program starts normally (with the turbo turned off and the entry to the Shadow Monitor menu disabled), after that I select the memory driver, the program waits for confirmation, I confirm and the program hangs.

GMX full in connection with this. What have you done with the ports, why are you hanging up the hardware? And why do you have such a “non-standard”
output to the port (OUTI)?

If you switch the computer to Pentagon mode, then everything works and the Turbo
doesn’t go out. If you forcibly (out 0.64) turn off unnecessary
ports, then the turbo also does not go out and the program does not hang after agreeing
with the selected driver. Based on the above, we conclude that you have hooked the GMX port somewhere. Let's look?

================================================================================

AV> And if it's not them, then... we'll figure it out.

It looks like it's all about OUTI. Well, how can this be, because
Z80 is made of iron and not emulated?!

AV> Two other questions:
AV> 1. When does the turbo cut off? (which bit of which port
AV> responds)

See. my previous letter - everything is described in detail there.

AV> 2. In some cases, is it reset by break during recording?

After scanning and starting recording, I needed to interrupt the
process. I hold BREAK, we reach the end of the next block and
a reset occurs.

NA>> Write in more detail with the addresses, what and how happens after
NA>> confirmation - I’ll try to determine what we are hanging on.

AV> What do we consider confirmation:
AV> 1. selecting a driver from the list (press Enter)?
AV> 2. positive answer to the question “OK” y/n" after
AV> testing
AV> available memory?

Second.


[REAL ZX]

From Vlad Sotnikov To All 3 July 2003

AV> P.P.S. Since Vega Station (500:812/19) is temporarily not working, then
AV> I don’t receive soap - write, if possible, in ehy.

No big deal! :) When writing a letter to the gate address (2:5030/675.50 or
2:5030/1512.50) with the correct spelling of the first and last name (simply - F4)
the letter will arrive at the station perfectly. With grief in half, but an hour a day she plows me...


Vega/ex-Style Group.


FIDO: 2:5030/1512 ZXNET: 500:812/19 E-mail: veg...@mail.ru

From Vassili Klimov To All 4 July 2003

Hello Alexey!


AV> An idea appeared: check (test) whether commands
AV> like outi and outd pass through GMX to access expansion ports. If not
I hope you are aware that these teams do decrement reg. B before output to
port or not?


pokedova Alexey
jtn\\4d

From Vassili Klimov To All 4 July 2003

Zdarova Nikolaj !

NA>
NA> #BEE5 PUSH HL:LD HL,#B934:JR #BEEC
NA> PUSH HL
NA> #BEEC DI
NA> PUSH BC
NA> LD BC,(#B9D4):OUTI
NA> LD BC,(#B9D6):OUTI
NA> POP BC:POP HL
NA> RET
NA>
NA> For some reason the shadow monitor was unable to trace the
NA> OUTI command. But for some reason, after executing this fragment, it completely writes not to the required port, but to BC-256

NA> It looks like the problem is with OUTI. Well, how can this be, because
NA> The Z80 is a hardware one, and not emulated?!
and in the docs this ^^^ is not documented anywhere, although most emulators
emulate it

conclusion: enter numbers 256 larger in the addresses #B9D4 and #B9D4

pokédova Nikolaj
jtn\\4d

From Kirill Frolov To All 4 July 2003

VS> Wow! :) When writing a letter to the gate address (2:5030/675.50 or
VS> 2:5030/1512.50) observing the correct spelling of the first and last name (simply
VS> - F4)
VS> the letter will arrive at the station perfectly. With grief in half, but an hour a day she
VS> y
VS> plows me...

She doesn’t plow. Permanent NO CARRIER or BUSY. It's been two days already.

From Alexey Voskresensky To All 5 July 2003

The gmx doesn't only have the z80. Glitch surrounded by z80.
In short, I found out what was going on.

GMX SUCKS!

The footcloth flew into the dust about this.

Good luck!
...

From Alexey Voskresensky To All 5 July 2003

VK> B before output to the port or not?
^^^^^^^^^^^^^^^

Don’t drive.

_After output to the port_.

According to the documentation - after output to the port.
In practice - after output to the port.

I tested in every possible way and found out that everything is fine:

First it outputs from (hl) to port BC, and only _after_the_conclusion_
we reduce reg.B by one.

So, sir, check first, and then teach your father to bang.

Good luck!

...

From Alexey Voskresensky To All 5 July 2003

VK> and in the docs this ^^^ is not documented anywhere, although most
VK> emulators emulate this.

What are they emulating?!! Before outi they decrement register B, and
after that they send the required value to the port?!

I say: G o n ish !

And period.

Good luck!
...

From Alexey Voskresensky To All 5 July 2003

VK>> I hope you are aware that these commands do decrement
VK>> reg. B
VK>> before being taken to the port or not?

NA> Or maybe everyone is like this after being taken to the port?

After, after.

Imho, soon a choir of bunny boys will gather here
and they will perform 'Pioneer Dawn'...

Good luck!
...

From Nikolaj Amosov To All 5 July 2003

AV>> commands like outi and outd to access expansion ports.
AV>> If not

VK> I hope you are aware that these commands decrement reg. B
VK> before output to the port or not?

Or maybe they are all like this after output to the port?

From Vlad Sotnikov To All 5 July 2003

VS>> or 2:5030/1512.50) subject to the correct spelling of the first name and
VS>> last name (simply F4), the letter will arrive at the station perfectly. With
VS>> we are heartbroken, but she plows for me an hour a day...
KF> She doesn’t plow. Permanent NO CARRIER or BUSY. It's been two days already.

Revived. Now it works according to the old schedule...

From Vassili Klimov To All 5 July 2003

NA>
NA> Or maybe everything is like this after being brought to the port?
it can’t, but it is: first dec B and then OUT
has been discussed several times, and proven experimentally, although not a single
documentation mentions

pokedova Nikolaj
jtn\\4d

From Nikolaj Amosov To All 6 July 2003

AV> GMX may write to the bc-256 port, but it doesn’t write - I checked.

AV> G L Y K PLM firmware!!! Say thank you to S. Zonov for such a
AV> surprise...


[REAL ZX]

From Nikolaj Amosov To All 6 July 2003

VK> can’t, but it is: first dec B and then OUT
VK> has already been discussed several times, and proven empirically,

Give an example.

VK> although not mentioned in any documentation
VK>

I checked - it didn’t work.

[REAL ZX]

From Valerij Kozhevnikoff To All 7 July 2003

Hello, Alexey!

05 Jul 03 07:12, Alexey Voskresensky -> Vassili Klimov:

AV> Don’t drive.
AV> _After output to the port_.

_Before._

AV> According to the documentation - after output to the port.
AV> In practice - after output to the port.

You are wrong. I stepped on this rake 5 years ago.

AV> I tested it in every possible way and found out that everything is fine:
AV> First it outputs from (hl) to port BC, and only _after_output_
AV> we reduce reg.B by one.

AV> So, sir, check first, and then teach your father to fuck off.

Do you have Scorpio? Here's a piece of shadowman's disassembler:

WRITE PUSH HL ;write sector
LD C,#BE
LD DE,#D9F9
XOR A

L1C9F LD B,D ;#D9
INC HL
OUTD
LD B,E ;#F9
OUTI
INC HL
DEC A
JR NZ,L1C9F

POP HL
RET

Real port addresses are #D8BE, F8BE.
Here is a piece of my driver that actually uses them:

_OUTPUT
PUSH DE
LD (STORE+1),SP
LD SP,HL
LD DE,#D8F8
_OUTSP
POP HL ;10
LD B,D ;4
OUT (C),H ;12
LD B,E ;4
OUT (C),L ;12 42

From Valerij Kozhevnikoff To All 7 July 2003

From Vassili Klimov To All 7 July 2003

AV> So, sir, check first, and then teach your father to bang.
tested poorly means straighten your arms, but better try this:

LD HL,BUFER:LD BC,#COFD:OUTI
and try just say that it doesn’t work the same way as
LD HL,BUFER:LD BC,#BFFD:LD A,(HL):OUT(C),A
Not counting the damage to the reg.A

more options:

LD (HL),#18:LD BC,#80FD:OUTI
will switch the screen

enough?

pokedova Alexey
jtn\\4d

From Vassili Klimov To All 7 July 2003

AV>
AV> What are they emulating?!! Before outi, they decrement register B, and
AV> after that they send the required value to the port?!
AV>
AV> I assert: Go on!
answer for your words
AV>
AV> And period.
not 3.14###


pokedova Alexey
jtn\\4d

From Vassili Klimov To All 7 July 2003

AV>
AV> After, after.
AV>
AV> IMHO, soon a choir of bunny boys will gather here
AV> and they will perform 'Pioneer Dawn'...
I bet you a box of strong drinks that it's the other way around?


pokedova Alexey
jtn\\4d

From Vassili Klimov To All 7 July 2003

July 2003 07:18:46 Alexey Voskresensky -> Vassili Klimov:
NA>
NA>>> For some reason the shadow monitor was unable to
NA>>> trace
NA>>> the OUTI command. But for some reason, after executing this
NA>>> fragment,
VK>> completely writes not to the desired port, but to BC-256

From Vassili Klimov To All 7 July 2003

NA>
NA> I checked - it didn’t work at all.
if you’re not a coder, it’s better not to come here, but if you’re a coder, then download asm/sts again and
make sure it’s different

pokedova Nikolaj
jtn\\4d

From Vassili Klimov To All 7 July 2003

VK>
VK> Are you Scorpio? Here's a piece of the shadow's disassembler:

with ports AY and #7ffd it's more clear - you can hear and see how it works

pokedova Valerij
jtn\\4d

From Nikolaj Amosov To All 7 July 2003

VK> if you are not an encoder, it is better not to come here, but if you are an encoder, then again
VK> load asm/sts and make sure
VK> of the opposite

Once again I was convinced that Play_TZX does not work if you catch it on
OUTI with a forced increase in register B.

[REAL ZX]

From Kirill Frolov To All 7 July 2003

On Wed, 02 Jul 03 06:07:10 +0400, Alexey Voskresensky wrote:

AV> P.S. Could you tell me any information on
AV> GMX ports - turbo control, expansion ports (i.e.
AV> memory control and specifically additional GMX ports (for example, what is the port with the address
AV> #0000 and what bits are switched)

There is a text. 168 kb. It will be difficult for you to catch it from the echo - in spbzkhnet
anything larger than 16 kb in size (and who came up with such a stupid restriction
?) is cut for naught. So now I’ll rant... I hope my yuuker
unpacks normally on the Spectrum....

From Kirill Frolov To All 7 July 2003

Press RESET immediately, Nikolaj Amosov!

On Mon, 30 Jun 03 20:43:11 +0400, Nikolaj Amosov wrote:

KF>> 1500 bps standard. There were turbo loaders (acceleration by 2
KF>> times) cassette> ones, they required adjustment of the tape recorder
NA> You know, from 1994 to 1997 I had a Turbo ROM from 1991.
NA> And during this time I recorded a large number of cassettes at double
NA> speed. Especially some of the most beloved games that had

However, a lower speed is theoretically more reliable.
In practice, both the loader in the ROM and the encoding method do not contribute to reliable
reading.

From Kirill Frolov To All 7 July 2003

NA> Give an example.
VK>> although it is not mentioned in any documentation
NA> I checked - it didn’t work.

Kozhevnikov is right. In any documentation (even in the modern one from the zilog website,
or in the proprietary Z80 users manual) there is complete garbage about these commands.
In some cases, register B is reduced before output to the port, in some
after output to the port. The effect on flags is also strange at times.

From Kirill Frolov To All 7 July 2003

AV> After, after.

Have you checked? Did you check it well? On real hardware (in emulators, too
everything is wrong), A8 exactly fits into 555ID7?

AV> IMHO, soon a choir of bunny boys will gather here
AV> and they will perform “Pioneer Dawn”...

By the way, I was wrong about the paper manual Z80 - everything is correct there.
But in the Minsk book, in Larchenko and Rodionov and in many other
places incorrect data is given (they don’t even know about the INF
command...)
DECREASE BY 1 REGISTER B AND INCREASE BY 1 REGISTER HL
OCCURS BEFORE OUTPUT TO THE PORT. The value of the memory cell
addressed by HL is previously stored somewhere there.

From Kirill Frolov To All 7 July 2003

AV> GMX may write to the bc-256 port, but this is -
AV> G L Y K PLM firmware!!! Say thank you to S. Zonov for such a
AV> surprise...

This is not a bug, this is a feature - the port address is specified not by some number,
but by a combination of signals on the address lines A0..A15. SOME OF THEM ARE NOT DECRYPTED. Therefore, the port must be specified with at least a pair
of numbers - the address and mask of the bits to be decrypted.

AV> What is being emulated?!! Before outi, they decrement register B, and
AV> after that they send the required value to the port?!
AV> I say: G o n i s h !
AV> And that’s it.

This question was thoroughly discussed in this echo 4 years ago
when Lara Croft was stuck with some driver.

From Kirill Frolov To All 7 July 2003

VK> and in the docs this ^^^ is not documented anywhere, although most emulators emulate this
VK>

I was wrong about the paper manual. It contains correct
information (but there are still other shortcomings):

OUTI:
The contents of the HL register pair are placed on the
address bus to select location in memory. The byte contained
in this memory location temporary stored in the CPU. Then,
after the byte counter (B) is decremented, th contents of
register C placed on the bottom half (A0 through A7) of the
address bus to select I/O device at one of 256 possible ports.
Register B may be used as a byte counter, and _its_ _decremented_
_value_ is placed on the top half (A8 through A15) of the
address bus. The byte to be output is placed on the data bus
and written into selected peripheral device. Finally register
pair HL is incremented.

For OUTD, OTIR and OTDR the same. But for the INI, INIR, IND and
INDR input commands, the opposite is true, register B is placed on the bus BEFORE DECREMPT:

INI:
The contents of register C are placed on the bottom half
(A0 through A7) of the address bus to select the I/O device
at on of 256 possible ports. Register B may be used as a byte
counter, and its content are placed on the top half (A8
through A15) of the address bus at this time. Then one byte
from selected portis places on the data bus and written to
the CPU. The contents of the HL register pair are placed on
the address bus and the input byte is written into the
corresponding location of memory. Finally the byte counter
is decremented and register pair HL is incremented.


From Kirill Frolov To All 7 July 2003

On Mon, 30 Jun 03 20:55:35 +0400, Nikolaj Amosov wrote:

NA> For fun, I tried to run the program on
NA> Unreal Speccy and on Z80Stealth in different memory configurations -
NA> the program never worked...

I already realized that the program uses the instruction incorrectly processor
OUTI.

From Nikolaj Amosov To All 8 July 2003

KF> Kozhevnikov is right. In any documentation (even in the modern
KF> from the zilog site, or in the proprietary Z80 users
KF> manual) there is complete garbage about these commands. There, the register
KF> B for some is reduced before output to the port, for some
KF> after output to the port. The effect on flags is also
KF> strange at times.

Maybe someone will write a test to compile a database on processors - who
works? Maybe someone will need it in the future...

By the way, now it’s clear why I, back in 1995, failed to make friends with AY
- it was because I threw such a command at the port.

From Dima Bystrov To All 12 July 2003

Hello Kirill!

29 Jun 03 15:19, Kirill Frolov wrote to Kirill Frolov:

KF> file launch. MMD doesn't allow it either. Most copiers (from
KF> iS-DOS, MS-DOS, PC programs) also do not use the 3-character
KF> extension. Had to use STS.
ACE can rename (R button in directory mode)

From Dima Bystrov To All 12 July 2003

Hello Alexey!

05 Jul 03 07:18, Alexey Voskresensky wrote to Vassili Klimov:

AV> What are they emulating?!! Before outi they decrement register B, and
AV> after that they send the required value to the port?!

AV> I say: G o n i s h !
what processor do you have? on my 1858VM1 - decrement before.
in the ini command, on the contrary - after.

- Alone Coder [ZX-Guide] [Inferno] [AlCoNews] [ACEdit0.73] [PT3.64] [Chip1.3]
[STS5.6rus] [ANSI0.3G] [8col0.04] [ZXRAR] [ZXUNRAR0.48c3]