SMUC
ZXNet echo conference «real.speccy»
From Stanislav Udin → To All 26 July 2001
I'm faced with a problem that I can't solve yet, maybe someone
can advise something. I am writing commander. In it you can select drives A, B, C, D, E.
Where drive E is the hard drive. We select E - we see the partition table of the screw (this is done). We bring the cursor to the desired partition, press ENTER and get into the list of disks in the partition (this is also done). Next, select the desired disk, press ENTER and, in theory, should get into this disk, but this is where the problems begin. Inside
the commander I have to temporarily connect this image to drive D and the shadowman sees
that I connected it correctly (using the shadowbox you can display a directory, etc.), but as soon as I access from my commander the connected
disk, then everything goes wrong, the disk immediately turns off and turns on real
disk drive, something goes wrong in the shadow drive and when you reset, the computer is completely reset. In an article by Vlad Sotnikov, I read that in order to fully connect a drive, you need to manually change the emulation sector by recalculating the CRC,
however, this method is not acceptable to me, primarily because the subroutine
(or rather table) for calculating CRC is too large, and I already have There is no longer enough memory. I tried to look for this procedure in the ROM (I dug the ENTIRE image of my own
ProfPZU on the offtopic) and did not find it. Is it really not possible to use this procedure directly from ROM? Is it possibleIt’s time to connect the section, God bless him that he
will not register in the sector? Or maybe it’s possible to rewrite the subroutine for calculating CRC without this huge table?
How can I solve this problem? Waiting for advice.
Stanislav
From Vlad Sotnikov → To All 26 July 2001
July 26, 2001 (and it was 11:37 then)
Stanislav Udin wrote in his letter to All:
SU> I encountered a problem that I can’t solve yet, maybe
SU> someone will advise something. I am writing commander. In it you can select
SU> drives A, B, C, D, E. Where drive E is the hard drive. We select E - we see
SU> the table of partitions of the screw (this is done). We bring the cursor to the desired
SU> partition, press ENTER and get into the list of partition disks (this is also
SU> done). Next, select the desired disk, press ENTER and, in theory, should
SU> get into this disk, but this is where the problems begin. Inside the
SU> commander I have to temporarily connect this image to disk D and the shadow
SU> sees that I connected it correctly (using the shadow machine you can display the
SU> directory, etc.), but as soon as I access from my commander the
SU> connected disk, then everything goes wrong, the disk is right there
SU> is turned off and the real disk drive is plugged in, something goes wrong in the shadow drive and when
SU> the computer is reset, the computer is completely reset.
Everything is correct. When you change a disk via RST 8, it changes only in the 8th page with which RST 8 works. But when executing C=1, #3D13, that is, selecting a drive in tr-dos, information from the auto-connection sector on the screw is read into this eighth page. The same thing happenswhen initializing the computer. That is, having connected a subpartition to a disk programmatically, you only have access to functions
reading/writing sectors from this disk, and then you need to use them carefully so that the disk does not fly off. At first I thought that somehow this could be fixed, but after a telephone conversation with MOA everything became very clear. Here are his words: “Yes,
really it’s impossible! But somehow I didn’t think that you need to secure the disk
permanently. This is my fault.” The defect was never corrected. Maybe in
a version higher than 4.01, but it is only for GMX...
SU> In an article by Vlad Sotnikov
SU> I read that in order to fully connect the drive, you need
SU> to manually change the emulation sector by recalculating the CRC, but this method
SU> is not acceptable to me in the first place because the subroutine (or rather the table) for calculating CRC is too large, and I already don’t have enough memory.
There is a certain pattern in the table. Probably, you can calculate the table
with commands...
SU> I tried to look for this procedure in the ROM (I dug the ENTIRE image
SU> of my own Professional ROM on the offtopic) and did not find it.
Maybe I dug badly? I will make the following links:
1. MAC. He found this table in ProfPZU on the PC and showed it to me.
Contact him. Just keep in mind that in different versions of the ROM this procedure is located at different addresses. INThe MOA emulator has its own version of ProfPZU.
2. Someone Anton Litvinenko. I achieved a solution to the problem by finding in the PROF ROM the address of a subprogram that performs the desired action: writing to the auto-connection sector of the information screw from the 8th page. That is, you connect the partition via
RST 8, then CALL to ProfPZU, and the partition is fully connected. Everything works.
True, there is one, but quite significant, drawback: this subprogram
is located at different addresses in different versions of the ProfROM. Therefore, either your
commander will become attached to one (your) version of ProfROM, and will be reset on the rest, or support all versions. But keep in mind that there is also a version for GMX, and a version for the MOA emulator on the offtopic. In general, I don’t
recommend it.
The most universal way is to change the sector through ports, as I described
in newsk.
SU> What, is it really not possible
SU> to use this procedure directly from the ROM? Is it possible to temporarily
SU> connect the
SU> section, God bless him that he will not register in the sector? Or maybe
SU> you can rewrite the CRC calculation subroutine again without this huge table?
If it doesn’t register in the sector, then you will have C=1 with CALL #3D13
everything will return back. And this function is also called for any command in
tr-dos from BASIC. In general, not a single BASIC (or candy bar) will start from a
temporarily connected image.
SU> How can I solve this problem? I'm waiting for advice.
So decide. :)
SU> Stanislav
Vega / ex-Style Group. July 26, 2001
From Stanislav Udin → To All 26 July 2001
VS> Maybe I didn’t dig well?
I searched the beginning of the table for the first 6 bytes, but didn’t find a match. ROM version 4.01, it is the ROM from my Scorpio that is included in the Z80stealth emulator kit (at one time I sent Kirily Kolpakovy a ROM file), so the image is fully working. And
nevertheless I did not find the required sequence...
VS> I will make the following links:
VS> 1. MAC. He found this table in ProfPZU on the PC, and showed it to me
VS>. Contact him. Just keep in mind that in different versions of
VS> ROM this procedure hangs out at different addresses. The MOA emulator has its own
VS> version of ProfPZU.
VS> 2. Someone Anton Litvinenko. I achieved a solution to the problem by
VS> finding in the Professional ROM the address of the subprogram that performs the desired action:
VS> writing to the auto-connection sector of the information screw from the 8th page. That is,
VS> you connect the partition via RST 8, then CALL to the ProfFZU, and the
VS> partition is fully connected. Everything works. True, there is one, but
VS> rather significant drawback: this subprogram in different versions of
VS> ProfPZU is located at different addresses. Therefore, either your commander
VS> will be attached to one (your) version of ProfROM, and the rest will be reset
VS>, or support all versions. But keep in mind that
VS> there is also a version for GMX, and a versionfor the MOA emulator on
VS> offtopic.
But the offtopic worries me the least. I'm trying to write a program first
for my real Scorp and for real owners of SMUC.
VS> In general, I don't recommend it.
Yes, I'm convinced.
VS> The most universal way is to change the sector through ports, like I did
VS> in
VS> Newske described.
I agree.
VS> If he doesn’t register in the sector, then you will have C=1 with CALL
VS> #3D13 will keep coming back. And this function is also called
VS> for any command in tr-dos from BASIC. In general, not a single BASIC (and
VS> monoblock) will not start from a temporarily connected image.
From Vlad Sotnikov → To All 27 July 2001
VS>> Maybe I didn’t dig well?
SU> I searched the beginning of the table for the first 6 bytes, but didn’t find a match. ROM
SU> version 4.01, it is the ROM from my Scorpio that is included in the package of the emul
SU> Z80stealth (at one time I sent Kirily Kolpakov a ROM file), so
SU> the image is fully working. And yet, I did not find the required
SU> sequence...
By the way, how did you make a copy of your ProfPZU? In what way?
SU> I understand that the only correct way is to manually change the
SU> sector on the screw, but calculating the sum is not suitable... Or maybe our code geniuses
SU> will still be able to rewrite the subprogram without a table? In
SU> in the end I want to believe that I’m not the only one who needs this command (TRDN).
There is a pattern in the table. And I think there will be a lot of people who want to solve it - a good mathematical puzzle :) My advice is to put the procedure in
CODE.ZX, there they will create a program for you within a week.
SU> Stanislav
Vega / ex-Style Group. July 27, 2001
From Ilya Vinogradov → To All 27 July 2001
Thursday, July 26, 2001, 21:56:42, Stanislav Udin -> Vlad Sotnikov
subj: SMUC
VS>> Maybe I didn’t dig well?
SU> I searched at the beginning of the table for the first 6 bytes, but I didn’t
SU> find a match. ROM version 4.01, it is the ROM from my Scorpio
SU> that is included in the Z80stealth emulator package (at one time I sent Kirily
SU> Kolpakov a ROM file), so the image is fully
SU> working. And yet, I did not find the required
SU> sequence...
If there is no table, we can assume that the CRC is calculated without it, if
so, then in order to find this procedure (and split the algorithm) you can do
the following:
In the 8th page, find the place where the mount sector lies (probably the first 22*4=88 bytes lie there) and look for access to this address from ROM.
SU> But the offtopic topic worries me the least. I'm trying
SU> to write a program, first of all, for my real
SU> Scorp and for real owners of SMUC.
This is good ;) Everything is fast on the emulator, and there is no point in connecting all this there
;)
From Stanislav Udin → To All 28 July 2001
SU>> emyl Z80stealth (at one time I sent Kirily Kolpakovy
SU>> ROM file), so the image is fully working. And yet I did not
SU>> find the required sequence...
VS> By the way, how did you make a copy of your ProfFROOM? In what way?
My ROM is exactly equal to the volume of the old PC BIOS - 128K. I clicked into the offtopic, took out the BIOS, inserted the ROM from Scorpa, launched Flasher and launched the firmware program, to the request “should I keep the old firmware” I answered in the affirmative and as a result I received the firmware of my ProfROM on the screw.
There is a pattern in the table.
I noticed it too.
VS> And I think there are quite a few
VS> who want to solve it - a good mathematical puzzle :)
Kirill Frolov has already responded.
VS> My
VS> advice
VS> - throw the procedure in CODE.ZX, there within a week they will create a
VS> program for you.
We had the same thoughts and even before your advice I sent the question to this echo :)
Stanislav
From Stanislav Udin → To All 28 July 2001
IV> You can easily change this sector and not through ports, but through
IV> standard restart ld c=36/37:rst 8:db #81, just first
IV> you need to connect a “arbitrary partition” by descriptor:
IV> ld a,drive_number (0..3)
IV> or #20 ;(%00100000)connection by descriptor (DE)
IV> ld de,desc1
IV> ld c,35:rst 8:db #81
IV> ret
IV> desc1 db #01 ;type partition db #00,#00,#00,#00 ;starting
IV> sector
IV> fictitious partition
IV> db #04,#00,#01,#00 ;final sector of fictitious partition
IV> db "Name01" ;here are fictitious names...
IV> db "Name02 ; -//-
IV> ds #04 ;four empty bytes
IV> ;total 25 bytes
I was about to do this :) No direct ports :) Only for
clocks...
IV> Connecting “dummy” partitions in this way, I remember, I rummaged
IV> the whole screw, and I independently discovered the auto settings sector ;)