Ŀ
۲ -=-=-= CyberRax Programming =-=-=- ۳



                                 presents:



     $$$$$$$$$$$  $$                        $$       $$$$$$$   $$$$$$
     $$                                     $$      $$     $$  $$    $$
     $$                $$$$$     $$$$$      $$     $$          $$     $$
     $$$$$        $$  $$   $$   $$   $$  $$$$$$$$  $$          $$     $$
     $$           $$  $$$$$$$  $$           $$     $$          $$     $$
     $$           $$  $$        $$   $$     $$      $$     $$  $$    $$
     $$$$$$$$$$$  $$   $$$$$$    $$$$$       $$      $$$$$$$   $$$$$$
                  $$
                 $$
                $$    v  e  r  s  i  o  n     1 . 0 3
               $$



Ŀ
 Introduction 


 EjectCD  is  a little memory resident utility which allows you to open/close
 the door of your CD-ROM drive by pressing F11


Ŀ
 A little closer 


 I wrote this TSR for 2 reasons:

   a) the eject-button of  my  CD-ROM  is  way  too  small  and  thus  hardly
      pressable;
   b) if  I'm in a sub directory and replace the CD-ROM then Volkov Commander
      (or DOS) doesn't notice it and doesn't change to root directory  as  by
      diskettes, but  says  "Can't  read disk".  The only solution to this is
      "cd E:\" from commandline.

 If you have the same problems then EjectCD is just right for you.


