Prev: educator 64?
Next: Lawnmowing game
From: mrtinbspam on 24 Feb 2010 18:00 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 25 Feb 2010 17:33 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 28 Feb 2010 10:17 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 7 Mar 2010 17:02 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 |