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
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.