Ŀ
 Usage 


 Simple:

                   EJECTCD [drive:] [switch1] [switch2] [etc.]


 Drive and switches are somewhat optional, can be preceded by  minus  (-)  or
 slash (/) and mean the following:

 drive:  -  Drive which to handle.  This is for cases when you have more than
            1  CD-R?M  devices on your system and want to open the second (or
            perhaps the third?) one.
 I       -  Install. That's what this parameter does:  installs  the  driver.
            This  means  you can't install EjectCD just by double clicking or
            pressing ENTER on it's name in a shell, you must specify  "I"  on
            the command line
 U       -  Uninstall from memory.
 F       -  Force uninstallation.   EjectCD gives usually error if other TSRs
            which use the same interrupts have been installed  after  it  and
            refuses to  uninstall.    With  "F"  switch  you  can  force  the
            uninstallation.  But be warned: the system might become  unstable
            or even crash after that.
 E       -  Enable driver.  This switch is active by default and doesn't have
            to be  specified by install.  It's mainly for re-enabling the TSR
            after it has been temporarily disabled
 D       -  Disable TSR. Causes the TSR not to react on F11.
 B       -  Beep by opening/closing. Default value.
 R       -  Change to root directory of CD  drive  (like  in  "cd  \").  This
            option is also active by default.
 C       -  Make CD  to current drive.  Meaning: you're on C: drive, press 2x
            F11  and  you're  on  D:  (or  whatever  drive  your  CD-ROM  is)
            Simple  :) This is by default disabled.
 CS      -  Enable commander  support.    Now  this  needs  a little bit more
            explaining.  Nobody is using pure DOS nowadays (atleast  not  all
            the  time), mostly everything is being done through some shell: a
            file manager, some graphical shell (we're still talking about DOS
            here, so I don't mean Winblows). Anyway,  if  you're  using  some
            file  manager  (a  "commander")  you usually have 1 or two panels
            where're the files and  directories.    If  you're  now  on  your
            harddrive,  you open and close the CD and "C" parameter was used,
            then nothing happens: the panel doesn't reflect the  contents  of
            D: drive.   It's because the setting took place in background and
            the commander doesn't know that anything happened.  Until you try
            to enter another directory.  Decent file managers have for  cases
            like  this  a  special  command by which they re-read the current
            directory.
            All "CS" switch does is to tell EjectCD to force the commander to
            re-read the directory after the CD door has been closed.  So,  if
            both  this  and the "C" switch are in use then after pressing F11
            twice the commander shows what's on your CD-ROM. By default  this
            option is disabled.
 ALT     -  Use  ALT+R  as  commander  hotkey  for re-reading (if you use DOS
            Navigator).
 CTRL    -  Use CTRL+R (default, because I use Volkov Commander).
 1ST     -  Clears the disk number from resident part so it would handle  the
            first CD drive again.  This is default.
 OPEN    -  Opens the  CD  door  without  going resident.  This switch can be
            used for example in batch files.
 CLOSE   -  Closes the drive door from the commandline.

 When I said "optional" then I meant: under some circumstances.   If  EjectCD
 is not installed then executing it without parameters will give you the help
 screen with short description of switches.  On the other hand, if EjectCD is
 resident, no parameters cause the program to show current settings.  Several
 switches  can  be  given  together,  but  they must be separated with spaces
 (EjectCD i E+ aLt).  As you might have already guessed they can be either in
 upper or lower case.   You  can  reverse  the  action  of  every  switch  by
 appending a minus to it (EjectCD P:- /C- -B-)

 If  TSR has been successfully installed you simply have to push F11. On that
 the character "W" (for "Waiting...") is shown in the upper right  corner  of
 monitor.   If  DOS  sets  the  markers that it's not busy character "" (for
 opening) or "" (for closing) is displayed, a  bell  is  played  through  PC
 speaker  (if this feature hasn't been disabled) and DOS is given the command
 to open/close the CD-ROM's door.  When the operating  system  has  completed
 this the original character is restored on the screen and TSR ends.


Ŀ
 Notes 


 ****************************************************************************
 *   This  program,  as  my  first  AMIS  compliant, is dedicated to Ralf   *
 *   Brown, the author of Interrupt List, Alternate  Multiplex  Interrupt   *
 *   Specification,  SPAWNO,  AMISlib and several other products, for his   *
 *   enormous work on maintaining and expanding the Interrupt List.         *
 ****************************************************************************

 "Default" switches are ON if they were not set otherwise
 This means:             EJECTCD I
 is exactly the same as  EJECTCD I E 1ST B R C- CS-
 and                     EJECTCD I CS
 is the same as          EJECTCD I E 1ST B R C- CS CTRL
 So, by default EjectCD is enabled, handles the first  CD  drive,  beeps  and
 changes  to  root  directory,  but has no commander support nor makes the CD
 drive to current.

 As said, by default the first CD-ROM (as reported by  the  CDX  program)  is
 opened.  To handle the second or later drive it's necessary to specify it on
 the commandline.    The  drive  letter ain't hardcoded, so you can change it
 every time you need.  The "set drive/directory" code works  also  on  not-CD
 drives  (if you specify them), so it can be used as a limited alternative to
 Volkov Commanders "Ctrl+>" hotkey (having the  advantage  that  VC's  hotkey
 doesn't change drives).

 DOS  doesn't  allow to use it while it's busy (EjectCD uses it for drive and
 directory setting) so if you did an almost-didn't-touch-the-key press on F11
 then you probably won't get anything.  Press F11 down and wait while the "W"
 appears in the right upper corner on monitor.  It won't take long.  Try it a
 few times to see what I mean.

 It seems that DOS ain't checking extended keys  in  pure  environment  (when
 you're  not using any shell) so you won't have much from this program if you
 don't use any commander.

 The resident part has a variable which will be reversed every time  the  TSR
 opens or  closes  the  CD  door.    Some actions are taken according to that
 variable and it's the only way EjectCD knows the status of the door.  So, if
 you choose to use EjectCD then use only it and don't press the  eject-button
 any more.   If the TSR only opens/closes the door and no drive, directory or
 commander setting is being done then there's no problem, but if it's not  so
 then you might get some error messages from your commander or DOS that drive
 can't be  accessed.    Just  set  the  door  to what it was when EjectCD was
 activated the last time before physical actions, and  everything  should  be
 fine again.

 If you  install  EjectCD  it expects the CD drive door to be closed.  Better
 set it this way.

 If you have DOS 5 or better (or third party appropriate utilities for  lower
 versions)  then I suggest you load this utility high (LH EjectCD.COM I) from
 your AUTOEXEC.BAT before executing the file manager.  This  might  save  you
 some bytes.

 If  you  don't  like  the annoying beep (atleast I don't) then turn off this
 feature of EjectCD or get a program to shorten the bell  (like  my  jTSR  or
 Eric Tauck's Warp Driver or Yura Zaitsev's YZBELL)

 You  can't  actually press F11 and right after that press F11 again and wait
 that the door opens and closes.  The door only  opens.    To  tell  you  the
 truth:  the whole computer won't respond while the opening/closing operation
 hasn't been completed.  If the CD drive is slow or the CD-ROM ain't the best
 then it might take some time.

 EjectCD will give an error message on  parameters  which  are  against  each
 other (a'la "enable TSR" and "disable TSR" - "E D").

 The  TSR part gives the key code forward to the next handler of the keyboard
 interrupt.  Meaning: if there are any other TSR's which get activated on F11
 and are loaded before EjectCD then  they  will  still  activate  (after  our
 utility, of course).

 Sometimes the  opening takes a very long time.  There's two main reasons for
 that:
   a) EjectCD executes the necessary code only if DOS reports that  it's  not
      busy with  anything  else.    Because the TSR checks for this condition
      about 18,2 times per second it usually finds the a moment when  it  can
      activate.   But  this is not true for example by starting of MSD, which
      uses DOS to check the disks.  And checking CD-ROMs takes a  long  time,
      during which the TSR can't do anything else than show the "W".
   b) The preparation  for  opening  of  CD  drive by software is slow.  This
      doesn't apply only to EjectCD, but also to all  other  programs.    The
      reason for this is that calls to MSCDEX (the easiest way to perform the
      action) are simply slow.  End of story.

 See "Tested" chapter about problems with M$ Winblows 9x.


