|
From: Chris E. <aax...@gm...> - 2013-05-21 22:48:35
|
I still think having true functions in batch files would be a good thing turn batch files into more capable language On Tuesday, May 21, 2013, Eric Auer wrote: > > Hi! > > Your vision on DOS is somewhat, well, interesting ;-) So > there is a lot to chat about, although I am not sure if > the KERNEL list is the right place for this topic. DPMI: > > > I would expect performance gain to be minimal. Maybe there could be > > Low/HMA/UMB memory savings with a different architecture. Hard to say. > > Well there could, but why would it matter? More heavy DOS > software normally uses DOS extenders / DPMI anyway, which > means it does not care about how much low DOS RAM is free. > > The HMA is mostly used for the kernel and buffers, so as > long as the kernel fits in there, no others have a heavy > need for it. Only a few drivers may use it "UMB style". > Also, caches put bigger buffers in XMS, not needing HMA. > > Finally UMB is mostly used for drivers: You could write > drivers that use DOS extenders / DPMI if you really have > a lack of space. Actually the simulation of SoundBlaster > 16 that comes with "SoundBlaster" PCI works like that. > > Probably also some commercial NTFS drivers, because NTFS > is complex and you do not want to spend 100s of kilobytes > of DOS memory only for loading a filesystem driver... > > USB, PXE and CD/DVD/BD drivers as drivers / in memdisk: > > > I lean this way too w/respect to drivers. Built-in's biggest advantage > is > > You still have to configure built-in drivers, you only > avoid the risk that you forget to include the file in > your boot disk ;-) > > > simplicity in user configuration. However, networking seems to be lacking > > throughput speed with either mTCP or Watt32 apps. I'm not sure if it's a > > packet driver, TCP/IP stack, app (doubt), or kernel (doubt) issue. > > Networking in DOS means that your app has a compiled-in > network stack which communicates with a packet driver to > get the low-level hardware stuff done. You often have a > small buffer for that and little concurrency. There may > be a bit of IRQ and DMA, but "big" operating systems are > more relaxed about juggling with multiple streams of net > data with support from complex chips on your network card. > Note that this is just an educated guess: Ask our experts! > > > guess is that it's a 16-bit MOV/LD* loops, the lack of zero-copy > > networking, and the switch between kernel and app. I've seen some > > No switch: The kernel does not network at all and there is > only one app at a time using the network. Depending on how > your packet driver and network stack library work, you do > not need many steps of copying either and the transfer to > or from a buffer is unlikely to be a big bottleneck with > modern CPU, I think. However, as said, you probably work > with little bits of data and small buffers in DOS, because > you may have less orchestration between stack and driver. > > > reference to the same ... USB drivers as well (USB 1.1 speed from USB > > 2.0 devices or 3.0 devices). And there seems to be 3 ways to get USB > > That problem far much more trivial than you might think: > USB 2 and 3 are controlled in ways that differ a lot from > USB 1, so many drivers simply do not talk USB 2 or 3 at > all. This is not like AGP, PCI or PCIe where you flip a > few bits and suddenly I/O to your graphics card is fast. > > It is more like the difference between paged graphics at > a000:0 and a linear framebuffer, to stay in the example. > However, there is no linear USB. Talking USB the 2 or 3 > way is just a quite different language, but as you know, > at least one shareware driver speaks it and knows the > dialect of at least some relatively widespread chips... > > > working on DOS: USBDOS, DOSUSB, Panasonic/ASPI Method. I need to play > > Enjoy :-) And maybe do some benchmarks. Even the shareware > driver should work long enough for that - I think it just > blocks after a while after each boot, but is not locked in > terms of how many days or years you have it installed. > > >> On the other hand, I think it would be an interesting experiment > >> to have a kernel which can load files from at least the root dir > >> of ISO9660 or UDF disks and similar (ext2? ntfs?) and which can > >> directly interpret GPT partition tables... > > > Yes! I agree! The FD Kernel needs to speak MBR, GPT, ISO9660 & UDF > > (including El Torito), NTFS, Ext2/3/4 to stay relevant. Probably HFS+ as > > well. Linux and/or FUSE should be helpful here. > > Uhm no. You do not agree ;-) Yes the kernel should speak both > MBR and GPT. Something about 4k sector size is also a good > idea. However, El Torito is only so-so as CD/DVD/BD driver > and Jack's drivers are probably better. It would be fun from > an academic point of view to have ElTorito-ISO9660-GPT in a > kernel, but even Linux works great with kernels-without-any- > disk-drivers when you put the drivers in the boot-ramdisk to > load them as separate files from there. DOS with MEMDISK is > basically the same. > > Having (separately loaded) drivers for ISO9660 (we do, even > with long file name support) and UDF (only experimental and > abandoned??) is indeed important for DOS. Also, somebody may > want to undust the old EXT2 semi-drivers called LTOOLS, they > probably still have some sort of ancient limitation such as > lacking LBA support or getting confused by non-ancient EXT2 > or even EXT3 or EXT4 filesystems. Note that LTOOLS, similar > to SMBCLIENT, works a bit like FTP clients: You type some > command and files get transferred. That is much easier than > making a drive letter, because a Windows or Linux drive is > probably way more complex than can be represented as a good > old DOS drive letter and the drivers would also be way more > complex than the amount of RAM that you want to invest for > a DOS driver (loadable or part of the kernel) would allow. > > This also holds for HFS+ and NTFS and ExFAT and so on, of > course. Even if you take the effort to make a super-powered > DOS extended / DPMI driven driver, you would still end up > having your cool Windows or Linux drive with devices and > pipelines and long Unicode names and so on represented as > a boring, maybe even 8.3-named shim for the sake of letting > your 1980 GIF viewer access your Windows 8 clip-arts ;-) > > If you access your Windows and Linux drive using some DOS > extended file manager with loadable filesystem modules, > you might get a better user experience with less headache > about DOS RAM than when you try to over-boost DOS itself. > > > I'd want FD to be USB-ready (built-in or driver) for Floppy, > > Zip/Jaz/SparQ/LS-120 (similar drives), HDD, CD/DVD/BD, mice, > > gamepads/joysticks, keyboards. > > A built-in driver in that sense would be any driver for any > DOS. It does not have to have any relation with the kernel > of FreeDOS in particular... If fancy USB drives such as ZIP > behave well, they should all be covered by the same storage > driver for DOS. But if you read the docs from Bret, you see > that USB storage devices kind of default to misbehave :-p > > Similarily, CD/DVD/BD go in one category, as long as your > driver speaks the general protocol (or for non-USB: speaks > your controller such as SATA or IDE/ATA/ATAPI) and as long > as you have a CD-like / network-redirector-like driver for > understanding the ISO9660 or other "optical" filesystem. > > I think your contributions would be welcome in writing some > components a la SHSU-UDF (SHSUCDX but then UDF) or modules > for Bret's drivers to understand GPT with all FAT sizes and > maybe maybe the most basic support for the most widespread > "modern" filesystems. Say some NTFS version and EXT2 with a > bit of resistence to EXT3 and EXT4 at the expense of being > only read-only or something... As long as you get a bit in > touch with your Windows and Linux data... I think writing > from DOS to those is a risky idea in the first place. That > would be like using a disk hex editor to fix your DirectX. > > Luckily Bret already supports mice, keyboards and game :-) > > > I think Jim Hall's suggestion of a virtualized OS is more applicable > here. > > Something like MOL (Mac On Linux), or QEMU User Space Emulation (ala > Wine) > > with device redirection to generic hardware might be best. > > That would be called dosbox and dosemu then, already exists ;-) > You could contribute by making a TINY Linux distro around them > which mostly serves as workhorse for all sorts of drivers, for > hardware and filesystems, network, showing your CGA game in > suitable form on your holographic tablet touch screen, etc... > > >> Some automated or semi-automatic quality checks seem interesting. > > > Just need people to start writing tests. :D > > Feel invited. Note that with automated code quality checks you > will initially just find out that DOS is convoluted and ugly. > But it has to be like that to be compatible. The hard part is > to find out what is necessarily ugly and what are real bugs :-p > > > I've seen cwsdpmi r7 supports upto 64GB address space. Some new > interfaces > > might be nice to program too, but I'd advocate step one to be making use > of > > such extensions transparent to old programs. > > How are your experiences with CWSDPMI r7? Can you help making > it more stable, at least by giving feedback to the maintainer > who probably does not really have but will enjoy it if people > enjoy the proof of concept? :-) > > You are right about the transparency in some aspects: If your > interface can only allocate 100 MB for some reasons, you can > still offer ten programs to allocate 100 MB each as long as > you know that you actually have 1 GB and as long as you can > let the driver keep an overview which 100 MB is of which app. > > > I think memcopy becomes more important the more we look to implement > > advanced hardware like USB1.1/2.0/3.0, 10/100/1000 ethernet. They're > > all based on memory mapped IO. > > How do you know? Maybe they can also just DMA to where you > need the data to be in the end? In particular with USB, the > problem seems to be more that USB 1 is not for big chunks > of data and requesting many small chunks has big overhead, > no matter how fast you memcopy them. You get similar issues > with disk I/O, DOS caches rarely pool your I/O to read-ahead > megabytes of your MPEG or combine several FAT changes before > writing them in some smart and safe way. Instead, expect DOS > apps to read your MPEG 32 kB at a time and update the FAT at > a ratio of a few bytes at a time. Combine that with the IOPS > rating of a typical USB2 stick and the overhead of only using > USB1 to talk to it and you see why sorting your family pics > on that stick or some SD card is not very smooth inside DOS. > > You could try to write a layer of cleverness and pooling for > some cache, or a complete cache, but note that people might > actually prefer basic: You write it, it is slow, but you can > unplug that USB stick or even your whole PC after a fraction > of a second and the data already is there and consistent... > > >> Maybe we should discuss the roadmap again in the first place? > > > I'd like to see more discussion. In the mean time, I'll keep > > experimenting. > > Enjoy :-) As Tom said between the lines, the (more long term) > roadmap is more visionary and less based on consensus or some > practical "what do we NEED to add NEXT" considerations. The > roadmap for 1.0 and 1.1 was more like that. Today I would say > the question is more which bits you want to ADD and less what > you want to CHANGE DOS as a whole into. Because after all, it > is quite good that DOS is what it is. It does not need to be > a weak imitation of something else which already is good, too. > > Regards, Eric :-) > > > > > ------------------------------------------------------------------------------ > Try New Relic Now & We'll Send You this Cool Shirt > New Relic is the only SaaS-based application performance monitoring service > that delivers powerful full stack analytics. Optimize and monitor your > browser, app, & servers with just a few lines of code. Try New Relic > and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may > _______________________________________________ > Freedos-kernel mailing list > Fre...@li... <javascript:;> > https://lists.sourceforge.net/lists/listinfo/freedos-kernel > |