News
by Alone Coder
It's only been a few days, but they've sent so much hot food.
material that I had to make a new issue of the newspaper to follow up :)
I still have New Year holidays - we celebrate until January 8
inclusive.
Hippiman/Conscience released a New Year's game Dizzy Rescues Santa
- on the DizzyAGE platform for Windows, with a patch for smooth
scroll from Titus. I completed the game on January 1st, and broke it on the way
the ball and flew to Veliky Ustyug :) The next day the game was completed
Louisa, she found another huge gift from Santa Claus. If
it will be difficult for someone to look for gifts - there are 25 of them in the game (not
counting that huge one).
Deathsoft has released a couple of new versions of the Unreal Speccy emulator and
trying to restore the 1818VG93 drive controller circuit by
photographs of the crystal (a significant part of which turned out to be
PLM).
New Year's DiHalt Lite did not become united again this year,
but there is already data that about 30 people are going to it - 2 times
more than before. Louisa and I are not going this time.
I fixed several bugs in the 3D engine and unexpectedly discovered
that the workspace with existing mathematics is limited to 10x10
unit cubes. This is only suitable for interior rooms Total
Eclipse. I was the one who fought so hard for 8-bit computing. I'll think
more :)
Polish culturologist Piotr Marecki, who came to the
DiHalt together with Yerzmyey,sent a large questionnaire for the future
books. I translated it into Russian. Peter says what to answer
You can do it in Russian. Please write your answers by the end of January.
(deadline February 15th)!
Nikolay Amosov (AmoNik), former editor of the AvroNews newspaper,
sent news from St. Petersburg (and another great addition to
text about SPbZXNet from the previous issue - see the next article).
News
by AmoNik
Sergey Smirnov (Gogin) revived his project to port the game
Super Mario for Spectrum. Once upon a time there was a demo version of the first
level in the “Your Game” competition. Now Seryoga is completely
rewrites the engine from scratch.
Alone> As he himself says, taking into account the experience of the last 15 years. And
The engine is now colored! (By the way, I myself tried to take on
writing Super Mario three times, but gave up each time.)
Here you can see how long it takes to display sprites
time:
https://monosnap.com/file/jбHxgvxd1YpJOCBgUaxzCdMdMOXЗaY
The video looks jerky, but as Sergey writes, this is how it works
screen grabber and in reality everything is quite smooth. And this
3.54 MHz, not turbo.
At the moment, his Scorpio died, and I remotely told him
symptoms, told me what to pay attention to and change, but he
I'm in no hurry to do it yet. Probably because he has
ZX Evolution.
Last year I wrote a new driver for hard drives.disks for
iS-DOS system. Old driver from Valery Kozhevnikov, which I
used for many years up to this point, contained a number of errors and
inaccuracies that I only learned about when I wrote on the database
this driver is yours.
The reason that prompted me to write my own driver was that
after purchasing an Amiga 600 computer in 2008, I accumulated
a large number of CompactFlash cards. I bought them at
several pieces in search of one that will work with the Amiga through
PCMCIA adapter. It turns out that not all cards work
Thus, those that work can be very slow. B
I finally found the one card that worked for
Amiga is fast (Sony), but with the remaining bunch of cards it was necessary
do something.
I bought a CF-IDE adapter from a computer store, which just
plugged it in instead of the IDE cable, and began experimenting with cards,
but already on Scorpio.
Alone> I also had such an adapter, but made by CHRV/NedoPC.
The local computer store told me that this
there is no iron at all. I used it for a long time at Pentagon
1024 and ATM Turbo 2+, until I gave the Pentagon 1024 along with it
adapter, card, CD-ROM and disc with the game Time Gal
T(c)S'у. It's a pity, but now there's nowhere to put it at home...
It turned out that he (Scorpio) is also picky. It can't
create a partition table on the card, then you lose information about
connected virtual disks. Aif it works with a card without
failures, then slowly. In the end, out of about one and a half dozen
I found a few cards that work without failures and with
high speed in Scorpio.
This is where I encountered inoperability for the first time
parts of programs. Specifically, the HDD_0.1 plugin for
Real Commander and the hard disk driver for iS-DOS did not work.
Both programs froze while accessing the disk. I am the author of the plugin
I couldn’t find it, although we live in the same city. Original
The author did not distribute the plugin texts, but from the description it was
it is clear that the reason for the plugin and driver not working is the same
and the same. After all, the plugin was just a wrapper (graphical
interface) over the same Kozhevnikov driver (Jason Frost). I
I examined the plugin code in the debugger and made sure that there was only one driver
into one of iS-DOS. Thus, having dealt with the driver in
iS-DOS, I can fix the plugin too.
Several times I tried to disassemble the plugin, but
Each time I ended up with a non-working source code. Those. program,
translated from this source, it turned out shorter, or not
worked. But I had the source codes of the driver for iS-DOS,
and I conducted a series of tests to modify it. This, however, is not at all
did not help me understand why the driver hangs.
When working with a hard drive, I was guided mainly by articles
from the newspaper ZX-NEWS authored by Vlad Sotnikov (Vega). Plus yI had a small copy from some kind of ATA standard
ancient version. From the point of view of these documents, the driver worked
right. However, it did not work with CompactFlash cards. It was
it is obvious that in subsequent versions of this standard something
“broke”, and on modern devices it no longer works the same way.
Just in case, I bought old cards on eBay ranging from
32 to 512 MB, but they also no longer worked with the old driver.
Thus, it became obvious that by changing a couple of bytes in
I won’t achieve anything with the driver and I need to write another driver,
more in line with modern standards.
At some point I sold my GMX board and developed the board
Scorpio back to the initial scheme. But I don't have the payment
earned. After fiddling with it for several days, I decided to switch
for a spare board and at the same time make modifications to it upon opening
DOS ports so that fast drivers work. After thinking a little, I
I changed my mind about screwing up the board and decided that it was better to make a modification
the SMUC controller itself so that its ports are
in the main address space.
Now, having direct access to the disk ports, I sat down at the assembler,
surrounded by printouts of the driver source codes, and began
write. I had several sources - a driver from
Kozhevnikov, two driver versions from Oleg Grigoriev (Ruiner) and
a couple of versions of my modifications. I once did it based on drivers
Grigoriev's versions, withLBA support and some others.
It turned out to be easier for me to write my own than to figure out how to do it
works for others. So, from the original drivers I only took
procedures for reading and writing sectors, as well as storage structure
coordinates of partitions on the disk and the procedure for calculating coordinates
sectors based on the offset from the beginning of the partition, and everything else
I wrote it from scratch.
At first I wrote small fragments of procedures for reading a given
number of blocks (256 bytes each) in ALASM. I tested them. Then on
I made a driver for iS-DOS based on this procedure. He couldn't yet
write, but he could read quickly. Having carefully debugged
reading procedure, I returned to ALASM again and began the actual
the difficult part is the recording procedures.
Since iS-DOS works with logical blocks of 256 bytes, and
Since the physical sector on the disk is 512 bytes long, it is necessary
I had to write as many as three recording procedures. The first one is used
to record blocks that fall on the first half of the sector.
The second does the same, but for the second half of the sector.
And the third writes the entire sector.
The logic of the work was clear, and I wrote the procedures quite
quickly, but debugging took several days. I created more on disk
one section, specifically for tests and strictly prescribed it
coordinates into the driver. Then I started copying files to this partition
and see what happens. Just in case, I excluded
possible errors of new driver readings, readingfiles via
old slow but proven driver. So everything
the errors were caused by the new driver. And they were. Although they
There weren’t many, but a lot of time was spent searching for them. I
even wrote special test programs and special
test files with special content that could be used
judge in which part (on which sector or head) the
The recording fails and something is written in the wrong place. Then I added debug
output the required variables to the screen and sat in the debugger, watching
their change. Not finding an error in my procedures, I suspected
that the errors come from external procedures that I rewrote
one to one from the source I have. And exactly. A couple of mistakes
I scraped it out of there, and in the end the driver worked.
Then I added work with the second IDE channel and added it to
Set of driver configuration and partition connection software.
After this, a public release took place. And in 2016 I changed
one memory card, a larger card, everything in advance
copied sector by sector to a new card and didn’t check how it works
new driver. It turned out that it was in vain. Some time later I
detected files on disks with an incorrect checksum.
Having started to figure out where the legs grow from, I found out that part
files in this form migrated from my old hard drive
disk. And there the files were already damaged due to errors in the driver
Kozhevnikova. But some of the filesalready beaten by my new driver.
I sat down at the debugger again.
Again the test files helped me. I literally found the error
30 minutes after the start of debugging. It was, in general, not
driver error, and again the result of changing standards. And the legs
This problem grew from the same place - from changes in the standard. Yes,
the old HDD, after a read or write operation, was always left in
registers sector numbers, head and track coordinates
next sector. Based on this, the old driver is not
calculated each time these coordinates for each sector, with
whom I was going to work with. This increased the speed of work.
The first CF card always returned
the last one I read and I had to do this in my driver
provide and make a separate procedure for switching to +1
sector, based on the “geometry” of the devices. And the second CF card and
completely returned some kind of nonsense.
So I had to rewrite the driver again. On this
times for each sector that will be read or written outside
group, I calculate its coordinates and write them to registers
devices. And the new driver version will work with everyone
devices - both with the first card and with the old hard drive.
And the appearance of such errors on disks forced me to look for ways
creating backup copies of iS-DOS partitions on the disk. I'm not on PC
I know a utility that can get into the MFS partition and pick out
from there sectionsiS-DOS. Option with a disk editor in which you can
open the disk image or the physical device itself and drop
part of the disk into a file doesn’t really inspire me. That's why I
I decided to backup the disks via the network. First I settled on a modem,
but for some time now the ISA slot on SMUC has not worked for me. There
something burned out when I connected the internal modem - wrong
supplied external power. It may not be possible to fix it if
The problem is with Altera. Yes, I didn’t bother looking for the reason. I have on
there was an Arduino Mega 2560 on the table, and I decided - why not
adapt for this? At the same time I’ll remember how programs are written
in C. Before that, I “remembered” the project of a busless controller
PS/2 keyboards for Scorpio. But I didn’t progress further than the tests -
There simply isn’t enough speed to “press” the buttons
issuing the necessary data to the bus.
Currently transferring trd disks from Scorpio to PC
almost established. I just tested the transfer speed
text string and it turned out that Scorpio quite produces about
40.5 KB/s. When working with a disk (read a sector, transfer it to the network)
the speed of course drops and the full disk image is transferred in 39
seconds But this is for sector-by-sector reading and in TR-DOS through emulation
3D13. It will be much faster in iS-DOS due to the fast driver. A
exactly - it turned out to be 39.5 KB/s in Turbo mode on Scorpio.
True, the turbo on this board is non-standard and noticeably higher than
was in the original.
Share your thoughts about the article