Ŀ
 System requirements 


    MS-DOS 3.0 (or a compatible clone)
    80286 or better CPU
    extended keyboard (with 101 or more keys) and supporting BIOS
    a file manager (Volkov or Norton Commander is preferred)
    CD-ROM drive
    a CD driver (you must have it if you want to use the drive under DOS)
    some  variant  of  MSCDEX  2.x  (or something compatible like SHSUCDX or
     NWCDEX)
    ca.  7kB memory during execution, about 900 bytes when resident


Ŀ
 Advantages of EjectCD 


 + Freeware (don't you just love it?  :)
 + You can manage the drive door from your keyboard
 + No need for that ALT+F1 to change to drive
 + Nice beep every time you open/close the CD drive
 + No error because of  sub-directories  (if  anybody  besides  me  ever  had
   them  :)


Ŀ
 Disadvantages 


 - Max. 1,3kB less memory
 - Annoying beeping (optional  :)
 - Possible  conflicts  with  other  TSRs  or programs (shouldn't be, but who
   knows)


Ŀ
 Tested 


 As I am AWFULLY lazy I tested EjectCD throughly only on 1 computer, my  own,
 which  is an AMD 486DX/100MHz, MS-DOS 6.22, with HIMEM 3.10 + RDOSUMB (HIRAM
 by earlier versions) for memory management.  Tested  a  beta  version  on  a
 Cyrix 486DLC/40MHz,  Win95/MS-DOS 7.0 with HIMEM/EMM386 for memory.  Worked,
 but see below.

 CD drive was FUNAI CD-E2450,  a  2x  CD-ROM  which  doesn't  currently  have
 drivers for Winboose.

 EjectCD worked fine with following CD Extension drivers:

            Microsoft's MSCDEX 2.10, 2.23 and 2.25
            John H. McCoy's SHSUCDX 1.0, 1.1, 1.4, 1.4a and 1.4b
            Caldera's NWCDEX 2.50 and 2.81
            PhysTechSoft's PTSCDEX 1.2
            American InfoScience's SUPERCDX 2.12

 Note: EjectCD  didn't have any effect on FDCDEX 0.09 (came with FreeDOS beta
       4), but I believe this isn't the fault of my utility (especially as  I
       couldn't even  access  CD-ROMs when this re-director was loaded).  The
       problem ain't too big though, because  FDCDEX  is  nothing  more  than
       SHSUCDX and all later versions work fine.

 Tested shells ([*] - has been tested in a DOS box under Win95):

 Textmode shells:
    Menuing programs:
       Eugenio J. Alvarez's AUMenu for UNIX (DOS version) 1.4.3a
          Works, but no commander support
       MicroFox Company's Hard Disk Menu 5.03
          Works, but no CS
    Commanders:
       V. V. Volkov's Volkov Commander 4.03SW [*] and 4.05SW
          Works PERFECTLY!
       Eugene Roshal's FAR 1.63SW for Windows 95/NT [*]
          This  was a beta-release of EjectCD which had no commander support,
          so I don't  know  about  that,  but  everything  else  worked  fine
          (besides the fact that some x menu was set under F11 so it was also
          brought up)
       Symantec Corp's Norton Commander 4.0
          Everything's OK
       RIT Research Lab's DOS Navigator 1.51
          The rest is fine, but DN doesn't refresh the panel if...
             ...the drive is being changed
             ...the active directory also exists on the new disk
          In other words:
             a) changing  to  CD-ROM doesn't work completely: the commandline
                indicates a new drive but the file panel doesn't.
             b) if already on CD then you are changed to  root  only  if  the
                drive  doesn't  have  a directory with the name as the active
                one in the last disk.   The  file  panel  refreshing  doesn't
                occur before you try to enter a subdirectory
       Gordon Haff's Directory Freedom 4.61B
          No commander support, but everything else works
       G. A. Denes' FileWizard 1.25
          No  CS,  but  it  seems that this file manager can't access CD-ROMs
          anyway
       Enrico Ferro's The Pinco's Commander 2.2
          Again no CS
       Strathrory System Limited's Terminate Commander 2.11
          And again, no CS. And there's  by  default  DOS  Defrag  under  F11
          (which gets executed after door opening).
       Briggs Softwork's FILE MAVEN 3.5a
          Worked,  but  no  CS  (re-reading  can  be  accessed only through 2
          keypresses)
       M.R.E. Software's Stereo Shell 3.0
          Worked, but no CS
       DN-OSP Team's DOS  Navigator  Open  Source  Project  1.51.11/DPMI  and
       1.6.RC1/RM
          Everything's exactly as by the original DOS Navigator
    Other shells, which can't be classified as commanders or menuing systems:
       Marin Pacific Software's DOSamatic 2.03
          Works.  No  CS  because  this shell doesn't seem to support neither
          re-reading nor CDs
       Richard D. Rutter's ExpanDIR 1.0
          Works, but no  CS  and  a  second  beep  appears  (this  time  from
          ExpanDIR, which signals that F11 doesn't have any functions)
       PC Magazine's RX.COM 1.0(?)
          Works, no CS

 Graphical shells:
    Menuing programs:
       OSCS's QuikMenu 1.06
          Works,  but  no  CS and the spot where the markers were shown stays
          empty, ie the graphical character ain't being restored.    Although
          you can use the special TSR support by pressing F3 (a textscreen is
          presented so TSRs wouldn't mess up the graphics)
       Marc-Olivier Huynh's Fast Access 1.25
          Works,  but  no CS. And the block doesn't stay mostly empty, but an
          undefined character is displayed (I'm not sure whether it's EjectCD
          or Fast Access who's doing it)
       NeoSoft Corp.'s QuikMenu III 3.1h
          Exactly the same as QuikMenu 1.06 (seems to be  the  same  program,
          just  enhanced and sold to another company (or perhaps are OSCS and
          NeoSoft one and the same?))
    Windowed shells:
       Felix Ritter's DESKTOP 2.62e
          Worked, even the "waiting/opening/closing" characters  were  shown,
          but no  CS  and  the  usual  "black-box  syndrome".   Also: in File
          Manager there're "sort options" under F11
       Michal Stencl's SEAL 1d test
          DOESN'T WORK.
       Daniel L. Nice's DOS Start!  1.8g
          Works. Also by this shell the marker are  shown  and  also  here  a
          black box  appears  after  displaying  the markers.  And no CS (DOS
          Start!  does have a refresh button in File Manager, but there's  no
          hotkey for it)

 As  you  saw,  only Norton and Volkov Commander are supported 100% correctly
 (maybe FAR too...).  But "CS"  is  still  an  add-on,  the  main  operation,
 opening/closing  the  drive  door, is working under all tested shells except
 SEAL (which is a fully 32bit shell and  doesn't  give  the  key  forward  to
 real-mode handler)

 [*] About  Windoza9x,  well,  it's  like SEAL: it's controlling all keys and
     won't give them to DOS programs, so it's no use  to  load  EjectCD  from
     AUTOEXEC.BAT and  then press F11 on the Win desktop.  But you can create
     clickable shortcuts (actually PIFs) for opening and closing by using the
     appropriate commandline switches.
     Another  thing:  I  don't  know  why  but  the  beep  occurs  after  the
     opening/closing, not before as it should.  Strange...


Ŀ
 Technical about EjectCD 


 > Written in SPHINX C-- and compiled with 0.238 final
 > Norton  Commander  Editor  (NCEdit, not Norton Editor) was mainly used for
   writing
 > Liu TaoTao's Super Tracer (TR) 2.03 and 2.52, Borland's Turbo  Debug  (TD)
   2.01,  Micro$lot's  DEBUG  from  MS-DOS 6.22 and VAG's/OlegPro's DeGlucker
   (DG) 0.05-VSL were used for debugging
 > SEN's HIEW 5.60 and 6.16 were used for examining the code
 > Lot of material from Interrupt List R60 and R61, HelpPC 2.10,  Tech  Help!
   4.0a and Norton Guides was used
 > Source's size is 41019 bytes (it's fully commented, that's why)
 > It has 1196 lines
 > The TSR is AMIS 3.5+ compatible
 > Commander support is nothing more than putting the code of CTRL+R or ALT+R
   into the keyboard buffer


Ŀ
 History 


 For the complete list of changes see EJECTCD.HST


Ŀ
 Future 


 If there will ever be a next version of this toy then there will probably
 be these enhancements:

   + code  optimizations  (thus  smaller  size of executable and the resident
     code)
   + if I figure out how to make the command prompt return faster  then  I'll
     add the code to do so
   + support for the DOS' "pure environment"


Ŀ
 Greets 


 Today's greets fly to:

 Ralf Brown                -  whom this  program  is  dedicated to.  You're a
                              GOD!!!
 Undertaker                -  (I hope I wrote your name the way  *you*  write
                              it).  I got the whole idea of EjectCD from your
                              CDROM  program  (I  read  about  it in FakeCD's
                              documentation).  Thanks, dude!
 Mandragore/(now dead)DDT  -  the routine for opening/closing is ripped  from
                              your Replay II virus
 Peter Cellik              -  for inventing C--
 Mishel Sheker             -  for  taking  over  the development of C-- after
                              Peter moved to other things
 VAG and OlegPro           -  DG is really HIGH TECH...
 Sen                       -  HIEW rocks!
 Vsevolod V. Volkov        -  VC's simply the coolest commander there is
 David Jurgens             -  HelpPC, well, what could I say...
 Dan Rollins               -  Tech Help!  was VERY helpful
 Gary Chason               -  for his Interrupt Helper, a  great  viewer  for
                              Ralf's IntList
 pim                       -  who's been the main reason why 1.01 didn't stay
                              the last  version  of  this  program.   Another
                              thanks for taking the time and conforming  that
                              the  code  I  came  up  with  in  1.02a  indeed
                              worked.
 JRD                       -  whose  NRO  has  been  used  to   format   this
                              documentation
 Poe                       -  for their AWESOME song "Haunted"


Ŀ
 Validating 


 To  check  if  all files in this archive are OK store my public PGP key into
 your public-key-file (PGPK -a CYBERRAX.SIG), validate  CRCHECK.CRC  (PGP  -v
 CRCHECK.CRC)  and then execute ROSE SWE's CrCheck (if you don't have it, get
 it, it's great!)


Ŀ
 Closing 


 So, we have come to the end.  If you have any suggestions  or  bug  reports,
 you  want support to a particular commander or you want to say how lame this
 TSR is, you found a mistake in this text file or you have some  difficulties
 with the program than feel free to mail me at


                              cyberrax@yahoo.com


 Oh  yeah, forgive me my not so good English (not my native language, besides
 that, I'm notorious for my typos  :)


                                   CyberRax
                               the Hacking One
                                      of
                      -=-=-= CyberRax Programming =-=-=-
                          "has still a SLOW CD-ROM"

                               April 16th, 2002
                    Tootsi, Parnu County, Estonia, Estonia
