C-Net Week #24
28 июня 2007
  Софт  

Doors kick start - A new OS for the Spectrum - DoorsAQUA 7.1, or not to be? Breeze razyasnyaet.

<b>Doors kick start</b> - A new OS for the Spectrum - DoorsAQUA 7.1, or not to be? Breeze razyasnyaet.
So we have reached the final,
so to speak, the final
Part of our small
Publication CWEEK # 24.

And lastly, I left
a bit tasty;) so
say writing for the mind: D So
meet ...


DoorsAQUA 7.1

Many have probably lost
all faith and hope
in anticipation of such a miracle as
"Doors OS". Yes, it is
really the biggest
unfinished platform
zx-spectrum. Not want
Of course, excuses
but development was delayed due to
number of reasons: it's corny
lack of knowledge at the time
but the number of new ideas, and more
another. Taken together, starting
since 1995, forcing more than once
revise the core, yes
and the whole system from scratch,
and the time-it took ...

Recent developments differ
koordinalno way from all
earlier. Previously, the main
goal pursued
GUI
- Windows. No, I'm not going
abandon this idea
quite simply it's a bit
goes by the wayside. But about
all under the lock of.

It all started not so long ago,
To be more exact, somewhere
1-May:) when I
AlCo wrote the question did not
lying around under the driver HDST
ATM, I would like to source
new drivers under HDST ".
HDST - this is my softinkoy
(HardDist Search'Test) which
by means of a connected
Driver tries to HDD
find attached
HardDisk and CD-Rom, if
The operation is successful, you are
Factory information
parameters of the device.
So, finding the last sortsy
Version HDST and drivers
I have a few prifigel of code
:) And to be honest
not quite like this
"Miracle" to give to the masses, so
in such a dump code and procedures
to understand something very difficult
: (And furthermore did not
managed to collect this miracle
in sjasmplus. Therefore it was
decided to bring it
in more or less divine form
(Equipping a certain number of
comments), however, were
some restrictions
by maturity, as AlCo
planned to insert this
product InfoGuide # 10. As you
already realized in time I still
failed to meet ...

But do not let the bad news. What
nevertheless forced to tighten
with the release of HDST 0.10? As you
might guess, I decided
Translate HDST on a new track
- Namely, the use of engine
Doors, as HDST enough
a simple application that
uses multiple drivers
for their work. So
the idea to append the kernel
DOORS, it is a little different
from initial ideas
7th of implementation, and therefore
marked as 7.1.

Doors 7.1 kernel is
a modular structure
and is located in the main
memory address # 8000.
From version 7 was only
memory manager - memManager.
Which has several
Functions: initMemory
(Initialize and built the
memory card), memAllocate
(Ask for the free memory)
memFree (vacate
memory), memSetBank
(Set the current bank
memory). Generally memManager
to the end and did not finish in the
build of (build) is not used.

The main emphasis in this build,
was made specifically to work
devices, so
principal and principal component
Device Manager -
devManager. Starting at address
# 5B00 stored map
drivers, which
initialized with
Team initDrvMap. Map
Driver takes 256 bytes
and is divided into blocks of 3 bytes.
The first 2 bytes of address of the driver
in memory, the third byte - number
memory bank. Total possible
address 85 devices if
is this at some stage
project will not be enough
You can change the size of the map
and its location
(DrvMapSize and drvMap), though
will have to recompile
kernel. With teams addDrv
and you can add delDrv
and therefore remove
device from the card drivers.
Team statDrv returns 0
If the operation was
successful. When installing
driver, he was awarded the
number (ID - two bytes)
which can be accessed,
driver who
compiled into the kernel are
static ID and do not change.
With a team lastDrv
You can see the number of
devices installed
in the system.

Appeal to driver
device is
Online Tools team callDrv.
In the accumulator (A), we pass
command unit, they can
be:
-InitDev - Initialization
device;
-ReadDev - get data
from the device;
-SendDev - send data
to the device;
-StatDev - get the state
device (statOK-device
ready to go, statErrorustroystvo completed operation
with an error statBusyustroystvo busy
statTimeout-device
stuck and went to timeout,
statNoDevice-device
absent);
-InfoDevDrv - get
driver information
device;
-StatDevAdv - get
Extended error data
(More detailed data that
occurred, for example,
Error reading from disk here
can be specified track
and the sector where the failure occurred);
-ReadDevPorts - get
state of the device ports
(Done for IDE) if
device does not support
this functionality
return error;
-SelMaster and selSlave
- Allow to switch between
multiple devices
on the same bus (done for
IDE). If the device
does not support this
functionality, will return
error.
-InfoDevice - get
description of the device;

That such a principle, while
functionality will give here
small example:

; Initialize manager
; Drivers
ld a, initDrvMap
call devManager

; Install the console driver
ld hl, drvConcole
ld a, addDrv
call devManager

, Installation of driver
; Keyboard
ld hl, drvKeyboard
ld a, addDrv
call devManager

In principle, all
(Initialize manager
driver, the driver console
keyboard driver) is not necessary,
as it happens
automatically at startup
system initialization and
kernalya, and is given here
as an example.

To send a data block
the console (in HL-ID
device, B-command
Driver, DE - block address
data, A - Team Manager
drivers):

ld hl, # 0000
ld b, sendDev
ld de, dataBlock
ld a, callDrv
call devManager

dataBlock

       dw dataBlock2-dataBlock

       db "Hello World!"
dataBlock2

In the first two bytes dataBlock
stored data block length.
Use the end mark
(Like # 00 or # FF)
basically I did not, so
how data can be any
anything (not just text)
and accordingly send
they can also go anywhere,
any device, and
not only in the console.

Another example of reading data
using the keyboard driver
(In HL-ID device
B-team of the driver, DE
- The address of the data block, A
- Team manager
drivers):


ld hl, # 0001
ld b, readDev
ld de, buffer; temporary buffer
ld a, callDrv
call devManager

buffer dw # 01

       db # 00

As is the case with the record
data when reading a buffer
- The first two bytes indicate
the length of the block. While this
functionality is implemented
Not all drivers, so
data may not be
relevant. However, the real
data always come with
shift buffer +2.

Well, until all of the manager
devices. As I wrote above,
some drivers built
into the nucleus and have a static ID,
here they are:

# 0000 - console driver
# 0001 - keyboard driver
# 0002 - IDE driver
# 0003 - ATAPI driver

Of course, you can change them
recompiling the kernel. However, do
it's not worth it, because
some of these drivers
several interconnected
and clearly know that # 0000 - is
console # 0001 - is
keyboard. For example, for
display the same error
Use the console, and when
withdrawal of a large number of
text, the console can be expected
Pressing any key (similar to
"SCROLL?" in BASIC). True,
no problem to kill
address of the driver for ID # 0000
and thereby send output
data to another location,
For example, if loaded
GUI
in a separate window.

In general, a modular system kernel
allows you to easily collect
nucleus under different modifications
Spectrum. For example, for
Console can be used
Not only Spectrum
standard screen, but
and a variety of advanced
(384x304, 512x192), but instead
standard keyboard can be
use extensions
from ATM-Turbo. Too true
and for drivers and IDE ATAPI,
important to adhere to
Some standards are
I laid into the structure
drivers.

Included so far are
Driver: Console Driver
(Standart ZX Screen), Keyboard
Driver (Standart ZX Keys), IDE
Driver (NEMO / KAY), ATAPI
Driver (NEMO / KAY). Several
later I'll add other
variation in the meantime if there is
Wish you could write your own.
This can be done looking
sortsy already written
Drivers, however, be amended:

In the console driver and the driver
keyboard similar
functionality, so
it is important to realize
functionality - initDev,
readDev, sendDev, statDev,
infoDrv, statDevAdv, for example:

_drvConsole
ld a, b
; Device initialization
cp initDev
jr z, _initCon
; To get data from
; Device
cp readDev
jp z, _readCon
; To send the unit block
; Data
cp sendDev
jp z, _sendCon
; Get the state
; Device
cp statDev
jp z, _statCon
; Information
; About a device driver
cp infoDrv
jp z, _infoCon
; Get extended
, The error data
cp statDevAdv
jp z, _statConAdv
; Not known to the team
ld a, statError
; Install error!
ld (conStatus), a
ret

In the driver IDE and ATAPI
Several extended
functionality -


_drvIde
ld a, b
; Device initialization
cp initDev
jr z, _initIde
, To obtain data
; From the device
cp readDev
jp z, _readIde
; Sent to the device
; Data block
cp sendDev
jp z, _sendIde
; Get the state
; Device
cp statDev
jp z, _statIde
; Information
; About a device driver
cp infoDevDrv
jp z, _infoIde
; Get extended
, The error data
cp statDevAdv
jp z, _statIdeAdv
; Get sosotoyanie
; Device ports
cp readDevPorts
jp z, _readIdePorts
; Select master device
cp selMaster
jp z, _sel_master
; Select the slave device
cp selSlave
jp z, _sel_slave
, To obtain information on HDD
cp infoDevice
jp z, _infoHardDisk
; Not known to the team
ld a, statError
; Install error!
ld (ideStatus), a
ret

In the next build of certain functions
selMaster and selSlave will
replaced by a function selBusDev
(Select Bus Device) that is
the input is the number
device on the bus (in this
case 0 - master, one-slave)
and choose. I think it will
ideologically correct,
as, for example, on devices
type of SCSI can be much
more devices than
2. Who knows;) can
Spectrum to be connected and the SCSI
in the near future ...

The annex to this number
You will find a small,
but functional application
HDST (HardDisk Search 'Test).
For those who do not vkurse
Recall, this program
detects the presence of hard
drive and cd-rom. If they
present, the output
engineering information on these
devices. This version
(0.10) is practically
different in functionality
from the previous one. The basic idea
was the use
this nucleus Doors 7.1.
As an example, there are three
compiled kernel version
with support for HDD controllers
- For NemoKAY,
ScrorpionSMUC and ATM-2 +. Tell
immediately that I was very hurried
with the release of cweek (so
was delayed for 4 weeks)
and therefore the driver a little
did not finish, and
core functionality (such as
You might have noticed)
minimal. For the same
why has not spread
sortsov. In the near future
(I hope) dopishutsya
before the end of the driver, but for now,
I hope this version
will work on real
Spectrum, as all
tested in the emulator
Unreal Speccy.


At this perhaps I will finish
story of the Doors 7.1, recall
just more
information can be found
the official website
Project - DoorsAQUA Project

 twilight.org.ru / doors_aqua /





Other articles:

Entry - ... In the beginning there was nothing. No earth, no sky, no air, no water.

C-Week - c since the last publication of the newspaper the past 4 years ...

News - a new software of Belarusian: TargeT # 12, News Viewer v1.0, Quick Commander v3.11, TR-DOS 6.10e, Square Mania, Gift to Brom, SjASMPlus. What do the well-known in the past Belaruskaya spektrumisty.

C-Week - ICQ interviews with famous friends ZX - Arty / Digital Reality and UnBEL! EVER.

Just i-net - Internet on the Spectrum, which has already been done and why.

Party - Striker'a detailed report about the trip to St. Petersburg Computer Festival Shaos Constructions 2006.

Minority Report - Breeze (Minisoft) tells the story of his Spektrumizma.

Doors kick start - A new OS for the Spectrum - DoorsAQUA 7.1, or not to be? Breeze razyasnyaet.

Atari - the history of the company and its popular ATARI computers.

Happy End - the authors of the paper.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
Mosaic - Screw for # 3D13, comments to the reviews on KrNews.
Credits - who worked on the numbers, contacts ...
Iron - CMOS for all.

В этот день...   23 November