www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/06/26/14:56:30

Date: Wed, 26 Jun 1996 21:44:23 +0200 (DFT)
From: "Garrido Freire, Fco. Javier ((R)JA.GAR. SOFT)" <garridof AT sierpes DOT cs DOT us DOT es>
Reply-To: Garrido Freire <Francisco-Javier DOT Garrido AT sierpes DOT cs DOT us DOT es>
To: djgpp AT delorie DOT com
Subject: Multitasking in DOS (fwd)
Message-Id: <Pine.A32.3.93.960626213957.10128D-101000@santacruz.cs.us.es>
Organization: Infoalum Mail Gateway <Infoalum AT cs DOT us DOT es>
Mime-Version: 1.0

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime AT docserver DOT cac DOT washington DOT edu for more info.

---1764323942-1360270983-835125931=:10866
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine DOT A32 DOT 3 DOT 93 DOT 960626213958 DOT 10128F AT santacruz DOT cs DOT us DOT es>


	Several month ago, I got out DJGPP v2.0. I hoped it
supported multitasking, but it didn't. I wonder why, because DOS
has a elementary support for multitasking built-in since v3.0.

	MULTITASKING IN DOS? Yeah!! Just, have a look at the
well-known debug program. DOS can run two programs, debug itself,
and that one which debug is debugging. You decide when DOS must
run debug's code and when child's code by means of 'T'rap and
'G'o debug's commands. You work as a scheduler.

	If so, it shouldn't be too difficult to write a routine based
in Trap which can execute more than a child. I remember you, trap
command has an argument, 'value', indicating how many instructions
must be executed.

	Of course, this's not enough, I know, to implement multitasking.
One of the most important things is to manage Input/Output devices.
There should be a lot to say just about this: keyboard, screen, disk,
memory, ... And functions: pipe, exec, dup, dup2, kill, getpid,
getpgrp, popen, exit, chdir, ... and surely fork and wait, :)

	I'd like improve DJGPP with multitasking by myself, but
DJGPP is too BIG for me (alone?) and I don't know protected-mode
programming very well.

	However, as "el movimiento se demuestra andando", I've written
a very easy demo. This program works as a monitor and takes a list of
programs to run concurrently. Unfortunatly, I couldn't make INT 01h
method work (I don't know why). So, children use 'cooperative' method.
I don't like it very much, but, it WORKS!!. Still, I'm working on it.

	BTW, information for making the monitor comes from "Monitor for
IBM-PC v1.0" by Tim Paterson, "Undocumented DOS", June 1991, chap 7.
This information has been invaluable. I emailed to Ralf Brown asking
him if I could release this piece of code from Monitor. I haven't
answer yet ...

	Another good source of information is "Operating Sistems: Design
and Implementation" by Andrew S. Tanenbaum. He gets a much better,
authentic 'preentive' multitasking at a *8088*!!

	I'm waiting for comments about this. Please, flames be soft.

PS: I'm still waiting for permission from Ralf Brown and/or Tim Paterson.
    Ah!, please, excuse my 'bad' English!

-------------------------------------------------------------------
F. Javier Garrido F.   (R)JA.GAR. SOFT    Dpto. de Computacion e IA
MINIX User. (USENET comp.os.minix & SCS)  Facultad de Informatica
Email: Francisco-Javier DOT Garrido AT cs DOT us DOT es  y Estadistica de Sevilla
URL: http://www.cs.us.es/~garridof                       (SPAIN)
"The light that burns twice as bright, burns half as long ...
   ... and you have burned so very, very brightly, Roy."
					  TYRREL from Blade Runner




---1764323942-1360270983-835125931=:10866
Content-Type: APPLICATION/ZIP; name="multi.zip"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine DOT A32 DOT 3 DOT 93 DOT 960626214423 DOT 10128G AT santacruz DOT cs DOT us DOT es>
Content-Description: 

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
---1764323942-1360270983-835125931=:10866--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019