RPLFAP.TXT Driver File Contents (4DISK.EXE)









                                     RPLFAP

                   Remote Program Load - Formats and Protocols

                       Copyright (C) 1987, NCR Corporation




             This  document contains a brief description of  the  formats 

        and protocols used by the ROM boot.  It is intented to be used by 

        those professionals wishing to developed more sophisticated  boot 

        server  software.   Anyone not part of this process need not read 

        any farther.





































                                        1










        *****************************************************************
        *                                                               *
        *       General Information                                     *
        *                                                               *
        *****************************************************************

             The ROM boot is enabled during the ROM scan performed by the 

        ROM  BIOS  software.   The primary adapter has a ROM  address  of 

        D8000 and the secondary adapter has an address of DC000.   During 

        ROM  scan,  interrupt 18 (RPL) is patched to point to  the  entry 

        point  of  the ROM.   If the PC fails to boot from a diskette  or 

        hard  disk  then ROM BIOS issues an interrupt 18 and  control  is 

        passed to the ROM boot code.  

             At  this point the ROM reserves a portion of memory  at  the 

        top  of the address space to be used as the local ROM data  area.

        Next  the  diskette interrupt is patched and the boot process  is 

        restarted.

             At the next diskette request, the SERVER_FOUND flag is clear 

        so the ROM will attempt to find a boot server.  A FIND_SERVER PDU 

        (Protocol  Data  Unit)  is formatted and broadcasted to  the  RPL 

        functional address.   If a boot server is available then the  PDU 

        will  be  returned with the specific address of the boot  server.  

        This  will  then be used on all subsequent  disk  requests.   The 

        scope   of   the   first   broadcast   is   controlled   by   the 

        "this_ring_only" flag that is in the local data area.

             All  ring  activity  is  performed using LLC  class  1  type 

        operations.   The  ROM  contains code for a simple class  1  LLC.  

        This  module  has  a  similar  interface  to  the  standard  ASI.  

        Transmissions  are  made  using un-numbered  information  frames.  

        TEST and XID frames are supported but not used by the boot ROM.

             The  concept of an 'IMAGE' is simply this.   Disk images are 

        known to the boot server by image names.   The RPL ROM can change 

        the mapping of its drive by changing the name of the image it  is 

        requesting.

















                                        2










        *****************************************************************
        *                                                               *
        *      General PDU formats                                      *
        *                                                               *
        *****************************************************************

             The  boot ROM will generate and accept PDUs of the following 

        format.   There  are two sections to the PDU format.   The  first 

        section is a set of required fields.   The second set are  fields 

        that are dependent on the command code.

             Each  PDU  format must start with at least  this  structure.  

        This  is  called the default header.   It contains all  the  data 

        required to manage the send and response protocol and it contains 

        NO user data.   The COMMAND and CORR are used to match a response 

        with the sent command.  The RETCODE determines the status of that 

        response.  The CORR, correlator, field is a unique value for each 

        transmission and it is simply incremented with each PDU.

        Required fields:

                offset  length  type    description
                ------- ------- ------- --------------------------
                   0       2     word   length of header
                   2       2     word   delimiter
                   4       1     byte   format/request code
                   5       1     byte   return code
                   6       2     word   control flags
                   8       2     word   correlator
                  10       6     byte   reserved 


        Delimiter:      05350h  or 'PS'         ; protocol delimiter    

        Format codes:

                What follows are the format codes that are currently
                defined for the boot process.  NCR reserves all codes
                in the range 0x00 - 0x3f inclusive.

                FIND_SERVER     (0x10)  - Find boot server by name
                FIND_NOP        (0x12)  - Server will response (+)
                SECTOR_READ     (0x20)  - Read a sector 
                SECTOR_WRITE    (0x21)  - Write a sector
                SECTOR_VERIFY   (0x22)  - Verify a sector

        Control flags:

                M_RESPONSE      (0x0001)        - response indicator






                                        3










        *****************************************************************
        *                                                               *
        *      Specific PDU formats                                     *
        *                                                               *
        *****************************************************************

             What  follows  are the definitions of all the  standard  PDU 

        types as defined by the standard boot ROM.


             FIND_NOP        standard header only

             FIND_SERVER

                  offset  length  type    description
                  ------- ------- ------- --------------------------
                     0      16    struct  default header
                    16      16    byte    server name


             SECTOR_READ

                  offset  length  type    description
                  ------- ------- ------- --------------------------
                     0      16    struct  default header
                    16      16    byte    image name
                    32       1    byte    head number
                    33       1    byte    track number
                    34       1    byte    sector number
                    35       1    byte    reserved


             SECTOR_WRITE
             SECTOR_VERIFY

                  offset  length  type    description
                  ------- ------- ------- --------------------------
                     0      16    struct  default header
                    16      16    byte    image name
                    32       1    byte    head number
                    33       1    byte    track number
                    34       1    byte    sector number
                    35       1    byte    reserved
                    36     512    byte    one sector of data  











                                        4










        *****************************************************************
        *                                                               *
        *      Extended Interrupt 13 Control functions                  *
        *                                                               *
        *****************************************************************

             These  extended functions are obtain at  interrupt  13,  the 

        diskette interrupt.   This interrupt is used since it already has 

        to  be  patched  to  support the boot process  and  these  higher 

        function values are not currently used.

             The carry flag will be set on return if there was an  error.  

        The following error codes can be returned.

        error:  ERR_NORMAL              0       normal complete, success
                ERR_BAD_CMD             1       bad command
                ERR_WRITE_PROTECT       3       write protect error
                ERR_NOT_FOUND           4       sector not found
                ERR_BADFUNC            80h      bad function
                ERR_BUSY               81h      stack busy
                ERR_LLCINIT            82h      error during LLC init
                ERR_LLCERR             83h      error during LLC transmit
                ERR_TIMEOUT            84h      no response received


        SEND_RESP

                This  function  is the method by which PDUs are send  and 

                received  by the boot ROM.   This entry point  is  single 

                threaded  so  only one PDU at a time may be  outstanding.  

                The  user may use this entry point to  send  non-standard 

                PDU  formats  to  the boot server.   The  format  of  the 

                send/response list is defined later

                entry:  register  desciption
                        --------  --------------------------------
                           ax     F000h
                          es:bx   address of send/resp list


                return: register  desciption
                        --------  --------------------------------
                           ah     error












                                        5










        UNLINK

                When the user wants to remove the RPL ROM from the system 

                he should issue this call.

                entry:  register  desciption
                        --------  --------------------------------
                           ax     F002h


                return: register  desciption
                        --------  --------------------------------
                           ah     error




        GET_PARMS

                This  function will copy the contents of the user  alter-

                able ROM data space into a user buffer.  This can be used 

                for status or to alter the data space.  See the following 

                definitions of this data area.

                entry:  register  desciption
                        --------  --------------------------------
                           ax     F003h
                          es:bx   address of buffer
                           cx     length of buffer


                return: register  desciption
                        --------  --------------------------------
                           ah     error





















                                        6











        SET_PARMS 

                This  function will copy the contents of the user  buffer 

                into the user alterable ROM data space.  This can be used 

                for status or to alter the data space.  See the following 

                definitions of this data area.  There is NO validation of 

                these data so be carefull.


                entry:  register  desciption
                        --------  --------------------------------
                           ax     F004h
                          es:bx   address of buffer
                           cx     length of buffer


                return: register  desciption
                        --------  --------------------------------
                           ah     error



        LLC_CLOSE

                This  function  is  used to close the adapter as  it  was 

                opened  by  the boot ROM code.

                entry:  register  desciption
                        --------  --------------------------------
                           ax     F005h


                return: register  desciption
                        --------  --------------------------------
                           ah     error



















                                        7










        LLC_LOADED

                This  function  provides a method the determine when  the 

                boot  ROM code is loaded.   It returns a register  and  a 

                memory location set to the word value 1234 (hex).

                entry:  register  desciption
                        --------  --------------------------------
                           ax     F006h
                          es:bx   address of identifier structure


                return: register  desciption
                        --------  --------------------------------
                           ah     error

                ID structure:
                     offset  length  type    description
                     ------- ------- ------- ---------------------------------
                        0       2     word   Boot ROM ID (1234 hex)
                        2       4     dword  CS:IP entry point of ROM interrupt 13
                        6      10     byte   undefined
          

        LLC_ADAPTER

                This  function  is to signal the boot  ROM  that  another 

                piece of software has taken control of the adapter.   The 

                LLC  uses  this call to inform the boot code when  it  is 

                about  to reset the adapter and the boot code should  act 

                as if the adapter has been closed.

                entry:  register  desciption
                        --------  --------------------------------
                           ax     F007h


                return: register  desciption
                        --------  --------------------------------
                           ah     error















                                        8









                

        *****************************************************************
        *                                                               *
        *      Format of Send/Response list                             *
        *                                                               *
        *****************************************************************

             This is the primary structure that defines a transmitted PDU 

        and specifies a place to put the response.  Both the send PDU and 

        the response have two parts that are concatenated to form the PDU 

        that  is  actually transmitted.   The header of the response  PDU 

        will be placed in buffer 1 and the remaining data will be  placed 

        in  buffer 2.   The length of the header is always the first word 

        of the header.

                offset  length  type    description
                ------- ------- ------- ---------------------------------
                   0       2     word   length of buffer 1, send
                   2       2     word   length of buffer 2, send
                   4       4    dword   address of buffer 1, send
                   8       4    dword   address of buffer 2, send

                  10       2     word   length of buffer 1, response
                  12       2     word   length of buffer 2, response
                  14       4    dword   address of buffer 1, response
                  18       4    dword   address of buffer 2, response





























                                        9











        *****************************************************************
        *                                                               *
        *      Format of ROM data area:                                 *
        *                                                               *
        *****************************************************************

             What  follows  is  a format of the data  area  that  can  be 

        accessed by the GET_PARMS and SET_PARMS functions.   Note,  these 

        functions  perform  no validation of the data transferred  so  be 

        carefull.  This is NOT a user interface.

             offset  length  type    description
             ------- ------- ------- ---------------------------------
                0       2     word   control flags
                2      16     byte   server name
               18      16     byte   image name
               34       2     word   sector_size
               36       1     byte   local drive that is redirected 
               37       1     byte   return code from last LLC command
               38       1     byte   last LLC command issued
               39       1     byte   last error returned to user
               40       1     byte   SAP used by boot ROM
               41       1     byte   adapter number
               42       2     word   bringup error code
               44       2     word   timer ticks before retry
               46       2     word   timer ticks after last retry
               48       2     word   retry count
               50       2     word   next correlator
               52       2     word   memory taken    
               60      18     byte   product ID, used by LLC
               78       6     byte   functional address
               84       6     byte   local adapter address
               90       6     byte   server's address
               96      18     byte   routing to server




















                                       10










             control_flags:

                  xxxxxxxx xxxxxxx1       local stack busy
                  xxxxxxxx xxxxx1xx       This Ring Only, limit bcast
                  xxxxxxxx xxxx1xxx       server address found
                  xxxxxxxx xxx1xxxx       server routing available
                  xxxxxxxx x1xxxxxx       valid receive PDU found
                  xxxxxxxx 1xxxxxxx       waiting for response PDU
                  xxxxxxx1 xxxxxxxx       signal media change in next I/O


             Defaults:

                The RPL process redirects drive A.

                The RPL functional address is C00000020000 (hex)

                flags           0004h
                boot SAP        50h
                timer retry     50    (unit of time = 1/18.2 seconds)
                timer final     100
                retry count     3
                sector_size     512
                memory req'd    8K 































                                       11





Download Driver Pack

How To Update Drivers Manually

After your driver has been downloaded, follow these simple steps to install it.

  • Expand the archive file (if the download file is in zip or rar format).

  • If the expanded file has an .exe extension, double click it and follow the installation instructions.

  • Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.

  • Find the device and model you want to update in the device list.

  • Double-click on it to open the Properties dialog box.

  • From the Properties dialog box, select the Driver tab.

  • Click the Update Driver button, then follow the instructions.

Very important: You must reboot your system to ensure that any driver updates have taken effect.

For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.

server: web2, load: 0.73