* This is the TODO file for the Linux DOS emulator/Robert Sanders.
* Last updated 7/6/93, for dosemu 0.49.


c* GENERAL ================================

1) hardware timers. (and with them, ints 8 and 1c, and better sound emulation)
2) find out why INT 0x15 CANNOT be revectored or it makes LINUX.EXE fail.
3) find out how to use FPU emulation!
*** done.
4) make BOUND exception handling correct
5) get the ctrl-alt-pgup reboot to correctly reinitialize XMS, EMS, MFS, 
   kbd, VGA.
6) add 0x6f opcode emulation (outsb?)
7) CMOS code...add the RTC alarm, add more values, add the ability to
   set the time/date as in int 1a.
8) fix time and date when it says 24:56 for time 12:56...& 24-hour wordperfect 
   crash
9) block all signals around shmget and shmctl, so no shm blocks are allocated
   then orphaned...
10) put BIOS equipment at a reasonable address...revamp address stuff in
    general
11) isolate system functions and make sure read()s and writes() complete
    the full size.
12) make can_revector (inline it, too) work as an array...
13) Norton 7.0 dies?
14) save speaker state on VC switch and turn speaker off.
15) Get permissions/uids straightened for suid running.  Especially
    set_ioperm/open()/semctl()
16) Specify config file on command line.

* KEYBOARD ================================

1) add some way to set keyboard flags w/standard key sequences,
   or alt-keys do it automatically
2) ctrl-break from normal keyboard, and making ctrl-break take effect 
   immediately (see scanchek...requires ENTER after), also ctrl-c.
3) fix 4dos KSTACK...
4) keyboard helper ISR in V86 mode.


* DISK ================================

1) put fsync() in write_sectors() for removable disks.
2) write protect on drives!
3) alternate boot disk/block? (see 5)
4) int13 checking for valid disk number (and valid results by ifp)
5) disk switching after bootup
6) revamp hdimage header to include version #, date, format type,
   etc.  also a 0.49 -> 0.50 conversion program.
7) Revamp partition code to have multiple partitions, etc.

* SERIAL and PRINTER ========================

1) serial faster than 1200 baud, get rid of shmem queue?
2) finish serial routines (loopback, other interrupts)
3) fix/revamp lpt.c for sanity
4) need to add MSR delta interrupts
5) fix mouse directive (file desc. passing)
6) make lpt system() call use environment variables, like:
   "/bin/sh lpr $FILE $OPTS"
7) check for lockfiles in serial routines, better sharing of
   serial ports, exception checking, etc.
8) dummy serial port for spacing (it can use /dev/null, perhaps?)

* VIDEO ==================

1) support no-blink int10 interrupt
2) fix MDA stuff...
3) make BIOS-VGA save/restore text mode handle background writes
4) make get_video_ram() and put_video_ram() do the right thing if our
   VC is not current...also, turn some WAITACTIVEs to just foreground checks
5) fix bug in new restore code about blink/highintensity bit (0x80).  turns on
   (so), but won't turn off (se).  might have to not rely on terminals having
   per-capability off strings. see pcshell and WordPerfect(numlock) for bug.
6) set console to KD_GRAPHICS to stop kernel error messages?
7) fix interrupted-termcap sequence bug.
8) why qedit freaks on SUBSYS/CONFIG code, when d86 requires those for color.
9) change the WAITACTIVE pause for current VC to just check for current VC.
   (and really use the screen_mapped or whatever flag.)
10) fix ET4000 weirdness
11) monochrome for termcap-driven?
12) separate screen refresh from timer tick (i.e. make it a lpt-like periodic
   function)
13) jump into F000:F065 to "relocated video handler" (as Norton sysinfo says).
   this is apparently interrupt 0x42.
14) MDA setting in config (not compile time)
15) fix termcap display (esp. scrollup & clear and restore_screen.)  
    undefining CHUNKY_RESTORE fixes it...
16) needing ^L (or enter) to make screen finish drawing itself.
    always seems 1 char behind, but it is in actuality the screen
    which is behind. (shows bad in HELPPC)
17) Tseng save/restore doesn't save bottom 1/3 of screen in 800x600,
    problems switching from 1024x768x256 -> 80x25 Linux text mode
18) output to stdout, bugs to stderr   
19) copy tests from vgalib for specific card types and allow 
  autoselect; also test user selection.
20) find out why dmode won't work anymore!
21) get rid of cruft in dosvga.h; rename...

* EMS/XMS ====================

1) write an EMS device driver...and an XMS one, too?
2) clean up kernel patch, send diff to Krishna & Andrew, send dosemu to
   Andrew
3) why does SYSINFO react weirdly to system handle size?
4) CRC & file creation errors with RAMDRIVE.SYS...
5) fix EMS 
6) fix XMS to act sanely to xhlist and Norton
7) Make XMS a real driver, with some portions of it resident
   in DOS.  DOS polls the A20 line, and it would be faster if it ran on
   the DOS side.


* REDIRECTOR ===========================

1) WP gives "Replace WP disk 2" when run from emufs drive
2) XXX exist, Replace? messages from PAK on MFS drive
3) problem with ioperms and setreuid() stuff in mfs.c...
4) CSHOW gives "Missing files" when run from an emufs drive
5) MFS problem with empty directories (freezes unless -t is specified ????)


* WILD =================================

1) convert to clone() processes 
2) use file descriptor passing to communicate/make a clone option 
   to share filp[].  
3) write new semaphores in shared memory AND kernel IPC (i.e. use 
   kernel semaphores for blocking.)???  Is this possible?
4) write device drivers for debugging, like DOSERR.


* CONFIG =================================

1) Add "include" directive.
2) Convert to yacc/lex.


* Local Variables:
* mode: outline
* eval: (hide-body)
* End:
