From: mrtinbspam on
Hi!

I've studied 'The Official GEOS Programmer's Reference Guide' and 'The
Hitchhiker's Guide to GEOS'.

They both mention how to create drivers for printers and input
devices, but fail to mention drivers for disk drives.

However when looking at GEOS file types (e.g. GEOS Prog. Ref. Guide
page 49), file type 11 is DISK_DEVICE. That is strange, since GEOS
does not have any DISK_DEVICE files with it. It seems that all drivers
for disk drives are implemented in the application CONFIGURE.

The deskTop-replacement 'gateWay' seems to have rethought this.
'gateWay' ships with drivers for each drive as separate files as file
type 11.

Looking at Maciej "YTM" Witkowiak's GEOS drivers (http://
members.elysium.pl/ytm/html/geos.html), it looks like the driver has
to be loaded at address $9000 starting with a jump table.

Looking through 'The GEOS Programmer's Reference Guide' it explains
that kernel calls for disk is made in 3 different layers. Looking at
the description in the book, I tried to get an overview by creating a
drawing. That did not help much. Seems more complicated that ever. :-)

http://www.rtin.be/dox/GEOSsyscall.png

Yellow is top-layer. Pink is middle-layer. Cyan is bottom-layer.
Kernel calls that match names in the disk drivers jumptable, has an
harddrive icon.

It puzzles me that the names that match drivers jumptable is both in
top-, middle- and bottom-layer. In my head, it would make sense that
only the bottom-layer would call the driver-layer.

Thanks for reading this far. Can anyone enlighten me further?

Thank you
/mrtinb
From: Maciej Witkowiak on
mrtinbspam(a)gmail.com wrote:
> Looking at Maciej "YTM" Witkowiak's GEOS drivers (http://
> members.elysium.pl/ytm/html/geos.html), it looks like the driver has
> to be loaded at address $9000 starting with a jump table.

Two jump tables actually. One has only vectors and after that a set of JMP
instructions follows.

> Looking through 'The GEOS Programmer's Reference Guide' it explains
> that kernel calls for disk is made in 3 different layers. Looking at
> the description in the book, I tried to get an overview by creating a
> drawing. That did not help much. Seems more complicated that ever. :-)
>
> http://www.rtin.be/dox/GEOSsyscall.png
>
> Yellow is top-layer. Pink is middle-layer. Cyan is bottom-layer.
> Kernel calls that match names in the disk drivers jumptable, has an
> harddrive icon.
>
> It puzzles me that the names that match drivers jumptable is both in
> top-, middle- and bottom-layer. In my head, it would make sense that
> only the bottom-layer would call the driver-layer.

I can only agree with you - the API mixes low level functions with middle and
high level stuff.

You could try downloading source code for ramdrives from my site. These drivers
have only the required minimum. All 1541, turbo and IEC-related code has been
removed. I didn't have any special documentation for creating these drivers.
I have started with disasembled 1541 code.

ytm

--
Najlepsza sygnatura to brak sygnatury.
http://bossstation.dnsalias.org/
From: mrtinbspam on
On 25 Feb., 23:33, Maciej Witkowiak <y...(a)elysium.pl.andremowe.me>
wrote:
> I can only agree with you - the API mixes low level functions with middle and
> high level stuff.
>
> You could try downloading source code for ramdrives from my site. These drivers
> have only the required minimum. All 1541, turbo and IEC-related code has been
> removed. I didn't have any special documentation for creating these drivers.
> I have started with disasembled 1541 code.

Seems to me I could copy the driver, and just re-implement these
routines:

DoneWithIO
InitForIO
ReadBlock
WriteBlock

/mrtinb
From: Maciej Witkowiak on
mrtinbspam(a)gmail.com wrote:
> You could try downloading source code for ramdrives from my site. These drivers
>> have only the required minimum. All 1541, turbo and IEC-related code has been
>> removed. I didn't have any special documentation for creating these drivers.
>> I have started with disasembled 1541 code.
>
> Seems to me I could copy the driver, and just re-implement these
> routines:
>
> DoneWithIO
> InitForIO
> ReadBlock
> WriteBlock

With the two IO routines you shouldn't change much. They are supposed to
prepare environment for Kernal calls. These functions are used by I/O
applications and by some printer drivers.

For ramdrives I have also simplified BAM routines. Instead of 1541/71 layout
with different number of sectors per group of tracks there is a simple bitmap
where n-th bit tells about status of n-th memory page.

ytm

--
Najlepsza sygnatura to brak sygnatury.
http://bossstation.dnsalias.org/
 | 
Pages: 1
Prev: educator 64?
Next: Lawnmowing game