*BSD News Article 15160


Return to BSD News archive

Newsgroups: comp.os.386bsd.development
Path: sserve!newshost.anu.edu.au!munnari.oz.au!constellation!osuunx.ucc.okstate.edu!moe.ksu.ksu.edu!crcnis1.unl.edu!wupost!csus.edu!netcom.com!jmonroy
From: jmonroy@netcom.com (Jesus Monroy Jr)
Subject: FDC Flow charts #1
Message-ID: <jmonroyC62GI7.5oC@netcom.com>
Keywords: FDC flow chart logic 
Organization: NETCOM On-line Communication Services (408 241-9760 guest)
Date: Mon, 26 Apr 1993 01:08:31 GMT
Lines: 154

mail julian@jules.dialix.oz.au
flow chart #1
        This posting is for the FDC & QIC-40/80 group.
 
        What follows is the logic for the FDC through the function
        calls and Macros.  "Decision" logic is not included, except
        where a Macro or Function was called.
 
 
        Logic for What?
        ---------------
                This is the logic for a FDC "boot-time" routines.
        The OS (Operating System) passes control to the routines,
        at which time they determine their availablity to the OS
        and what equipment (devices) is at it's disposal.
 
___________________________________________________________________________
Jesus Monroy Jr                                          jmonroy@netcom.com
/386BSD/device-drivers /fd /qic /clock /documentation
___________________________________________________________________________
 
 
           +-------------
           |*  Boot time - funtions in order run
     ~~~~~~|               logical and physical
           |
           +-------------
           
 
    +-----------------+               +---------------
    | | fdprobe()   | |               |* Probe - start here
    | |             | |               |
    | |             | |~~~~~~~~~~~~~~~|
    | |             | |               |
    | |             | |               |
    +-----------------+               +---------------
            !
            !
            V
    +-----------------+               +---------------
    | | check_fdc() | |               |* make sure the chip works
    | |             | |               |
 +~~| |             | |~~~~~~~~~~~~~~~|
 !  | |             | |               |
 !  | |             | |               |
 !  +-----------------+               +---------------
 !          !
 !          !
 !          V
 !  +---------------------+           +---------------
 !  | | check_autoseek()| |           |* is it a NS capable of
 !  | |                 | |           |  auto track seek after
 F  | |                 | |~~~~~~~~~~~|  a read/write
 A  | |                 | |           |
 I  | |                 | |           |
 L  +---------------------+           +---------------
 U          !
 R          !
 E          V
 !  +---------------------+           +---------------
 !  | | check_lowpower()| |           |* is it a WD or NS capable of
 !  | |                 | |           |  shutting the chip down
 !  | |                 | |~~~~~~~~~~~|  automatically
 !  | |                 | |           |
 !  | |                 | |           |
 !  +---------------------+           +---------------
 !          !
 +~~~~~~~+  !                         +---------------
         !  !                         |* If probe Successful
         V  V                         |    call attach
      ---------------~~~~~~~~~~~~~~~~~|  else
         RETURN                       |    contiune without fdc
           TO                         |
           OS                         +---------------
      ---------------
            !
            !
            V
    +-----------------+               +---------------
    | | fd_attach() | |               |* test for type of drive attached
    | |             | |               |  (fake it for now - just read
    | |             | |~~~~~~~~~~~~~~~|   the CMOS)
    | |             | |               |
    | |             | |               |
    +-----------------+               +---------------
            !
            !
            V
    +-----------------+               +---------------
    | | rtcin()     | |               |*  read the CMOS
    | |             | |               |
    | | ASM-MACRO   | |~~~~~~~~~~~~~~~|
    | |             | |               |
    | |             | |               |
    +-----------------+               +---------------
            !
            !
            V
   +------------------------------+
   |+---------------------+       |      +---------------
   || | INITStatusBits()| |       |      |* Initalize the status bits
   || |                 | |<~~+   |      |  for each drive
   || | C-MACRO         | |   !   |~~~~~~|
   || |                 | |  T!   |      |
   || |                 | |  e!   |      |
   |+---------------------+  s!   |      +---------------
   |        !                t!   |
   |        !                 !   |
   |        V                f!   |
   |    +--------------+     o!   |      +---------------
   |    |              |     r!   |      |* If is works report
   |    | Report       |      !   |      |  the logical number and
   |    |              |     e!   |~~~~~~|  drive size
   |    | stdout(err)  |     a!   |      |
   |    |        - -_  |     c!   |      |
   |    -       -    - -     h!   |      +---------------
   |     -     -      -       !   |
   |      -   -              l!   |
   |       - -               o!   |
   |        !                g!   |
   |        !                i!   |
   |        V                c!   |
   |+-----------------+      a!   |      +---------------
   || | turnoff()   | |      l!   |      |*  turn off the fd motor
   || |             | |       !   |      |
   || | C-MACRO     | |~~~~~~~+   |~~~~~~|
   || |             | |           |      |
   || |             | |           |      |
   |+-----------------+           |      +---------------
   +------------------------------+
            !
            !
            V
    +-------------------------+          +---------------
    | | SET_Transfer_Speed()| |          |*  set the tranfer speed
    | |                     | |          |   for the drive
    | | C-MACRO             | |~~~~~~~~~~|   (may cause an interrupt
    | |                     | |          |
    | |                     | |          |
    +-------------------------+          +---------------
            !
            !
            V
         +-------------+
        (               )
        (  END          )
         +-------------+
 
 
___________________________________________________________________________
Jesus Monroy Jr                                          jmonroy@netcom.com
/386BSD/device-drivers /fd /qic /clock /documentation
___________________________________________________________________________