Hi, I am pleased to announce two new uploads:

http://www.coli.uni-sb.de/~eric/stuff/soft/by-others/ aitor-nls-spanish.zip
Spanish localization for choice, tree, diskcopy, fc, find, help, more, sort,
by Aitor (if you do not want to download all new choice, tree, ... zips!).

http://www.coli.uni-sb.de/~eric/stuff/soft/by-others/ deskwork-unit-pcmcia.pas
Pascal source code from the (usually closed source) DeskWork.de project (which
is a shell for DOS / Windows 3 in StarTrekNG design, with some nifty features
like hotplugging filesystems). Konstantin released the file into public domain
and I translated things into English language and added lots of extra comments
with his help (e.g. about how PCMCIA.pas interfaces with the rest of DeskWork).
Summary: Use AddPort to set the I/O base of the PCMCIA bridge. Then run
DetectPCMCIA to scan for devices. Run HotPlugPCMCIA as often as you want to
detect and process plug/unplug events. Run DonePCMCIA to shut down all devices.
HotPlugPCMCIA(true) will also automatically call other DeskWork parts to
register / unregister devices as appropriate. DetectPCMCIA will also call
BootText to write logs to the boot log. You get the idea.

Interface:
procedure AddPort(_BasePort: Word); { ISA-PnP }
function HotplugPCMCIA(Mount: Boolean): Boolean;
procedure DetectPCMCIA;
procedure DonePCMCIA;
... and a CPort record (base plus 4 slot records, each with type, status,
irq, voltage, vendor/device-words, iobase, name-string, init-time). The
bridge would allow max 4 slots, but nobody seems to have more than 1. By
the way, SMM would allow max 7 bridges, but nobody has more than 1 PCMCIA
or CardBus bridge, it seems!?

Implementation: InCard, OutCard, CardPresent, EnableINT, DisableINT,
DisableIOWindow, EnableIOWindow, DisableMemoryWindow, EnableMemoryWindow,
(those were the lowlevel ones)
EnableModem, EnableNE2000, Enable*EIDE (several variants), EnableMemstick
(Sony?), EnableClik (PCMCIA sized Iomega drive with changeable disks),
(those all do basic init/config and then call other DeskWork "mount" funcs)
and of course the Interface function/procedures.

Used DeskWork parts apart from mount/umount style ones:
BootText(string,color), FillChar(string,count,char), LTrim, RTrim,
RegionFree(iobase,size) (to avoid I/O port range clashes),
plus "what is BLASTER IRQ?" and some data structures which list the
present serial ports / connected devices, IDE controllers / connected
devices, ... and probably several things which I have overlooked.

Still it would be quite interesting to port this to a FreeDOS driver!
You could limit the driver to storage, and allocate some drive letters
in advance. Call the hotplugging thing only when the user tries to
access a drive. Note that you will have to program the IDE controller
manually, no int 13 support UNLESS you cheat the BIOS by fiddling with
40:[xx] values to "mount" the detected PCMCIA-connected IDE controllers.
For example Lucho/...'s UDMA driver programs the IDE directly, too.

Bonus problem might be: FreeDOS FAT drivers can only be used with int
13 devices. Maybe the solution would be to connect the PCMCIA driver-to-be
as simulated int 13 floppy (or harddisk) drives? Would simplify things a
lot but you will have to force FreeDOS to re-read the partition table of
the PCMCIA device after a disk change. THAT would be an argument contra
int 13 style access and pro MSCDEX style access. Your votes please.

Eric


PS: License is public domain. Quote Konstantin: "Macht damit was ihr wollt."
... Enjoy!




-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 - 
digital self defense, top technical experts, no vendor pitches, 
unmatched networking opportunities. Visit www.blackhat.com
_______________________________________________
Freedos-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to