461847 001_Extended_i RMX_II.3_Volume_4_System_Utilities_and_Programming_Information_1988 001 Extended I RMX II.3 Volume 4 System Utilities And Programming Information 1988

461847-001_Extended_iRMX_II.3_Volume_4_System_Utilities_and_Programming_Information_1988 461847-001_Extended_iRMX_II.3_Volume_4_System_Utilities_and_Programming_Information_1988

User Manual: 461847-001_Extended_iRMX_II.3_Volume_4_System_Utilities_and_Programming_Information_1988

Open the PDF directly: View PDF PDF.
Page Count: 748

Download461847-001_Extended_i RMX_II.3_Volume_4_System_Utilities_and_Programming_Information_1988 461847-001 Extended I RMX II.3 Volume 4 System Utilities And Programming Information 1988
Open PDF In BrowserView PDF
intef

E X T E N D Ei D
RMX@II.3
O P E R A T I NSGY S T E M
DOCUMENTATION

VOLUME
4
SYSTEM
U T I L I T I EASN D
P R O G R A M M I NI N
GF O R M A T I O N
O r d e r N u m b e r ; 4 6 1 8 4 70 0 1

ntel Corporation
3 0 65 B o w e r sA v e nue
5 a n t aC l a r aC
, alrfora
n 95051

C o p y r r g h t ì 9 8 8 , l n t e C o r p o r a t r o nA, l l R i g h t sR e s e r v e d

I n l D c a t i ( r n so u t s r d e t h e U n r t e d S t a t e s , o b t a i n r d d ì t r o n a l r r r p r e s , r l l n t e ì d o e u m c n l a l i o n b y
r , ) n t r L ( t i n gy o r r r l o c a l I n t e ì s a l e s , r f f i c e .I ' ì r ry o L r rc o n s c n r e n c eL, n t e f n a t i , ) n asl a l { r s , r f f i caed d r e s s r : s
a r e l o c a t e d d i r e c t l y b e i ì r r et h e r e a d e r r e p ì v t a r d i n r h e b a c k I l l h e m a n u a I
t h e i n l o r m a t i o n i n t b r s d o c u m I o t i s s r . t b i et rt , r . h a n q e { r t h ou t r ì , , rt ( r '
l n t e l ( ' , ) r f o r a l r l ) nr ì r r k o sd , ) w a r r a n t \ ' , r f r ì r ì vk r r l w r t h r f j l a r d l , r t h r s ù ì a t { . r ì a l .i n c l ( ì d i n g ,b L r l n r ) l
l i m r t e d 1 o ,t h e i n r p ì i o d| | r r r a r t ì o s ) l n r f r r h a . l r l ) r l L ! v a r r l f i t n e s sl ì r a p a r t i c u l a r p u r p o s € . I n l e l
(1,)rp,)rati,)n
r f s p i ) n s L b r l i l ri 'ì ) r r ì ! ì v f r f , r f s r h r l n ì r ì v r p p e a r r n l h i s d ( x L ì n r e n t .I n l € l
C o r p o r a t i o nm a k e s n , rr , r r r r r n i l n r e or tr )L r p d a t p) . t , r k e p p . L r r r e n lt h e I n { i ) r m a t i r ) nc o n t a r n o dì n t h r s

I n l e l ( o r p , J r a l i o na s s u n ì r s n , ì . { r s p r ì n s r b i l i t fyi ) r t h f u s e r i i r n v f i . r u i l r ! o r h € r t h a n c L r c u i l r y
r : m b r x ì i e di n l r n I n l e l l ) r , r l L r ( l \ , ) , r l . h e r . i r c u i t 0 t t l e n l l i . { ' r ì \ p s r r e i r r r p l i e d .
I n t e l s . ) l ì r r n . r p r ) d u . t s a r f L o p v r r r : h t c db v a n ( l r h a l l r c m a ì n t h e p r ) p e r t y , ) i l n t e l ( , ) r p o r r l r ) n .
t ' s e . d L r p l ì c a l i r r n , rrrl ì s c l , r s u r ei s s u b t e ( t t , ) r r s t r ì c t i , ) . \ i t a l P d r n I n t e l s , ; o f t s a r e l r c o n s p . , ' r n s
r l e i ì n e di n A S t ) R 7 1 0 , 19 r r ) r 9 r .
\ o p a r t , ) f t h r s d o ( . u n ì e n 1r n a r b e f , ) p r e d 0 r r e p r r x l u c e d r n a n y f o r m o r b v a n v r n e a n s , r r l h o u t p r r o r
{ r i l t f n c o n s e n tr ) l I n t e | ( ' , ) rp , ) f l r t i , ) n .
Ì h e f l l l o $ L n g a r e t r a d e m ? ì r k s, ) l I n t p l ( o r p o r î t i o Ì 1 a n d r t s a f f i ù a t e s a n d m a y b e u s c d o n l y L 0
r d e n l i l v I r ) t e lp r , ! l u f i s :

Ab,rve

,l.lìX

rPS(l

BII II( S
('OY Ypute r
(lRl'iDiî

rll I)l)K

rS I I ( '

r\lMX

rSllX

I ) r ì t aI ì p e h n e

lnsrle

LSI)U

,nr,,l

rSSII

T

rnrcllìOs

iSX 11

r

Intolevisrr)n

Lrbrarl \fenrLqer

f2lCFi

, n r e l i g e n tl d e n t , f i o r

tf('s

lCFl

, n t e l i s e n t i ' ] r r ) s r a n ì m i n q \fega(hassrs

rCÉlL

Inlollec

iCS

Inteìlink

rDtìl'

,OSP

IDIS

rPl)S

lìfnil's

rlìUX

\ft('tìo \f'\ r \ t RA lll]
\fUI,TIB(,S
\ILI,'TI(]HA\\EI,
\ f L ; t . lt \ f o t ) ( L u

O p e n \ LL
o\a !l
IllusA Ilubbìe
PIIoMPT
QL:EST
Quex
Rrpplenode
R\f x/80
RUPI
SI,II
LPI
VLS'('!:1.

ìl'Stì

K E . \ * l K , \ f S D O S , \ f L r l t L p l a n . r n d \ f i c r o s o l ì a r e t r a d e m a r k s , r l \ l i c r o s o f t C , - r r p o r a t L o n[.. \ l K r s a
t r r d e n ì a r k ' r i B e l l L r i b o r r t , r r r e s F l t h e r n c l r s a l r a ( l e n r r r k ' r t X e r | \ ( , ) r p o r a t i o n . C ( ' n r r , r n r r sì s a
L r a d e m a r k , r l ( l e n t r o n ' r s D a t r ( , ) m p u l e r ( ' , , r p o r a t L o n(. h a s s i s T r a k r s a l r a d e n Ì a r k , r l ( Ì e n e r a l
[ ) e v Ì c e sC o n r p a n v , I r ì f . \ ' A \ , r o d
VUS rrf tradenìxrks rf l)rqrtrl tqurpmenr Corporarion_
S n ì a r t m o d e m i 2 0 0 a n d l l a y e s a r e r r a d e m a r k s o f I l a \ ' f s \ l r c r o c o | n p u t ( ' rl , r o d u c r s ,I n c . I B M i s a
r f g r s t e r p d t r a d e ù r a r k , ) l l n l t ' r n a Ì i o n a l l l u s Ì n e s s \ f a c h r n e s . S o f t S { . 0 p er s a r e g t s t e r e d r r n r l e r n a r k o f
(li)ncurrent Scrences.

( ' , ) p y r i q h t ! l 9 l l l ì .l n t o l C , r r p o r r t i o n

VOLUMEPREFACE

MANUALS
IN THISVOLUME
This volume (Volume 1, Ertended iRMl{'@II Operating Syltent Lltilitit:s and prograntniry4
Infonnation) includesthe following manuals:
Exteruled IRMXP II Boorstap Loader ReferenceManual
Extended iRMÀo II SystentDebug4erReferenceManuol
Extended iRlll)o II Disk Verilication Lltilitl ReferenceManuul
Guide to tlu: Etcntletl IRM}@ II lrtteructive Configuration utiliq,
Ertended iRltl)@ II Prograrntning Technique.sReftrente Mrtttuttl
The Extended iRMA\o II Bootstrap Loader RefercnccManual tlescril.testhc use of the
Bootstrap Loader and how to modify the Bootstritp Loatler îiles.
The Ertenderl iRhl)@ II SystemDehugqerReferenceManualdescribesthe iRMX@ II
Operating System'sstatic debug-eer.All of thc SystemDebugger commancisare explained
and an exampledebug-uing
sessionis provided.
The Ertended iRMXo II Dkk Veificatbn lrility Rcferenu Munual rlescrihesthe Disk
v e r i l i c a t i o n U t i l i t y w h i c h i s u s e dt o e x a m i n ea n d r n o t l i f yt h c d a t l ì s t r u c t u r e so f i R M X o I I
n a m e da n d p h y s i c avl o l u m e s .
The Guide to the Efiended iRMXo II Interactive Conf.guration Utlltv'manual describes the
I n t e r a c t i v eC o n f i { u r a t i o nU t i l i t y c o m m a n d sa n d m e n u s ,a n d p r o v i d e sa n e x a m p l es y s t e m
configuration.
The Extended iL\lÀl@ II Progrurnnting TechniquesReference!úanuul provides programnring
t e c h n i q u e sa n d e x a m o l e s .

iRMX@II SystemUtilitiesand Prograrnming
lnformationVolume

Itl

VOLUME PREFACE

VOLUMECONTENTS
Manualsare listedin the order theyappearin the volumes.For a synopsisof eachmanual,
refer to fhe Introductiortto the Ertended|RMX\ II OperatingSystem.
VOLUME 1. Erk:nriediRMXo II Introduction,It$tallation,and OperatingInstructions
Introductiort to the Ertended iRMX II Operating System
Exteruled |RMX ll Hardware and SoffA,are Installation Cuide
Operator's Guide to the Extenried|RMX II Human Interface
Master Iruler
VOLUME

2: Extended iRMXo II Operating SystemUser Guide.s

Extended iRltlXÒ II Nucleus U.ser'sGuide
Extended iRMXo II Ba.sicI/O SystentUser'sGuide
Guide
Extended |RIVX@I I E.rtendedI/O SystentU.ser'.s
Extended iRM)P ll Hurnctn Interface User'sGuide
Extended iRMXo II Applicatbn Loader User'sGuitle
Erteruled iRl'ltX@ll UniversalDevelopment Intefaca U.ser'sCuide
Device Div'cr.s Uscr's Gu' le
VOLUME

3: Ertended iRMXo II Sy*em Calk

Extended iRMXo II
Extended iRMÀ@II
Extended iRhl}.@ II
Ertended |RMX@ll
Extended iRMXa II
Ertended iRlllYù II
VOLUME

Nucleus SystentCalls Referente Manual
Basic I/O SystemCalls ReferenceManual
Ertended I/O System Calls Reference Manual
Applicatiort Loader SystentCalls ReferenceManual
Hurnrut Interface Sy-stent
Calls ReferenceManrutl
UDI Sl,sternCalls ReferenceMartual

4: Ertendad |RMX@II Operuting $,stem Utilities

Extended iRltlX@II Bootstrup Loadar ReferenceManual
Extended iRlt't)@II S1'stent
DebuggerRet'erencel4anual
Extended iRltl)'@ II Di.sk Verification Utility Ret'ere ce lllanual
Extended |RMXò II Progranuning TechniquesReferenceMrutual
Guide to the E.rtundd iRMX@II Interactive Configuration Utilitl,^
VOLUME

5'.Ettended íRMXò II Interoctive Configurutbn Utility Reference

Extended iRltlXE II Inteructive Configurution Utility ReferenceManual

lv

iRl\tX@ll SystemUtilitiesand ProgrammingInformationVolume

REV.
-001

REVISIONIIISTORY
f)riginnll**ur

DATE
0l/88

intel
E X T E N D Ei D
RMX@II
B O O T S T R ALP
OADER
R E F E R E NM
CAEN U A L

l n t e lC o r p o r a t r o n
3 0 65 B o w e r sA v e nue
S a n t aC l a r aC
, a l i f o r na 9 5 0 5 1

C o p y r i g h t I 9 8 8 , I n t e lC o r p o r a t r o A
n ,i l R g h t sR e s e r v e d

PREFACE

INTRODUCTION
The BootstrapLoaderenablesyou to generatea systemîhat canbootloadfrom Intelsuppliedor customdevices.A hootablesystemgainscontrolimmediatelyafterpower-up
or systemreset. This manualprovidesinformationthat enablesyou to configureyour
systemto boot from specificdevices,to includeyour own customdevicedriversaspart ol
the system,and to placeyour generatedsysteminto PROM devices.

READERLEVEL
The manualassumes
thatyou arefamiliarwith the iRMX ìl Operating
Systemandan
editorwith whichyou canedit sourcecodefiÌes. lt may alsobe helpfulif you are familiar
with the following:
o

SUBMITfiles.

.

ASM86 sourcecoclefiles.

MANUALOVERVIEW
This manualis organizedastbllows:
ChapterI

This chapterprovidesan overviewof the BootstrapLoaderoperations.

Chapter2

This chapterprovidesan operator'sviewpointof usingthe Bootstrap
Loader.

Chapter3

This chapterdescribes
how to configurethe first stageof the Bootstralr
Loader.

Chapter4

This chapterdescribes
how ro configurethe third srageof the
Bootstrap
Loader.

Chapter5

This chapterdescribes
how to write customfirst-stagedrivers.

Chapter6

This chapterclescribes
how to write customthird-stagedrivers.

Bootstrap[,0ader

llt

PREFACE

Chapter7

error handlingprocedures.
This chapterdescribes

AppendirA

how to includeautomaticboot device
This appendirdescribes
your
systcm.
it
ion
into
rccogn

AppendixB

This appendixdescribes
how to load the BootstrapLoaderand the
monitorinto PROM devices.

CONVENTIONS
are usedthroughoutthis manual:
The followingconventions
o

whenshownin keyboard
InformationappearingasUPPERCASEcharacters
examplesmustbe enteredor codedexactlyasshown.You may,however,mix lower
whenenteringthe text.
and uppercase
characters

.

within anglebrackets( < > ) whenshownin
Fieldsappearingaslowercase
characters
variableinformation.You mustenteran appropriate
keyboard
examples
indicate
valueor symbollbr variablefields.

.

User input appearsin one of the followingforms:

as bolded

tv

text

nithln

a screen

.

The term"iRMX If'refersto the Extended
iRMX ll.3 Operating
System.

.

The term'iRMX I'refersto the iRMX I (iRMX 86)Operating
System.

.

All numbers,
unless
otherwise
stated,areassumed
to be decimal.Hexadecimal
numbersincludethe "H" radixcharacter
(for example,
OFFH ).

Bootstrapl,oadcr

CONTENTS
CHAPTER1
OVERVIEW
OF BOOTSTRAP
LOADEROPERATIONS

PAGE

CHAPTER2
USINGTHEBOOTSTRAP
LOADER

PAGE

CHAPTER3
CONFIGURING
THEFIRSTSTAGE

PAGE

Bootstrap [,oader

CONTENTS

CHAPTER3 (continued)

PAGE

CHAPTER4
THETHIRDSTAGE
CONFIGURING

PAGE

vl

BrntstrapInader

CONTENTS

CHAPTER4 (continued)

PAGE

CHAPTER5
WRITINGA CUSTOMFIRST.STAGE
DBIVER

PAGE

5.1Introduction
..............................5-1
5.2 DeviceInitializeProcedure...........
.......................5-2
5.3 DeviceReadProcedure....
.............................
5-3
5.4 Supplying
Configuration
Information
to the First-Stage
Driver...............................5-4
5.4.1Hard-Cocìing
the Configuration
Information
.......................5-4
5.4.2Providing
a Configuration
Fiìe......................
..........................5-5
5.5 Usingthe MULTIBUS@
Il TransportProtocol
.............................5-8
5.5.1Message
Passing
ControllerInitialization..
...........................5-9
5.5.2Message
Tlpes..................
..........,..............5-10
5.5.3Request/
Response
Transaction
ModeI.........
.......................
5-10
5.5.4Sendand Receive
Transaction
Models
................................
5-l5
5.5.5Message
Broadcasting......
.........................
5-20
5 . 5 . 6T r a n s m i s s i M
o no d e s . . . . . . . . . . .
......................5-22
5.5.7Interconnect
Space
.......5-22
5.5.8DriverCodeConsiderat
ions......................
.............................
5-30
5.6 Changing
BSl.A86or BS1M82.,486
to Includethe NewFirst-Stage
Driver........
5-33
-5.7Generating
a NewFirstStageContaining
theCustomDeviceDriver..................
5-34

CHAPTER6
WRITINGA CUSTOMTHIRD-STAGE
ORIVER

PAGE

6.1 Introduction
..................,...........6-1
tr.2 Whata Third-Stage
DeviceDriverMustContain.....
........,...........6-1
6.3 DeviceInitialization
Procedure...........
................
6-3
6.4 DeviceReadProcedure
..........6-4
6.5 Protected
ModeConsiderations
....................
...................................6-ó
6.(rSupplying
Configuration
lnformationto theThird-Stage
Driver..............
...............6-1
ó.7 UsingMULTIBUS@
II TransportProtocol
..............
......................6-8
6.8 Changing
BS3.A86
to Includethe NewThird-Stage
Driver............................-..........6-8
fi.9 Generating
a NewThirdStageContaining
the CustomDriver.................
...............6-9

BootstrapLoader

vtl

CONTENTS

CHAPTEB7

PAGE

ERRORHANDLING
7.1Introduction
..............................7-1
-l
7.2 Analyzing
...............l
Bootstrap
LoaderFailures.
-1
7.2.1ActionsTakenby theBootstrap
.....................7
LoaderAfter an 8rror...,..........
-2
7.2.2 AnalyzingBrrorsWith DisplayedError Messages
.
.............7
7.2.3 Analyzing
ErrorsWithoutDisplayed
Error Messages.......................................7-5
-7
7.2.4lnitialization
Errors..............
........................7

APPENDIX
A

PAGE

AUTOMATICBOOT DEVICERECOGNITION
4.1 Introduction...........................
...............................A-1
A.2 How AutomaticBootDevìceRecognition
Works...........
............
A-1
A.3 How to IncludeAutomaticBootDeviceRecognition.......
.........
A-2
A.4 How to Exclude
AutomaticBootDeviceRecosnition
.............................................
A-5

APPENDIX
B
PAGE
PROMMING
THEBOOTSTRAP
LOADER
ANDTHEISDM"MONITOR
B.l Introduction
.............................B-1
8.2 Incorporating
theiSDM"Monitor..............
....................................8-l

vltt

Brxrtstrapl{)ader

CONTENTS

TABLES
TABLE

PAGE

l-1 Intel-Supplied
Bootstrap
LoaderDrivers.
......................................
1-8
2-1 Supplied
Third StageFiles.....................
..............2-7
3-l Procedure
Namesfor Intel-Supplied
FirstStageDrivers...............,........................
3-25
3-2 5.25-lnchDiskettesSupportedby iSBC@
20tland MSC-specificDrivers.............
3-26
3-3 8-InchDiskettes
Supported
by iSBC@
208and MSC-Specific
Drivers..................3-2ó
4-l Namesfor Intel-Supplied
Third StageDrivers................
..............4-7
4-2 MemoryLocations
Usedby the Bootstrap
Loader...................................................4lfi
7-I Postmortem
-6
Analysis
of Bootstrap
LoaderFailure..
....................7

FIGURES
FIGURE

B(x)tstrap Lr|ader

PAGE

LX

CHAPTER1
OVERVIEW
OF BOOTSTRAP
LOADEROPERATIONS

1.1 INTRODUCTION
The BootstrapLoaderis a programthat is not part of anyparticularOperatingSystem.
storage
Rather,it is a programthat loadsan applicationsysteminto RAM from secondary
so that it canbeginrunning.This processis calledbootstraploadìngor booting. Booting
canoccurwhenthe systemis turnedon, whenthe systemis reset,or underoperator
controlwhenthe monitoris active.
into PROM
The BootstrapLoadereliminatesthe needto placecompleteapplications
program--into
devices.Instead,you canplacethe BootstrapLoader--irrelativelysmall
PROM devicesand storeyour applicationsystemon a massstoragedevice.The Bootslrap
Loadercanthenbe usedto load the applicationprograminto RAM.
of threestages.
The BootstrapLoaderconsists
The first stageresidesin PROM devices.It determinesthe nameof the file to load,loads
controlto that part. Intel System300Series
part of the secondstage,and passes
are deliveredwith the first stageof the BootstrapLoaderand the iSDM
Microcomputers
monitor alreadyplacedin PROM devices.Intel ModulesDevelopmentPlatformsare
deliveredsimilarlyexceptwith the D-MON386monitor. If you are huildingyour own
you canusethe informationin this manualto configurea first stageand
computersystems,
placeit into PROM devices.
The secondstageresideson track0 of everyiRMX-formattcdnrmed volume. That is,
wheneveryou usethe HumanInterlàceFORMAT commandto format a volume,the
secondstageis copiedto that volume. Wheninvoked,the secondstagefinishesloading
itselfinto memoryand thenloadsa file from the samevolumeand passescontrolto it.
The contentsof thisload file dependon the kind of systemyou are loading.If you are
loadingan iRMX I system,the file loadedby the secondstagecontainsthe application
systemitself. Ifyou are loadingan iRMX II system,the file loadedby the secondstage
containsthe third stageof the BootstrapLoader,whichfinishesthe loadingprocess.

BootstrapLoader

l-l

OVERVIEWOF BOOTSTRAPLOADEROPERATIONS

for loadingiRMX ll applications,
becausetheseapplications
Thc third stageis necessary
requirethe 80286processorto be runningin protectedmodeand becausetheyusethe
OMF-2tì6objectmoduleformat. The OMF-28fiformat is differentfrom the OMF-86
format and thereforecannotbe handledb1'thesecondstage.The third stageplacesthe
processorin protectedmode,loadsthe iRMX II applicationsystem,and transferscontrol
to that applicationsystem.The third stageresidesin a namedfile on the samevolumeas
the secondstage.Your BootstrapLoaderpackagecontainsa configuredthird stagethat
canloadapplications
from selected
devices.The instructions
in thismanualcanhelpyou
configureyour own third stageto add supportfor otherdcriees.
The bootstraploadingprocesscannotbe completedwithouta devicedriver. The device
driver is a smallprogramthat providcsthe interfacebetweenthe BootstrapLoaderand a
hardwaredevice(or a controllerfor the device).Whenyou configurethe Bootstrap
Loader(a taskthat is independent
of operatingsystemconfiguration),
you specifothe
devicedriversthat the BootstrapLoaderrcquires.Duringthe courseof configuration,
thesedevicedrivers(whichare usuallydistinctfrom the drìversneedetJ
by the application
system)
are linkedto the Bootstrap
Loaderautomatically.

1.2THESTAGESOFTHEBOOTSTRAP
LOADER
T h e B o o t s t r a pL o a d e r h a s a n u m b e ro f s t a q e st h a t c o n t r o lt h e l o a c l i n go f t h e a p p l i c a t i o r .
s y s t e m .i R M X I a p p l i c a t i o n sl o a d u ' i t h a t w o - s t a g ep r o c e s s .i R M X I I a p p l i c a t i o n su s e
t h e s et w o s t a g e sb u t a l s or e q u i r ea t h i r d s t a g e .

1.2.1 FirstStage
The Bootstrap Loader's first stageconsistsof two parts. One part is the code for the first
stage,and the other part is a set of minimal devicedrivers used by the first and second
stagesto initialize and read from the devicethat containsthe systemto be booted.
The Bootstrap Loader packagecontainsdevicedrivers for many common Intel devices. To
support other devices,you can write your own drivers and configure them into the first
slage.
To use the Bootstrap Loader, the first stagemust be in one of two places. The natural
place fbr the first stageis in PROM devices,either as a standaloneproduct or combined
w i t h a m o n i t o r . f n t e l S y s t e m3 1 0 a n d 3 8 0 S e r i e sM i c r o c o m p u t e r sa r e d e l i v e r e dw i t h t h e
Bootstrap Loatler's first stage,the iSDM monitor, anrJthe SystemConficlenceTest (SCT)
in the PROM devices. Intel System320 SeriesMicrocomputers are deliveredwith the
Bootstrap Loader's first stage,the iSDM monitor, the D-MON3tì(r monitor, and the SCT in
t h e P R O M d e v i c e s .I n t e l M o c i u l e sD e v e l o p m e n P
t l a t f o r m sa r e d e l i v c r e dw i t h t h e
B o o t s t r a pL o a c l c r ' sf i r s t s t a g e ,t h e D - M O N 3 8 6 m o n i t o r ,a n d t h e S C T i n t h e P R O M
devices.

t-2

Brxrtstrap [-oader

OVERVIEWOF BOOTSTRAPLOADEROPERATIONS

l f y o u h a v ea s y s t e mt h a t i n c l u d e st h e i S D M m o n i t o r a n d y o u a r e a c l d i n gy o u r o w n d e v i c e
driver to the Bootstrap Loader's first stage,you might find it useful to load the first stage
into the target system'sRAM using a developmentsystemiSDM kracìerand activatethc
f i r s t s t a g eu n d e r i S D M c o n t r o lf r o m t h e d e v e l o p m e nst y s t c m .A f t e r a c t i v a t i n gt h e f i r s t
s t a g e y, o u c o u l d t h e n d e b u gd r i v e r c o d e . I f y o u r s y s t e mi n c l u d e st h e D - M O N 3 8 ( rm o n i t o r ,
however,you must perform all driver debuggingfrom the target system. You cannot
download the first stagefrom a developmentsysteminto the target systemand then use DM O N 3 8 ó t o i n i t i a t ep r o g r a me x e c u t i o n .W h e n d e b u g g i n gu n d e r t h e s el a t t e r c i r c u m s t a n c e s ,
y o u m a y w i s h t o e i t h e r d e b u gw i t h i n t h e P R O M d e v i c e so r p e r h a p su s e a w o r k i n g
B o o t s t r a pL o a d e r t o b o o t l o a dt h e B o o t s t r a pL o a d e rt h a t c o n t a i n st h e n e w d r i v e r .
W h e n t h e f i r s t s t a g eb e g i n sr u n n i n g ,i t f i r s t i d e n t i f i e st h e b o o t s t r a pd e v i c ea n d t h e n a m e o f
t h e f i l e t o b o o t , e i t h e r b y a c c e p t i n gt h a t i n f o r m a t i o nf r o m a c o m m a n dl i n e e n t e r e cul t t h e
m o n i t o r o r b y u s i n gd e f a u l tc h a r a c t e r i s t i cess t a b l i s h c w
d h c n t h e f i r s t s t a g ew a s c o n f i g u r e t ì .
T h e B o o t s t r a pL o a d e r n e x tc a l l si t s i n t e r n a ld e v i c ed r i v e r f o r t h e c l e v i c ew, h i c h i n i t i a l i z e s
the device and reatis the first portion of the secondsttìgeinto memory. (The secondstage
alwaysresideson track 0 and block 0 of the named volume, so it can be accessedeasily by
t h e f i r s t s t a g e . )A f t e r c a l l i n gt h e i n t e r n a ld e v i c ed r i v e r ,t h e î i r s t s t a g ep a s s e sc o n t r o lt o t h e
secondstage.
Becausethe first stageworks on both lt0tl6/ lllfi- ancl802t16/31.ì(r-basccl
computers,it
o p e r a t e si n r e a l a d d r e s sm o d e w h e n r u n n i n gi n a n t l 0 2 t l 6 / 3 8 6 - b a s esdy s t c m .T h i s m e a n s
that any devicedrivers you write for the first stagemust also opcrate in real addressmode.

1.2.2 SecondStage
Unlike the first stage,the secondstageof the Bootstrap Loadcr is not configurable. Its slze
i s a l w a y st h e s a m e( l e s st h a n f ì K b y t e s ) ,a n d i t d o e sn o t d e p e n do n t h e a p p l i c a t i o ni n a n y
w a y . T h e c o t ì ef o r t h e s e c o n ds t a g er e s i d e so n a l l v o l u r n e sf o r r r a t t c dw i t h t h e i R M X I o r
i R M X I I H u m a n l n t e r f a c eF O R M A T c o m m a n d s .T h e r c f ì r r e t, h e s e c o n ds t a g ci s a l w a y s
availablefor loading applicationsresidingon random accesstlevices.
W h e n t h e s e c o n ds t a g er e c e i v e sc o n t r o l ,i t f i n i s h e sl o a d i n gi t s c l f i n t o m e m o r y a n d t h e n
loads the file determined by the first stage. When loading the file, it usesthe same device
driver used by the first stage. In iRMX I systems,the load file is the application systcm
i t s e l f . I n i R M X I I s y s t e m st,h i s f i l e i s t h e t h i r t l s t a g eo f t h e B o o t s t r a pL o a d e r .

Bmtstrap LOader

l-3

OVERVIEWOF BOOTSTRAPLOADER OPERATIONS

NOTE
II.3 OperatingSystemfrom a
You cannotbootstrapload the iRMX IL 1, 11.2,
volumethat wasformattedusingthe iRMX 1.6or I.7 (iRMX 86 Release6 or 7)
FORMAT command.However,you canmakethe volumebootablewithout
reformattingthe entirevolumeand losingthe datastoredon it. To be ableto
from the samevolume,
boot both the iRMX I and iRMX II OperatingSystems
invokethe iRMX II.3 FORMAT commandand specifythe BOOTSTRAP
control. With BOOTSTRAPspecified,FORMAT just replacesthe second
stageon track0 of the volumewhile leavingthe remainingdatauntouched.
When the FORMAT commandfinishes,you canbootstrapload both the iRMX
from the samevolume.
I and iRMX II OperatingSystems

1.2.3ThirdStage
The third stageof the BootstrapLoaderis usedfor loadingiRMX Il-basedapplications
into memory.The third stageresidesin a namedfile on the bootstrapdevice.Both the
third stageand the applicationsystemto be loadedmustresidein the samedirectoryon
the volume.
third stage.
There are two typesof third stages:a genericthird stageand a device-specific
The type neededfor your systemdependson the sizeof the applicationsystemyou intend
to load.
1 .2.3.1 Generic Third Stage
from any
The genericthird stageis so namedbecauseit canload applicationsystems
devicethat the first stagerecognizes.This stagecontainsno devicedriverof its own.
Instead,it usesthe samedevicedriverusedby the first and secondstages.This meansthat
you won't needto write a separatedevicedriverto work in protectedmode,but it also
meansthat the genericthird stagerunsin real addressmode. In real addressmode,
addressability
is restrictedto the first (lowest)megabyteof memory.Therefore,the
genericthird stagecanloadonly thoseapplicationsystems
that are smallerthan 840K
bytes.The remainingspaceis usedby the BootstrapLoader,the monitor and the SCT. To
load largerapplications,
you mustusea device-specific
third stage.
When the genericthird stagereceivescontrol,it usesthe devicedriversuppliedin the first
stageto load the applicationsystem.Then it switchesthe processorinto protectedvirtual
addressmodeand passes
controlto the application.

l-4

Bo()tstraplrader

OYERYIEWOF BOOTSTRAPLOADEROPERATIONS

1.2.3.2Devicespecilic
ThirdStage
The device-specific
third stageswitchesthe processorto protectedvirtualaddressmode
beforeloadingthe applicationsystem.This enablesthis stageto load into memory
addresses
higherthan one megabyte.However,becausethis stageswitchesthe processor
into protectedmode,it cannotusethe first stage'sdevicedrivers(whichoperateonly in
real mode). Instead,it mustcontainits own devicedriver,operatingin protectedmode,to
controlthe devicefrom whichthe applicationsystemis loaded.
The device-specific
third stagesuppliedin your BootstrapLoaderpackagesupportsthe
following devices:
.

iSBC21SG/iSBX2l8A winchesterand diskettecontrollercombinationor the
iSBC214controller

.

iSBC264bubblememorycontroller

.

controller
iSBC 186/224Amulti-peripheral

o

Systems
SCSI(SmallComputerSystemslnterface)anooo<:pm<>"
message
at the terminal,issuesits prompt(a singleperiodfor real-modeiRMX I
andwaitsfor a command
iRMX II systems),
fwo
systems, periodsfor protected-mode
from the terminal.At this point the operatorcaninvokeanyof the iSDM monitor
commandsthat are appropriatefor real or protectedmode. (To continuerunningthe
loadedprogram,enterG .)

tellsyou that
of the Debugswitchis that the monitor'sinterruptmessage
One advantage
you
not
fails,
might
you
are
booting
If
a
system
process
was
successful.
the loacling
whether
the
or
otherwisebe ableto tell whetherthe bootstrapload itselfwasunsuccessful,
and then failed during initialization. The presenceor absenceof
systemloadedsuccessfully
whenyou usethe Debugoptionclarifieswhetherthe loadingwas
the interruptmessage
successful.

Bootstrapl-oader

, -'l

LOADER
USINGTHE BOOTSTRAP

Becausethe Debugoptionleavesyou in the monitor,you canalter the contentsof specific
memorylocationsandperformother monitoractions(suchas, inval-id interface type
ERROR
E R R O R- i n v a l i d

Daraneter

cornbination

3.2.4 "/"CPUMacro
The %CPU macroidentifiesthe typeof CPU that performsthe bootstraploading
operation.You mustincludethis macroin the BS1.A86or BSlM82..486file once(and
only once).
The syntaxof the CPU macrors
%CPU(cpu_type)
where:
cpu_type

The typeof CPU performingthe bootstrapoperation.Valid typesare:
Typ"

Description

8086
8088
8018ó
801llti
80286
80386

8[ì86processor(iRMX I only)
8088processor(iRMX I only)
(iRMX I only)
8018óprocessor
lì0ltllìprocessor(iRMX I only)
80286processor
(iRMX I andiRMX II)
80386processor(iRMX I and iRMX II)

llOnly)
3.2.5 "/"BMPSMacro(MULTIBUS@
passingsystemusedduringbootstraploading.
The %BMPSmacroconfiguresthe message
(MPC),
Coprocessor
This macroidentifiesthe baseaddressof the MessagePassing
addressdistancebetweenMPC ports,and informationthat defineshow directmemory
access(DMA) transfersoccur. If you havea MULTIBUS II systemthat bootloadsfrom a
devicewhosedriverusesMULTIBUS II transportprotocol(i.e.the 186/224Adriver),you
mustusethis macro. lf you havea MULTIBUS I s)'stemor a systemthat bootloadsfrom a
devicewhosedriverdoesnot useMULTIBUS II transportprotocol,you mustnot usethis
macro.

Bootstraplnader

3-ll

CONFIGURINGTHE FIRST STAGE

The syntaxof the %BMPSmacrols
port$sep,duty$rycle,
dma$in,dma$out,
dma$base$addr,
%BMPS(mpc$base$addr,
dma$trans,
data$width)
where:
mpc$base$addr

The baseI/O port addressof the MPC. Referto the
appropriatesingleboardcomputeruser'sguidefor this
address.

port$sep

The numberof addresses
separatingindividualMPC
ports. For example,if the mpc$base$addr
is 0000Hand
the nextthreeI/O port addresses
are 0004H,0008H,
and 000CH,respectively,
the port$sepis 4H. Referto
the appropriatesingleboardcomputeruser'sguidefor
the l/O port addressmap.

duty$rycle

The MPC duty cyclefor the localbus. (The rate at
whichdatapacketsare generated.)For informationon
how to calculatea dutycyclesuitablefor the localbus,
refer to the MPC User'sManual. For duty cyclessuitable
for Intel singleboardcomputers,refer to the appropriate
singleboardcomputeruser'sguide.

dma$base$addr

The baseI/O port addressfor the AdvancedDirect
MemoryAccess(ADMA) controller.Referto the
appropriatesingleboardcomputeruser'sguidefor this
address.

dma$in

The channelusedto receive(input) DMA message
passingtransfers.Referto the appropriatesingleboard
computeruser'sguidefor this channelnumber.

dma$out

The channelusedto send(output)DMA message
passing.Referto the appropriatesingleboardcomputer
user'sguidefor thìschannelnumber.

dma$trans

The l/O port addressusedfor DMA datatransfers.
Reier to the appropriatesingleboardcomputeruser's
guidefor this address.

data$width

The datawidth in bits of the localbus. This valuemust
be eitherl6 or 32 ldecimall.If thewidthis setto 32 bits
on a 386/116-or 386/120-based
board,flyby(onecycle)
DMA modeis enabled.

The %BMPSmacrocan qenerateerrorsif the localbuswidth is not l6 or 32 bitswide.

3-t2

Bmtstrap l-oader

CONFIGURINGTHE FIRST STAGE

3.2.6 %IAPX186 lNlT Macro(!RMXI MULTIBUS@
| Systems

Only)

T\e o/oIAPX_186_INIT
macrospecifies
the initialchip selectand modevaluesfor 8018ó
and 80188CPUs. Includethis macroonly for systems
that usethe 80186or 80188
processorand do not includea monitor in PROM devices.In systemsthat includethe
iSDM monitor,the monitorbecomesactivebeforethe BootstrapLoader,and the monitor
mustinitializethe CPU. An iSDM configurationmacrois availablefor this purpose.See
the iSDM SystemDebugMonitor Reference
Manual for more information.
The syntaxof the iAPX_186_INITmacrois
ToiAPX_186_INIT(rmx,
umcs,lmcs,mmcs,mpcs,pacs)
where:
rmx

The initial modeof the 80186Programmable
InterruptController
(PIC). Acceptablevaluesare as follows:
Value

Description

v

The 8018óPIC is initializedin iRMX compatibility
mode.

n

The 80186PIC is initializedin defaultmode.

umcs

Initial valuefor the upper-memory
chip-select
controlregister.

lmcs

Initial valuefor the lower-memory
chip-select
controlregister

mmcs

Initial valuefor the midrange-memory
chip-select
controlregister.

mpcs

Initial valuefor the memory-peripheral
chip-select
controlregister.

pacs

Initial valuefor the peripheral-address
chip-select
controlregister.

In all parametersexceptthe first one (rmx),NONE is alsoan acceptable
value,implying
that no initializationvalueshouldbe placedin the corresponding
register.For information
on the chip-select
controlregisters,
and the valuesto placein them,seethe datasheetsfor
the 80186and 8018t1
processors.
All the defaultparametervaluesfor this macro(in the Intel-supplied
BSl.Alt6file shownin
Figure3-1)areappropriate
to initialize
the CPUson the iSBC186/03(A),
iSBC186/51
and iSBC 188/48/56 boards.
The iRMX I OperatingSystemdoesnot allowyou to movethe 80186relocationregisterto
I/O addresses
other than 0FF00H,its defaultregister.

Bootstrapl-oader

3-13

CONFIGURINGTHE FIRST STAGE

%MANUAL,
3.2.7%CONSOLE,
and %AUTOMacros
The CONSOLE,MANUAL, andAUTO macrosspecifyhow the first stageidentifiesthe
file that the secondstagewill load (eitherthe loadfile or the third stage)and the deviceon
whichthe file is found.
o/oMANUAL,and %AUTO macrosis
The syntaxof the a/oCONSOLE,
TaCONSOLE
TaMANUAL
ToAUîO
Thereare no parametersassociated
with anyof thesemacros.
Dependingon the actionyou want the BootstrapLoaderto take,you can includenone,
any,or all of thesemacros,and the combinationyou choosedefinesthe set of actions
taken. Becausethe ToMANUAL macroautomatically
includesboth the %CONSOLEand
%AUTO macros,five functionally-distinct
combinations
are possible.Eachof these
combinations
requiresthat the devicelist at the end of the BS1.A86or BS1MB2.A86file
be setup in a certainway. For more informationon the devicelist,seethe discussion
of
the ToDEYICE macro later in this chapter. The following paragraphslist the possible
macrocombinations,
the devicerequirements,
and the actionsthat the BootstrapLoader
takeswheneachcombinationis invoked.
(Requiresthat the devicelist definedwith ToDEVICEmacroshave
No
o/oCONSOLE, only one entry.)
%MANUAL.
or TaAU'fO
macro

3-14

o

The BootstrapLoadertriesonceto load from the activedevice.

.

The BootstrapLoadertriesonceto loadthe file with the default
pathname(the oneyou definewith the %DEFAULTFILE macro).

Bo0tstraplrader

CONFIGURINGTHE FIRST STAGE

ToCONSOLE (Requires
thatthedevicelisthaveonlyoneentry.)
oruy
.

The BootstranLoadertriesonceto load from the devicein the device
list.

r

The BootstrapLoaderissuesan asterisk(*) promptat the console
terminalandwaitsfor an operatorto cnter the pathnameof the file to
load. It triesonceto load the file the operatorspecifies.
-- If the operatorentersa pathname,the BootstrapLoaderloads
the file with that pathname.
-- If the operatorentersa CARRIAGE RETURN only,the lile
with the defaultpathnameis loaded.
(Requiresa devicelist with at leastone entry.)

%MANUAI
only
.

The BootstrapLoaderissuesan asterisk(*) promptfor a pathnameat
theconsole
terminal.

.

The BootstrapLoaderchoosesa devicedependingon the operator's
response.
-- lf a devicenameis entered,the BootstrapLoaderloadsfrom
that device.It triesto load until the devicebecomesreadyor
until no more triesare allowed(as limitedby the optional
%RETRIESmacro).
-- If only CARRLq.GERETURN is entered,the BootstrapLoader
throughthe list of devices
looksfor a readydeviceby searching
(in the orderthe ToDEVICEmacrosarelistedin the BSl.,486
or BSI MB2.A86file). The searchcontinuesuntil a readydevice
is foundor until no more triesare allowed(aslimitedby the
optional%RETRIESmacro). If the BootstrapLoaderfindsa
readydevice,it loadsfrom that device.

.

The BootstrapLoaderchoosesa file dependingon the operator's
response.
-- If a pathnameis entered,it triesonceto load the file with that
pathname.
-- If no file nameis entered,it triesonceto loadthe file with the
defaultpathname.

Bmtstrap [-oader

3-15

CONFIGURINGTHE FIRSTSTAGE

(Requiresa devicelist with at leastone entry.)

%AUTO
.

The BootstrapLoaderlooksfor a readydeviceby searching
throughthe
list of devices(in the orderthe %DEVICE macrosare listedin the
BSl.A86or BSlM82.A86file). The searchcontinuesuntil a ready
deviceis foundor until no more triesare allowedlas limitedbv the
optional% RETRIESmacro).

.

If the BootstrapLoaderfindsa readydevice,it triesonceto load the
file with the defaultfile name.

o/oAUTO,
ToMANUAL,
and
o/aCONSOLE

(Requiresa clevicelist with at leastone entry.)

.

The BootstrapLoaderissuesan asterisk(*) prompt for a pathnameat
theconsole.

.

with a pathnamethat containsno devicename,
If the operatorresponds
the BootstrapLoaderlooksfor a readydeviceby searching
throughthe
list of devices(in the order the %DEVICE macrosare listedin the
BSl.A86or BSlMB2.A86file). The searchcontinues
untila ready
deviceis foundor until no more triesare allowedlas limitedbv the
optionalToRETRIES
macro).

.

lf the BootstrapLoaderfindsa readydeviceor the operatorresponds
with a pathnamecontaininga devicename,the BootstrapLoadertries

.,"':..
l;:::l;il:l:'::',:"?
::::T:::
;:T;':.,,^",
lathname.

-- If only CARRIAGE RETURN is entered,it triesto load the file
with the defaultpathname.
Wheneverthe BootstrapLoader'sasteriskpromptappears,the operatorcan includea
DebugSwitchalongwith a deviceand/or filenamespecification.The DebugSwitchis
clescribed
in Chapter2.

3.2.8 o/"LO
ADFILE Macro
The %LOADFILE macrocausesthe BootstrapLoaderto displaythe pathnameof the file
itloads. If you areloa is an lnvalid
Serial Channel type
port delta for the Baud Rate Timer
Invalid
8253/4 Baud Rate Counter is not 0, 1or
2
Counter 2 is the only valid
80130 Baud Rate Counter
80186 counter counter,type
is not a valid
Baud Rate Counter
 is an invalid
Baud Rate Tirner cype
Counter 0 is the only valid
82530 Baud Rate Counter
825J0 channel must be specified
as A or B only
Max Baud Rate Count must be sreater
than 1

Bootstrap lnader

3-23

CONFIGURING
THE FIRSTSTAGE

3.2.14%DEVICE
Macro
The VoDEYICEmacrodefinesa deviceunit from whichyour appÌicationsystemcanbe
bootstraploaded.If the BS1.A86or BS1MB2.A86
file containsmultipleToDEYICE
macros,their order in the file is the order in whichthe first stagesearches
for a ready
deviceunit.
All,ToDEYICEmacrosthat selectdeviceunitson the samecontrollermustbe listed
consecutively
in BS1.A86or BSlMB2.A86,or assembly
errorswill occur. Recallthat
multiple%DEVICE macrosmaybe includedonly if the VoAUTOor ToMANUAL macro
is included(otherwise,
an error occursduringthe assembly
of BS1.,486or 8S1MB2.A86.1.
The syntaxof the ToDEVICEmacrois
ToDEVICE(name, unit, device$init,device$read,unit info)

where:
name

The physicalnameof the device,not enclosedin quotesor between
colons.This is the namethat you wouldenterto specirythis device
wheninvokingthe BootstrapLoaderfrom the keyboard.(However,
wheninvokingthe BootstrapLoader,you would surroundthis name
with colons.)
After the BootsîrapLoaderloadsfrom a device,it passesthe physical
nameof îhe device,aslistedhere,to the load file. To enablethe
OperatingSystem's
AutomaticBoot DeviceRecognitioncapability(see
AppendixA) to function,this physicalnamemustmatcha device-unir
namefor the deviceasspecifiedduringthe confìguration
of the
OperatingSystem. Refer to the InterúctiveConfigurationUtílity
Reference
Manualfor more informationaboutconfiguringthe
OperatingSystem.

3-24

unrt

The numberof this unit on this device.Unit numberingis the sameas
that usedfor devicesby the BasicI/O System.Referto theDevice
Diver User'sGuideîor more informationaboutunit numbering.

device$init

The nameof the deviceinitializationprocedurethar is part of the first
stagedevicedriverfor this device-unit.Beforeattemptingto readfrom
the device-unit,
the BootstrapLoadercallsthis proce<.lure
to perform
initializationfunctions.If the device-unithasan Intel-supplied
device
driver,specifythe nameof the deviceinitializationprocedureaslisted
in Table3-1. Ifyou supplyyour own driver(writtenas describedin
Chapter5), enterthe nameof the initializationprocedure.

Bootstraplr}ader

CONFIGURINGTIIE FIRST SI'ACE

device$read The nameof the devicereadprocedurethat is part of the first stage
devicedriverlbr this device-unit.To readfrom this device-unit.
the
first and secondstagesof the BootstrapLoadercall this procedure.lf
your BootstrapLoaderusesa genericthird stage,it too usesthis device
readprocedureto readliom the deviceunit. If the device-unithasan
Intel-supplied
devicedriver,specifythe nameof the deviceread
procedureaslistedin Table3-1. If you supplyyour own driver (written
asdescribedin Chapter5), enterthe nameof the deviceread
procedure.
unit info

An ASM8ólabelthat marksthe locationof an arrayof BYTEs
containingspecificdevice-unitinformationrequiredby the massstorage
devicedefinedby this invocationof the ToDEVICEmacro.
This parameteris currentlyusedonly by the SCSIdevicedriver. Ifyou
includeit for anyotherdevice,the BootstrapLoaderwill fail to load
your applicationfrom that device.Referto the "FirstStageDevice
of the
Driver Files"sectionof this chapter,underthe clescriptions
ToSCSIand 9iSASl UNIT INF'Omacrosfor informationabouthow
anclwhento specifythis unTtinformationand for examplesof its use.

for IntelTabÌe3-l liststhe namesof the deviceinitializationand devicereadprocedures
suppliedfirst stagedevicedrivers.

Table 3-1. I'rocedure Names for Intel-Supplied l'irst StageDrivers
Dsvice Drivor

Devicelnilialize
Procedure

DeviceRead
Procedure

iSBC208 SpecifìcDriver
iSBC208 GeneralDriver *
|SBCMSCSpecificDr ver.
iSBCMSC GeneralDriver
SCSIDriver
iSBX218ADriver
iSBC224ADriver
iSBC251 Driver
iSBC254 Driver
iSBC264 Driver

deviceinit20S
deviceinit20Bgen
deviceinitmsc
deviceinitmscgen
deviceinitscsi
deviceinil2lSA
deviceini1224A
deviceinit25l
deviceinlt254
deviceinlt264

deviceread20S
deviceread20Sgen
devicereadmsc
devicereadmscgen
devicereadscsi
deviceread2'18A
deviceread224A
deviceread25l
deviceread254
deviceread264

as wellas the iSBX218A
The MSC driverssupportthe iSBC214,iSBC215G,|SBC220 controllers,
to supportthe iSBC
controllermountedon the iSBC215Gboard. The driversmustbe reconfigured
220 controller.

for the iSBC208and MSC devices.
Table3-1listshoth specificand generalprocedures
Configurations
of the BootstrapLoaderthat usethe generalversionof eitherdriverwill be
larser.

Bootstrapl-oader

3-25

CONFIGURINGTHE FIRST STAGE

One differencebetweenthe two versionsof thesedevicedriversis that the generalversions
from anyof the standardtypesof diskettesasdefinedin
will bootstrapload applications
only from
the InstallationSystems.The specificversionswill bootstrapload applications
specifictypesof disketteslistedin Tables3-2and 3-3. Thesetablesapplyto the specific
versionsof both the iSBC208and MSC devicedrivers.
Drivers
Table3-2. 525-InchDiskettesSupportedby iSBC208and MSC-Specilìc
Seclor Size

Density

256
256

Singl€
Double

NOTE:

Seclors Der Track
I

The diskettescan be formattedwith either48 tracks p€r inch or 96 tracks per inch, and
can b€ eithersingle-or doubl€-sided.

Table3-3. 8-lnchDiskettesSupportedby iSBC20Eand MsC-SpecificDrivers
Sector Size

Density

128
2s6

Singl€
Double

NOTE:

Seclorso€r Treck
26
26

lhe diskettesmay be eithersingle-or double-sided.

The Intel-supplied
BSl.A86and BS1M82.A8óconfigurationfilesinclude%DEVICE
macrosfor all of the supporteddevices,and includemultipleinstances
of someof the
macrosto indicatemultipleunitson the samedevice.It doesn'thurt to includesupportfor
all of thesedevices,evenif your applicationsystemwon't containall of them. And if you
add a new devicelater,you'll be ableto boot from the devicewithoutgeneratingnewboot
PROM devices.However,you canreducethe sizeofyour BootstrapLoaderby excluding
supportfor devicesthat you neverintendto use. Release3.2of the iSDM monitor
providesspacefrom 0FE400Hto OFFFTFHfor useby the BootstrapLoader. This
requiresyou chooseonly the devicesyou needwhenyou reconfigurethe BootstrapLoader
so it will fit into the spaceallocatedby the iSDM monitor. If the BootstrapLoaderdoes
not fit into the spaceallocatedby the monitor,you mustlocateit belowthe monitor.
To excludea devicedriverfrom the BootstrapLoader,two stepsmustbe performed.First,
excludeall the ToDEYICEmacrosin BS1.A86or BS1M82.A86that applyto deviceunits
on that controller.To do this,edit BS1.A86or BS1MB2.A86and replacethe percentsign
(7o)in îr u 5 L d É Y ,

&
&

&
&
&
&

Change the previous l i n e t o ' s t a r t ( f i r s t s t a g e _ 1 8 6 ) '
iAPX_186_INIT rnacro i s i n v o k e d i n t h e c o n f i g u r a t i o n

if the
fí1e.

s e g si z e ( b o o t ( 1 8 0 0 H) )

Figure3-4. First StageConfigurationFile BSI.CSD
(continued)

Bootstraplrader

3-43

THE FIRSTSTAGE
CONFIGURING

m a pp r i n c ( : f l : 1 2 . m p 2 )
;bootstrap

&

R e m o v eL h e ' ; '
f r o r u t h e l i n e ' : b o o t s t r a p ' w h e ng e n e r a t i n g a
a s t a n d a l o n e B o o t s t r a p L o a d è r í n P R O Mf o r a 8 0 2 8 6 - b a s e d C P U b o a r d .
Do not rernove the ' ;' if uhe BooEstrap Loader ls beÍng generated
f o r a n 8 0 3 8 6 - b a s e d C P Ub o a r d .
Bootstrap Loader fÍrst

stage generation conplete.

Figure 3-4. First StageConfigurationFile BSI.CSD
(continued)

the BSl.CSDSubmitFile
3.5.1 Moditying
To generateyour own versionof the BootstrapLoaderfirst stage,thereare several
changes
you might needto make.
First,ifyou haveexcludedanydevicedriversfrom the BootstrapLoader(by excluding
TaDEYICEmacrosfrom the BSl.A86or BS'lMB2.A86file), you won'tìvantto link the
codefor thosedriversinto the the first stage.To preventthe linkingof a devicedriver,edit
the LINKSócommandin the BSI.CSDfile andplacean ampersand(&) in front of anyfile
namethat corresponds
to a driveryou want to exclude.Figure3-5 is an examplethat
showsa portionof the BSl.CSDfile after excludingthe iSBC208,iSBX 218A,iSBX 251,
iSBC254and SCSIdevicedrivers.

3-44

Bmtstrap l-oader

CONFIGURJNGTHE FIRST STAGE

1ink86
&
f1 :12.obj,
&
f l : b s e r r . o b J,
&
&
f1 :bcico.obj,
& ; for s tandalone s e r i a l
&
f 1 :b 2 0 8. o b j ,
&
f1 :bnsc . obj ,
&
& f l : b 2 1 8 a. o b J ,
&
& fl :b25l.obj,
&
& f l : b 2 5 4. o b j ,
&
fl : b264.obj ,
&
f7:b224a . obj
&
&
f 1 : b s c s i .o b j ,
&
fl :bs1.1ib
&
t o f l : l 2 . l n k p r i n t ( : f l : 2 2 .u r p l ) &
&nopublics except (f irststage,
&
&
firststage_l86,
&

&
&
&

channel support

Renove the '&' from the beginning of the previous line if
iAPX_186_INITrnacro is invoked in rhe configurarion file.

Èhe

Figure3-5. Excludingthe iSBC251and iSBC254Drivers

NOTE
If you excludea dcvicedriver,do NOT includeany %DEVICE macrosfor it in
the BSl.A86or BSI lt{82.A86configurationfile or errorsfrom LINK86 will
occur.
Also, if you are not usingan iRMX I or iRMX II systemto configurethe Bootstrap
Loader,you mustcommentout the commandattachingthe directorywherethe Bootstrap
Loaderfilesresideasthe logicalname:F1:. Changethe line:
ATTACHFILE
$ AS :Fl :
to
;ATTACHFILE $ AS :F1 :

Bootstrap l,oader

3-45

CONFIGURING THE FIRST STAGE

3.5.2 Invokingthe BSl.CSDSubmitFile
invokethe
After you havemodifiedthe BSl.CSDfile to correspondto your configuration,
absolute
and
assiglt
them
together,
the BootstrapLoaderfiles,link
submitfile to assemble
addresses.
The formatfor invokinsthe submitfile is asfollows:
ATTACHFILE
/RMX286/BOOT
SUBMIT
B S l ( f i r s t - s t a g e _ a d d r e s s ,s e c o n d - s t a g e - a d d r e s sI i.r s t - s t a g e - f i 1 e )
where:

3-46

first_stage_address

The startingaddressof the first stageof the Bootstràp
Loader. This canbe a RAM addressifyou intendto run
the BootstrapLoaderfrom RAM, or it canbe a PROM
devicesaddressif you intendto placethe Bootstrap
Loaderinto PROM devices.The addressyou specif
shouldbe a full 20-bitaddress.Do not usethe
base:offset
form to indicatethe address.The iSDM
Release3.2monitorallocatesthe addressrangefrom
0FE400Hto 0FFFTFHto the BootstrapLoader. Ifyour
configurationof the BootstrapLoaderwill not fit in this
space,locateit at a loweraddressthan FF8000H.

second_stage_address

The addressin RAM wherethe secondstageof the
BootstrapLoaderwill be loaded.The dataareafor the
first and secondstagesis alsolocatedhere. The sizeof
this secondstageareaconsistsof lessthan 8K contiguous
bytes.The defaultaddressfor the secondstageis
0B8000H.This addresshasbeenchosento be
compatiblewith the defaultaddressof the third stage
whichis 0BC000H.

first_stage_file

The first-stage
configurationfile to use. lfyour systemis
a MULTIBUS I system,setthis parameterequalto the
the
string'bs1'.Settingthisparameter
to 'bs1'causes
locatedBootstrap
Loaderfile to be named'bs1'.Ifyour
systemis a MULTIBUS II system,set this parameter
to
equalto thestring'bslmb2'.
Settingthisparameter
'bs1mb2'causes
the locatedBootstrapLoaderfile to be
named'bs1mb2'.

B(x)tstrapl-oader

CONFIGURINGTHE FIRSTSTAGE

To invokethe BSl.cSD SUBMIT file with the defaultaddresses
for combiningwith the
iSDM monitor,typeone of the two setsof commandsbelow:

3.6 MEMORYLOCATIONS
OF THEFIRSTANDSECONDSTAGES
when you invokethe BSl.csD file,you assignmemorylocationsto the first and secon rd r r d L ru rr \ rr./

lend

Figure4-3. Intel-SuppliedBG3"{8óFile

4.3.1 o/"BMPS
Macro(MULT|BUS@
il Onty)
The ToBMPSmacroconfiguresthe message
passingsystemusedduringbootstraploading.
This macroidentifiesthe baseaddressof the MessagePassingCoprocessor
(MPC),
addressdistancebetweenMPC ports,and informationthat defineshow directmemory
access(DMA) transfersoccur.
The syntaxof the ToBMPSmacrols
%BMPS (mpc$base$addr,
port$sep,duty$cycle,
dma$base$addr,
dma$in,dma$out,
dmagtrans,
datagwidth)
where:
mpc$base$addr

The baseI/O port addressof the MPC. Referto the
appropriatesingleboardcomputeruser'sguidefor this
address.

port$sep

The numberof addresses
separating
individualMPC
ports. For example,if the mpc$base$addr
is 0000Hand
the nextthreel/O port addresses
are 0004H,0008H,
and 000CH,respectively,
the port$sepis 4H. Referto
the appropriatesingleboardcomputeruser'sguidefbr
the I/O port addressmap.

Bootstrap[.oader

,l-5

CONFIGURINGTHE THIRD STAGE

duty$cycle

The MPC duty cyclefor the localbus. (The rate at
whichdatapacketsare generated.)For informationon
how to calculatea dutycyclesuitablefor the localbus,
refer to the MPC User'sManual. For duty cycles
suitablefor Intel singieboardcomputers,refer to the
appropriatesingleboardcomputeruser'sguide.

dma$base$addr

The baseI/O port addressfor the AdvancedDirect
MemoryAccess(ADMA) controller.Referto the
boardcomputeruser'sguidefor this
appropriatesing.le
address.

dma$in

The channelusedto receive(input) DMA message
passingtransfers.Referto the appropriatesingleboard
computeruser'sguidefor this channelnumber.

dma$out

The channelusedto send(output)DMA message
passingtransfers.Referto the appropriatesingleboard
computeruser'sguidefor this channelnumber.

dma$trans

The I/O port addressusedfor DMA datatransfers.
Referto ihe approprint.singleboardcomputeruser's
guidefor this address.

data$width

The datawidth in bits of the localbus. This valuemust
be eìtherl6 or 32 (decimal).If thewidthis setto 32 bits
board,flyby(onecycle)
on a 386/116-or 386/120-basetJ
modeis enabled.

The ToBMPSmacrocangenerateerrorsif the localbuswidth is not l6 or 32 bitswide.

Macro(853.A86and BS3M82.A86
4.3.2 %OEVICE
Only)
T\e /oDEYICE macroappliesonly to the device-specific
third stage(BS3.A86and
a devicewith a particularthird stagedevicedriver. The
BS3MB2.A86files). It associates
syntajK
of the ToDEYICE macro is as follows:
ta.unit_info )
device$read,
device$da
ToDEYICE(unit, name,device$init,
where:

4-6

unit

The unit numberof this device.Unit numberingshouldbe the sameas
that usedin the BS1.A86or BS1MB2.A86file describedin Chapter3

name

The nameof the device.You shouldalwaysspecifuthe samenamethat
you usedfor the devicein the BSl.A86or BSlMB2.A86file.

Bootstrap LOader

CONFIGURJNGTHE THIRD STAGE

device$init

Publicnameoî the third stagedevicedriver,sinitializationprocedure.
Table4-1liststhe namesusedfor lntel-supplied
devicedrivers.lfyou
supplyyour own driver(writtenasdescribedin Chapter6), enterthe
nameof its initializationprocedure.

device$read Publicnameofthe third stagedevicedriver'sreadprocedure.Table4-1
liststhe namesusedfor Intel-supplied
devicedrivers.If you supplyyour
own driver (writtenasdescribedin Chapter6), enterthe nameof its
readprocedure.
device$data Publicnameof a labelthat marksthe first byteof the datasegmentused
by the third stagedevicedriver. Table4-l liststhe namesusedfor Intelsupplieddevicedrivers.Ifyou supplyyour own driver(writtenas
describedin Chapter6), you mustcreatesucha labeland enterits name
here.
unit info

An ASM86labelthat marksthe locationof an arrayof ByTEs
containingspecificdevice-unitinformationrequiredhy the masssrorage
devicedefinedby this invocationof the %DEVICE macro.

Table4-1 liststhe namesof the deviceinitializationprocedures,
devicereadprocedures,
and datasegments
for Intel-supplied
third stagedevicedrivers.
Table4-1. Namesfor Intel-SuppliedThird StageDrivers
DevicoDriver

OeviceInhislize
Procedur€

DevicaRead
Proc6dure

MSCDriver
iSBC264Driver
iSBC186/224A
Driver
SCSIDriver

deviceiniîmscgen
deviceinit264
device init 2244
deviceinltscsi

d€vicereadmscgen
deviceread264
deYicelead 2244
devicereadscsi

Dsta 569ment
data msc

aaazu
data bs drivers
oala scsl

4.3.3 "/"SASl_UNIT_INFO
Macro(BSCSl.A86
Fite)
The SCSIdevicedriverprovidesan interfaceto massstoragedevicesthrougheitherSASI
or SCSIcontrollers.ìf usingdevicescontrolledby a SASIcontroller,you mustspecifoa
sequence
of initializationbytesfor the controller.This informationis not requiredby SCSI
controllers.The initializationsequence
identifiesthe typeof iìeviceyou haveassigned
to
the particularunit of the SASIcontrolìer.The sequence
will be clifferentdependingon the
manufacturerand modelof the harddiskor flexiblediskettedrive.and the manufacturer
and modelof the SASIcontrollerboarditsell

BootstrapLoader

1-7

CONFIGURINGTHE THIRD STAGE

requiredby your deviceson
This macroenablesyou to definethe initializationsequences
(in
the SASIbus. For eachinstanceof the ToDEVICEmacro the 851.A86or
BS1MB2.A86file) that definesa deviceon the SASIbus,you mustalsoincludethe
file) to definethat device'sinitialization
ToSASI_UMT_INFOmacro(in the %BSCSI.A86
sequence.The labelspecifiedfor the unit info field of the %DEVICE macromustmatch
%SASI_UNIT-INFOfield.
the labelfield of the corresponding
of the %SASI-UNIT-INFO macrois not used
The informationsuppliedby an occurrence
by deviceson the SCSIbus. Therefore in the BS1.A86or BSIMB2.A86 file, VoDEYICE
macrosfor devicescontrolledby the SCSIbusshouldneverspecif a valuefor the unit info
readprocedures
parameter.Note that thereis only one pair of deviceinitialization/device
is
SCSI
or
SASI.
whether
the
controller
of
for the SCSIdriver regardless
The %SASI_UNIT_INFOmacrocanbe includedonly in the SCSI/SASIdriver
confisurationfile. BSCSÌ.A86.The macrohasthe form
init_count,init_data)
%SASI-UNIT
_INFO( label,init_command,

where:

4-8

label

A validASM86labelnamematchingthe one you
specifiedin the unit info field of the ToDEVICEmacro
or BSlM82.,486).
for yourdevice(in thefile BS1.,{86

init_command

A WORD that is the initializationcommandfor your
particularSASIcontroller.

init_count

the numberof initializationBYTEs
A BYTE specifying
your
controller
requires.
that
SASI

init data

The arrayof BYTEs of initializationdatarequiredby
your SASIcontroller.The lengthof this arraymustbe
equalto thevaluein the init countparameter.

BootstrapInader

CONFIGURINGTHE THIRD STAGE

The defaultinvocations
of this macroin BSCSLA86are

j . S B C7 8 6 / 0 3 A S C S I H o s t
;
lbscsi( 0C8H
, C C HO
, C E,H0 , 0 , 1 , 0 , O F F C O H , 2 , 0 )
, O C A HO
;

iSBc 286/700 SCSI Hosc
b s c s i ( 0 C 8 H ,0 c A H ,0 C C H 0
, C E H ,0 , 0 , 2 , 0 ,

0 2 0 0 H ,2 , l ,

0D1H)

Xebec 51420 SASI controller
and a Teac model F558. 5 L/4-ínch
;
flexible di skette drive.
;
Xs a si _ u n i t _ f n f o ( s a s i _ x 1 4 2 0 m f ,1 l h , 1 0 , 0 , 2 8 h , 2 , 9 0 h , 3 , 0 f h , 5 0 h , 0 f h , 0 1 4 h , 0 )
i
X e b e c 5 1 4 1 0 S A S I c o n È r o l l e r a n d a Q u a n t u mr o o d e l Q 5 4 0 , 5 L / 4 - l n c h
;
l,linchester dÍsk drive.
;
Z s a s i _ u n i t _ i n f o ( s a s i _ x 1 4 1 0 bO
, ch, 8, 2, 0, 8, 2, 0, 0, 0, Obh)
;
Xebec S1410 SASI controller and a Computer Memories, Inc.
;
rnodel CMI-5619 5 1/4-inch l,Jinchester disk drive.
;
Zsasi_unit_info(sasi_x140a, Och, 8, 1, 32h, 6, 0, 0b4h, 0, 0, Obh)

4.3.4 o/"lNTlMacro
The ToINTl macrocausesthe third stageto executean INT 1 (soliwareinterrupt)
instructionwhcnevera bootstraploadingerror occurs.This enablesyou to passcontrolto
a user-writtenprogramif loadingfails. However,to passcontrolto anotherprogram,you
mustplacethe addressof that programin position1 of the interruptvectortable. This
macrois supportedby only the D-MON3Sómonitor. The iSDM monitordoesnor support
thismacro.
The svntaxof the %lNTl maerois
a/olNTI
Thereare no parametersassociated
with this macro.
Exactlyone of the %lNTl, %lNT3, and %HALT macrosmustbe included,or an error will
occurwhen BS3.Alì6,BS3MB2.A[ìó,
or BG3.A8óare assembled.

BootstrapLoader

4-9

CONFIGURINGTHE THIRD STAGE

4.3.5 %lNT3Macro
The %INT3 macrocausesthe third stageto executean INT 3 (sofrwareinterrupt)
instructionwhenevera bootstraploadingerror occurs.Ifyou are usingthe iSDM monitor,
controlto the monitor. Otherwise,the INT 3 instructionhas
the INT 3 instructionpasses
no effectunlessyou haveplacedthe addressof your custominterrupthandlerin position3
of the interruptvectortable.
The syntaxof the aolNT3 macrois
7aINT3
with this macro.
Thereare no parametersassociated
Exactlyone of the %lNT1, %lNT3, and TaHALTmacrosmustbe included,or an error will
or BG3.A86are assembled.
occurwhen8S3.A86,BS3MB2.A86,

4.3.6 %HALTMaero
'Íhe

ToHAIJTmacrocausesthe third stageto executea halt instructionwhenevera
bootstraploadingerror occurs.The syntaxof the VoÍIALT macrois asfollows:
ToHAlT
with this macro.
There are no parametersassociated
Exactlyone of the ToINTl, %INT3,and ToHALTmacrosmustbe included,or an error will
occurwhenBS3.A86,B53MB2.A86,or BG3.A86are assembled.

4.3.7 a/oCPUBOARD Macro
The ToCPU BOARD macrospecifiesthe typeof processorboardin your system.The
third stageneedsthis informationso that it canproperlyinitializethe boardwhen
switchinginto protectedvirtualaddressmode. The syntaxof the %CPU BOARD macro
is as follows:
TaCPU_BOARD(type)

4-10

BootstrapLoader

CONFIGURINGTHE THIRD STAGE

where:
type

The tlpe of processor
boardin your system.The followingare the valid
values:

Value

Processor
Board

286/12
286/|Z
286112
2861100A
386/20
386/100

iSBC286/10board
iSBC2861104
board
iSBC28ól12board
iSBC2861100.4
board
iSBC386/2Xboardor iSBC386/3XBoard
iSBC386/116
boardor iSBC386/120
Board

4.3.8 %INSTALLATION
Macro(8G3.A86Only)
The TaINSTALI-ATIONmacrospecifies
whetherthe genericthird stagewill enterthe
monitorafter loadingthe applicationsystemor not. The syntaxof the %INSTALLATION
macrols:
ToINSTALI-ATION (monitor_entry)
where:
monltor_entry

The typeof actionthe BootstrapLoaderis to take upon
loadingthe applicationsystem.If monitorentry is 'n' the
systemis loadedand then executedwith no monitor
entryinbetween.If it is'y', the monitor is enteredafter
the systemis loaded.You mustrypein the monitorGO
commandto continue.

'y' for the monitor_entryparameter,
Whenthe monitoris entered,asa resultof specifying
the BootstrapLoaderprintsthe followingmessage
to the terminal:
Insert

the

Start-uD

Svsten

Cornmands Dlskette

and tvDe

"G"

NOTE
If your systemhas the D-MON386 monitor rather than the iSDM monitor, type
''GO< RETURN>".

BootstrapLoader

4-t I

THE THIRD STAGE
CONFIGUR-ING

This macrois usedto generatethe genericthird stageusedto boot the OperatingSystem
from diskettes.The %INSTALTATION macroallowsone diskette,whichcontainsonly
the OperatingSystemboot file and the third stageto be usetlto load the systemfrom
disketteinto memory. In enteringthe monitor,it allowsa seconddiskette,whichcontains
to be usedasthe systemdevicewhenthe systemis
the necessary
systemcommands,
initialized.

4.3.9%ENDMacro
and BG3.A86
The ToENDmacrois requiredat the end of the 853.A86,BS3MB2.A8ó,
is
as
follows:
files. The syntaxof this macro
ToEND
with the ToENDmacro.
Thereare no parametersassociated

4.3.10 User-Supplied
Drivers
If you want to usethe device-specific
third stageto loadyour systemfrom a deviceother
than one for whichIntel suppliesa third-stage
driver,you mustwrite your own device
driverproceduresthat the third stagewill call. Chapterfr describes
how to do this. In
to the BootstrapLoader:
addition,performthe followingactionsto add the procedures
Speci! the namesof the deviceinitializationprocedure,the devicereadprocedure,
and the driver'sdatasegmentin a ToDEYICEmacroin the 853..4[ì6file.
If thereare configurable
parametersassociated
with your device(suchasbase
addresses
or wakeupports),you mightwant to createyour own configurationmacro
and includeit in a specialconfigurationfile,just like the Intel devicesdo. Chapter5
describes
how to setup a macro. You will probablyusethe sameconfigurationfile for
both the first- and third-stagedrivers.
Assembleyour deviceinitializationprocedure,your devicereadprocedure,and your
configurationfile (ifyou haveone),and link the resultingobjectcodeto the rest of the
BootstraDLoaderobiectfilesand libraries.

4-12

Bfi)tstrap hader

CONFIGURINGTHE THIRD STAGE

4.4 GENERATING
THETHIRDSTAGE
TwoSUBMITfiles(BS3.cSD
andBG3.csD)areusedto generate
thetwotypesof third
stages.B53.cSDperforms
theassembly,
linkage,
andlocationofthe device-specific
third
stage.BG3.GSD
performs
thesameoperations
for thegenericthirdstage.Figures
4-4and
4-5showtheIntel-supplied
B53.CSD
andBG3.CSD
files.
attachfile

$ as :fl:

;

rnp1286: f 1 : Í 0 . a 8 6 $ o b j e c t ( % 0 . r n p 1 )
asn86 f l : f 0 . r n p l
a s n 8 6 f 1 : b m s c .a 8 6
asrn86 f 1 : b 2 l 8 a . a 8 6
a s m 8 6 fL:b264 . a86
asn86 f 1 :b s c s i . a 8 6
asm86 fI:b224a . a86
;
link86
&
f1 20.obj ,
&
f1 :bs3.lib,
&
f 1 : b r n s c. o b j ,
&
f l : b 2 1 8 a .o b j ,
&
f l : b 2 6 4. o b j
&
& f1 :bscsi.obj,
&
& fl:b224a.obj
&
co fl:10.lnk print(:f1 :Z0.mp1)notype nolines nosynbols
;

1 o c 8 6 : f l : Z 0. l n k
a d d r e s s e s( c l a s s e s ( c o d e( 1 1 ) ) )
o r d e r ( c l a s s e s ( c o d e ,d a t a ) )
noinitcode purge
staft (bs 3)
m a p p r i n t ( : f 1 : % 0 .n p 2 )

&
&
&
&
&

T h e T h i r d S t a g e , l o c a r e d a r a d d r e s s1 1 , i s i n t h e f i l e

10

Figure4-4. Device-Specific
Third StageSUAMIT File (B53.CSD)

BootstrapInader

,:t-13

THE THIRI) STAGE
CONFIGURING

atfacnîlIè

I

as

: f r:

;
a s m 8 6 : F l : b g 3. a 8 6
;
link86
:f1:bg3.obJ,
.!i-.uBJ.r!u

to

nolisr
&
&
ù

: fl :bg3.1nk notype nolines nosyurbols
&
&
&
&
L\urJ./
&
Pu!óc
:Fl:20.11nap print(:fl :ifO.mp2)

1oc86
: fl :bg3. lnk
a d d r e s s e s( c l a s s e s ( c o d e( Z l ) ) )
o r d e r ( c l a s s e s ( c o d e ,d a t a ) )
nolnitcode
èLd!

to

The Generic
in the file

Third Stage is
Z0 .11-

located

at

address

Z2 and is

Figure4-5. GenericThird StageSUBMIT File (BG3.CSD)

4.4.1 Modifyingthe SubmitFiles
your own versionof the third stage,you shouldmodifythe appropriate
Beforegenerating
submitfile to matchyour intendedconfiguration.
If you are usingthe device-specific
third stageand you haveexcludedanydevicedrivers
o/oDEYICE
from it (by excluding
macrosfrom the 853.A86or BS3MB2.A86file),you
won't want to link the codefor thosedriversinto the the third stage.To preventthe
linkingof a devicedriver,edit the LINK86 commandin the BS3.CSDfile and placean
ampersand(&) in front of anyfile namethat corresponds
to a driveryou want to exclude.
If you are not usingan iRMX I or iRMX II systemto configurethe third stage,you must
commentout the line wherethe directorycontainingthe BootstrapLoaderfilesis attached
as :fl: beforeinvokingthe othercommandsin the BS3.CSDor BG3.CSDfile. Changethe
line:
ATTACHFILE $ AS :Fl :
to
:ATTACHFII-ES AS :F1 :

4-14

Burtstrap [-oader

C O N F I G U R I NT
GI I E T H I R DS T A G E

4.4.2 Invokingthe SubmitFile
After you havemodifiedeitherthe BS3.CSDor BG3.CSDfile to correspondto your
configuration,
invokethe appropriateSUBMIT file to assemble
the third stagefiles,link
them together,and assignabsoluteaddresses.
The formatfor invokingeitherSUBMIT file
is as follows:
Device-soecificthird stage
SUBMIT B53 (filename,third_stage_addr)
Genericthird stage
SUBMIT BG3 (filename,extension,
third_stage_addr)
where:
filename

The nameof the file in whichto storethe senerated
rhirdstage.Also,the nameof the third-stage
configuration
file you are using(BS3.A8ófor
MULTTBUSI systemsand BS3MB2.A86for
MULTIBUS II systems).The genericthird stage
appendsthe nextparameter(extension)to the lìÌename.

extenslon

The extensionthe genericthird stageis to have. This
doesnot applyto the devicespecilìcthird stage.Normal
genericthird stagesusuallyhavethe extension'GEN'.
Genericthird stagesusedlbr OperatingSystem
installationshouldusethe extension'INS'.

third_stage_addr

The addressin RAM wherethe third stagewill be
loaded.The addressyou specifyshouldbe a full 20-bit
address.Do not usethe base:offset
form to indicatethe
address.
If you haveno specialrequirements
for loadingthe third
stage,speci$a valueof 0BC000Hfor this parameter.

Bootstraphader

4-r5

CONFIGURINGTHE THIRD STAGE

OFTHETHREESTAGES
4.5 MEMORYLOCATIONS
Whenyou configurethe first and third stagesof the BootstrapLoader,you canassignthe
you
at whichthe threestageswill be located.Beforesettingtheseaddresses,
addresses
in the BootstrapLoader.
mustunderstandhow defaultmemoryis assigned
Table4-2liststhe defaultmemorylocationsusedby the BootstrapLoader- It alsonames
the SUBMIT filesyou caninvoketo changethe memoryassignments.
Table4-2. MemoryLocationsUsedbv the BootstrapLoader
Deacription
1stStage
Code

D€fauh
Applicatìon
Dependent*
for iSDMR3.0
0FE40OH

Marimum
Size'

Configuration
File

14KBytes

BSl,CSD

2nd Stage
Code, I st/2nd
Data and Stack

088000H

8K Bytes

BSl.CSD

3rd Stage
(specifìc)
Cod€,Data
and Stack

0Bc000H

16KBltes

BS3.CSD

3rd Stage
(gen€ric)
Code

0Bc000H

8K Byîes

BG3,CSD

ThirdStage
(generic)
Data and Stack

0880@H

BSl,CSD

* Maximumsiz€is a functionol the sizeof the devicedriversincludedin the Bootsfap Load€r,

versionof the Bootstrap
The BootstrapLoaderReleaseDiskettecontainsa standalone
Loader,in the file namedBS1,whichselectsall the supportedlntel devicedrivers.The
map file, BS1.MP2,is suppliedto showthe layoutof the segments
in BS1. The first stageis
locatedat 0C0000Hand the secondstaseis locatedat 0B8000H.All defaultthird stases
are locatedat 0BC000H.

1-16

BootstrapIîader

CHAPTER
5
WRITING
A CUSTOM
FIRST.STAGE
DRIVER

5.1 INTRODUCTION
You canconfigurethe BootstrapLoaderto run with manykindsof devices.If you plan to
useone of the devicesfor whichIntel suppliesa devicedriver,you canskipthis chapter.
If you want to usethe BootstrapLoaderwith a deviceother than thosesupportedby Intel,
you mustwrite your own first-stage
devicedriver. (lf you want to load iRMX II
applications
pastthe first megabyteof addressspace,you mustalsowrite a customthirdstagedriver. Chapter6 describes
how to write thirtJ-stage
drivers.)This chapterprovides
you with guidelinesfor writinga customfirst-stage
driver.
You mustincludetwo proceduresin everyfirst-stage
devicedriver:a deviceinitialize
procedureand a devicereadprocedure.The deviceinitializeproceduremustinitializethe
bootstrapdevice.The devicereadproceduremustload informationfrom the deviceinto
RAM.
The restof this chapterrefersto the two procedures
as DEVICE$INIT and
DEVICE$READ. However,you cangivethemany namesyou want,providedno other
first-stagedriverprocedureusesthe chosennames.To checkthe namesof the Intelsuppliedfirst-stage
procedures,
useLI886 to Iist the modulesin the objectlibrary
/RMX286/BooT/BS1.I-lB or /RMX86/BooT/BS 1.LIB.
You mustwrite both procedures
in an t1086
language(eitherPL/M-ll6 or ASM86) and
conformto the I-ARGE modelof segmentation
of the PL/M-86 programminglanguage.
This meansthat you mustdeclarethe two procedures
as FAR (not NEAR) an 01),pushthe
valueonto the stack,and call the BSERRORprocedure.For example,
resultingworcl
the
device
code
is 0B3H,pushB301Honto the stack,and call BSERROR. If no
if
devicecodeexists.use00.
aocomplish
this in PL/M-86:
Addingthe followingstatements
EXTERNAL,
DECI.AREBSERROR
D E C I ^ A . RI O
E - E R R O RL I T E R A L L Y ' O B 3 O 1 H '
CALL BSERROR(ÌO_ERROR)
;

language,
note that BSERROR
lf you call the BSERRORprocedurefrom assembly
that is,declareBSERRORas
followsthe PL/M-86 TARGE modelof segmentation;
extrn

BSERROR:far

NOTE
In adclitionto the abovetwo steps,the proceduremustfollow MULTIBUS II
if the
transportprotocoland belongto the BSl-DriversCOMPACT sub-system
driverfunctionsin a MULTIBUS II environment.Referto Section5.5for
moreinformation
on theselwo requircments.

INFORMATION
TO THE
5.4 SUPPLYING
CONFIGURATION
FIRST.STAGE
DRIVER
Any customdevicedriveryou write needssomeconfigurationinformationaboutthe devrce
it supports,suchas the addressof the devicewakeupport. (To determinewhat devicespecificinformationyour driverneeds,consultthe hardwarereferencemanualfor the
device.)You canprovidethis informationto the customdevicedriverone of two ways:
.

Placethe information
directlyintothe driver(hard-coding)

.

Createa configurationfile similarto thoseprovidedwith the Intel-supplied
drivers.

5.4.1 Hard-Coding
the Configuration
lnformation
One wayto supplyconfigurationinformationto a customdevicedriver is to placeit
directlyinto the code. This methodworks,but if anyof the configurationinformation
changes,
or if you want to supporta similardevicethat hasa slightlydifferent
configuration,
you mustchangethe ciriverancìreassemble
it. Fortunately,first-stagedevrce
driversare usuallysmallenoughso that the amountof time requiredto reassemble
them is
negligible.

5-4

Brxtlstraplrtader

WRITING A CUSTOMFIRST-STAGEDRIVER

Figure5-t illustrateshow to placethe configurationinformationdirectlyinto the code.
This figureliststhe "Constants
and Data"sectionthat couldbe usedto supplythe MSC
first-stagedriverwith device-specific
configurationinformation.

Constants and Data

data_bsmsc

segnent

; Static

wakeup_newdrivl

dw

100H

;MSC wakeup address

device_newdrlvl

db

0

drtab_ne\,Jdrivl
db
db
db
db
db

d\r

256
2
0
9
L024
5

Data

;number of cylinders
;nuruber of fixed heads
;nurnber of rernovable heads
;numberof sectors
:device granularicy
;nurnberof alternaÈe cylinders

Figure 5-1. Hard-CodedConfìgurationInformation

5.4.2 Providinga Configuration
File
The secondwayto supplyconfigurationinlbrmationis to declareall device-specifìc
parametersasvariablesthat are externalto your devicedriver. A separatesmallmodule
candeclaretheseparametersaspublicvariablesin . You canincorporatethis second
moduleinto the BootstrapLoaderby placingassembly
and link commandsin the firststageSUBMIT file BS1.CSD.To usethis approach,followthe stepsbelow:

Bootstrapl-oader

5-5

WRITING A CUSTOMFIRST-STAGEDRTVER

1.

parameters
asexternal
thedevice-specific
In thecodefor thedevicedriver,declare
variables.
For example,
thefollowing
codecouldbeusedinsteadof thehard-coding
shownin Fisure5-l.
narne bpmsc
C
o
n
fl g u r a t i o n i n f o r m a t i o n :
;
extrn

r^rakeup_newdrivl w o r d

;l,Iakeup port

extrn
extrn

device_ne\rdrivl
drÈab newdrivl

;Devlce nurnber
;Device Table

byce
byte

Createan INCLUDE file containinga macrodefinition.The macrodefinitionmust
declarethe device-specific
parameters
aspublicvariables(matchingthe external
where
declarations
from the previousstep). This file shouldbe namedas"roo<.inc"
nooo<.a86).
To the list of modulesto be linked
(immediatelybelowthe LINK86 invocation),add the nameof the objectmodule
createdwhenyour file (no<.a86)
is assembled.
In both the ASMIJ6invocationand the
LINK86 invocation,prefacethe filenamewith the logicalname:Fl: (suchas
:f1:nc<.a86).
Unlessyou havereasonto do otherwise,usethe sameASM86 and
LINK86 optionsshownfor otherfilesassembled
and linkedby BSI.CSD.
Figure5-2showsmodifications
to BSl.CSDthat add supportfor the driver
configurationfilesjust created.Arrows ar the left of the figureshowthe linesthat were
added. Noticethat only the configurationfile is beingassembled
eachtime BSl.CSDis
invoked,not the entiredriver. BSl.CSDassumes
the useof the configurationfile
BS1.A86and that you haveassembled
your driverand addedthe resultingobject
moduleinto the libraryBSl.LIB.

Bootstrapl.oader

f,-/

WRITING A CUSTOMFIRST-STAGEDRIVER

;
; a s r n 8 6: f 1 : b s 1 . a 8 6

r n a c r o ( 9 0 )o b j e c c ( : f 1 - : b s 1 . o b J )

Prínr ( : fl:bs1 . lst)

a s r n 8 6: f l : b 2 6 4 . a 8 6 n a c r o ( 5 0 ) o b j e c t ( : f 1 : b 2 6 4 . o b )j p r i n t ( : f 1 : b 2 6 4 . 1 s t )
a s n 8 6 : f 1 : b s c s l . a 8 6 m a c r o ( 5 0 )o b j e c t ( : f l : b s c s t . o b J ) p r i n t ( : f l : b s c s i . l s t )
-> asn86 : fl :nvdrvlnac.aS6 nacro(50) object( :fl :nvdrwlnac.obj nollsÈ
;

&
&
&
&;standaÌonè serlal channèl support

l lnKób
'f1

&

'hcprr

nhì

:f1:bcico.obj,

fl

hcnci

nhi

f l : b 2 6 4 . o b J,
fl : nrdrvlnac . obj ,
rl:Ds_t.llD

to

&
&
&

:f1 :bs1.lnk prlnt(: fl:bs1.npl) &

Figure5-2. ModifiedBSI.CSDFile

5.5 USINGTHEMULTIBUS@
IITRANSPORT
PROTOCOL
If the driveryou are creatingfunctionswithin a MULTIBUS I environment,
you neednot
readthis section.Skipto Section5.6.
If the driveryou are creatingfunctionswithin a MULTIBUS II environment,
you must
write the drivercodeto usethe MULTIBUS II message
transportprotocol.To helpyou
accomplish
this task,Intel providesa small,single-thread
communication
systemthat
enablesBootstrapLoaderdriversto communicate
with devicecontrollerswithin a
MULTIBUS II environment.This communication
systemis calledthe BootstrapLoader
CommunicationSystem.
The followingparagraphs
providean overviewof the BootstrapLoaderCommunication
System,whichusesconceptssimilarto the NucleusCommunication
System.Shouldyou
desirea more completedescriptionof thesecommunication
systemconcepts,
refer to the
Extended|RMX II NucleusUser'sGuiriein Volume 2 of the iRMX ll documentationset.

5-E

Bootstrap[.oader

WRITING A CUSTOMFIRST-STAGEDR-IVER

The BootstrapLoaderCommunication
Systemcanbe thoughtof as a subsetof the Nucleus
CommunicationSystem.It fully conformsto the MULTIBUS II transportprotocol
suitablefor a limitedbootloadingenvironment.Unlike the NucleusCommunication
System,the BootstrapLoaderCommunication
systemis designedto handlebootstrap
loadingonly. Consequently,
the systemis synchronous
in nature. In otherwords,
proceduresexecuteto completionone afterthe other;no multitaskingor needto handle
asynchronous
eventsexists,
MULTIBUS II transportprotocolfunctionssupportedby the BootstrapLoader
Communication
Systemincludecontroland datamessage
tlpes,a subsetof the
request/response
transactionmodel,sendand receivetransactionmodels,message
broadcasting,and accessto deviceinterconnectspace.
To supportthesefunctions,lntel suppliesa setof systemutilitiesgroupedtogetherin a
BootstrapLoaderMessagePassing
SystemModule. As a programmer,you haveaccessto
theseutilitiesthroughsystemcallsyou placein your drivercode. The remainderof this
sectionexplainsthe supportedfunctionsin the BootstrapLoaderCommunications
System
and showsyou how to useeachof the utilities.

5.5.1 MessagePassingControllerInitialization
Beforeany BootstrapLoaderCommunication
Systemcallscanbe made,you must
initializecertainpartsof the hardwarein preparationfor message
passing.You
accomplish
this initializationthroughthe BS$MPS$INITutility. You mustmakethiscall
from your driver'sinitializationprocedurebeforemakinganyother BootstrapLoader
Communicationutility calls.The followingutility descriptionpresentsBS$MPS$INIT:

CALL BS$MPS$INIT
INPUT PARAMETERS
This utility hasno input parameters.
OUTPUT PARAMETERS
This utility hasno outputparameters.
DESCRIPTION
The BS$MPS$INITutility provideshardwareinitializationfor the MessagePassing
Controller(MPC) and the AdvancedDirect MemoryAccess(ADMA) devices.You must
performa call to this utility beforeattemptinganyother BootstrapLoaderCommunication
Svstemutilitv calls.

Bootstrap Loader

5-9

WRITING A CUSTOM FIRST-STAGEDRI!'ER

CONDITION CODES
This utility hasno conditioncodes.

5.5.2MessageTypes
control
Systemsupportstwo typesof messages:
The BootstrapLoaderCommunication
messages
and datamessages.
occurbetweenthe
Controlmessages
consistof only a controlportion. Thesemessages
senderand receiverrequiring no explicitbuffer resourceallocation. The reasonfor no
hasno datapart. The maximumlengthof a
a controlmessage
bufferallocationis because
existsbetweencontrol
is 20 bytes.Also,a one-to-onecorrespondence
controlmessage
are control
(all unsolicitedmessages
messages
and MULTIBUS II unsolicitedmessages
messages).
consistof both a l6-bytecontrolportionand a variablelengthdataportion.
Data messages
do requireexplicitbufferallocationbetweenthe senderand receiver.The
Thesemessages
containsa variable
this typeof message
reasonbufferallocationis requiredis because
amountofdata. The maximumlengthof the dataportionis 64K-l bytes.

Transaction
Model
5.5.3Request/Response
Systemsupportsa subsetof the re<1uest/response
The BootstrapLoaderCommunication
Svstemuses.This subsethasthe
transactionmodelthat the NucleusCommunication
folìowingcharacteristics:
o

Systemfunctionswithin a bootloading
Becausethe BootstrapLoaderCommunication
originateonly from the hostCPU board. The specific
environment,requestmessages
to requestson a one-to-onebasis.
devicecontrollersthen matchresponses

.

requests.
No supportexistsfor multipleoutstanding

.

of response
messages
into specificapplicationbuffers
Fragmentation
and transmission
is completelytransparentto the user,the
canoccur. Becausethis fragmentation
asa singleresponse
to a singlerequest.
fragmentedresponse
is considered

o

Systemreceivesmessages
in the order in which
The BootstrapLoaderCommunication
they are sent.

Communicationbetweenthe CPU hostboardexecutingthe driverand lhe bootabledevice
controllerusesthe basictransmission
modelof sendand receive.The driversendsa
back. When the driver
requestto the devicecontrollerand thenreceivesa response
the
ID is generatedthat logicallyassociates
initiatesthe message,
an internaltransaction
thus
requestwith the response.This ID remainsvalid until the devicecontrollerresponds,
completingthe transaction.

5-10

Bootstrap l-oader

WRITING A CUSTOMFIRST-STAGEDRIVER

For messages
that requiredataaspart of the response,
the drivercan initiatethe allocation
of an rsvpdatamessage
bufferin whichto receivethe responsedata. The datacanthen
arriveeitherwholeor fragmented.Regardless
of fragmentation,
the hostCPU boardviews
the responsemessage
asone message.
If the requestmessage
requiresno dataas a
response,
the responsemustbe a controlmessage.
The utility the BootstrapLoaderCommunication
Systemusesto supportthe
request/response
transaction
modelis BS$SEND$RSVP.
The followingutilirydescription
presentsBS$SEND$RSVP:

CALL BS$SEND$RSVP (socket,control$ptr,data$adr,data$length,
rsrp$control$p,rsrp$data$adr,rsvp$data$length,
flags,exception$ptr)
INPUT PARAMETERS
socket

A DWORD of the form host$id:port$id
identif ing the
remotedestination.

control$ptr

A POINTER to a controlmessage.If data$adr= NULL
= 0, then the controlmessage
(0) or data$length
is 20
byteslong. Otherwise,the controlmessage
is 16bytes
long.

data$adr

A DWORD containingthe absoluteaddressof a data
message.If data$adris NULL (0), then a control
message
is sent. Otherwise,data$adrpointsto a
contiguous
buffer.

data$length

A WORD definingthe lengthof the datamessage.If
length
data$length
is equalto zero,the controlmessage
is assumedto be 20 bytes.

rsrp$control$p

A POINTER to the receivedcontrolmessage.If
= 0, then
= NULL (0) or rsrp$data$length
rsvp$data$adr
the controlmessage
is 20 byteslong. Otherwise,the
controlmessage
is 16byteslong.

rsrp$data$adr

A DWORD containingthe absoluteaddressof a data
message
bufferfor the return responsethat is expected.
is
If rsrp$data$adr
is NULL (0), then a controlmessage
points
to
expectedasa reply. Otherwise,rsw$data$adr
arrives.
bufferin whichthe datamessage
a contiguous

BootstrapLoader

5-ll

WRITINC A CUSTOMFIRST.STAGEDRI!'ER

rslp$data$length

A WORD definingthe lengthof the rsrp databuffer.

flags

WORD reservedfor future use. Aithough this
parameteris ignored,you mustsupplya "0"valueasa
placeholder.

OUTPUT PARAMETER
exception$ptr

A POINTER to a WORD to whichthe Operating
Systemreturnsthe exceptioncodegeneratedby this
Systemcall.
BootstrapLoaderCommunication

DESCRIPTION
from a port to a remotesocketwith an
The BS$SEND$RSVP
utility sendsa message
explicit requestfor a return response.This call is synchronouswith respectto both the
requestand the response.

5-12

Bootstrapl-oader

WRITING A CUSTOM FIRST.STAGEDRIVER

EXAMPLE
This exampleillustratesthe fundamentals
of the request/response
transactionmodel
betweenthe hostCPU boardand bootabledevicecontrollerboard. This examoleis
written in PL/M-Sócodeand is intendedto be genericin nature.

//************************************************************
*
îhis exanple sends a 20,byte control nessage to the
*
bootable device controller board located ln slot 1
*
a t p o r t 5 0 0 o f t h e M U L T I B U SI I s y s t e n .
This nessage
*
sollcits
data from the device as DarÈ of the
*

ra

 0
THEN CALL BSERROR;
.
.

(Typical code to execuLe
lor successful status. )

E N DC O D E ;
sAÌ,fPLE_BS
I SEND9RSVP
;

5-r4

Bootstrap [-{)ader

WRITINCA CUSTOMFIRST-STAGE
I)RtVER

CONDITION CODES
E$OK

0000H

No exceptional
conditions.

BS$E$BUFFER$SIZE

0082H

The rsvpbufferpostedis too
small.

BS$E$TRANSMISSION

00ElI{

An error occurretlwhile
transmitting
a MULTIBUS II
message.

5.5.4 Sendand ReceiveTransaction
Models
In additionto the request/response
transaction
model,the Bootstrap
Lolder
CommunicationSystemsupportsscndand receivetransactionmodels.Normally,
communication
betweena driverand a devicein a bootloadingenvironmentusesthe
request/response
or sendmodels.However,ifyour hostCPU boardcancapitalizeon a
receivetransactionmodelinitiatedliom the driver,the utility is available.
You can makecallsto the sendand receiveutilities,respectively
whenyou neetlthe driver
to simplysenda message
with no requestfor a response,
or whenyou needthe driverto
wait lbr spontaneous
communication
from a specificdevicecontroller.
The two utilitiesavailableto you that supportthe sendand receivetransactionmodelsare
BS$SENDand BS$RECEIVE.The followingutility descriptions
presentBS$SENDand
BS$RECEIVE:

CALL BS$SEND

(socket,control$ptr,data$adr,data$length,
flags,exceptiongptr)

INPUT PARAMETERS
socket

A DWORD of the form hostgid:portgid
identifyingthe
remotedestination.

control$ptr

A POIN'IER to a controlmessage.lf datagadr= NULL
= 0, then the controlmessage
(0) or data$length
is 20
byteslong. Otherwise,the controlmessage
is l6 bytes
long.

data$adr

B{ntstrap l-oader

A D W O R D c o n t a i n i n gt h e a b s o l u t ea d d r e s so f a d a t a
m e s s a g e I. f d a t a $ a d ri s N U L L ( 0 ) , t h e n a c o n t r o l
messageis sent. Otherwise,data$adr points to a
contiguousbuffer.

5-t-s

WRITING A CUSTOM FIRST-STAGE DRIVER

data$length

A WORD definingthe lengthof the datamessage.If
length
data$length
is equalto zero,the controlmessage
is assumedto be 20 bltes.

flags

WORD reservedfor futureuse. Althoughthis
you mustsupplya "0"valueasa
panrmetcris ignored,
placeholder.

OUTPUT PARAMETER
exception$ptr

A POINTER to a WORD in whichthe Bootstrap
Loaderreturnsthe exceptioncodegeneratedby this
Systemcall.
BootstrapLoaderCommunication

DESCRIP'TION
to a MULTIBUS II board
The BS$SENDutility sendseithera contrttlor a datamessage
parameter
socket.
identifiedby the
EXAMPLE
of message
passingfrom the hostCPU boardto
This exampleillustratesthe fundamentals
the bootabledevicecontrollerboard. This exampleis written in PL/M-Só codeand is
intendedto be qenericin nature.

/**********************************:t*******:******************

*
*
*

This exaurple sends a data nessagè to the bootable
controller board located in slot 1 at port 500 of
t h e M U L T I B U SI I s y s t e r n .
The control portion of the message sent is located
i.n the 16-byte data array p$control$rnsg (Peripheral
C o n m a n dM e s s a g e ) . T h e d a t a p o r t i o n o f t h e n e s s a g e
sent is located in the 100-bvÈe data arrav
send$data.

*
*
*
*
*

Note that the progranmer is responsible for
p $ c o n t r o l $ m s g a n d t h e a r e a c o n t a i n i n g t h e d a"t .a" . r . i r r g
p o r t i o n o f t h e r n e s s a g ea r e i n i t i a l i z e d
lrith correct

i
*
*

************************************************************/

5-ló

Bfi)tstrap l-oader

WRITING A CUSTOMFIRST-STAGEDRIVER

SAIPLE_BS$SEND
D:0 ;
DECI,AREs ocke t
DECIAREsocket$o s truc ture
( h o s E $i d
Porr$ id
pgcontrol gmsg ( l6 )
DECI^ARE
D E C I A R Es e n d $ d a t a ( 1 0 0 )
DECIAREdata$adr
DECIAREdata$ len8th
DECIAREfl ags
D E C I A R Ee x c e p t i o n
DECTAREsIoC
LITEMLLY
DECI-AREport
I-ITERALLY
DECIAREnul-l
LITEMLLY
DECIARElength
LITERALLY
C O D E :D O ;
socket$o.host$ld:
s o c k e t $ o. p o r t $ i d :
data$lengrh
fl ags

DWORD
;
WORD
,
W O R D )A T ( @ s o c k e t ) ;
BYTE;
BYTE;
DWORD
;
WORD
;
WORD
;
WORD
;
,lH'
;
,1F4H'
;
'0H';
, 64H,
1

slot;
pórt;
length;
null;

( G s e n d $ d a r a( 0 ) ) ;
data$adr : coNvERT A D D R E S S

.
.
.

(Typical
code to define
the 16-byte p$control$msg btock
holding the control
message. )

.
.
.

(Typi-caÌ code to define
the 100-byce message
p o r Ci o n . )

CALL BS9 SEND
( s o c k e t , @ p $ c o n c r o l $ m s g ( 0 ) ,d a t a g a d r ,
d a t a $ L e n g th , f [ a g s , @ e x c e p t i o n ) ;
IF exception <> 0
THEN CALL BSERROR;
.
.

(Typical code to execute
for success.ful sLaLus. )

END CODE;
SMPLE_BS$SEND;

Bootstrapl,oader

5-17

WRITING A CUSTOMFIRST-STAGEDRIVER

CONDITION CODES

E$OK

0000H

BS$E$TRANSMISSION O O E I H

CALL BS$RECEIVE

conditions.
No exceptional
An error occurredwhile
transmittinga MULTIBUS II
message.

(socket,control$ptr,data$adr,data$length,
exception$ptr)

INPUT PARAMETERS
socket

i d e n t i $ i n gt h e
A DWORD of the form host$id:port$id
remote sender.

control$ptr

A POINTER to the area in memory that receivesthe
control message.

data$adr

A D V / O R D c o n t a i n i n gt h e a b s o l u t ea d d r e s so f a d : r t a
messrìgereceived. If data$adr is NULL (0), then the
host CPU board expectsa control message.Otherwise,
data$adrpoints to a contiguousbuffer that receivesthe
data portion of the message.

data$length

A WO RD defining the length of the data message
received.

OUTPUTPARAMETERS
exception$ptr

A POINTER to a WORD to whichthe Operating
Systemreturnsthe exceptioncodegeneratedby this
BootstrapLoaderCommunication
Systemcall.

DESCRIPTION
The utility BS$RECEI\E,enablesa hostCPU boardto receivea message
from a specific
devicecontroller.The utilitiescall identifiesthe MBII slot to wait on, the tlpe of message,
and addresses
for the controlportionand,if necessary,
the dataportionof the message.
To receivedatamessages,
you mustprovidea buffercontainingadequatespacein whichto
capturethe data. Ifyou do not supplya largeenoughbuffer,the receivingCPU host
rejectsthe message.Also,your applicationmustmakea call to BS$RECEIVEbeforethe
actualmessage
is sent. No facilityfor queuingasynchronously
receivedmessages
exist.

5-18

BootstrapLOader

WRITING A CUSTOMFIRST-STAGEDRIVER

EXAMPLE
This exampleillustratesthe fundamentals
of message
passingfrom the hootabledevice
controllerboardto the hostCPU board. This exampleis written in PL/M-86 codeand is
intendedto be senericin nature.

/************************************************************
*
This example illustrates
h o w a h o s t C P Ub o a r d
*
receives a data message from the bootable
*
controller board located in slot 1 at port 500 of
*
t h e M U L T I B U SI I s y s t e m .
*
*
*
*
*

The controf portion of the message rèceivèd is
located in the 16-byte array p$sCatus$msg
( P e r i p h e r a l S t a r u s M e s s a g e ). T h e d a t a p o r t i o n o f
the nessage received is located in the 1024-byte
data array sent$data.

***********************************************************)t

*
*
*
*
*
*
*
*
*
/

S A H P L EB S S R E C E I V ED: O :
DECIAREs o c k et
DECI*AREs o c k e t $ o s t r u c t u r e
(host$id
porr$id
DECI.AREp $ s t a t u s $ m s g( 1 6)
DECIARE d a t a $ a d r
DECIARE d a t a $ l e n g t h
DECl-ARE f l a g s
DECIARE e x c e p t i o n
DECIARE s e n r $d a r a ( 1 0 2 4 )
DECLARESlot
LITERALLY
DECIARE POTI
LITEMLLY
DECISRE length
LITEMLLY
DECIAREn u 1 1
Ll TEMLLY

DWORD
;
WORD
,
I . J O R DA) T ( G s Ò c k e t ) ;
BYTE;
DWORD
;
WORD
;
IIORD;
WORD
;
BYTE;
'lH';
,1F4H'
;
, 400H'
;
,OH';

C O D E :D O ;
s o c k e t $ o .h o s t $ i d : s l o t ;
cnnl.ot(n
^^rt-(
i À :
port;
- lenglh;
dara$length
: null;
fÌags
@Ss e n t $ d a r a ( 0 )) ;
d a r a $ a d r : C o N V E R T _ A D D R E( S
C A L L B S$ R E C E I V E
( s o c k e t , @ p $ s t a t u s $ n s g ( 0 ), d a t a $ a d r ,
^ vC, l ^r -, ^' .6rt u. ld^L+ d
",

BootstrapLoader

I I dés

, \:cÀuFp

L I u'r/

,

5-r9

WRITINC A CUSTOMFIRST.STAGEDRIVER

] F exception <> 0
THEN CALL BSERROR;
(Typical
code to execute
for successful status. )

E N DC O D E ;
IVE ;
SAMPLE_BS
$RECE

CONDITION CODES
E$OK

0000H

conditìons.
No exceptional

BS$E$BUFFER$SIZE

0082H

The receiveclatabufferpostedis
too small.

BS$E$TRANSMISSION 00ElH

while
An erroroccurred
transmittinga MULTIBUS II
message.

5.5.5 MessageBroadcasting
to go out at the sametime to all boards
enablesonecontrolmessage
Messagebroadcasting
(busagents)in the MULTIBUS ll system.Recallthat the identificationschemefor boards
whichhavethe host$id:port$id
form. Host$idindicatesthe board
employssockets,
port
within the board. During message
port$id
indicates
the
unique
I/O
involvedand
arrives
broadcasting,
the host$idportionof the socketis uninterpreted.Thus,the message
at everyboardhavinga port identifieciby port$id.
Systemusesthe bs$broadcast
utility to support
The BootstrapLoaderCommunication
broadcasting.
The followingutility descriptionpresentsbs$broadcast:
message

CALL BS$BROADCAST

(socket,control$ptr,exception$ptr)

INPUT PARAMETERS

5-20

socket

identifyingthe
A DWORD of the form host$id:port$id
The
host$id
component
is ignored.
remotedestination.

control$ptr

A POINTER to the controlmessage
sent.

Bootstraphader

WRITING A CUSTOMFIRST.STAGEDRIYER

OUTPUT PARAMETER
exception$ptr

A POINTER to a WORD to whichthe Operating
Systemreturnsthe exceptioncodegeneratedby this
BootstrapLoaderCommunicationSystemcall.

DESCR]PTION
The bs$broadcast
utilirytransmitsa singlecontrolmessage
to the MULTIBUS ll boards
havinga port whoseID matchesthe port$idportionof the parametersocket.This
message
goesout on all MULTIBUS Il buses(iPSBparallelsystembusand/or iSSBserial
systembus)connectedto the broadcastìng
CPU hostboard.
EXAMPLE
This exampleillustratesthe fundrrmentals
of broadcasting
controlmessages
over a
MULTIBUS II system.This exampleis written in PL/M-tì(rcodeand is inten 0
THEN CALL BSERROR;
.
.

(Typical code to execute
for successfuÌ status . )

E N DC O D E ;
END SAMPLE-BS
9BROADCAST
;

CONDITIONCODES
E$OK

000011

No exceptionalconditions.

BSSESTRANSMISSION

00ElH

An error occurredwhile
transmittinga MULTIBUS II
message.

Modes
5.5.6 Transmission
waitsfor
Data message
transmissions
are synchronous
in that the senderof the message
the receiverof the message
to rcturn a transmission
statusvalue. This valueindicates
whetheror not the receiversuccessfully
acquiredthe message.Controlmessages,
however,
are not synchronous
in this manner.Thereis no indicationto the senderthat a control
message
hasbeenreceived.Also,relatedto eachtlT)eof message
transmission
is a
transactionID value. The communication
systemusesthisvalueinternallyto match
requestswith responses
and to indicatewhetherthe message
is an rsrp message
or a
sentis not an rsvpmessage,
nonrsvpmessage.lf the message
the associated
transactionID
valueis zero. If the message
sentis an rsvpmessage,
the associated
transactionID valueis
a nonzerovaluematchedto both the recìuest
and the resoonse.

5.5.7Interconnect
Space
The BootstrapLoaderCommunication
Systemsupportsaccessto boardinterconnect
space.This accessenablesthe driverto determinecriticaldevicestatusinformation.The
BootstrapLoaderCommunication
Systemprovidesinterconnect
spaceaccessthroughtwo
systemutilities: BS$GET$INTERCONNECT
and BS$SET$INTERCONNECT.
When
you usethesecallswithin your drivercode,you mustverify the valuereador written from
or to the interconnect
spaceis u'hatyou expect.The BootstrapLoadercodedoesnot know
what "correct"valuesshouldbe

<-) )

Bfi)tstrap Loader

WRITING A CUSTOMFIRST.STAGEDRIVER

The followingutility descriptionpresentsBS$GEfiINTERCONNECT:

value = BS$GET$INTERCONNECT (slot$number,reg$number,
exception$ptr)
INPUT PARAMETERS
slot$number

A BYTE that specifiesthe MBII slotwhoseinterconnect
spaceis to be read. You mustspecirythisvalueas
lbllows:
Value

Meaning

0-19
20-23
24-29
30
3l

specifiesiPSBslotnumbers0-19
illegalvalues
specifiesiLBX slot numbers0-5
illegal
specifiesthe iPSBslot ofthe CPU
that the callingsoftwareis
executingon, regardless
of the
actualiPSBslot numberof the
CPU
illegalvalues

32-255
reg$number

A WORD identifoingthe interconnect
registerto be
read. This valuemustbe in the rangeof 0000Hto
0l FFH (the interconnect
spacedefinition).

OUTPUTPARAMETERS
value

A BYTE containingthe contentsof the interconnect
registerread.

exception$ptr

A POINTER to a WORD in whichthe Bootstrap
Luaderreturnsthe exceptioncodegeneratedby this
BootstrapLoaderCommunication
Systemcall.

DESCRIFIION
The utility BS$GET$INTERCONNECT
readsthe contentsof the interconnect
register
specifiedby reg$number
from the boardspecifiedby slot$number
and returnsthe contents
in the parametervalue.

Bootstrap Loader

5-23

WRITING A CUSTOMFIRST-STAGEDRIVER

EXAMPLE
spaceregisters.The
of readinginterconnect
This exampleillustratesthe fundamentals
exampleis written in PL/M-86 codeand is intendedto be genericin nature.

/************************************************************
* This exarnple reads the general purpose reglster
of che
* unit deflnition
record vithin the interconnect spacè
* found on the board in slot nunber three.
Note that
* this code dóès no checking of stalus after each call to
* BS$CET$
INTERCONNECT.The programmer Erust ensure the
* value returned is correct.
************************************************************

*
*
*
*
*
*
/

: DO;
SA.I,fPLE_BS$GET$INTERCONNECT
DECIAREslot$nurnber
DECI-ARErecord$offset
D E C I A R Eu n i t $ d e f $ r e c
D E C I A R - rEe c $ l e n g t h $ r e g $ o f f
gen$staÈus$reg$off
DECTARE
DECLARErecord$found
D E C I À R Ee o E $ r e c
DECI,AREstacus
D E C T A R vEa l u e
DECI-AREslot
LITERALLY
DECIAREudr
LITERALLY
DECIAREgsro
LITERALLY
DECIAREeotrec
LITERALLY
DECI,ARErlro
LITERALLY
DECLAREro
LITERALLY
C O D E :D 0 ;
slot$nurnber
unit$def$rec
gen$statusSreg$off eot$rec
r e c $ l e n g t h $ r e g $ of f :

BYTE;
IíORD;
BYTE;
BYTE;
BYTE;
BYTE;
BYTE;
woRD;
BYTE;
'3H'
;
'0FEH'
'OAH'
;
'0FFH'
'01H'
;
'020H'

slot;
udr;
gsro;
eotrec;
rlro ;

/***********************************************************
* Set up to read the first nonheader record within the
* intèrconnect space. This is done by establishing
* record$offset past the interconnect space header
* record, which in this case is 32 bytes long.

*
*
*
*

*******************************************>r***************/

record$offset : ro;

5-24

BoolstrapLOader

DR]VER
WRITINGA CUSTOMFIRST.STACE

/***********************************************************
* Read the record type register (the firsE register
* wlthin a record) of the first nonheader record into
* the variable recordSfound.
***********************************************************,/

*
*
*

record$f ound = BS$CEîgIMERCONNECT
( s lotSnumber ,
recordSoffset,
Gstatus ) i
/***************************:t***********************:t***rt****

*
*
*
*
*

Decerminè if this first
record is the record we r^tant to *
*
If so, bypass the D0 IiHILE loop and get
read from.
*
lf noc,
right to reading the specifíc regiscer.
record, *
and the record is not the EOT (End Of Tenplate)
*
execute the DO hTllLE loop to get at thè next rècórd.

***************rk*******:&************************************/

D0 WHILE (record$found o unit$def$rec)
(record$found <> eot$rec) ;

AND

/************************************************************
* Position record$offset to read lhe next sequential
* record.
INTERCONNECT
T h i s í s d o n e b y c a l l l n g B S9 C E T $
*
to read the aurrent record length, adding 2 (for the
* tl^iobytes used for the record type and record length
* registers), and finally adding the current
* recordSoffset value. Note that record$offset +
* r e c $ l e n g t h $ r e g $ of f y i e l d s t h e i n t e r c o n n e c t r e g i s t e r
* that holds the current record length.

*
*
*
*
:r
*
*
*

**********************)t*************************************/

record$offset - record$offset
B S$ GE T $1 N Î E R C O N N E C T
(slot$nurnber,
record$offset +
r e c $ 1 en g t h $ r e g $ of f ,
G st a t u s ) ;

+ 2 +

/***********************************************************
* Read the next record-type regi,ster into the variable
* record$found.

*
*

************************************************:t**********/

Bootstrap L0ader

< - ?q

WRITINCA CUSTOMFIRST-STACE
I)RIVER

r e c o r d $ f o u n d = B S$ c E T $I N T E R C O N N E C T
(slotSnunber,
recordSoffset,
Gstacus);
END;
/******************************************************:P*****

* Ca11 BS$GET$INTERCONNECT
to read the general status
* register.
The exact register location is deterurined by
* a d d i n g t h e r è g i s t e r o f f s e t v a l u è g e n $s t a t u s $ r e g $ of f t o
* record$offset
************************************************************

*
*
*
*
/

( slot$nurnber,
value - BS$GET$INTERCONNECT
record$offset + gen$status$reg$off ,
Gstatus).
ENDCODE:
END SA}fPLE-BS$GET$INTERCONNECT
;

CONDITION CODES

E$OK

0000H

No exceptionalconditions.

The followingutility descriptionpresenrsBS$SEfiINTERCONNECT:

CALL = BS$SET$INTERCONNECT (value,slot$number,reg$number,
exception$ptr)

s-26

BootstrapLoader

WRITING A CUSTOMFIRST-STAGEDRIVER

INPUT PARAMETERS
value A BYTE containingthe valueto be writteninto the interconnectregister.
slot$number

A BYTE specirying
the MBll slotwhoseinterconnect
spaceis to be written. You mustspecifythisvalueas
follows:
Value

Meaning

0-19
20-23
24-29
30
3t

specifiesiPSBslot numbers0-19
illegalvalues
specifiesiLBX slot numbers0-5
illegal
specifiesthe iPSBslot of the CPU
that the callingsoftwareis
of the
executingon, regardless
actualiPSBslot numberof the
CPU
illegalvalues

32-255
reg$number

A WORD identifuingthe interconnect
registerto be
written. This valuemustbe in the rangeof 0000Hto
spacedefinition).
0lFFH (the interconnect

OUTPUTPARAMETERS
exception$ptr

A POINTER to a WORD in whichthe Bootstrap
Loaderreturnsthe exceptioncodegeneratedby this
BootstrapLoaderCommunication
Systemcall.

DESCRIPTION
The utility BS$SET$INTERCONNECT
writesthe interconnect
registerspecifiedby
reg$numberon the boardspecifiedby slot$number
with the contentsin the parameter
value.

BootstrapLoader

5-27

WRITING A CUSTOMFIRST.STAGEDRIVER

EXAMPLE
spaceregisters.The
of writinginterconnect
This exampleillustratesthe fundamentals
exampleis written in PL/M-86 codeand is intendedto be genericin nature.

/************************************************************
*
the conÈroller
initÍalization
This exarnple writes
*
record
systen bus control
register
of the parallel
*
within
space found on the board in
the interconnect
*
Note that this code does no
slot nunber three.
*
to
checkinp of scatus after each call

*
*
*

. Thè
BS$GET$
INTERCoNNECîand BS$s ET$INTERCONNECT
prograumer rnust ensure values returned and writcen
correct.

* This exarnple uses the sane record - s earching scheme
* shown ln the exanple for BS$GET$INTERCONNECT.
************************************************************,/

*
*
*
*
*

are
*
*

SAI{PLE_BS
: D0;
$ SET$INTERCONNECT
BYTE;
DECI^ARE
slot$nurnber
\'ORD;
DECLAREstatus
WORD;
DECLARE
record$offset
BYTE;
D E C I - A RpEs b $ c t r l $ r e c
DECLARErec $ length$ re g$off
BYTE;
DECIAREcontr$ init$ reg$off
BYTE;
DECI-ARErecord$found
BYTE;
DECIAREeot$rec
BYîE;
D E C I A R Eh o s t $ m e s s $i d
BYTE;
' 3H'
DECIAREsloÈ
LITEMLLY
;
DECI,AREpsbcr
LITERALLY '6H' ;
DECLARE
ciro
LITERALLY 'DH';
DECLAREeotrec
LITERALLY 'OFFH'
' 01H'
DECIARErlro
LITEMLLY
;
DECIAREhnid
LITERALLY 'AH';
DECIAREro
LITERALLY '020H'
C o D E :D Q ;
slot$number
psb$ctrl$rec
contr$init$reg$off
eot$rec
-r ^c^LCY

lr -c -" ^ó fr h C - ^ .' Cc^t F
1 .F? u .
"v

host$mess$id

5-28

:
:
-

slot;
psbcr;
ciro;
eoLrec;

-

rlyò.

- hnid;

B(ntstrap [,0ader

WRITING A CUSTOM FIRST-STAGEDRIVER

/***********************************************************
* Set up to read the first nonheader record wíthin the
* intèrcónnect space. This is done by establishing
* record$offset past the interconnect space header
* record, which in this case is 32 bytes lóng.
***********************************************************

*
*
*
*
/

record$offset - ro;
//**************x********************************************
* Read the record type register (thè first
register
* within a record) of the first nonheader record into
* the variable record$found.
***********************************************************

*
*
*
/

r e c o r d $ f o u n d - B S$ c E T $I N T E R C O N N E C T
(s1ot$nurnber,
record$offset,
Gstatus);
/************************************************************
* Deterrnine if chís first
record is the record we wanc to *
* write.
*
I f s o , b y p a s s t h e D 0 l + r H l L El o o p a n d p r o c e e d
*
'rrítins the sne.ific
repísrcr
If n.lt end the record *
*
is not the EOT (End Of Template) record, executè the DO *
*
)t
I.IHILE loop to get at the next record.
************************************************************/

DO WHILE (record$found o psb$ctr1$rec) AND
(record$found O eot$rec) ;
/************************************************************
* Position record9offset to read the next sequential
* record.
T h i s i s d o n e b y c a l l i n g B S $ G E TI $
NTERCONNECT
* to read the current record length, addíng 2 (for the
* Èwo bytes used for the record type and record length
* registers), and finally adding the currenc
* record$offset value.
Note that record$offset +
* rec9length$reg$off yields the interconnect regisrer
* that holds the current record lengÈh.
************************************************************/

*
*
*
*
*
*
*
:*

record$o[[set : record$offset + 2 +
B S9 G E T $
INTERCONNECT
( s l o r $ n u m b e r,
record$offset +
recglengthgreggoff ,
@status);

Bootstrapl,oader

5-29

WRITING A CUSTOMFIRST.STAGEDRIVER

/***********************************************************
* Read the nexÈ record-type register into the variable
* record$found.
***********************************************************/
record$found

*
*

- BS$GET$INTERCONNECT
(slot$nurnber,
record$offset,
G sL at u s ) ;

END:
/******************************************************)k*****

* c a l l B s SS E T S
t oT w r i t e t h e c o n t r o l l e r
INTERCONNEC
* initialization
The exact register locatíon
register.
* is deternined by adding the register offset value
* c o n t r $ i n l t $ r e g $ of f t o r e c o r d $ o f f s è t .
************************************************************

*
*
*
*
/

I N T E R C O N N E( h
CoTs t $ m e s s $i d , s l o t $ n u m b e r ,
C A L L B S$ S E T $
r e c o r d $ o f f s e t + c o n t r $ i n i t $ r e g $ o f f , @ st a t u s ) ;
ENDCODE;
END SAMPLE-BS
$ SET$INTERCONNECT
;

CONDITION CODES

E$OK

0000H

No exceptional
conditions.

5.5.8DriverCodeConsiderations
Whenwritingthe first-stagedriver,you mustprovidetwo proceduresto the Bootstrap
Loader: a deviceinitializationprrredure and a devicereadprocedure.To be compatible
with the BootstrapLoader,theseprocedures
mustperformthe samestepsas the
initializationand readprocedures
listedin Sections5.2and 5.3.
An additionalrequirementfor drivercodeusedin a MULTIBUS II environmentstipulates
that codeusinganyof the utilitiesshownin Sections5.5.2through5.5.6belongto the
BootstrapLoaderDriversCOMPACT sub-system.
The reasonfor this requirementis
becauseall the utilitiesare arcessible
asNEAR calls.

5-30

Bfi)tstrap k)ader

WRITINGA CUSTOMFIRST.STAGE
DRIVER

The followingpartialcodeprovidesln exampleof how to ensureyour drivercodeis part of
the BootstrapLoaderDriver coMPACT sub-system.
In this example,the coclingis shown
usingtheASM86programming
Ianguage.
name
public
public

bs2pci
device_ini t_2 24A
d e v i c e_ r e a d _ Z 2 4 t t

bs l_dr ive rs_cgroup
bsl_dr ive rs_dgroup
assume cs:
assune ds:

group
group

bsl_dr ive rs_c group
bsÌ_dr ive rs_dgroup

bsl_dr ive rs_data

segment word
.

(Typical

b s l_dr ive rs_data

ends

bs l_dr ive r s_c ode
device inir
224A

segment byte
p roc
.

bs1 drivers

b s 1_dr ive rs*code
bsI drivers data

code

(Typical

pubÌ ic

'DATA'

c o d e)

pubLic
far

'CODE'

code)

ends

In the aboveexample,
bs2pciis the nameof the driverntodule.You cannameyourdriver
moduleanyuniquenameyou desire.
The two followingpublicstatements
declarethe deviccinitializationand deviceread
proceduresaspublic. Thesepublicstatements
enablethe BootstrapLoadercodeto access
themasFAR calls.Again,youcannanteyourdeviceinitialization
andreatlprocedures
anyuniquenameyou desire.
Next,the two groupstatements
cnsurethatthisdrivermoduleis groupedtogetherwith the
BootstrapLoaderutilitiesaspartof the sameCOMPACTsub-system.
You mustusctlìc
two groupnamesbsl_driverscgroupirnclbsl_cirivers_dgroup
anclthe two segmentnames
hsl clriverscodeand bsl drivers data.
F i n a Ì Ì y ,t h e t w o a s s u m es t a t e m e n t se s t a b l i s ht h e c o r r e c tv a l u e sf o r t h e c o d e s e q m e n tb a s e
a d d r e s sa n d t h e d a t a s e g m e n th a s ea d d r e s sc, s a n d d s .

tsootstrapl,Oader

5--tI

WRITING A CUSTONIFIRST-STAGEI)RIVER

The followingalgorithmis an examplethat illustratesboth a methodof usingthe Bootstrap
LoaderCommunicationSystemes a wayof verifuinga certainboardis presentin the
The exampleis written using
systemanrlof usingthe utility BS$GET$INTE,RCONNECT.
a pseudocodethat is not meantto representanyknownprogramminglanguage.
*BEGIN COMMENTS:
*

Paraneters

received

a r e B O A R D $ I Da n d I N S T A N C E .

*
*

BOARD$ID is the identificatlon
Òf fhe troard beins looked for.

*
*
*
*

INSTANCE Ís the instance of a particular
bus system.
This
troard on the parallel
parameter allows for multiple occurrences of
the MULTIBUS II systern
the sarne board within

*

Parameters

returned

are

value

iPSB$SLOT

*
*
*

iPsB$sLoT is
is found, or
not found.

the MULTIBUS II board slot when the board
the value OFFH when Lhe board is

*

Note that

*

cnoní fi.

*

concains the board identification

the variable
ínl"ar.nnnpr.l-

V E N D O R _ I Dp o í n t s
sna.p

rèpister

to

the

fhat

value.

*END COMMENTS:
**********************************-x***************
*BECIN CODE:
* D O u n t i l a l l M U L T I B U SI I b o a r d s l o t s o n t h e P S B a r e
*
sequentially examined. Use the variabÌe
*
i P S B $ S L O Ta s t h e l o o p i n g v a r i a b l e t o i n d i c a t e
*
the slor nunber for che board being examined.
*
*

5-32

: B S$ G E T I$N T E R C O N N E( C
i PTS B $ S L O T ,
VENDOR$ID
V E N D O RI D , S T A T U S )

Bù)tstrap [,oader

WRITINGA CUSTOMFIRST-STAGE
I)RIVER

*

rf

*
*
*
x
*
*
*
*
*
*
)t
*
*
*
*
*
*
*
*
n
*
*
*

t h e V E N D O R $ I Dr e t u r n e d i s n o n z e r o ,
a board exi-sts in the examined slot
then
Ìt
V E N D O R $ Ì Dr n a r c h es B o A R D g t D
then
lf
INSTANCEis the desired Ínstance of
BOARD$ ID
then
return lhe iPSBSSLOT looping index to
indicace the sl-oc number of BOARD$ID
else
else
else
If we have checked all board slots
then
Return the value OFFtt as the ipSB$SLOT
parameter indicating t-hedevice
to boot from does not exist.
else
Loop back to beginning to check the next
board slot.

*

END DO

*END CODE:

5.6. CHANGING
BS1.A86
OR BS1MB2.A86
TO INCLUDE
THENEW
FIRST.STAGE
DRIVER
The first stageof the Bootstrap Loader obtains information about the devicesantl their
associateddevicedrivers from the Bootstrap Loader configuration file BS LA86 or
BS1MB2.A86. To support a custom devicedriver, you musr add to that file a TTDEVICE
macro for each unit on the devicethît your first-stagedevice driver supports. For
example,if tr.voflexihle diskette drives are attachedto the device,you must add two
ToDEYICE macros to the list (one for each clrive). Chapter 3 describesthe syntaxol thc
%DEVICE macro.

Brntstraphader

5-33

WRITING A CUSTOMFIRST-STAGEI)RIVER

As an example,Figure5-3showsa portionof the BSl.A86file that waschangedto add
to
driver (changes
%DEVICE macrosfor two unitssupportedby a customfirst-stage
physical
1,
and
their
numbers
0
and
BSlMB2.A86wouldoccursimilarly).The unitshave
The nameof the customdriverdeviceinitialization
namesare YZ\ andYZ1, respectively.
the
nameof the devicereadprocedureis
procedureis NEWDEVICEINIT, and
NEWDEVICEREAD. Arrows to the left of the fisureshowthe addedlines.
b s1
$include ( : f1 :bs1.inc)
fcpu(80286)
of the iAPX 188
;iSBC 188/48 initialization
(
y
0
f
c
3
8
h
n
o
n
e
i
A
P
X
_
1
8
6
_
I
N
I
T
,
, B O b b h, n o n e , 0 0 3 b h )
,
;

Zdevlce (b0 , Ò r l o r r i n a i n i t ? 5 ú
Zdevice (bao , Ò . . l o r r i n a i n i r ? 6 ú
- -> ldevlce(y20,
0, nesdevlceinit,
--> ldevlce (yzI, l, newdeviceinit,
Tend

deviceread254)
d e v i c e r e a d 26 4 )
newdevlceread)
newdeviceread)

Figure5-3. NftrdilìedBSl.Att6File

THE
A NEWFIRSTSTAGECONTAINING
5.7. GENERATING
DRIVER
CUSTOMDEVICE
Once you have written the custom clevicedriver and changedthe Bootstrap Loader
Configuration files, you must generateir new first stagethat includesthe custom device
driver. To do so, follow the stepsbelow. (These stepsilssumethat you use an iRMX II
systemto developyour cocle.)
l.

Compìle or assemblethe first-stagecleviceinitialization and device read procedures.
For example,the following command assemblesdeviceread and device initialize
nrocecluresthat iìre assumc(lto reside in the file NEWDEVICE l.Al'tfr.

- a s m 8 6n e w d r i v l . a 8 6 o b j e c t ( n e w d r l v l . o b j )
iRMX rr 8086/87/186 MACRO
A S S E M B L E RV,2 . 0
Copyright 1980, 1981, 1982, INTELCORP.
IOUND
ASSEMBLYCOMPLETED,
NO É]RRORS

5-34

Bo0tstrapl,{)ader

I)RIVER
WRITINCA CUSTOMFIRST-STAGE

2. Insertthe objectmodulesfor the devicereadand the deviceinitializeproceduresinto
the objectlibraryof the BootstrapLoader. This libraryis namedBS1.LIB and
normallyresidesin the directory/RMX2tlfr/BOOT or /RMX86/BOOT. The
followingcommands
addtheobjectmodules
generated
ìn Stepl.
. LIB86
i R M X I I 8 0 8 6 L I B R A R I A NV 2 . O
Copyrlght 1980 INTEL CORPOMTION
*add newdrivl .obj to /rnx286/boot/bs1.1ib

3. Attach the directorv containingthe Bootstrap Loader configuration files as the current
default directorv:

- a t t a c h f 1 1 e /tntx296 /boot
-tsF^^l
^.1
^c
/rnx286 /boor , o ! L d L L ' E u n J

è.
,V.

4 . G e n e r a t ea n e w f i r s t s t a g eb y i n v o k i n gt h e S U t s M I l ' f i l e n a m e d B S I . C S D . C h a p t e r2
d e s c r i b e st h e d e t a i l so f t h e i n v o c a t i o n .A s a n e r a m p l e ,t h e f o l l o w i n gc o m m a n da s s u m e s
t h a t y o u h a v ec h o s e n4 0 0 0 0 Ha s t h e m e m o r yl o c a t i o no f t h e f i r s t s t a g ea n t l 4 3 0 0 0 Ha s
the memory location of the seconclstage.

Thisstepassumes
thatyou havemadeappropriate
changes
to the BSI.CSDfile as
describedearlierin this chapter.
The BSl.CSDfile placesthe resulting
locatedBootstrap
Loaderin the file BSl.
One thingto rememberaboutthis procedureis that because
you addedyour devicedriver
to the objectlibraryof the BootstnìpLoader,the devicedriveris automatically
inclucledin
all futureversionsof the first stagecreatedbv BS1.CSD.

B0otstraplr'ader

5--t:

CHAPTER
6
WRITING
A CUSTOMTHIRD.STAGE
DRIVER

6.1 INTRODUCTION
Ifyou plan to usethe BootstrapLoatlerto loadiRMX ll applications
from a devicefor
whichno Intel-supplied
third-stage
driverexists,you can makeone of two choices
dependent
uponthe sizeofyour loadlile:
'I'he
. For loadfilessmal-ter
than i3.lt)Kbytcs.usethe genericthird stage.
genericthird
stageusesthe first-stage
delice ciriversyou havealreadysupplied.Sincethe loadlile
fits in the I megabyteaclclress
spacesupportedin real mode,and first-stage
device
driversare ableto placethe loadfile,no needfor you to createnewdevicedriversexists
for the third stage.
.

For loadfileslargerthan 840Kbytes,usethe device-specifìc
third stage.The devicespecificthird stageusesnewclevicedriversthat you mustsupply.Thesedevicedrivers
run in protectedvirtualaddressmodeenablingthe loadfileto be placedusingthe full
16megabyterangeof addresses.

This chapteroutlinesthe procedurelirr writinga thirtl-stage
tlriver neededlbr the devicespecificthir
-->

( :fl:bs3enf.

inc )

(0,w0, device ini tmscgen, devicereadnsc gen, data_msc)
Ídevice
( 1 , w 1 , d e v l c e i n i t m sc g e n , d e v i c e r e a d n s c g e n , d a t a _ r n s c)
fdevice
( 8 ,wfO , devic e ini rnsc gen, devic ereadnscgen, data_msc )
ldevice
ldevlce (9,wfl,deviceinitmscgen,devlcereadmscgen,data_nsc)
(0, ba0, deviceinit264,
ldevice
devi ceread264 , data_264)
yz0, newdevicelnlt,
Idevlce(0,
newdeviceread, data_newdev)
ldevice(1,
yzl, newdevicelnft,
nevdevlceread,
data neudev)
;
;int1
Zlnt 3
;halt
%cpu_board (286/12)
i
lend

Figure6-l. Changingthe tsS3.A8ó
File

6.9 GENERATING
A NEWTHIRDSTAGECONTAINING
THE
CUSTOMDRIVER
Once you have written the custom devicedriver and changedthe Bodstrap Loader
Configuration files, you must genenrtea device-specificthird stagethat includesthe
custom devicedriver. To do so, perform the following steps. (These stepsassumethat you
u s e a n i R M X s y s t e mt o d e v e l o py o u r c o d e . )
l.

Compiìe or assemblethe third-stagedevice initialization and device read procedures.
For example,the following command assemblesdevice read and device initialization
proceduresthat reside in the file NEWDRIV3.A86.

Bootstrap[íader

ó-9

WRITING A CUSTOMTHIRD-STAGET)RIVER

- asn86 newdrív3. a86 obj ect (nesdrlv3 .obj )
i R l D { r r 8 0 8 6 / 8 7 / L 8 6 M A C R 0A S S E M B L E RV,2 . 0
copyrighr 1980, r981, 1982, INTELCoRP.
ASSEMBLYCOMPLETED,
NO ERRORSFOUND

z.

Insertthe objectmodulesfor the devicereadand the devìceinitializeprocedures
into the BootstrapLoaderobjectlibrary. This libraryis namedBS3.LIBand
normallyresidesin the directory/RMX8ó/BOOT or /RMX286/BOOT. The
followingcommandsadd the objectmodulesgeneratedin Step l.
- L I B S6
iRMX II 8086 LIBMRIAN V2.O
Copyright 1980 INTEL CORPORATÍON
*add newdriv3. obj to /rnx2B6/boot/bs3.1ib

3.

A t t a c h t h e d i r e c t o r yc o n t a i n i n gt h e B o o t s t r a pL o a d e r c o n f i g u r a t i o nf i l e sa s t h e
c u r r e n td e f a u l td i r e c t o n .

- attachflle
/rnx286 /t>oot ,
A

/rnx286 /boot
.fl-,.}la;

Aq

q

Generatea newthird sta_qe
by invokingthe SUBMIT file namedBS3.CSD.Chapter
3 describes
the detailsof invokingBS3.CSD.As an example,the followingcommand
namesthe new third stage"NEW3STG,"and locatesit at memorylocation08C000H.

This stepassumes
that you havemacleanyappropriatechanges
to the BS3.CSDfile
that are requiredto supporttrnyconfigurationfilesyou might havedesigned.

6-10

B(x)tstrap k)ader

CHAPTER
7
ERROR
HANDLING

7.1 INTRODUCTION
If the bootstraploadingprocessis unsuccessful,
the Bootstrap[-oaderìnitiateserrorhandlingprocedures.
Notification
ol lailuresoccurring
duringthe loadingprocess
clepends
on the configuration
of the firstrrnrlthirristl,qes.
Thischupterdescribes
the Bootstralt
Loader'serrorhandlingfncilities.

7.2 ANALYZING
BOOTSTRAP
LOADERFAILURES
T h e B o o t s t r a pL o a d e r c a n d i s p | r l n t e s s : t g east t h e t e r m i n . l w h e n b o o t s t r i ì pl o a c ì i n gi s
u n s u c c e s s f uA
l .s d i s c u s s c d
i n C ì h a p t c lr. r h c . I . C O N S O L h , . ; T ' E X T . a n d _ c É L I Sm
T acros
i n t h e B S E R R . A E ( fI i l c d c t e r m i n c* h c t h c r o r n o t n ì c s s i ì g eisr r e r i i s p l l y e r w
J hencrrors
o c c u rd u r i n g t h e f i r s t a n d s e c o l r ds t l r - s t sh.o w d e t i r i l c dt h e n t e s s a g easr e , a n d u n d e r w h a t
c i r c u m s t a n c etsh e v a r e d i s p l a y e d .A s C ì h l p t e r- l e x p l a i n st.h e t h i r d s t l q e a u t o m a t i c l l l y
d e t e r m i n e si f a m o n i t o r i s p r e s c n t .: r n c il l s o . d i s p l a v sc r r o r m e s s a g eas t t h e t e r m i n a l
r e g a r d Ì e sos f t h e f i r s t s t a g ec o n i i g u n t t i o n .
The following sectionsdescribewhrrt h;rp;rcnsu hen a bocttstraploutlinq error occursancì
how to analyzethe errclr. Therc arc two situationsdescribed:error anulvsiswhen nlessu_lllcs
a r e d i s p l a y e da, n d e r r o r a n a l v s i sw h e n n o r n e s s a q casr e d i s p l a y c c l .

7.2.1 ActionsTakenby the BootstrapLoaderAfteran Error
A f t e r r e s p o n d i n gt o a n e r r o r h y p u s h i n ga w o r d o n t o t h e s t i r c ka n d o p t i o n a l l yd i s p l a y i n ga
m e s s a g et ,h e B o o t s t r a pL o a d c r c i t h c r t r i e s a g a i n ,p a s s c sc o n t r o lt o a m o n i t o r ,o r h a l t s . l f
t h e e r r o r ì s d e t e c t e di n t h e f i r s t o r s c c o n ds t l r q et,h e a c t i o nt a k e n d e p e n d so n w h e t h e rv o u r
B S E R R . A t ì 6f i l e c o n t a i n sa n f i A ( l A I N . . ; l N T l , . - ; l N ' f l , o r _ c i H A L Tm a c r o . I f r h e e r r c l
i s d e t e c t e dì n t h e t h i r d s t a g e ,r h e a c r i o nr : r k e nd e p e n d so n w h e t h e ry o u r B S 3 . A 8 óo r
B C 3 . A 8 óf i l e c o n t a i n sa n c l l N ' f I , c i l N ' l ' ] . o r c . , i H A L Tm a c r o .
The only diffèrcnce betweenthe clcvicc-spccilicand generic third stagcsis that the generie
t h i r d s t a g en e v e rg e n e r a t e st h e c r r o r c o d c " D c v i c cN o t S u p p o r t e d "( r c l e r t o e r r o r c o d eJ . l
l a t e r i n t h i s c h a p t e r ) ,b e c a u s ct h e q e n e r i ct h i r d s t a g es u p p o r t sa l l t h e d e v i c e ss u p p o r t e dl r y
t h e f i r s t s t a g e . I f y o u i n v o k et h e t s o o r s t r t rLpo a d e rw i t h a d e v i c en a m e t h a t i s n o t
s u p p o r t e db y t h e f i r s t s t a q e ,t h e g c n c r i ct h i r d s t a g ew i l l n e v e re v e ng e t Ì o a d e di n t o m e m o r y .

Brxrtstrapl-oader

7-l

ERRORHANDLING

7.2.2 AnalyzingErrorsWith DisplayedErrorMessages
ToTEXÎ, or a/oLISTmacro,then the
If your BSERR.A86file containsthe o/cCONSOLE,
at the terminalwhenevera failureoccursin
BootstrapLoaderdisplaysan error message
consistsof one or two parts. The first part,
the bootstraploadingprocess.The message
is a numericalerror code. The secondpart is a shortdescription
whichis alwaysdisplayed,
of the error. Althoughthe secondpart is alwaysdisplayedfor third stageerrors,it is
displayedfor first and secondstageerrorsonly if the T,ITEXTor ToLISTmacrois included.
'l'he
the stageof
first digit indicates,if possible,
Eachnumericalerror codehastwo digits.
the bootstraploadingprocessin whichthe error occurred.The seconddigit distinguishes
the typesof errorsthat canoccurin a particularstage.Thereare four possiblevaluesfor
the first disit.
First Digit
0
I
2
3

Stage
Can'ttell
First
Second
Th irtl

messages,
and their causesand meaningsare as
cìisplay
The error codes,their abbreviated
folìows.
Error Code:
Description:

0l
I/O error

loading
iìt someundetcrmined
time duringthebootstrap
An I/O erroroccurred
process.
macrois inclucled.
the Bootstrap
[.oaderplacesa codein the highIf the ToCONSOLE
word
orderbyteof the
it pushesonto the stack,so that you canfurtherdiagnosethe
problem. This byte identifiesthe drivcr lìrr the devicethat producedthe error, as
follows:
Code

Driver

08H
l5H

20tì
MSC (with or
without2l8A)
218Aon CPU board
1861224A

18H
25H
5lH
54H
()EOH
other(in rangeA0H-DFtl)

1 1

25r
254 or 264
SCSI
driverfor your custom

BrntstrapLrader

ERRORTIANI)LING

Note that this devicecodeis oven'rittenwhenthe descriptionis printerJif the o/r'l'EXT
or ToLISTmacrois included.
The lastentry in the list of devicec.des assumes
that you havewritten:r devicedriver
for your deviceand haveidentifiedthe driverby somec.de in the inclicated
range-othervaluesarereserved
for Inteldrivers.For information
abouthowto incorporirtc
thiscodeintothe driver,seeCihapter
5.
Error Code:
Description:

11
Devicenot readv.

'fhe

specificdevice designatet{for bootstrap loatJingis not reatly. This error occurs
o n l y w h e n y o u r B S E R R . A I J ífT
i l e d o e sn o t c o n t a i nt h e f T A U T O m a c r o . T h c r c f o r c .
e i t h e r t h e o p e r a t o rh a s s p e c i f i e da p a r t i c u l a rd e v i c eo r o n l y o n e d c v i c ei s i n t h c
B o o t s t r a pL o a d e r ' st l e v i c el i s t , : r n t lt h e d e v i c ei s n o t r e a r j v .

Error Code:
Description:

12
D e v i c ed o e sn o t e x i s t . ( l f B S E R R . A I J 6
c u n t u i n st h e T c L I S Tn r a c r o ,
t h e d i s p l a yt h e n s h o w st h e l i s t o f k n o w n d e v i c e s . )

T h e d e v i c en a m e e n t e r e da t t h c c o n s o l eh a s n o c n t r y i n t h e B o o t s t r a pL o a d e r ' sd e v i c c
l i s t . T h i s e r r o r o c c u r so n l y w h e n I ' o u r t ì S E R R . A 8 ( lri l e c o n t a i n st h c g I M A N U A L
m a c r o a n d y o u e n t e r a d e v i c en a m e ,b u t t h e d e v i c en a m ey o u e n t e r i s n o t k n o w n t o t h c
B o o t s t r a pL o a d e r . A f t e r d i s p l a y i n gr h e m e s s a g et ,h e B o o t s t r a pL o a d e r t l i s p Ì a y st h e
n a m e so f t h e c l e v i c e isn i t s t l c v i c el i s t .

Error Code:
Description:

13
No deviccrcudv.

Noneof the devices
in the l]ootstrupl,oader's
devicelistarereadv.Thiserroroccurs
onlywhenyour BSERR.A8(r
lile contains
the 9óAUTOor oZMANUALmacroandvou
do not entera devicenameat theconsole.
Error Code:
Description:

2l
File not founrl.

T h e B o o t s t r a pL o a d e rc o u l d n o t f i n d t h e i n d i c u t e rfli l e o n t h e d c s i g n l r t e d
bootstriì[l
d e v i c e . T h i s i s t h e d e f a u l tf i l e i f n o p : ì t h n a m ew a s e n t e r e da t t h e c o n s o l e. O t h e n l i s e ,i t
i s t h e f i l e w h o s ep a t h n a m er l a s e n t e r e d . I n i R M X I I s y s t em s , t h e B o o t s t r a pL o a c ì e r
couldnot find the third staqc.

Brntstraphader

ERROR HANI)LING

Error Code:
Description:

22
Badchecksum.

or the
While tryingto load the targetfile (the applicationsystemfor iRMX I systems,
a checksumerror.
the BootstrapLoaderencountered
third stagefor iRMX II systems),
value
with eachrecordis a checksum
Eachfile consistsof severalrecords.Associatetl
that specifiesthe numericalsum(ignoringoverflows)of the bytesin the record When
valuefor eachrecordand
the BootstrapLoaderloaclsa file, it computesa checksum
for any
value. If thereis a discrepancy
comparesthat valueto the recordedchecksum
recorclin the file, it usuallymcansthrttone or more bytesof the file havebeen
insteadof continuingthe
corrupted,so the BootstrapLoirderreturnsthis message
loadingprocess.
Error Code:
Description:

23
endof lile.
Premature

recordsat the end of the
The BootstrapLoaderdid not fintl the requiredencl-of-file
or the thirdstagefor iRMX ll
1i)riRMX I systems,
system
targetfile (theapplication
systems).
Error Code:
Description:

24
No startaddresstìrunclin inputfile.

loadedthc targetfile but wasunableto transler
The BootstrapLoadersuccesslully
initiirlCSitndIP valueswerenot present.
controlto the file,because
Error Code:
Description:

3l
File not found.

bootstrap
device.
The thirdstagewasunableto finrlthe turqetfile on thedesignated
of the wayyou invokeclthe BootstrapLoader,the targetfile is expectedto
Regardless
havea .286extension.
Error Code:
Description:

32
Badchecksu
m.

a checksum
errorwhiletryingto loadthe targetfile.
The thirdstageencountered
Error Cotle:
Description:

33
Premature
endof file.

whileattempting
to loadthe
end-of-file
earlierthanexpected
The thirdstagereached
targetfile.

7-4

Boolstrap hadcr

ERRORIIANI)LING

Error Code:
Description:

34
Devicenot supportetJ.

The specifietldeviceis not supportedby the device-specific
third stage.That is,there
is no %DEVICE macroinvocationfor this devicein the BS3.Auófile.
Error Code:
Description:

35
Invalitlfile t1,pe.

The targetfile is not an 8028óbootloadable
file (usuallyproducedby BLD2lt6).

7.2.3 AnalyzingErrorsWithoutDisplayedErrorMessages
In mostcases,
you candetermìnethe causeof a BootstrapLoaderfailureby obsening the
behaviorof the Bootstrap
Loaderwhcnit failsto loadthe application
successlully.
You
'l'able
canthentakestepsto correctthe frriìure.
4-1Ìistssomecommonbehaviors
and
possiblecausesfor failure. The tableiìssunles
that the BootstrapLoaderis setup to halt if
it detects:ìn error. BeforehaÌting.the BootstrapLoaderplacesthe error codeinto the CX
reglsler.
Another possiblecauseoî îailure.the eltèctsof whichare unpredictlble,is that the device
controllerblock(asdeterminedby the device'swake-upatldress)canbe corrupted.To
avoidthis kind of failure,ensurethiìt neitherthe BootstrapLoadernor the targetfiJe
overlansthe devicecontrollerblock1ìrrthe device.

BrxrtstrapInader

7-5

ERRORIIANDLING

Table7-t. PostmolemAnallsisof BootstrapInader Failure
Behaviorof Loader

PossibleCeuses

B o o t s t r a pÌ o a d i n gf ai l s ì n
the first stage.

The indicateddeviceis not readyor is not
knownlo thc B(ìoî\trapLoader
An I/O error occurredduringthe first stage
(ABR) Autornatfc Boot Devlce Recognltlon IYes/No] Yes
(IBS) Incernal Buffer Size [O-OFFFFh]
0400H
(DDS)Default lO Job Dírectory size [5-3840]
50
(ITP) Internal EIOSTask's Priorities
131
l0-2551
( P M I ) E I O S P o o l M l n i m u mI O - O F F F F H I
0180H
( P M A ) E I O S P o o l M a x i r n u m[ 0 - 0 F F F F H ]
OFFFFFH
(CD) Configuration directory lL-45 charactersl
:SD:RMX286/C0NFIC

FigureA-1. EIOS ConfîgurationScreen(ABR)

A-2

Bootstrapl,0ad€r

AUTOMATICBOOT DEVICERECOGNITION

.

If you setABR to "yes,"the ICU displaysthe screenshownin FigureA-2. On this
screen,you mustspecirythe characteristics
of the systemdevicevia the DLN, DPN,
DFD, and DO prompts.For the DLN, DFD, and DO prompts,you mustnot supply
this informationlater in the "LogicalNames"screen.
With the DLN prompt,you canspecifothe logicalnamefor your systemdevice.If you
changethisvaluefrom the default(SD),you mustchangeall otherreferences
to the
:SD:logicalnameto the new nameyou speciff. The ExtendedI/O Systemcreatesthe
logicalnameyou speci! only if you setABR to "yes."
With the DPN prompt,you specifothe physicalnameof a devicethat you want to use
asyour systemdevicein casethe ExtendedI/O Systemcannotfind the name
RQBOOTED catalogued
in the root ohjectdirectory.This situationnormaÌlyoccurs
whenyou loadyour systemusinga meansotherthan the BootstrapLoader. For
example,if you transferthe OperatingSystemto your targetsystemvia the iSDM
monitor,there is no bootstrapcievice.In thiscase,the ExtendedI/O Systemusesthe
devicenamespecifiedin the DPN promptasthe systemdevrce.
With the DFD and D0 prompts,you setothercharacreristics
with the
associated
systemdevice.For mostcases,
the defaults
(DFD=NamedandDO=0000H)arethe
nreferredvalues.
(ABDR)
-- ->(DLN)
-- ->(DPN)
--->(DFD)
--->(DO)

Automatic Boot Device Recognitlon
D,rfault Systen Device Logfcal Nane Il-12 chars]
D,:fault Systen Devlce Physlcal Nane [1-12 chars]
D,:fault Systen Device Flle Driver \P/S/N/R)
D,rfault Syster0Devlce Osners ID [0-oFFFFH]

SD
rr0
Named
0000H

FigureA-2. ABI)R Screen(DLN, DPN, DFD, DO)
.

Duringconfigurationof the BasicI/O System,
you mustspecifydevice-unit
informationfor t re devicesyou wishto support.One of the promptson each"DeviceUnit lnformatior" screen(NAM) requiresyou to specifythe nameof the device-unit.
Another parameLer
(UN) requiresyou to specifythe unit number. (SeeFigureA-3 for
an exampleof thr:seprompts.)To enablethe ABDR lèatureto work correctly,you
mustassign
device-unit
nantesandunit numbers
thatmatchthe devicenamesandunit
numbersassignecl
duringBootstrapLoaclerconfiguration.

.

You assignthe Br)dstrapLoadcrdcvicenamesand unit numbersby includingor
motJifyingo/oDE\rICEmacrosin the first-stage
configurationfile (BSl.A8óor
BS1MB2.Atl6).With the lCU, you candefinedevice-unitnamesand unit numbers
other thanthosethat arevalid tìrr the BootstrapLoadcr. But eachBootstrapLoader
devicenamemusthavea corresponding
device-unitname,and the unit numbersmust
be the same.

BootstrapLoader

A-3

AUTOMATIC BOOT DEVICERECOGNITION

youmustformatyoursystem
deviceusingthe
BeforeyoucanusetheABDR feature,
Utilirt^
|RMXIl lnteractive
Configuratton
FORMAT command.The Guideto theExtended
devicefor usewiththecurrentrelease.
howto setupyoursystem
describes
(IMSC)Mass Storage Controller Device-Unit lnformation
( D E V ) D e v i c e N a m e[ 1 - 1 6 C h a r a c t e r s ]
--->(NAìl) Devlce-Unit Name [1-14 chars]
(PFD) Physical File Driver Required IYesrzNo]
( N F D ) N a m e dF i l e D r í v e r R e q u i r e d l Y e s / N o l
(SDD) Singlè or Double Density Disks ISingle/Double]
(SDS) Single or DoubIe Sided Disks ISingle/Double]
(EFI) 8 or 5 inch Disks l8l51
( S U F ) S t a n d a r d o r U n i f o r m F o r n a t l Sc a n d a r d / U n i f o r m l
(GRA) Cranularity
[ 0 - O F F F F ]H
( D S Z ) D e v i c e S i z e [ 0 - O F F F F F F F F] H
- -->(UN) Unlt Numberon this Devtce [O-OFFH]
( U I N ) U n i t I n f o N a r n el L - 1 6 C h a r s l
(RUT) Request Update Timeout l0-OFFFFHI
(NB) No. of Buffers Inonrarid : O/rand : 1-0FFFFH]
( C U P ) C o m r n oU
n p d a t e l T r u e / F a 1 se l
( M B ) M a x B u f f e r s [ 0 - O F F H]

YES
YES
DOUBLE
DOUBLE
8
STANDARD
0100H
07c500H
0000H
0096H
0008H
TRUE
OFFH

FigureA-3. Device-UnitInformationScreen(NAM and UN)

A-4

Burtstrap Loader

AUTOMATICBOOTDEVICERECOGNITIO\

4.4 HOWTOEXCLUDE
AUTOMATIC
BOOTDEVICE
RECOGNITION
To configurea systemthat doesnot includethe ABDR feature,setrhe ABR prompt in the
"EIOS"screento "no"(seeFigureA- 1). This disablesthe ABDR fèature.
Whenyou setABR to "no",the ICU will not displaythe ABDR screen.Therelbre,you
mustprovideinformationfor the DLN, DPN, DFD, and DO promptsas input to the
"LogicalNames"screen.FigureA-4 showsan exampleof this screenafter it hasbeenfilled
in to includea logicalnamefor the systemdevice.The underlinedinformationin Figurc
A-4 is the informationyou wouldsupplyif you set the ABR prompt in FigureA-l to "no"
andyou want the systemdeviceto be a flexiblediskettedrivecontrolledby an iSBC208
devicecontroller.
(LOCN)
Logical
[1]
[2]
[3]
--->[4]

Logical Narnes
Narne : Iog_narne,devlce_narne, fiÌe_driver,
owners-id
c
h
a
r
s
]
,
C
h
a
r
s
]
,
[1-12
[1-14
ÍP/S/N/R], [0-OFFFFH]
Logical Name : BB
0H
, BB
, PHYSICAL,
Logical
Name : STREAM
STREAI"f
STREAM
0H
,
,
,
Logical Name: LP
L
P
P
H
Y
S
I
C
A
L
,
0
H
,
,
Logical Nane = SD
0H
, AFO
, NAXED
,

Figure A-,1. Logical Names Screen

Bootstrap[-oader

A-5

APPENDIX
B
PROMMING
THEBOOTSTRAP
LOADER
ANDTHE|SDM"MONITOR

8.1 INTRODUCTION
chapter 2 statedthat one of the waysto preparethe BootstrapLoaderfor useis t'
combineit with one of the Intel monitorpackages
and burn the combinedcodeinto
PRoM. This appendirsuppÌiesintbrmationaboutcombiningthe BootstrapLoaderand
the |SDM monitor. The iSDM S;vern DebugMonitor lJser'sGuide alsocontains
informationaboutthis process.

8.2 INCORPORATING
THE|SDMMONITOR
This sectiongivesthe instructions
requiredto placethe first stageand the iSDM monitor
into nvo 27128EPROM devices.You canmodifythis exampleto suit your own purposes,
oryou canfollowit exactly.Referto the iPPSPROM PROGRAMMING SOF|WARE
USER'SGUIDE for detailedinlìrrmationaboutthe commands.The step-by-step
procedureis as follows:
1.

Enter the nameof the (version1.4or later)softwareusedwith the iUpp Universal
PROM Proerammer:

2.

Specifo
thatthe PROMsirrc2712R
EPROMdevices:

3.

Respondwith the number oî the ciesired
work file drive:
1
This saysthat drive :fl : * ill be useclfor creating temporary IPPS workfiles.

4.

lnitialize the file type to be loacled:

This saysthat the load file is an li0lló Object Module Format file (which the first
s t a g ea n d t h e i S D M m o n i t o r a r e ) .

Bff)tstrap k)ader

B-l

PROMMING THE BOOTSTRAPLOADI]RANI) TTIEiSD]\I' MONITOR

5.

bytesof the BSI (lirst stage)file are to go into
Specifythat the even-numbcred
hytesare to go into EPROM l. (The address
EPROM 0 and the odd-numbered
of the
FE400His an examplevaluewhichis compatiblewith mostconfigurations
the
highest
OFFF7FH,
iSDM R3.2monitor. The upperboundof the format rangeis
memorylocationthe BootstrapLoadercanusewhencombiningit with the iSDM
monitor. The upperboundalsoappliesto all previousversionsof the iSDM 86 or
Loadermemorymaps
iSDM 286monitors.Alwayscheckthe monitorandBootstrap
into the PROM devices.Also,be surethat the
beforeburningthe addresses
you usedo not collide.l'he numbers3, 2, and I matchIPPSpromptsfor
addresses
definingthe information.)

6.

bytes.Use the
Tell the softwareto progriìmonc EPROM with even-addressetl
the adilress
to use:
followingformulato determine
((addressof first stage)- (startaddressof EPROM ptk))12

=
a appears
whereyou mustentera carriage
return.Whenpressing
the
carriagereturn key,the text < CR > doesnot appeîr on the console.
Althoughall syntaxdiugramsshowuppercase
Ìerters(e.g.,VR), you canalsouse
lowercase
letters.
The manualrefersto the iRMX II Operating
Systemasthe opcrltingsyslem.
All numbersunlessotherwisestatedare assumedto be decimal.Hcxaclecimal
numbcrs
includethe "H" radixchlracter(for example,
OFFH).
Darker shadedtext appelrringovershadedtextwithin figuresor screendisplaysdoes
not actually
appearon the screen.The textwithinthe darkerbor supplies
information
that is helpfulin understancling
the figureor screendisplav.

lv

System Debugger

CONTENTS
CHAPTER1
iRMX@
II SYSTEMDEBUGGER
OVERVIEW

PAGE

CHAPTER2
SYSTEMDEBUGGER
COMMANDS

PAGE

SystemDebugger

CONTENTS

3
CHAPTER

PAGE

A
APPENDIX
COMMANDS
ISDM"MONITOR

PAGE

APPENDIX
B
D.MON386COMMANDS

PAGE

SAMPLE DEBUGSESSION

vl

SystemI)cbugger

CONTENTS

APPENDIX
B (continued)

PAGE

FIGURES
FIGURE
a 1
a a

1 À

z-)

SystemDebugger

vll

CONTENTS

PAGE

FIGURE
2-7
2-8
2-9
2-10
2-11
2-t2
2-13
2-14
2-16
2-ltì
2-19
2-20
2-21
2-22

2-26
2-28
2-29
2-30
2-ll
l--)I

2-34
2-35
3-1
3-2
3-3

Ylll

. . . . . . ....... . 2 -l u
. . . . . . . . . . . ..... .-2. .- 2 0
. . . . . . . . , . . . . . :. -. :. z. . . . . .
........
.....2-24
of VO Output................
F-ormat
. ..2-28
.-.........
Formatof VR Output.................
...
.....2-32
..'.
..
Formatof VS Output................
...............2-37
.......
Formatof VT Output:Job Display.........,......
................2-39
Task........
Non-lnterrupt
V
Formatof f Output:
. . . . . ... . . . 2 - 3 9
F o r m ao
t f V T O u t p u t :I n t c r r u pTt a s k. . . . . . . . . . . . . . . .
--..........2-42
Formatof VT Output: Miìill)oxwith No Qucue..
-----..
................2-42
...
..
..
.......
with
Task
Queue
Formatof VT Output: Mailbox
.. .. .. .. . .......... ...2-43
Formatof VT Output: MailboxwithOhjcctQueue.......
. .. .. .. . . .. ....l-13
riith
\'lcssirte
Data
!f
irillxrr
Queue..
of
VT
Output:
Format
. . .. .. . .. . ..2-'11
...... .. ........
u'ithNo QucLre
Formatof VT Output:Senrrrlthttre
.. . . . .. . .. .. .. .. .. . 2-.l-5
* ith Tlsk Queuc...
Formatof VT Output:Sennphore
.......
. ....2-1-5
Formatof V'f Output: Regionu'ithNo Queue..
w i t hT a s kQ u e u e . . . . . . . . .-. -. .- . . . . . . . . ...... . . . . 2 ' 4 6
F o r m a ot f V T O u t p u t :R c q i o n
()trject..................
........ .2-17
nsion
Formatof VT Output: Exte
. . . .... . . . . . 2 - ' 1 6
F o r m a ot f V ' f O u t p u t :S c g m c n t . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.. .. . . .....2-11Ì
OtrjectOther Than8IOS.......
Formatof VT (lutpLrt:Compositc
. 2-'19
Formatof VT Output: fillOSLJscrOltjcctCompc1site.............................
a li l eC o n n c c t i o n . . . . . . . . . . . ........ .......2 - 1 9
F o r m a ot f V T O u t p u t :B I O SP h y s i c F
.. . .. .. ..,...2--51
Stream
File
C-Ìtnnection..................
Formatof VT Output: IìlOS
..... 2--5'1
...........................
NunretjfrileConnection
Formatof VT Output: 13lOS
F o r m ao
t f V T O u t p u t :I ì l O SR c n r o t [eì i l eC o n n e c t i t l n . . . . . . . . . . . . . . .......2. -. .5. 6. . . . . . .
r l r o l o c oPl o r t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 - 5 1
F o r m ao
t f V T O u t p u t :S i g n : P
'l'ransport
Port......................-.............2-5ft
Prtttctcol
Formatof VT Output: Diìtir
Plo r t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 - 5 l J
F o r m ao
t f V T O u t p u t :D a t a l n t n s p o rPt r ( } t o c o
.................2-60
F o r m ao
t f V ' f O u t p u t :B u f l e rP o o l . . . . . . . . . . . . . . . . . . . .
................2-63
F o r m ao
t f V L JO u t p u.t. . . . . . . . . . . . . . .
(lnit)....................
................3'2
E x a m pefP L / M - 2 8 6A p p l i c l t i o n
................3-5
A p p l i c : r t r o( A
nl p h o n s e ) . . . . . . . . .
ExamplP
e L/M-286
(
C
l
a
s
t
o
n
)
.
.
.
.
.
.
.
.
.
.
.
.
.
......,,........3-7
P L . I M - 2 8A6p p l i c a t i o n
Example
....................... l - 12
MOVW in Gaston(ìrdc.....

F o r m ao
t f V J O u t p u.t. . . . . . . . . . . . . . .
i R M X @I l J o bT r e e . . . . . . . . . . . . .

System l)ebugger

CHAPTER1

IRMX@
II SYSTEMD E B U G G E R

OVERVIEW

1.1 INTRODUCING
THE|RMX@
II SYSTEM
DEBUGGER
Whenyou developapplication
svstems,
you needdebugging
capabilities
on your
development
system.In additionto the iSDM SystemDebugMonitoror the D-MoN3Err
Monitor,Intelprovides
rheiRMX II SystemDebugger
(SDB)îor debugging
your
iRMX I I-based
application
system.

NOTE
T h e r e m a i n d e ro f t h i s m a n u a lu s e st h c t e r m ' , m o n i t o r 't,o r e l e r t o b o t h t h e
i S D M S y s t e mD e b u g M o n i r o r a n d r h e D - M O N 3 l ì ( rM o n r r o r .
T h e S y s t e mD e b u g g e ri s a m e m o r y - r e s i d e netx t e n s i o no f t h e m o n i t o r ; t h e r e f o r c ,v o u m u s t
have the monitor if you have thc SystentDebuggerconfi{ured into your system. The
monitor provides code disassembly,executionbreakpoinrs,memory cJisplay,
and pro_qran.l
d o w n l o a dc a p a h i Ì i t i e sT
. h e S y s t e n D e b u q q e re x t e n d st h e m o n i t o r ' sd i s a s s e m b lfyu n i t i o n s
b y i n t e r p r e t i n gi R M X I I c a l l s ,d a t a s t r u c t u r c sa, n d s t a c k s .
M o n i t o r a n d S y s t e mD e b u g g e rc o n r m a n d sa r e e n t c r e c i n r c s p o n s et o t h e i s D M M o n i t o r ' s
protected-modp
e r o m p r ( . . ) o r r h e D - M O N l 8 ( r M o n i r o r ' sp r o m p t ( >
). Whenyou invoke
t h e m . n i t o r , b o t h t h e o p e r a t i n gs y s t c ma n d y . u r a p p l i c a t i . ns v s t e ma r e l i . z e n . A s v o u u s e
m o n l t o r c o m m a n d st o s e t l t r e a k p o i n t sw h i l e t h e a p p l i c a t i o nc o d e i s e x e c u t e dy, o u c a n
inspect systemobjects,changesystcmcall parametersand regisrers,and test chrrnees.
R e f e r t o A p p e n d i xA f o r m o r e i n f o r m a t i o no n i S D M M . n i t . r c o m m a n d sa n d A p p c n d i x B
tor D-MON3tì6Monitor cornmanos.

SystemDebugger

l-I

iRI\TX@II SYSTEI\Í I)EBTJGGEROVERVIEW

DEBUGGER
THESYSTEM
1.2 SUPPORTING
T o u s e t h e S y s t e mD e b u g g e ry, o u m u s t h a v eo n e o f t h e f o l l o w i n gh a r d w a r ec o n f i g u r a t i o n s
w i t h a l l t h e r e q u i r e ds u p p o r th a r d w a r e :
o

An Intel MicrocomPuter ctlnnectedto an 8021ì6-or 386-basedboard

.

A terminal connecteddirectly to lrn 802iì(r-or 386-bltscdlrortrtl

.

or 386-basedlxlard
An Intellec@Development Svstenìconnectedto an E1)21ì(r-

I n a d c l i t i o nt o t h e a b o v eh a r d w a r e v, o u m u s t h a v eb o t h o f t h e f o l l o w i n g :
o

T h e E , P R O Mp o r t i o n o 1 t h e i S D M S y s t e mD e b u g M o n i t o r o r t h e D - M O N 3 f ì 6 M o n i t o r

.

A t l e a s tt h e m i n i m a l c o n f i s u r a t i o no f t h e i R M X I I N u c l e u s

DEBUGGER
THESYSTEM
1.3 CONFIGURING
t h r o u g ht h e
Y o u c a n n o tu s e t h e S y s t e mD e b u q q e ru n t i l y t t t ti n c l u t l ei t i n v o u r s 1 ' s t e m
'fo
t
h
e
S
y
s
t
e
m
D
e
b
u
g
g
e r b, e g i nb y
i
n
c
l
u
d
e
I n t e r a c t i v eC o n f i g u r a t i o nU t i l i t i , ( I C L J ) .
i n v o k i n gt h e I C U . N e x t ,p r o v i d et h e f o l l o w i n gi n l b r m a t i o nt h e I ( ì t J r e q u i r e st o c o n f i g u r e
the SystemDebuggcr:
1 . I n t h e I C U ' s " S u b - S y s t e m s c" r e c n ,r e s p o n d" y e s "t o t h e S D B p r o m p t .
2 . I n t h e I C U ' s " S y s t e mD e b u q q e r s" c r e c n ,s e t t h e i n t e r r u p tl c v e lv o u w a n t t o u s e t o
i n v o k et h e m o n i t o r m a n u a l l y( b v p r e s s i n qa h a r d w a r ei n t e r r u p tb u t t o n ) .
T o u s e t h e N o n - M a s k a b l eI n t e r r u p t( N M I ) f o r d e b u g - q i ntgl e v i c ed r i v e r s ,s e et h e
Ertended |RMX II Hardn'are and Softv'are lrtstalloliott CLtitle.
F o r d e t a i l e di n f o r m a t i o no n c o n f i g u r i n tt h c S y s t e mD e h u g g c r c, o n s u l tt h e E x t e n f u d
iRlvIX II Interactive Confrguration l.ltilif Rtftrotcc ltlartuttl.

DEBUGGER
THESYSTEM
1.4 INVOKING
Y o u m u s t e n t e r t h e m o n i t o r t o u s e t h e S v s t e mD e b u [ q e r . Y o u c a n i n v o k et h e m o n i t o r i n
tnree ways:
l.

U s e a h a r d w a r es w i t c hp h y s i c a l l yc o n n e c t e dt o t h e i n t e r r u p tl c v e ly o u s p e c i f i e dd u r i n g
s v s t e m s, a v e st h e s y s t e m ' s
c o n f i g u r a t i o n .A c t i v a t i n gt h i s s u ' i t c hh a l t st h e r r p p l i c a t i o n
t
o
t
h
c
n
r
o
n
i
t
o
r
.
c o n t e n t s a, n t l p a s s e sc o n t r o l

2 . U s e t h e H u m a n l n t c r l ì r c cD E t s U G c o m m r t n d .D E B U C l o a t l sy ' o u rs p e c i f i e d
a p p l i c a t i o np r o g r i ì mi n t o m a i n m e m o r va n d t r i ì n s l c r sc o l ì t r o lt o t h e m o n i t o r .

l-2

System I)cbugger

iRMX@II SYSTE]\Í
DEBUGGERO!'ERVIElV

3. Usethe Bootstrap
LoaderDEtsLJG
switch.Whenyou specifyrhisswitch,the monitor
comesup afterthe systemis loucled
but befìtrethe systemstartsrunning.Thc CS:lP
pointsto the firstinstruction
of the application
system.At thispointthe systemhusnot
beeninitialized;
therefctre,
youcanrun onlymonitrtrcctmmands.
Usingthe MAP2IJ(I
output,youcanidentilywherevouwantto insertbreakpoints.
(For moreinfitlnlttion
on BIND, MAP, and OVL, sec theAI,X 286UtilitiesU.ser's
Guitlefttr |RMX l/.$urlnr.r).
Usethe breakaddress
parameter
in the monitor'sCO (G) commandto setbreakpoints
in the application
systcmcocle.Whenyouenter"G ", thc systemstartsanLiis
initialized.The monitoris invokedwhenthe CS:lPreaches
the breakpoints.
Iìor more
informationon bootingwith DE,BUG,consultrheExtended
|RMX II BootstntpLoudcr
Reference
Manual.
Whenyou invokethe monitor,the application
systemstopsrunningitndall systerlactivir\
freezes.The appropriate
promptitppears
(the".."for the iSDM Monitoror thc " > " for the
D-MON3tl6Monitor),anciyoucunbcqinenteringSystent
Debuggcr
and moniror
commands
to exirmine
system
objccts.

1.5 USINGTHESYSTEM
DEBUGGER
T h e S y s t e mD e b u g g e ru s c sn t o n i t o rJ l r o c e d u r ctso p a r s et h e c o m m a n dl i n o a n d t o o u t l t u t
l o t h e c o n s o l e t; h e r e f o r e y, o u r u n b o t h S y s t e mD e b u g g c ru n t l m o n i t o r c o m m : r n c lfsì - o r nt h e
monitor. The syntaxfor SystemDebugter commundsis a "V" or "v" followed bv another
l e t t e r ,a n o p t i o n a ls p a c e u
, n d u n o p t i o n i r lp a n ì m e t e r .
T h e t w e l v eS y s t e mD e b u e e e rc o m m i r n d s( d e s c r i b e di n C h a p t c r2 ) f a l l i n t o t h r e e c i r t e q o r i c s :
.

E i g h t c o m m a n d se x t e n dt h c n r o n i t o rm c m o r y d i s p l a yf u n c t i o n sb y d i s p l a y i n gi l ì M X l l
d a t a s t r u c t u r e sa n d o t ! c c t s .

.

T h r e e c o m m a n d se x t c n dt h c n t o n i t r t rd i s a s s c m b lfyu n c t i o n sb v r c c o g n i z i n ga n d
d i s p l a y i n gi R M X I I c a l s .

.

A h e l p c o m m a n dp r o v i d e sa s h o r td e s c r i p t i o no f a l l t h e c o n ì r n a n c l s .

A l l c o m m a n d sc i t h e r d i s p l a yi n l ì r r m a t i o na s h e x a d e c i m anl u m b e r so r t r y t o i n t c r l ) r e tt l ì e
i n f o r m a t i o n . I f t h e S y s t e mD e b u u c r c l ì n n o ti n t e r p r e tt h e i n f o r m a t i o n ,i t d ì s p l a y st h e
actual heradecimalvalue, followed by tu,o question marks.
i R M X I I p r o v i d e st w o f e a t u r e st h a t en a b l ev o u t o l e a v et h e m o n i t o r w i t h o u t r i j s c t t i n gy o u r
s y s t e m :w a r m - s t a r ta n d C l - l - r e s t a r t .T h e \ ì a r m - s t a r tl e a t u r er e i n i t i a l ì z e tsh e s y s t e n a
t nd
j
r e t u r n sc o n t r o lt o t h e H u m a n I n t c r f a c e .T h e C l - l - r e s t a r tf e a t u r ed e l e t e st h e c u r r e n t o t r
t h e n r e t u r n sc o n t r o lt o t h e f l o m m l r n t l[ - i n e I n t e r p r e t e r . R e f e r t o C h a p t e r2 f o r n t o r e
information on these tèatures.

SystemDebugger

l --l

iRMX@ II SYSTENI I)EBUGGER OVERVIEIV

TOYOURAPPLICATION
1.6 RETURNING
your applicationsystemwith the SystemDebugger,or if
Whenyou havefinisheddebugging
code,usethe monitor'sGO
you madeto the apPlication
youwantto testthechanges
of the application.
command(G) to resumeexecution

l-4

Systeml)ebugger

CHAPTER2
SYSTEMDEBUGGER
COMMANDS

2.1 INTRODUCTION
T h i s c h a p t e rc o n t a i n sd e t a i l e dd e s c r ì p t i o nos f t h e i R M X I I S y s t e mD e b u g g e rc o n t n l r n d s .
C o m m a n d sa p p e a ri n a l p h a b e t i c aol r c l c r ,w i t h t h e î i r s t r r c u r r e n c eo f e u c hc o m m a n d
a p p e a r i n gi n
a t t h e t o p o I t h e p a g e . A d i r e c t o r yo f t h e c o m m a n d s d, i v i c l e tiln t o
l u n c t i o n a lg r o u p s ,p r e c e d e st h e c o m m r n d d e s c r i p t i o n s .
T h i s e h a p t e ru s e st h e [ o l l o u i n - [\ . ( , n \ ( . n t i ( ì n \ :
.

" C S : l P "i s t h e C o d e S e g m c n t : l n s t r u icot n P o i n t e r - - T h cp o i n t c r t o t h e i n s t r u c t i o nt h l t
w o u l d b e e x e c u t e dn e x t i î t h c r r p p l i c a t i o sn v s t e n\ìr ' c r er u n n i n g . I f v o u s p e c i f v i r nI p
v a l u e( o n e f b u r - d i g i th e x i r c i e c i r r rnrul m b e r )b u t n o t i ì C S v l r l u e ,t h e S y s t e n ìD e b u q , q c r
u s e st h e c u r r e n tC S a s t h c d e l ì t u l tb a s e .

o

" S S : S Pi"s t h e S t a c kS e g m e n t : s l r r cPko i n t e r - - ' [ ' hpeo i n t e r t o t h e c u r r e n ts t a c kl o c a t i o n .

.

E n t e r i n gz e r o ( 0 ) a s a v a l u c l i r r a n o p t i o n a lp i r r i t n ì e t c irs t h e s a n r ea s o m i t t i n gt h e
p a r a m e t e r ;t h e d e f ì r u l tv a Ì u co 1t h c p i r r i r m e t e irs u s c d .

.

A l l t e r m i n a le x a m p l e sa s s u n l et h r ì tt h e i S D M S y s t e mD e b u q M o n i t o r i s b e i n qu s e c l .
T h u s ,e x a m p l ei n p u t l i n es s h o u ,r h e i S D l v lm o n i t o r p r o m p r ( . . ) .

2.2 CHECKINGVALIDITYOF TOKENS
M a n v S y s t e mD e b u g - { ecr o m m u n d su s c i R N I X I I t o k c n sî s p l r a m e t e r so r d i s p l a yt o k e n si r s
p a r t o f t h e c o m m a n do u t p u t . T h e i l L M X I I O p e r a t i n gS v s t e n m
t i r i n t a i n st o k en s i n r l o u b l v
Ì i n k e d l i s t s . W h e n y o u e n t e r u t o k e n i t s u p l r u l m e t e r t, h e S v s t e mD c b u g g e rc h c c k st h e
v a l i d i t yo f t h e t o k e n b y l o o k i n ga t t h e t ì r r u a r c ri n d b a c k w a r dl i n k s o f t h e t o k e n .
I f o n e o f t h e l i n k s i s b a d ,t h c S v s t e n rl ) e b u g g c rg e n e n ì t e sÍ ì n e r r o r m e s s a g ea l o n gw i t h t h e
s t a n d a r dc o m m a n do u t p u t . T h e t o k e n v o u e n t e r a s a p a r a n l e t c ra l w ; r y sa p p c a r sl t s t h e
c e n t e rv a l u e i n e a c hl i n e o f t h e t o k c n t l i s p l a l ' .T h e d i s p l a y sf o r f ì r r u , a r c al -n d b l c k u a l d - l i n k
erroÍs are as lbllows:

Forwardlink ERROR: .1I I l-->.lF.E5

. 1 l l I < - - . + t r l J ->54- -1 5 5

'IFFFF<--,ll-s5

tsackward
lìnk E,RROR:4lll-->110F'l

> 4 l5-5
4 I I I < --4E85--

4El.ì-5<--.1155

SystemDebugger

SystemDebuggerCommands

Arrows to the left indicatebackwardlinks; arrowsto the right indicateforward links. A
questionmark beforeor aftera valuesignifiesa forwardor backwardlink error,
respectively.
the tokeninvalid.A tokenmay also
Ifboth linksare bad,the SystemDebuggerconsiders
be invalid if it belongsto an objectin the deletionprocess,if an incorrecttoken is entered
as a parameterin a systemcall,or if a deletedor unusedtokenis enteredasa parameter.
When the token is invalid,the SystemDebuggerdisplaysthe followingmessage:
***

lNvALlD ToKEN ***

A link error indicatesthat iRMX II datastructureshavebeencorrupted.The most
commonreasonfor this problem is a task might haveaccidentallywritten over part of the
systemdatastructures.However,the iRMX II protectionmodefeatureprotectsagainst
Data structurecorruptioncan alsooccurif
suchoverwritingundernormalcircumstances.
you are usingthe Non-Maskable
Interrupt(NMI). The Nucleusmay havebeen
interruptedwhile it wassettingup the links. (The NMI is a hardwareinterrupt. For more
Manual or the 8038óHardware
information on the NMI, seethe 80286HardwareReference
Reference
Manual.)

2.3 PICTORIAL
REPRESENTATION
OF SYNTAX
consists
deviceto illustratecommandsyntax.The schematic
This chapterusesa schematic
ofwhat lookslike an aerialviewof a modelraiìroad,with syntacticelements(appearingin
circles)scatteredalongthe track. To constructa valid command,imaginethat a train
entersthe systemat the far left, travelsfrom left to right only (backingup is not allowed),
choosesone branchat eachfork, and finallydepartsat the far right. The command
generatedconsistsof the syntacticelementsit encounters
on its journey. The following
schematic
showstwo valid seouences:
AC and BC.

2-2

SystemDebugger

SystemDebuggerCommands

Theseschematics
do not showspacesaselements,
but you may includeone or more spaces
betweenthe commandand parameter.For example,eventhoughthe syntaxfor VR is as
follows:

sagmenl
token

The followingcommandis valicl:

The spacebetween"VR" and "xxxx"is optional.

2.4 LEAVING
THEMONITOR
Two features
enableyou to leavethe monitorwithoutresetting
yoursystem:wrrm-strrrt
andCLI-restart.
The warm-startfeatureis the processof startinga systcmwithoutreloadingit from
secondary
storage.Warm-startrcinitializesthe system,that is,it beginsexecutingthe
applicationsystemat the samepoint whcrethe BootstrapLoaderpasses
controlto the
system.
To warm-start
the system
from the iSDM monitor,enterthe followingcommand:

To warm-startthe systemfrom the D-MON3lì6monitor,enterthe followingcommancl:

If no systemcodeor datasegments
werecorrupted,the systemreiniîializes.If segment
corruptionhasoccurred,the applicationsystemwill not run; you mustrebootthe system.
If yoursystemcontains
a CommandLine Interpreter,
andrunningyourapplication
programcausesan exceptionthat brcaksto tht: monitor(for example,a General
Protectionexception),
enterthe followingcommlìndto CLI-restartthe systemfrom the
iSDM monitor:

SystemDebugger

2-3

SysternDebuggerCommands

Enter the following command to CLI-restart the systemfrom the D-MON3lì6 monittlr:

These commandscausesthe systemto attempt to delete the job tree of the running task. If
the running task is part of the application'sjob (not a subsystemtask running on behalf of
thejob) control returns to the Command Line Interpreter. Otherwise,you must reboot the
system.

2.5 COMMAND
DIRECTORY
Page

Command
DISPI-AYINGiRMX II DATA STRUCTURES
VB--Display

DUIB lnformation.

. ..

VD--Displaya Job's Object Directorv.

. 2- 1 2

VF--Display

Nunber of

.2-14

VJ - -Display

Job Hierarchy

. 2 -r 8

VK--Display

Ready and Sleeping Tasks..

.2-22

VO--Display

Objects

.2-24

V R -- D i s p l a y

1/O Request/Result

VT- -Display

iRMX II

Free Slots

in

a Job.
Segment

.2-21
.2-36

Object.

RECOGNIZINGAND DISPLAYINGiRMX II SYSTEMCALTS
VC--Display

Systern Call

..2-9

Information.

V S - - D i s p l a yS t a c k a n d S y s t e mC a l I I n f o r m a t i o n . . . . . . .
W- -Display

System Calls

in

a Task's

Stack. .

.2-62

OTHER COMMANDS
V H -- D i s p l a y

2-4

Help lnformation.

. ..

.2-16

SystemDebugger

The VB commanddisplaysthe DUIB informationfor the specifiedphysicaldevice.For
additional
information
aboutDevice-Unit
Information
Blocks(DUlBs),referto Chapter
of the ExtendediRMX II DeviceDivers User'sGuùIe.

PARAMETER
Physicaldevice

The nameof the physicaldevicefor whichyou want to viewthe
DUIB intbrmation
(e.g.,WMF0). Thisdevicemustbe partot
the svstcmconfisuration.

DESCRIPTION
The VB command displaysthe DLJIB information fbr the specifiedphysicaldevice. Figure
2 - 1 i l l u s t r a t e st h e o u t n u t f r o m t h e V B c o m m a n d .

Device name:
Func ts :
Dev$gran
D e v $s i z e
Uni t
Device$info$p
UpdateStimeout
Priority
Init$io
Queue$io

(phys ical

d e v i c e name>

xx

DUIB addre s s

XXXX ; XXXX

XXXX

MewAhlffar<

xx

XXXXXXXX

Device
Dev$unit

XX

XXXX : XXXX

XXXX
XXXX : XXXX

XXXX

N"m(h"f€arc

XXXX

XX

Fixe d$upda te
Fini sh$ io
C a n ce 1 $ i o

xx

xxxx
xxxx

Flags:
D e n si t y
Size

xx

File driver:
Physical

xxxx

: xxxx
: xxxx

XXXXXX
X

XXXX

Valid
Si d e s
Format
Named
Stream

XXXX : XXXX
XXXX : XXXX

xxxxxx
xxxxxxxx
xxxx
XXXXX

Figure2-1. Fr)rmaltrf VB Output.

SystemDebugger

7-1

VB--DISPLAYDUIB INFORMATION

The fields displayedin Figure 2- I are as lbllows:

2-6

Functs

A BYTE used to specifythe [/O function validity for this
devrce-unrt.

DUIB address

T h e s t a r t i n ga d d r e s si n m e m o r yo f t h e s p e c i f i e dD U I B .

Dev$gran

A wORD that specifiesthe devicegranularity, in bytes. This
parameter appliesto random accessdevices,and to some
common devices,such as tape drives. It specifiestht: minimum
numtrer of bytesof information that the device reads or writes in
o n c O P c iIl l i (ì n .

Max$buffers

The muxinrum number of buffers that the EIOS can allocatefìrr
a c o n n e c t i o nt o t h i s d e v i c e - u n iw
t h e n t h e c o n n e c t i o ni s o p e n e d
by a call to S$OPE,N.

Dev$size

The number of bytesof information that the device-unitcan
store.

Device

The number of the devicewith which this device-unitis
associated.

Unit

T h e n u m b e ro f t h i s d e v i c e - u n i tw, h i c h d i s t i n g u i s h etsh i s u n i t
f r o m o t h e r u n i t so f t h e d e v i c e ,

Dev$unit

T h e d e v i c e - u n int u m b e r ,w h i c h d i s t i n g u i s h etsh i s c l e v i c e - u n i t
f r o m o t h e r d e v i c e - u n i tisn t h e h a r d w a r es y s t e m .

Device$info$p

A P O I N T E R t o a s t r u c t u r et h î t c o n t a i n sa d d i t i o n a li n f o r m a t i o n
a h o u tt h e d e v i c e .T h e c o m m o n ,r a n d o m ,a n d t e r m i n a ld e v i c c
drivers recluirea Device lnformation Table in a specifictormat,
for each device.

Unit$info$p

A P O I N T E . Rt o a s t r u c t u r et h a t c o n t a i n sa d t l i t ì o n a il n f o r m a t i o n
about the unit. R:rnrlomaccess,common rlevice(such as tape
t J r i v e s )a, n c it e r m i n a lc l e v i c ed r i v e r sr e r l u i r et h i s U n i t
Inlbrmation Table in a specificlbrmat.

Update$timeout

T h e n u m t r e ro f s y s t e mt i m e u n i t st h a t t h e I / O S y s t e mm u s t w r i t
before writing l partial sector,after processinga wriîe request
for a disk device.

Num$buffers

The number of buffers of device-granula
rity size that the I/O
SystenìalÌocates.

Priority

The priority of the I/O Systemservicetask for the device.

Fixed$update

Indicateswhether the fixed update option was selectedfor this
device-unitwhen the application systemwas configured.

Init$io

T h e a d d r e s so f t h e I n i t i a l i z eI / O p r o c e d u r ea s s o c i a t c w
d ith this
unrt

Systen I)ebugger

vB--DISPL\Y DUIBIn*FORNIATI
ON

Finish$io

The addressof the FinishI/O procedureassociated
with this
unit.

Queue$io

The addressof the QueueI/O procedureassociatetl
with this
unit.

Cancel$io

The adciress
of the CancelI/O procedureassociated
with this
unlt.

Flags

Specifiesthe characteristics
of diskettedevices.

Valid

whetherthe Flagsfieldis "Valid"or "NotValid"for
Indicates
t his tleriee.

Density

The densityof the device.If the flagsfor this DUIB are invalicl,
this field is marked"N/A".

Sides

The numberof mediasidesthatthe devicecanwriteto. Ifthe
flagslor thìsDUIB areinvalid,thisfieldis marked"N/A".
'l'he
physicalsizeof the clevice(-5l/4-inch or S-inch).If the
flagsfor this DUIB are invalid,this lìeld is marked"N/A",

Size
Format

Indicates
whethertrack0 of a diskis to be formattedasa
STANDARD diskette( 12ttbytes/sector)
or asa UNTFORM
diskette(all sectorsformattedasspecified).This parameter
appliesonly to flexiblediskettes.Hard disksare alwrys
speciiied
asUNIFORM. lf the flagsfor thisDUIB are invalid,
thisfieldis marked"N/A".

Filedriver:

A WORD that indicates
the BIOSfile driverto whichthis
connection
is attached.

Named

Indicateswhetherthis deviceis configuredto usethe Namedfile
driver.

Physical

lndicateswhetherthis deviceis configuredto usethe Physical
file driver.

Stream

Indicates
whetherthisdeviceis configured
to usethe Streamfile
driver.

SystemDebugger

)-1

VB--DISPÍAYDUIB INFORMATION

ERRORMESSAGES
SyntaxError

An error wasmadewhenenteringthe command.The correct
syntaxis VB . Any other syntaxproducesthis
messaSe.

VB not supported

VB couldn'tfind the bytebucketDUIB entry in the BIOS code
segment.If no DUIB entryfor the bytebucketexists,VB ìs
unsupported.
If the BIOS hasnot beenconfiguredinto the system,or if the
BIOS codesegmenthasexecute-only
attributes,this error
message
is returned.

DUIB not found

2-8

VB returnsthis error message
undertheseconditions:
1.

The DUIB is not configuredinto the system.

2.

The DUIB entryfor the specifieddeviceis locatedbetbre
the b)'tebucketDUIB entry.

3.

The usermadean error while enteringthe physicaldevice
name.

SystemI)ebugger

The VC commandchecksto seeif a CALL instructionis an iRMX II systemcall. The VC
commandidentifiessystemcallsfor all iRMX II OperatingSystemlayers.

PARAMETER
polnrer

The addressof the CALL instructionto be checked.This
parametercantreanyvalid monitoraddress(two four-digit
hexadecimal
numbersseparated
hy a colon).
If you are usingthe iSDM monitorand you do not supplya
pointer(or you specifo0), this parameterdefaultsto the current
CS:lP. If you specifyan IP value(onefour-digithexadecimal
number)but not a CSvalue,the SystemDebuggerusesthe
currentCS asthe defaultbase.
lf you are usingthe D-MON38ómonitor andyou specilythe
addresswith an offsetvaluewith no basevalue,the parameter
defaults
to thecurrentCS:lPvalue.

DESCRIPTION
lf the CALL instruction
is an iRMX II system
call,the VC commanddisplays
information
aboutthe CALL instructionasshownin Fieure2-2.

gate /INNNN
(subsysten) system call

F i g u r e2 - 2 . F o r m a f o f V C O u l p u t

The fieldsin Figure2-2are aslbllows:
gate#NNNN

SystemDebugger

with the iRMX II systemcall at the
The gatenumberassociated
addressspecifiedin the command.

2-9

VC--DISPI,AY SYSTE]\Í CALL INFORMATION

(subsystem)

to the
The iRMX ll OperatingSystemlayercorresponding
systemcall.

systemcall

The nameof the iRMX II systemcall.

NOTE
The SystemDebugger usesthe gate number to determine whether the CALL
instruction representsa systemcall. Sincethe SystemDebugger does not
disassemblethe code, but rather examinesa byte value at a particular offset
from the CALL instruction,in rare casesa non-systemcall can be displayedas
an iRMX II systemcall. However, the SystemDebuggerdoes recognizeand
d i s p l a ya l l i R M X I I s y s t e mc a l l s .
ERROR MESSAGES

SyntaxError

An erftrrwasmadein entering the command.

Not a systemCALL

The parameterspecifiedpointsto a CALL instructior.
that is not an iRMX II system
call.

Not a CALL instruction

The CS:lPspecifieddoesnot point to any kìnd of call
instruction.

EXAMPLES
you disassembled
Suppose
the following
codeusingthe iSDM monitor'sDisplayMemory
(DX) command:

1 8 A 0 : 0 0 6 D5 0
1 8 A 0 : 0 0 6 8E S A D I E
1 8 A 0 : 0 0 7 1E 8 D D 0 3
1 8 A 0 : 0 0 7 48 8 0 0 0 0
1 8 A 0 : 0 0 7 75 0
18A0:0078 8D060600
1 8 A 0 : 0 0 7 C1 E
1 8 A 0 : 0 0 7 D5 0
1 8 A 0 : 0 0 7 EE 8 4 1 l E
1 8 A 0 : 0 0 8 1A 3 0 0 0 0

PUSH
CALL
CALL
MOV
PUSH
LEA
PUSH
PUSH
CALL
Mov

AX
A : lFlE
A : 0451
AX,O
A-\
A - \ , l n o R DP R T 0 0 6
DS
Ax
A - LEC2
w o R DP T R 0 0 0 0 H , A x

;$+7856
1$+992

;$+7748

If you usethe VC commandon theCALL instruction
at address1tìA0:0t)(rE
by entering
the followingcommand:

2-r0

SystenrI)ebugger

VC..DISPI.AYSYSTEMCALL INFORMATION

The SystemDebuggerdisplaysthe followinginlbrmation:

gate 110468
(Nucleus) set exception handlèr

Gatenumber0468corresponds
to an RQ$SET$EXCEPTION$HANDLER
systemcall,
whichis a Nucleuscall.
Now,supposeyou want to seeif the CALL instructionat 18A0:0071
is a systemcall. Enter
the followinscommand:

The SystemDebuggerresponds
with the following:
Not a systen

CALL

Finally, ifyou use the VC command on the instruction at l840:0074, the SystemDebugger
respondswith the following:
Not a CALL instruction

SystemDebugger

2-tl

The VD commanddisplaysa job's objectdirectory.

PARAMETER

The tokenfor thejob havingthe objectdìrectoryyou want
displayed.To obtainthejob token,usethe VJ command.

job token

DESCRIPTION
If you specifieda validjob token,the SystemDebuggerdisplaysthejob's objectdirectory,
asshownin Fisure2-3.

Directory
narnel
narne2

s\ze:

xxxx

Entries used:

tokenl
: ^ ^ l - LdJ^r

. . - { * i - !drLIiÈt

token2...tokeni

.

iok.r,i
namek

tokenk

namen

cokunat

Figure2-3. Formatof YD Output
Figure2-3showsthesefields:

2-12

Directorysize

The maximumnumberof entriesthisjob canhavein its object
directory.

Entries used

The numberof entriespresentlyin the directory.

SystemDebugger

VD..DISPLAY
A JOB'SOBJECTDIRECTORY

namel...namen

The namesunderwhichobjectsare catalogued.Thesenames
wereassìgned
at the time the objectswerecatalogued
wìth
RQ$CATALOG$OBJECI.

tokenl...tokenn

Tokensfor the catalogued
objects.

taskswaiting

Signifiesthat one or more taskshaveperformedan
RQ$LOOKUP$OBJECT
on an objectnot catalogued.The
tokensfollowingthis field identifythe tasksstillwaitingfor rhe
objectto be catalogued.

For more information on objectdirectories,seethe Extendtd\RMX I I NuclettslLser's
Guide.
ERRORMESSAGES
SyntaxError

No parameterwasspecifiedfor the command,or an
error wasmadein enteringthe command.

TOKEN is not a Joh
... IIWALID TOKFN ***

A valid tokenwasenteredthat is not ajob token.
The valueenteredfor the tokenis not a valid token(as
definedin "CheckingValidityof Tokens"earlierin this
cnapter).

EXAMPLE
Supposeyou want to look at the objectdirectoryofjob "2280".Enter the following
command:

The SystemDebuggerresponds
with

DirecÈory slze:

000A

S

2228

R?IOUSER
RQGLoBAL

2?OO
2280

Entries used:

0003

The symbols'$", 'R?IOUSER",and "RQGLOBAL" are the namesof objectsrhc sysrem
creates;their respective
tokensare 2228,2200,
and 2280.Thereare no waitingtasksor
invalidentries.

SystemDebugger

2-13

The VF commanddisplaysthe number of free Global DescriptorTable slotsavailableto
the user.

PARAMETERS
The VF commandhasno parameters.
DESCRIFIION
The VF commanddisplaysthe number of free Global DescriptorTable (GDT) slots
availableto the user,in the format shownin Figure2-4.

Number of free

slots

: xxxxxxxx

Figure 2-4. Format oflT

2-14

Output.

SystemDebugger

!T'..DISPI,AY NUMBER OF FREE SLOTS

ERRORMESSAGES
Syntax
Error

SystemDebugger

An errorwasmadein entering
thecommand.

2-15

the twelveSystemDebuggercommrrnds.
The VH commanddisplaysand brieflydescribes

PARAMETERS
This commandhasno parameters.
DESCRIPTION
alongwith their parameters
The VH commandlistsall of the SystemDebuggercommands,
and descriptions.
ERRORMESSAGE
SyntaxError

An error wasmadein enteringthe command.

EXAMPLE
If you enterthe followingcommand:

2-16

SystemDebugger

VH--DISPLAY
HEI.PINFORMAI]ON

The SystemDebuggerrespondsasshownin Figure2-5.

Extended iRllx II SYSTEMDEBUGGER,
Vx.y
Copyright 
[]


[]


[(count)]



Displays DùlB for physical device.
Display sysrern call.
Display job,s objècr direcrÒry.
Dispì-ays number of free slots available ro user.
Display help inforrnation.
Display job hierarchy from specified 1evel.
Display ready and sleeping rasks.
Display list of objects for specified job.
Display I/0 RequestlResulr Segmènr.
Display stack and syscem caLl informaLion.
Display iRMX tl object.
Unwind task stack, displaying system calls.

Figure2-5. I'ormatof VH Output
Anglebracketssurroundrequiredvariablefields.
Squareandan_ule
brackets
surroundoptionalfields.

NOTE
The systemusesdefaultvaluesif vou speci|rzero (0) for anyof the optional
parametersin Figure2-5. LJsing
zerofor requireclparameterscausesthe
systemto displaythe followingmessrìge:

SystemDebugger

2-t7

from the levelyou
The VJ commanddisplaysthe portionof thejob hierarchythat descends
sDecifu.

PARAMETER
job token

The tokenof thejob for whichyou want to displaydescendant
jobs.
If you do not specifya job token,or you specifuzero (0), VJ
jobs.
displaysthe root job and its descendant
the
ofjob descendants,
If thejob hasmorethan44 generations
the displayat the 44th
SystemDebuggerdisconîinues
and promptsfor
message,
level,
displays
an
error
descendant
anothercommand.

DESCRIPTION
job and the tokensof all its
The VJ commanddisplaysthe tokenof the specified
jobs.
(and
at the same
their descendants)
It alsodisplaysthe tokensofjobs
descendant
jobs are indentedthreespacesto
levelas the specifiedjob. The tokenslbr descendant
job's
showsthe format of thejob hierarchy
position
hierarchy.
Figure
2-6
in the
showtheir
disolav.

iRMx@ Il

Job Tre e

tokenl
token2
token3
token4
tokent
t o k e n ,o

Rooc Job
HurnanI ntè rface
Command
Line Inte rpre ter
A p pI l c a t í o n
EIOS
BIOS

Figure 2-6. Formal of VJ Oulput

2-l8

Sysfem Debugger

VJ-.DISPI-AYJOB IIIERARCTIY

The fields in Figure 2-6 are
tokenl

The tokenyou specifiedasjob token(recallthat the rootjob
token is the default).

token2...token6

jobs of token
The tokensfor the descendant
1.

In Figure2-6,the HumanInterface,EIOS,and BIOS Jobsare indentedthreespacesto
signifythat they are childrenof the RootJob. Similarly,the CommandLine Interpreter
Job is the child of the HumanInterfaceJob,and the ApplicationJob is the child of the
CommandLine InterpreterJob.
ERRORMESSAGES
SyntaxError

An error wasmadein enteringthe command.

TOKEN is not a Job

A validtokenwasenteredthat is not ajob token.

TOKEN ***

SDBjob nestlimit
exceeded

The valueenteredfor the tokenis not a valid token(as
definedin "CheckingValidityof Tokens"earlierin this
chapter).
job (or the defaultjob) has
The specified
more than44 generations
ofjob descendants.

EXAMPLES
Ifyou want to examinethe hierarchyof the root job, enterthe followingcommand:

with the followingjob tree:
Supposethe SystemDebuggerresponds

lRMx@ II

Job Tree

0258
0F38
1670
2460
0888
0E00
Figure2-7showsthisjoh tree:

SystemDebugger

2-19

VJ--DISPL{YJOB HIERARCHY

Root Job
( 0 2 5 8)

l l u m an I n t e r f a c e
( 0 F 3 8)
/

EIOS
( 0 8 8 8)

/

/
Co r n n a n d L i n e I n t e r p r e t e r
(1610)

AppI icat ion
(2460)

Figure2-7. iRMXo ll Job Tree

jobs of "0E88",enterthe followingcommand:
If you want to displaythe descendant

2-20

SystemDebugger

VJ..DISPT.4,YJOB HIERARCTIY

The SystemDebuggerdisplaysthe following:

ÍR-ì{XO II

JOb T r e e

0E88
0E00
0F38
1670
2460
Note that the tokensfor alljobs at the samelevelasthe specifiedtoken (0E00and 0F38),
and their descendants
(1ó70antJ2460),are alsodisplayed.

SystemDebugger

2-21

The VK commanddisplaysthe tokensfor tasksin the readyand sleepingstates.

PARAMETERS
This commandhasno parametersDESCRIPTION
The VK commanddisplaysthe tokensfor tasksthat are readyand asleep,in the format
shownin Figure 2-8.

Ready casks:

xxxx

xxxx

Sleeping tasks:

xxxx

xxxx

Figure 2-8. Format ofVK Output

The fields in Figure 2-8 showthe following:
Readytasks

The tokensfor all tasksin the readystate. The first token in this
lìst representsthe running task

Sleepingtasks

The tokensfor all tasksin the sleepingstate.

ERROR MESSAGES
SyntaxError

An error wasmadein enteringthe command.

Readytasks:Can't locate

The systemis corrupted.

Sleepingtasks: Can'tlocate

The mostcommonreasonfor this type of error ts
not initializing the Nucleus. To recoverfrom this
error,reinitializethe system.

2-22

SystemDebugger

VK..DISPI-AY READYAND SLEEPING TASKS

EXAMPLE
To displaya iist of all the ready and sleepingtasksin your system,enter the following
command:

The SystemDebuggerrespondswith the following:

Ready tasks:

2F00

Sleeping taeks:

26F0
2020
20D0

SystemDebugger

2588
1FF8
0300

2688
2698

2200
2238

2180
2118

2090
2668

2588
2638

2050
2768

2-2i

The VO commanddisplaysthe tokensfor the objectsin the specifiedjob.

PARAMETER
The tokenof thejob for whichyou want to displayobjects.

job token
DESCRIFTION

semaphores,
The VO commandliststhe tokensfor a job'schildjobs,tasks,mailboxes,
composites,
and bufferpoolsin the formatshownin Figure
regions,segrnents,
extensions,
t_o

Child Jobs
Tasks :
Mailboxes:
Sernaphores

XXXX

XXXX

XXXX

XXXX

XXXX

XXXX

XXXX

XXXX

XXXX

XXXX

xxxx

XXXX

XXXX

XXXX

Segnents:
Extens ions
Cornposites

XXXX

xxxx

xxxx
xxxx

XXXX

XXXX

XXXX

XXXX

XXXX

XXXX

Buffer

XXXX

xxxx

XXXX

Pools:

Figure2-9. Formatof VO Output

The fieldsin Fizure2-9are asfollows:

2-24

ChiìdJobs

job's offspringjobs.
The tokensfor the specified

Tasks

The tokensfor the tasksin the specifiedjob.

Mailboxes

The tokensfor the mailboxes
in thejob. An "o" followinga
mailboxtokenmeansthat one or more objectsare queuedat the
maìlbox.A "t" followinga mailboxtokenmeansthat one or
more tasksare queuedat the mailbox.

SystemDebugger

VO..DISPLAYOBJECTSIN A JOB

Semaphores

The tokensfor the semaphores
in the specifiedjob. A "t,'
followinga semaphore
tokenmeansthat one or more tasksare
queuedat the semaphore.

Regions

The tokensfor the regionsin the specifiedjob. A,'b" (busy)
followinga regiontokenmeansthat a taskhasaccessto
information
guardedby rheregion.

Segments

The tokensfor the segments
in the specifiedjob.

Extensions

The tokensfor the extensionsin the specifiedjob.

Composites

The tokensfor the compositesin the specifiedjob. A ,'s,'
following a compositesigrifies a port with a signalwaiting. An
"m" signifiesa port with a message
waiting.A "t" signifiesa port
with a taskwaiting.

Buffer Pools

The rokensfor the buffer pools in the specifiedjob.

ERRORMESSAGES

Svntax
Error

oran
I:J.T:Tff:Jff:ffil?',lTJ*command

TOKEN is not a Job

A valid tokenwa, .nt"."dlho*"uer, it is not a job token.

... INVALID TOKEN ***

The valueenteredfor the tokenis not a valid token(as
defined.in"CheckingValidityof Tokens"earlierin this
cnaDter
ì.

SystemDebugger

,-)<

VO.-DISPI-AYOBJECTSIN A JOB

EXAMPLE
If you want to look at the objectsin thejob havingthe token"1670",enterthe following
command:

The SystemDebuggerrespondswith the following:

Child j obs
Tasks :
Mailboxes:
Sermphores
RegÍons:
Sègnents:
Extens ions
Conposites
Buffer pools:

2460
1688
L720
17A0

t178
1128
17A8 r

1788
1738 r

1940
1740 r

1950
1760 r

2FF8
1768 r

16D8

1750

1958

1960

2FE8

2Fc8

1690

16F0

1710

1828

1848

1980

semaphores,
regions,
This displayshowsthe tokensfor the childjobs,tasks,mailboxes,
and bufferpoolsin thejob. It alsotellsyou that tasks
segments,
extensions,
composites,
and one semaphore.
arewaitinsat four mailboxes

2-26

SystemDebugger

The VR commanddisplaysinformationaboutthe iRMX ll BasicI/O SystemI/O
Request/Result
Segment(IORS) that corresponds
to the segmenttokenyou enter.

PARAMETER
Segmenttoken

The tokenfor a segmentcontainingthe IORS you want to
display.If thissegment
is not an IORS,the VR command
returnsinvalidinformation.To obtaina list of the segment
tokensin a iob.usethe VO command.

DESCRIPTION
The VR commanddisplaysthe namesandvaluesfor the fieldsof a specificIORS. The
contentsof the IORS reflectthe mostrecentI/O operationin whichthis IORS wasusec.
Exceptfor ensuringthe specifiedsegmentis between45 and 65 byteslong,the System
Debuggercannotdeterminewhetherthe segmentcontainsa valid IORS,soyou must
ensurethat it does. If the parameteris a valid segmenttokenfor a segmentcontaining an
IORS,the SystemDebuggerdisplaysinformarionaboutrhe IORS asshownin Figure2-10.
For more informationon l/O Request/Result
Segments,
seetheExtended
|RMX II Basic
I/O SystemUser'sGuide.
For more detailedinformationaboutthe IORS contents,seetheExtended
|RMX II Device
Diven User'sGuide.

SystemDebugger

2-27

SEGMENT
I/O REQUEST/REST]LT
VR..DISPT-AY

l/O

Request Result

Status
Device
Function
count
Device location
Resp mailbox
Link forward
Done
Connection token

Segment
xxxx
xxxx
xxxxxxx
xxxx
xxxxxxxx
xxxx
xxxx:xxxx
xxxxx
xxxx

Unit status
Unit
Subfunction
Actual
Buffer pointer
Aux pointer
Link backward
Cancel ID

xxxx
xx
xxxxxxx
xxxx
xxxx:xxxx
xxxx:xxxx
xxxx:xxxx
xxxx

Figure2-l{ì. Formatof VR Output

The fieldsin Fisure2-l0 are asfollows:
Status

T h e c o n d i t i o nc t r t F f o r t h e l / O o p e r a t i o n .

Unit status

Additionalstatusinformation.The contentsof this field are
meaningfulonlywhenthe Statusfield is setto the E$lO
condition(0028H).lf the Statusfieldis not setto E$lO,the
"N/A"
Unit Statusfielddisplays

Device

The numberof the devicefor whichthis I/O requestis intended.

Unit

The numberof the unit for whichthis l/O requestis intended.

Function

The operationperformedby the BasicI/O System.The
possiblefunctionsare
Function

SvstemCall

Reaci
Write
Seek
Special
Att Dev
Det Dev
Open
Close

RQ$A$READ
RQ$A$WRITE
RQ$A$SEEK
RQ$A$SPECIAL
RQ$A$PHYSICAL$ATTACH$DEVICE
RQ$A$PHYSICAL$DETACH$DEVICE
RQ$A$OPEN
RQ$A$CLOSE

an invalidvalue,the System
If the Functionfieldcontains
Debuggerdisplaysthe actualvaluein this field,followedby a
spaceand two questionmarks.

2-28

SystemDebugger

VR.-DISPI-AYI/O REQUEST/RESULTSEGMENT

Subfunction

A furtherspecification
of the functionthat appliesonly whenthe
Functionfield contains"Special"
from the BIOS
RQ$A$SPECIALsystemcall. Possiblesubfunctions
lnci their
descript
ionsare
Subfunction

Description

For/Que
Satis!
Notify
Devicechar
Get TermAttr
SetTerm Attr
Signll
Rewind
ReadFileMark
Write File Mark
Retention
Trpe
Set Font
Set Bad Info
Get Bad Info

Formator Query
Streamfile satisfyfunction
Notify function
Devicecharacteristics
Get terminalattributes
Setterminalattributes
Signalfunction
Rewindtape
Readfile markon tape
Write file mark on taoe
Takeup slackon tlpi
Setcharacterfont
Setbad track/sectorinformation
Get bad track/sectorinformation

If the Functionfield doesn'tcontain"Special,"
thcn thc
Subfunction
field contains"N/A." If the Subfunctionfield
containsan invalidvalue,the SystemDebuggerdisplaysthe
valucof the field followedby a spaceand two questionmarks.
Count

The numberof bytesof datacalledfor in the I/O request.

Actual

The numberof bytesof datatransferredin responseto the
requ(st.

Devicelocation

The eight-riigithexadecimal
addressof the byteor logicalblock
wherethe I/O operationbeganon the specifieddevice.

Bufferpointer

The adclress
of the bufferthe BasicI/O Systemreadfrcm, or
wr(ìtct(ì.in response
to the request.

Respmailbox

A tokenfor the response
mailboxto whichthe devicesentthc
IORSafterthe operation.

Aux pointer

The pointerto the locationof auxiliarydata,if any. This field is
significantonlywhenthe Functionfield contains"Special."

Link forward

The adclress
of the nextIORS in the queuewherethe IORS
waitedto be processed.

Link backward

The addressof the previousIORS in the queuewherethe IORS
waitedto be orocessed.

SysternDebugger

2-29

VR--DISPT-AY
I/O REQUEST/RESULTSECMENT

Done

This field is alwayspresentbut appliesonly to IORSs for I/O
it
devices.When applicable,
operationson random-access
indicateswhetherthe I/O operationhasbeencompleted.The
possiblevaluesare TRUE (0FFH) and FAI-SE (00H).

CancelID

A word usedby devicedrivers to identi! I/O requeststhat need
to be canceled.A valueof zero (0) indicatesa requestthat
cannotbe canceled.

Connectiontoken

The token for the file connectionusedto issuethe requestfor
the I/O ooeration.

ERROR MESSAGES
SyntaxError

No parameterwasspecifiedfor the commandor an
error wasmadein enteringthe command.

TOKEN is not a SEGMENT The tokenenteredis validbut not a segmenttoken.
*** INVALID TOKEN *** The valueenteredfor the tokenis not a valid token (as
definedin "CheckingValidityof Tokens"earlierin this
chapter).
SECMENT wrong sizenot an IORS

2-30

The specifiedsegmentis not berween45 and
65 byteslong,so it is not an I/O Request/Result
Sesment.

SystemDebugger

The VS commandidentifiessystemcalls(asdoesthe VC command)and displaysthe stack.

PARAMETER
A decimalor hexadecimal
valuethat specifiesthe numberof
words from the stackto be includedin the display. A suffix of T,
as in l6T, meansdecimal.No suffixor a suffir of H indicates
hexadecimal.
If you do not specifya count,or you specifya countof zero (Lr,
the numberofwords in the displaydependson the numberof
parameters
for the systemcall at the CS:IP. Or, in the case
whenCS:IPis not pointingto a systemcall,the entirecontents
of the stackis disolaved.
DESCRIFTION
The VS commandidentifiesiRMX II systemcallsfor all iRMX II subsystems
(asdoesthe
VC command)and interpretsthe systemcall parameterson the stack. If the stackdoesnot
containa systemcall,the VS commanddisplayseitherthe numberof stackelementsyou
specifuor all of the stackcontents,whicheveris least. If a parameteris a string,the System
Debuggerdisplaysthe string. For additionalsystemcall information,seethe appropriate
iRMX II Volume3 systemcall manual.
The VS commandinterpretsthe CALL instructionat the currentCS:IP. If you want to
interpreta CALL instructionat a differentCS:IPvalue,you mustmovethe CS:IPto that
value. To movethe CS:lPusingthe iSDM monitor,usethe GO (G) commandor the
EXAMINE/MODIFY REGISTERcommand(X with CS or lP specifiedasthe 80286or
80386register).If you are usingthe D-MON386monitor,useonly the GO command.
If the instructionis not a CALL instruction,VS displaysthe contentsof the wordson the
stackand no message.If the instructionis a CALL but not a systemcall (for example,a
PLIM-286call to a procedure),VS displaysthe stackcontentsand a message
informing
you that the CALL wasnot a systemcall.

SystemDebugger

2-31

VS..DISPT.AYSTACK AND SYSTE]ITCALL INFORMATION

(StackSegment:Stack
Pointer)registers
usescurrentvaluesof theSS:SP
TheVScommand
is aniRMX ll system
call,VS displays
to displaythecurrentstackvalues.If theinstruction
asshownin Figure2-11.
thesystem
callandthestackinformation

gare /INNNN
xxxx:xxxx
xxxx

xxxx

xxxx

xxxx

xxxx

xxxx

xxxx

xxxx

XXXX:XXXX

XXXX

XXXX

XXXX

XXXX

XXXX

XXXX

XXXX

XXXX

( subsys tem) system call
lparameters I

Figure2-ll. Formatof VS Output

The fieldsin Figure2-l l are as folÌows:
xxxx:xxxx

The contentsof the SS:SP(stackmemoryaddresses).

)oofi

Values(tokens)currentlyon the stack.The numberof stack
valuesvaries,dependingon the numberof parametersin the
systemcall.

parameters

The namesof the stackvaìues.The parameterscorrespondto
the stackvaluesdirectlyabovethem. The maximumnumberof
displayedparametersis 24.

The threeremainingfieldsin Figure2-11are identicalto thosein the VC command:

) -7)

gate#NNNN

The gatenumberassociated
with the systemcall.

(subsystem)

The iRMX ll OperatingSystemlayerthat the systemcall is part
of.

systemcall

The nameof the iRMX II systemcall.

SystemI)€bugger

VS--I)ISPLAYSTACKAND SYSTEMCALL INFORMATION

ERRORMESSAGES
SyntaxError

An error wasmadein enteringthe command.

Not a systemCALL

The CS:IPis pointingto a CALL instructionthat is not an
call.
iRMX II system

Unknownentrycode This message
indicatesthat one of two infrequenteventshas
occurred.One is that the SystemDebuggerhasmistakenan
operandbelongingto someinstructionin the objectcodefor the
FAR CALL instruction.The other eventis that a softwarelink
from usercodeinto iRMX ll codehasbeencorrupted.To
recoverfrom systemcorruption,rebootthe system.
EXAMPLES
'1906:07CA
(usingthe iSDM Monitor'sX
Supposeyou determinethat the SS:SPis
command,for example)then usethe VS commandby enteringthe followingcommand:

with the following:
The SystemDebuggerresponds

gate /10360
1906:07cA 0808
1906:07DA 19A0

1980
0820

1EA8
0s80

1980
1EA8

1980
1EA0

0000
1EE8

0800
0000

1908
0000

(Nucleus) delete mailbox
| . . e x c e p $ p .. | . r n b o x I.

The parameternamesidentifothe stackvaluesdirectlyabovethem. That is, the "excep$p"
to the
parameternamesignifiesthat the first two wordsrepresenta pointer(1980:0808)
exceptioncode. Similarly,the "mbox"parametersignifiesthat the third word (18A8) is the
tokenfor the mailboxbeingdeleted.
Now,supposethat you movethe SS:SPto 2906:07D0.If you invokethe VS commandby
enteringthe followingcommand:

SystemDebugger

2--l-l

VS.-DISPLAYSTACKAND SYSTEMCALL INFORMATION

The SystemDebuggerdisplaysthe followingstackand a message
informingyou that the
instructionis a CALL instructionbut not an iRMX II systemcall:

2906:07D0
2906:0780

2980
2 7C 8

2980
27C8

0000
25C8

0600
25C8

2908
25C8

29A0
25C8

0020
25C8

1s80
25C8

Not a systen CALL

When an iRMX II systemcall is executed,
its parametersarepushedonto the current
stack,and then a CALL instructionis issuedwith the appropriatestackaddress.If the call
hasmoreparametersthanwill fit on one line,the SystemDebuggerautomatically
displays
multiplelinesof stackvalues,with corresponding
multiplelinesof parameterdescriptions
directlybelowthem.
For example,supposeyou usethe VS commandasfollows:

gate i10310
z l c c : Q F 9 A 0 1 58
27cc:OFAA 20E8
27CC:0FBA 2608

20 C 8
0028
tA58

0000
0000
1AF8

20c8
0000
2608

20c8
20C8
0000

0000 0600
OOEO 2FF8
0000 0000

l1c8
2FF8
0000

(Nucleus) create job

l . . . e x c e p g pI . t.$. f l g s . s t k s z e l . . s p .. 1. . . . l . . ds. . l . . ip . . I
""
. e x p $i n f o $ p . . I maxpri
l . . c s . . l . . p rIi .
Inaxtsk I maxobjI
p
a
r
a
m
.
.
.
o
l
r
s
1
z
lpoolm-x
lpoolrnn
I
I
This displayindicatesthar the CALL instructionis a NucleusRe$CREATE$JOBsystem
callwith 18parameters.The namesof theseparameters
are shownbetweenthe vertical
bars( | ). The wordson the stackcorrespondto the Darameters
directlvbelowthem.

2-34

SystemI)ebugger

VS--DISPI-AYSTACK AND SYSTEMCALL INFORMATION

The followingdisplayshowsthat theCALL instructionis a BasicI/O System(BIOS)
RQ$A$ATTACH$FILEsystemcallwith five parameters.The "subpath$p"
parameter
pointsto a stringsevencharacters
long:theword"example."

gate /10500
27CC|0F4E 0F88
27CC:0F5E 2608

17c8
1C10

25F8
2600

0000
1320

2600
26D0

29AO 0000
0F78 0DF8

2600
2FF8

( B I o s ) a È t a c hf i 1 e
l . . . . e x c e p $ p . .l.. r n b o xl .. . s u b p a t h $ pl...p r e f i x l . u s e r l
subpath--) 07' exarnple'

The followingdisplayindicatesthat the CALL instructionat CS:IPis an ExtendedI/O
SystemRQ$S$RENAME$FILEsystemcallwith threeparameters.Two of the parameters
havestrings:the "new$path$p"
parameterpointsto a stringfour characters
long ("XY70");
the "path$p"parameterpointsto anotherstringfour characters
long ("temp").

gate /f06E8
27AC:0F98 0148
27CC:0F48 17c8

20c8
2088

0858
0028

20E8
1320

0640
0000

2088
20c8

0000
0008

0600
2600

l . . excepgp. . l . . newgpathgp. . l . . . path$p . . . I
new path- -> 04'XY70'
paEh- -> 04' teurp'

NOTE
If a string is more than 50 characterslong, the SystemDebuggerdisplaysonly
the first 50 characters.If the pointeris pointingto a nonreadable
segment,the
SystemDebuggerdoesnot displaythe string.

SystemDebugger

2-35

with the token
The VT commanddisplaysinformationaboutthe iRMX II objectassociated
you enter.

PARAMETER
token

The tokenof the objectfor whichyou want to display
information.

DESCRIPIION
The VT commanddeterminesthe typeof iRMX II objectrepresented
by the tokenand
displaysinformationaboutthat object.Both the informationand the format in whichthe
SystemDebuggerdisplaysthe informationdependon the typeof object.
The followingsectionsare dividedinto displaygroupsillustratingthe displayformatfor
theseiRMX II objects:
.

Jobs

.

Segments

.

Tasks

o

Extensions

.

Mailboxes

.

Compositeobjects(six types)

r

Semaphores

.

Buffer Pools

.

Regions

ERRORMESSAGES

2-36

Svntax
Error

oran
}:ffixTil::Jtr:i:;il:1i"JJ*comman'lr

*** INVALID TOKEN +**

The valueenteredfor the token is not a valid token (as
definedin "CheckinsValiditvof Tokens"earlierin this
chapter
).

SystemDebugger

VT--DISPI,AYiRMX@II OBJECT

JOB DISPI,AY
If the parameteryou specifyis a validjob token,the SystemDebuggerdisplaysinformation
aboutthejob havingthat token,asFigure2-12shows.

Objecttype:1Job
Current tasks
Current obj ects
Directory
s ize
Except handler
Pool min
Borro!.red

XXXX
XXXX
XXXX

xxxx : xxxx
XXXXX

Max tasks
Max obj ects
Entries used
Except rnode
PooI max

xxxx
xxxx
xxxx
xx
xxxxx

Max priority
Paraneter obj
Job flags
Parent job
size
Initial

xx
xxxx
xxxx
xxxx
xxxxx

XXXXX

Bvte ranse

Number chunks

22 - 44H
44 - 81-!H
8 4- 2 0 0 H
2 0 0 H -1 K
1 K -2 K
2K-4K
4 K -8 K
8 K -3 2 K
+ 32 K

Largestchunk

Total memory

xxxxxxxx

XXXXXXXX

XXXXXXXX

XXXXXXXX

xxxxxxxx

xxxxxxxx
xxxxxxxx

xxxxxxxx
xxxxxxxx

XXXXXXXX

XXXXXXXX

XXXXXXXX

XXXXXXXX

XXXXXXXX

XXXXXXXX

xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx

xxxxxxxx
xxxxxxxx

xxxxxxxx
xxxxxxxx
xxxxxxxx

XXXXXXXX

xxxxxxxx
xxxxxxxx

Figure2-12. FormatofVT Output: Job Display

The fieldsin Figure2-12(from Ieli to right) are asfollows:
Currenttasks

The numberof taskscurrentlyexistingin thejob. If the Max
tasksis not 0FFFFH (no limit), the numberof Currenttasksis
equalto the Currenttasksof thisjob plusall of its childrenMax
tasks.

Max tasks

The maximumnumberof tasksthat canexistin thejob
This valuewassetwhenthejob wascreated.
simultaneously.

l\{a-rpriority

The maximum(numericallylowest)priority allowedfor anyone
taskin thejob. Thisvaluewassetwhenthejob wascreated.

Currentobjects

The numberof objectscurrentlyexistingin thejob.

Max objects

The maximumnumberof objectsthat canexistin the job
Thisvaluewassetwhenthejob wascreated.
simultaneously.

SystemDebugger

2-37

W..DISPI,AY iRMX@II OBJECT

2-38

Parameterobj

The tokenfor the objectthat the parentjobpassedto thisjob.
This valuewassetwhenthejob wascreated.

Directory size

The maximumnumber of entriesthe job can havein its object
directory. This valuewasspecifiedby the first parameterwhen
thejob wascreatedwith the NucleusRQ$CREATE$JOB
systemcall or the RQE$CREATE$JOBsystemcall.

Entries used

The number of objectscurrentlycataloguedin the job's object
directory.

Job flags

The job flagsparameterspecifiedwhenthe job wascreated.It
containsinformationthe Nucleusneedsto createand maintain
thejob.

Excepthandler

The start addressof thejob's exceptionhandler. This address
wassetwhenthejob wascreated.

Exceptmode

The value that indicateswhen control is to be passedto the new
job's exceptionhandler.This valuewassetwhenthejob was
created.

Parentjob

The token for the specifiedjob's parent.

Poolmin

The minimumsize(in 16-byteparagraphs)
of thejoh,smemory
pool. Thisvaluewassetwhenthejob wascreated.

Poolmax

The maximumsize(in 16-byteparagraphs)
of thejob's memory
pool. This valuewassetwhenthejob wascreated.

Initial size

The initial size(in 16-byteparagraphs)
ofthejob,s memory
pool.

Borrowed

The currentamount(in 16-byteparagraphs)
of memorythat the
job hasborrowedfrom its ancestor(s).

Free Space

All free memory in a job's pool is accountedfor, via several
double-linked
lists. Eachlist containsa rangeof chunksizes.A
chunkis a pieceof contiguous
memory. Columnone of the free
spacetableshowsthe sizerangesfor the list. Columntwo shows
the numberofchunkson eachlist. Columnthreedisnlavsthe
largestchunkon eachiist. Columnfour showsthe toial amount
of memoryon eachlist.

SystemDebugger

VT--DISPT.AY
iRMX@II OBJECT

TASKDISPI"AY
The SystemDebuggerdisplaysinformationabouttasksin two differentways.Figure2-13
showsthe displayfor non-interrupttasks,andFigtre 2-14showsthe displayfor interrupt
tasks.

Objecttype-2Task
C È - È i ^
r La Lre

- - t
P!r

Suspend depth
Except handler
Concalning job

xx
xxxx: xxxx
xxxx

Dynamic pri
Delay req
Except mode
Interrupt task

xx
xxxx
xx
no

Last exchange
Task flags
K-saved SS:SP

xxxx
XX

xxxx : xxxx

Figure 2-13. Format ofVT Output: Non-Interrupt Task

Objecttype-2Task

Suspend depth
Except handler
Containing job
Master nask
Max interrupts

xx
xx
xxxx : xxxx
XXXX
XX

xx

n,,-^-i
^
ujl rrdu' r L

--i
Pr r

Delay req
ExcepL mode
InLerrupt task
Slave rnask
K-saved SS:SP

'r^^1.

^r^,^

xxxx
Last exchange
xx
Task flags
yes
Int level
xx
Pending int
xxxx: xxxx

XXXXXXXXX

xxxx
xx
XX
XX

Figure 2-14. Format of VT Output: Intemrpt Task

The fields in Figures2-13 and2-14(from left to right) are as follows:
Staticpri

The maximumprioriryvalueof the task. This valuewassetby
the max$priorityparameterwhenthe task'scontainingjob was
createdwith RQ$CREATE$JOBor RQE$CREATE$JOB.

Dynamicpri

A temporarypriority that the Nucleussometimesassigns
to the
task to improve systemperformance. For example,if a higher
priority taskwantscontrolof a regionthat belongsto a currently
executinglower priority task,the Nucleusassignsthe lower
priority taska priority equalto that of the higherpriority task.
This increasing
of a task'spriority,in this case,improvesthe
overallsvstemoerformance.

SystemDebugger

2-39

vT--DISPLAYiRMX@II OBJECT

Taskstate

The stateof the task. The twelveoossiblestates.as thevare
are
displayed,
State

Descriotion

rea is entered at the Hl prompt. rhe task calletl lnit runs
first, creating a mailbox it catalogsin the rod directory under the name,'master.',lt
createsthe tasksAlphonse and Ga:itorìthen suspenclsitself.
When Gaston receivescontftrl, it gets the token for the mailbox created by Init (by looking
up the name "master"in the root job's object directory). It then creatcsa segment(in
which it will place a message)and a responsemailbox (to which Alphonse will send a
reply). Next it goes into a loop in which ìt placesa messagein the segment(after
d i s p l a y i n gi t o n t h e s c r e e n ) s, e n d st h e s e g m e n t o t h e m a s t e rm a i l b o x ,t h e n w a i t s a t t h e
responsemailbox for a repÌy.
When Alphonse receivescontrctl,it also sets the token lbr the mailbox created by Init (by
looking up the name in the root job's objcct clirectory). It rhen goes into a loop in which it
waits at the maiìbox for a messagcand checksto see if the token it received is a segment.
If it is a segment,Aìphonse placesits own messagein the segment(alier displayingit on
the screen),then sendsthe segmentto the responsemailhox. If it isn't a segment,
Alphonse drops out of the loop anri deletesitself.

SystemDebugger

3-l

SAMPLEI)EBUG SESSION

Gaston
By usingthe two mailboxes,
the tasksAlphonseand Gastonare synchronized.
sendsa message
to the first mailboxandwaitsat the secondone beforecontinuing.
it sendsa replyto the
Alphonsewaitsat the first mailbox.When it receivesa message,
secondmailboxandwaitsat the first for anothermessage.This cyclecontinuesfor 6
messages.
After sendingits sixthmessage,
Gastondropsout of the loop. Insteadof sendinga
segmentto the m:ìstermailbox,Gastondisplaysa final message
to the screenthen sends
the tasktoken(thetokenfor the Init trìsk)to the mailbox.WhenAlphonsereceives
this
tokenand findsit is not a segment,
Alphonsedropsout of its loop and deletesitself.
(remember,the
To finishthe processing,
Gastoncausesthe Init taskto resumeprocessìng
Init tasksuspended
itselfearlier). When Init takesover,it deletesboth offspringtasksand
issuesan EXIT$IO$JOBsvstemcall to returncontrolto the Humanìnterfacelevel.

compacf
init:
DO;
DECI-ARE token
DECI,ARE fifo
DECI-ARE seÌf
D E C I A R Et a s k $ p r i o r i t y
D E C I ^ A R Ec a 1 1 i n g $ t a s k
DECIARE c a11ing$ tasks $j ob
D E C I - { R Em a s t e r $ m b o x
DECI,ARE status
DECI^AREini t$ task$ t oken
DECIARE gas ton$ task$ token

DECI-AREalphons e $ tas k$ token
DECIARE aÌphonse$start$add
D E C I - { R Eg a s t o n q s t a r t S a d d
DECLARE ga s ton$ds
DECI"{RE alphons e $ ds
D E C L A R Es t a c k $ p o i n t e r
DECI-{REstack$size
D E C L A R Et a s k $ f l a g s

LITEMLLY
LITEMLLY
LITEMLLY
BYTE;
TOKEN;

, S E L E C T O; R '
'0';
,0,;

TOKEN
TOKEN
WORD
;
TOKEN
TOKEN
TOKEN
POINTER;
POINTER;
WORDEXTERNAL;
WORDEXTERNAL;
POI NTER;
WORD
;
T.IORD
;

gas ton :
PROCEDUREEXTERNAL;
END gaston;
alphonse:
PROCEDUREEXTERNAL;
END alphonse;

Figure3-1, ExamplePL/M-286Application(Init)

3-2

SystemDebugger

SAMPLEDEBUG SESSION

$include (/rmx2 86/inc/nuclus .ext )
$ include (/rmx286 / inc / eio s . ext)
( NFI L ) i
calling$tasks$job:
SE L E C T o R $ O
calling$task : SELECToR$OF(NIL);
g a st o n $ s t a r t $ a d d : @ g a s t o n ;
a l p h o n s e$ s t a r t $ a d d : @ a l p h o n s e ;
stack$pointer : NIL;
stack$size : 500;
task$f1ags : 0;
init$task$token
self ,
Gstatus ) ;

,/*
/*
/*
/*
/*
,/*

Directory obj cataloged in
vill
îask whose priority
be gotter' */
Set up scart addresses for
Lasks */
Values for creating tasks

: R Q $ G E T $ T A S K $ T 0 K( E N S, / * G e t t o k e n f o r

init

task

*/
*/
*,/
*/

*/

CALL RQ$0ATALoG$oBJ
ECT (
calling$tasks$job,
inic$task$token,
@(4,'init'),
@ sr a t u s ) ;

/*
/*
/*

catalog task token in
directory of calling
task's job */

*/
x/

n a s t e r $ n b o x : R Q $ C R E A T E $ M A I L B(O X
fifo,
Gstatus ) ;

/*
/*

Create mailbox tasks use
to Pass messages

*/
x/

C A L L R Q $C A T A L O C $ OEBCJT (
calling$tasks$job,
master$mbox,
@(6,'master'),
@ sc a t u s ) ;

/* Catalog mailbox in
/* directory of calling
,/* task's job

*/
*/
*/

: R Q $ G E T $ P R I O R I T( Y
task$prlority
calling$task,
@ st a t u s ) ;

./* Get priority
/* xask */

*/

taskSnrioritv:

task$príority I Ii

of calling

/x Pick lowerprioriry for
,/* ne!{ tasks

*/
*/

Figure 3-1. Example PL/M-286 Application (Init) (continued)

SystemDebugger

3-3

SAMPLEDEBUGSESSION

a l p h o n s e $ t a s k $ t o k e n : R Q $ C R E A T E $ T A(S K / *
r.

clzQ-Fi

^ri

create rasks

*/

r"

aÌphonse$start$add,
G aI p h o n s e $ d s ) ,
S E L E C T O R $ O( F
 s dÉr

^^..-c
. uuu
L ,

G st a t u s ) ;

END;
ENDalphonse;
alphonse$code;

,/* FOREVER
,/* Alphonse

Figure3-2. ExamplePL/M-286Application(Alphonse)(continued)

3-6

SystemDebugger

SAMPLEDEBUG SESSION

9compact
oacr-^nq^^.la'

nn'

DECI-AREtoken
$i n c l u d e
$ include
$ include

,SELECTOR,
;

LITEMLLY

(/rmx2 86/inc/nuc lus . ext )
( /rrnx286 / inc / e io s . ext)
( /rmx286 / íne /hi . ext)

gas con :
P R O C E D U RPEU B L I C ;
D E C I A R EC R
LITERALLY
DECI-ARELF
LITEMLLY
DECLARE
fifo
LITERALLY
D E C I " A Rw
Ea i t $ f o r e v e r
LITERALLY
D E C I A R Ep a r e n t $ t a s k
TOKEN;
DECIAREcal l ing$ tasks $j ob
TOKEN;
D E C I A R Em a s t e r $ m b o x
TOKEN;
D E C I A R Er e s p o n s e $ m b o x
TOKEN;
DECLAREstatus
ITORD;
DECI"ARE
time$linit
IIORD;
DECI-AREcount
WORD;
D E C I A R Ef i n a l $ c o u n t
WORD;
DECIAREgaston$ds
latORD
PUBLIC;
D E C I " A R sEe g $ t o k e n
TOKEN;
D E C I - A R sEe g $ si z e
WORD;
D E C I A R Er n a i n $ m e s s a g(e* )
BYTE
CR,LF, 'After you, Alphonse', CR, LF);
D E C I A R Ef i n a l $ m e s s a g e ( * )
CR,LF, 'If you insist,

BYTE
Alphonse', CR, LF);

D E C I ^ A RrEn e s s a g eB A S E Ds e g $ t o k e n

count : 0;
flnal$count : 6;
time$linit : 25;
seg$size : 32;
calling$tasks$job

DATA(

DATA(

STRUCTURE(
count
rexr(27)

,/*
,/*
/*
/*
/*
: S E L E C T O R $ O F ( NjI L ) , / *
/*

'I3':
' 10 '
;
'0,
;
,OFFFFH,
;

BYTE,
BYTE);

Initialize
count
Set nurnber of loops
Delay facror for display
to screen
Size of message segment
Directory in which to look
up obj ect

*/
*/
*/
*/
*,/
x/

Figure 3-3. Example PL/M-286 Application (Gaston)

SysternDebugger

J-l

SAMPLEDEBUGSESSION

rnaster$rnbox : RQ$LOOKUP$OBJ
ECT (
cal l ing$ tasks $j ob,

,/* Look up message mailbox

*/

@(6,'master'),
wait$forever,
G st a t u s ) ;
response$mbox :
fifo,

R Q $ C R E A T E $ MLABI O X (

/*

Create response

rnailbox

/*

Create message segment

*/

@status ) ;
s e g $ t o k e n - R Q $ C R E A T ES$E G M E N(T
seg$s ize ,
Q st a t u s ) ;

DO WHILE count < final$count;
nessage.count:23;
C A L L M O W ( @ m a i n $ r n e s s a g e@
, m e s s a g et.e x t ,
C A L L R Q $ C $ S E N D $ C 0 $ R E S P O N(S E
NIL,

/*

*/

SIZE(main$message) ;
Send rnessage to

screen

*/

0,
Arîa(<,oa

^^'1nf

@status ) :
CALL RQ$SLEEP(
time$l-init,

/* ilair
,/* time

a while ro give user
Lo see the messa€le

*/
x/

Gstatus ) ;
C A L L R Q $ S E N D $ M E S S A G( E
naster$mbox,
seg$ token,

/*

Send message to mailbox

*/

rp runs,the systemdisplaysthe
following message:

Interrupt

13 at 2C38:0199 General Protection

EC0DE:0000

arewherethe CS:IPwaspointingwhenthe programhalted. The
The values2C38:0199
protected-mode
prompt (..) indicatesthat we are in the iSDM monitor. However,sincethe
the code.
programhasbeenexecuted,
we mustre-enterthe iSDM monitorto re-execute
We canusethe Cll-restart featureto returnto the CommandLine Interoreter.Enter the
followinscommand:

The systemrespondswith the Human Interfaceprompt(-). Next,enterthe following
command:

with the following:
The systemresponds

Interrupt

3 a t 2 A 7 0 :F F F F

Use the iSDM monitor'sGO (G) commandto seta breakpointat the instructionwherethe
programhalted(rememberthe CS:IPvalueis givenin the interruptmessage
displayed
whenthe programhalts). The codesegment(CS)valuewill changeeachtime you re-enter
the iSDM monitor,but the instructionpointer(IP) will remainthe same.Enter the
followinscommand:

-ì-10

SystemDebugger

SAMPLEDEBUCSESSION

To find out wherewe are in the code,usethe iSDM monitor'sD (DISPIAY
MEMORY/DESCRIPTOR TABLES) commandto displaya disassembled
blockof code.
Enter the followingcommand:

The systemdisplaysthe followingcode:

2500: 0199
2500:0198
2500: 019E
2500: 01A0

F2A5
REP
880000
MOV
SBDO
MOV
52
PUSH
25 0 0: 0 1 A l
50
PUSH
2500:01A2 680000
PUSH
2 5 0 0 : 0 1 A 5 8 E 0 6 3 8 0 0 MOV
25 0 0: 0 I A 9
880000
M0v
2500:01AC 06
PUSH
2500; 0lAD 5 0
PUSH

MOVSW

A X ,0 0 0 0
DX,AX
DX
AX
0000
E S ,[ 0 0 3 8]
A X ,0 0 0 0
ES
AX.

The instruction
at address
2-500:0199
is a MOVE STRINGWORD command.The only
moveword instructionin the sampleprogramis the PL/M-2t16MOVW callwhenCaston
entersthe loop aftercreatingthe segment.The lbllowingdisplayshowsthis sectionof
code:

SystemDebugger

3 - lI

SAMPLEDEBUGSESSION

*/

r e s p o n s e S m b o r = R Q S C R E A T E $ U A I L B O (X
fifo,
Gstatus);

/.

Create

S E g SI O K E N = R QS CR E A T E9 S E G M E N(T
s e g 9s i z e .
!astatus);

/i

C r e a t e m e s s a g es e g m e n t r /

response mailbox

DO wHILE count
IinalScount;
.^,'^r = ?ì.

CÈIL r|Ottx(enal n$nessage, 0nessage.tert,
(
CALL RQSCSSEND$COSRESPONSE
NIL,

SIZE(nain$rcssagè]
,/t Send message to

Ii

screen r/

0,
ry'Irs54Ys.LUurrLt

0status ) ;

Figure 3-,1. MO!'W in Gaston Code

lf displayingthe instruction doesn't provide enough information about why the program
halted,we can look at the surroundingcode by displayingfor-wardor backward from the
CS:IP. The comma we specifiedin the DX command enablesus to enter just a comma (,)
now to displayforward another ten instructionsfrom the current CS:lP. (Displaying
backwardfrom the CS:IP is shown in Example #2.)
However, since the instruction where the exceptionoccurred is traceableto the sample
code, we know where the program fails. To ex:rminewhat happenswhen the systemtries
to move the message,we'll return to the protected-modeprompt (by entering a carriage
return  ) and examine registercontentsbefore and alìer MOVSW is executed.
Enter the following command:

3-12

System l)ebugger

SAMPLEDEBUCSESSION

The systemdisplaysthe following:

AX-OOOO
BX*0034
cx-0017
DX:2680

CS_2500
SS:2638
Ds:2530
ES:2680

IP-0199
F I . F O 2 9 3 R G D T . B A S E : O O 2 O O.O
LIMIT:2FFF
SP:01F2 BP:O1F2 RfDT .BASE:OO5OO
. LOI M I T : O 3 F F
sI-0042 MSW:FFFB
Dr:0001
TR=0278 RLDT:02A0

To executethe MOVSW instruction,enterthe lblkrwingcommancl:

The systemdisplays
the folltrwing:

Entera comma(,).
The systemresponds
with the following:

I n c e r r u p t 1 l a t 2 5 0 0 : 0 1 9 9G e n e r a l P r o r e c r i o n E C O D E * O o 0 0

T o s e eh o w e x e c u t i n gt h i s i n s t r u c t i o nc h a n g e dr e g i s t e rc o n t e n t s e, n t e r t h e f b l l o w i n g
command:

The systemdisplaysthe folÌowing:

AX-OOOO
BX:0034
CX:OOO6
DX:26C0

CS-2800
SS:26D8
DS:2888
ES:26C0

SystemDebugger

IP_0I99
SP:01F2
SI : 0 0 6 2
Dl=0021

F I , : O 2 9 3 R G D T . B A S E : O O 2 O O.O
LIMIT:2FFF
BP:01F2 RIDT .BASE:OO5OO
. LOI M I T - O 3 F F
MSW:FFFB
TR:0278 RLDT:02A0

3- t3

SAMPLEDEBUGSESSION

the sourcedata
In the ASM286AssemblylanguageMOVSW instruction,DS:SIrepresents
seethe
on
MOVSW,
(For
more
intbrmation
is movingfrom; ES:DI is the destination.
Manual.) To checkthe limit of the ES register,
ASM286AssemhlyLanguageReference
command:
enterthe following

The systemdisplaysthe following:
c D T ( 1 4 2 7 T ) D S E GB A S E : 0 9 0 4 8 4L l t f r r : o o l F

P*l DPIFOED:O ll-1 A:1 sR*0000(Es)

The LIMIT parametershowsthat the segmentlimit is 1FH (31 decimal).Sincethe system
in Gaston.
to seg$size
countsfrom zero,the limit is 32 decimalwhichis the valueassigned
The DI register(shownin the previousdisplay)contains2lH (33 decimal),indicatingthe
systemwastryingto write pastthe segmentlimit whenthe programhalted. This fact
suggests
the PL/M-286 MOVW call shouldbe changedto MOVB. Here we couldexit the
iSDM monitor,changethe PLIM-286code,then recompileand run it.
However,we canusethe iSDM monitor'sEXAMINE/MODIFY REGISTERS(X)
commandto changea registerv:rlueand the GO (G) commandto executethe program.
with the X and S (SUBSTITUTEMEMORY) commandsenablesus ttr
Makingchanges
testcodewithouthavingto recompileand bind it.
the countin
The CX registercontainsthe countofbytesor wordsmoved. If we decrease
we shouldbe ableto
the CX registerto l5 before\ryeexecutethe MOVSW instruction,
monitor
and
set
a
breakpoint
at the MOVSW
moveall the data. Re-enterthe iSDM
instructionby enteringthe followingcommands:

Setthe CX registerto 15. E,nterthe fbllowingcommand:

Now, executethe restof the programby enteringthe followingcommand:

3 -l 4

SystemDebugger

SAMPLEDEBUG SESSION

The systemrespondswith the following:

After

you,

AfÈer you, Gaston
Interrupt

1 3 a t 2 4 7 0 : 0 1 9 9G e n e r a l P r o t e c t i o n

ECODE-0000

Sinceour changewasvalidfor one passthroughthe code,the first passthroughthe Gaston
loop worked. The nextpassfailed. To returnto the CommandLine Interpreter,enterthe
followingcommand:

This partiallysuccessful
run shclws
that if we reducethe numberofwords moved,the
programworks. Therefore,to makea permanentfix, we shouldchangethe PLIM-286
MOVW call to MOVB in the samplecode.then recomnileand bind it.
EXAMPLE#2:
We canalsomakechangesin the disassembled
code. Suppose
we haverun the program
for the first time,and the systemdisplayedthe followingmessage:

Interrupt

13 at 2A70:0199 General Protection

EC0DE-0000

Restartthe systemusingthe CLI-restartlèatureasyou did in Example#1, then re-enter
the iSDM monitorby enteringthe lbllowingcommand:

Seta breakpointat the instructionthat wasexecuting
whenthe programfailedand display
a blockof disassembled
codeby enteringthe followingcommands:
. .

SystemDebugger

3-15

SAMPLEDEBUCSESSION

The systemdisplaysthe following:

1258:0199
1258:0I9B
1258:019E
1258:01A0
1 2 5 8 :O 1 A 1

F2A5
880000
SBDO
52
50

REP
MOV
MOV
PUSH
PUSH

MOVSW

Ax, 0000
DX,AX
DX
AX

To lookat the instructions
preceding
MOVSW,enterthe followingcommand:

The systemdisplaysthe followingcoclc:

L258 o l l 4
7258 0 1 78
1258 0 1 7C
1 2 s 80 1 7E
t2s8 0181
1 2 5 80 1 83
t258 0 1 87
r258 0 1 8C
1 2 s 80 1 8E
1 2 5 80r92
L258 0 1 95
1 2 5 80 1 98
t258 0 1 99
t258 0 1 9 8
1258 0 1 9E

88063800
MOV
38 06 3 A 0 0
CMP
JB
7203
897600
JMP
81l7
MOV
8 E 0 6 3 E 0 0 MOV
2 6 8 8 0 E 0 0 0 0 MOV
8500
MOV
8E063800
MOV
8F0100
MOV
BE4200
MOV
FC
CLD
F2A5
REP
880000
MOV
SBDO
MOV

Ax,I00381
Ax,1003Al
A=0181
A : O1 F7
CL,Il
E S ,[ 0 0 3 E]
Es:[0000],cL
cH,00
E S ,[ 0 0 3 8]
DI ,0001
sr ,0042
MOVSW
Ax, 0000
DX,AX

M O V S W i s a r e p e t ì t i v em o v e f r o m D S : S It o E S : D l . L o o k i n ga t t h e p r e c e d ì n gi n s t r u c t i o n s ,
w e s e e 1 2 5 1 J : 0 1m
8 1o v e s 1 7 H i n t o C L , w h i c h i s t h e l o w - o r d e rr e g i s t e ro f C X . R e m e m b e r
that CX is the count of bytes or wortls moved. (For more information on the register set,
see the ASM286 AssentblyLanguage Rat'erenceManual). lf we display the ES register
c o n t e n t su s i n g" d d t ( e s )< C R > " a s w e d i d i n t h e l a s te x a m p l ew
, e c a n c h e c kt h e l i m i t . S i n c e
the limìt is 32 (decimal) and the systemis trying to write l7H words, rhe systemlirils when
it tries to write past the segmentlimit. f f we reduce this count we shouÌd be abÌe to move
t h e d a t a . W e m u s t r e - e n t e rt h e i S D M m o n i t o r ,t h e n u s i n gt h e i S D M m o n i t o r ' s
S U B S T I T U T E ( S ) c o m m a n d ,w e c r n c h a n g et h e c o d ea t l 2 5 t l : 0 1 8 1 S
. e m i c o l o n s( ; )
p r e c e d et h e e x p l a n a t i o n isn t h e f o l l o w i n gc o c l e e; n t e r t h e i n f o r m a t i o na p p e a r i n gi n b l u e :

-l-t6

SystemDebugger

SAMPLEI)EBUG SESSION

;enter monitor conunandto substitute
menory at lp:0181
;enter a conma ro srep to the counÈ
;enter the neù counr
code execution
;re-start

1258:0181 81 1258:0182 17 -

The systemrespondswith sixiterationsof the following:

After
After

you, A1
you, Gaston

After six iterationsof the previousscreen,the monitordisplaysthe following:

If

you lnsist,

Alphonse

3.4 VIEWINGSYSTEMOBJECTS
Consider that we have a deadlockproblem. tsy looking at systemobjectsat various stages
of execution,we can observehow synchronization(or lack of it) is occurring.
We can view any object in a job using the VO command (specifyingthe job's token) to
provide the broad picture of the systemstate,then the VT command to focus on individual
elements. Suppose,we want to view the state of thc olrjectsbelbre entering the loop in
which Gaston and Alphonse exchangemessages.Assume we have steppedthrough the
code, verifying systemcalls until we located the CS:lP lbr the Nucleuscreategsegment
systemcall in Gaston. Re-enter the iSDM monitor and set a breakpoint at this CS:lP by
entering the fol-lowingcommands:
- D e b u g < n a n e o f O B J E C Tf i l e
. .9,16d 

SystemDebugger

speclfied

1n BND286> 

3-t7

SAMPLEDEBUGSESSION

'I'o

get thejob token,enterthe followingcommand:

the frrlltrwing:
The systemclisplays

iRMX@ll

Job Tre e

0258
0F38
1670
2460
0E88
0E00

Note that "2460"is the token for the applicationjob. To view objectsfor this job, enter the
following command:

T h e s y s t r md i s p l a y st h e f o l l o w i n g :

Child Jobs
Tasks:
Mailboxes:
Semaphores
Segments:
E x t e n si o n s
C o n p o si t e s

26D0
25C0 t

26F0
1AB8

1AC8

1 90 0

2580

25E8

25E0

2650

2528

2480

2418

24A0

At this stageof program execution,two mailboxesexist. The "t" following mailbox 25C0
m e a n so n e o r m o r e t a s k sa r e w a i t i n ga t i t ( A Ì p h o n s ew a s c r e a t e df i r s t a n d i s w a i t i n gf o r a
messagefrom Gaston). Examine mailbox 25C0 by entering the follorvingcommand:

3-18

Syst€m I)ebugger

SAMPLEDEBUGSESSION

The systemrespondswith the following:

object

Èype - 3

Mal]box

1900

Task queue head
Queue di sc ipl ine
ContaÍning job

FIFO
2460

O b je c t q u e u e h e a d
o b j e c t c a c h e depth

0000
08

1900

VU commandto viewthe waitingtask'sstack.To unwindthe
Use the SystemDebugger's
stack,enterthe followingcommand:

The systemdisplaysthe folkrwing:

gate /10430
Rpr,,rn.q

ín

-

16C8:01E6
(Nucleus ) receive

lnlR'OzqF

0086

1D28

0084

1D28

FFFF

17E0

0000

message

l . . . e x c e p $ p.. . l . . . . r e s p $ p -. . l . t i m e . I . r n b o xI.

We cancontinueto examineobjectsor set a breakpointat the return CS:lP. Settingthe
CS:IP(g, 29f < CR > ) in the sampleprogramcausesthe iSDM monitorto displaythe
followins:
lnterrupt

L3 at 21F0:0199 Ceneral Protecîrion ECODE:0000

is the
This message
indicatesthat the programhaltsin Gastonand that 21F0:0199
when
it
drcs.
instructionexecutins

SystemDebugger

l-19

SAMPLEDEBUG SESSION

This chapterhasshowntwo waysto find an error and two waysto maketemporaryfixes
from the SystemDebugger.The message
whenthe programhaltscontainsthe
clisplayed
CS:IPof the lastinstructionexecuting.If settingthe CS:IPat this instructionand
displayingthe surroundingcodedoesn'tgiveyou enoughinformationaboutwherethis
point is in your applicationcode,you canusecombinations
of VJ, VO, VT, VU, and VS to
Iocatethe runningtask. Then setthe breakpointat the CS:IPof the lastexecuting
instructionand displaycode,objects,and registersto determinehow the systemis
executinsthat instruction.

J-20

SystemDebugger

APPENDIX
A
iSDM"MONITOR
COMMANDS

4.1 INTRODUCTION
This appendirbrieflydescribes
the iSDM SystemDebugMonitor commandsin
alphabetical
order. A commanddirectorylistingthe functionalgroupsand pagereferences
precedeslhe commanddescriptions.For examples
and more detailedinformaîionabout
the commands,seethe ISDM Sy,stem
DebugMonitor User'sGuide.

A.2 COMMAND
DIRECTORY
This section provides a brief summ:rryof all iSDM monitor comm:rndslisted by functions.
Each entry in the following summary containsalong with the command name a brief
descriptionof the command and a page referencewhere you can find more information on
the command.

Command

FunctionPerformed

Pa,qe

PROGRAM LOADING AND EXECUTION
dP

secondary

rwúu

d'

storage

jnto

ÈJrr

tlre Larget

sli s(r'u

system's

5

memory....

C

: ^^'
q Pnr n/ 'r
B e e i n P " è r r t i' nr . eE J e

L*

Load an 8086 absolute object fiLe or an 80286
object file from a development system into

P ' u É , d , , , . . . . . . . .

. .

A-5

A- 6

rsrvry.

at

a time

N

Execute one or more instfuctions

R*

Load and execute an 8086 absolute object file
or an
80286absolute object file
in target system nemory...

iSDM" SyslemDebugger

A-3

A 6

A-8

A-l

iSDM" MONITOR COMMANDS

Function
Performed

Command

Page

I/O PORT INPUTAND OUTPUT COMMANDS
I

O

Input and display
porc...

F

M

or word from

the

specified
A-5

Output a byte or word to the specified port..........

BLOCK
C

a byte

A-1

MANIPUI-A,TION

Conpare the contents of
that of another block..

one block

A-4

Search the specified
block
of hexadecirnal digits
Copy che content of
hlnnlr nf mprnnrv

of memory t^'ith

a block

of memory for

a sequence
A-5

of memory to

another
..

A-6

MEMORY/REGISTER DISPIAY AND MODIFICATION
D

S

X

L-2

Display the
entries.

contents

of

mernory and descriptor

A-4

Display and (optionally)
modify
descripLor tabl e entri es
Display and/or modify
segment contenls.

table

nemory locations

CPU/NPX register

and
A- 8

or

rask

state
A- 9

iSDM" SystemDebugger

iSDM" MONITOR COMMANDS

Page

FunctionPerformed

Command

MISCELI-ANEOUS COMMANDS
E*

P

DÍsplay che base and offset
or an expression....
Enable Protected
mode). .
Display

outDut

Virtual

and define

C o m m a n dr e q u i r e s

control

to

the
..

Echo al1

Y*

console

Return

K*

Q

*

Exit the loader program.
developnent sys tem.
to

A-5

a fi1e.
portion

A-4

of

an address
A'-1

Address Mode (protected
A-1

symbol inforrnation.

an attached

development

.

A-9

system.

A.3 COMMANDDESCRIPTIONS
for iSDM monitorcommandsin an easily
This sectionprovidesbrief descriptions
syntax,and
order. For more informationon commandparameters,
referencedalphabetical
options,refer to the iSDM tstem DebugMonitor User'sGuùúe.

A.3.1 B-BootstrapLoad
controlto the bootstraploaderto load absoluteobjectcodefrom
The B commandpasses
secondary
storageinto your targetsystemmemory.The BootstrapLoaderloadsthe file
into the targetsystemat the memoryaddressspecifiedin the file. After the bootstrap
loaderfinishesloadingthe file, the codebeginsexecuting.To usethe B command
correctly,you mustbe operatingin real mode.
If eitherthe file you specifiedor the defaultfile doesnot exist,the bootstraploaderhalts
and takesactionaccordingto how it is configured.

Debugger
iSDM" System

A.3

iSDM. MONITOR COMMANDS

A.3.2 C-Compare
The C commandcomparesthe contentsof oneblockof memorydefinedby a rangewith
the contentsof anotherblockof memorythat beginsat a destinationaddress.The iSDM
monitorexpectsthe blocksto be equalin length. If the iSDM monitorencountersany
mismatched
bytes,it displaysthem in the folìowingformaL.
aaaa:bbbb xx

yy

aaaa:bbbb

where "aaaa:bbbb"are the addressesof the bytesthat do not match and "xx" and "yy" are
the bytes themselves.

4.3.3 D-Display Memory/Descriptor
Tables/Disassembled
lnstructions
The D commandis actuallythreecommandsin one. You canuseit to displaythe contents
of a specifie<.I
blockof memory,the contentsof an 80286/80386
descriptortable,or the
contentsof a specifiedblockof memoryin disassembled
form. Ifyou are operatingin reat
mode,you cannotdisplaydescriptortableentries.However,ifyou are operatingin
protectedmode,you canuseboth functionsof this command.

A.3.4 E-Exit
The E commandenablesyou to exit the loaderprogramby returningcontrolfrom the
loaderprogramto the development
operatingsystem.Upon return,the iSDM monitor
losesall symbolinformation.
Whenusingthe E command,you mustuseit on a line by itself;do not usemultiple
commandson a line with the E command.Also,your systemmustincludean attachetl
development
systembeforeyou can usethis command.
Whenyou reinvokethe iSDM monitorafter exitingthe loaderprogram,one of two things
happens:
.

The iSDM monitorprintseithera singleor doublepromptdependinguponwhether
you were operatingin real or protectedmodewhenyou exited.

.

The iSDM monitorprintsits usualsign-on
message
andre-initializes
itselfif you reset
your targetsystembetweenthe time you exitedthe loaderand the time you reinvoked
the iSDM monitor.

A-4

iSDM" System I)ebugger

iSDM" MONITOR COMMANDS

4.3.5 F-Find
TheF command
searches
theblockof memoryyouspecified
to determine
if it contains
the
sequence
of hexadecimal
digitsyouchosein thedataparameter.
EachtimetheiSDM
monitorfindsa match,it displays
theaddress
of thefirstmatching
byte.

A.3.6 G-Go
The G commandinstructsthe iSDM monitorto beginexecuting
your applicationprogram.
In responseto the G command,the iSDM monitorsinglestepsthe first instruction,then
executesall succeedinginstructionsat full speed.
Your applicationprogrammusthaveat least12bytesof stackavailablefor lhe iSDM
monitorto use. If you are operatingin protectedmode,eachtaskin your programmust
containat least12bytesof stackat privilegelevel0 for the iSDM monitorto use.
With 80286and 80386boards,a specialsituationariseswhenyou executethe G command
and you speci! a breakpointaddressbut not a startingaddress.If the breakpointis in an
interrupthandlerand the currentCS:IPis at a softwareinterruptinstruction(INT x,
INTO, BOUND), the iSDM monitorsinglestepsthe interruptinstruction,executingthe
interrupthandlerat full speedand bypassing
the breakpointyou set. To get arountlthis
8028ó/8038ó
operationalanomaly,makesurethat the CS:IPis pointingto the (or any)
instructionprecedingthe softwareinterruptinstructionbeforeyou executethe
G command.

A.3.7 l-Port lnput
The I commandretrievesand displaysa byteor word from the port you specify.Byte and
word formats are different. (Seethe ISDM SystemDebugMonítor User'sGuide for byte and
word format descriptions).

4.3.8 K-Echo File
The K commandcopiesall consoleoutputto a development
systemfile you specify.
Repeatingthe K commandwithoutspeciling a file causesthe iSDM monitorto stop
copyingconsoleoutput. Your systemmustincludean attacheddevelopment
systemin
orderto usethiscommand

iSDM" SystenDebugger

A-5

iSDM" MONTTORCOMMANDS

A.3.9 L-Load AbsoluteObjectFile
The L commandloadsabsolute8086or 80286objectfilesinto targetsystemmemory. The
iSDM monitorloadsthe datafrom the file into the memorylocationthat you specified
whenyou usedthe LOC86or BLD286commands.Whenloadingthe data,the iSDM
monitordiscardsall previouslyloadedsymbolinformationand loadsthe new symbol
symbols.If the file containsa register
information,but it retainsall user-defined
initializationrecord,the iSDM monitorsetsthe appropriateregistersto the valuesthe file
systemin order to usethis
specifies.Your systemmustincludean attacheddevelopment
command.
The L commandcannotload relocatable
modules.Ifyou are operatingin real mode,you
canload only 808óabsoluteobjectfiles. Ifyou are operatingin protectedmode,you can
load only 80286absoluteobjectfiles.
Whenyou load an 80286objectfile, the iSDM monitorinitializesthe first 40 global
descriptortable(GDT) entriesfor its own use. In addition,the iSDM monitor initializes
anyuninitializedinterruptdescriptortable(lDT) entries.If the access
byte is equalto
zero,the iSDM monitorassumes
that the descriptortableentry is not initialized.Referto
Intel's Microprocessor
and PeipheralHandhook,MicroststemComponentsHandbook,or
IAPX 286 OperatingSystemWiter's Guidefor more information about the descriptortahles.

4.3.10 M-Move
The M command copiesthe contentsof a block of memory to a memory addressyou

specif.

4.3.1I N-ExecuteSingleInstructions
The N commanddisplaysand executes
one or more disassembled
instructions
at a time.
Goingthroughyour applicationline-by-lineis called"single-stepping."
SingJe-stepping
allowsyou to beginat a CS:IPyou specifyand checkyour applicationfor problemsin an
instruction-by-instruction
manner.
Your applicationprogrammusthaveat least12bytesof stackavailablefor the iSDM
monitor to use. Ifyou are operaîingin protectedmode,eachtaskin your programmust
containat least12bytesof stackat privilegelevel0 for the iSDM monitorto use.
Whenyou are single-stepping
you shouldbe awareof somespecial
instructions,
considerations.Seethe ISDM S1,sîem
DehugMonitor User'sGuide îor more information
aboutthesespecialconsiderations
whenusingthe N command.

A-6

iSDM" Sysfeml)ebugger

iSDM" MONITOR CONI]!IANI)S

4.3.12O-PortOutput
The o commandallowsyou to enterdata(a byteor word) at the consoleand sendit to a
port you select.

4.3.13P-Print
The P commandallowsyou to displayeitherthe valueof an expression
or the valueof the
base(or selector)and offsetportionsof an address.The valuesare tJisplayed
on your
consoleterminalscreen.The iSDM monitoralwaysdisplaysan addressin hexaclecimal
form. Ifyou enter"P"plusan expression,
the iSDM monitorprintsthe valuein
hexadecimal.
If youenter"Pl-'or "PS"plusan expression,
the iSDM monitorprintsthe
valuein decimalor signeddecimalform, respectively.
In thiscommand,
thecommaactingasa separator
alsocauses
the iSDM nronit.rto adda
spacebetweenthe addresses
or exltressions
it displays.

4.3.14 Q-EnableProtection(80286/80386
Onty)
The Q command changesthe [ì02tlfi-or 803iJ6-based
systemfrom real ntode to protected
mode. The iSDM monitor displaysthe lbllowing mcssagewhen you use rhe e command:
Now in

Protected

Mode

Whenyou invokethiscommand,
the iSDM monitorinitializes
the entriesit needsin the
GDTandthelDT. The iSDM monirorthenplacesitselfat privilege
levelzero. Ifyou are
alreadyoperatingin protectedmodewhenyou invokethis command,the iSDM monitor
re-initializes
the GDT and IDT entries.The onlywayyou canreturn to real mocleis to
resetthe 80286or 80386hardwarc.

iSDM" SystemDebugger

A-7

iSDM* MONITORCOMMANDS

A.3.15R-Loadand Go
of the Loadcommand(L) andthe Go command(G)
The R commandis a combination
systeminto targetsystem
This commandloadsan absoluteobjectfile from a develrrpment
the
iSDM
monitorto discard
program.
This
command
causes
then
executes
this
memory
all previouslyloadedsymbolinformationand load newsymlxrlinformation;however,the
symbols.Your systemmustincludean attached
iSDM monitorretainsall user-defined
systemin order to usethis command.
development
The iSDM monitorloadsthe datafrom the file into the memorylocalionthat you specified
whenyou usedthe LOC86or BLD2ttficommands.If the file containsa register
registers
to thevaluesthe file
initialization
record,the iSDM monitorsetsthe appropriate
specifies.
in real-addressing
modules.If you areoperating
The R commandcannotloadrekrcatable
in protected
mocle,
absolute
objectfiles.Ifyou areoperating
mode,youcanloadonlyf1086
youcanloadonly80286bootloadable
(ahsolute)
files.
Whenyou load an 80286objectfile, the iSDM monitorinitializesthe first 40 global
descriptor
table(GDT) entriesfor itsown use.In addition,the iSDM monitorinitializes
any uninitializedinterruptdescriptortable(lDT) entries.Relèr Ío Intel'sMicroproces.sor
ComponentsHandhook,or APX 286 Operatíng
and Peipheral Handhook,Microsy.îtem
descriptortahles.
SystemWiter'sGuidefor more informationaboutthe 80286component's
to thevaluesthe
After the iSDM monitorloadsthefile andsetsthe appropriate
registers
file specifies,
it beginsto executethe programat the locationspecifiedby the CS and IP
regrsters.
Your applicationprogrammusthaveat lcast l2 bytesof stackavailablefor the iSDM
monitorto use. Ifyou areoperating
in protected
mode,eachtaskin yourprogrammust
containat leastl2 bytesof stackat privilege
level0 for the iSDM monitorto use.

A.3.16 S-SubstituteMemory/Descriptor
TableEntry
The S commandis actually
two commands
in one. You canuseit to displayand
(optionally)modifoeitherthe contentsof memoryor the contentsof descriptortable
entries.If you areoperaîing
in realmode,voucannotdisplayand modi! descriptor
tabÌe
entries.However,ìf ycluare operatingin protectedmode,you canuseboth functionsof
thiscommand.

A-8

iSDM" SystemDebugger

iSI)M* I\fONITOR CONII\'IANI)S

If you enterthe S commandwithoutan equalsign( = ), the |SDM monitordisplays
a
specialhyphen(-) prompt. Then,it waitsfor you to entereither
o A continuation
commainstructing
the iSDM monitorto tlisplaythe nextmcnìory
location.
.

A singleexpression
or a list of expressions
(/). By enteringan
separatedby slashes
expression
(or expressions),
you instructthe iSDM monitorto substitutethesevaluesin
placeof thosealreadyin the memorylocationyou specified.

The iSDM monitorcontinues
to issuehyphenpromptsuntilyou enterî carriagereturn.

4.3.17 X-Examine/Modify
Registers
The X commandallowsyou to examine
and(optionally)
rrodifythe contents
of your
system's
NPX antlmicroprtress,tr
rcgislcrs.
If you usethe X commandwith no parametcrs,
the iSDM ntonitordisplays
all ol the 8(Ìbo,
286,and 386registers.
If you useboththe registernameandan expression,
(for exrmple,CS = XXXX), thevalue
you entered(XXXX) is placedin the specifiedregister.
You can usethe X commandto setthe tl0tl6familyand NPX registerslnd the taskstate
segment
contents
to anyvalue.lfyou usedanyinvalitlvalues.
the iSDM monitorreports
them whenyou executethe applicationprogram.

4.3.18 Y-Symbols(80286or 80386Only)
The Y commandallowsyou to rJisplay
and definesymbolinformationgeneratedby 8028tr
translators.
If you usethe Y command
with no parameters,
the iSDM monitordisplays
all
the symbols
storedin thecurrentdomainmoduleor in all modulesif yousetno domuin.
You canalsochooseto havethe iSDM monitordisplaythe symbols
andtheirvaluesin a
particularmoduleor you can usethiscommandto defineyour own symbols.To usethis
command,
you mustbe operating
in protected
mode,with an attached
development
system.

iSDM" SystemDebugger

A-9

APPENDIX
B
D-MON386
COMMANDS

8.1 INTRODUCTION
This appendixbrieflydescribes
rhe 80386DebugMonitor (D-MoN3tì6) commancls
in
alphabetical
order. A commanddirectorylistingthe functionalgroupsand pagereferences
precedesthe commanddev:riptions.For examples
and more detailedinformationabout
the commands,seethe D-MONJ86DebugMonitorfor the 8038óllser'sGuide.

8.2 ENTERING
COMMANDS
To enterD-MON386commands,
followthe gui
)
key. A commandline canconsistof one or more commands.
.

Separatemultìplecommandson a singleline usinga semicolon(;).

o

Continuecommandsfrom one line to anotherby enteringthe slash(/) just before
terminatingthe line with rhe ENTER key or RETURN key.

.

Enter commandsusingupperor lowercasecharacters.

o

Use CTRL-C (pressingthe controlkey downwhile at the sametime pressingthe C
key) to aborta commandbeingconstructed
on the commandline.

D-MON3EóSystemDebugger

B-l

I)-MON386COMMANDS

DIRECTORY
8.3 COMMAND
This sectionprovidesa brief summaryof all D-MON386commandslistedby functions.
contains
alongwith thecommandnamea brief
Eachentryin thc followingsummary
descriptionof the commandand a pagereferencewhereyou canfind more informationon
thecommantl.
Page

FunctionPerformed

Command

BI-OCK
C O U N T / E N D C O U N TP r o v i d e s m o l ì i t o r c o m m a n d c o n t r o l
These structures enabÌe you
structures.
to enLer and repeat execution of several
cornmands
nonitor

B-5

CONTROLVARIABLES
BASE

N0-N9
$

Display or set the base nurnber system to
to either binary, octal, decimal , or
hexadecirnal
Display or set scratch registers zero
through nine...
Display or set the current execution point..

B-5
B-B
B-5

DISPLAY
EXPRESSION
EVAL

EvaLuates an expressíon
resul ts

and dispì-ays

the
8-6

EXECUTIONENVIRONMENT
G0
ISTEP
SWBREAK
ShREMOVE

B-2

Controls high-1evel execution environment. . .
EnabLes single step execution.
D i s p l a y s a n d s e t s s o f t w a r e c o c l eb r e a k s . . . . . .
Removes software code breaks.

B-1
B-8
B-9
B-10

D-MON3116
SystemDebugger

I)-MON3II6COMMANI)S

Command

FunctionPerformcd

Page

DESCRIPTORTABLE ACCESS
GDT
LDT
IDT
DT

Displays
specific
Displays
specific
Displays
specific
Displays
tabÌes.

the clobal Descriptor Table or
entries
the Local Descriptor Table or
entries.
the Interrupt
Descriptor Table or
entries
the Global or Local Descripror

B_1
B-g
B_7
ts_6

MEMORY ACCESS
ASM
BYTE
DWORD
INTn
ORDn
USE
WORD

Disassembles memory as 80386 assembler
mnemonrcs
Reads or writes bytes of memory.
Reads or writes double words of menory. ..
Reads or writes 1- , 2,, ot 4-byte integers
in memorl/.
.
Reads or \rrites 1 , 2-, or 4 byte ordinaÌs
in memory.
..
Initializes
the default for disassembling
code ro L6-bir or 32-bit.
Reads or writes rvorclsof nemory.

B _5
B-5
8-6
B _7
B_g
B-10
B-10

PAGE TABLE ACCESS
PD

Displays the Page Table Directory
table entri es

D-MON.l8óSystemDebugger

or page
B_g

Ir-3

D-MON38óCOMMANDS

Page

FunctionPerformed

Commancl

PoRTr/O
DPORT
PORT
WPORT

Reads or wrítes
Reads or \trites
Reads or writes

B 6
B-9
B-11

32-bit ports..
8-bit ports..
16-bit ports. .

REGISTERACCESS
CRECS
FLAGS
Register-name
RECS
SRECS

Disptays
Displays
register
Displays
Displays
group. .
Displays

the control registers
the lower 16 bits of the EFI-A.GS
in nnemonic form.,.
registers. . .
or modifies lndividual
as a
s
e
l
e
c
t
e
d
r
e
g
i
s
t
ers
a set of
the segmerìt registers

as a group...

8-6
B 6
B-9
B-9
B-9

TASK STATE SEGMENT ACCESS
TSS

Disptays the contenls
segment.

of

a task

state
B-10

USER AID
B
HELP
HOST
VERSION

Executes
Displays
Provides
P M O Nh o s t
DisDlavs

a real mode incerface program......
the help screen.
the capabiliLy for operation wiLh
software.
Lhe version of D-MON386

B-5
B-l
B-l
B-10

DESCRIPTIONS
8.4 COMMAND
brief cìescriptions
for D-MON3fificommandsin an easilyreferenced
This sectionprovicles
alphabetical
order. For on-linesyntaxhelp,referto the HE,LPcommand.For more
Dehug
syntax,and options,refer to the D-,ttON-18ó
informationon commandparameters,
Mottitorfor tlrc 8038(tUser'sGuitle.

B-rl

D-MON3tl6SystemDebugger

D-MON3116
COMMANI)S

8.4.1 $
This commanddisplaysor modifiesthe currentexecutionpoint via the executionaddress
register(CS:ElP). The contentsof CS:EIPdeterminewhichASM3tì6statementexecutes
next. Entering$ by itselfdisplaysthe currentcontentsof CS:EIP.

8.4.2 ASM
This commanddisassembles
codeinto ASM386opcodemnemonics.Usingthis command
you supplywith it, you candisassemble
and the addresses
from one to severallinesof code.
Disassembled
codeappearson the screenin columnform. Eachrow of columnscontains
an address,a hexadecimal
objectvalue,an opcodemnemonic,anyoperands,and
commentsappendedto the operands.

8.4.3 B
This commandinvokesa user-supplied
real modeinterfaceprogram.The B commandis
intendedprimarilyfor includinga bootstraploatJerprogram.

8.4.4 Base
This commanddisplaysor modifiesthe numberbase.Availablenumberbasesinclude
baseis the monitordefaultbase.
binary,octal,decimal,and hexadecimal.
The hexadecimal
EnteringBASE by itselfdisplaysthe currentbase.EnteringBASE followedby an
to 2, 8, 10,or 16(all tlecimalnumbers)setsthe baseto binary,
expression
that evaluates
octal,decimal,or hexadecimal,
respectively.

B.4.5 Byte
This commanddisplaysor modifiespartitionsof memoryusinga byteformat. You can
specifythe partitionasa singlebyteor a rangeof bytes.Enteringthe commandBYTE
causesthat partitionof memoryto appearon
followedby an addressor rangeof addresses
the screen.Enteringthe commandBYTE asan equationcausesthe partitionof memory
on the left sideof the equationto be replacedwith the contentsof memoryor valueof the
right sideof the equation.

8.4.6 Count/Endcount
groupsof D-MON386commandsin a specifiedorder for a
This commandexecutes
specifiednumberof times. After enteringCOUNT expr,simplyenterin commandsyou
wishto execute.After enteringENDCOUNT,one iterationof the commandswill have
alreadybeenexecuted.The entiregroupof commandsthencontinuesto executefor expr1 numberof times.

D-MON386SystemDebugger

B-5

D.MON38óCOMMANDS

8.4.7 Cregs
This commanddisplaysthe contentsof the controlregistersand the EFI-AGSregister
whenthe processoris in real mode. lf the processor
is in protectedmode,the CREGS
commandalsodisplaysthe systemaddressregistersTR and LDTR. The displayappears
numberbase.
usinea hexadecimal

8.4.8 Dport
This commandreadsor writesa 32-bitport. EnteringDPORT with the physical
input/outputaddressspaceasa l6-bit unsignedquantitycausesthe specifiedport to be
readand the contentsto appearon the screen.If you supplyan expression
to the right of
the equalsignwhenenteringthiscommand,the addressed
port is writtenwith the value
the expression
equals.

8.4.9 DT
This commanddisplaysdescriptors
from eitherthe LDT or the GDT dependingupon the
indexsuppliedwith îhe commanct.

B.4.10Dword
This commanddisplaysor modifiespartitionsof memoryusinga doubleword format. You
can displaya specificdoubleword or a rangeof doublewordsby enteringDWORD
followedby the singleaddressor the rangeof addresses.
Enteringthe DWORD command
asan equationcausesthe partitionof memoryspecifiedon the left-handsideof the
equationto be replacedwith the contentsof memoryor valueof the right-handsideof the
equation.

8.4.11Eval
This commandevaluates
the expression
enteredin after the kepvordEVAL. The results
of the expression
appearon the screenin binary,octal,decimal,hexadecimal,
and ASCII
formats.

8.4.12Flags
This commanddisplaysthe contentsof the lower 1óbits of the EFI-AGSregister.The
displayappearsin a mnemonicform. The presence
of a mnemonicindicatesa flag is set.
The absenceof a mnemonicin the disnlavindicatesa flaqis not set.

B-6

I)-MON3lt6SystemDebugger

D.MON]116COMMANDS

8.4.13GDT
This commanddisplaysthe entireGlobalDescriptorTable(GDT) or individualGDT
GDT by itselfcausesthe entireGDT to appear.
descriptors.Enteringthe key"lvord
EnteringGDT followedby an indexexpression
causesa specificdescriptorto appear.

8 . 4 . 1 4G o
This commandsupplieshigh-levelexecutioncontrol. Use of the GO commandenablesyou
to beginand end programexecutìonusingspecificpointsin the application.You canalso
clearand specifybreakconditionsusingthe GO command.

8.4.15 Help
This commanddisplaysthe major D-MON3lì6commandsalongwith their generalsyntax.
For examplesand more detailedinformationaboutthe commands,seetheD-MON38ó
DebugMonitorfor the 80386User'sGuide.

8.4.16Host
This commandprovidesthe capabilityfor operationwith PMON hostsoftware.When
enteringthis command,be sureto pressonly the E,NTERkey or a carriagereturn 
immediatelyafter HOST.

8.4.17IDT
This commanddisplaysthe entireInterruptDescriptorTable(lDT) or individualIDT
descriptors.Enteringthe kepvordIDT causesthe entireìDT to appear.EnteringIDT
followedby an indexcausesa specificdescriptorfrom the IDT to appear.

8 . 4 . 1 8l N T n
This commanddisplaysor modifiespartitionsof memoryusingan integerf ormat. When
youcansubstitute
the numbers1,2,or 4 for n. Thus,the integer
enteringthecommand,
type(s)referencedin memoryare either 1-,2-,or 4-byteintegers.You can specifythe
partitionasa singleINTn valueor a rangeof INTn values.Enteringthe commandINTn
causesthat partitionof memoryto appearon
follo'xedby an addressor rangeof addresses
the screen.Enteringthe commandINTn asan equationcausesthe partitionof memoryon
the left sideof the equationto be replacedwith the contentsof memoryor valueof the
right sideof the equation.

D-MON3E6SystemDebugger

B-7

D-MON386COMMANDS

8.4.18lstep
This commandperformssingle-step
execution.You canusethis commandto single-step
throughthe executable
one
statements.ISTEPalsoprovides
codefrom
to 255executable
the capabilityto beginexecutionfrom a point otherthanthe currentexecutionpoint.

B.4.19LDT
This commanddisplaysthe entireLocalDescriptorTable(LDT) or individualLDT
descriptors.Enteringthe keyrvordLD f causesthe entireLDT to appear.EnteringLDT
followedby an indexcausesa specificdescriptorfrom the LDT to appear.

8.4.20 N0-N9
This commanddisplaysor altersscratchregisterszero throughnine. EnteringNn (wheren
is a number0 through9) by itselfcausesthe valueof the appropriateregisterto appeuron
the screen.You canenterNn followedby an equalsignand an expression
to alter the
contentsof the appropriatescratchregister.

8.4.21ORDn
This commanddisplaysor modilìespartitionsof memoryusingan ordinalformat. When
enteringthe command,
youcansubstitute
the numbers1,2,or 4 for n. Thus,the ordinal
type(s)referencedin memoryare either l-, 2-,or 4-byteordinals.You canspecifythe
partitionas a singleORDn valueor a rangeof ORDn values.Enteringthe command
ORDn followedby an addressor rangeof addresses
causesthat partitionof memoryto
appearon the screen.Enteringthe commandORDn asan equationcausesthe partitionof
memoryon the left sideof the equationto be replacedwith the contentsof memoryor
valueof the right sideof the equation.

8.4.22 PD
This commandexaminesthe PageTableDirectoryand pagetables.When pagingis
enabled,the 80386usestwo levelsof tablesto translatea linearaddressinto a physical
address:the PageTableDirectoryand the pagetablesthemselves.Enteringthe PD
commandby itselfcausesthe entire4K PageTableDirectoryto scrollto the screen.You
can,however,supplyan indexwith the PD commandto viewa particulardirectoryentry
within the PageTableDirectory.Also,you canusethe additional,PT optionwith an index
to view a particularpagetahleentry.

B-8

D-MON-1t|6
Sysfem Debugger

D.MON38óCOMMANDS

8.4.23 Port
This commandreadsor writesa 8-bitport. EnteringPORTwith the physicalinput/output
addressspaceasa 16-bitunsignedquantitycausesthe specifiedport to be readand the
contentsto appearon the screen.Ifyou supplyan expression
to the right of the equalsign
whenenteringthis command,the addressed
port is writtenwith the valuethe expression
eouals.

8.4.24 Register-name
D-MON386enablesyou to displayor alterthe contentsof 80386registers.To gainregister
access,
enterthe nameof the registerEnteringthe nameof the registeronÌycausesthe
contentsof the registerto appearon the screen.Enteringthe nameof the register
followedby an equalsignand a valid expression
causesthe contentsof the registerto be
writtenwith the valueof the expression.For a completelist of registernames,refer to the
u-MON386DebugMonitorfor the 80386User'sGuide.

NOTE
Registermodificationis dependenton the currentprocessorprotectionmodel.
You cannotmodifyprotectedregisters.

8.4.25 Regs
This commanddisplaysthe contentsof a set of registersasa group. The registerset
dependson whichmodethe processoris currentlyoperatingunder(realor protected).
The displayis alwaysin hexadecimal,
and it provideslessdetailfor the segmentand control
that
designedfor thosegroupsof registers,
registersthan the commandthat are specifically
is SREGSand CREGS,respectively.

8.4.26 Sregs
This commanddisplays,
in hexadecimal,
the contentsof the segmentregisters(CS,DS, SS,
ES,FS,and GS).

8.4.27 Swbreak
This commanddisplaysor setscodepatchbreaks.EnteringSWBREAK by itselfcausesall
currentsoftwarebreakdefinitionsto appear.If you enterSWBREAK folÌowedby an
the commandsetsa softwarebreakat the specified
equalsignand one or more addresses,
addressor addresses.

D-MON3EóSyslemDebugger

B-9

D-MON386COMMANDS

NOTE
the addressmustbe ableto be
When specifying
softwarebreakaddresses,
written,presentin physicalmemory,and on an instructionboundary.A
maximumof 16softwarebreaksmavbe in effectat one time.

8.4.28 Swremove
This commandremovesall or selectedcodepatchbreaks.Enteringthis commandfollowed
with the
by ALL removesall currentsoftwarebreaks.If you supplyone or more addresses
command.the softwarebreaksat thoseaddresses
aloneare removed.

8.4.29 TSS
This commanddisplaysthe contentsof a taskstatesegment.TSSsupportsboth 80386and
80286taskstatesegments.Taskstatesegments
appearusingthe componentnames.

8.4.30 Use
This commandspecifiesthe default(16-bitor 32-bitcode)for disassembling
codefrom
physicalor linearaddresses.
Whenenteringthe command,the expression
to the right of
the equalsignmustevaluateto either l6 or 32 (decimal).

8.4.31 Version
This commanddisplaysthe versionnumberof the D-MON386softwareyou are using.

8.4.32 Word
This commanddisplaysor modifiespartitionsof memoryusinga word format. You can
specifythe partitionasa singleword or a rangeof words. Enteringthe commandWORD
followedby an addressor rangeof addresses
causesthat partitionof memoryto appearon
the screen.Enteringthe commandWORD as an equationcausesthe partitionof memrtry
on the left sideof the equationto be replacedwith the contentsof memoryor valueof the
risht sideof the equation.

B-10

D-MON-ì86SystemDebugger

D-MON386
COMN{ANDS

8.4.33 Wport
This commandreadsor writesa 16-bitport. EnteringWPORT with the physical
input/outputaddressspaceasa l6-bit unsignedquantitycausesthe specifiedport to be
readand the contentsto appearon the screen.Ifyou supplyan expression
to the right of
the equalsignwhenenteringthis command,the addressed
port is writtenwith the value
the expression
equals.

D-MON3tì6SystemDebugger

B - tI

INDEX
A
Alteringdescriptortableentries A-8
Altering memorycontentsA-[t, B-5,6, 7, 8, 10
Altering registercontents3-1,1,
A-9, B-8,9

B
Bootloadingfrom the monitor A-3, B-5
BootstrapLoaderDEBUG switch l-3
Breakpoints1-3,3-10,B-9,10

c
Changingcurrentinstructionpointer B-5
Changingdisassembled
code 3-15,16
ChangingdescriptortableentrycontentsA-8
ChangingmemorycontentsA-8, B-5,6, 7, 8, 10
Changingmodes A-7
Changingregistercontents3-14,A-9, B-8,9
Cl-l-restart1-3,2-3,3-10
Codeblocks,displaying3-12,ló
Commands
D-MON386B-l
Directory 2-4
iSDM" A-1
Overview 1-3
Synta\ for debugger l-3
Tokenvalidity 2-l

vB 2-5
vc 2-9
vD 2-12
vF 2-14
vH 2-16
vJ 2-18,3-18
YK 2-22
YO 2-24,3-t7,
t8
vR 2-27

SystemDebugger

lndex-.1

INDEX

Commands (cont.)

vs 2.31
w 2-36,3-17,18
vu 2-62,3-19
Comparingblocksof memory A-4
Configuration1-2
Contentsof the stack 2-31
iv,2-1
Conventions
Copyingblocksof memory A-6
Currentinstruction,displaying3-11,B-5

D
D-MON386monitorcommanddirectoryB-2
D-MON386monitorcommandoverviewB-1,5
D-MON386monitorcommands
$ B-5
Asm B-5
B B-5
Base B-5
Byte B-5
Count/EndcountB-5
Cregs 8-6
Dport 8-6
DT 8-6
Dword 8-6
Eval 8-6
Flags 8-6
GDT B-7
Go B-7
Help B-7
Host B-7
IDT B.7
INTn B-7
Istep B-8
LDT B-8
N0-N9 B-8
ORDn B-8
PD 8.8
Port B-9
Registername B-9
Regs B-9
SregsB-9
SwbreakB-9

Index.2

SystemDebugger

INDEX

D-MON386monitorcommands(cont.)
SwremoveB-10
SyntaxB-l
TSS B.1O
Use B-10
VersionB-10
Word B- l0
Wport B-11
Deadlock3-17
DEBUG command1-2,3-10
Debugsession,
sample3-1
Descriptortables,displayingA-4, 8-6, 7,8
Determiningthe baseand offsetof an addressA-7
code,displaying3-15,A-4, B-5, l0
Disassembled
Displayingblocksof code 3-12,A-4
DisplayingsymbolinformationA-9
Displayingthe numberbase B-5
DUIB information,displaying2-5

E
Echoingconsoleoutput A-5
ES registerlimit, checking3-14
Examininga mailbox 3-18
Examiningpagetabledirectoryand tablesusingD-MON3[ì6 B-fì
Examiningregistercontents3-12,13,8-6, 9
Examining
stackcontents3-19
Exampledebugsession3-l
Executinga program 3-14,15,A-5, 8, B-7
Executinga sing.le
line of code 3-13,A-ó, B-8
Exitingthe monitor A-4
Expression
evaluationA-7, 8-6

F
Findingtext A-5

G
GDT slots,displayingfree amount 2-14
Gettinghelp 2-16,B-7

H
requirements1-2
Hardware/Software
Help 2-16,B-7

SystemDebugger

lndex-3

INDEX

I
I/O ResultSegment(IORS) 2-27
Identifuingsystemcallparameterson the stack 2-31
Interpretingsystemcallparameterson the stack 2-31
Invocation1-2,3-10
IORS,displaying2-27
ISDM* monitorcommanddirectoryA-1
ISDM' monitorcommandoverviewA- 1
ISDM" monitorcommands
B - bootstrapload A-3
C - compareA-4
D - Display3-11,A-4
E - exit A-4
F - find A-5
G - go 3-10,14,15,A-5
I - port input A-5
K - echofile A-5
L - load A-6
M - move A-ó
N - singleinstructionexecution3-13,A-ó
O - port output A-7
P - print A-7
Q - enableprotectionA-7
R - load and go A-8
S - substituteA-8
X - examine/modify3-12,13,14,A-9
Y - symbols A-9

J
job tokens,displaying2-18
Job and descendent

L
Loading object files A-6, 8
Locatingrunningtasks 3-20
Loopingwithin D-MON386 B-5

M
Mailboxexamination3-18
ManualOverviewiii
Modi$ringthe numberbase B-5
Mode changìngA-7
Monitor 1-1

Index-4

SystemDebugger

INDEX

Monitorcommands
iSDM" A.1
D-MON386B-1
Movingblocksof memoryA-6

o
Object directory,displaying 2-12
Objects,displaying 2-24,3 -18

P
Ports
Displayingdata A-5, 8-6, 9, 11
Enteringdata A-7, 8-6, 9, 1l
Productoverviewiii, l-1
Programcodeexecution3-l3

o
Quittingthe debuggerl-4, A-4

R
Re-enteringthe iSDM" monitor 3-10,l5
Readerlevel iii
Redirectingconsoleoutput A-5
RemovingBreakpoints
with D-MON3U6B- 10
Registercontents,examining3-12,13
Returningto your applicationl-4

s
Sampledebugsession3-l
Searching
for text A-5
Settingbreakpointsl-3, 3-10,B-9
Single-step
executionA-6, B-8
Stackcontents2-31,3-19
Startingthe debugger1-2
Strings,displaylimitations2-35
Support 1-2
Symbolinformation,displayingA-9
Syntaxfor D-MON38(rcommandsB- I

SystemDebugger

Index-5

INDEX

Syntaxfor debuggercommands1-3,2-2

displaying
2-9
callinformation,
System
Systemcall parameterson the stack,clisplaying2-31
Systemrequirements1-2

T
Tasksystemcalls,displaying2-62
Tasktokens,displaying2-22
Tokens,displaying2-36,3-1tl

U
UsingPMON hostsoftwarewith D-MON386 B-7
Usingthe debuggerl-3,3-9

v
VB command2-5
VC command2-9
VD command2-12
Versionnumberof D-MON386,displayingB- lt)
VF commanti2-'14
VH command2-l6
VJ command2-18
VK command2-22
VO command2-24,3-17
VR command2-27
VS command2-31
VT command
Bufferpool display2-60
Compositeobjectdisplay2-47
Extensionobjectdisplay2-47
Job display2-37
Mailboxdisplay2-42,3-1Íl
Regiondisplay2-45
Segmentdisplay2-46
Semaphoredisplay2-44
Taskdisplay2-39
VT command2-36
VU command2-62

w
Warm-start 1-3,2-3

Index-6

SystemDebugger

E X T E N D EiD
RMX@II
D I S KV E R I F I C A T I O N
CA
EN U A L
U T I L I TR
Y E F E R E NM

I n t e lC o r p o r a t i o n
3 0 65 B o w e r sA v e n u e
5 an t a c l a r a c, al i f o r nr a9 5 0 5 1

C o p y r i g h 't' 1 9 8 8 ,l n t e l C o r p o r a t r o nA, l l R r g h t sR e s e r v e d

PREFACE

INTRODUCTION
tool thatrunsasa HumanInterface
Utilityis a software
The iRMX II DiskVerification
of iRMX namedand physical
the
datiì
structures
commandverifyingand modifying
volumes.
of all utility
descriptions
the utility invocationand containscìetailed
This manualdescribes
volume
of backingup andrestoring
the iRMX Il capability
commands.It alsodocuments
file descriptornodes(fnodes).
of iRMX namedvolumesasusersmustbe
the structure
In addition.the manualdescribes
Utility.
of the DiskVerification
to usethe full capabilities
familiarwithvolumestructure

READERLEVEL
of the operating
whtt havean understanding
This manualis intendetlfor programnrers
layers.To usethis
and HumanInterface
the Basicl/O System
andparticularly
system,
volume
structure.
with
iRMX
shoulcl
be
familiar
programmers
manualeffectively,
a briefrevicwof iRMX namedvolumestructure.However,thisis
AppendixA provides
anclnot asa tuttlrial.
intendedasa reference

MANUALOVERVIEW
Thismanualis organizedasfollows:
ChapterI

Disk Verification

This chapter describestwo ways of invoking the Utility: sing.l€command mode or interactivemode. It explainssingle-command
mode and how to interpret output and error messagesfrom the
single-commandverification. lt also describesthe invocation in
interactivemocleand the interactivemocleerror messages.
C o m m a n d sf o r t h e i n t e r a c t i v em o d e a r e e x p l a i n e di n C h a p t e r2 .

|ll

PREFACE

Chapter2

of the Disk Verification
This chaptercontainsdetaileddescriptions
discussed
in alphabetical
Utility commands.The commandsare
order. Whenverifyinganclmodifyingvolumes,vou shouldrefer to
this chapterfor specificinformationaboutthe format and
parametersof the commands.

Chapter3

This chapterexplainsthe fnodebackupand restorefeaturein
detail. This featureprovidesa limitedmechanismfor attempting
to recoverdatawhenthe volumelabelor the fnodefile hasbeen
damaged.

AppendixA

This appendixprovidesinformationon the format of iRMX named
volumes.lt includesdetailsof the volumelabeland fnodefile,
betweenlongand shortfiles,and format information
differences
specificto diskettes.Programmers
shouldbe familiarwith this
informationbeforeattemptingto modifya volume.

CONVENTIONS
Thismanualusesthe following
conventions:
.

whenshownin keyboard
Informationappearingas UPPERCASEcharacters
examplesmustbe enteredor codedexactlyasshown.You may,however,mix lower
whenenteringthe text.
and uppercase
characters

.

Fieldsappearingaslowercase
characters
within anglebrackets( < > ) whenshownin
keyboardexamplesindicatevariableinformation.You mustenteran appropriate
valueor symboltbr variablefields.

.

User input appearsin one of the followingforms:

as bolded

lv

text

\ríthin

a screen

.

text is usedto indicatethe first occurrence
of eachcommanddescribedin
Chapter2; subsequent
occurrences
are printedin blackink.

.

The terms"iRMX II. and "OperatingSystem"refer to the ExtendediRMX II
OperatingSystem.

.

The term "ìRMX I'refers to the iRMX I OperatingSystem(ìRMX 86 Operating
System).

.

All numbersunlessotherwisestatedare assumedto be decimal.Hexadecimal
numbersincludethe "H" radixcharacter(for example,OFFIì).

Disk Verification

CONTENTS
CHAPTER1
OISKVERIFY
INVOKING

PAGE

CHAPTER2
DISKVERIRY
COMMANDS

PAGE

Disk Verilication

CONTENTS

CHAPTER2 (continued)

PAGE

CHAPTEF3

PAGE

APPENDIX
A

PAGE

vl

Disk Verification

CONTENTS

APPENDIX
A (continued)

PAGE

TABLES
PAGE

TABLE
A-1

8-lnchDisketteCharacteristics...
5 1/4-lnchDisketteCharacteristics

.............4-21
........4-22

F IG U R E S
FIGURE
a i
a a
l-t

2-4
t <

A-t
A-2

Disk Verification

Yll

CHAPTER
1
INVOKINGDISKVERIFY

1.1 INTRODUCTION
When usingan iRMX lI applicationsystem,you will needto storedataon secondary
storagedevices.Unfortunately,occasional
powerirregularities
or accidentalresetmay
destroythe indexto the dataon thesedevices,makingthe informationinaccessible
to the
system.In somecases,
losingevcna smallamountof datacan renderan entirevolume
useless.
You needa tool to examineand fix the damagedvolume. This tool shouldenableyou to
determinehow muchof the datawasdamagedand helpyou recreatefile structureson the
damagedvolume. The iRMX II Disk VerificationUtility (DISKVERIFY) is a tool that
enablesyou to verify the consistency
and recoverdamageddataon iRMX volumes.
The Disk VerificationUtility inspects,
verifies,and correctsthe datastructuresof iRMX
namedvolumes.It canalsoverifoan iRMX physicalvolume. The Disk Verification
Utility canreconstructthe fnodefile, the volumelabel,the file descriptornodes(fnodes)
map,the volumefree spacemap,and the bad blocksmap of the volume. In addition,with
DISKVERIFY you canmanipulatefnodes,bad trackinformation,and the actualdataon
the volumes.The Disk VerificationUtility alsosupportsauto-volumerecognitionwhich
meansyou canveri! anyiRMX namedvolumewithoutdetachingand attachingthe
devicewith the correctDUIB.
You can useDISKVERIFY in one of two ways:
o As a singlecommandthat verifiesthe structuresof a volumeand returnscontrolto
the Human Interfàce
o

As an interactiveprogramthat enablesyou to checkand modifydataon the volume
by enteringdiskverificationcommands

To take full advantage
of this utility,you mustbe familiarwith the structureof iRMX
(eitheriRMX I or iRMX II asthevolumestructure
is almostthe samefor both)named
volumes.AppendixA containsdetailedinformationaboutvolumestructure.If you are
unfamiliarwith the iRMX lI volumestructure,you shouldavoidusingthe DISKVERIFY
commands.Somecommands,
if not usedcorrectly,can renderyour volumesunusable.
However,evenifyou knownothingaboutiRMX volumestructures,
you canstill usethe
Disk VerificationUtility asa singlecommandto verifythat the datastructureson an
iRMX volumearevalid.

Disk Verification

l-l

INVOKING DISKVERIFY

1.2 TNVOCATTON
To invokeDISKVERIFY, enterthe followingcommand:

where:

t-2

:logicalname:

Logicalnameof the secondary
storagedevicecontainingthe
volumeto be verified.

TO

Copiesthe outputfrom the Disk VerificationUtility to the file
specifiedin OUTPATH. If no "TO" is specified,output is directed
to the consolescreen(:CO:).

OVER

Copiesthe outputfrom the Disk VerificationUtility overthe
specifiedfile.

AF'TER

Copiesthe outputfrom the Disk VerificationUtility beginningat
the en
Vx.x
1 R M XI I D i s k V e r i f y U t i Ì i t y ,
Copyright  Intel Corporation

At the asteriskprompt,you canenteranyof the DISKVERIFY commandslistedin the
DISKVERIFY COMMANDS chapterof this manual.If you enteranythingelse,the
utility will displayan error message.

NOTE
Althoughyou canuseDISKVERIFY to veriff the systemdevice(:sd:),
note that all connections
to this deviceare deletedby the operatingsystem.
After exiting,you must reboot the systemor usethe warm start feature
(see the Extended|RMX II SystemDebuggerRet'erenceManual).

1.4 INVOCATION
ERRORMESSAGES
The followingis a list of error messages
you mightencounterwheninvokingthe Disk
Verification Utility.

l-6

argumenterror

The optionspecifiedis not valid.

, invalidlogical
name.

The logicalnamedoesnot exist;was
longerthan 12characters;contained
invalidcharacters;
or wasmissinga
matchingcolon.

0045: E$LOG NAME NEXIST
or .logical
name
doesnot exist

A nonexistent was
specified
in eitherihe:logical
name:or
outpathparameter.

 0038:
E$ALREADY_ATTACHED

The outputwasdirectedto a file on the
volumebeingverified.

commandsyntaxerror

A syntaxerror wasmadewhen entering
the command

Disk Verilication

INVOKING DISKVERIFY

< logicalname>, outstanding
connectionsto the devicehave
beendeleted.

Thiswarningis not fatal andwilì occur
everytime you try to verifu the system
deviceor anyothervolumeon whichfiles
havebeenattached.

< log.icalname> or < outpath> .
invalid wildcard specification

The logicalnameor outputpathname
containeda wildcardcharacter

< logicalname> , can'tattach
device

The devicecannotbe attachedand read.

sizein
devicesizeinconsistent
=
volumelabel  :
computedsize= < value2>

When the Disk VerificationUtility
computedthe sizeof the volume,the size
it computeddid not matchthe
informationrecordedin the iRMX II
volumelabel. The volumelabelmay
containinvalidor corruptedinformation.
Thisis not a latalcrrttr,hut it is an
indicationthat furthererror conditions
mayresultduringthe verificationsession.
You may haveto reformatthe volumeor
usethe Disk VerificationUtility to
restorethe volumelabel.

not a named disk

A NAMED, NAMEDl, or NAMED2
verificationwasrequestedfor a physical
volume.

< partiallogicalname>,
0081:E$STRING_BUFFER

The logicalnamewaslongerthan 14
in length,not includingcolons.
characters

< logicalname> , devicedoesnot
belongto you

An attemptwasmadeto verify a device
that wasattachedby anotheruser. For
example,the systemdeviceis :SD:and
USER is not the superuser.

< logicalname> , devicesizeis
zeÍo

The logicalnameentereddoesnot deline
a massstoragedevice.For example,you
cannotperformDISKVERIFY on a line
printer.

Disk Verification

r-7

CHAPTER
2
DISKVERIFY
COMMANDS

2.1 INTRODUCTION
Whenthe DiskVerification
(*) prompt,youcanenter
Utilityissues
the asterisk
infurmation
on thevolume.
DISKVERIFYcommands
to examine
or changefile structure
This processusuallyinvolvesreaclinga portionof the volumeinto a buffer,modiryingthat
buffer,andu'ritingthe informationbackto the volume. This chlpter describes
the
commands
thatenablevouto perfbrmthescoperations.
The commands
ìn thischapterarepresentcrl
in alphabetical
orderregardless
of their
function.The onÌyexception
is whentwo commancis
aresimilar,suchasDISPIAYBYTE
in its alphabetical
and DISPLAYWORD.In thiscase,the lirstcommantlis explained
order,andthe second
comnrancl
followsit with onlythe differences
described.
on the
The firstoccurrence
of eachcommandn:rmeis printedin blueink andappears
outsitleuppercornerof the page;subsequent
occurrences
are printedin blackink. Blue
or boldedtextis alsousedto indicatean entryvou makefromvourterminaÌ.
the individual
commancls,
thischapterdiscusses
commandsyntax,
Beforedescribing
It alsoprovides
a
commandnames,parameters,
inputradices.
anclerrormessages.
gives
commund
and
the
page
number
commanddictionary
that
a hriefdescription
of each
on whichthecommancl
is founcl.

2.2 COMMANDSYNTAX
in this chapter is presentedin a "railroad track'
The syntaxfor each commanclclescribeci
schematic,with syntiìcticelemeiltsscatteredalong the track. Your entrance to any given
schematicis alwaysfrom lcfì to right, beginningwith the command name entry.
Elements shown in uppercasechuractersmust tre typed in a comnrandline exactlyas
s h o w ni n t h e s c h e m a t i ch, o w e v e r y, o u m r y e n t e r t h c m i n e ì t h e r u P l ) e r c a soc r l o w e r c a s e .
Syntacticelementsshown in lowercasearc qeneric terms, which meansyou must supply
t h e s p e c i f i ci t e m , s u c ha s t h e p a t h n a n r eo l a f i l e .

Disk Verifìcation

2-l

DISK VERIFYCOMMANDS

"Railroadsidings"go throughoptionalparameterelements.In somecases,you havea

oneof several
sidings
before
returning
to themaintrack.In still
choice
of goingthrough
othercases,the maintrack itselfdivergesinto two separatetracks,whichmeansyou must
selectone trackor the otherbut not both. For example,a commandthat consistsof a
wouldlook like this:
commandnameand two ontionalnarameters

C O MM A N D

p a r a ml
F0213

You can enter this command in any one of theseforms:

The arrowsare usedhereto illustratethe possibleflow throughthe tracks.They do not
appearin the schematics
in the rest of this chapter.

2.3 COMMAND
NAMES
Whenyou entera DISKVERIFY command,you canenterthe commandnameor its
abbreviation(listedin this chapter),or you canenteranyuniqueportionof the command
name. For example,whenspecifying
the DISPLAYFNODEcommand,you can enterany
of the followins:

You canalsoenteranyotherpartialform of the word DISPLAYFNODEthat containsat
leastthe characters
DISPIAYF.

4 , .

Disk Verification

DISKVERIFT COMMANDS

2.4 PARAMETERS
SeveralDISKVERIFY commandshaveoarametersdescribedasbeine in this form:

in this form:
You canalsoentertheseDarameters

For example,both of thesespeci! a FREE command:

2.5 INPUTRADICES
format. You can
DISKVERIFY alwaysproducesnumericaloutputin hexadecimal
provide input to DISKVERIFY in any one of the following three radicesby includinga
are
radixcharacterimmediatelyafter the number.The valid radixcharacters
radix

character

example

hexadecimal

horH

16h,7CH

decimal

t or T

23t, 1007

octal

o, O, q, or Q

27o,33Q

the numberis hexadecimal.
If you omit the radixcharacter,DISKVERIFY assumes

Disk Verification

2-3

DISKVERIFY COMMANDS

2.6 ABORTINGDISI(\/ERIFY
COMMANDS
You canabort the followingDISKVERIFY commandsby enteringa CONTROL-C,
whichterminatesthe commandand returnscontrolto the Disk VerificationUtilitv lnot
the Human Interfacecommandlevell.
DISK
DISPT-AYBYTE
DISPI-AYDIRECTORY
DISPI.A,YFNODE
DISPT-AYNEXTBLOCK
DISPI-A,YPRE\'IOUSBLOCK
DISPI-A,YWORD
EDITFNODE
EDITSAVEFNODE
FIX
GETBADTRACKINFO
LISTBADBLOCKS
SUBSTITUTEBYTE
SUBSTITUTEWORD
VERIFY

2.7 DISKVERIFY
ERRORMESSAGES
EachDISKVERIFY commandcangeneratea numberof error messages,
whichindicatc
errorsin the way the commandwasspecifiedor problemswith the volumeitself. The
followingmessages
canbe generatedby manyof the commands(eachcommand
descriptionliststhe error messages
generatedby the particularcommand):

2-4

blockI/O error

The utility attemptedto reador write a blockon the
volumeand foundthat the blockwasphysically
damagedand therefore,couldnot completethe
requested
command.Or, an attemptwasmadeto
write a blockto a diskvolumethat is write
protected.The error message
stateswhetherread
or write wasperformedand the numberof the
hlockcausing
the error.

commandsyntaxerror

A syntaxerror wiìsmadein a command.

illegalcommand

The commandspecifiedis not a valid
DISKVERIFYcommand.

Disk Verification

DISK !'ERIFY COMMANI)S

fnodefile/spacemap
file inconsistent

One of the files,R?SAVEor R$FNODEMAP,is
damagedand DISKVERIFY cannotperform
furtherverification.

argumenterror

The commandwasmissingan argument,or the
argumentwas illegallyspecified.

not a nameddisk

The deviceis not a namedvolume(a tape,for
example)or the iRMX volumelabel,obtainedwhen
containsinvalitJ
DISKVERIFY beginsprocessing,
information.If the labelcontainsinvalìd
information,the utiliry(in somecases)canassume
that a namedvolumeis a physicalvolume. In this
case,the commandsthat applyto namedvolumes
onÌy(suchasDISPTAYFNODE,
DISPTAYDIRECTORY,
andVERIFY NAMED)
issuethis message.If you are surethe volumeis a
may indicatethat the
namedvolume,this message
iRMX II volumelabelis corrupted.(If the file was
formattedwith the RESERVEoptionof the
FORMAT command,DISKVERIFY issuesthis
message
only if both volumelabelsare corrupted.
Whenonly the volumelabelis invalid,the duplicate
in the saveareais used.)

seekerror

The utility unsuccessfully
attemptedto seekto a
locationon the voÌume.This error normallyresults
from invalidinformationin the iRMX II volume
labelor in the fnodes.Or. a newvolumewas
insertedafter DISKVERIFY wasinvoked.

2.8 COMMANDDICTIONARY
The commanddictionarybelowliststhe DISKVERIFY commandsin alphabetical
order
and providesa brief functionaldescriptionof eachcommand.Followingeachcommand
you can locatethecommand
nameis its uniqueabbreviation,
if any. For quickreference,
usingthe pageheadersremainingin this chapter.
Command

Synopsis

ALLOCATE

Marksa particularfnodeor volumeblock
asallocated

BACKUPFNODES
BF

Copiescurrentfnodefile into a backup
file namedR?SAVE

Disk Verification

t-<

DISK VERIFY COMMANDS

2-6

Command

Synopsis

DISK

Displavsthe attributesof the volume
beingverified.

DISPI-A,YBYTE
DB or D

Displaysthe working buffer in byte
format

DISPI-A.YWORD
DW

Displaysthe working buffer in word
format

DISPI-A,YDIRECTORY
DD

Displaysdirectorycontents

DISPI-A,YFNODE
DF

Displaysthe specifiedfnode information

DISPI.A.YSA\'EFNODE
DSF

Displaysthe fields of a singlefnode in the
R?SAVE fiIC

DISPI-AYNEXTBLOCK
DNB or > or 

Displaysthe "next"volume block

DISPI-A.YPREVIOUSBLOCK
DPB or <

Displaysthe"previous"volumeblock

EDITFNODE
EF

Edits the specifiedfnode

EDITSAVEFNODE
ESF

Edits the specifiedsavedfnode

EXIT
E

Exits the Disk Verification Utiìiry

FIX

Verifies the disk and fixesinconsistencies

FREE

Marks a particular fnode or volume block
as free

GETBADTRACKINFO
GB

Displaysthe bad track information

Disk Verifrcation

DISKYERIFY COMMANDS

Command

Synoosis

HELP
H

Liststhe DISKVERIFYcommands

LISTBADBLOCKS
LBB

Displaysall the bad blockson the volume

MiscellaneousCommands

Perform usefularithmetic and conversion
functions;the commandsincludeADD,
SUB,MUL, DIV, MOD, HEX, DEC,
ADDRESS,andBLOCK

QUIT

Exits the Disk Verification Utility

READ
R

Readsa volumeblock into the working
buffer

RESTOREFNODE
RF

Copiesone fnode(or rangeof fnodes)
from the R?SAVE file to the fnode file

RESTOREVOLUMEI-ABEL
RVL

Copiesthe duplicatevolume label to the
volume label offset on track 0

SAVE

Writes the updatedfnode map, free space
map, and bad block map to the volume

SUBSTITUTEBYTE
SB or S

Modifies the contentsof the working
buffer in byte format

SUBSTITUTEWORD
SW

Modifies the contentsof the working
buffer in word format

VERIFY

Verifies the volume

WRITE

Writes the workins buffer to the volume

o

w

Disk Verilication

a n

andvolumeblocksasallocated.
nodes(fnodes)
file descriptor
designates
Thiscommand
to designate
oneor a rangeof volumeblocksas"bad"
You canalsousethiscommand
command
is
asfollows:
the
ALLOCATE
Theformatof

INPUT PARAMETERS
fnodenum

Numberof the fnodeto allocate.This numbercan rangefrom 0
through(maxfnodes- 1),wheremaxfnodesis the numberof
fnodesdefinedwhenthe volumewasoriginallyformatted.Two
fnodevaluesseparated
by a commasignifiesa rangeof fnodes.

blocknum

Numberof the volumeblockto allocate.This numbercanrange
from 0 through(maxblocks- 1),wheremaxblocksis the number
of volumeblocksin the volume. Two blocknumbersseparatedby
a commasignifiesa rangeof blocknumbers.

OUTPUT
If you are usingALLOCATE to allocatefnodes,ALLOCATE displaysthe following
message:
 is the numberof the fnodethat the utility designated
asallocated.
If you are usingALLOCATE to allocatevolumeblocks,ALLOCATE displaysthe
following message:
is the numberof the volumeblockthat the utilitv desienated
as
allocated.

2-8

Disk Verification

ALLOCATE

If you are usingALLOCATE to designate
one or morevolumeblocksas"bad,"
ALLOCATE displaysthe followingmcssage:
(blocknun>,

block narked bad

where < blocknum> is the numberof the volumeblockthat the utility desigrrated
as"bad."
If this block was not allocatedbeforeyou attempt to designateit as "bad,"ALLOCATE
alsodisolavs
,

bLock rnarked aÌlocated

ALLOCATE checksthe alìocationstatusof fnodesor blocksbefore allocatingthem.
Therefore,ifyou speci! ALLOCATE for a block or fnode alreadyallocated,
ALLOCATE returns one of the following messages:
,

fnode

already

marked allocated

, block out of range

The block number specifiedwaslarger
than the largestblock number in the
volume.

< fnodenum> , fnode out of range

The fnode number specifiedwas larger
than the largestfnodenumberin the
volume.

no badblocksfile

The volume doesnot havea bad blocks
couldappearif an
file. This message
earlierversionof the HumanInterface
FORMAT commandwas usedwhen the
disk wasformatted.

Disk Verification

fnoclebackupfile named
This commandcopiesthe currentfnodefile into a designated
R?SAVE. R?SAVEmusthavebeenreservedwhenthe volumewastbrmatted.(That is,
the RESERVEoptionof the FORMAT commandmusthavebeenspecifietl.)The format
of the BACKUPFNODEScommantlis asfollows:

PFNODES
BACKU

INPUT PARAMETERS
None.
OUTPUT
BACKUPFNODESdisplaysthe followingmessage:
fnode

file

backed up to

save area

DESCRIPTION
commandensuresag:ìinstdatalossthat occurswhenthe fnode
The BACKUPFNODE,S
file is damagedor destroyed.To usethis command,you musthaveformattedthe volume
area(R?SAVE)
reserve
usingthe FORMAT command(V1.1or later)to createa special
the
creationof
(the
switch)
controls
RESERVE
A switchin the FORMAT command
R?SAVE. If you did not specifythe RESERVEparameterwhcn the volumewas
commandwill he unableto copythe fnodef ile to
formatted,the BACKUPFNODE.S
will be returnedindicatingthat no saveareilhasbeen
R?SAVE. An error message
reserved.In thiscase,the volumemustbe refìrrmattedif you wishto usethe
BACKUPFNODESctrmmanti.
The FORMAT commandwritesthe initializedcopyof the fnodefile into R?SAVE
Therefore,you do not haveto useBACKUPFNODIISto backup a newlyformatted
you can routinely(for example,oncea ciay)backuptiodcs to
volume. Subsequently,
thedatain the fnodefile. You cando thisby
in
R?SAVE
matches
the
data
assurethat
commandor thc HumanInterficeSHUl'DOWN
usingeitherthe BACKUPFNODES
seethe
on SHI.J-I'DOWN,
with the BACKUPoption.(For moreinformation
commantl
Intarfitce.)
II
Human
Operator'sGuideto the Extanded|RMX

Disk Verification

2-tl

BACKUPFNODES

NOTE
Be sure that the current fnode file is valid before executingthe
BACKUPFNODE command(usingNAMED verification).
ERROR MESSAGES
argumenterror

Whenthe commandwasentered,an
argumentwassupplied.
BACKUPFNODESdoesnot acceptan
argument.

no saveareawasreservedwhen
volumewasformatted

The volumehasnot beenformattedto
supportfnodebackup.To allowfuture
useof backupfnodes
on this volume,you
shouldinvokethe Human Interface
BACKUP commandto savethe dataon
the volume,reformatthe volumewith a
savearea(usingthe RESERVEoptionof
the FORMAT command),and finally,
restorethe volumedata.

not a nameddisk

The volumespecifiedwhenthe Disk
VerìficationUtility wasinvokedis a
physicalvolume,not a namedvolume.

EXAMPLE
super- dlskvertfy
: sd: (CR.>
1 R M XI I D i s k V e r i f y U t j - l i t y , V x . x
Copyríght  Intel Corporat i on
:sd:, ouÈstanding connections Èo device have been deleted
ìtsverify NAI{ED 

B I T M A P SO .K .
*backupfnodes  or bf 
fnode ffle backed up to save area

2-t2

Disk Verilication

This commanddisplaysthe attributesof the volumebeingverified. You can abortthis
commandby typinga CONTROL-C. The formatof the DISK commandis asfollows:

INPUT
None.
OUTPUT
The output of the DISK commantldependson whetherthe volumeis formattedas a
physicalor namedvolume. For a physicalvolume,the DISK commanddisplaysthe
following information:
devfce
P'rysrLdr

narne



uaDN

devlce granularity
block size
mrnber of blocks
volune s ize



(numblocks)


wnere:
< devname>

Nameof the devicecontainingthe volume. This is the physical
nameof the device,as specifiedin the ATTACHDEVICE Human
Interfacecommand.



Granularityof the device,asdefinedin the DeviceUnit
InformationBlock(DUIB) for the device.Referto the Guideto
the Ertended .RMX II Interactive Configuration Utility for more
informationaboutDUIBs. For physicaldevices,this is alsothe
volumeblocksize.

>
< numblocks

Numberof volumeblocksin the volume.

< size>

Sizeof the volume,in bYtes.

Disk Verification

2-13

DISK

For a nametlvolume,the DISK commanddisplaysthe followinginformation:

named disk,
ucvrrE

device
volume
Ér

d,,urdr

narne
narne
r LJi

block s ize
nurnber of blocks
nunber of free blocks
volune size
interleavè
extension size
nunber of fnodes
nuxober of free fnodes
save area reserved





{numblocks)





(nurnfree fnode s)
(yeslno)

fieldsarethe sameasfor
The ,,,and
physicalfiles. The remainingfieldsare asfollows:


Nameof the volume,asspecifiedwhenthe volumewasformatted.



Volumegranularity,as specifiedwhenthe volumewasformatted.

< numfreeblocks
>

Numberof availablevolumeblocksin the volume.



The interleavefactorfor a namedvolume.



Size,in bytes,of the extensiondataportionof eachfile descriptor
node(fnode).

< numfhodes
>

Numberof fnodesin the volume.The fnodeswerecreatedwhen
thevolumewasformatted.

< numfreefnodes
>

Numberof availahlefnodesin the namedvolume.

saveareareserved

Indicateswhetherthe R?SAVEfile is reservetllbr volumelabel
and fnodefile backups.

Referto AppendixA of this manualor to the descriptionof the FORMAT commandin
the Operetor'sGuideto the Ertended|RMX II Human Interfacefor more information about
the nameddiskfields.
DESCRIPTTON
The DISK commanddisplaysthe attributesof the volume. The format of the outputfrom
DISK dependson whetherthe volumeis formatted:rsa namedor physicalvolume.
ERRORMESSAGES
None.

2-11

Disk Verifìcation

DISK

EXAMPLE
The followingexampleshowsthe outputof the DISK commandfor an 5.25-inchdiskette.
:f0: 
super- dlskverlfy
iRMx ll Disk Verify Utility. vx.x
Copyright  Intel CorporatÍon
*dfsk


device name
named disk, volume narne
device granularicy
block size
nurnber of b I ocks
n u m b er o f f r e e b l o c k s
volume size
i n t e r 1 ea v e
extension size
nurnber of fnodes
nurnber of free fnodes
s a v e a r e a r e s er v e d

Disk Verification

wnfdx0
rmx2 8 6
0200
0200
0000027c
000001E9
0004F800
0005
03
OOCF
008[
no

2-15

displays
portionof theworkingbufferin BYTEformat.It
Thiscommand
thespecified
displays
thebufferin 16-byte
rows.Youcanabortthiscommand
bytypinga CONTROLC. Theformatof theDISPI-AYBYTE
command
is asfolìows:

INPUT PARAMETERS
startoffset

Numberof the byte,relativeto the startof the buffer,that begins
the display.DISPI-AYBYTEstartsthe displaywith the row
containingthe specifiedoffset. Ifyou omit this parameterand the
endoffsetparameter,DISPI-A.YBYTEdisplaysthe entireworking
buffer.

endoffset

Numberof the byte,relativeto the startof the buffer,that endsthe
display.If you omit this parameter,DISPII,YBYTE displaysonly
the row indicatedby startoffset.However,ifyou omit both
startoffsetand endoffset,DISPLAYBYTE displaysthe entire
workinsbuffer.

OUTPUT
In responseto the command,DISPI-AYBYTEdisplaysthe specifiedporrionof the
workingbuffer in rows,with 1óbytesdisplayedin eachrow. Figure2-l illustratesthe
format of the disolav.

2-16

Disk Verification

DISPLAYBYTE

As Figure 2-1 shows,DISPT-AYBYTEbeginsby listing the block numberwhere data
residesin the working buffer. It then lists the specifiedportion of the buffer, providing
the columnnumbersasa headerand beginningeachrow with the relativeaddressof the
of
first blte in the row. It alsoincludes,at the right of the listing,the ASCII equivalents
printable
the bytes,if the ASCII equivalents
are printablecharacters.(lf a byteis not a
position.)
character,DISPIAYBYTE displaysa periodin the corresponding
*dlsplaybyÈe 7,13 
BLOCKNUHBER- blocknum
A B c D E F
2 3 4 5 6 7 I9
offset 0 |
0000 00 01 02 03 04 05 06 07 08 09 0A 0B 0c 0D 0E 0F
0010 61 6E 20 65 F8 61 6D 70 6C 65 20 20 20 20 20 20

AscII STRING
an example

Figure2-1. DISPLAYBYTEFormat
DESCRIPIION
DISKVERIFY maintainsa workingbufferfor READ and WRITE commands.The size
of the bufferis equalto the volume'sgranularityvalue. Alier you reada volumeblockof
memoryinto the workingbufferwith the READ command,you can displaypart or all of
that buffer,in BYTE format,by enteringthe DISPT-AYBYTEcommand.
DISPI-A,YBYTE displaysthe hexadecimalvalue for eachbyte in the specifiedportion of
the buffer.
DISPI-A.YBYTEdisplaysthe entireblockstoredin the
If you omit all parameters,
working buffer.
ERRORMESSAGES
argumenterror

A syntaxerror wasmadein the command
or a nonnumericcharacterwasspecified
in one of the offsetparameters.

< offset>, invalid offset

Either a largervalue wasspecifiedfor
startoflsetthanfor endoffsetor an offset
valuelargerthan the numberof bytesin
the blockwasspecified.

Disk Verification

2-17

the
command,
exceptthatit displays
Thiscommand
is thesameasthe DISPL.AYBYTE
pcr row, Thetbrmatof theDISPT-AYWORD
workingbufferin WORDformat,fì-words
command is as follows:

EXAMPLES
Assuming
that thevolumegranularìty
is 128bytesandthatyou havereadblock20H into
theworkingbufferwith the READ commanrl,
theftrllowing
commanci
thatblock
clisplays
in WORD format.
*DISPIAYTJOR.D



BLOCK NUHBER:

20

offset

0000
0010
0020
0030
0040
00s0
0060
0070

o
0000
0000
0000
1F25
0001
0000
0000
0000

2
0000
0080
0000
0000
0000
0000
0000
0000

4
0000
0000
0500
002E
0001
0000
0000
OOOl

6
0000
0000
0000
0000
0080
0000
0000
FFOF

8
A
0000 0000
0000 0001
0000 0025
1 F 2 5 0000
0 0 0 0 0000
0 0 0 0 0000
0000 0000
OOFF 0 0 0 0

C

E

0000
FFOt'
0108
002B
0000
0000
0080
0000

0000
00FF
FFFF
0000
0000
0000
0000
0500

The ibllowìngcommanddisplaysthe portionof the blockthat containsthe offsets3 I h
through45h(wordsbeginning
at odd addrcsses).
*DI{ 31, 45 
: 20
BLOCKNUMBER
offset
0 03 1
0041

2-18

O
2
4
6
8
C
E
0 0 l F 2E 0 0 0 0 0 0 2 5 0 0 0 0 l F 2 8 0 0 0 0 0 0 0 1 0 0
0000 0100 8000 0000 0000 0000 0000 0000

Disk VerifÍcalion

DISPLAYWORD

The followingcommanddisplaysthe portionof the blockthat containsthe ollsets30h
through45h (wordsbeginningat evenaddresses).
*DIS PIAYSORD30, 45 
BLOCKNUMBER- 20
offset

0030
0040

Disk Verification

C
E
8
A
4
6
0
0
2
8
0000
0000
rF25 0000 002E 0000 1F25
0001 0000 0 0 0 1 0 0 8 0 0000 0000 0000 0000

O

2

2-r9

Thiscommand
listsall thefilescontained
in a directory.Youcanabortthiscommand
by
a
CONTROL-C.
The
format
of
the
DISPLq.YDIRECTORY
command
is
as
ryping
follows:

INPUT PARAMETER
fnodenum

Numberof the fnodethat corresponds
to a directoryfile. This
numbercanrangefrom 0 through(maxfnodes- 1),wheremax
fnodesis the nurnberof fnodesdefinedwhenthe volumewas
originallyformaued. DISPI-AYDIRECTORY lists all files or
directoriescontainedin this directory.

OUTPUT
In responseto the command,DISPI-AYDIRECTORYlistsinformationaboutall files
containedin the specifieddirectory. The format of this dìsplayis as follows:
FILE NAME FNODE TYPE
(fnode) (type)
 

FILE NAMEFNODE TYPE
(filenam)
(filenam)

(fnode)
(fnode)

(type)
  
 (fnode) 

Nameof the file or directorycontainedin the directory.

< fnode>

Numberof the fnodethat describes
the file.

2-20

Disk Verification

DISPLAYDIRECTORY

type>

Type ofthe file. The  can be
Tlpe of file

Descrintion

DATA
DIR
SMAP
FMAP
BMAP
VI-A.B

data files
directoryfiles
volume free spacemap
free fnodesmap
bad blocksmap
volumelabelfile

DESCRIPTION
DISPI-AYDIRECTORYdisplaysa list of filescontainedin the specifieddirectory,along
with their fnodenumbersand tvoes.You canthen useotherDISKVERIFY commandsto
examinethe individualfiles.
ERRORMESSAGES
argumenterror

A nonnumericcharacterwasspecifiedin
the fnodenumparameter.

< fnodenum> , fnodenot
allocated

The numberspecifiedfor the fnodenum
parameterdoesnot correspondto an
allocatedfnode. This fnodedoesnot
representan actualfile.

,not a directory
fnode

The numberspecifiedfor the fnodenum
parameteris not an fnodefor a directory
file.

< fnodenum> , fnodeout of range

The numberspecifiedfor the fnodenum
parameteris largerthan the largestfnode
numberon the volume.

Disk Verification

2-21

DISPLAYDIRECTORY

EXAMPLE
The following command lists the files contained in the directorv whose fnode is fnode 6.
*DISPIAYDIRICTORY6



FILE NAME FNODETYPE FILE NAME FNODETYPE
FILE NAME FNODETYPE
R?SPACEMAP OOO1SMAPR?FNODEMAP OOO2FMAPR?BADBLOCKMAPOOO4BMAP
R?VOLUMEU,BEL OOO5VTAB
R?SAVE 0007 DATA
Rlfl(286 0008 DIR
M1TILE
OOO9DATA YOURFILE OOOADATA
ONEFILE OOOBDATA

) -)7

Disk Verification

with an fnode. You canabortthis command
This commanddisplaysthe fieldsassociated
by typinga CONTROL-C. The formatof the DìSPTAYFNODEcommandis asfollows:

INPUT PARAMETER
Numberof the fnodeto be displayed.This numbercanrangefrom
0 through(maxfnodes- l), wheremaxfnodesis the numberof
fnodesdefinedwhenthe volumewasorisinallyformatted.

fnodenum

OUTPUT
In responseto this command,DISPIAYFNODE displaysthe fieldsof the specified
fnode. The formatof the displayis as follows:
Fnode nuuber - 
flags
tYPe
t.. ^ l

LLL-

--^^

ÉLdtt/

OIJTìET

create ,access,mod t imes
t^È^r

Ltr.-

bl-ock pointer
block pointer

(1)
(2)

hl

/?\

nrlz

nnJ nrpr

block pointer

(4)

t'l^-L

^^i-r-r

/5\

hl nrlz

nai ntar

l6ì

block
block

n..ahÈ

pointer (7)
(8)
pointer
this size
id count
accessor (1)
aeeessor (2)
accessor (3)
rh or lz 



, ,
, 
, 
, 
, 
, 
, 
, 
, , 


, 
, 




t-t1

DISPLAYFNODE

where:
< fnodenum>

Number of the fnode being displayed.If the fnode doesnot
describean actualfile (that is, if it is not allocated),the following
message
appearsnextto this field:
*** AILOCATION STATUSBIT IN THIS FNODE NOT SET ***
In this case,the fnode fields are normally set to zero.

< pathname>

FulÌ pathnameof the file describedby the fnode. This field is not
displayedif the fnode doesnot describea file.

< flgr >

A word defining the attributesof the file. Significantbirs of
this word are as follows:
Bit

Meaning

0

Allocationstatus.This bit is set to 1 for
allocatedfnodesand 0 for free fnodes.

1

Long or shortfile attribute.This bit is set to 1
for long files and 0 for short files.

5

Modificationattribure.This bit is set to 1
whenevera file is modified.

ó

Deletionattribute.This bit is setro 1 to
indicatea temporaryfile or a file to be deleted.

The DISPLAYFNODEcommanddisplaysa message
nexrto this
field to indicatewhetherthe file is a longor shortfile.
< typ >

Type of file. This field containsa value and a descriptionwhich is
displayednextto the value. The possiblevaluesand descriptions
are as follo\À's:
Value

Descriptions

00
01
02
03
04
06
08
09

fnode file
volumemap file
fnodemap file
accountfile
bad block file
directoryfile
data file
volumelabelfile

< gran >

File granularity,specifiedasa multipleof the volumegranularity.



User ID of the ownerof the file.

2-24

Disk Verification

DISPLAYFNODE


< acctime>


and
Time and dateof file creation,lastaccess,
last modification. Thesevaiuesare expressedas
the time,in seconds,
sinceJanuary1, 1978.

< totsize>

Total size,in bytes,ofthe actualdata in the fiìe.



Total numberof volumeblocksusedby the file, includingindirect
block overhead.

< blks>, < blkptr >

Valuesthat identify the data blocksof the file. For short files, each
< blks> parameterindicatesthe numberof volume blocksin the
data block,and each  is the number of the first such
volumeblock. For long files, each  parameterindicatesthe
number of volumeblockspointed to by an indirect block, and each
 is the block number of the indirect block.

< thissize>

Sizein bytesof the total data spaceallocatedto the file, minus any
spaceusedfor indirect blocks.

< count>

with the file.
Numberof userIDs associated

< access> , < id >

Each pair of fields indicatesthe accessrights for the file and the ID
ofthe userwho hasthat accessID. Bits in the field are
set to indicatethe following accessrights:

Bit

Data File
Ooeration

Directory
Operation

0
1
2
3

delete
read
append
update

delete
list
add entry
changeentry

The first ID listedis the owner'sID.


Fnodenumberof the directoryfile that containsthe file.



Checksumof the fnode.



Auxiliary bytesassociatedwith the file.

Appendix A containsa more detaileddescriptionof the fnode fields.
DESCRIFTION
Fnodesare systemdatastructureson the volumethat describethe fileson the volume.
The fnode structuresare createdwhen the volume is formatted. Each time a file is
createdon the volume,the iRMX II BasicI/O Systemallocatesan fnodefor the file and
fills in the fnode fields to describethe fiìe. The DISPI-A.YFNODEcommandenablesyou
to examinethesefnodesand determinewherethe datafor eachfile resides.

Disk Verification

)-r\

DISPLAYFNODE

ERRORMESSAGES
argumenterror

The valueenteredfor the fnodenum
parameterwasnot a legitimatefnode
number.

< fnodenum >,fnode out of range

The number specifiedfor the fnodenum

parameteris largerthanthe largestfnode
numberon the volume.
The pathnamespecifiedcouldnot be
retrieved.Possible
causesof this error
are seekerror,I/O error,or invalid
parent.

Unable to get pathname
< reason>

EXAMPLE
The followingexampledisplaysfnode 10of a volume. This fnoderepresents
a directory.
XDISPIAYFNODE 10
Fnode number
nr

rh

n.mo

:



I0

/M\'nTP
flaoc

tyPe

create
cotal

ollTte r
a
c
c
e
s
s
,
m
o
d
times
,
size, total
b locks
hl ^.L n^ínrar
/ I I

block polnter

(2)

hl anlr

nni nrar

t ìl

L9 rlv^L ^^ 1 .

-^i-+^P9llrLq!

\Y/

h l arlz

nni ntar

r ( \

h l nalz nnJnrar

i'At

hìnnlr

nnintar

/7\

h1 nnL

-^i

/ e\

//,\

^t-r

this size
fd count

n.ranr

ecno<short fi Ie
06:)directory fl le
01
FFFF
I02L9017, 10219E58,1 0 2 1 9 E s 8
0 0 0 0 0 3 6 0 0, 0 0 0 0 0 0 1
0001, 000050
0000,000000
0000,000000
0000,000000
0000,000000
0000,000000
0000,000000
0000,000000
00000400
0 00 1
OF, FFFF
00,0000
00,0000
0006, 0000
000000

Disk Verifìcation

This commandis identicalto DISPI-AYFNoDE,exceptthe DISPLAYSAVEFNoDE
takesthe fnodeinformationfrom the R?SAVEfile, and displaysthe fnodeas saved.
R?SAVEmusthavebeenreservedwhenthe volumewasformatted.(That is, the
RESERVEoptionin the FORMAT commandmusthavebeenspecified.)The format of
commandis asfollows:
the DISPT-AYSAVEFNODE

D I S P L A Y S AFVN
EO D E

f n o d e n um

F0212

ERRORMESSAGES
argumenterror

Whenthe commandwasentered,no
argumentwassupplied.
requiresa
DISPTAYSAVEFNODE
designation
of the fnodenumber.

< fnodenum> , fnodeout of range

The numberspecifiedfor the fnodenum
parameteris largerthan the largestfnode
numberon the volume.

no savearea was reservetlwhen
volume was formatted

The volumewasnot formattedto support
backupfnodes.This meansthe
RESERVEoptionwasnot specified
whenthe volumewasformatted.

Unableto get pathname
< reason>

The pathnamespecifiedcouldnot be
retrieved.Possiblecausesof thrserror
are seekerror, I/O error,or invalid
parent.

Disk Verífication

2-27

This commanddisplaysthe "next"volumeblock. (The "next"volumeblockis the block

formatcan
immediately
following
theblockcurrently
in theworkingbuffer.)Thedisplay
be either WORD or BYTE. The utility remembersthe mode in which you displayedthe
volume block currently in the working buffer, and it displaysthe next block in that format.
So, if you usedDISPI-AYBYTE to displaythe current volume block, the next volume
blockappearsin BYTE format;if you usedDISPLAYWORD,the nextvolumeblock
appearsin WORD format. DISPLAYNEXTBLOCKusesthe BYTE format as a default
ifyou havenot yet displayeda volumeblock. You canabortthis commandby typinga
CONTROL-C. The format of the DISPTAYNEXTBLOCK commandis as follows:

DI5PLAYNEXTELOCK
CARRIAGERE-TU
RN

F 0.205

OUTPUT
In responseto the command,DISPI-AYNEXTBLOCKreadsthe "next"volumeblockinto
the workingbufferand displaysit on the screen.
DESCRItrTION
The DISPI,AYNEXTBLOCKcommandcopiesthe "next"volumeblockfrom rhevolume
to the workingbufferand displaysit at your terminal. It destroysanydatacurrentlyin the
workingbuffer. Oncethe blockis in the workingbuffer,you canuse
SUBSTITUTEBYTEand SUBSTITUTEWORDto changethe datain the block. Finally,
you canusethe WRITE commandto write the modifiedblockbackout to the volume.

NOTE
If you specifothe DISPI-AYNEXTBLOCKcommandar rhe end of the
volume,the utility'Vrapsaround"and displaysthe first blockin the
votume.

2-28

Disk Verification

This commandis identicalto DISPLAYNEXTBLOCK exceptthat it displaysthe volume
blockprecedingthe currentblockin the workingbuffer. The format of the
DISPI-AYPREVIOUSBLOCKcommandis asfollows:

F0206

Disk Verification

2-29

This commandallowsyou to edit valueswithin a specilìedfnode. It canbe abortedby
enterinsCONTROL-C. The formatof the EDITFNODE commandis

INPUT PARAMETER
fnode

Numberof the fnodeto edit. This numbercanbe in the rangeof 0
through(maxfnodes- l), wheremaxfnodesis the numberof fnodes
definedwhenthe volumewasorisinallvformatted.

OUTPUT
When EDITFNODE is invokedit displaysthe followingmessage:
Fnode nurnbe r -

nnnn

wherennnn is the numberof the fnodeyouwant îo edit. The first field of the fnodeis
displayedwith its currentvalue,asfollows:
f lags(xxxx) :

wherepoo

No modificationto the field.

numericalvalue < CR >

The newvalueto be assigned.
This valueis alwaysinterPreted
ashexadecimal.

Quit or Q or c1< CR >

Skipthe remainingfieldsand
displaythe query.

and
other thanthoselistedabove,causesthe field to remainunchanged,
Any response,
the nextfield to be displayed.
Oncethe fnodehasbeenupdated,you canuseDISPLAYFNODE to examinethe
you made. Changingthe contentsof an fnode
contentsof the fnodeand the changes
causesit to havea bad checksum.UseFIX with the NAMED1 optionto correctit. For
of FIX later in thischapter.
more details,seethe ex?lanation
ERRORMESSAGES
argumenterror

The optionspecifiedis not valid.

, fnodeout of
range

The fnodenumberspecifiedwaslarger
than the largestfnodenumberon the
volume.

Errorin Input

Invalidinputwasenteredwhile editingan
entry.

Disk Verification

2-l t

EDITFNODE

EXAMPLE
The followingexampleillustratesusingEDITFNODE to edit fnode 10.
*edltfnode
10 
fnode nurnber - 10
flags(0025):
type(0006):
flle gran/vol gran(01) : 
owner(0FFFF): 0 
créatè time(1O2I9CR2): q 
Encering "q'r causes the modified fnode to be displayed.
fl ags
tYPe
s.:1^
r r rE

-,-.^
ó!drrl

vur

ÉLdrr
OIJTìE r

c r e a t e , a c c e s s ,m o d t i n e s
t o t a L s i " z e ,t o t a l b l o c k s
block poínter (1)
block pointer (2)
block pointer (3)
block pointer (4)
block pointer (5)
hl oelr

nai nror

/6 t

block pointer

(7)

hl ó.L

1R\

n^int

ar

this size
i.d count
accessor (1)
accessor (2)
accessor (3)
nr rén t_

e h a r l z< " -

aux ( *)
l,lrice back? yes 
Fnode has been updated

2-32

0025 -)short
OA:>rlirartnrrr

fi Ie
fí1a

01
0000
1 0 2 1 9 C 8 21,0 2 1 9 C C 81 ,0 2 1C
9C8
0 0 0 0 0 3 6 0 0, 0 0 0 0 0 0 1
0001, 0000s0
0000, 000000
0000,000000
0000,000000
0000, 000000
0000, 000000
0000,000000
0000, 000000
00000400
0001
OF, FFFF

00, 0000
00, 0000
0006, 0000
000000

Disk Verification

EDITSAVEFNODE is identicalto EDITFNODE, exceptthat it allowsyou to edit an
fnodefrom the R?SAVEfile. (R?SAVEmusthavebeenreservedwhenthe volumewas
the fnodeassavedwhendisplayingthe fnode
formatted.)In addition,it designates
number. You can abortthis commandby enteringCONTROL-C. The format of the
EDITSAVEFNODE commandis

ERRORMESSAGES
are the sameasin EDITFNODE with the additionof the following
The error messages
messaqe.
no saveareawas
reseryedwhenvolume
wasformatted

Disk Verification

The volumewasnot formattedto support
backupfnodes.This meansthe RESERVEoption
wasnot soecifiedwhenthe volumewasformatted.

2-33

This commandexitsthe Disk VerificationUtility and returnscontrolto the Human
Interfacecommandlevel. The format of the EXIT commandis asfollows:

r o20t

This commandis identicalto the QUIT command.

NOTE
Althoughyou canuseDISKVERIFY to verify rhesysremdevice(:sd:),
note that all connections
to this deviceare deletedby the operatingsystem.
After exiting,you mustrebootthe systemor usethe warm startfeature
(see the ErtendediRMX II SystemDebuggerRet'erence
Manual).

2-34

Disk Verification

This commandverifiesthe volumein the samewayasthe VERIFY commandto
determineif the dataon the volumeis consistent.In addition,this command"fixes"
variouskindsof inconsistencies
discovered
duringverification.You can abortthis
commandby enteringCONTROL-C. (CONTROL-Cis ignoredwhenFIX is writingto
the volumein order to preventinconsistencies
on the volume.)
BecauseFIX and VERIFY performthe sameverificationfunctionsand generatethe
sameerror messages,
only the additional
the commanddescriptiongivenbelowdescribes
functionsof FIX. For a completeexplanation
of the veriff functions,seethe VERIFY
commanddescribed
later in this chanter.The formatof the FIX commandis:

Disk Verification

2-35

Ftx
INPUT PARAMETERS
NAMED1 or N1

PerformsNAMEDl verification and fixesthe following
inconsistencies:
.

Fixesbad checksums

.

Attachesorphanfnodesto their parents.An orphanfnodeis
an fnodecontainedwithin a directoryandwhoseparentfield
doesnot point backto this directory.If the parentfield of the
specifiedfnode points to a secondvalid directory,and the
seconddirectory alsopoints to the fnode, no fix is performed
sincethe specifiedfnode belongsto an existingdirectory. This
(discussed
in NAMED2).
is a caseof multiplereferences

If the parentfield doesnot point to a valid parent,the parentfield
is fixed to point to the directorythat containsthis fnode in its fiìe
list.

NAMED2 or N2

PerformsNAMED2 verification and fixesthe followins
inconsistencies:
.

Removesfnodesfrom their iilegalparents.If there is a multiple
referenceto an fnode,the fnodeis removedfrom the
directoriesthat it doesnot point to (if FIX wasperformedwith
NAMEDl, the fnodeshouldnow point to onevalid parent).

r

Savesfnodeand blockbit mapson completionof NAMED2.

NAMED or N

Performsboth the NAMEDI and NAMED2 verificationfunctions
on a namedvolumeand fixesthe inconsistencies
definedfor these
options.

ALL

Performsall operationsappropriateto the volume.For named
volumes,this optionperformsboth the NAMED and PHYSICAL
verificationfunctions.For physicalvolumes,this optionperforms
only the PHYSICALverificationfunction.For both NAMED and
PHYSICAL volumes,ALL performsthe fixesfor the relevant
verifications.

PHYSICAL

PerformsPHYSICALverificationand savesthe bad blockbit man.

LIST

Liststhe file informationdisplayedin Figure2-3for any
verificationthat includesNAMED l.

2-36

Disk Verilication

FIX

OUTPUT
(seeFigures
2-3,2-4,and2-5)
FIX produces
thesameoutputastheVERIFYcommand
withadditional
messages
displayed
whenaninconsistency
is fixed.NAMEDl output
includes
thesemessases.
Checksum Fixed
fnode nnnn was a t t a c h e d

to parent

nnnn

The first messageappearsafter a bad checksumis fixed. The secondmessageis displayed
whenthe parentfield of an fnodeis modifiedto point to a valid parent.
is removedfrom
whenan fnodewith multiplereferences
NAMED2 displaysthis message
the directory.
fnode

rernoved frorn this

dlrectory

FIX
but hasnot beenreferenced,
If an fnodeexistson a diskand is markedallocated,
issuesa warningmessage
and asksif you wantto savethe bit maps.This preventsSAVE
from freeing this fnode and its blocksand possiblycausinga file to be lost.

Disk Verification

2-37

It also
fnodesandvolumeblocksasfree(unallocated).
designates
Thiscommand
is as
volumeblocksfromthebadblocksfile. Theformatof theFREEcommand
removes
follows:

INPUT PARAMETERS
fnodenum

Numberof the fnodeto free. This numbercan rangefrom 0
through(maxfnodes- l), wheremar fnodesis the numberof
fnodesdefinedwhenthe volumewasoriginallyformatted.Two
by a commasignifya rangeof fnodes.
fnodevaluesseparated

blocknum

Numberof the volumeblockto free. This numbercanrangefrom
0 through(maxblocks- 1),wheremar blocksis the numberof
volumeblocksin the volume. Two blocknumbersseparated
by a
commasignif a rangeof blocknumbers.

OUTPUT
Ifyou are usingFREE to deallocatefnodes,FREE displaysthe followingmessage:
, fnode narked free

where is the numberofthe fnodethat the utilitv desisnated
asfree.
If you are usingFREE to deallocate
volumeblocks,FREE displaysthe followingmessage:
,

block

marked free

where < blocknum> is the numberof the volumeblockthat the utilitv desisnated
as free.

2-18

Disk Verification

FREE

Ifyou are usingFREE to designate
one or more "bad"blocksas"good,"FREE displays
the following message:
,

block marked good

where < blocknum> is the numberof the volumeblockthat the utilitv desisratedas
"good."
FREE checksthe allocationstatusof fnodesor blocksbeforefreeingthem. Therefore,if
you specifyFREE for a blockor fnodethat is alreadyunallocated,
FREE returnsone of
the followingmessages:
, fnode already

marked free

(blocknum>,

block

already

marked free

(blocknun>,

block

already

marked good

DESCRIPTION
Free fnodesare fnodesfor whichno actualfilesexist. FREE designates
fnodesas free by
updatingboth the F[-{GS field of the fnodeand the free fnodesmap file.
Freevolumeblocksare blocksthat are not part of anyfile; theyare availableto be
assigned
to any newor currentfile. FREE designates
volumeblocksasfree by updating
the volumefree spacemap.
Whenyou usethe FREE commandto designate
one or more bad blocksas "good,"it
removesthe blocknumberfrom the bad blocksfile. However.FREE BADBLOCK does
not designate
the blocksasfree. To updatethe volumefree spacemap and designate
theseblocksas free,usethe FREE BLOCK command.
ERRORMESSAGES
argùmenterror

A syntaxerror wasmadein the command
or a nonnumericcharacterwasspecified
in the blocknumor fnodenumDarameter.

< blocknum> , block out of range

The block number specifiedwaslarger
than the largestblocknumberin the
volume.

< fnodenum> , fnodeout of range

The fnodenumberspecifiedwaslarger
thanthe largestfnodenumberin the
volume.

Disk Verification

2-39

FREE

no badblocksfile

The volume doesnot havea bad blocksfile. This messagecould

of theHumanInterface
because
anearlierversion
appear
FORMAT commandwasusedwhenthe diskwasformatted.
not a nameddisk

2-40

FREE wasperformedon a physicalvolume.

Disk Verification

This commanddisplaysthe volume'sbad trackinformation.It canbe abortedby entering
CONTROL-C. The format of GETBADTRACKINFO is

x.1599

INPUT PARAMETERS
None.
OUTPUT
The GETBADTRACKINFO commanddisplaysthe volume'sbad track informationas
written by the manufactureror the HumanInterfaceFORMAT command.The output
displayedby the GETBADTRACKINFOcommandis compatiblewith the format
required by the Human InterfaceFORMAT commandwhen writing bad track
informationon the disk. To usethe outputasinput to FORMAT, removethe first two
lines,leavingonly the actualbad track information data. The displayis as follows:
Bad track
L-/

!

cccc
cccc

information:

L^-r

hh
hh

ss
ss

whereccccis rylindernumber,hh is the headnumberand ssis the sector number(always
zero for all devicessupportedin this releaseof the operatingSystem).

Disk Verification

2-41

GETBADTRACKINFO

As mentionedabove,the outputof the GETBADTRACKINFOcommandcanbe usedas

file. The
whencreating
thebadtrackinformation
inputto theFORMATcommand
examplebelow showshow to useGETBADTRACKINFO this way.
-atÈachdevlce wnfdxo as :v: 
*exLt




and removethe
After exitingDISKVERIFY and rebootingthe system,edit :w:bad.lst
headerlines. The file canthenbe usedasinDutto the bad track informationfile created
by the FORMAT command.
ERRORMESSAGES

2-42

I/O error whiletryingto readbad
track information

An I/O error occurredwhile readingthe
bad trackinformation.

No valid bad track info found

Bad track information is not valid and
cannotbe displayed.

No bad track info found

The areadesignated
for bad track
informationis emDtv.

l)isk Verification

This commandlistsall availableDisk VerificationUtilify commandsand providesa short
descrintionof eachcommand.The formatof the HELP commandis

F0214

OUTPUT
In response
to thiscommand,
HELPdisplays
thefollowing
information:
*heIp
aLlocace/free
fnodes (bî /r î)
Control C
di sk
( d, db/dw)
display byte/vord
(dd)
display
directory
display fnode (df )
display next block (>, dnb )
display previous block (<,dpb)
dlsplay save fnode (dsf)
exÍ t, qui t
bad blocks (lbb)
list
read (r)
restore volune label (rvl)
save
(s, sb/sw)
substltute
byte/word
ver ify
\,Iri te (Lr)
edit fnode (ef)
edi t save fnode (esf)
fix
get bad track info (gb)
nisc connands address
block
hex/dec
add, +, sub, - , nul , *, div, /, rnod
backup/restore

DiskYerification

a1l-ocate/free
fnodes, space blocks, bad blocks
to,/from save area
backup/restore Inode file
abort the comnand in progress
display disk at tr ibute s
format)
display
the buffer
in (byte/word
display
the directory
contents
fnode information
display
'next'
volune block
read and display
'previous'
volume block
read and display
display
saved fnode information
^..: c
gur L

r . ' ^ 1 , . .w^ E- :! ft -! ,)
ursF

bad blocks on the vol.ume
list
read a disk block into the buffer
copy volurne 1abel from save area
save free fnodes, free space & bad block
(byte/word
format)
rnodify the buffer
..^-:

8..

ÈL^

naps

r i -1.

,rite
to the disk block from the buffer
edit an fnode
edit a saved fnode
perforn varlous fixes on the voluue
get the bad track
info on the volume
convert block nurnber co absolute address
c o n v e r t a b s o l u t e a d d r e s s t o b l o c k n u r n b er
display
number as hexade c imal/de c imal nurnber
operations
on unsigned nurnbers
afithmetic

2-4i

all thebadblockson a namedvolume.Youcanabortthis
Thiscommand
displays
commandby tlping a CONTROL-C.Theformatof the LISTBADBLOCKScommandis
as follows:

F0208

OUTPUT
In responseto thiscommand,LISTBADBLOCKSdisplaysup to eightcolumnsof block
numbersthat you specifiedas"bad."Figure2-2 illustratesthe format of the display.

Badblocks on Volune:

volumenurn







(b I o cknurn)

(blocknurn)

(blocknr.uÈ

(blocknurn)

(blocknurn)





(blocknum>







Figure2-2. LISTBADBLOCKSFormat

lf noneof the blockshavebeenmarkedas"bad",LISTBADBLOCKSdisplaysthe
following message:
no badblocks

NOTE
Bad tracksand bad blocksare different. Bad tracksare handledby the
devicedriversin conjunctionwith the hardware,whereas,bad blocksare
handledby the iRMX II BasicI/O System.

2-44

Disk Verification

LISTBADBLOCKS

ERRORMESSAGES
no badblocksfiÌe

Disk Verification

The volume doesnot havea bad blocksfile. This messagecould
appearbecause
an earlierversionof the HumanInterface
FORMAT commandwasusedwhenthe diskwasformattedor
because
the diskis a ohvsicalvolume.

2-45

The followingcommandsprovideyou with the abilityto performarithmeticand
conversionoperationswithin the Disk VerificationUtility. The commandsperformthe
operationson unsignednumbersonly and do not report anyoverflowconditions.When
and decimalformat,it appearsin
the numberis displayedin both hexadecimal
For example:
by
the
decimal
numberin parentheses.
followed
format first,
hexa

where:
< addr >

Absoluteaddressin hexadecimal
that corresponds
to the speciîied
blocknumber.This addressrepresents
the numberof the bytethat
beginsthe blockand canrangefrom 0 through(volumesize- 1),
wherevolumesizeis the size,in bytes,of the volume.

BLOCK
The BLOCK commandis the inverseof the addresscommand.It convertsa 32-bit
absoluteaddress(in hexadecimal)
into a volumeblocknumber,so that you don't haveto
performthisconversionby hand. The formatof thiscommandis

where:
address

Absoluteaddressin hexadecimal
that BI.OCK convertsinto a
blocknumber. This parametercanrangeliom 0 through(volume
size- 1),wherevolumesizeis the size,in bytes,of the volume.

In response,
BLOCK dispÌaysthe followinginformation:
block nunber : 

where:
< blocknum>

Disk Verification

Numberof the volumeblockthat containsthe specifiedabsolute
addressin hexadecimal.
The BLOCK commanddeterminesthis
valueby dividingthe absoluteaddressby the volumeblocksizeand
truncatinqthe result.

2-47

MISCELLANEOUS
COMMANDS

DEC
This commandfindsthe decimalequivalentof a number. Its format is

<'-y'--'<1:,->

where:
arg

equivalent.The
Numberfor whichthe commandfindsthe decim-al
valueof the argumentcannotbe greaterthan2'"-1. The default
baseis in hexadecìmal.

In response,
the commanddisplaysthe decimalequivalentof the specifiednumber.

DIV
This commanddividesone numberby another.Its format is

where:
argl and arg2

Numberson whichthe commandoperates.It divides-arglby arg2.
The valueof eachargumentcannotbe greaterthan 2rz-1.

In response,
the commanddisplaysthe unsignedintegerquotientin both hexadecimal
and
decimalformat.

2-48

Disk Verification

MISCELLAN
EOUSCOMMANDS

HEX
This commandfindsthe hexadecimal
equivalentof a number. Its format is

<3>1-r->
where:
arg

Numberfor whichthe commandfindsthe hexadecimal
eouivalent.
If you are speci$ring
a decimalnumber,you mustspgify i "f'
The valueofthe argumentcannotbe greaterthan2)z-1.

In response,
the commanddisplaysthe hexadecimal
equivalentof the specìfietlnumber.

MOD
This commandfindsthe remainderof one numberdividedby another. Its format is

uoo

,/---

-e'

-.,'1]

!

''c'?

where:
argl and arg2

Numberson whichthe commandoperates.It performsthe
operationargl moduloarg2. The valueof eachargumentcannot
be greaterthan2-'z-l.

In response,
the commanddisplaysthe valueargl moduloarg2in both hexadecimal
and
decimalformat.

Disk Verification

2-19

COMMANDS
MISCELLANEOUS

MUL
This commandmultipliestwo numberstogether.Its formatis

where:
argl and arg2

The valueof each
Numbersthe commandmultiplieslo^gether.
argumentcannotbe greaterthan2'tz-1.

the commanddisplaysthe unsignedproductof the two numbersin both
In response,
and decimalformat.
hexadecimal

SUB
This command subtractsone number from another. Its li)rmat is

where:
argl and arg2

Numberson whichthe commandoperates.The command
subtractsarg2from argl. The valueof eachargumentcannotbe
ereaterthan2''z-1.

the commanddisplaysthe unsigneddifferencein both hexadecimal
and
In response,
decimalformat.

2-50

Disk Verification

MISCELTANEOUS
COMMANDS

ERRORMESSAGES
The followingerror messages
maybe returnedby anyof the Miscellaneous
Commands:
argumenterror

A syntaxerror wasmadein the
command,a nonnumericvaluefor one of
wasspecified,or a value
the arguments
for a blocknumberparameterthat was
not a valid blocknumberwassoecified.

< blocknum> , blockout of range

lf the commandwasan ADDRESS
command,the blocknumberenteredwas
greaterthan the numberof blocksin the
volume.

< address
> , addressnot on the
disk

If the commandwasa BLOCK command,
BLOCK convertedthe addressto a
volumeblocknumber,but the block
numberwasgreaterthan the numberof
blocksin the volunrc.

EXAMPLES
*l{ul, 134î, 13î 
6cE ( 7142T)
*+ 8, 4 
0c (
12r)
*suB 8884, 256 
8 6 2 E( 3 4 3 5 0 r )
*l{oD 1225, 256T 
31r)
25 (
*HEx 155T 
9B
*ADDRESS15 
absolute address - 0A80
*BLoCK2236 
block nunber - 44

Disk Verification

2-51

This commandexitsthe Disk VerificationUtility and returnscontrolto the Human
Interfacecommandlevel. The formatof the QUIT commandis asfollows:

This commandis identicalto the EXIT command.

) -<,

Disk Verilìcation

This commandreadsa volumeblockfrom the diskinto the workingbuffer. The format of
the READ commandis

INPUT PARAMETER
Numberof the volumeblockto read. This numbercan rangefrom
0 through(maxblocks- 1),wheremaxblocksis the numberof
volumeblocksin the volume.

blocknum

OUTPUT
ln responseto the command,READ readsthe blockinto the workingbutlèr and displays
the followingmessage:
read block

nurnber:



where  is the number of the block.
DESCR]PTION
The READ command copies a specifiedvoÌume block from the volume to the working
buffer. It destroysany data currently in the working buffer. Once the block is in the
working buffer, you can use DISPTAYBYTE and DISPTAYWORD to display the block,
and you can use SUBSTITUTEBYTE and SUBSTITUTEWORD to changethe data in
the block. Finally, you can use the WRITE command to write the modified block back to
the volume and repair damagedvolume data.
ERROR MESSAGES

argumenterror

A nonnumericcharacterwasspecifiedin
the blocknumparameter.

< blocknum> , blockout of range

The blocknumberspecifiedwaslarger
than the largestblocknumberin the
volume.

FFFFFFFF.blockout of ranee

No blocknumberwasspecifiedand no
previousreadrequestwasexecutedon
thisvolume.

Disk Verification

2-53

This commandcopiesan fnodeor a rangeof fnodesfrom the R?SAVEfile to the fnode
file. Beforechangingthe fnodefile, RESTOREFNODEdisplaysthe fnodenumberto be
changedand promptsyou to confirm(by enteringa "y")that the fnodeis to be restored.
R?SAVEmusthavebeenreserved(the RESERVEoptionof the FORMAT command
musthavebeenspecified)whenthe volumewasformatted.The format of the
RESTOREFNODEcommandis asfollows:

REsTORÉFNODE

fnodenum
fnodenum
1

fnodenum2

INPUT PARAMETER
fnodenum

The hexadecimal
numberof the fnodeto be restored.This number
mustbe greaterthanor equalto zeroand lessthan the m.tximum
numberof fnodesdefinedwhenthe volumewasfbrmatted.

fnodenumI

The initial hexadecimal
fnodenumberin a rangeof fnodesto be
restored.This numbermustbe greaterthan or equalto zero and
lessthanor equalto the final fnodenumberin the range
lfnodenum2l.

fnodenum2

The final hexadecimal
fnodenumberin a rangeof fnodesto be
restored.This numbermustbe greaterthanor equalto the initial
fnodenumberin the range(fnodenuml)and lessthan the
marimumnumberof fnodesdefinedwhenthe volumewas
formatted.

OUTPUT
Whenthe fnodeis restored(the response
to the confirmationqueryis "Y" or "y"):
( fnodenurn)? Y 
restore fnode
r e s È o r e d f n o d e nunber :
( fnodenr.un)

2-54

Disk Verification

RESTOREFNODE

to the confirmationqueryis not "Y"):
When the fnodeis not restored(the response

restore

fnode

( fnodenur) ?



DESCRIFTION
The RESTOREFNODEcommandenablesyou to rebuilda damagedfnodefile, thereby
re-establishing
linksto datathat wouldotherwisebe lost. RESTOREFNODEcopiesan
fnode or a rangeof fnodesfrom the R?SAVE file (the fnode backupfile) to the fnode file.
Beforeeachof the specifiedfnodesis copied,RESTOREFNODEdisplaysa query
promptingyou to confirmthat the indicatedfnodeis to be restored.You mustreplyto
this querywith the letter "Y" (either"Y" or "y")to restorethe fnode. If you enterany
RESTOREFNODEwill not restorethe fnotleandwill passon to the next
other response,
fnodein the range.
SinceRESTOREFNODEoperateson the R?SAVEfile,you musthavereservedthis file
the RESERVE
whenthe volumewasformatted.(You reserveR?SAVEby specifuing
parameterwhenyou invokethe FORMAT commandto formatthe volume.) lf the
R?SAVEfile wasnot reservedwhenthe volumewasformatted,RESTOREFNODEwill
return an error message.

CAUTION
When using this comrnand,be sure that any fnodeyou restore represents
a file that has not beenmodified sincethe last fnodebackup.
RESTOREFNODEoverwritesthe specifiedfnode in the fnodefile with the
correspondingfnode in the R?SAVEfile. Ifthat fnode has not been
backedup sincethe last file modification,a valid fnode may be
fìle will be
overwrittenwith invaliddata, Thus,all links to the associated
DATA
IN
THE
FILE.
ALL
THE
and
YOU
WILL
LOSE
OF
destroyed,
ERRORMESSAGES
argumenterror

Whenthe commandwasentered,no
argumentwassupplied.This command
rctluiresan argument.

no saveareawasreservedwhen
volumewasformatted

The volumewasnot formattedto support
backupfnodes.This meansthe
RESERVEoptionwasnot specified
whenthe volumewasformatted.

Disk Verification

2-55

RESTOREFNODE

not a nameddisk

The volume specifiedwhen the Disk
Verification Utiiity wasinvokedis a
physicalvolume,not a namedvolume.

< fnodenum>, fnodeout of
range

The fnodenumberspecifiedis not in the
rangeof 0 to (maximumfnodes- 1).

allocationbit not set for saved
fnode restorefnode < fnode
num>?

The fnode you specifiedhasnot been
backedup in the R?SAVEfile. If you
respondto the querywith a "Y", THE
DATA IN THE FILE ASSOCIATED
WIT]] THE ORIGINAL FNODE WILL
BE LOST.

EXAMPLE
super- dfskverlfy
: sd: 
iRl{X II Disk Verify Utility,
Vx.x
Copyrlght  or
rf 9,0B 
restored fnode number:
9
rescore fnode
0A? Y 
restored fnode nurnber:
0A
restore fnodè
0B? Y 
rescored fnode number:
0B

2-56

Disk Verification

This commandcopiesthe duplicatevolume label to the volume label on track 0. The
duplicatevolumelabelmusthavebeenconstructed
whenthe volumewasformatted.
(That is, the RESERVE option of the FORMAT commandmust havebeen specified
whenthe volumewasformatted.)The format of the RESTOREVOLUMEII,BEL
commandis as follows:

F 0 2 11

INPUT PARAMETERS
None.
OUTPUT
volumelabelrestored
DESCRIPIION
The RESTOREVOLUMELABELcommandenablesyou to rebuilda damagedvolume
label,therebyre-establishing
linksto datathat wouldotherwisebe lost.
RESTOREVOLUMEI-ABELcopiesthe duplicatevolumelabelto the volumelabeloffset
on track0. Whenyou usethe HumanInterfaceFORMAT commandto createthe
duplicatevolume label (by specifyingthe RESERVE parameter),the volume label is
automatically
copiedto the end of the R?SAVEfile. Becausethe contentsof the volume
labeldo not change,no othervolumelabelbackupis required.
If a duplicatevolumelabelhasbeenreseryedon a volume,the Disk VerificationUtility
canaccessthat volumeasa Namedvolumeevenif the volumelabelis damaged.When
the originalvolumelabelis corrupted,the Disk VerificationUtility attemptsto usethe
duplicatevolumelabel. If the backuplabelis used,a "DUPLICATE VOLUME I-ABEL
USED" message
appearswhenthe utility is invoked.
If the duplicatevolumelabelwasnot reservedwhenthe voiumewasformatted,
RESTOREVOLUMEI-ABELwill returnan error messase.

Disk Verification

2-57

RESTOREVOLUMELABEL

ERROR MESSAGES
argumenterror

Whenthe commandwasentered,an
argùmentwassupplìed.This command
doesnot acceptan argument.

no savearea was reservedwhen
volume lvas formatted

The volumehasnot beenformattedto
supportvolumelabelbackup.

not a named disk

The volumespecifiedwhenthe Disk
VerificationUtility wasinvokedis a
physicalvolume,not a namedvolume.

EXAMPLE
supèr- diskverlfy
: sd: 
Vx.x
I R M XI l D l s k V e r i f y U t i l i t y ,
Copyrlght  lntel Corporation
:sd:, outstandlng connections to device have been deleted
DUPLICATE VOLUMEU.BEL USED
*restorevolune labe I  or rvl 
, N A I 4 E D 2V
' ERIFICATION

B I T M A P SO .K .

*sAvE 

savè fnode map? y

free fnode map saved
save space nap? y 
free space map saved

2-60

Disk Verification

This commandenablesyou to interactively
changethe contentsof the workingbuffer(in
byteformat). You canabortthis commandby typinga CONTROL-C. The format of the
SUBSTTUTEBYTE commandis

SUASrrÌUl€BYrE

INPUT PARAMETER
Numberof the first byte,relativeto the startof the workingbuffer,
that you wantto change.This numbercanrangefrom 0 to (block
size- l), whereblocksizeis the sizeof a volumeblock(and thus
the sizeof the workingbuffer). If you omit this parameter,the
a valueof 0.
commandassumes

offset

OUTPUT
In responseto the command,SUBSTITUTEBYTEdisplaysthe specifiedbyteandwaits
for you to entera newvalue. This displayappearsas
:

val

where < offset> is the numberof the byte,relativeto the startof the buffer,and val is the
currentvalueof the byte. At this point,you canenterone of the following:
.

A valuefollowedby a carriagereturn. This causesSUBSTITUTEBYTEto substitute
the newvaluefor the currentbyte. If the valueyou enterrequiresmore than one byte
of storage,SUBSTITUTEBYTEusesonly the low-orderbyteof the value. It then
displaysthe nextbytein the bufferand waitsfor furtherinput.

.

A carriagereturn alone.This causesSUBSTITUTEBYTEto leavethe currentvalue
asis and displaythe nextbytc in the buffer. lt thenwaitsfor furtherinput.

Disk Verifìcation

2-61

SUBSTITUTEBYTE

.

A valuefollowedby a period(.) and a carriagereturn. This causes
SUBSTITUTEBYTE to substitutethe new value for the current b]'te. It then exits
from the SUBSTITUTEBYTEcommandand givesthe asterisk(*) prompt,enabling
you to enterany DISKVERIFY command.

.

A period (.) followed by a carriagereturn. This exitsthe SUBSTITUTEBYTE
commandand givesthe asterisk(*) prompt,enablingyou to enteranyDISKVERIFY
command.

DESCRIP'TION
With the SUBSTITUTEBYTE commandyou can interactivelychangebytesin the
working buffer. Once you enter the command,SUBSTITUTEBYTE displaysthe offset
and the valueof the first byte. You canchangethe byteby enteringa new bytevalue,or
you canleavethe byteas is by enteringa carriagereturn. The commandthendisplaysthe
nextbytein the buffer. In this manner,you canconsecutively
stepthroughthe buffer,
changingwhateverbytesare appropriate.Whenyou finishchangingthe buffer,you can
entera periodfollowedby a carriagereturnto exit the commantl.
The SUBSTITUTEBYTE commandconsidersthe working buffer to be a circular buffer.
That is, enteringa carriagereturnwhenyou are positionedat the lastbyteof the buffer
causesSUBSTITUTEBYTE to displaythe first byte of the buffer.
The SUBSTITUTEBYTEcommandchanges
only the valuesin the workingbuffer. To
makethe changesin the volume,you mustenterthe WRITE commandto write the
workingbufferbackto the volume.
ERRORMESSAGES

2-62

argumenterror

A nonnumericcharacterwasspecifiedin
the offsetparameter.

,invalidoffset

An offsetvaluelargerthan the numberof
bytesin the block wasspecified.

Disk Verification

SUBSTITUTEBYTE

EXAMPLE
This examplechangesseveralbytesin two portions of the working buffer. Two
SUBSTITUTEBYTE commandsare used.
*SUBSTITUTEBYTE
0000:
0001:
0002:
0003:
0004:

A0
80
E5
FF
FF

-

00


31
.

*SUBSTITUÎEBYÎE
4O
0040: 00 - E6
0041: 0O - E6
0042: 00 - . 

Disk Verification

2-63

Thiscommand
is identical
to SUBSTITUTEBYTE,
exceptthatit displays
thebufferin
wordvaluesin thebuffer.Theformatof the
WORDformat,andsubstitutes
SUBSTITUTEV/ORD
command
is

EXAMPLE
This examplechangesseveralbytesin two areasof the workingbuffer. Two
SUBSTITUTEWORDcommandsare used. In the first commandthe wordsbeginon
evenaddresses,
and in the secondcommanC,
theybeginon odd addresses.
*SUBSTTTUTEgORD

0000
0002
0004
0006
0008

AOBO 0000
8 0 7 0 
E51t- 
FFFF
3111
FFFF
. 

*SUBSTITUTEi{ORD
35
0035: 0000 - E6FF
0037: 0000 - E6AB
0039: 0000 - .

2-64

Disk Veriffcation

This commandchecksthe structureson the volumeto determinewhetherthe volumeis
properlyformatted.You canabortthis commandby t)?ing a CONTROL-C. The tbrmat
of the VERIFY commandis
VERIFY

NAMED

PHYSICAL
F 0211

INPUT PARAMETERS
NAMEDl or Nl

Checksnamedvolumesto ensurethat the infìtrmationrecordedin
and matchesthe informationobtained
the fnodesis consistent
from the directoriesthemselves.VERIFY perfbrmsthe following
operationsduringa NAMEDl verification:
.

Checksfnodenumbersin the directoriesto seeif they
correspondto allocatedfnodes.

.

Checksthe parentlhodenumbersrecordedin the thodesto see
if theymatchthe informationrecordedin the directories.

o

Checksthe fnodesagainstthe filesto determineif the thodes
specif the properfile type.

.

Checksrhe POINTE,R(n)structuresof longfilesto seeif the
indirectblocksaccuratelyreflectthe numberof blocksusedby
thefile.

.

Checkseachfnodeto seeif the TOTAL SIZE, TOTAL BLKS,
andTHIS SIZE fieldsare consistent.

o

Checksthe bad blocksfile to seeif the blocksin the file
correspondto the blocksmarkedas"bad"on the volume.

o Checksthe checksum
of eachfnode.

Disk Verilication

2-65

VERIFY

NAMED2 or N2

Checksnamedvolumesto ensurethat the informationrecordedin
the free fnodesmap and the volumefree spacemap matchesthe
actualfilesand fnodes.VERIFY performsthe following
operationsduringa NAMED2 verification:
e

Createsa free fnodesmapby examiningeverydirectoryin the
volume. It thencomparesthat free fnodesmapwith the one
alreadyon the volume.

o

Createsa free spacemapby examiningthe informationin the
fnodes.lt thencomparesthat free spacemapwith the one
alreadyon the volume.

.

Checksto seeif the blocknumbersrecordedin the fnodesand
the indirectblocksactuallyexist.

.

Checksto seeif two or morefilesusethe samevolumeblock.
If so,it liststhe filesreferringto eachblock.

e

Checksthe volumefree spacemap for anybad blocksthat are
markedas "free."

.

Checksto seeif two or more directoriesreferencethe same
fnode. If so,it liststhe directoriesreferringto eachfnode.

NAMED or N

Performsboth the NAMEDI and NAMED2 ooerationson a
namedvolume. If you specifythe VERIFY commandwith no
option,NAMED is the default.

ALL

Performsall operationsappropriateto the volume. For named
volumes,
thisoptionperformsborhthe NAMED andpHySICAL
operations.For physicalvolumes,this optionperformsonly the
PHYSICAL operations.

PHYSICAL

Readsall blockson rhevolumeandchecksfor I/O errors. This
parameterappliesto both namedand physicalvolumes.VERIFY
alsocreatesa bad blocksmap by examiningeveryblockon the
volume.

LIST

Whenyou speci! thisoption,the file informationin Figure2-3 is
displayedfor everyfile on the volume,evenif the file containsno
errors. You canusethis optionwith all parametersthat,either
explicitlyor implicitly,specifythe NAMED I paramerer.

OUTPUT
VERIFY producesa differentkind of outputfor eachof the NAMEDl, NAMED2, and
PHYSICAL options.The NAMED andALL optionsproducecombinations
of these
threekindsof outDut.

2-66

Disk Verification

VERIFY

Figure2-3 illustratesthe formatof the NAMEDI output(\ùithoutthe LIST option).

DEVICE NAI'IE: 

, NAì"ÍEDI' VERIFlCATION
FILE- (

LEVEL::

PARENT::

TYPE:

FILE- (

LEVEL:<1ev>:

PAI{ENT::

TYPE:

ffle-

LEVEI--<1ev>: PARENT-:

TYPE:

1, r:


Figure 2-3. NAMEDI Verification Output

The followingparagraphs
identifothe fieldslistedin Figure2-3.
< devname>

Physicalnameof the device,as specifiedin the ATTACHDEVICE
Humanlnterfacecommand.

< devsize>

Hexadecimal
sizeof the volume,in bytes.

< blksize>

Hexadecimal
volumegranularity.This numberis the sizeof a
volumeblock.



Nameof thefile (l to 14characters).

< fnodenum>

Hexa

Hexadecimal
levelof the file in the file hierarchy.The root
directoryof the volumeis the only level0 file. Filescontainedin
the root directoryare level1 files. Filescontainedin level I
directoriesare level2 files. This numberinscontinuesfor all levels
of filesin the volume.

< parnt>

Fnodenumberof the directorythat containsthisfile, in
hexadecimal.

Disk Verification

2-67

VERIFY

File type,eitherDATA (datafiles),DIR (directoryfiles),SMAP
(volumefree spacemap),FMAP (freefnodesmap),BMAP (bad
blocksmap),or VI-AB (volumelabelfile). If VERIFY cannot
ascertainthat the file is a directoryor datafile, it displaysthe
r****ù iÍr this field.
characters



with the previously Messages
that indicatethe errorsassociated
are listed later in this
listed file. The possibleerror messages
section.
As Figure2-3shows,the NAMED1 option(withoutthe LIST option)displays
informationabouteachfile that is in error. Ifyou usedthe LIST optionwjth the
NAMED I option, the file information in Figure 2-3 is displayedfor everyfile, evenif the
that
file containsno errors. The NAMEDl displayalsocontainserror messages
immediatelyfollowthe list of the affectedfiles.
Figure2-4i.llustrates
the formatof the NAMED2 output. If VERIFY detectsan error
verification,
it displaysone or more error messages
in placeof the "BlT
duringNAMED2
MAPS O.K.' messase.

D E V I C E N A M E:

(dermame)

: DEVICE SIZE :

(devsize>

: BLK SIZE :

(blksze)

'NA.t.fED2
' VERI FICATION
B I T M A P SO .K .

Figure 2-4. NAMED2 Verificati{}nOutput

The fieldsin Figure2-4 are exactlythe sameasthe corresponding
fieldsin Figure2-3.
Figure2-5 illustratesthe formatof the PHYSICAL output.

DEVICE NAl.fE:  : DEVICE SIZE : (devsize>

: BLOCKSIZE : 

, P H Y S I C A L 'V E R I F I C A T I O N
NO ERRORS

Figure 2-5. PHYSICAL Verification Output

2-68

Disk Verification

VERIFY

fieldsin Figure2-3.
The fieldsin Figure2-5are exactlythe sameasthe corresponding
If VERIFY detectsan error duringPHYSICALverification,it displaysthe message:
, blockbad
The blocknumbersdisplayedin this message
are markedas"bad."

.

. invalid block number recordedin the
fnode/indirect block
One of the POINTER(n) fields in the fnode specifiesblock numberslarger than the
largestblock number in the volume.

o

directory stackoverflow
This messageindicatesthat a directoryon the volume lists,as one of its entries,itself
or one of the parentdirectoriesin its pathname.If this happens,the utiliry,when it
searches
throughthe directorytree,continuallyloopsthrougha portionof the tree,
overflowingan internalbufferarea. In thiscase,performingNAMED2 verification
may indicatethe causeof thisproblem.

.

file sizeinconsistent
total$size=  :this$size=  :datablocks= 
The TOTAL SIZE, THIS SIZE, and TOTAL BLKS fields of the fnode are
inconsistent.

o

< filetpe >, illegalfile type
The file type of a user file, asrecordedin the TYPE field of the fnode, is not valid.
The valid file typesand their descriptionsare asfollows:
File Fpe
SMAP
FMAP
BMAP
DIR
DATA
VI-AB

.

Number
1
2
4
6
8
9

Descriorion
volumefree spacemap
free fnodesmap
bad blocksmap
directory
data
volume label file

,allocationstatusbit in this fnodenot set
The file is listedin a directorybut the flagsfield of its fnodeindicatesthat fnodeis
free. The free fnodesmap mayor maynot list the fnodeasallocated.

.

,fnodeout ofrange
The fnodenumberis largerthanthe largestfnodenumberin the fnodefile.

2-70

Disk Verification

VERIFY

.

,parentfnodenumberdoesnot match
The fi.lerepresentedby fnodenumis containedwithin a directorywhosefnode number
doesnot match the parent field of the file.

e

invalid blocknumrecordedin the fnode/indirect block
One of the pointerswithin the fnodeor within the indirectblockspecifiesa block
numberthat is largerthan the largestblocknumberin the volume.

.

insufficientmemory to createdirectorystack
There is not enoughdynamicmemoryavailablein the systemfor the utility to perform
the verification.

.

sum of the blks in the indirect block doesnot matchblock in the fnode
The file is a long file, and the numberof blockslisted in a POINTER(n) field of the
fnodedoesnot agreewith the numberof blockslistedin the indirectblock.

.

total-blocksdoesnot reflect the data-blockscorrectly
The TOTAL BLKS field of the fnode and the number of blocksrecordedin the
POINTERIn) fieldsare inconsistent.

.

Bad Checksum,
checksumis : 
shouldbe: 
Checksum
An invalidchecksumhasbeencalculated.

NAMED2 Messages
The following messages
can appearin a NAMED2 display.
.

< blocknumI - blocknum2>,bad block not allocated
The volumefree spacemap indicatesthat the blocksare free,but theyare markedas
"bad"in the bad blocksfile.

.

,blockallocatedbut not referenced
The volume free spacemap lists the specifiedvolume block as allocated,but no fnode
specifiesthe block aspart of a file.

r

,blockreferencedbut not allocated
An fnodeindicatesthat the specifiedvolumeblockis part of a file, but the volumefree
spacemap liststhe blockasfree.

Disk Verification

2-7|

VERIFY

.

directorystackoverflow
This message
can indicatethat a directoryon the volumelists,as one of its entries,
itselfor one of the parentdirectoriesin its pathname.If this happens,the utility,
whenit searches
throughthe directorytree,continuallyloopsthrougha portion of the
tree,overflowingan internalbufferarea. The "MultipleReference"
message
(explainedbelow)mayhelpyou find the causeof thisproblem.

o

Fnodesmap indicatesfnodes> m:u$fnode
The free fnodesmap indicatesthat thereare a greaternumberof unallocated
fnodes
thanthe maximumnumberof fnodesin lhe volume.

r

,fnode-mapbit markedallocatedbut not referenced
The free fnodesmap liststhe specifiedfnodeasallocated,but no directorycontainsa
file with the fnodenumber.

o

,fnodereferencedbut fnode-mapbit markedfree
The specifiedfnodenumberis listedin a directory,but the free fnodesmap liststhe
fnode as free.

.

Free spacemap indicatesVolumeblock > max$Volume$block
The free spacemap indicatesthat thereare a greaternumberof unallocated
blocks
than the maximumnumberof blocksin the volume.

.

insufficientmemoryto createdirectorystack
Not enoughdynamicmemoryis availablein the systemfor the utility to performthe
verification.

.

insufficientmemoryto createfnodeand spacemaps
During a NAMED2 verification,the utility tried to createa free fnodesmap and a
volumefree spacemap. However,not enoughdynamicmemoryis availablein the
systemto createthesemaps.

.

insufficientmemoryto createbad blocksmap
During a PHYSICAL verification,the utility tried to createa bad blocksmap.
However,not enoughdynamicmemoryis availablein the systemto createthe map.

o

Multiplereferenceto fnode 
Pathname: < full path name>
referring fnodes:
< fnodenum> Pathname:< full path name>
Pathname:
The directorieson the volumelist morethan one file associated
with this fnode
number.

2-72

Disk Verification

VERIFY

.

Multiple referenceto block < blocknum>
referring fnodes:
Pathname: 
Pathname: < full path name>
More than one fnodespecifies
this blockaspart of a file.

PHYSICAL Messages
.

< blocknum>, error
An I/O error occurredwhen VERIFY tried to accessthe speciîiedvolume block. The
volume is probablyflawed.

Miscellaneous
Messases
The followingmessages
indicateinternalerrorsin the Disk VerificationUtility. Under
(or
normalconditionsthesemessages
shouldneverappear.However,if thesemessages
verification,
other undocumented
messages)
do appearduringa NAMEDl or NAMED2
you shouldexit the Disk VerificationUtility and re-enterthe DISKVERIFY command.
directorystackempty
directorystackerror
directorystackunderflow
EXAMPLE
The followingcommandperformsboth namedand physicalverificationon a named
volume.
*VERIFY ALL 
DEVICE NAÌ'IE: F1

: DEVICE SIZE : 0003E900 : BLoCK SIZE : 0080

,NAI4EDI' VERIFICATION
,NA.I{ED2'VERIFICATION
B I T } , I A P SO . K .
, PHYSICAL' VERIFICATION
NO ERRORS

Disk Verification

2-7t

This commandwritesthe contentsof the workinsbufferto the volume. The format of
this commandis

b l o c k num
F0 2 1 0

INPUT PARAMETER
blocknum

Numberof the volumeblockto whichthe commandwritesthe
workingbuffer. If you omit this parameter,WRITE writesthe
bufferbackto the blockmostrecentlvaccessed.

OUTPUT
In responseto the command,WRITE displaysthe followingmessage:
write

to block is the numberof the volumeblockto whichWRITE intendsto write
the workingbuffer. If you respondby enteringY or anycharacterstringbeginningwith y
or y, WRITE copiesthe workingbufferto the specifiedblockon the volumeand displays
the following message:
written

to block nunber:

Any other responseabortsthe write process.
DESCRIPTION
The WRITE commandis usedin conjunctionwith the READ, DISPT-AYBYTE,
DISPI-AYWORD, SUBSTITUTEBYTE, and SUBSTITUTEWORD commandsto
modifyinformationon the volume. Initiallyyou useREAD to copya volumeblockfrom
the volumeto a workingbuffer. Thenyou canuseDISPTAYBYTEand
DISPI-A,YWORD to view the buffer and SUBSTITUTEBYTE and
SUBSTITUTEWORDto changethe buffer. Finally,you can useWRITE to write the
modifiedbufferbackto the volume. By default,WRITE copiesrhe bufferto the block
mostrecentlyaccessed
by a READ or WRITE command.
A WRITE commanddoesnot destroythe datain the workingbuffer. The dataremains
the sameuntil the nextSUBSTITUTEBYTE,SUBSTITUTEWORD.or READ
commandmodifiesthe buffer.

2-74

Disk Verification

WRITE

ERRORMESSAGES
argumenterror

A syntaxerror wasmadeor nonnumeric
characters
werespecifiedin the
blocknumparameter.

< blocknum> , blockout of range

The blocknumberspecifiedwaslarger
than the largestblocknumberin the
volume.

FFFFFFFF,blockout ofrange

No blocknumwasspecifiedand no
previousreadrequestwasexecutedon
thisvolume.

EXAMPLE
The followingcommandcopiesthe workingbullèr to the blockfrom whichit wasread.
*I.RITE 
wrire 48? y 
wrltcen to block number: 48

Disk Verification

2-75

CHAPTER
3
BACKINGUPAND RESTORING
FNODES

3.1 INTRODUCTION
To access
dataon a namedvolume(suchasa disk),the iRMX Il OperatingSystemusesa
mechanism
commonto virtuallyall operatingsystems:it maintainsan indexto everyfile
on the disk. Thisindexis createdwhenthe diskis formattedandremainsasa permanent
structureat a dedicatedlocationon the clisk.The indexconsistsof a systemof pointers
that indicatethe locationof the datafileson the disk. Thus,whendatamustbe storedon
or retrievedfrom the disk,the operatingsystemcanfind the exactlocationof the
appropriatefile by lookingup the file namein the index.
In the operating
system,
the indexconsists
of the iRMX ll volumelabelandan fnodefile.
This volumelabelresidesat the samelocationin all devicesand seruesasthe initial entry
point into the device.The fnodefile canresidean).where
on the disk (specifiedwhenthe
disk is formatted)and containsa seriesof individualstructurescalledfile dcscriptornodes
or "fnodes."Thereis one fnodefor eachlle on the disk. The lnodecontainsinformation
essentialto accessing
and maintainingthe respective
file.
The iRMX II file structurefor a namedvolumeis organizerJ
asa hierarchicaltree. That
is,thereis a root directorywith branchesto otherdirectoriesand ultimately,to files. The
organization
of the fnodefile reflectsthis hierarchical
structure.The iRMX II volume
labelcontainsa pointerto the fnodeof the file structure'sroot directory.The root
directoryis alwaysthe startingaddressfor anyfiìe or directoryon the volume. It listsalÌ
the first levelfilesand directorieson the volume. First leveldirectoriespoint to second
levelfilesand directories,and so on, downthe hierarchical
structure.
As previouslymentioned,eachfile or directoryis represented
by an fnode. The fnode,
alongwith other datadescribingthe file or directory,containspointersto blockson the
volume. If the fnodedescribes
a shortfile, theseblockscontainthe actualfile data. If the
fnodedescribes
a longfile, theseblockscontainpointcrsto otherblockscontainingthe
actualdata. If the fnodedescribes
a directory,theseblockscontainentrieswhichdescribe
the contentsof the directorv.Eachentrvliststhe fnodenumberand nameof the
associated
file or directory,
The operatingsystemcreatesthe iRMX Il volumelabeland the lìode file whenthe disk
is formatted.

Disk Verification

3-l

BACKING UP AND RESTORINGFNODES

fnodesin the fnodefile is controlledby the FILES parameter
The numberof unallocated
fnodes,seven(with an option
of the FORMAT command.In additionto the unalìocated
whenthe fnodefile is created.Theseallocated
of eight)allocatedfnodesare established
fnodesrepresent
.

the fnode file

.

the volumelabelfile - R?VOLUMEIABEL

.

the volumefree spacemap file - R?SPACEMAP

o

the free fnodesmap file - R?FNODEMAP

o

the bad blocksfile - R?BADBLOCKMAP

.

the root directory

.

file,
the spaceaccounting

.

Optionally,the duplicatevolumelabellile - R?SAVE

For a full descriptionof thesefiles,seeAppendixA "Structureof A NamedVolume."
to the root, the
Thereafter,whenfilesor directoriesare creiìteddirectlysubordinate
operatingsystemmustadjusta pointerin the root fnodeto indicatethe fnodenumberof
clirectories
subordinate
to the root must
the new datafile or directoryfile. Subserluently,
alsohavetheir pointersadjustedwhentheybecomeparentsto a new datafile or
directory.
This methodof storingand retrievingdataon a disk hasone majordrawback.All access
to fileson the disk is throughthe iRMX II volumelabeland the fnodefile. If eitherthe
volumelabelfile or the fnodefile is damagedor destroyed,
there is no practicalway to
recoverdataon the disk.
The backupand restorefnodesfeatureenablessomerecoveryof datalost asa resultof
damageto the fnodefile or the iRMX II volumelabel. With this feature,you createa
backupversionof the volumelabeland all the fnodeson the disk. The backupversionis
storedin one of the innermosttracksof the diskwherethe chanceof accidentallossof
data is minimal. (In normaluse,the disk headsdo not extendto the innermosttracks.)
To implementthis feature,the Human InterfaceFORMAT commandhasbeenmodified
to includean optionalparameter-- RESERVE. This versionof the FORMAT command
createsa file namedR?SAVEin the innermosttrackof the volume. A copyof the iRMX
II volumelabelis placedin the front (that is,the physicalend) of the file and an fnodeis
allocatedfor R?SAVEin the fnodefile. (The fnodefor the R?SAVEfile is allocatedout
of the fnodesreservedthroughthe FILES parameterof the FORMATcommand. Thus,
ifyou specify"FILES = 3000"whenyou format,only 2999of thosefnodeswill remain
availableafter the R?SAVEfnodehasbeenallocated.)Finally,FORMAT copiesthe
fnodefile into R?SAVE.

a-)

Disk Verifîcation

BACKINC UP AND RESTORINGFNODES

Noticethat the FORMAT commandcreatesa backupof the fnodefile in its initialized
state. R?SAVEis not subsequently
updatedasfilesarewritten to or deletedfrom the
volume. Therefore,you will haveto usethe BACKUPFNODES Disk Verification Utility
commandor the BACKUP optionof the HumanInterfaceSHUTDOWN commandto
backup the fnodefile at regularintervals.If the volumelabelor the fnodefile become
you canattemptto recoverliles on the volumeby usingthe Disk Verification
damaged,
Utility commands(RESTOREFNODEand RESTOREVOLUMETABEL)to rebuildthe
index. To assistin this process,
the DISPI-AYSAVEFNODEDisk VerificationUtility
commandenablesyou to look at individualfnodesstoredin the R?SAVEfile.
Sincethe contentsof the iRMX II volumelabeldo not change,the copyof the volume
labelin R?SAVEis alwaysvalid. Therefore,you canrestorethe volumelabelat anytime
regardless
of whenthe R?SAVEfile waslastupdated.(Whenthe Disk Verification
a damagedvolumelabel,it automatically
usesthe backupvolumelabel
Utility encounters
if the R?SAVEfile is present,however,it doesnot restoreunlessexplicitlyinstructed.)

CAUTION
One noteof caution: The fnodefìle is changedeachtime a volumeis
modified (that is, eachtime a fìle or directory is created,written to, or
deletedfrom the volumel. Therefore.valid restorationcan be assured
only for fnodeswhoseassociatedfiles or directorieshavenot been
changedsincethe last backup.
If the fnodesare not backedup after eachmodificafion,the structureof
the R?SAVEfile will differ from that of the fnode file. Somefnodesin
R?SAVEmay not be assoriatedwith the samefiles as the corresponding
fnodesin the fnodefile. Attemptingto recoverfnodesunderthese
because
the RESTOREFNODE
commandwill
conditionsis dangerous
ovenvritewhat may be a valid fnode in the fnodefile.
While the backupand restorefnodesleatureis a usefulaid in attemptingto recoverdata
your system,
on a volume,this capabilityis limitedin scope.If you are troubleshooting
you maywant to backup the fnodeson the systemdisk beforetakinganyactionthat may
risk the disk'sintegrity.You may alsodecideto backup the fnodeson a routinebasis
(beforeor duringeachsystemshutdown,for instance)so that the R?SAVEfile is always
and
wherea volumeis accessed
relativelycurrcnt. However,undernormalcircumstances,
practical.
The
modifiedfrequently,backingup the fnodesaftereachmodificationis not
mostpracticalsolutionis to backup the fnodefile oncea dayusingthe BACKUP option
of the SHUTDOWN command.

Disk Verification

J-J

B A C K I N G L I P A N I ) R E S T O R I N GF N O I ) E S

protectionfrom the loss
Note that this featureis not intencled
to proviclecomprehensive
with damagediRMX Il volumelabelsor fnodefiles. Rather,it offersa
of dataassociated
tool that,whenproperlyapplied,canbe usefulin maintainingvolumeintegrityin certain
protectionagainstlossof datausethe HumanInterface
situations.For comprehensive
BACKUPcommand.

ANDRESTORE
3.2 USINGFNODEBACKUP
T o u s e t h e f n o d e b a c k u pa n d r e s t o r ef e a t u r e ,y o u m u s t u s e V e r s i o n L l ( o r l a t e r ) o f t h e
I I u m a n I n t e r f a c eF O R M A T c o m n u r n da n r lt h e V e r s i o n2 . 0 ( o r l a t e r ) o f t h e D i s k
V e r i f i c a t i o nU t i l i t y . U s e d t o g e t h er , t h e s ev e r s i o n so f t h e F O R M A T c o m m a n da n d t h e
D i s k V e r i f i c a t i o nU t i l i t y e n a b l ey o u t o
.

f o r m a t a v o l u m et o c r e : ì t et h e b a c k u pf i l e ( R ? S A V E )

.

b a c k u p t h e f n o r i e so f a n y f i ì c sw r i t t e n t o t h e v o l u m e

.

e x a m i n et h e c o n t r ì n t so f t h c h l c k u p f i ì e ( R ' I S A V E , )

.

restore damagedfnodcs

.

r e s t o r et h e v o l u n i el a b e l

.

edit fnodes or savefnodcs

'l

his section describeshou, to perlìrrm each of thcse operations. A brief overview of the
o p e n r t i o ni s f o l l o w e db y o n c o r n r o r ee x a m p l e so f a t y p i c a li m p l e m e n t a t i o n .l n t h e
e x u m p l e sb, l u e o r h o l d e dt e x t i n d i c a t e sa n e n t r yy o u m a k e f r o m y o u r t e r m i n a l . S t a n d a r d
t y p e ( t h i s i s s t a n d a r dt y p e ) i n d i c a t e ss y s t e mo u r p u rr o y o u r r e r m i n a l .

3.2.1 Creatingthe R?SAVEFnodeBackupFile
Ilyou intendto buckupthevolumelrrbelantlthe liodeson a volumc',
you mustfirstcreate
the RISAVE backupfile on the innermost
tracksof thevolume.To do so,you must
invokeVersion2.0oî the HumanInterface
FORMAT command,
specifying
the
RESERVEoption.NOTE THAT THE FORMAT COMMAND OVERWRITESALL
OF THE DATA CURRE,NTLYON THE DISK. Thereftrre,makea backupcopyof any
îilesyouwishto saveusingthe HumanlnterfaceBACKUPcommand.
Oncethe volumehasbeenformtttecì,the R?SAVEfile will contaìna copyof the fnode
file inclutlingthe allocatedliodes (R?SPACE,MAP,
R?FNODEMAP,erc.). Therefore,
you neednot backup the lìode file immediatelyafter formattingthe volume.
PROCEI)URE
Fromthe Iluman Interface,
invokethe FORMAT command,
specifying
the RESERVE
Darameter.

3-,1

Disk Verification

BACKING UP AND RESTORINGFNODES

EXAMPLE
Assumethat you havebootedyour systemfrom a flexibledisketteto format the system
disk. The commandlisted below formats the disk and createsthe R?SAVE backuofile.
The initialized fnode fiìe is cooied into R?SAVE.
-attachdevlce
carbo as :nydlsk: 
-fornat
;aaydlskr 1l - 4 ftles = 3000 reserve

(CR>

volume ( ) will be fornatced as a NAÌ.IEDvolurne
granularity
L,O24 nap start
lnterleave
4
* 3000
files
extensionsize
3
yes
save area reserved bad track/sector Ínformation written - no
: 15, 984K
volume size
1lr

t.L I r llr

7,859

I r - t - Ll - t I

vol,u.ne fornalted

The disk hasnow beenformatted.A file namedR?SAVEhasbeenreservedin the
innermosttracksof the disk. (If you usethe Disk VerificationUtility
DISPI-AYDIRECTORYcommandon the volumeroot fnode(fnode6) or the Human
InterfaceDIR commandwith the invisible(l) optionon the volumeroot directory,you
will find an fnodelistedfor R?SAVE.) R?SAVEcontainsa duplicatecopyof the fnodes
in the fnodefile. That is, R?SAVEcontainseightallocatedfnodes(R?SAVE,
R?SPACEMAP,R?FNODEMAP,etc.)and 2,999unallocated
fnodes.(Remember,the
R?SAVEfnodeis allocatedout of the 3,000fnodesspecilìedthroughthe FILES
parameter.)

3.2.2 Backingup Fnodeson a Volume
DESCRTPTION
To backup the fnodeson a volume,you musthavepreviouslyreservedthe backup file
R?SAVEwhenthe volumewaslbrmatted.Thereatìer,anymodificationto the volume
(creating,writingto, or deletinga file) requiresthat the fnodesbe backedup if the
R?SAVEfile is to containan accuratecopyof the fnodefile.
You canbackupthe fnodeon a volumeeitherby:
.

Usingthe Human InterfaceSHUTDOWN commandwirh the BACKUP option

.

Usingthe BACKUPFNODESoptionof DISKVERIFY (seeChapter2)

Disk Verification

3-5

BACKING UP AND RESTORINGFNODES

EXAMPLE I
This exampleshowshow to backupthe fnodefile usingSHUTDOWN with the BACKUP
option. The BACKUP optionallowsyou to copythe volumefnodefile to its duplicate
file, R?SAVE,on anyattachedvolume.
super-SHUTDoIIN B 
***SYSTN{ I{ILL BE SHUTDOI.N
IN 10 MINUTE(S)
:SD:, outstanding connections to device have been deletèd
***sl{uTDoI\rN ooMPLETED ***

R?SAVEnow containsa duplicatecopyof all fnodesin the fnodefile.
EXAMPLE2
This exampleshowshow to usethe BACKUPFNODEcommandof DISKVERIFY to
backupthe fnodefile. Assumethat the systemdisk is attachedaslogicaldevice:sd:.The
initial contentsof the :sd:fnodefile werecopiedto R?SAVEby the FORMAT command.
A file hasjustbeenwritten to the volume.An fnodefor this file is enteredin the fnode
file; however,no corresponding
entry hasbeenmadein R?SAVE. The following
sequence
of commands
will copyall fnoclesin the fnodefile into the R?SAVEfile.
super- dlskverlfy
: sd: 
iRMXI1 Disk Verify Utility,
Vx.x
Copyright  Intel Corporation
: s d : , o u t s t a n d i n g c o n n e c t i o n s t o d e v i c e have been de leted
*backupfnodes 
or
bf 
fnode flle backed up to save area

R?SAVE now containsa duplicatecopy of all fnodes (allocatedand unallocated)in the
fnode file.
Note that in both casesyou must reboot the systemafter backing up the fnodes on the
volume,

3.2.3 Backingup the VolumeLabel
The volumelabelis initiallycopiedto R?SAVEwhenrhevolumeis formatted.Sincethe
contentsof the volumelabeldo not change,no othervolumelabelbackupproceduresare
reouired.

3-6

Disk Verification

BACKING UP AND RESTORINGFNODES

Fnodes
3.2.4Restoring
DESCRIPTION
To restorefnodeson a volume,you must havepreviouslyreservedthe backupfile
R?SAVEwhenthe volumewasformatted.If damagehasoccurredto the fnodefiìe,you
canattemptto rebuildthe file (or portionsof it) by usingthe Disk VerificationUtility
RESTOREFNODEcommand.
RESTOREFNODEenablesyou to restorea singlefnodeor a rangeof fnodes.You
designatethe fnodesto be restoredby enteringthe fnodenumbers.The specifiedfnodes
in R?SAVE are copied into the correspondingfnodesin the fnode file.
"restore
Beforerestoringeachfnode,RESTOREFNODEpromptsyou with the message
fnode < fnodenumber> ?". To restorethe fnode,you mustenter"yes"or the letter "Y"
the fnoclewill not be restored.
(eitherY or y). Ifyou enteranyother response,
When restoringfnodes,you mustbe verycarefulto ensurethat you are not overwritinga
valid fnodein the fnodefile with an invalidfnodefrom R?SAVE. Be surethe volumehas
not beenmodifiedsincethe fnodeswerelastbackedup.
PROCEDURE
1.

Invokethe Disk VerificationUtility, usingthe logicaldevicenameof the volumeto
be backedup.

2.

Whenyou receivethe Disk VerificationUtility prompt(*), enterthe appropriate
Disk VerificationUtiìity commands(VERIFY, DISPI-AYFNODE,etc.)to examrne
the fnodesfile and determinewhichfnodemustbe restored.

3.

Invokethe Disk VerificationUtility RESTOREFNODEcommandto replacethe
damagedfnodes.The Disk VerificationUtility promptsyou to confirmthat the
properfnodeis beingrestored.Make sureyou havespecifiedthe correct
numberfor the fnode,then enterthe letter "Y" in responseto the
hexadecimal
prompr.

4.

"restoredfnode < fnodenumber >" after
RESTOREFNODEreturnsthe message
fnodein the
the fnodein the R?SAVEfile hasbeenwrittenoverthe corresponding
fnode file.

Disk Verification

3-7

BACKING UP AND RESTORINGFNODES

EXAMPLE I
Assumethat a diskdrive is attachedaslogicaldevice:sd:. The volume:sd:containsthe
R?SAVE fnode backupfile. You havenot modified the disk sincethe fnodeswere last
backedup. You suspectthe fnodefile hasbeendamaged,
soyou usethe Disk
VerificationUtiliry to confirmyour suspicions:
super- diskvetlfy
: sd: 
iRl,fx II Disk Verify Utility,
Vx.x
Copyrlght 
or
restore fnode
9? Y 
r e s È o r e d f n o d e nunbe r :
9
restore fnode
OA? Y 
r e s c o r e d f n o d e nurnber:
0A
restore fnode
OB? Y 
r e s t o r e d f n o d e nurnber:
0B
restore fnode
QC? Y 
r e s t o r e d f n o d e number:
0C

rf

9, 0C 

Fnodes09 through0C in the R?SAVEfile havebeencopiedinto fnode09 through0C in
the fnodefile. Sincethe disk hasnot beenmodifiedsincethe lastfnodebackup,restoring
the damagedfnodesshouldnow enableyou to recoverthe dataon the disk.

3-8

Disk Verification

BACKING UP AND RESTORINGFNODES

EXAMPLE 2
Assumethe sameinitial conditionsas Example1 with the followingexception:two files
havebeenmodifiedsincethe lasttime the fnodeswerebackedup. ln the fnodefile, the
new filesare represented
by fnodes0D and 0E. Again,you suspectthat the fnodefile has
beendamaged,soyou usethe Disk VerificationUtility to checkthe conditionof dataon
the disk:
: sd: 
super- dfskvellfy
Vx.x
iRf.fxI1 Disk Verify Utility,

Intel Corpora!íon
Copyright
:sd:, outstanding connections to device have been deleted
Jcverlfy

After usingthe Disk VerificationUtility to examinethe structureof the disk,you find that
fnodes9 through10haveprobablybeendestroyed.You decideto usethe
RESTOREFNODEcommandto recoverthesefnodes.You do not wishto restorefnodes
0D and 0E becausetheywerenot backedup. Sincethe datafieldsof fnodes0D and 0E in
possiblyusefuldatain the
R?SAVEcontainall zeros,you wouldbe destroying
corresponding
fnodes.You then useRESTOREFNODEto restorea rangeof fnodesthat
includes0D and 08. However,you intendto passoverthe restorationof thesetwo fnodes
by respondingto the confirmationpromptwith somecharacterother than"Y."
*restorefnode 9 , 1 0 < C R >
rf 9,10
or

f
n
o
d
e
9?
Y
restore
9
r e s t o r e d f n o d e nunber:
OA? Y 
restore fnode
0A
r e s t o r e d f n o d e nunber:
OB? Y 
restore fnode
0B
r e s t o r e d f n o d e nurnber:
0c? Y 
resÈore fnode
0C
resÈored fnode number:
allocation bit not sec for saved fnode

restore fnode
0D?
a l l o c a t i o n b i t not set for saved fnode
0E? n (CR)
restore fnode
OF? Y 
festore fnode
0F
restored fnode nunber:
10? Y 
restore fnode
10
restored fnode number:

Disk Verification

l-9

BACKING UP AND RESTORINGFNODES

Noticethat becausefnodes0D and 0E werenot allocatedwhentheywerebackedup,
thosefnodesin R?SAVEare unallocated.Therefore,the Disk VerificationUtility
returnsthe "allocationbit not setfor savedfnode"message.Sinceyou do not wishto
restorethis fnode,you respondto the confirmationpromptwith a characterother than

The R?SAVEfnodes09 through0C and fnodes0F throughl0 havebeencopiedoverthe
corresponding
fnodesin the fnodefile. Fnodes0D and 0E werenot restored.

3.2.5 Restoringthe VolumeLabel
DESCRIPTION
To restorethe volumelabel,you musthavepreviouslyreservedthe backupfile R?SAVE
whenyou formattedthe volume. If the volumecontainsthe R?SAVEfile, a backupcopy
of the volumelabelalreadyexists.The FORMAT commandautomatically
placesa copy
the
volume
of
labelinto R?SAVEwhenthe file is created.Thereafter,the contentsof the
volumelabeldo not changeandyou canrestorethe labelwithoutfear of destroyingdata
in the existinglabel.
To restorethe volumelabel,you mustinvokethe Disk VerificationUtility usingthe
logicaldevicenameof the appropriatevolume. If the volumelabelis corrupted,the Disk
VerificationUtility attemptsto usethe backupcopyof the volumelabelin R?SAVE.
When the backuplabelis used,the Disk VerificationUtility issuesa message
that reads
"duplicatevolumelabelused."If this message
appearswhenthe Disk VerificationUtility
is activated,then the volumelabelis damaged.To restorethe volumelabel, enterthe
Disk VerificationUtility RESTOREVOLUMELABELcommand.The currentvolume
labelwill be overwrittenwith the volumelabelconvfrom R?SAVE.
PROCEDURE
1.

Invokethe Disk VerificationUtility, usingthe logicaldevicenanteof the volumeto
be backedup.

2.

If the "duplicatevolumelabelused"message
appears,the volumelabelmustbe
restored.Enter the Disk VerificationUtiliry RESTOREVOLUMEI-ABEL
command.

3.

When the volumelabelhasbeenrestored,the Disk VerificationUtility returnsthe
messape
"volumelabelrestored."

3-10

Disk Verification

BACKING UPAND RESTORINGFNODES

EXAMPLE
Assumethat a disk driveis attachedaslogicaldevice:sd:. The volume:sd:containsthe
R?SAVE fnode backupfile. When you attempt to aocessfiles on :sd:,the systemreturns
an E$ILLEGAL_VOLUME message.You suspectthat the volumelabelmaybe
usingthe Disk VerificationUtility.
damaged.You decideto checkyour suspicions
: sd: 
super- dlskverlfy
vx.x
iRMx I1 Disk Verífy Utility,
Copyright  lntel Corporatlon
:sd:, outstanding connecÈions to device have been deleted
duplicate volune label used

confirmsthat the volumelabelhasbeen
The "duplicatevolumelabelused"message
damaged.You restorethe volumelabelusìngthe RESTOREVOLUMEI-ABEL
command.
*re s torevohime labè I 
volune labeI restored

or

rvl- 

The originalvolumelabelhasbeenoverwrittenwith the duplicatecopyfrom the R?SAVE
fileson volume:sd:shouldnow be successful.
file. Attemptsto access

3.2.6 DisplayingR?SAVEFnodes
DESCRIPTION
in the R?SAVEfile canbe examinedby using
Any fnode(both allocatedand unallocated)
the Disk VerificationUtility DISPIAYSAVEFNoDE command.The Disk Verification
Utility wiÌl displayvital informationabouîthe fnode(total blocks,total size,block
pointers,parentnode,etc.). The fnodeis displayedin the samefbrmat usedby the
DISPIAYFNODE command.
To displayan R?SAVEthode,enterthe DISPI-AYSAVEFNODEcommandand specify
numberof the fnodeto be disnlaved.
the hexadecimal

Disk Verilication

3-11

tsACKINGUP AND RESTORINGFNODES

PROCEDURE
1.

Invokethe Disk VerificationUtility usingthe logicaldevicenameof the
appropriatevolume.

2.

Whenyou receivethe Disk VerificationUtility prompt(*), enterthe Disk
Verification Utility DISPI-AYSAVEFNODE command. Speci! the hexadecimal
numberof the fnodeto be displayed.

3.

The Disk Verification Utility will return with an fnode display.

EXAMPLE
Assumethat you cannotaccess
a file on a diskattachedas :sd:. You suspectthat the
fnodefile maybe damaged.By enteringthe Disk VerificationUtility and displayingthe
file's directory,you find that the file you were unableto accessis representedby fnode
3C8. You useDISPTAYFNODE to displayfnode3C8,but you are not confidentof the
data you see. Sincethe fnode for the file hasbeenbackedup sincethe file waslast
modified,you decideto usedatain the R?SAVEfnodeto examinethe fnodefile. The
followingcommanddisplaysthe datafor fnode3C8 in R?SAVE.

3-12

Disk Verification

BACKINGUP AND RESTORINCFNODES

super- dlskverlfy
: sd: 
Vx.x
iRHX II Disk Verify UEility,
Copyrtghc  Intel CÒrporation
:sd:, outstandlng connections to devlce have been deleted

*displaysavefnode

3CB 

or

dsf 3C8 

Fnode nurober - 3C8 (saved)
path narnè: ^SER/I{YFILE
flags
0025
cype
08 ->
aí I ^
r r rE

^-^^
/-.^1
Ér d!,/

---^

owîer
create , access,nod tixnes
total slze, total- blocks
hl

nnlr

nni

nto

h ì anlr

nninror

}l I anlt

naintpr

uruLK

PUrrrLr

r

/1\
/?\
11\

r

\ +,,

block pointer

(5)

hìnnL

nninror

l6l

hl.).k

n.línrér

l7l

hl oelr

nai nrar

lfl\

this size
id count
aecessor (L)
accessor (2)
accessor (3)
n4róht

n h a n 1 z< , r m

aux (*)

dara f1lè
01
0001
00000000,00000000,00000000
00002D01,0000000c
000c,004910
0000, 000000
0000, 000000
0000,000000
0000,000000
0000,000000
0000,000000
0000,000000
00003000
0001
0F, 0001
00, 0000
00, 0000
03c4,0000
000000

You can modifythe contentsof the both the originalfnodefile and the savedfnodeiile by
usinseitherthe EDITFNODE or EDITSAVEFNODEcommands.

Disk Verification

3-r3

A P P E N D IAX
STRUCTURE
OFA NAMEDV-OL_UME

A.1 INTRODUCTION
Thisappendix
describes
the structure
of an iRMX II volumethatcontains
named1iles.It
is providedas referenceinformationto helpyou interpretoutputfrom the DISKVERIFY
commands
or to helpyoucreateyourownformatting
utilityprograms.
Thisappendix
is for programmers
u'ithexperience
volume
in reacling
andwritingircturrl
information.It doesnot attemptto teachthesefunctions.

4.2 VOLUMESTRUCTURE
Thisappendix
discusses
the structure
of namedfile volumesin cletail.It coversthe
structureof directoryfilesand the conceptsof longand shortlilcs. It alsoincludes
informationon
o

ISO Volume Lahel

.

iRMX VoÌumel-abel

.

fnodefile

r

volumefree spacemap file

r

free fnodesmap file

.

bad blocksmap file

o

root directory

The blocksreservedfor the BootstrapLoader(FigureA- I ) are not tiiscussed.
Bootstrîp
Loaderblocksare automatically
includedon a newvolumewhenyou format a volume
with the FORMAT command.Referto the FORMA'| commandfor a clescription
of the
bootstrap
option.
FigureA- 1 illustratesthe generalstructureof a namedlile volume.

Disk Verilication

A-l

STRUCTUREOFA NAMED VOLUME

lso

lo

rer reo

srlsr,

,-.1,-.

rsrrJrrra

x ti45

FigureA-l. GeneralStructureof NamedVolumes

A.3 VOLUMELABELS
EachiRMX II namedvolumecontainsISO (InternationalStandardization
Organization)
labelinformationaswell asiRMX II labelinformationand files. This sectiondescribes
the structureof ISOvolumelabelsand iRMX II volumelabels.both of whichmustbe
Dresenton a namedvolume.

A-2

Disk Verifìcation

STRUCTURE
OF A NA]\IEDVOLUI\TE

4.3.1 ISOVolumeLabe!
The ISO volumelabelis recordedin absolutebytepositions761Ìthrough895of the
volume(for example,sector07 of a single-density
flexiblediskette).The structureof thrs
volumelabel(in PL/M notation)is:
DECI.ARE
1SO$VOL$TABEL
STRUCTURE(
T.ABEL$ID(3)
RESERVED$A
VOL$NAI"ÍE(6)
VOL$STRUC
( 6O)
RESERVED$B
REC$SIDE
(4)
RESERVED$C
( 2)
I LEAVE
RESERVED$D
ISO$VLRSION
R E S E R V E (D4$8)E

BYTE,
BYTE,
BYTE,
BYTE,
BYTE,
BYTE,
BYTE,
BYTE,
BYTE,
BYTE,
BYTE);

Where:
IABEUID(3)

Labelidentifier.For namedfile volumes,
thisf ieldcontains
the
ASCII characters
"VOL".

RESERVED$A

Reservedfield containingthe ASCII character" 1".

VOL$NAME(6)

Volumename.Thisfieldcancontainup to sixprintableASCII
characters,
left justifiedand spacefilled. A vaÌueof all spaces
impliesthat the volumenameis recordedin the iRMX II Volume
Label(absolutebytepositions3lt4-393),

VOII$STRUC

For namedfile volumes,this f ield containsthe ASCII character
"N",indicatìng
thatthisvolumehasa non-ISOfile structure.

RESERVED$B(60) Reservedfield containing60 bytesof ASCII spaccs.
REC$SIDE

For namedfilevolumes,
thisfieldcontains
theASCII character
"l"
to indicatethat only one sideof the volumeis to be recorded.

RESERVED$C(4)

Reservedfield containingfour bytesof ASCII spaces.

ILEAVE(2)

Two ASCII digitsindicatingthe interleavefìrctorfor the volume,in
decimal.ASCII digitsconsistof the numbers0 through9. When
formattingnamedvolumes,you shouldset this field to the sanìe
interleavefactorthat you usewhenphysically
formattingthe
volume.

RESERVED$D

Reservedfield containingan ASCII space.

Disk Verification

A-.1

STRUCTUREOF A NAMED VOLUME

ISO$VERSION

For namedfile volumes,thisfield containsthe ASCII character"l",
whichindicatesISO versionnumberone.

RESERVED$E(48) Reservedfield containing48 ASCII spaces.

A.3.2IRMX@
llVolumeLabel
The iRMX II VolumeLabel is recordedin absolutebytepositions384through5l I of the
volume(sector04 of a sing.le
densitytìexiblediskette).The sîructureof thìsvolumelabel
is asfollows:
DECI-ARE
STRUCTURE(
RMX9VOLUME9INFORMATION
( 10 )
BYTE,
vOL$NA-Ì"IE
BYTE,
FI"AGS
FILE$DRIVER
BYTE,
VOL$CRAN
WORD
,
V O L $SI Z E
DWORD
,
WORD
MA.\$FNODE
,
FNODE$
START
DWORD
,
WORD
F N O D ES$I Z E
,
WORD
ROOT$FNODE
,
DEV9CRAN
WORD
,
INTERLEAVE
WORD
,
TRACK$
SKEW
WORD
,
S Y S T E MI D
$
WORD
,
S Y S T E M $ N A ]l' 2J E ( )
BYTE,
D E V T C E $ S P E C T A L (B8 Y
) TE);

where:

A-4

voL$NAME(10)

Volumenamein printableASCII characters,
left justifiedand zero
filled.

FLAGS

BYTE that liststhe devicecharrcteristics
for automaticdevic"
recognition.The individualbits in this BYTE indicatethe
followingcharacteristics
(bit 0 is rightmostbit):
Bit

Meaninc

0

VF$AUTO flag. Whenset to one,this bit indicates
that the FI-AGSbytecontainsvalid datafor
automaticdevicerecognition.When setto zero,it
indicates
thatthe remaining
flagscontain
meaningless
data.

Disk Verification

STRUCTUREOF A NAMED VOI,UME

1

VF$DENSITYflas. This bit inclicates
the
volume.
When
recordingdensityòfthe
set to one,
it indicatesmodifiedfrequencymodulation(MFM)
or tlouble-density
recording.When set to zero,it
indicatesfrequencymodulation(FM) or singledensityrecording.

2

VF$SIDESflas. Thisbit indicates
the numberof
recorcJing
sideson the volume. When set to one,it
indicatesa double-sided
volume. When set to zero,
volume.
it indicatesa single-sided

3

VF$MINI flau. This bit indicatesthe sizeof the
recordingmeAia.Whenset to one,it indicatesa
5 I /4-inchvolume. When set to zero,it indicatesan
8-inchvolume.

4

VF$NOT$FLOPPY.This bit indicatesthe typeof
diskyou are using. Whenthis and Bit 0 are setto l,
it indicatesa Winchesterdisk.

5-7

Reserved

FILE$DRIVER

Numberof the file driverusedwith thisvolume. For namedfile
volumes.this field is setto four.

VOLIGRAN

Volumogranularity,specilìedin bytes.This valuemustbe a
multipleof the devicegranularity.It setsthe sizeof a logical
deviceblock,alsocalÌeda volumeblock.

VOII$SIZE

Sizeof the entirevolume,in bytes.

MAX$FNODE

Numberof fnodesin the fnodefile. (Refer to the nextsectionfor a
descriptionof fnodes.)

FNODE$START

A 32-bitvaluethat represents
the numberof the first bytein the
fnodefile (byte0 is the first byteof the volume).

FNODE$SIZE

Sizeof an fnode,in bytes.

ROOT$FNODE

Numberof the fnodedescribingthe root directory.(Refer to the
nextsectionfor furtherinformation.)

DEV$GRAN

Devicegranularityof all tracksexcepttrackzero (whichcontains
the volumelabel). This field is importantonlywhenthe system
requiresautomaticdevicerecognition.

INTERLEAVE

Blockinterleavefactorfor thisvolume. This valueindicatesthe
physicaldistance,in blocks,betweenconsecutively-numbered
blockson the volume. A valueof one indicatesthat consecutivelynumberedblocksare adjacent.A valueofzero indicatesan
unknownor undefinedinterleavefactor.

Disk Verification

A-5

STRUCTUREOF A NAMED VOLT]ME

TRACK$SKEW

Offset,in bytes,betweenthe first blockon one trackand the
first blockon the nexttrack. A valueof zero indicatesthat all
tracksare identical.

SYSTEM$ID

Numericalcodeidentifyingthe operatingsystemthat formatted
the volume. The followìngcodesare reservedfor Intel
operatingsystems:
OperatingSvstem

Code

iRMX I, II
iRMX lt{i
iNDX

0-(lFh
1 0 h- l F h
20h- 2Fh

placesa zeroin this
System
Currently,
the iRMX II Operating
field.
system
thatformattedthevolume,in
SYSTEM$NAME(12) Nameof the operating
printableASCII characters,
left justifiedand spacefilled.
Zeros(ASCIl nulls)indicatethat the operatingsystemis
unknown.The iRMX Il OperatingSystemcurrentlyplaces
piecesof information
intothisfield,asfollows:
several
.

The leltmosteightbytesof this field containthe ASCII
chrìriìcters
"iRMX IL3' to identifythe operatingsystem.
The iRMX IL I Operating
System
filledthisfieldwith
zeros.

.

that identifies
the
The nextbyteis an ASCII character
programthat formattedthe volume. The following
characters
appÌy:

Character

FormattingProgram

F

HumanInterlhceFORMAT command

U

iRMX I FilesUtility (usedprior to
iRMX r.7)

programis unableto providethisinformation,
If the formatting
it placesan ASCII spacein this field.
.

A-6

The HumanInterlaceFORMAT commandthatis part of
iRMX Il.3 placesthecharacters
"03" in the Ìast3 bytesof
this field.

Disk Verification

STRUCTUREOF A NAMED VOLU]\IE

DEVICE$SPECIAL(II) Reservedfor specialdevice-specific
information.When no
device-specific
informationexists,this field mustcontainzeros.
For example,if the deviceis a Winchesterdiskwith an iSBC
214/215Gcontroller,the iRMX lI OperatingSystemimposesa
structureon this field and suppliesthe followinginformation:
(
SPECIAL STRUCTURE
CYLINDERS WORD,
FIXED
BYTE,
REMOVABLE BYTE,
SECTORS
BYTE,
SECTOR
SIZE WORD,
ALTERNATES BYTE);
where:
CYLINDE,RS

Total number of cylinderson the disk
drive.

FIXED

Number of heads on the fixed disk or
Winchester disk.

REMOVABLE

Number of heads on the removable disk
cartridge.

SECTORS

Number of sectorsin a track.

SECTOR SIZE

Sector size,in bytes.

ALTERNATES

Number of alternate cylindersor spare
sectorson a track.

The remainder of the Volume Label (bytes440 through 5 I I ) is reservedand must be set
to zero.

Disk Verification

A-7

STRTICTURE
OF A NAMEI) VOT,T]ME

4.4 INITIALFILES
Any mechanismthat formatsiRMX II namedvolumesmustplacesevenfiles,with the
optionof an eighthfile, on the volumeduringthe formatprocess.Thesefilesare
File
fnode fiìe
volumelabelfile
volumefree spacemap file
free fnodesmap file
bad blocksfile
root directory
spaceaccountingfile,
Optionally,duplicatevolumelabelfile

File Name

R?VOLUMELABEL
R?SPACEMAP
R?FNODEMAP
R?BADBLOCKMAP

R?SAVE

The first of thesefiìes,the fnodefile, containsinformationaboutall of the fileson îhe
volume. The generalstructureof the fnodefile is discussed
first. Then all of the filesare
cliscussed
in termsof their fnodeentriesand their functions.

A.4.1 Fnode File
A datastructurecalleda file descriptornode(fnode)describes
eachfile in a namedfile
volume. AII the fnodesfor the entirevolumeare groupedtogetherin a file calledthe
înodefile. When the I/O Systemaccesses
a file on a namedvolume,it examinesthe
iRMX II VolumeLabel (described
in the previoussection)to determinethe locationof
the fnodefile,anclthenexamines
the appropriate
fnodeto determine
the actuallocation
of the fiÌe.
When a volumeis formatted,the fnodefile containssevenallocatedfnodesand any
numberof unallocated
fnodes.The originalnumberof unallocated
fnodesdependson the
FILES parameterof the FORMAT command.Theseallocatedfnodesrepresentthe
fnodefile, the volumelabelfile, the volumefree spacemap file, the free fnodesmap file,
the bad blocksfile, the root directory,and the spaceaccounting
file. (Later sectionsof
this appendixdescribetheselìles.) The sizeof the fnodefiÌe is determinedby the number
of fnodesthat it contains.The numberof fnodesin the fnodefile alsodeterminesthe
numberof filesthat canbe createdon the volume. The numberof filesis setwhenvou
formatthe st.orage
mcdium

A-8

Disk Verification

OF A NAMEDVOLUME
STRUCTURE

The structure of an individual fnode in a named file volume is as follows:
DECIARE
(
FNODESTRUCTURE
FIAGS WORD,
TYPE
BYTE,
GRAN
BYTE,
OWNER \IORD,
C R $ T I M ED i t O R D ,
A C C E S S $ T I MDEW O R D ,
MOD$TIME DWORD,
TOTAL$SIZE DWORD,
TOTAL$BLKS DI,/ORD,
POINTR(40) BYTE,
THIS$SIZE DLIORD,
RESERVED$A
WORD,
WORD,
RESERVED$B
rD$couNT
\,roRD,
ACC(9) BYTE,
PARENT WORD,
AUX(*) BYTE);

where:

FT-AGS

Disk Verilication

A WORD that definesa set of attributesfor the file. The
individualbits in thisword indicatethe followinsattributes(bit 0 is
the rightmost
bit):
Bit

Meaning

0

Alìocationstatus.If set to one,this fnode
an actualfile. If setto zero,this
describes
fnodeis availablefor allocation.When
a volumc.thisbit is setto one in
formatting
the sixallocatedfnodes.In other fnodes,it
is setto zero.

A-9

STRUCTUREOF A NAMED VOLUME

Long or shortfile attribute.This bit

howthePTRfieldsof thefnode
describes
are interpreted.If set to zero,indicatinga
shortfile, the PTR fieldsidenti$ the actual
datablocksof the file. If set to one,
indicatinga longfile, the PTR fieldsidentify
indirectblocks(describedlater in this
section).Whenformattinga volume,this bit
is alwayssetto zero,sincethe initial fileson
the volumeare shortfiles.

2

Reserved
bit, alwayssetto one

3-4

Reserved
bits,alwayssetto zero.

5

Modificationattribute. Whenevera file is
modified,thisbit is setto one. Initially,
whena volumeis formatted,this bit is setto
zero in eachfnode.
Deletionattribute.This bit is setto one to
indicatethat the file is a temporaryfile or
that the file will be deleted(the deletion
maybe postponedbecauseadditional
connections
existto the file). lnitially,when
thevolumcis formatted,
thishit is srr rtl
zero in eachfnode.

7-r5
TYPE

Reserved
bits,alwaysset to zero.

Type of file. The followingare acceptable
qpes:
Mnemonic

Value

Tlpe

FT$FNODE
F-T$VOLMAP
FT$FNODEMAP
FI$ACCOUNT
FT$BADBLOCK
FT$DIR
F-T$DATA
F'T$VLI,BEL

O
1
2
3
4
6
8
9

fnodefile
volumefree spacemap
free fnodesmap
spaceaccounting
file
devicebad blocksfle
directory file
datafile
voÌumelabelfile

During systemoperation,only the I/O Systemcanaocess
file types
other than F|$DATA and F-|$DIR. Thesefile tvnesare discussed
later in this section.
GRAN

A-r0

Fiìe granularity,specifìedin multiplesof the volumegranularity.
The defaultvalueis L Thisvaluecanbe serto anv multioleof the
volumesranularitv.

Disk Verilìcation

STRUCTUREOF A NAMED VOLUME

OWNER

User lD of the ownerof the file. For the filesinitiallypresenton
the volume,thisparameteris importantonly for the root directory.
For the root directory,this parametershouldspecifythe user
WORLD (FFFFH). The l/O Systemdoesnot examinethis
parameterfor the otherfiles(fnodefile,volumefree spacemap
file, free fnodesmap file, badblocksfile,volumelabel),so a value
of zero can be specified.

CR$TIME

asa 32-bitvalue.
Time and datethat the file wascreated,expressed
This valueindicatesthe numberof secondssincea fixed,userdeterminedpoint in time. By convention,this point in time is
12:00,Januaryl, 1978.For the filesinitiallypresenton the
volume,this parameteris importantonly for the root directory.A
zerocanbe specifiedfor the other files(fnodefile,volumefree
spacemap file, free fnodesmapfile, bad blocksfile,volumelabel.)

ACCESS$TIME

as a
Time and dateof the lastfi-leaccess(reador wrìte),expressed
32-bitvalue. For the filesinitiallypresenton the volume,this
parameteris importantonlyfor the root directory.

MOD$TIME

asa 32-bit
Time and dateof the lastfile modification,expressed
value. For the filesinitiatlypresenton the volume,this parameter
is importantonly for the root directory.

TOTAL$SIZE

Total size,in bytes,of the actualdatain the file.

TOTAII$BLKS

Total numberof volumeblocksusedby this file, includingindirect
blockoverhead.A volumeblockis a blockof datawhosesizeis the
sameasthe volumegranularity.All memoryin the volumeis
dividedinto volumeblocks,whichare numberedsequentially,
(block0).
startingwith the blockcontainingthe smallestaddresses
this
section.
discussed
later
in
Indirectblocksare

POINTR(4O)

A groupof BYTESon whichthe followingstructureis imposed:
(
PTR(8) STRUCTURE
WORD
NUMSBLOCKS
BLK$PTR(3B
) YTE);
This structureidentifiesthe datablocksof the fììe. Thesedata
blocksmaybe scatteredthroughoutthe volume,but togetherthey
makeup a completefile. Ifthe file is a shortfile (bit 1 ofthe
FTAGS field is setto zero),eachPTR structureidentifiesan actual
databÌock. In this case.the fieldsof the PTR structurecontainthe
followins:

Disk Verification

A-ll

STRUCTUREOF A NAMED VOLUME

NUM$BLOCKS

Numberof volumeblocksin the datablock.

BLK$PrR(3)

A 24-bitvaluespecifying
the numberof the
first volumeblockin the datablock.
Volumeblocksare numberedsequentially,
startingwith the blockwith the smallest
address(block0). The bytesin the
BLK$trtR arrayrangefrom leastsignificant
(BLK$mR(0)) to mostsignificant
(BLK$PrR(2)).

If the file is a longfile (bit I of the FIAGS field is set to one),each
PTR structureidentifiesan indirectblock(possiblyconsisting
of
more than one contiguous
volumeblock),whichin turn identifies
the datablocksof the file. In thiscase.the fieldsof the PTR
structurecontain the following:
NUM$BLOCKS

Numberof volumeblockspointedto by the
indirectblock.

BLK$FrR(3)

A 24-bitvolumeblocknumberof the
indirect block.

Indirect blocks are discussedlater in this section.

THIS$SIZE

Size,in BYTES, of the total data spaceallocated to the file. This
figure does not include spaceused for indirect blocks,but it does
include any data spaceallocatedto the file, regardlessof whether
the file fills that allocatedspace.

RESERVED$A

Reservedfield, set to zero.

RESERVED$B

Reserved field. set to zero.

ID$COUNT

Number of access-IDpairs declaredin the ACC(9) field.

ACC(e)

A group of BYTES on which the following structure is imposed:
A C C E S S O R ( 3S) T R U C T U R E (
ACCESS BYTE,
ID
WORD):
This structure containsthe access-IDpairs that define the access
rights for the usersof the file. By convention,when a file is
created,the owner's ID is inserted in ACCESSOR(O), along with
the code for the accessrights. The fields of the ACCESSOR
s tr u c t ur c c o n t ai n t h e f o l k r w i n g .

A-12

Disk Verifìcation

STRUCTUREOF A NAMED VOLUME

ACCESS

ID

Encodedaccessrights for the file. The
settingsof the individualbits in this field
grant(if setto one)or deny(if setto zero)
operation.
permissionfor the corresponding
Bit 0 is the rightmostbit.
Directory
Oneration

Bit

Data File
Oneration

0
I
2
3
4-7

delete
delete
list
read
add entry
append
changeentry
update
reserved(mustbe 0)

ID of the userwho gainsthe corresponding
permission.
access

PARENT

Fnodenumberof directoryfile that liststhis file. For filesinitially
presenton the volume,thisparameteris importantonly fbr the
root directory.For the root directory,this parametershould
specifythe numberof the root directory'sown fnode. For other
files(fnodefile,volumefree spacemapfile, free fnodesmap file,
bad blocksfile,volumelabel)the t/O System

t
F'1
L J

i\[__l
t

t

r . 1

t

rolume 9'!^ul!"ir

t

i0?4

Figure A-3. I-ongFile FNODE

A-20

Disk Verification

STRUCTUREOF A NAMED VOLUME

As you can seein Figure A-3, fnode 9 identifiesthe long file. The actualfile consistsof
nine distinct data blocks. One PTR structureand an indirect block give the locationsof
the data blocks. The NUM$BLOCKS field of the PTR structurecontainsthe number of
volume blockspointed to by the indirect block. The BLK$PTR field points to the first
volume block of the indirect block.
In the indirect block,eachNBLOCKS field givesthe length of an individual data block,
and eachBLK$PTR field pointsto the first volumeblockof a datablock.
Figure A-3 also lists the TOTAI-||BLKS, THIS$SIZE, and TOTAL$SIZE values,which
are more complexthan for a short file. The TOTAT$BLKS field specifiesthe number of
volume blocksallocatedto the file, which in this caseis 21. Of these21,20 are usedfor
actualdata storageand 1 is usedfor the indirect block.
The THIS$SIZEfield specifiesthe numberof bytesof dataspaceallocatedto the file, and
doesnot includethe sizeof the indirect block. This sizeis equal to the NUM$BLOCKS
value(20) or the sumof NBLOCKSvaluesin the indirectblock(2 + | + 2 + 3 + 2 + 3 +
3 + 2 + 2 = 20) multipliedby the volumegranularity(1024)and equals20480.
The TOTATJSIZE field specifiesthe numberof bytesof data spacethat the file currently
occupies(designated
in FigureA-3 by the shadedareas).As you cansee,the file doesnot
occupyall the spaceallocatedfor it, so the TOTALJSIZE value(20300)is not as largeas
the THIS$SIZEvalue.

4.6 FLEXIBLEDISKETTE
FORMATS
The flexiblediskettedevicedriverssuppliedwith the iRMX II BasicI/O Systemcan
supportseveraldiskettecharacteristics,
listedin TablesA-1 and A-2.

Table A-1. 8-Inch Diskette Characteristics
Sectors
per Track

Devic€Size (in bytes)
Two-Sid€d
On€-Sided

Single
Single
Single
Singl€

15
I

256256
295168
314880
315392

Doubl6
Doubl€
Double

26
15
I

5@184
587264
626688

S€ctor
Siz€

D€nsity

128
256
5'12
1024

512
1024

Disk Verilication

512512
s90848
6n272
630784
'10216€6
',l',177600
1255424

A-21

STRUCTUREOF A NAMED VOLUME

TableA-2. 5 l/4-Inch DisketteCharacteristics
Soctor
Size

128

Density

1024

Single
Single
Si n g l e
Single

256
512
1024

Double
Double
Double

2s6

Seclors
per Track

I
2
to

I
4

DeviceSize (in by,tes)
Two-Sided
One-Sided
40 Tracks 80 Tracks 40 Tracks 80 Tracks
81920
91904
81920
81920

163840
1840Ar
163840
163840

1617921 325632
161792't 325632
1617921 325632

163840
1840&1
163840
163840

327680
3683&1
3276€0
3276É0

325632
325632
325632

&53312
653312
653312

Association)and ISO
For compatibilitywith ECMA (EuropeanComputerManufacturers
(fnternationalOrganizationfor Standardization),
the iRMX II devicedrivers,whencalled
by the Human InterfaceFORMAT command,canformat the beginningtracksof all
llexiblediskettesin the sameway. A configurationoptionfor eachdriverenablesyou to
specifythe following:
.

the devicedriversformat track0 of
For all 5 l/4-inch and 8-inchflexiblediskettes,
with an interleavefactorof 1.
12fì-byte
sectors,
side0 with single-density,

.

For 8-inch,double-sided,
double-density
flexiblediskettes,the devicedriversformat
track0 of side I with double-density,
256-bytesectors.

The iRMX II deviceclriversmap the sectorson thesebeginningtracksinto blocksof
devicegranularitysizeso that the BasicI/O Systemand the BootstrapLoadercantreat
ilexiblediskettesas if theycontaineda contiguous
stringof blocks,all of the samesize.
However,this mappingis not exactwhenyou use8-inch,double-sided,
double-density
diskettesand specifya devicegranularityof 512or 1024.A problemarisesbecausethere
are 26 128-byte
sectorsin a track,whichis not an integralmappingfor devicegranularities
of 512or 1024.Thus,the devicedrivercombinesthe leftover128-byte
sectorsof track0,
side0 with the first sectorsof track0, side 1 to makea blockof devicegranularitysize.
This continuesthroughouttrack0, side l, but the sameproblemoccurswith the last256bytesectorsof track0, side 1; not enoughsectorsare availableto makea blockof device
granularitysize.
When the devicedrivertriesto combinetheseleftoversectorsof track0, side 1 with the
first sectorsof track l, side0, it findsthat the sectorsof track 1,side0 are alreadyof
devicegranularitysize. Therefore,sincethe devicedrivercannotaccess
partialsectors,it
is left with one block(the leltoversectorsof track0, side l) that is lessthan device
granularitysize. When the devicegranularityis 512,this smallblockis block l9; whenthe
devicegranularityis 1024,it is block9.

A-22

Disk Verification

STRUCTUREOF A NAMED VOLUME

If nothing is done to excludethis smaller-than-normalblock from use,the devicedriver
will treat this block as a normal block, assumingit is of devicegranularitysize. Thus,if
you try to write information to that block, the driver will attempt to write an entire device
granularityblock of information into a block that is much smaller,therebylosing data.
To prevent this situation,the Human InterfaceFORMAT commandautomatically
declaresthis smaller-than-normalblock as allocatedin the volume free spacemap when it
formats the volume. This preventsthe BasicI/O Systemfrom ever writing information
into this block. If you wite your own formatting utility, you shouldalso declarethis block
as allocated.

Disk Verificotion

L-23

< command2-6,29
 command2-6
> command2-6,28
5 ll4-inch diskettecharacteristicsA-22
8-inchdiskettecharacteristics
A-21

A
Abortingcommands2-4
Add command2-46
Addresscommand2-46
Allocatecommand2-5,8
Argument error 2-5
Automatic devicerecogrition A-4, 5

B
Backingup the volumelabel 3-6
Backupfnodes
command2-5, I I
Bad blocks 2-8,44,3-2
Bad blocksmap file 2-9,59,60,65,66, 69,72,, A-8, 1 ó
Bad track information, displaying 1-3
BF command2-5,1I
Blockallocation2-8
Block command 2-47
BlockI/O error 2-4
BootstrapLoaderblocks A-l

c
Checksums
1-4,2-31,36,65
Command
options
All 1-5
Disk 1-3
Fix 1-4
1-3
Getbadtrackinfo
List 1-5

Disk Verification

Indcx-l

INDEX

Commandoptions(cont.)
Named 1-4
Namedl 1-4
Named2 l-4
Physical 1-5

Veriff l-3
Commands
< 2-6,29
 2-ó
> 2-6,28
Aborting 2-4
Allocate 2-5
Backupfnodes2-5
BF 2-5,11
D 2-6, 16
DB 2-ó,16
DD 2-6,20
DF 2-6,23
Disk 2-6,13
Displaybyte 2-6, 16
Displaydirectory 2-6,20
Displafnode 2-6,23
Displaynextblock2-ó, 28
Displaypreviousblock2-6,29
Displaysavefnode2-6,27
Displayword 2-6, 18
DNB 2-ó,28
DPB 2-6,29
DSF 2.ó
DSF command2-27
DW 2-6, 18
E 2-6,34
Editfnode 2-6,30
Editsavefnode2-6,33
EF 2-6,30
Error messages2-4
ESF 2-6,33
Er/.J.r
2-6,34
Fíx 2-6,35
Free 2-6,38

GB2-6,4r
Getbadtrackinfo2-6,41
H 2-7,43

Index-2

Disk Verification

INDEX

Commands(cont.)
Help 2-7,43
LBB 2-7,44
Listbadblocks2-7,44
Miscellaneous2-7,46
Names,entering 2-2
Parameters2-3

Q 2-7,s2
Quit 2-'7,52
R 2-7,53
Radices2-3
Read2-7,53
2-7,54
Restorefnode
2-7,57
Restorevolumelabel
RF 2-7,54
P.VL 2-7,57
s 2-7,61
Save2-7,59
sB 2-7,61
2-7,61
Substitutebyte
2-7,64
Substituteword
Summary2-5

sw 2-7,64
Syntax2-1
v 2-7,65
Yerlîy 2-7,65
w 2-7,74
Write 2-7,74
Conventionsiv

D
D command2-6, 1ó
DB command2-6, 16
DD command2-ó,20
Dec command 2-48
DF command2-6,23
Directing output 1-2
Directories,displaying 2-20
Disk command2-6,13
Displaybytecommand2-6,16
Displaydirectorycommand 2-6,20
Displayfnodecommand 2-6,23
DisplayingR?SAVE 3-11
Displaynextblockcommand 2-6,28

Disk VerilÍcation

Index-3

INDEX

Displaypreviousblock command 2-29
Displaypreviousblock
command 2-6
e
command
2-6,27
Displaysavefnod
Displaywordcommand 2-6, 18
Div command 2-48
DNB command 2-6,28
DPB command2-6,29
DSF command2-6,27
Duplicatevolume label file 3-2, A-8, 17
DW command2-ó,18

E
E command2-6,34
Editfnodecommand2-6,30
Editsavefnodecommand 2-6,33
EF command2-6,30
Error Messages1-6,2-4
Add 2-51
Address 2-51
Allocate 2-10
Backupfnodes2-12
BF 2-12
Block 2-51
D 2-77
DB 2-17
DD 2-21
Den 2-51
DF 2-26
Displaybyte 2-17
Displaydirectory 2-21
Displayfnode 2-26
Displaysavefnode2-27
Div 2-51
DSF 2.2'7
Editfnode 2-31
Editsavefnode2-33

EF 2-3r
ESF2-33
Free 2-39
GB 2-42
Getbadtrackinfo 2-42
Hex 2-51

Index-4

Disk Verification

INDEX

(cont.)
ErrorMessages
LBB 2.45
Listbadblocks
2-45
Miscellaneous
commands
2-51
Mod 2-51
Mul 2-51
R 2-53
Read2-53
Restorefnode2-55
2-58
Restorevolumelabel
RF 2-55
RvL 2-58

s 2-62
Save 2-ó0

sB 2-62
Sub2-51
Substitutebyte
2-62

v 2-69
VeriS 2-69
w 2-75
Write2-75
ESFcommand2-6,33
Examples
Add 2-51
Address2-51
Backupfnodes
2-12
BF 2-12
Block2-51
D 2-17
DB 2-17
DD 2-22
Dec 2-51
DF 2-26
Disk 2-15
Displaybyte2-17
Displaydirectory
2-22
Displayfnode2-26
Displaysavefnode
3-12
Displaying
R?SAVE3-12
Displayvord2-18
Div 2-51
DSF 3-12
DW 2-18

Disk Verification

Index-5

INDEX

Examples(cont.)

Editfnode2-32
EF 2-32
H 2-43
Help 2-43
Hex 2-51
LBB 2.44
Listbadblocks2-44
Miscellaneouscommands 2-51
Mod 2-51
Mul 2-51
Restorefnode2-56
Restorevolumelabel2-58
Restoringfnodes 3-4, 8
Restoringthe volumelabel 3-11
RF 2-56
RvL 2-58,3-11

s 2-63
Save 2-60

sB 2-63
Sub2-51
Substituteword 2-64
Subsritutebyte2-63

sw 2-64
v 2-73
Yertfy 2-73

w 2-75
Write 2-75
Exit command 2-6,34

F
FiÌe descriptornode (fnode) A-8
File sizes A-19,21
Fix command 2-ó,35
Fixing bad checksums2-36
Flexibledisketteformats A-21
Flexiblediskettetrack 0 abnormalities A-22
Fnode
AccessID A-12
Altering 2-30
Auxiliary byes A-13
Backingup on a volume 3-5

Index-ó

Disk Verilication

INDEX

Fnode(cont.)
Creationtime A-11
datablockidentificationA-11
Displaying 2-23
Flags 2-9,A-9
Freeing 2-38
Granularity A- 10
last file accessA- 11
last modificationA-11
Overview A-8
Owner A-11
Parent 2-65,A-13
Restoring2-54,3-1,7
size(byes) actualdata A- 11
size(byes) dataspaceA-12
StructureA-9
Type A-10
Volumeblocks A-11
Fnode allocation 2-8
Fnode file 3-1,2, A-14
Fnode file/space map file inconsistent2-5
Free command2-6,38
Free fnodesmap file 2-9,39,59,ó0,66, 69,72,3-2,A-15
Free spaceA-15
Free spacemap frle 2-72

G
GB command2-6,41
Getbadtrackinfo
command2-6,41

H
H command2-7,43
Help command2-7,43
Hex command 2-49

I
Illegalcommanderror 2-4
Initial files A-8
Invocation1-2
Error messages
1-6
Example1-5
Interactive1-6
Singlecommand
mode I -5

Disk Verlfication

Index-7

INDEX

IRMXo II volumelabelsA-4
ISOvolumelabel A-3

L
LBB command2-7,44
Listbadblockscornmand 2-7,44
Locationof files 3-1,A-18, 19
l,ong files 2-65,3-1, A-'19

M
Manual overview iii
Marking bad blocks 2-8
Miscellaneous
commands2-7,46
Add 2-46
Address 2-46
Block 2-47
Dec 2-48
Div 2-48
}lex 2-49
Mod 2-49
Mul 2-50
Sub 2-50
Mod command2- 49
Modesof operation 1-1,2-1
Mul command2-50

N
NamedvolumestructureA-1
Namedvolumes 1-4
Not a nameddiskerror 2-5

o
Operationalmodes 1-1,2-1
Orphanfnodes l-4,2-36

P
Parameters 2-3
Productoverviewiii, 1-1

Index-8

Disk Verification

INDEX

o
Q command2-7,52
Quit command2-7,52

R
R command2-7,53
R?SAVE 2-t7, 14,27,33,54,55,57,3-2,5,11,A-17
Radices2-3
Readcommand2-7,53
Readerkvel iii
Readingvolumeblocks 2-53
Restorefnode
command2-7,54
command2-7,57
Restorevolumelabel
Restoringfnodes 3-1
Restoringthe volumelabel 3-10
RF command2-7,54
Root directoryA- 16
RVL command2-7,57

s
S command2-7,6l
Savecommand2-7,59
SB command2-7,61
Seekerror 2-5
Short files 3-1, A-17
Sizeof files 2-65,A- 19,2l
file 3-2,A-15,A-8
Spaceaccounting
Structureof a namedvolume A- I
Subcommand2-50
Substitutebfe command2-7,61
Substituteword
command2-7,64
SW command2-64
Syntaxerror 2-4

T
Track 0 Abnormalities.flexiblediskettesA-22

Disk Verilication

Index-9

INDEX

v
V command2-7,65
Verifo command2-65
Volumeattributes,displaying1-3,2-13
Volumeblocks,freeing 2-38
Volumefree spacemap file 2-9,39,59,60,66,69,3-2,A-8, 1-5
Volume label
backingup 3-6
iRMXO II A.4
ISO A-3
Restoring3-10
Volumelabelfrle 2-57,3-1,2,
A-8, l6
Volume structure
Named A-2

w
W command2-7,74
Workingbuffer,changingcontents2-62
Write command2-7,74

Index-10

Disk Verification

intel
T OT HE
GUIDE
E X T E N D Ei R
DM X @ I I
INTERACTIVE
CONFIGURATION
UTILITY

lntel Corporation
3 0 65 B o w e r sA v e nue
5 an t a C l ar a ,C al r f o r n i a9 5 0 5 1

C o p y r ì g h t 1 9 8 8 ,l n t e l C o r p o r a t l o nA, l l R g h t s R e s e r v e d

PREFACE

INTRODUCTION
This manualdescribes
the InteractiveConfigurationUtility (ICU) and explainsits use. It
doesnot explaineachscreendisplayedby the ICU. For a descriptionof the ICU screens
and their parameters,refer to the Extended|RMX II InteractiveConfigurationUtility
Reference
Manual.

READERLEVEL
The manualassumes
that you are familiarwith the monitorand keyboardfrom whichyou
run the ICU. It is alsohelpfulif you are familiarwith the tbllowing:
.

The ExtendediRMX II OperatingSystem

.

PL/M-286

r

BND286and BLD286

MANUALOVERVIEW
This manualis organizedasfollows:
Chapter1

This chapterprovidesintroductorymaterialto configuringan
iRMX I I systemusingthe InteractiveConfigurationUtility (ICU).

Chapter2

T)1ischapterdescribes
how to generatea system.

Chapter3

This chapterdescribes
how to prepareapplicationjobs.

Chapter4

This chapterprovidesoveruiewinfbrmationon how to add usersto
your system.For detailedinformationon addingusers,ref-erto the
ExtendediR'UX Operator'sGuide to tlrc Human Interface.

Chapter5

This chapterdescribes
how to load and testthe system.

ICU UsedsCuide

ul

PREFACE

AppendixA

'l-his
appendixlistsfilescreatedby the ICU.

Appendir B

This appendixshowsan examplcconfigurationsession.

AppendixC

This appendixdescribes
how to programa generated28(r-based
systeminto PROM devices.

AppendixD

system
This appendixdescribes
how to programa 386/100-based
into PROM devices.

CONVENTIONS
Thismanualusesthe followingconventions:
.

Informationappearingas UPPERCASEcharacters
whenshownin keyboard
examplesmustbe enteredor codedexactlyasshown.You may,however,mix lower
whenenteringthe text.
and uppercase
characters

.

Fieldsappearingas krwercase
characters
within anglelrrackets(< > ) whenshownin
keyboard
examples
variableinformation.You mustentcran appropriate
indicate
valueor symbolfor variablefields.

o

lJser input appearsin one of the followingforms:

as bolded

lv

text

wlthln

a screen

.

T h e t e r m " i R M X l l ' r e fe r s t o t h e E x t e n d e di R M X I l . 3 O p e r a t i n gS y s t e m .

.

T h e t e r m " i R M X I ' r c l e r s t o t h e i R M X I ( i R M X 8 6 ) O p e r a t i n gS y s t e m .

.

All numbers unlessothcrwise stated are assumedto be decimal. Hexadecimal
n u m b e r si n c l u d et h e " " r a d i xc h a r a c t e r( f o r e x a m p l e , 0 F F H ) .

ICU User'sGuide

CONTENTS
CHAPTER1

ICU Usefs Guide

PAGE

CONTENTS

CHAPTEB1 (continued)

PAGE

CHAPTER2

PAGE

CHAPTER3

PAGE

CHAPTER4

PAGE

YI

ICU Use/s Guide

CONTENTS

CHAPTER5

PAGE

APPENDIX
A
FILESCREATEDBY THEICU

PAGE

APPENDIX
B
EXAMPLESYSTEMCONFIGURATION

PAGE

APPENDIX
C
A 2SSBASEDSYSTEMINTOPROMDEVICES
PROGRAMMING

PAGE

C-l
............................
C.l Introduction
C-1
.............................
.........................C.2 Requirements
................................C-2
C.3 Configuring
a ROM-Based
System................
C-9
....................................
the
System.................
C.4 Generating/Building
C.4.1 Includingthe iSDM" Monitor and the BootstrapLoader
..................
C-10
in the PROM Devices...............
C-11
........................................
C.4.l.l Settingup the iUP 201PROM Programmer
......C-12
SystemPROM File
the Operating
C.4.1.2Formatting
C-14
Devices...........,.....
into
PROM
theOperating
System
C.4.1.3Programming
C'16
the iSDM* Monitorinto PROM Devices.................-..
C.4.1.4Programming
C-17
..........-.....
Loaderinto PROM Devices.
the Bootstrap
C.4.1.5Programming
System
in ROM from the iSDM" Monitor..C-17
C.4.1.6Startingthe Operating
C-18
......
that is activated
on Power-up.......
C.4.2Creatinga System
..
...
C-19
C.4.2.1Formattingthe OperatingSystemPROM File
the OperatingSystemlnto the PROM Devices.. .. .. C-20
C.4.2.2Programming
........'.'..C-23
System
in PROM...
Starting
the
Operating
C.4.2.3
.........-...................C-24
C.4 HardwareJumperModificatrons.....................

ICU Use/sGuide

Ylr

CONTENTS

APPENDIX
D
PROGBAMMING
A 386/lOO.BASED
SYSTEMINTOPROMDEVICES

PAGE

TABLES
TABLE

t

î

l-3

Ylll

ICU Use/sGuide

CONTENTS

FIGURES
FIGURE
1-1
' t a

].-4

1-5
1-6
J-l

B-1
B-2
B-3
B-4
B-5
B-6
B-7
B-8
B-9
B-10
B-11
B-12
B -l 3
B-14
B-15
B -1 6
B-17
B -1 8
B-19
B-20
B-2"t
B-22
B-23
B-24
B-25
B-26
B-27
B-28
B-29
B-30

ICU User'sGuide

lx

CONTENTS

FIGURE
B-31
B-32
D-JJ

B-34
B-35
B-36
B-37
B-38
B-39
B-40
B-41
B-42
B-43
B-44
B-45
B-46
B-47
B-48
B-49
B-50
B-51
B-52
B-53
B-54
tl--))

B-56
B-57
B-58
B-59
B-60
B-61
B-62
B-63

ICU Usefs Guide

CHAPTER
1
INTRODUCTION
TO CONFIGURATION

1.1 INTRODUCTION
The iRMX II OperatingSystemis modularin structure,enablingyou to includeor omit
subsystems
accordingto your needs.It is alsocompatiblewith a varietyof peripheral
boards.The InteractiveConfigurationUtility (ICU) is designedto helpyou take
advantage
of this flexibility.
This chapterprovidesan overviewof the ICU. It explainsthe configurationprocess,
the utilitiesthat
ICU files,ICU commands,
error messages,
configurationenvironment,
and includesmany
comprisethe ICU, and more. The chapteris verycomprehensive
that you readthis chapter
importantdetailsfor usingthe ICU. lntel recommends
carefullybeforeattemptingto configureyour system.

1.2 WHATIS CONFIGURATION?
your application's
hardwareand operatingsystem
Configurationis the processof selecting
layersand thenbindingand buildingthe entireoperatingsystem.The tool usedfor
configurationis the InteractiveConfigurationUtility (lCU). The ICU is a menu-driven
utility whichpresentsa seriesof screensthat promptyou lbr intbrmation.The
informationis storedin a definitionfile that is then usedto seneratethe new system.
The objectiveof runningthe ICU is to build a definitionfile that containsall of the
configurationinformation.This file containstwo kindsof information:
.

Initializationparameters

o A setof variablesspecirying
whichoperatingsystemlayersand devicedriversare to
be boundtogetherwith your applicationsoftware
Intel providessixdefinitionfilesyou canuseasa startingpoint. If you run the UPDEF
you canalsousea definitionfile from iRMX II.l. (It is
Utility suppliedwith this release,
not necessary
to run UPDEF if you are using a definitionfile from iRMX IL2.) As you
you alterthe chosendefinitionfile to matchyour
performthe configurationprocess,
targetsystem.

ICU Uset'sGuide

l-l

INTRODUCTIONTO CONFIGURATION

1.3 WHENTOUSETHEICU
You shouldusethe ICU wheneverone of the followingis true:
.

You want to generatethe configurationfilesthat describeyour system.

.

You are usinga systemotherthan one described
by an Intel-supplied
definitionfile.

o

You are changingan existingsystem's
hardwareand/or soffware(e.g.,addinga new
diskdrive).

1.4 tCULOCATTON
The ICU filesare locatedin the directory:SD:RMX286/ICU.Whenworkingwith the
ICU, you mustusethe full pathnamein eachcommand(seeFigurel-l) or createan
ALIAS for the pathname.

Figure1-1. klcation ofthe ICU Directoryin an Intel-suppliedSystem

t-2

ICU User'sGuide

INTRODUCTIONTO CONFIGURATION

1.5 THEGENERAL
PROCESS
OF USINGTHEICU
You configurea systemin threesteps:
1.

Intefactivelymodifya definitionfile (seeFigure1-2). To do this,invokethe ICU
and then supplyinformationto filì in screensthat the ICU presents.(This stepcan
be omittedifyour systemmatchesone ofthe Intel-supplied
definitionfiles.)

2.

Whenyou finishconfiguringthe operatingsystem,usethe ICU to generatenew
configurationfilesasdefinedin your modifieddefinitionfile (seeFigure l-3). The
end productis a groupof filesthat definethe system.

3.

Exit from the ICU, and at the HumanInterfacelevel,executethe submitfile
createdby the ICU duringthe generatestep(seeStep2). This createsthe new
versionof the operatingsystemwhichcanthenbe loadedand executed.

QU€STTONS

D E F A U LO
T RO I H E R
OLD
DtSCRtPION
F I LE

Ntw
DrscRrPfroN
FILT

Figurel-2. First Step: Editinga DefinitionFile

ICU User'sGuide

l-J

INTRODUCTIONTO CONFIGURATION

COMMANDS

fINAL
DTSCRIPfION
FILE
CONFIGURAfION
S O U R C EF I L E

Figure l-3. SecondStep: Generatinga Subrnit File and SourceFiles

1.6 WHATTO DO BEFORE
INVOKING
THEICU
Beforeyou invokethe ICU, you mustperformcheckson your existingsystemand make
severaldecisions.The followingsectionsprovidethe informationyou needto know
beforeinvokingthe ICU.

1.6.1 Configuration
Environments
You canrun the ICU on the followinssvstems:
o An Intelle@SeriesIV MicrocomputerDevelopment
Systemwith 256Kcontiguous
bytesof memory,a harddisk,andversion2-8or later of the iNDX Operating
System.
r

l-4

An iRMX Il-basedsystemwith 1 Mbyteof RAM memorywhichallowsa user
partitionof 384Kbytes,a hard disk,and the iRMX I I OperaringSystem.For
informationon changingthe amountof memoryallocatedto your terminal,see
the sectionon editingthe :CONFIG:TERMINALSfile in Volumel, Operator's
Guide to the Human Interface.

ICU UsefsGuide

I n-TRODUCTI
ON TO CONFICURATION

1.6.2 Ensuringthe ICUFilesareon YourHardDisk
Containedon the iRMX II OperatingSystemreleasediskettesor tapeare the filesto run
the ICU. Thesefilesmustbe on the harddiskbeforeyou can invokethe lCU. Followthe
instructionsin fhe Ertended|RMX II Hardwareand SoftwareInstallatiotlGuide to copy
thesefilesto your system.
Table 1-1listsall of the filesrequiredto run the InteractiveConfigurationUtility for
iRMX II systemsand for iNDX systems.Checkthat your hard diskcontainsall of the
filesrequiredby your system.If your harddiskdoesnot containthe requiredfiles,return
to the instructionsin the Extended|RMX II Hardwareand SoflwareInstallationGuide.
Followingthe directionsin that manualwill placeall the iRMX II filesinto the standard
directorvstructure.

ICU UsedsGuide

l-5

INTRODT]CTIONTO CONFIGURATION

TableI-1. |RMX@ll ICU Files

l-6

Function

Filename

tcu286

lCU286(foriRMXll systems)
(foriNDXsystems)
1CU286.86

Scre€nMasterFile

rcu286.scM

f€mplate Filefor SystemGen€ration

ICU286.TPL

Update D€finitionUtility

(foriRMXll systems)
UPDEF
(foriNDXsystems)
UPDEF.86

UsorDeviceSupportUtility

UDS(foriRMXll systems)
(foriNDXsystems)
UDS.86

UDSScreenMasterFile

UDS.SCM

Templateexample- (minimumUDS
inputfile)

TEMPLATE-1,UDS

Templateexample- (UDSinputfÌle
containinguserhelp builtinto
help text)

T E M P L A T2E, U D S

ICUMRGUtilily

(for|RMXll systems)
ICUMRG
lCUMRG.86
(foriNDXsystems)

Definition
Filefor an iRMXll
Multi-User
Systemdesignedto run
on the ìSBC286/10(A)and iSBC286/12
froards

28612,DEF

DefinitionFilelor an iRMXll
Multi-User
Systemdesignedto
run on th6 SXM 386 AP Kir

SXM386.DEF

DefinitionFilefor an iRMXll
Muhi-Us6r
Systemdesignedto
run on an |SBC386/2X aîdM/3X
ooaro

DEF
38620.

Definition
Filelor an iRMXll
Multi'UserSystemdesignedto
run on an iSBC286/100Aboard

2861004.
DEF

DefinitionFilefor an iRMXll
Mutti-User
Systemdesignedto
run on an |SBC386/116and 386/120
board

3861m.DEF

ICU User'sGuide

INTRODT]CTIONTO CONFIGT]RATION

1.6.3 ChoosingYourDefinitionFile
lf you haveneverconfiguredan iRMX-basedsystembefore,you shouldchooseone of the
Intel-supplied,
multi-userdefinitionfiles(listedin Table 1-l) as input into the ICU. You
canbuild a definitionfile screenby v:reen,but you will savetime by startingwith a
standarddefinitionfile. Detailson the standarddefinitionfilesare qivenin theExtended
iRMX II Hardwareand SoftwareInsnllation Guide.
If you createda definitionfile usingan iRMX II.l versionof the ICU, you canusethis file
as input to iRMX II.3 of the ICU only after runningthe UPDEF Utility. Onceyou create
a iRMX II.3 definitionfile,youcannotuseit rs inputinto iRMX IL I of the ICU.
The Intel-supplied
definitionfilesdefine80286-or 80386-based
MULTIBUS I and
MULTIBUS II systems.Thesesystemsare fully configuredmulti-useriRMX II
OperatingSystems.Eachlayerimplementsall its systemcallsand mostof the features
and driversprovidedby the iRMX ll OperatingSystem.Multipleuserscancommunicate
with the operatingsysteminteractively
througha terminalor via an applicationprogram,
and canaccess
secondary
storage.The definitionfilesincludeUDI so that you ciìnrun
languages,
suchas PL/M-2t16,PASCAL,and FORTRAN.
To defineyour own system,modifythe definitionfile that comesclosestto your needs.
To seethe contentsof a dcfinitionfilo, usethc LIST command(describedlater in this
chapter).Detailsof boardconfigurationand interruptlevelsare givenìn the Extended
|RMX II Hardwareand SoftwareInslallatbn Guide.

1.6.4 CheckingAccessRightsto DefinitionFiles
I f y o u u s e t h e I C U o n a n i R M X I I - b a s e ds y s t e mt,h e o p e r a t i n gs y s t e mm a k e ss u r ey o u
have the proper accessto both the definition files and their rcspectivedirectories. This
check is performed in two instances:when you invoke the ICU and when vou enter the G
(generate)command (discussedin a later section). If you do not have proper access,onc
o r m o r e o f t h e f o l l o w i n g : i t u a t i o n sc a n o c c u r :
.

The ICU will be unable to read the input definition file.

.

The ICU will be unable to savethe changesyou make tJuringthe ICU session.

.

The ICU will be unable to create the generationfiles necessaryto complete the
configuration process.

Following the installationinstructionsin the Extendcd|RMX II Ilurdu'areartd Software
InstallationGalde ensuresthat the user WORLD can seneratea new version of the
operating system.

ICU User'sGuide

t-7

INTRODUCTIONTO CONFIGURATION

To checkyour accessrightsto directoriesand filescontainedin directories,usethe DIR

command
folÌowed
bytheE[xtended]
or Llong]options,Forexample,
youcancheckyour
access
rightsto the :SD:RMX286/lCUdirectoryand the 28612.DEFfile by usingthe
following commands:
DIR :SD:RMX286E[xtended]
DIR :SD:RMX286/ICU E[xtended]
For more information on usingthe Human Interfacecommands,seethe Operator'sGui"de
to the futended |RMX II Human Interface.
The accessrightsneededto usethe ICU successfully
vary accordingto the operationsto
be performed.In all caseswherethe G (generate)commandis to be used,you musthave
Add Entry accessto the directorycontainingthe definitionfile and to the directoriesyou
specifyin the'GenerateFile Names"screen.In othercases,the accessrequireddepends
on the kind of file (newor existing)andwhetherit is an input or outputfile. The
followingparagraphs
describethe access
rightsrequiredin differentcircumstances.
.

Ifyou specifyan existingrmore information about the
"GenerateFile Names"screen.)

.

If you specifya new file asthe only file on the commandline, the file servesasboth an
input file and an outputfile. In thiscase,you musthaveAdd Entry access
to the
directorycontainingthe newfile.

Ifyou do not havethe correctaccess
rights,the ICU returnsthe followingmessage:

0026:

E$FILE_ACCESS,while

loadlng

command

Additional information about accessrights can be found in the \RMX II ExtendedI/O
SystemUser'sGuide.

t-8

ICU Usefs Guide

INTRODUCTIONTO CONFIGURATION

EXAMPLES:
To usethe G commandwithoutcausingan error,you musthaveAdd/DeleteEntry access
to the directory in which you are working. This sectiondescribesthe variouswaysof
invoking the ICU and the accessrights required.
- /RMX286/ICU / ICU286:HOME:NEW.DEF
where
:HOME:NEW.DEF

Pathnameof a newdefinitionfile. The ICU usesthis file as
both the input file and the outputfile.
to the directory
You musthaveAdd Entry access
containingNEW.DEF (:HOME:). If you do not haveAdd
Entry access,
the ICU returnsthe followingmessage:

***

T,/n Frr^r

in

file

HOME:NEI,J.DEF

0026: E$FILE_AccEsS
If the directorydoesnot exist,the ICU returnsthe
followingmessage:

*** I/0 Error in file:
:HoME:NEl,].DEF
0021: ESFILE NoT EXIST

- /RMX286/rcultcu286DIRioLD.DEF
where
DIR/OLD.DEF

Pathnameof an existingdefinitionfile. The ICU usesthis
file asboth an input and an outputfile. It canbe a new or
existingfile.
to save
You musthaveRead/Writeand Deleteaccess
to OLD.DEF.
changes

- /RMX286/ICU I LCUZ86/ RMX286I I3UIINPUT.DEF to DIR/OUTPUT.DEF

ICU Usefs Guide

t-9

INTRODUCTIONTO CONFIGURATION

wnerc
/RMX286/lCU/INPUT.DEF

Pathnameof a standarddefinitionfile. The ICU uses
this file asthe input file

DIR/OUTPUT.DEF

Pathnameof the outputdefinitionfile. This file canbe
a newor existingfile.
You musthaveAdd Entry accessto the directory
containing
OUTPUT.DEF(DIR). ln addition,if
OUTPUT.DEF is an existingfile, you musthaveDelete
access to lt.

1.7 DISTINGUISHING
ICU-GENERATED
FILES
Eachtime you generateyour system,the ICU generates
a set of ICU files. To helpyou
distinguish
your generationfilesfrom eachother and to determinewhichinput definition
fìle generatedthe ICU files,you canuseone of theseoptions:
.

Createa new directoryto containyour definitionfile.

.

Use the prefixoptionsuppliedby the ICU.

The followinssectionsdescribeeachmethodin more detail.

1.7.1 CreatingDirectories
for iRMX@
ll-BasedSystems
Intel recommends
that you maintainthe defaulttlirectorystructureby placinganynew
systemdefinitionfilesin a newdirectorynestedin your :HOME: directory.Before
invokingthe ICU, you shouldcreaîea copyof the inputdefinìtionfile in your working
directoryto avoidcorruptingthe originalfile. The followingexampleillustrateshow to do
thisusingthe 28612.DEF
file asthe startingdefinitionfile:

Onceyou attachthe new directory(28612)asthe workingdirectory,you will needto use
the full pathnameto invokethe ICU. For example

You may wish to creiìte an ALIAS for the complete pathname used to invoke the lCU. A
convenientconvention to use is to create the working directory with the same name as the
definition file (without the .DEF extension). The operating systemproduced should have
the same name as the definition file (with a .286 extensionì.

l-l0

lCtl User'sGuide

TO CONFIGURATION
INTRODUCTION

1.7.2 Usingthe PrefixOption
your ICU generatedfilesfrom eachother is to usethe
A secondmethodto distinguish
prefixoptionsuppliedby the ICU. You canselectthe prefixoptionwhenenteringthe
Generate(G) command.The ICU then displaysa prompt (seeChapter2 for the actual
screen)askingyou for the prefixletteryou wishto assignto the filescreatedby the lCU.
For example,if you choosethe letter"Q" asyour prefixoption,a "Q" will precedeall the
filesgeneratedwhenyou enterthe Generatecommandon the menuscreen.In this case
the filesgeneratedfor the Nucleuswill be
QNTABL.A2S
QNUCDA.A2S
QNJOBC.A2S
will alsobe precededby the letter "Q" as in the
The filescreatedfor all other subsystems
exampleabove.Ifyou want to generateconfigurationfilesfor more than one system,
that your input
choosea differentprelìxoptioneachtime. Intel alsorecommends
files. This
to
the
generatetj
with
prefix
letter
you
assign
the same
definitionfile start
allowsyou to easilydeterminewhichdefinitionfilescreatedeachset of outputfiles- If
the previousfile.
you createa file with a prefixthat alreadyexists,the ICU over-writes
If you do not want to usethe prefixoption,entera carriagereturnwhenyou are
promptedfor the prefix. This causesthe ICU to generatethe outputfileswithouta prefir
files).
(seeAppendixA for a completelist of the ICU generate +  
ICU286.TPL  

If the inconsistenry
is in the definitionfile, the ICU displaysthe followingwarning
messageand asksfor permissionto upgradethe file or restorefrom the file. (The
upgradeprocessis a simpler,fasteroperationthan restoreand requiresno additionaluser
input.)

***

WAIìNING. D E F I N I T I O NF I L E V E R S I O NI S N O T C O R R E C T .

I T S V E R S I O NI S :

VERSIONEXPECTED: < c o r r e c t v e r s i o r >

lf the ICU needsto restorefrom a file in orderto useit, you will be promptedasfollows:
Do you lrant to restore

frorn the fíl.e? y/lnl

A responseof "No"causesthe ICU to stopexecuting.A "Yes"responsemeansthe ICU
will restorethe backupinformationstoredin the definitionfile (discussed
later in this
chapter).If the Updateversionnumberis higherthan the ICU versionnumber,you are
probablyusingthe wrongversionof the ICU. In thiscase,the ICU displaysthiswarning
beforethe restoreDromDt:
***

WAINING - The DefiniCion

File

version

is NEIIER

However,if the ICU is ableto usethe file withoutrestoring,it promptswith
Do you want to updace the flle?

y/ln]

A responseof "No"causesthe ICU to stopexccuting.A "Yes"response
causesthe ICU to
updatethe file. Sincethe ICU processes
version
delìnitionfileswith inconsistent
numbers,you canuseall of the Intel-supplied
definitionfles asinput for your own tailormadeICU.

ICU Usefs Guide

l-13

INTRODUCTIONTO CONFIGURATION

The ICU issuesthe restoreprompt if it discoversany of the following in the definition

file:
.

in the Intel versionnumber.
Inconsistency

o

with
in the Userversionnumber,if the file containsuserdevicesa lntel Corporat ion
For general help
The following

For Extended iRMX lI,

ln any screen enter H .

cornmandsare available

Change
Cenerate
List
Save
qui È
Exit
Replace
Detail-Leve1
Backup
ENTER COMMAND:

In the screenshownaboveis the main ICU menu,wheneveryou seethis screenyou are in
commandmode. The string  represents
the ICU versionnumber. The string
represents
the copyrighted
yearsof the product.

t-14

ICU User'sGuide

INTRODUCTIONTO CONFIGURATION

Wheneveryou are in commandmode,you mustenterone of the commandslistedor an
shouldbe followedby a carriagereturn. The ICU
"H" for help. All ofyour responses
regardsall invalidinput asa response
of "H < CR > " and displaysthe "Help"screenuntil a
valid responseis entered.
The followingsectionsdescribethe choiceson the menuscreen.

1.9.1HelpCommand

ENTER COI4ì.1AND
: H 

ICU Use/s Guide

l-15

INTRODUCTIONTO CONFIGURATION

Ifyou enterH (help)and a carriagereturn,the ICU will displaythe followingscreen:

The Change (C) comnand allows you to specify the configuratlon
paraméters that define your syscen. To get to a specific
screen, Èype 'C screen$nanne'. C? gives you a list of all the
screen nanes .
The Generate (G) connand creates the submit file and all Pl,!{
and assembler files
required to create your Extended iRì,fX II
system.
The List (L) comnand shows you the current state of yóur
configuration
flle.
To copy the values thac define your
systen to a file, t)?e 'L file$name'.
Thè Quit (Q) comnand leaves the ICU wíthout
changes.

saving any

The Exit (E) comnand leaves the ICU and saves all
changes.
The Savè (S) comrnandsaves all
the ICU.

the changes lrithout

T h e R e p l a c e ( R ) c o m r n a n dr e p l a c e s t h e c u r r e n t
chatacter.
The Detail

level

( D ) c o r n r n a n sde t s t h e l e v e Ì

T h e B a c k u p ( B ) c o m r n a n dw r i t e s

the

leaving

control

of detail.

a backup fÍle.

TYPE  to Cont inue

1.9.2ChangeCommand

ENTERCOMMAND
: G[hange] lScreen Abbrev] 

l-16

ICU Usefs Guide

INTRODUCTIONTO CONFIGURATION

The Changecommandenablesyou to begin editing the definition file. The syntaxof the
Changecommandis asfollows(the elementsinsidethe bracketsare optional):
C[hange] [screenabbrev]

C?
where

C or Change

Startseditingthe definitionfile from the first screen(the
"Hardware"rcreen).The first time you run the ICU you should
usethis option.

screenabbrev

Beginseditingat a specificscreen.For example,ifyou enter"C",a
space,the abbreviation
of an existingscreen,antl a carriagereturn,
the ICU enablesyou to starteditingyour definitionfile from that
particularscreen.
If you entera screenabbreviation
incorrectly,the ICU displaysa
screencontainingall the screennamesand abbreviations
(see
indicates
Table l-2). The abbreviation
enclosedin parentheses
what mustbe enteredfor eachscreen.

?

Causesthe ICU to displaya screenwith all the screennamesand
abbreviations.

Table 1-2listsall the possiblescreennames.The screensare displayedin order from left
to right,that is the "Interrupts"screenis displayedafter the "Hardware"screen.Device
driversare listedat the end of the table.
Ifyou did not invokethe ICU with the nameof an existingdefinitionfile,you shouldstart
your edit with the "Hardware"screen.If you did invokethe ICU with the nameof an
existingdefinitionfile,you canstartyour edit with the nameof anyscreenthat the input
definitionfile hasalreadydefined.lfyou entera valid screennamebut that screenis not
configuredinto your definitionfile, the ICU displaysthe next"main"screenfollowedby
thiswarnins:
***ltarning

- The screen requested cannot be displayed

The ICU progresses
from screento screenin a logicalorcler. Referto Figure 1-4for the
losicalflow of the ICU.

ICU UseCsGuide

l-17

INTRODUCTIONTO CONFIGTIRATION

Table l-2. ScreenNames
--- Mainscreens:--(lNT)Interupts
(MEMF)Memoryfor FSM
(Hl)HumanInterface
(PREF)Prefìxes
(REM)RemotefileAccess
(ABDR)Auto Boot Dev
(IOJOB)l/O Jobs
(IDEVS)IntelDevices
(SDB)SystemDebugger
(USERJ)UserJobs
(INCL)Includesand Libs

(HARD)Hardware
(SLAVE)SlaveInterrupt
(SUB)Sub-systems
(HUOB)Hl Jobs
(HILOG)Hl Logical
(REMFS)RemoteServers
iLOGN)LogicalNames
(BIOS)BIOS
(USERD)UserDevices
(NUC)Nucleus
(USERM)UserÀ4odules
(GEN)GenerateFileNames

(MBll)Multìbusll Hardware
(MEMS)Memoryfor System
(OSEXT)OS Extensions
(RES)Resident/Recovery
User
(APPL)ApplicationLoader
(EIOS)EIOS
(IOUS)l/O Users
(BCALL)BIOSSystemCalls
(UDDM)UDS DeviceDriverMods
(NCOM)Communication
Service
(ROM)ROM Code
(COMNT)Commentsscreen

-*- DeviceDrivers---

(D214)MassStorageControllerDriver

(D8274)8274TerminalDriver
(D253O)
82530TerminalDriver
(D544)5444 TerminalDriver
(D286)LinePrinter- |SBC286/10
(D220)|SBC220
(D218)|SBX21BA
(D264)iSBC264
(D2s1)|SBX251
(DSCSI)SCSIDriver
(0224A)|SBC18f.1224A
(D279)iSBX279

(D8251)8251ATerminalDriver
(D534)534TerminalDriver
(D8848)TerminalComm controller
(D350)LinePrinter- |SBX350
(D202)|SBX208
(DRAM)RAM DiskDriver
(D410)|SBC186/410

ENTERscreenabbreviation:

1.9.3Generate
Command

ENTERCoMMAND
: G[enerate]



The Generatecommandcreatesall the ASM, PL/M, build and submitfilesrequiredto
configurethe iRMX II system.Referto Chapter2 for more informationon generatinga
system.

l-18

ICU Usefs Guide

INTRODUCTIONTO CONFIGURATION

1.9.4 ListCommand

ENTERCoMMAND
: L[ist]

fname] 

The List commandenablesyou to list the contentsofyour definitionfile to a file or to a
device.This commandliststhe contentsof thosescreensthat you selectedto defineyour
system.The syntaxof the List commandis asfollows(the elementsinsidethe brackets
areoptional):
L[ist] [name]
where
L or List

Liststhe contentsof your screens.

name

Specifiesan iNDX or iRMX II deviceor file. If you omit the name,the
terminal(:CO:) is assumed.You shouldlist the definitionfile to a file
nameratherthan to the terminalsincethe displayscrollsrapidly. If you
want to useyour terminalto reviewyour definitionfile, usethe Change
commandto viewjust thosescreens
you want.

After the ICU haslistedthe definitionfile to the specifiedfilename,it notifiesyou that
the definitionfile hasbeenlistedand returnsto commandmode. For example,if you
listedthe ICU screensto a file calledICU286.I-ST,
the ICU woulddisplay
The Definition

File has been listed

to file:

ICU286.LST

followedby the main menuscreen.

1.9.5 SaveCommand

E N T E RC O M M A N:D S I a v e l

lname] 

The Savecommandupdatesyour definitionfile with all of the changes
you enteredduring
the currentICU session.The syntaxof the Savecommandis asfollows(the elements
insidethe bracketsare optional):
S[ave][pathname]

ICU UsePsGuide

l-19

INTRODUCTIONTO CONFIGURATION

where
S or Save

madein this session.
Savesall the changes

pathname

to
Pathnameof a file to useinsteadof the defaultoutput-file-name
savechansesto the definitionfile.

When the Savecommandis entered(followedby a carriagereturn),the ICU updatesthe
After the ICU updatesthe definitionfile, it
file you specifiedasthe output-file-name.
notifiesyou that the specifiedfile hasbeenupdatedand returnsto commandmode. For
the ICU
example,if you invokedthe ICU using28612.D8Fasthe output-file-name,
would displaythis message
followedby the menuscreen:
The Definicion Flle has been written

to fil-e:

28612.DEF

To be sureyou are updatingthe right file, usethe List commandbeforeyou saveyour
definitionfile. The List commanddisplaysthe nameof the outputdefinitionfile at the
top of eachICU screen.

1.9.6QuitCommand

ENTERCOMMAND
: Qluitl



The Quit commandenablesyou to stopyour currentICU session
withoutupdatingthe
definitionfile. The synta-r
of the Quit commandis asfollows(the elementsinsidethe
bracketsare optional):
Qluitl
After you enterthe Quit command(followedby a carriagereturn),the ICU may display
the prompt"Do you want to quit withoutsavingyour changes?
y/[n]" to ensurethat you
did not accidentally
enterthe Quit command.Your response
to this prompt shouldbe
either"Yes"or "No". The ICU only displaysthisprompt if you usethe Quit command
after makingchangesto an existingdefinitionfile or creatinga new definitionfile. If no
changes
weremadeto the definitionfile beforethe Quit commandwasentered,no
prompt is displayed.

l-20

ICU Use/s Guide

INTRODUCTIONTO CONFIGURATION

1.9.7 ExitCommand

ENTERCoMI{AND
: EIxit]

lpathnarneI 

The Replacecommandenablesyou to changethe controlcharacterthat the ICU usesin
the specialeditingcommands.The controlcharacterprecedesspecialeditingcommands,
the defaultcharacteris the caret(^). lfyour terminaldoesnot supportthis character,or
you prefer a differentcharacter,useR[eplace]to changeit to anycharacterof your
choice.The syntaxof the Replacecommandis asfollows(the elementsinsidethe
bracketsare optional):
RIeplace]

ICU User'sGuide

1-21

INTRODUCTIONTO CONFIGURATION

After you enterthe Replacecommand(followedby a carriagereturn),the ICU displays
the followins screen:

ENTERCOMMAND
: R{eplace}
Input new control



character

:

Enter the newcontrolcharacteryou select,followedby a carriagereturn.

1.9.9 Detail-Level
Command

E N T E RC O M ì , Í A N: DD I e t a i l - L e v e l ]



The Detail-Levelcommandenablesyou to set the levelof detailyou want in displaying
the ICU screens.Thiscommandprovidesthe optionof selectivev:reendisplays.Rather
thanviewingall the screens,
you canelectto seeonly screensof a partìculart)?e. There
are four possiblelevelsyou mayrequest:
All

Showsall the screens

Devices

Showsonly devicescreens

OperatingSystem

Showsall non-hardware
relatedscreens

Jobs

Showsonly thejob screens(suchas User,ì/O and User
Modulesscreen)

The syntaxof the Detail-Levelcommandis as follows(the elementsinsitlethe brackets
are optional):
DIetail-Level]

l-22

ICU Usefs Guide

INTRODUCTION
TO CONFIGURATION

After you enterthe Detail-Levelcommand(followedby a carriagereturn),the ICU
displaysthe followingscreen:

The follorving

levels

of detaiÌ

are available:

All
Devices
0 p e r a t i n g - S y st e n
Jobs
EMER LeveÌ of Detail

If you enteran invalidresponse,
the ICU reclisplays
this screenuntil it receivesa valid
response.

1.9.10BackupCommand

E N T E RC O M M A N:D B l a c k u p l f Í ì e . n a m e < C R >

The Backupcommandwritesan ASCII backupfile containinga list oî all the parameter
abbreviations
and their currentvalues.The backupfi.leis usedas input to the ICU during
the restoreprocess(discussed
later in this chapter).Remember,the informaîionin the
backupfile is part of the definitionfile. The advantage
of creatinga backupfile is that it
is in ASCII whichis easierand saferto usewith other utilitiesor electronicmail.
The syntaxof the Backupcommandis asfollows(the elementsinsitlethe bracketsare
optional):
B[ackup]filename
where
B or Backup

Writesa backupfile.

filename

Nameof the file that wìll containthe backuoinformation.

ICU UsedsGuide

r-23

INTRODUCTIONTO CONFIGURATION

that the filename
When the backupcommandhascompleted,the ICU displaysa message
specifiedhasbeenbacked-up.It then returnsto commandmode. For example,ifyou
backed-upyour definitionfile to a file namedUPDATE.BCK,the followingscreenwould
be disnlaved.

The Definition

File has been backed-up to file:

UPDATE.BCK

For general help ln any screen enter H (CR).
The following

commandsare avallable

Change
Generate
Lls t
Save
Qui t
Exi t
Replace
Detail - Level
Backup
ENTER COMMAND:

1.9.11AbortingICUCommands
The ICU enablesyou to abortan ICU process,
withoutlosingany information,by
enteringCONTROL-C. If you enterCONTROL-Cduringthe executionof an ICU
command(Generate,List, etc.)the ICU stopsexecuting
the currentcommand,and
returnsto the main menuscreen.The ICU handlesCONTROL-Cdifferentlvfor each
command.
.

lf enteredin commandmode,or duringSAVE, QUIT, EXIT or BACKUP, it is
ignored.

e

If enteredduringCFIANGE,it displaysthe followingmessage:
C Lo EXTT to the Main-Henu'

o

If enteredduringGENERATE, the ICU finisheswritingthe file beinggenerated,
disnlavs
' * * 1 t P r o c e s s A B O R T E D'.

and returnsto commandmode

l-24

ICU Usef s Guide

INTRODUCTIONTO CONFIGURATION

If enteredduringLIST, the ICU displaysthe Process
ABORTED message,
writesthe
message
to the file or devicespecifiedin the List command,and returnsto command
mode.
[f enteredduringREPTACEor DETAIL-LEVE,L,the ICU returnsto command
mode.
If enteredwhile restoring,the ICU displaysthe followingmessiìge
and returnscontrol
to the operatingsystem.
'***

P r o c e s s A B O R T E D- T h e D e f i n l t i o n

Flle

rtras not

resl-ored.'

1 . 1 0C H A N G I NA
GD E F I N I T I OFNI L E
It is possibleto changea definitionfile by enteringthe "Change"commandon the menu
screen.The ICU then showsone screenof informationat a time. Eachscreenpertainsto
a specificareaof configuration.The informationdisplayedon the screenconsistsof a
seriesof promptsand defaultvalues.Any of the defaultvaluescanbe changed.However,
the changes
you makeare not immediatelydisplayedon the screen.They are displayed
onlywhenyou reshowthe screenusingthe editingcommand^R (or R), discussed
later in
this chapter,or just a carriagereturn.
Enteringanothercarriagereturn alìer usingone to reshowa screencausesyou to proceed
to the nextscreen.The changes
are recordedin the definitionfile whenyou exit the ICU
usingthe "E" commandor whenyou enterthe "S"commandwhile still in the ICU.

ICU Usefs Guide

t-25

INTRODUCTIONTO CONFICURATION

1.10.1 Explanation
of the BasicScreenElements
the variouspartsof :r sc'reen.The
The followingdefinitionswill helpyou understand
followinsscreenillustratesthe definedterms.

(SCABV)

SCREENNAME

(ABV) PAXAì,IETERDEFINITION
(ABV) PARAI'IETERDEFINITION

Enter lAbbreviatíon


[range
Irange

of
of

values]
values]

- new value / AbbreviatÍon

XXX
XXX

? / H ) :

(SCABV)

The abbreviation
enclosedin parentheses
identifiesthe
screenbeingdisplayed.This abbreviationis usedwith
the"Change"
or "Find"(discussed
laterin thischapter)
commands
to access
a screen.

SCREENNAME

The nameof the screen.

(ABV)

The abbreviation
enckrsedin parentheses
identifiesthe
parameterwhoseexistingvaluecanbe replaced.

PARAMETER DEFINITION

This tjefinitionbrieflydescribes
the parametertharyou
cancnange.

[rangeofvalues]

This definesthe rangeof acceptable
valuesfor this
parameter.

XXX

The valuein thecurrentdefinitionfile. If the existing
valueis not whatyou want,replaceit with anyother
valuewithinthe rangeof values.

t-26

ICU Usefs Guide

INTRODUCTIONTO CONFIGURATION



This line is whereyou enterchangesto the screen.The
cursoris locatedat the begìnningof this line readyfor you
to enterone of the following:
.

An abbreviation,
an equalsign( = ) and a newvalue

.

An abbreviation
and a "?",if you needan explanationof
the parameter
A ^H (H), ifyou needgeneralhelp in understanding
the screentypesor editingcommands

.
.

A "?",if you needan explanationof the specificscreen

Datayou enteron the promptline shouldbe followedby a
carriage
return(. CR> ).
The followingscreenìs the first screendisplayedwhenenteringChangemodewith a new
definitionfile. All of the featuresdescribedaboveare displayed.The screenabbreviation
ìs (HARD) and the screennameis "Hardware".Thereare nine (9) parameterlinesand a
promptline. Eachpar:rmeterline includesa rangeof legalvalueswhichmay be enteredif
the defaultvaluedoesnot meetyour systemrequirements.The boldedentrieson the
followingscreenillustratchowyou wouldusethe promptline to makechangesto two
narameterlines.

ICU User'sGuide

1-27

INTRODUCTIONTO CONFIGURATION

The hardwarescreenchapter of.the ErtendediRMX II InteractiveConfrgurationUtility
Reference
Manualexplainshow to respondto the specificpromptsshownin this screen.
The purposeof this sectionis to explainhow to makeentrieson this and other typesof
screens.

(HARD)

(DUS)
(TP)
(CIL)
(CN)
(CIN)
(CF)
(TPS)
(NPX)
(If)
(BIP)

Hardware

System Bus Type [1 * t'lBI / 2 ^ llBÎÎi
8254 Ttmer Port [0-0FFFFH]
Clock Interrupt Level l0-71
Tiner Counter Number[0,1,2]
Clock Interval [0-65535 msec]
Clock Frequency [0-65535 khz]
Tiner Port separation [0-OFFH]
Nureric Processor Extenslon lYes/Nol
I n i t i a l i z e O n - b o a r dF u n c t í o n s [ 1 . 2 , 3 , 4 , 2 N o ]
Board lnitialization
Procedure l1-45 Charsl

Encer IAbbreviatlon
: cll-4 
: npx=no

: n e r ^ 'v a l u e / A b b r e v l a t i o n

1
ODOH
0
0
10
L229
02H
YES
1

? / H

l :



t-28

ICU Usefs Cuide

INTRODUCTIONTO CONFIGURATION

(llARD)

Hardware

(BUS)
(TP)
(CIL)
(CN)
(CIN)
(cF)
(TPS)
(NPX)
(IF)
(BIP)

System Bus îype [1 - M-BI / 2 - yIBIf-)
8254 Timer PorE [0-0FFFFH]
Clock lnterrupt Level [0-7]
T i x o e r C o u n t e r N u m b e r1 0 , 1 , 2 1
Clock lnterval I0-65535 nsecl
Clock Frequency l0-65535 khzl
Timer Port Separation [0-OFF]Il
Nuueric Processor Extension IYes/No]
Initiallze
On-board Functions [1,2,3,4/No]
Board Initíalization
Procedure Il-45 Chars]

Enter
:

I Abbreviation

:

ne!, value

/

Abbreviation

? /

I
ODOH
4
0
10

1229
02H
NO
I

H )

1.10.2EnteringFileNames,AddressValues,and Integer
Constants
to a parameterline, dependingon the
You canenterseveraltypesofvaluesin response
rangeof valuesfor the parameter.The kindsof valuesyou canenterinclude
device/filename

to
A deviceor file namecanbe anydeviceor file nameacceptable
the operatingsystem.

integerconstants

Constantsmustbe unsignedintegersthat you canenterin anyof
or kilobyte.A trailingradix
threeradices:decimal,hexadecimal
characterindicatesthe radixof the number,asshownin Table l-3.
The defaultradixis decimal.

addresses

Addressvaluesmustbe enteredin the form
SELECTOR:OFFSET.1'heradixmustbe speciiìed(either
explicitlyor by default)for bothportionsof an address.For
example,you mustspecifythe selectorof 900H and an offset
address
of 384Has900H:384H.
Table l-3. IntegerConstantFormats

Radix

TraiLngCharacter

D6cimal
Hexadecimal
Kilobyîes

Noneor D
Horh
Kork

ICU Usefs Guide

l-29

INTRODUCTIONTO CONFICURATION

1.10.3HelpMessages
The ICU providesthreetypesof helpmessages
to supplyinformationand saveyou time
asyou are definingyour definitionfiles.
.

For HELP aboutparameters,
enterthe parameterabbreviation
followedby a "?".

.

For HELP aboutthe screenbeingdisplayed,
entera ?
For HELP abouteditingscreens,
enter^H or H.

.

After readingthe help messages,
entera carriagereturnto return to the screenyou were
editing.

1.10.4ScreenFormats
Threebasictlpes of screenformatsare usedin the ICU: the fixedscreen,the repetitive
screen,and the repetitive-fixed
screen.Thesescreenformatshavesimilarfeatures.
1.'l0.4.1 Fixed Screen Formats
The fixedscreenformat enablesyou to makechanges
by enteringthe two- or three-letter
abbreviation,
the equalsign( =;, the newvalue,and a carriagereturn. The "Hardware,,
screenshownearlierin thischapteris a fixedformatscreen.
1.10.4.2 RepetitiveScreen Formats
Most screensusethe fixedformatto displayinformation.However,a screensuchas the
"Prefixes"
screen,shownbelow,usesa repetitivescreenformat. In a repetitivescreen
format,the sameprompt is repeatedmanytimes. Eachtime you enter informationon the
screen,you definenewsysteminformation.In the examplebelow,eachtime you entera
line of information,you definea logicalnamefor a directory.As you canseefrom the
example,identifoingnumbersprecedeeachline of intbrmation.To makechangesto this
screen,you shouldenterthe line number,the equalsign( = ), the newvalue,and a
carriagereturn. After enteringthe change,the screenis redisplayed.

l-30

ICU UsedsGuide

INTRODUCTIONTO CONFICURATION

( PREF)
Prefix
[2]
[3]
[4]
[5]

Prefix
Prefix
Prefix
Prefix

Prefixes
1-45 characrers
: PRoG:
: U T I L S:
: SYSTEM:
: I.ANG:

Enter Changes [Number : new value ,/ "D Nunber / ? / 11 \l

1.10.4.3 Repetitive-FixedScreen Formats
The repetitive-fired
screenformatcombinesthe featuresof the other two screentypes.It
repeatsa full screenof informationanynumberof times. In the followingexample,the
"UserJobs"screen,you definea userjobby enteringinforrnationon the screen.When
you completethis screenor anyrepetitive-fired
screen,a one-linequeryscreenis
displayed.In this casethe queryscreenasks:"Do you haveany/moreUserJobs?".If you
answer"yes"or "y",the ICU presentsanother"UserJobs"screen.Eachtime you make
you definea new userjob. The ICU repeatsthis screen
entriesto one of thesescreens
until you respondwith a "no","n",and/or a carriagereturnto the prompt.

ICU User'sGuide

l-31

INTRODUCTIONTO CONFIGURATION

(USERJ)

User Jobs

(NA.l.t) Job Narne [ 0 - 14 Char ]
( O D S )O b j e c t D i r e c t o r y S i z e [ 0 - 3 8 4 0 ]
(PMI) Pool Mlnimrtln [20H- OFFFFFH
]
(Pì,fA) Pool Maxinuu [20H-OFFFFFH]
(UoB) tlaxinun objects [ 1- OFFFFH
]
(MTK) Maxlnun Tasks ( 1- 0FFFFHl
([PR) l.laximuxn
Priority
[0-255]
(EHS) Exceptlon Handler Entry Poinc [1-31 Chars]
( EM)
(PV)
(TP)
(TSA)

Exception Mode INever/Prog/Envi ron/All
P a r a m e t e r V a l l d a t i o n I Y es r z N ]o
Task Pri.ority [0-255]
Task EnLry Point Il-31- Chars]

(VAR) PublÍc Variable

OFFFFFH
OFFFF1I
OFFFFH

r29
NEVER
YES
155

]

Name [0-31 Chars]

(SSA) Stack SegnèntAddress ISS:SPl
(ssl) stack size [0-OFFFFH]
(NPX) Nuneric Processor ExtensiÒn Used [Yes/No]
Enter lAbbreviation: 

0
0 60H

new value / Abbreviation

0000: 0000H
0300H
NO

? / H ]

1.11 SCREENEDITING
COMMANDS
FORTHEICU
Severalspecialcommandsare availableto simplifuthe editingprocess.They are
summarizedin Table 1-4and then explainedin detailin the followingparagraphs.The
commandsare initiatedby enteringthe caret"^" controlcharacter(or a characteryou
substitutedfor the caretusingthe "R" commandin commandmode)followedby one or
more characters.It is alsopossihleto enterall of the commands,
exceptInsert,Copy,and
Delete,withoutthe controlcharacter.Ifyou try to uselnsertor Deletewithoutthe
controlcharacter,you will receivea message
explainingthe correctinvocationof these
commands.Eachcommandsequence
mustbe terminatedwith a carriagereturn.

l-32

ICU Usefs Guide

INTRODUCTIONTO CONFIGURATION

Table l-4. SpecialEditingCommands
Command

Scre€nsAffected

M6aning

Fix€d

R€p€trtrv€

Rep€tfixed

^BorB

Eackup to previousscreen

X

X

X

^CorC

R€turnto commandmode

X

X

x

^D

X

Deletea screen

^D < numb€r>

D€l6teth€ €lem€ntwith this
number

^F 
or F 

Find and displaythe specifred
screen

X

X

X

^HorH

Displaythe listof special
commandsthatapplyto the
currentscreenformat

x

X

x

X

X

lns€rt an new screenin front
of the currentscre€n
^l <
number>

X

lnserta new line

X

Copythe curent screen
^RorR

Redisplay
the curent screen

X

X

X

^NorN

Go to the next logicalscreen

X

X

X

^S 
or S < sîring>

Searchthe remainingscr€ens
for the specifiedstring

X

Complete descriptionsof the specialediting commandsare as follows:
^B
or B
Enablesyou to move backwardsfrom the current screento the
previous screen. The ICU displaysthe previous screenand enables
you to continue as usual. Moving backwardsbeyond the beginning
of the definition file returns you to command mode. This
command can be used on all types of screens.
^C
or C
Returns you to command mode from any ICU rcreen. lt then
displaysthe main menu.
Enablesyou to delete an entire repetitive-fixedformat screen. The
screendeleted is the current screen.

ICU Use/s Guide

I --l-1

INTRODUCTIONTO CONFIGTIRATION

^D < number>
^F < scabv>
or F < scabv>

Enablesyou to deletea specificitem in a repetitivescreen.The
numbcryou cntcr identifiesthe cntry to be deletcd.
Findsand displaysthe screenindicatedby the screen
abbreviation.The syntaxofthe ^F commandis
^F
ion
lor F) screen-ahhreviat
wherethe screen-abbreviation
canbe any abbreviation
listedrn
Table 1-2. This commandenablesyou tojump from one screento
another.Ifyou specifya screennamenot previouslydefined,this
commandjumpsto the nextavailablescreen,and displaysthis
warningmessage:
***

WAI{NING- The screen requested cannot be disol

Ifyou do not specirya screenabbreviation,
the list of screennames
and abbreviations
is displayed(seeTahle 1-2)andyou are
promptedfor a screenabbreviation.Ifyou want to exit this
commandwithoutenteringan abbreviation,
pressthe carriage
return andcontinueto the nextlogicalscreen.Figure l-4 showsa
flowchartof how you proceedfrom one screento the nextifyou
simplyentera carriagereturn.
^HorH
^I
^I =
or =

^co
^RorR

^NorN

l-34

Displaysthe list of specialeditingcommands.
Enablesyou to insertan additionalrepetitive-fixed
screenin front
of the currentscreen.Otherwise,the command^l hasno effect.
Enablesyou to add a newline to a repetitivescreen.
The ^I is optional.Only the line numberand an equalsignare
required.
Enablesyou to insertan identicalcopyof the currentscreenin
front of the presentscreen.This commandcanbe usedonlywith a
repetitive-fixed
screen.
Redisplays
the currentscreen,showinganychangesmade.
Entering^R is the sameasenteringa null carriagereturn. The
defaultor previouslyenteredresponses
are displayeduntil you
enterthe ^R command(or < CR > ) to showthe changes
y
or S < string>

Searches
repetitive-fixed
screensof the samelogical
tlpe for the specifiedstring. When this commandis entered,the
searchbeginsin the next screenof that logical type and searchesall
fieldswìth a characterrange(for example,1-31characters).The
searchcontinuesuntil a matchis found. If no matchis found,the
cursorremainsat its currentpositionand the ICU displaysthe
following message:
No next

rnatch found

The syntaxfor thiscommandis
^S (or 
S)
The followingexampleshowshow to usethe ^S command.
Assumeyou have20 DUIB screensfor the iSBC214driverand
you want to find the screenthat definesthe devicenameasw0.
First,you wouldget to the first "(I214)"screen.Thenyou would
enter

The ICU searches
all the iSBC214DUIB screens
untilit finos
"w0". It thendisplaysthat screen.

1.11.1 DeletingDataon a Repetitive
ScreenFormat
To deleteinformationfrom a repetitivescreen,you mustusethe ^D 
command,where  is the numberof the line to be deleted.After the line is
deleted,the remaininglinesare renumberedand the screenis displayedagain.The ICU
doesnot allowyou to deletea line that is not displayed.To replacea line you mustfirst
deletethe existingline,and then insertthe newline.
An exampleof how to deletedataon a repetitivescreenfollows.Assumethe "prefix"
screenis definedas shownbelow.The cursoris positionedunderthe word "Enter". Ifyou
wishto deleteline 6, you woulddo so asshownhere.

ICU UsedsGuide

1-35

INTRODUCTIONTO CONFIGURATION

(PREF)

[1]
[2]
[3]
[4]
[5]
[6 ]
[7]
[8]

Prefix
Preftx
Prèfíx
Prefix
Preflx
Prefix
Pref ix
Prefix
Prefix

Prefixes
- 1-45 characters
- :PROG:
- :UTILS:
- :SYSTEH:
: :IANG:
- :$:
- :l.toRKl:
- :TMP286:
-

Enter Changes [Nurnber * ne\t value /
^d
:
6 

^D

Nunber /

? / H ]

with lines7 and 8 renumberedto 6 and 7
After line ó is deleted,the screenis redisplayed
asshownhere.

(PREF)

[1]
l2l
[3]
I4l
[5]
[6]
[7]

Prefix
Prefix
Prefix
Prefix
Prefix
Prefix
Preftx
Prefix

P r ef i x e s
- l- 45 characters
* :PROG:
- :UîILS:
- :SYSTEM:
: :I,ANG:
* :9:
* :TMP286:
-

^D
Enter Changes [Number - new value /
Nurnber / ? / H ]

r-36

ICU User'sGuide

INTRODUCTIONTO CONFIGURATION

1.11.2InsertingDataon a Repetitive
ScreenFormat
^l
To inserta line on a repetitivescreen,enterthe insertcommand (optional),the line
number,an equalsigr ( = ), and the newvalue. Whenthe newline numberis inserted,the
ICU renumbersthe remaininglinesand displaysthe screenagain. If the numberyou
enteris largerthanthe actualnumberof linesin the screen,the ICU insertsthe new line
asthe lastline. Assumeyou want to inserta newprefixon line 6 of the "Prefix"screen
displayedpreviously.You canenter

with the newvaluesasshownhere.
and the screenwill be redisnlaved

Prefixes
Prefix
[2] Prefix

l- 45 characters
:PRoC: {21 Prefix :
: U T I L S:
: SYSTEM
:
: IANG :

:UTILS:

: l :

: C O N F:I
: TMP286 :

Enter Changes [Nurnber - new value / "D Nunber / ? / H

Ifyou are enteringnumericaldataon a repetitivescreensuchasthe "Memorylbr System"
arranges
screen,you canenterthe datain anyorder. However,the ICU automatically
your datain the properorderand displaysit on the screen.For example,if you enterthe
followingthree insertcommands
^rL-2oooH,4oooH
^r2=SooooH.gooooH
^r
3 = looooH,l2oooH

ICU User'sGuide

r-37

INTRODUCTIONTO CONFIGURATION

on the "Memory for System"screen(see fhe Extended|RMX II InteractiveConfguration
UtilityReference
Manual), the ICU sortsthe data in ascendingorder and redisplaysthe
linesasfollows:
2000H, 4000H
2 * 10000H,12000H
3 - 80000H,90000H

1.11.3 Deletinga Repetitive-Fixed
Screen
^D
The
commandenablesyou to deleteinformationfor an entirerepetitive-fixed
screen;
you deletethe currentscreen.You canusethis commandto deleteI/O Jobs,UserJobs,
OS Extensions,
and RemoteFile Servers,
aswell as Intel and userdevices.Ifyou want to
deletea devicedriver,it is only necessary
to deletethe Driver screenfor that device.The
ICU automatically
deletesall the Unit and DUIB screensassociated
with it (seethe
Extended|RMX II Interactive Configuration Utility Ret'erence
Manual for more
information).

r-38

ICU User'sGuide

INTRODUCTIONTO CONFIGURATION

Figure 1-4. ICU Flowchart

ICU Usefs Guide

l-39

INTRODUCTIONTO CONFIGURATION

Q

'.",,0" ,n" .,,""0edr/osysrem
Layé.?

Figure l-4. ICU Flowchaf
(Continued)

l-40

ICU Usefs Guide

INTRODUCTIONTO CONFICURATION

Figure l-4. ICU Flowchaf
lContinued)

ICU Usefs Guide

l-41

INTRODUCTf
ON TO CONFIGURATION

1.11.4Insertinga Repetitive-Fixed
Screen
^l
The commandenablesyou to insertan additionalscreenof informationbetweentwo
existingscreens.(Thiscanbe usedonly with the repetitive-fired
screenformat.) Use this
commandon the screenyou wishto precede.For example,ifyou havethreeUserJobs
^I
andwishto inserta fourthjob betweenthe secondand third job, usethe commandon
lhe screenfor the thirdjob.
screen.
The copycommand(^CO) canalsobe usedto insertan additionalrepetitive-fixed
The copycommandinsertsa copyof the currentscreenin front of itself. The only
differencebetweenthe insertcommandand the copycommandis that the copycommand
usesthe currentscreenvaluesratherthanthe defaultvalues.

1 . 1 2 I C U E R R O RM E S S A G E S
During the interactiveportionof the ICU process,
two typesof error messages
canoccur:
.

interactiveerror messages

r

internalICU errors

The interactivemessages
are the mostfrequentlyencountered,
and are self-explanatory.
The ICU internalerror messages
shouldnot occur. The followingsectionsexplainthese
errorsin more detail.

1.12.1 lnteractiveErrorMessages
The ICU acceptsdatathat you enteronly if it lieswithin the rangeof aoceptable
values.
Usually,the rangeof acceptable
valuesfor a givenpromptappearsin brackets"[]" on the
prompt line. If you speci! a valueoutsidethe rangeof acceptable
values,the ICU
displaysone of the followingmessages,
dependingon the kind of valueit requires(all of
thesemessages
are precededby **r ERROR -):

ta

.

numberexpectedor numbertoo large

.

numberis not within its ranse

.

addressexpected

o

the selectoris not within its range

o

offsetin addressis not a number

.

stringtoo long

.

a prefixof a legalstringexpected

.

"Yesor No" expected

.

the field is "Req";cannotbe changed

ICU Use/s Guide

INTRODUCTIONTO CONFIGURATION

.

erroneousdelimiter

.

the line enteredoverlaps

When an error occurs,the ICU doesnot changethe currentvalueof the parameter.If
the valuesyou specifflie within the rangeof au:eptable
values,the ICU aoceptsthem
withoutcheckingtheir reasonableness.
Therefore,ifyou entervaluesthat causethe ICU
to generatea nonfunctional
versionof the operatingsystem,neitherthe interactivephase
nor the generationphaseofthe ICU wili flagthesevaluesaserrors.
Whenthe ICU leavesthe changephaseand returnsto the initial menuscreen,it performs
a number of logical tests,suchas checkingthat the memory locationsreservedfor the
systemand the Free SpaceManagerdo not overlap.If it detectsa logicalerror, the ICU
issuesa self-explanatory
error message.You mustthen makethe necessary
correctionsto
your definitionfile or you will not be ableto generatea workingsystem.

1.12.2InternalICUErrors
If during executionthe ICU encountersan internal error such as the ScreenMaster File
or the Template file being corrupted, it displaysthe following message:

***

ICU Internal

Error - 

where < number[,s]
> canbe eitherone numberor two numbersseparatedby a comma.
The numbersrepresentan internalcodefor the ICU and are not meaningfulfor the user.
InternalICU errorsrarelyoccur,but if you shouldreceivethis error message,
lbllow these
guidelines.
1.

First,assumeyour definitionfile hasbecomecorrupted,and try runningthe ICU
againwith a new definitionfile.

2.

If Step I is not the solution,try runningthe ICU with a newScreenMasterFile and
a newTemplatefile. Defaultversionsof thesefilesare kept in the directory
:CONFIG:default.

3.

If neitherof the abovesolvethe problem.contactvour localIntel salesoffice.

1.13 UPGRADING
DEFINITION
FILES
There are threereasonsyou mayhaveto upgradedefinitionfiles.
.

To makeiRMX II.1 definitionfilescompatiblewith iRMX II.3.

.

To add Intel-supplied
changes

.

To add userdevicedrivcrs

ICU UseI,sGuide

l-43

INTRODUCTIONTO CONFIGURATION

To upgradedefinitionfilescreatedby iRMX II.l of the iRMX Il OperatingSystem,use

theUPDEFUtility.
changesor user
To upgradeyour iRMX II.3 definitionfilesto includeIntel-supplied
you
want
as
upgraded input. iRMX II.3
devices,invokethe ICU with the definitionfile
definitionfilescan havetwo formats:
.

ICU standardformatwith a specificversionnumber

o

versions
Backupformat (ASCII) usedby difl-erent

earlierin
The ICU checksthe versionnumbers(seesection,"lnvocationError Messages',
this chapter)and decideshow to proceed.If it is possibleto upgradethe definitionfile
without restoringthe backupinformation,the ICU prompts

Do you want to update the fi le? y/[n]

A responseof "Yes"causesthe ICU to upgradethe file asyou input it. You canthen
proceedwith the ICU asusual.
If the ICU mustrestoreto upgradethe definitionfile (for example,if the ICU is invoked
with a backupfile or a definitionfile whoseIntel versionnumberdiffersfrom the ICU
versionnumber),it invokesthe restoreprocessand promptsyou as follows:

Do you want to restore

from the file?

y/[n]

A response
of "No" causesthe ICU to stopexecuting.A "Yes"responsemeansthe ICU
shouldrestorethe backupinformationcontainedin the file, and createa newversionof
the definitionfile.
Ifyou enter"Yes"and the input file is the sameasthe outputfile, you are prompted

Enter new outDut file

narne:

If the outputfile exists,the ICU displaysthis message:

File

 exlsrs .

oVERi,tRlTE? y / l-r.,1
i

While restoreis operating,the ICU displaysa seriesof asterisks(*) on the screen.If the
restoreoperationreachescompletionwith no lossof data,the ICU displaysthe main
menuandyou proceedas usual.However,if an error is encountered,
the ICU displays
the folJowingmessage
and exits.

l-44

ICU User'sGuide

INTRODUCTION
TO CONFIGUMTION

*** Ezu{oRvhile restoring
The Definition File has been restored to file:
lnspect the log file: .1og

.def

The ICU writesthe backupinformationthat wasnot restoredto a log-file.The log-file
lists eachscreenname followedby any errors that occurredwhile restoringthat screen. It
alsolistsabbreviations
of fieldswhichwerenot restored.The log-filehasthe samename
as the outputfile but with a ".log"extension.The log-filemakesit easyto comparethe
backupdefinitionfile and the restoredfile to seewhichvalueswerenot restored.You
shouldthenrun the ICU correctingthe fieldsin error. After that you canproceedas
usual.
the ICU wasnot ableto restorethe "CF'
Assumethat while restoringfrom file upO.def,
parameteron the "Hardware"screen.The log file wouldlook like this:
lCU286 



Screen:HARD
nr.!Ìber expe c te d
In field

:

CF

Screen:INT

in the log-fiìeare the sameasthe ICU interactiveerror messages.
The error messages
This exampleshowsonly a portionof the log-file.Ilowever,the actualfile listsall the
screennames.The versionnumber,date,and time in the headingare variables.

1 . 1 4T H EI C U M R G
UTILIW
The ICUMRG Utility suppliedwith the ICU providesthe abilityto includeconfiguration
supportfor new drivers.The ICUMRG Utility allowsyou to
.

Integratenew [ntel devicedriverswith a previousversionof the operatingsystem

.

Integrateuser-writtendevicedriversinto the operatingsystem

The ICUMRG Utility combinesthe mainScreenMasterFile (ICU286.SCM)and the
mainTemplateFile for SystemGeneration(lCU286.TPL)with the ScreenMasterFile
(SCM) and TemplateFiles(TPL) for the newdriver.

ICU Uset'sGuide

r-45

INTRODUCTIONTO CONFIGURATION

Ifyou are addingan Intel-supplied
driver,both the SCM and TPL filesare suppliedwith
the updatepackage.In additionto addingyour devicedriver,the ICUMRG Utility
updatesthe 'Intel Device"screento includethe newdevice,and changes
the help message
that listsall the screennames.Upon completion,ICUMRG updatesthe Updateversion
number.
If you are addinga user-writtendevice,the SCM and TPL files were previouslygenerated
by the UDS Utility (see the ExtendedíRMX II DeviceDivers User'sGuide for more
information).Upon completion,ICUMRG updatesthe Userversionnumber.
After runningICUMRG, the versionnumbersof the new ICU andyour definitionfiles
are different.To continueusingyour definitionfiles,invokethe ICU as usual.The ICU
will checkfor versionnumber consistency,and if necessaryissuea warning and a prompt
(seesection"InvocationError Messages",
earlierin this chapter)to whichyou should
respond"Yes". The ICU then updatesyour definitionfiìesand continuesexecuting.
Figures1-5and 1-6givethe logicalflow of the ICUMRG Utility whenaddingeitheran
Intel devicedriveror a userdevice.

Figure 1-5. Merging Intel DeviceDrivers

t-46

ICU User'sGuide

INTRODUCTION
TO CONFIGURATION

Figure l-6. Merging User Devices

1.14.1InvokingICUMRG
BeforeinvokingICUMRG be surethat the ICU286.SCM,ICU286.TPL,and ICUMRG
fiìesare in the samedirectory.To invokethe ICUMRC Utility enter
ICUMRG input-file(root)TO newicu-file(root)
where
input-file(root)

The input-filenamewithoutthe extensionprovidingthe input to
ICUMRG. AIÌ extensions
includedin the pathnameare ignored,
and replacedby SCM and TPL. The ICUMRG Utilìty searches
the input directoryfor
input-file.SCM- containsall informationaboutthe new driverand
the new "lntel Device"screen.
input-file.TPL- containsinformationneededfor generationof new
screens.
The ICUMRG Utility alsousesICU286.SCMand ICU286.TPLas
rnDut.

ICU User'sGuide

t-47

INTRODUCTIONTO CONFIGURATION

newicu-file(root)

The nameof the wo updatedfiles,withouttheir extensions,
createdby the ICUMRG Utility. All extensionsincludedin the
pathnameare ignored,and replacedby SCM and TPL. ICUMRG
creates
- containsthe ICU ScreenMasterFile updated
newicu-file.SCM
with the new devicedriver.
- containsthe ICU TemplateFile updatedwith the
newicu-file.TPL
new devicedriver.

Be awarethat the ICUMRG utility alwaysmergesyour .SCMand .TPL fileswith the ICU
filesICU286.SCMand ICU286.TPL.If you plan to add supportfor severaldriversto the
ICU, makesurethat the ICU286.SCMand ICU286.TPLfilescontainthe latestversionof
your mergedICU files. Otherwise,ICUMRG will mergeyour driverinformationwith
outdatedICU fiÌes.

NOTE
Beforechangingthe nameof anyICUMRG outputfiìesto ICU286.SCM
and ICU286.TPL,savethe originalfilesby copyingthem to other files
(suchas ICU286OLD.SCMand ICU286OLD.TPL).AlthoughICUMRG
allowsyou to add supportfor newdrivers,onceyou add that support,there
is no way to removeit. If the devicedriveryou addedcontainsan error,
you mustrevertbackto the original.SCMand .TPL files.

1.14.2ICUMRGExample
The following exampleshowshow to add a device- D219.

The input filesare

ICU286.SCMAND ICU286.TPL(locatedin same
directoryas ICUMRG)
D2l9.SCMandD219.TPL

The outputfilesare

ICUNEW.SCMand ICUNEW.TPL

Upon completionthe systempromptis displayed.You are then readyto run the ICU and
generaleyour system.

1-48

ICU UseCsGuide

INTRODUCTIONTO CONFIGURATION

1.14.3ICUMRG
ErrorMessages
The ICUMRG utility generatesan error messageif one of the following occurs:
.

it is not invokedcorrectly

.

an I/O error occurs

o

the versionnumbersare inconsistent

.

eitherthe SCM or TPL filesare not valid

Invalidinvocationof ICUMRG causesone of the followingself-explanatory
error
messages
to be displayed.
.
o

paraneters required
USAGE:

I C U M R Gi n f i l e

TO outfil-e

nissing

"To out fi le "
I C U M R Gi n f i l e

To outfile

USAGE:

"TO"
I C U M R Gi n f i l e

TO outfile

nissing
USAGE:

"outfile"
I C U M R Gi n f i l e

T0 outfile

c o o m a n y P a r a m et e r s
I C U M R Gi n f i l e

TO outfile

USAGE:
o

o

.

nissing

USAGE:

In additionto the invocationerror messages,
ICUMRG issuesthe error messages
[sted
below.
.

*** UDI Error - ,(mnemonic)
An error wasdetectedby the UDI. The mnemonicexplainsthe causeof the error.
For example,you canreceivethis error message
if ICUMRG cannotsuccessfully
changethe extension.

.

***

Error

- input

fi le same as output

file

The input and outputfilescannotbe the same.
.

*** l/o Error ín file:
,



An I/O error occurred.For example,the ICUMRG utility wasnot ableto create,
open,read,write or seekone of the specifiedfiles.
.

***

Error

-  is

not

a valid

SCM file

a valid

TPL file

The data in the SCM file is not valid.
.

***

Error

-  is

not

The datain the TPL file is not valid.

ICU Usefs Guide

r-49

INTRODUCTIONTO CONFIGURATION

.

***

Error

- inconsistency

in

Versions:

the version

of

INTEL

the

internal

UPDATE

ICU files

USER

 +  
 +  

ICU286.SCM
ICU286.TPL

There is an inconsistenry
in the versionnumbersofthe ICU286SCM and ICU286
TPL files.
.

***

Error

- inconsistency

Versions:
Input ScmFiìe
Input Tpl File

in

the version

of

INTEL

the

internal

UPDATE

ICU files

USER

< Intel> + < Update> < User Version>
< Intel > + < Update> < User Version>

Thereis an inconsistency
in the versionnumbersof the input SCM and TPL files.
.

*** Error - (screen-abbr> screen already exists in ICU286.SCM
Duplicatescreennamesare not allowed.You are probablymergingthe wrongSCM
and TPL files,thuscausinga duplicatenameto be created.

.

*** Error - unexpectedend of TPL file



An unexpected
end of file in the TPL file wasencountered.

1-50

ICU Usefs Guide

CHAPTER2
GENERATING
YOURSYSTEM

2.1 INTRODUCTION
The processof generatingyour configuredsystemconsistsof the following steps:
o

Generatingconfigurationfiles.

o

Executinga SUBMIT file that compiles,assembles,
binds,and buildsall necessary
fi.les.

2.2 GENERATING
CONFIGURATION
FILES
By usingthe ICU, you candefinethe operatingsystemthat bestmeetsyour individual
needs.This processtakesplacewhileyou are editingyour definitionfile. Whenyou have
completelydefinedyour system,returnto commandmodeto generateyour configured
systemasfollows:
1.

Use the List commandto createa file that recordsyour systemconfiguration.

2.

Use the Generatecommandto generateyour configurationfiles.

3.

Use Exit to saveyour changes
and exit the ICU.

The followingscreenshowsthe resultsof havingusedthe G[enerate]commandto
generateall the requiredconfigurationfiles(assuming
the definitionfile usedwas
nen'file.del).

ICU Usefs Guide

2-l

GENERATING YOUR SYSTEM

ENTER COMMAND: I
E N T E Ra Ì e t t e r

tÒ be used as prefix:a

The prefix lettèr is: A
Beginning NUCLEUSFlle Generation
Beginnlng BI0S File

Ceneratíon

Eeglnnlng EIOS File

Generation
DONE

BegÍnning LOADERFile

Generation
DONE

Beglnning HI File

GeneraLion

DONE
Beginning UDI Fil.e Generation
DONE
Beginníng

SDB File

Cenerat ion

DONE
Beginning Subnit FiIe Generati.on
DONE
Beginning Build File

Generation
DONE

NoTE:

your system submit
îo GENERATE

NEI,IFILE.CSD

For general help in any screen enter H 
The following

cornrnandsare available

Change
Cenerate
Lis t
Save
Quit
Exit
Replacè
DetalL -Level
Backup
ENTER COM},IAND
:

The fileslistedin Table2-l are the configurationfilesthat defineyour system.The
systemprocesses
thesefilesduringexecutionofyour SUBMIT lile. The ICU createsthe
SUBMIT file with the samefilenameasyour definitionfile (with a .CSDextension).For
example,the definitionfile usedin the previousscreenwaslabeledNEWFILE.DEF.
Therefore.the SUBMIT file is calledNEWFILE.CSD.

2-2

ICU User'sGuide

GENERATINGYOUR SYSTENI

If you usethe prefixoption,be sureto choosea uniqueprefir eachtime you generate
your system.If a file of the samenamealreadyexists,the ICU overwritesthe old file with
the new file.
Table2-1 showsfile namescreatedusingno prefix(carriagereturnonly). If you enterany
characterother thancarriagereturnwhenpromptedfor a prefix,that characteris added
asthe nrefixto the file names.

T a b l e 2 - 1 . F i l e s C r e a l e db y t h e C l e n e r a t e l C o m m a n d
FileName

ScreensUsedto D€fineth€ File

NTA8L.428

Nucleus

NUCDA-M8

Nucleus,Hardware,Interrupts,
SlaveInterupts,
ROMCode
OS Extensions,

NJOBC,A2S

OS Extensions,
UserJobs

IfABL.A2S

BIOSSystemCalls,RemoteFileAccess

ICDEV.A2S
and ITDEV.A2S

All Inteland userdevices,RemoteFie Access

ETABL.A2S

None

EDEVC.A2S

EIOS,AutomaticBoot Device,LogicalNames

EJOBC.42B

l/O Users,l/O Jobs

HCONF.P28

HumanInterface,
HlJobs, ResidentUser,Preflxes,
Hl LogicalNames

LTABL,42S

None

tcoNF.P28

ApplicalionLoader

SDBCN.A28

SystemDebugger

UTABL.A2S

None

NROMC.A28

H a r d ,M B l l ,M e m s ,R O M

CAUTION
Changesmade to the ICU definition file are not reflectedin your
configuration hles until you generate.

ICU UsePsGuide

)_t

GENERATINGYOUR SYSTEM

THESUBMITFILE
2.3 EXECUTING
After you exit the ICU, executelhe STJBMITfile andwait for your systemto be
generated.
or compilesanyconfigurationfiÌesgeneratedby the ICU and
The SUBMIT file assembles
It thenbuildsthe
bindsthe objectfileswith any neededlibrariesusedby a subsystem.
system.The syntaxfor invokingthe SUBMIT file is
SUBMIT output-file[.CsD][to filename][echo]
where:
output-file

The nameof your definitionfile.

filename

A file thatthe system
creates
to containthe outputof the SUBMIT
command.

e[cho]

Sendsa copyof the clatareaclto the screen.

For more informationon the SUBMIT command,seefhe Operaîor's
Guideto tlte
Ertended|RMX Il Hunnn lnterftrce.

2.3.1 Assemblingthe Configuration
Files
The SUBMIT file generatedby the ICU identilìesthe configurationfilesthat mustbe
assembled
The numberof filesassembled
varies
or compiledlbr eachof your subsystems.
from systemto systemand dependsuponthe featuresthat you choose.No errorsshould
be encountered
duringthis phase.Figure8-36,in AppendixB, givesan exampleof the
SUBMIT file outputduringthisphaseof theconfiguration
process.

2.3.2 Bindingthe Individual
Subsystems
As soonasASM2ll6generates
the objectfileslbr a givensubsystem,
the SUBMIT file
initiatesBND286to bindtheseobjectfilestogether
with anylibrariesneededby the
subsystem.
Any warningsgeneratedduringthis phaseshouldbe ìgnored.Explanations
of
the variouswarningsappearat the en.i of this section.FigureB-3ó,in AppendixB, shows
someof the outputgeneriìte(l
durin{rthisphaseof the configurationpnrcess.

2-1

ICU User'sCuide

GENERÀTINCYOT]RSYS'TEM

2.3.3WarningMessages
Whenyou invokethe systemgenerationSUBMIT file, a numberof warningmessages
maybe issuedby BND286. Theseare normalmessages
and are not critical.
r

IIARNING151:

UNRESOLVED
EXTERNAL
SI'Ì'ÍBOLS

This warningis the mostcommon.It indicatesthat BND2l.l6did not resolveall the
externalsymbolsdeclared.You may ignorethis warningsincethe missingsymbolsare
resolvedonly at build time. It mayappearwhenbindingthe Nucleusor after the first
phaseof bindingeitherthe BasicI/O Sysremor the ExtendcdI/O System.It may
alsoappearafterthe secondphaseof the EIOS,if you are bindinga first-levelI/O
job.
o WARNING
133:

SEGMENT
LIMIT DECREASED
DUETO SEGSIZE
VALUE

This warning is expectedin the Nucleus. I t indicatesthat the size of the segment
n a m e d i s b e i n gd e c r e a s e db e c a u s eo f a S E G S I Z E s p e c i f i c a t i o n .

2.3.4 Buildingthe System
After the SUBMIT file hascompletedthe assembling
and bindingof eachof the
subsystems,
it buildsthe systemby invokingrhe BLD286utility. The invocationlbr
BLD286is containedwithin the SUtsMITfiJe.An cxampleof thiscanbe seenin Figure
B-36.
Enteringthe Generate
commandproduces
a buildfile with the s:tmcnamcasthc
definitionfile but with the extensionBLD. This servesasthe inpurfilc to BLD286. 1'he
outputfile createdby BLD286is the file you definein the "CeneratcFile Name"screen
(see the ExtendediRMX II InteractiveConf.gurationlJtilityReference
Manual). No errors
shouldocrur duringthis phaseof the ICU. However,you canexpectonewarningwhich
canbe ignored.The warningis
* * * W A I { N I N C2 6 9

( L i n e - n u m b e r > , N I I A R ' C L I _ D A T A ' , S E G M l l NS
TIZE REDUCED

T h i s w a r n i n ga p p e a r sa f t e r t h e f o l l o w i n gl i n e o f c o d e i n t h e b u i l d l i l e :
cli_code (dp1:0), c1i_data(limit:0, dpì:0)

ICU UsePsGuide

2-5

GENERATINGYOUR SYSTEM

2.3.5ErrorMessages
Error
utilitiescanreturn error messages.
the language
In additionto warningmessages,
messages
are not normalandyou shouldnot ignorethem. They indicateseriousproblems
can
generationofyour system.The followingerror messages
that preventthe successful
appear.
o

ST
0021: E$FILE_NOT_EXI
c oNm m a n da b o r t e d b y E H
8 0 4 2 : E $ N O T _ C O N N E C T, I O
One of these messagesmight appear if you enter an invalid pathname as input to the
ICU.

r

0026: E$FILE_ACCESS
This messagemay appear if there is no read accessto the input file, no add entry
accessto the directory, or no write accessto the output file.

.

ERRORI18:

EXCEEDTARCETMEMORY
INPUT SEGMENTS

The memory blocksyou declaredin the "Memory for System"screenare not large
enough for the systemyou delìned. ln this case,enter the ICU again, increasethe
systemmemory, and decreasethe Free SpaceManager memory. This error message
may result from installingan update which increasesthe size of the operating system.

2-6

ICU User'sGuide

CHAPTER3
PREPARING
APPLICATION
JOBS

3.1 INTRODUCTION
jobs,you shouldlocateyour first systemin
Onceyou havepreparedyour application
RAM to facilitatetestingand debugging
ofyour programs.It is mucheasierto testand
debugyour programsin RAM than it is to reburnyour PROM deviceswhenyou detect
errors. After debugging
in RAM, you canlocatethe final systemin PROM/RAM or copy
it to a secondary
storagedeviceand load it with the BootstrapLoader.
Puttingtogethera RAM-basedsystemconsists
of the followingsteps:
1.

Usingthe ICU to defineyour system

2.

Preparingyour applicationcode

3.

jobs
Compilingand bindingthe application

4.

Usingthe ICU to generatethe systemwith your application(not neededif the
ApplicationLoaderloadsyour application)

5.

Loadingand testingthe system

This chapterdescribes
how to prepareyour applicationcode,compileand bind it, and
build a systemwith your applicationjobs (steps2 through4 above).Both loadingand
testingyour systemare describedin Chapter5 of this manual.

3.2 PREPARING
APPLICATION
CODE
You canwrite the codefor your applicationtasksin anylanguagesupportedby the
iRMX II OperatingSystem.This manualassumes
that you are usingPL/M-286. In order
to useassembly
language,
you mustadhereto the PL/M-286callingconventions
describedin theASM28óMacroAssemhlerOperatingInstrucrionsmanual. T\e Extended
|RMX II Programrning
Techniques
manualalsocontainsinformationto helpyou write your
applicationcode,especially
assembly
language
applications.
Whenwritingyour applicationcodethereare additionalinstructions
you shouldfollowin
order to useall the featuresof the iRMX lI OperatingSystem.The followingsections
nrovidethis information.

ICU Use/s Guide

3-l

P R E P A R I N GA P P L I C A T I O N J O B S

3.2.1 LanguageRequirements
whenwritingyour taskcode:
requirements
Adhereto the followinglanguage
.

Make certainany utilitiesyou useare linkedto the ExtendediRMX Il UDI libraries

.

all of your tasksasprocedures.Designationof initial
In general,you shoulddesignate
RefertctErtended|RMX II
tasksis the only exceptionto this recommendation.
ApplicationLoaderUser'sGuideÎor detailsaboutmain modulesand procedures.

.

yourPL/M-21ì6
codeusinganymodelotherthantARGE,
If you arecompiling
specifythe ROM compilercontrol. This causesthe compilerto placethe CONST
segmentin the CODE class,whereit canbe more easilyloadedinto PROM. You do
not needto specifythe ROM controlfor thoseprogramscompiledusingthe LARGE
for the TARGE model.
model. The compilerdoesthis automatically

.

with care. The DATA statement
Usethe DATA and INITIAL PLIM-286statements
or if you specify
TARGE mocielof segmentation
is valid only if you usethe PL/M-21'ì(r
the ROM compilercontrol. The INITIAL statementcannotbe usedin a procedureif
you put that procedurein PROM. [t clin be used,however,if vou usethe Bootstrap
Loaderor ApplicationLoaderto load the procedureinto memory.

3.2.2 IncludeFiles
systemto compileyour
A numberof filesmustbe prtsentt n your microettmputer
applicationsoftwareanclto configureyour operatingsystem.The "Includesand Libraries"
screen,discussedin the ExtendediRll,lXII InteractiveConfigurationUtility Reference
Manual,selectsfilesthat mustbe presentto configureyour operatingsystem.This
sectiondiscusses
the filesneededto compileyour applicationsoftware.
Any programcontainingiRMX II systemcallsmustincludean externaldeclarationof the
systemcalls.The iRMX II OperatingSystemprovidesthe declarationof the systemcalls
for FORTRAN, PASCAL,and PL/M-286in filescalledINCLUDE files. Whenyou
install the systemas describedin the ExtendediRMX I I Hardwareand SoftwareInstallation
Guide,thesefiÌesare locatedin directory/RMX286/lNC. FORTRAN systemcallsare rn
file RMXFTN.EXT, PASCAL systemcaìlsare in RMXPAS.EXT,and PL/M-286system
callsare in RMXPLM.EXT.

3-2

ICU User'sGuide

o

PREPARINGAPPLICATIONJOBS

However,if you are programmingin PL/M andyour systemdoesnot includeall the
subsystems,
or if you are tryingto savememory,you maywant to usea PL/M INCLUDE
file that containssystemcallsonly for a particular layer. Thesefiles are
Subsystem

File Name

Nucleus
BIOS
EIOS
ApplicationLoader
HumanInterface
UDI

NUCLUS.EXT
BIOS.EXT
EIOS.EXT
LOADER.EXT
HI.EXT
UDI.EXT

3.3 DETERMINING
MEMORY
LOCATIONS
An iRMX II systemmustbe locatedeitherentirelyin ROM or entirelyin RAM. Intel
recommends
that you put your systemin RAM until you havecompletedthe testingand
debugging
stages.To determincyour application's
memoryrequirements,
you shouldadd
the sizeof your applicationcodeto the amountof memoryrequiredby the system.After
calculating
your system's
memoryrequirements,
you mustdetermineits physicallocation
in memoryand enterthe startingand endingaddresses
on the "Memorytbr System"
screen,
Someadditionalfactorsshouldbe takeninto consideration
whendeterminingthe physical
addressof your system.AÌì systems
havea minimum addressat whichtheycan start
dependingon the elementscomprisingthe system.All systemsmusttakethe following
memorylocationsinto consideration:
.

088000H-0BFFFFH,
defaultaddresses
requiredby the secondand third stagesof the
BootstrapLoader.

o

the top 32K bytes,if the systemincludesthe iSDM monitorand the first stageof the
BootstrapLoader(the top 25(rKbytes,if the systemis a System300Series
Microcomputer).

In addition,ifyour systemincludeseithera RAM disk driveror a communication
board,
you mustbe carefulnot to includethe board'sdual-portmemoryin the memoryyou
declarefor your system.For example,if your systemincludesan MSC driver,you must
reserve68 bytesof memoryin the lowermegabyte(in an Intel-supplied
system,the first
2000Hbytesare reservedfor suchdata). After you havereservedroom for all the data
requiringfired locations,you canlocateyour applicationanpvherewithin the l6M byte
memoryof the iRMX II OperatingSystem.For more inlbrmationon calculating
the
exactmemory locations,seeChapter 2 of the Ertended|RMX II InteractiveConfguration
Utilin Reference
Manual.

ICU User'sGuide

J-J

PRF],PARING
APPLICATIONJOBS

Use the memoryscreensto definethe memoryfor the systemand the Free Space
that first you pad the memorylocationsto leaveroom for
Manager.Intel recommends
that maybe madeduringdevelopment
anydevicedriversthat maybe addedor changes
by reAfter runningBLD286,you canreducethe memoryto the actualsizenecessary
invokingthe ICU and editingthe memoryrcreens(seesection"Minimizingthe Memory
AddressSpace",later in this chapter).

ANDBUILDING
YOURAPPLICATION
3.4 BINDING
JOBS
Applicationjobs are include

This initializationerror reportingis selectedeitherfor all subsystems
or for noneof the
subsystems.
If "ReportInitia[zationErrors"is not configuredinto the system,the
exceptioncodereturnedby the unsuocessful
systemcall is placedin both the AX register
and the first WORD of the Nucleusdatasegment,
NUCDAT. A codeindicatingthe layer
that failedinitializationis placedin the secondWORD of the Nucleusdatasegment.The
systemthengoesinto a infiniteerror loop. (The codeslbr the variouslayersare
1=Nucleus.
2=BIOS.3=EIOS.4=HumanInterface.l

ICU User'sGuide

5-3

LOADINC AND TESTINGTHE SYSTEM

The only subsystem
that handlesan initializationerror slightlydifferentis the Human
Interface.In additionto the initializationerror describedabove,the Human Interface
may issuethe followingwarningif it doesnot haveenoughmemoryto fill the user's
recuest.

DID NoT HAVEYoURMINIMUM
MEMORY
REQUIREMENTS
i *** WAIU{INC:THE SYSTEM
you wrLL coMEup wrrH ALL THEì,rEMoRy
rIIAT ts AVAITABLE rN THE
I
sYsTEM,CONTACT
THE SYSTEM
MANAGER.
I
In sucha case,the useris assigned
whatevermemoryis availableat the time.

5.3.3 CompletingInitialization
Onceinitializationis complete,userscancreateand attachfileson the devicesspecified
with the ICU. lf the devicesare olTline,an exceptional
conditioncodeis returned.If one
of thesedevicesis switchedfrom on-lineto oifJine,the ExtendedI/O System
automatically
detachesthe device,and aÌl file connections
on that deviceare marked
invalidby the BIOS. When the unit is switchedbackon-line,the ExtendedI/O System
automatically
attachesit the first time a usertriesto createor attacha file on the device.
The ExtendedI/O Systemperformsthis serviceonly for devicesthat it attaches.

5.4 TESTINGYOURSYSTEM
The normaldevelopment
cycleis to loadyour system,testit and correctanyerrors,then
reassemble
or recompiìeanyappropriateprogramcode. Next,redefineand regenerate
your systemusingthe ICU, and load the systemagain.You canc.CSD
< outputjile>.BLD

boofloadable iRMX ll file
< bootloadable-file>.MP2

ICU Use/s Guide

APPENDIX
B
EXAMPLESYSTEMCONFIGURATION

8.1 INTRODUCTION
This appendixcontainsan exampleillustratinghow to usethe ICU to modifoan Intelsupplieddefinitionfile. This examplecontainsthe followingdescriprions:
.

The configurationdefinedby the lntel-supplied
definitionfile (28612.de|).

r

The targetsystem,focusingon the differences
betweenit and the supplied
configuration.

o

The ICU changesrequiredto convertthe existingdefinitionlìle to one corresponding
to the targetsystem.

8.2 THEINTEL.SUPPLIED
DEFINITION
FILE
The existingdefinitionfile, named28612.D8F,definesthe 80286-based
mulrluser system.
This particularsystemconfigurationhasthe followingcharaeteristics:
.

The CPU boardis an iSBC286/10(A)or an iSBC286/12board.

.

Interruptlevelsare assigned
asfbllows:
Level0-SystemClock
Level I - SystemDebugger
Level2 - Available
Level3 - Usedby the TerminalCommunicarions
Controller
Level 4 - Available
Level5 - An MSC controller
Level6 - An 8274TerminalDriver
Level7 - An 82594slavePfC

.

Up to 8M bytesof RAM, at addresses
20t)0lIthrough07FFFFFH. Of these,
addresses
05A000HthroughOTFFFFFHare allocateci
to the FreeSpaceManager.

.

The systemdeviceis :SD:.

.

The supplied,ready-to-bootstrap-load
file is /BOOT/2t1612.286.

ICU Uset'sGuide

B-l

EXAMPLESYSTEMCONFIGT]RATION

ANDSTART-UP
THETARGET
BETWEEN
B.3 DIFFERENCES
SYSTEMS
multi-usersystemdictate
betweenthe targetsystemand the 80286-based
The differences
systems
differ in the following
howyou will usethe ICU to alterthe definitionfile. These
ways:
.

Changethe reservedmemoryaddressof the MSC driverto preventan address
conflictwith the iSBC220,Jriver.

.

An iSBC220SMD controllerfor an 87M bytedisk is an additionto the 80286-baseo
multi-usersystem.This controllerusesinterruptlevel2,IlO address120H.

.

An iSBC208flexiblediskcontrolleraddedto support8-inchflexibledisks.As our
targetsystemwill not includeiRMX-NET, the iSBC208witl be placedon interrupt
levelfour andwill useslaveI/O address180H.

o A RAM driveris an additionto the 80286-hased
multi-usersystem.
.

The targetsystemdefines4M bytesof RAM,3M bytesare usedby the systemand the
FreeSpaceManagerand lM byte is usedby the RAM disk.

.

The targetsystemresidesin a bootloadable
file named/BOOT/SAM286.286.

The nameof the newdefinitionfile for the targetsystemis SAM2ll6.DEF.FigureB-1
showsmemorymapsof the layoutof both systems:the 2tìfil2.deflayoutis on the left and
the targetsystemlayoutis on the right.

8.4 STEPSPERFORMED
TO CREATE
THETARGETSYSTEM
The stepsneededto modi! an existingdefinitionfile to meetthe targetsystemneedsare
outlinedbelow.
.

Add the iSBC220SMD Driver

.

Add the iSBC208FlexibleDisk ControllerDriver

.

Add the RAM Driver

.

Changethe memoryfor the systemand FreeSpaceManagerto reflectthe amountof
memoryneededfor operationof the newdevices.

As you proceedthrough this examplerefer to the Ertended|RMX II Inleructive
ConfgurationUtilityReferent'e
manualfor more information about configuringeachof the
abovedrivers.

B-2

ICU User'sGuide

EXAMPLESYSTEMCONFIGURATION

16 M bytes
SDMMonitor
SDM Start

Fc0000H

16 M bytes
FC0000H

S D MM o n i t o r
s D M St a r t
a
a

------O7FFFFH
Unused Address

Space

4 M bytes
RAM Drlver

Free Space Manager

3 M bytesFree Space Manager
5 F F F F H-

-

- 55 0 0 0 H

Sub- Systems
I 0 0 0 H- -

S u b- S y st e m s

2C00H
2000H
M S CR e s e r v e d

MSC\.Jakeuo

1 20 0 H

1000H

2690H
-=isBa]?I1210H
1200H

Reserved Hemory
iSBC 220 Wakeup

1180H

M S CR e s e r v e d

1010H
1000H

MSC Wakeup
SDM DATA

SDM DATA

OH
2 86 1 2 . D E F U a p

isBc 208
Reserved Memory

OH
SA.ì{28 6 . DEF l,faD

Systern
Figure B-1. Memory Maps for the 802tì6-Based
and Target System

ICU Usefs Guide

B-3

EXAMPLESYSTEMCONFIGURATION

8.5 USINGTHEICUTO DEFINETHETARGETSYSTEM
This sectiondescribes
a dialoguebetweena userand the ICU. This dialogue
demonstrates
the stepsneededto definethe targetsystemdescribedin the previous
section.In the dialogue,userinput is shownin eitherblueor boldedtext,followedby a
carriagereturn ( . CR > ). Shoultlyou makean error in enteringinformationasyou
proceedthroughthis example,you canre-typethe informationifyou are currently
vìewingthe screenin whichthe error wasentered.If not,you can useeitherthe Backup
(b) or Find (l) commandto access
the screenyou want to change,then re-tlpe the correct
you
information.If
are newto the iRMX II ICU and do not want to usethesecommands,
you candeletethe SAM286.DEFfile in the SAM286directoryand startoverby entering
the lastline of the commandsequence
listedbelow.
Invokethe ICU, givingthe nameof the defaultfile and the desirednameof the modified
definitionfile, as follows:

This producesthe displayshownin FigureB-2. This is the first screenyou seeeachtime
you invokethe ICU.

B-4

ICU UserrsGuide

EXAMPLESYSTEMCONFIGURATION

lRl4X I1 Interactive Configuration Urility
Copyrighc  Intel Corporation

For general help
The following

F o r E x t è n d e d iRlO( II,



in any screen entèr H .

cofiìnands are available

Change
Generate
List
Save
Qul t
Exl t
Replace
Detai l - Leve 1
Backup
ENTER CoMMAND: C ldevs



FigureB-2. Initial ICU Screen
The first thingto changein the targetsystemis the MSC diskand tapecontroller.To do
this,go to the "l ntel DeviceDrivers"screenby entering"C idevs< C R > ", asshownin
FigureB-2. This producesthe screenshownin Figurets-3.

ICU Usef s Guide

B-5

EXAMPLE SYSTEMCONFIGURATION

(IDEVS)
(S14)
(î74)
(T51)
(T30)
(TCC)
(L86)
(L50)
(s20)
(s08)
(T44)
(X5I)
(scs)
(s10)

lntel

Device Drivers

YES
Mass Storage Controller
[Yes/No]
8274 Terninal Driver
YES
[YeslNo]
8251A Terninal Driver
NO
[YesrzNo]
82530 Terninal Driver
NO
[Yes/No]
Termtnal CommController
YES
[Yes/No]
L f n e P r i n t e r f o r 1 S B C2 8 6 / f O l Y e s / N o )
YES
Ltne Prlntèr - iSBX 350
NO
[Yes,zNo]
(X18) isBX 218A
isBc 220
[Yes/No] N0
(T34) lSBc 534
lsBc 208
[Yes/No] N0
iSBC 5444
[YeslNo] YEs (s64) lsBc 264
( R A M ) R A MD i s k D r i v e r
iSBX 251
[Yes,zNo] NO
(
s24) isBc L86/224A
scsl Driver
[Yes/No] N0
(
c79) isBX 279
i s B c 1 , 8 6 / 4 L O[ Y e s / N o ] N 0

Enter
I Abbreviation
: Sl4 - y  ". The
abbreviation
for the S14is "S14",so rype"S14=Y ". This producesthe screen
shownin FigureB-4.
The parameterthat mustbe changedis the'IPA I/O Processor
BlockAddress"
parameter.The memorymapsin FigureB-1 showwhy.From thesemapsyoucansee
that therewouldbe an addressconflictbetweenthe iSBC220SMD controllerand the
originallocationof the MSC diskand tapecontroller.To preventthis conflict,one of the
devicesmustbe moved.Movingthe "IPA I/O Processor
BlockAddress"from 1200Hto
1180Hwill resolvethe conflict. Enter "ipa= 1180H", asshownin FigureB-4. To
checkthischange,type"r'. This producesthe screenshownin FigureB-5.

B-ó

ICU Uset'sGuide

EXAMPLESYSTEMCONFIGURATION

(D214)
(DEV)
(IL)
(ITP)
(wlP)
(IPA)

Mass Storage Controller

Driver

Device Name [1-16 Chars]
Incerrupt Level IEncoded Level]
lnterrupt Task Priority [0-255]
W a k e u pI / 0 P o r t [ 0 - O F F F F H ]
I/O Processor Block Address [0-OFFFFFH]

EnÈèr
I Abbreviation
: lpa-1180h 
: 

- neu_value / Abbreviation

215-A
058H
130
0100H
01200H
? / H )

Figure B-4 MSC Driver Screen

(D2L4)
(DEV)
(TL)
(ITP)
(l.tIP)
(IPA)

Mass Storase Controller

Driver

Device Naue [1-16 Chars]
T n t e r r u p t L e v e l I E n c o d e dL e v e l l
Interrupt Task PrÍority [0-255]
WakeupI/O Port [0-oFFFFH]
I/O Processor Block Address [0-OFFFFFH]

Enter
I Abbreviacion:
f
fdevs

:

2 1 5- A
058H
130
0100H
01180H

new_value / Abbreviacion ? / H 1

Figure B-5 MSC Driver Screen
To add the iSBC220SMD controller,you returnto the "Intel DeviceDrivers"screenby
entering"f idevs". This producesthe screenshownin Figure8-6.

ICU Use/s Guide

B-7

EXAMPLESYSTEMCONFIGURATION

(IDEVS)

Intel

Devlce Drivers

(S14) Mass Storage Cóntroller
YES
[Yes/No]
('174) 8274 Terrninal Driver
YES
[Yes/No]
(T51) 8251A Tèrninal Driver
No
[Yes/No]
(T30) 82530 TernÍnal DrÍver
NO
[Yes/No]
( T C C ) T e r m i n a l C o n mC o n c r o l l e r
YES
[Yes/No]
(L86) Llne Printer for íSBC 286110 [YeslNo]
YES
(L50) Line Printer - tSBx 350
No
[Yes,zNo]
(s20) lsBc 220
(xl-8) isBX 2l8A
[Yes/No] N0
(s08) isBc 208
(T34) isBc s34
[YeslNo] N0
(T44) iSBC 5444
{YeslNol YEs (s64) lsBc 264
(X51) iSBX 251
( R A r)' f R A MD i s k D r i v e r
[Yes,zNo] N0
(SCS) SCSI Drlver
(S24) lSBC 186/224A
IYes/No] N0
(S10) ÍSBC 186/410 [Yes/No] No
(c79) isBX 279

[Yes/No]
[YèslNo]
[Yes/No]
[Yes/No]
IYes/No]
[YeslNo]

N0
N0
N0
NO
N0
No

Enter
I Abbreviacion : ne*/value / Abbreviation ? /H]
: S20 - v 

Figure8-6. The Intel DeviceDriversScreen
The abbreviation
for the iSBC220SMD controlleris "S20",soyou type"S20=y" at
the bottomof the screen,as sho\,rr'n
in Figure8-6. Thiswill producethe screenshownin
Fisure B-7.

Do you want any/mo re i S B C 2 2 0 D E V IC E s?
y 

Figure B-7. Query Screenfor the iSBCo220 SMD Device
FigureB-7 showsa queryscreenthat asksifyou want to add a tievice.To startthe
processof addingthe iSBC220SMD controller,type"y " asshownin FigureB-7.
This will producethe "iSBC220Driver"screen,asshownin FigureB-8,

B-8

ICU Uset,s Guide

EXAMPLESYSTEMCONFIGURATION

(D22O)
(DEV)
(IL)
(ITP)
(wIP)
(IPA)
(SB)

ISBC 220 Driver

Device Name [1-16 Chars]
Interrupt Level lEncoded Levell
lnterrupt Task PrÍorlty [0-0FFH]
W a k e u pI / o P o r t [ O - 0 F F F F H ]
I/O Processor Block Address [0,0FFFFFH]
Size of Buffers [O-0FrrrH]

EnEer
I AbbrevÍation
: dev-220 

028H
130
0120H
01210H
01480H

* new/va1ue / Abbreviatioa

? /H]

: 
Figure B-8. The iSB@ 220 Driver Screen
The minimuminformationthat mustbe enteredon this screenis the "(DEV) Device
Name"field. Enter "dev=220", asshownin FigureB-8. Becauseall of the
remainingfieldsmatchthe targetsystem's
hardwareconfigurationfor the iSBC220SMD
controller,you can usethe defaultvalues.Enter "" to reshowthe screenwith the
namefield completed.This producesthe screenshownin FigureB-9.

(D22O)
(DEV)
(IL)
(ITP)
(l.llP)
(IPA)
(SB)

íSBC 220 Driver

Device Nane [1-16 Chars]
lnterrupt Level lEncoded Levell
Interrupt Task Priority Io-0fFHl
WakeupI/O Port IO-OFFFFHI
I/0 Processor Block Address [0-OFFFFFH]
Size of Buffers [0-OFFFFH]

Enter

: 

I Abbreviation

220
028H
130
0120H
01210H
01480H

: new_value / Abbreviatlon

? /H

Figure B-9. The CompletediSBC@220 Driver Screen
Checkthat you haveenteredthe devicenamecorrectly.lf so,you are readyto add the
iSBC220unit information.Typinga "", as shownin FigureB-9,will displaythe
queryscreenshownin FigureB- 10.

ICU Uset'sGuide

B-9

EXAMPLE SYSTEMCONFIGURATION

Do you w a n t a n y / m o r e 1 S B C 2 2 0 D E V I C E S ?


Figure B-10. Query Screenfor another iSBC€ 220 Driver
As this applicationrequiresonly one iSBC220SMD controller,respondwith a carriage
return () asshownin FigureB-10. This tellsthe ICU that you do not want another
as shownin FigureB-11.
iSBC220Driver and causesthe nextscreento be displayed,

Do you want

y 

ar,y /mote

iSBC 220 UNITS ?

Figure B-ll. Query Screenfor iSB@ 220 SMD Controller Unit Information
FigureB-11showsa queryscreenthat asksifyou want to fill in Unit ìnformationfor an
iSBC220SMD controller.This is the first time that an iSBC220SMD controllerhas
beenadded,so suchinformationdoesnot yet exist. Respondto this screenby entering
"y ", as shownin FigureB-l l. This producesthe "iSBC220Unit Information"
screenshownin FisureB-12.

B-10

ICU Usefs Guide

EXAMPLESYSTEMCONFIGURATION

(V220)

ISBC 220 Unit Information

(DEV) Device Nane [1-16 Chars]
( N A l ), f U n i t I n f o N a m e [ 1 - 1 6 C h a r s ]
( l ' t R ) M a x l m u mR e t r i e s l 0 - 0 F F F F H I
(CS) Cylinder Size [0-OFFFFH]
(NC) Nunber of Cylinders [0-0FFFFH]
(NFH) Nunber of Heads/Fixed Dlsk [0-OFFH]
( N R H ) N u n b e r o f H e a d s / R e x l o v al e
b Disk [0-OFFH]
( N S ) N u r o b e ro f S e c t o r s / T r a c k [ 0 - O F F F F H ]
(NAC) Nunber of Alternate Cylinders [0-0FFH]
(SSN) Starting Sector Nunber [0-0FFFFFFFFH]
(BTI) Bad Track InformatíÒn IYes/No]

09H
OTEH
O24DH
07H
OH
012H
OBH
OH
YES

Enter
I Abbreviation : new/value / Abbreviatlon ? /Hl
: dèr:220 
: nan-ulnfo_22o 

: 
FigureB-12. The iSBCo220Unit InformationScreen
The fieldsrequiringinformationon this screenare the "(DEV) DeviceName"and
"(NAM) Unit Info Name"fields.Enter"dev=220" and"nam=uinfo_220
",
asshownin FigureB-12. The remainingfieldsneednot be changedbecause
the defaults
matchthe targetsystem.Reshowthe "iSBC220Unit Inlbrmation"screento ensurethat
you typedeverythingcorrectlyby entering" < CR > ", as shownin FigureB-12. This
producesthe screenshownin FigureB- 13.

ICU User'sGuide

B-ll

EXAMPLE SYSTEMCONFIGURATION

(U220)

ISBC 220 Unit lnformÉtion

(DEV) Devlcè Nane [1-16 Chars]
( N A M ) U n i t I n f o N a r n e[ 1 - 1 6 C h a r s ]
(MR) Haximu:rRerríes [o-oFFFFH]
(CS) CylÍnder Size [0-0FFFFH]
( N C ) N u r n bre o f C y l i n d e r s I O - O F F F F H ]
(NFH) Nr:nber of Heads/Fixed Disk l0-OFFHl
(NRH) Nunber of Heads/Renovable Disk [0-ofFH]
(NS) Number of Seccors/Track [0-0FFFFH]
(NAC) Nutrrber of Alternate Cylinders l0-OFFHl
(ssN) starting sector Number [0-OFFFFFFFFTI]
(BTI) Bad Track Information [YeslNo]
Enter
: 

I Abbreviation

22O
UINFO_220
09H
07EH
024DH
07H
0H
012H
OBH
0H
YES

- new/va1ue / Abbrèviation

? / H )

FigureB-13. CompletediSBC€220Unit InformationScre€n
After checkingthe entrieson the screenshownin FigureB-13,typea "" to viewthe
nextscreen.

Do you want

any/nore

iSBC ?20 UN'fTs ?


FigureB-14. iSBC€220Unit QueryScreen
Only one Unit is requiredfor the iSBC220SMD controller,so by enteringa carriage
return(), asshownin FigureB-14,youtell the ICU thatyou arereadyto viewthe
nextmajorscreen.

Do you want

y 

any /mote

iSBC 220 DUIBs ?

FigureB-15. iSBC@
220 SMD DUIB QueryScreen
To completethe inclusionof the iSBC220SMD controller,a DeviceUnit lnformation
Block(DUIB) mustbe completed.Typing"y ", asshownin FigureB-15, causes
the "iSBC220Device-UnitInformation"screenin FìgureB-16to appear.

B-12

ICU User'sGuide

EXAMPLESYSTEMCONFIGURATION

(1220)

iSBC 220 Devlcè UniÈ Information

(DEV) Device Nane [1-16 Chars]
( N A Ì), f D e v Í c e - U n i c N a m e [ 1 - 1 4 C h a r s ]
(PFD) Phystcal File Driver Required [Yes/No]
YES
(NFD) Naned Filè Driver Required [Yes/No]
YES
( G M ) G r a n u l a r i t y [ 0 - O F F F F ]H
0400H
(DSZ) Device Size [0-0FFFFFFFFH]
0471F000H
(UN) Unlt Number on this Dèvíce [0-0FFH]
OH
( U I N ) U n l È I n f o N a r n e[ 1 - 1 6 C h a r s ]
(RUT) Request Update Tineout [0-OFFFFH]
064H
(NB) Number of Buffers [nonrandom : 0/rand - I-0FFFF]II 08H
(CUP) Comnon Updatè [Yes/No ]
YES
( U B ) M a x B u f f e r s [ 0 - 0 F F H]
OFFH
Enter
I A b b r e v i a t i o n = n e w _ v a l u e/ A b b r e v i a t i o n ? / H )
dev=220 
nan=sf0 
uln=ulnfo_220 


FigureB-16. The iSB@ 220Device-UnitInformatkrn(DUIIì) Screen
Onceagainthe defaultvaluesmatchthe targetsystem.'I-heonly fieÌdsthat mustbe filled
in are the "(DEV) DeviceName","(NAM) Device-UnitName",and "(UlN) Unit Info
Name'fields.Enter"dev=220", "nam=sfO< CR > ", and"uin= uinfo_220
",
as shownin FigureB- 16. To reshowthe screento checkyour cntrics,ctìtcra carriage
return() asshownin FigureB-16.Thisproduces
the screenshownin FigureB-17.

ICU Use/s Guide

B-13

EXAMPLE SYSTEMCONFIGURATION

(î220)

1 S B C2 2 0 D e v i c e U n i t I n f o r m a c i o n

(DEV) Devlce Name [1-16 Chars]
220
( N A l ' f )D e v l c e - U n Í t N a n e [ 1 - 1 4 C h a r s ]
SFO
(PFD) Physícal File Driver Required [Yes,zNo]
YES
( N F D ) N a m e dF i l e D r i v e r R e q u i r e d [ Y e s / N o ]
YES
(CRA) cranulartty
0400H
[O-OFFFFH]
(DSZ) Device Size [0-0FFFFFFFFH]
0471F000H
(UN) Unit Nunber on this Device [0-0FFH]
0H
(UIN) Unit Info Name [1-16 Chars]
UINFO_220
(RUT) Requesc Update Timeout IO-OFFFFH]
064H
( N B ) N u m b e r o f B u f f e r s [ n o n r a n d o m - O / r a n ó - 1 - O F F F F H ]0 8 H
( C U P ) C o m n o nU p d a c e l Y e s / N o l
YEs
(MB) Max Buffers l0-OFFHl
OFFH
EnÈer
I Abbreviation

: f ldevs

* new_value / Abbreviation

? /H]

Figure B-17. CompletediStsC€220 Device-UnitInformation Screen
ìf all the entriesarecorrect,all of the stepsto includethe iSBC220SMD Controllerare
completed.
Note that addingthe MSC disk and tape,the iSBC220SMD, and the iSBC208peripheral
devicesrequireschangingthe amountof memoryavailableto both the system,"(MEMS)
Memoryfor System"screen,and the FreeSpaceManager,"(MEMF) Memoryfor Free
SpaceManager"screen.Eachof thesedriversrequiresRAM spacein the low megabyte
of memoryfor host/controllercommunications
and,in the caseof the iSBC208and iSBC
220,someI/O buffering.This memorymustbe takenfrom the FreeSpaceManagerand
givento the system.This processcanbe performedbeforeor after addingthe driver
screens.For this example,all of the deviceswill be added,then the memoryparameters
will be changedto incorporatethe newdevices.
The nextstep,then,is to add the iSBC20[ÌFlexibleDisk Drive Controller.To begin,
return to the "Intel DeviceDrivers"screenby entering"f idevs" as shownin Figure
B-17.

B-14

ICU Usefs Guide

EXAMPLE

( rDEVS
)

Intel

CONFIGURATION

Device Drivers

( S 1 - )4 H a s s S t o r a g è C o n t r o l l e r
YES
lYes/Nol
( T 74 ) 8 2 7 4 T e r m i n a L D r i v e r
YES
[YeslNo]
(T51) 8251A Terrainal Driver
No
[Yes/No]
(T30) 82530 Terninal Driver
N0
[YeslNo]
( T C C ) T e r r n í n a l C o n mC o n r r o l l e r
YES
IYes,zNo]
( L 8 6 ) L i n e P r i n t e r f o r 1 S B C2 8 6 1 1 0 I Y e s / N o ]
YES
(L50) Llne Prínter - iSBX 350
NO
lYes/Nol
(s20) isBc 220
(x18) isBx 218A
[YeslNo] N0
(s08) isBc 208
( T 3 4 ) i S B Cs 3 4
[Yes/No] N0
(T44) lsBc 544A
(
s64) isBC 264
Y
E
S
lYes/Nol
(X51) ísBX 251
(RAX) RAMDisk Driv
[Yes/No] No
(SCS) SCSI Driver
(s24) isBC L86/224A
IYes/No] No
(s10) tsBc L86/4I0 [YeslNo] N0
(c79) isBX 279
Enter
I Abbreviation
. g0g - y 

: new/value / A b b r e v i a t i o n

? /

I Y e s l N o]
IYeslNo ]
IYeslNo ]
I Y e s / N o]
I Y e s r z N]o
IYeslNo]

NO
NO
NO
NO
NO
NO

l

Figure B-18. The Intel DeviceDrivers Screen
To add anydriverfrom the (IDEVS) screen,you typethe device'sthreeabbreviationon6 "=y ,,. The abbreviation
for rhe iSBC209Flexit DiskDrive
Controlleris "S08",so you type "S08= y " asshownin FigureB-li Thisproduces
the screenshownin FisureB-19.

D o you want any/nore


iSBC 208 DEVICEs?

v

Figure B-19. iSBCo 208 DeviceQuery Screen
FigureB-19showsa queryscreenthat asksusersif theywant to add a dr
processof addingthe iSBC208FlexibleDisk Drive Controller,tlpe "y <
causesthe 'iSBC 208Driver"screen,asshownin FigureB-20,to appear.

ICU Usefs Guide

. To startthe
> ". This

B-l 5

EXAMPLESYSTEMCONFIGURATION

( D 2 0 8)

iSBC 208 Driver

(DEV)Devlce Nane [1-16 Chars]
(IL)
InÈerrupt Level [Encoded Level]
(ITP) Interrupt Task Priority [0-255]
(PA) Port Address [0-OFFFFH]
(MDV)Motor Delay Value IO-OFFFFU]
(BBA) Boundary Buffer Address [0-OFFFFFFFFH]
Enter
I Abbreviation
: dev=208 
: bba-2c00H 

048H
130
0180H
050H
01600H

- n e r ^ ' - v a l u e/ A b b r e v i - a t i o l

? /H]

: 
FigureB-20. The iSB@208 Driver Screen
Becausethe targetsystemmatchesmostol thisscreen'sdefaultvalues,only two fields
needto be changedon this screen.The "(DEV) DeviceName"and the "(BBA) Boundary
BufferAddress"fields. Enter "dev= 208 < CR > " to fill in the "(DEV)"Íìeld. Becausethe
iSBC220driverhasmemorylocatedat the defaultiSBC208address(seeFigureB-42)
the "(BBA)"fieldmustbe changed.Enter"bba=2C00H" to changethisaddress.
Enter a carriagereturn ( < CR > ) to reshowthe screen(FigureB-21).

(D 2 0 8
)

iSBc 208 Drive r

( D E V ) D e v i c e N a r n e[ 1 - 1 6 C h a r s ]
(IL)
Interrupt Level lEncoded Levell
(ITP) Interrupt Task Priority [0-255]
( P A ) P o r t A d d r e s s [ 0 - O F F F F ]H
(MDV)Motor Delay Value [0-0FFFFH]
(BBA) BoundaryBuffer Address l0-OFFFFFFFFHI
Enter

I Abbreviation

:

new_value /

208
048H
130
0180H
050H
2C00H

Abbreviatioi

? /H]

: 
20tlDriver Screen
FigureB-21. CompletediSBC-@
The changesand additionsneededon thisscreenhavebeenmadeand checked;the
"iSBC208Unit Information"screenmustnow be filled in. To indicateto the ICU that
you are readyto viewthe nextscreen,entera carriagereturn ( < CR > ) asshownin Figure
B-21.

B-16

ICU User'sGuide

EXAMPLESYSTEMCONFIGURATION

Do you w a n t a n y / n o r e i S B C 2 0 8 D E V I C E s ?


Figure B-22. Query Screenfor another iSBCo 20EDriver
As this applicationrequiresonly one iSBC208flexiblediskdriver,respondwith a carriage
return asshownin FigureB-22. This tellsthe ICU that you do not want anotheriSBC208
driverand causesthe iSBC208 Unit queryscreento appear,asshownin FigureB-23.

Do you L ' a n t a n y / m o r e i S B C 2 0 8 U N I T S ?
y 

Figure B-23, Query Screenfor the iSB@ 208 Unit Information
Becausethis is a newlyaddeddevice,you mustcompleteall screensrelatedto the
iSBC208FlexibleDisk Drive Controller.Respondro rhisscreenby entering"y ",
as shownin FigureB-23to producethe screenshownin FigureB-24.

ICU Use/s Guide

B-17

EXAMPLE SYSTEMCONFIGURATION

(U208) iSBC 208 Unit lnformation
(DEV) Device Nane [1-16 Chars]
(NAM)Unit Info Name [1-16 Chars]
(MR) MaximunRerries I0-OFFFFH]
(cS) Cylinder Size [O-OFFFI1I1
( N T ) N u r n b e ro f T r a c k s p e r S i d e [ o - o F F F F H ]
( N S ) N u r n b e ro f S e c t o r s / T r a c k I O - O F F F F H ]
(SR) Step Ratè [0-0FFH]
(HLT) Head Load Tirne [0-0FfH]
(HUT) Head Unload Tirne l0-0fFHl
Enter
I Abbreviation
: dev-208 
: nan=ufnfo_2O8 
: 

09H
0fA]t
04DH
01AH
08H
028H
0F0H

: new_value / Abbreviation

? /H]

FigureB-24. iSBC@208
Unit InformationScreen
Becausethe targetsystemmatchesthe defaultson this screenthe only fieldsyou must
enterare the "(DEV) DeviceName"and "(NAM) Unit Info Name"fields. Enter
", asshownin FigureB-24.To reshowthe
"dev=208" and"nam=uinfo_208
screento checkyour entries,entera carriagereturn ( < CR > )

u-r8

ICU User'sGuide

EXAMPLESYSTEMCONFIGURATION

(U208) isBc 208 Unit InformatÍon
(DEV) Device Name 11-16 Charsl
(NAM)Unit Info Nane [1-16 Chars]
( l , R ) M a x l m u mR e r r i e s I 0 - o F F F F H I
(Cs) Cyllnder Size [O-0FFFFH]
(NT) Numbet of Tracks per Sfde [0-0FFFFH]
(NS) Nurnber of Sectors/Track |0-0FFFFHI
(sR) Step Rate [0-0rFH]
(HLT) Head Load Time lO-0FFHl
(HUT) Head Unload Tine [0-0FFH]
Entèr
: 

I Abbreviation

2OB
U I N F o -208
09H
01AH
04DH
0l-AH
08H
028H
0F0H

= nev_value / AbbreviatÍon

? / H )

@Figure
Unit InformationScreen
B-25. CompletediSBC@208
FigureB-25showsthe completed"iSBC208Unit Information"screen.Aller checking
that the entriesare correct,entera carriagereturn ( < CR > ) to continuecompletingthe
screensrelatedto the iSBC208FlexibleDisk Drive Controller.

Do you want anylrnore iSBC 208 UNITs ?


Figure8-26. iSBC€208Unit QueryScreen
This applicationrequiresonly one Unit. To continuecompletingthe screensrelatedto
the iSBC208FlexibleDisk Drive ControlÌer,entera carriagereturn (), asshown
in Fisure8-26.

Do you want any/more iSBC 208 DUIBs ?
y 

Figure B-27. The iSBC€ 20EDUIB Query Screen
To completethe additionof the iSBC208FlexibleDisk Drive Controller,you must
completea DeviceUnit InformationBlock (DUIB). Typinga "y " causesthe
"iSBC208Device-UnitInformation"screen,shownin FigureB-28,to appear.

ICU User'sCuide

B-r9

EXAMPLESYSTEMCONFICURATION

(1208)

1 S B C2 0 8 D e v i c e - U n i c l n f o r m a t i o n

(DEV) Devlce Naúe [1-16 Chars]
( N A ì , f )D e v i c e - U n i c N a r n e[ 1 - 1 4 C h a r s ]
(PFD) Physical FíIe Driver Required [Yesr/No]
( N F D ) N a m e dF l l e D r l v e r R e q u l r e d I Y e s / N o ]
( S D D ) S t n g l e o r D o u b l e D e n s i t y D l s k s I Si n g l e , z D o u b l e]
(SDS) Single or Double Slded Disks ISingle/Double]
(EFI) 8 or 5 lnch Disks [8/5]
(SUF) Standard or Unlform Format { Standard/Uni forru l
(GRA) Cranularity
[0 - OFFFFH
]
( D S Z ) D e v l c e S i z e l 0 - O F F T F F F F Fl H
( U N ) U n i t N u . n b e ro n t h i s D e v i c e [ 0 - 0 F F H ]
(UIN) Unit Info Name [1-16 Chars]
(RUT) Request Updatè Tirnèour [0-OFFFFH]
(NB) Number of Buffers fnonrandon * O/îand - 1-OFFFFH]
(CUP) ComrnonUpdate [YeslNo ]
(MB) Max Buffers [0 - OFFH
]

YES
YES
DOUBLE
SINGLE
8
STANDARD
0100H
07c500H
OH
064H
06H
YES
OFFH

Enter
I Abbreviation - new/value / Abbreviation ? /Hl
dev-208 
nan-afdo 
uln-ulnfo_2O8 


FigureB-28. The iSB@208 Device-UnitInformation(DUIB) Screen
The defaultvaluesprovidedon this rcreenmatchthe targetsystemfor this application.
The only fieldsthat mustbe filled in are "(DEV) DeviceName","(NAM) Device-Unit
Name",and "(UIN) Unit Info Name". Enter "dev=208","nam= atdO,',
and
"uin= uinfo_208",
asshownin FigureB-28. Reshowthe screento checkyour entriesby
enteringacarriage
return(

208
AFDO
YES
YES
DOUBLE
SINGLE
I
STANDARD
0100H
07c500H
OH
UINFO-208
064H
06H
YES
OFFH

: new/va1ue / Abbreviacion ? /H

FigureB-29. CompletediSBCo208Device-UnitInformationScreen
All of the stepsto includethe iSBC201ìflexiblediskdriverare completed.You still,
however,mustadjustthe systemmemoryto allowfor the additionof this device.For
now,though,add the RAM driverto completethe additionof all the deviceslistedin the
changes.The first stepis to returnto the "lntel DeviceDrivers"screenby entering"f
idevs< CR > " asshownin FigureB-29.

ICU Usefs Guide

B-21

EXAMPLE SYSTEMCONFIGURATION

(IDEVS)
(S14)
(T74)
(T51)
(T30)
(TCC)
(L86)
(L50)
(s20)
(S08)
(T44)
(X51)
(SCS)
(s10)

lntel

Dèvice Drivers

Mass Storage Cóntrol1er
YES
[Yes/No]
8274 Terninal Driver
YES
[YeslNo]
8251A Ternínal Driver
NO
[Yes,uNo]
82530 Terrninal Driver
NO
[YeslNo]
Terrninal CommController
YES
[Yes/No]
Llne Printer for iSBC 286110 [YeslNo]
YES
Line Prlntèr - ISBX 350
NO
[Yès//No]
(X18) isBX 218A
iSBc 220
[Yes/No] No
ISBC 208
(T34) tsBc 534
[Yes/No] N0
iSBc 5444
[YeslNo] YES (s64) lsBc 264
ISBX 251
(RAM)RAtl Dlsk Driver
[Yes/No] N0
(s24) isBc 186/224A
SCSI Driver
[Yes/No] No
(c79) isBX 279
isBc 186/410 [Yes/No] N0

Enter
I Abbreviation - nelvalue
: raro=v 

[Yes/No] No
[Yes//No] NO
[Yes/Nol N0
[Yes/No] NO
[Yes/No] No
lyeslNo] No

/ Abbreviarion ? /H]

Figure B-30. Intel DeviceDrivers Screen
To add the RAM driver,you typethe device'sthreeletterabbreviation
from the (IDEVS)
screenand "=y ". The abbreviation
for the RAM Disk is "RAM',,so you t)?e
"ram= y " asshownin FigureB-30. Thisproducesthe screenin FigureB-31.

Do you I'ant

y 

any /more

RAl,l Disk Driver

DEVICEs?

Figure B-31. RAM Disk DeviceQuery Screen
To startaddingthe RAM disk,tlpe "y ". This entryproducesrhe',RAM Disk
Driver"screenas shownin Fisure B-32.

B-22

ICU Use/s Guide

EXAMPLESYSTEMCONFIGURATION

(DRAM)

RAI{ Disk Dríver

(DEV) Device Name [1-16 Characters]
Enter lAbbreviation
: dev-ran 
: 

= new_value / Abbreviation

? / H ]:

Figure B-32. Default RAM Disk Driver Screen
The only informationto enteron this screenis the "(DEV) DeviceName"field. Enter
"dev= ram ", as shownin FigureB-32. Enter a carriagereturn () to
redisolavthe screenwith the new data.

(DRAì4)

RAM Disk Driver

( D E V ) D e v i c e N a r n e1 1 - 1 6 C h a r a c t e r s l
Enter [Abbreviation:
: 

RAI1

n e w _ v a 1 u e/ A b b r e v i a t i o n

? / H ]:

Figure B-33. Inserted RAM Disk Driver Screen
FigureB-33showsthat the necessary
changehasbeenmade;therefore,simplyentera
carriagereturn ( < CR > ) to viewthe nextqueryscreenasshownin FigureB-34.

Do you want anv/more RAI'ÍDisk Driver


DEVICES ?

Figure B-34. RAM Driver Query Screen
Becauseyou haveonly one RAM diskdriverto add,entera carriagereturn ( < CR > ) to
view the RAM driver Units queryscreenas shownin FigureB-35.

ICU User'sGuide

B-23

EXAMPLE SYSTEMCONFIGURATION

Do you want any/nore
y 

RAl,tDisk Driver

UNITs ?

Figure B-35. RAM Unit Query Screen
Becausethe Unit informationdoesnot yet existin our definitionfile, type "y ".
This producesthe "RAM Disk Driver Unit Information'screenasshownin Figure8-36.

(URAI{)
(DEV)
(NAM)
(BMA)
(WP)

Ml'f Disk

Dri.ver

Unit

Infornation

Device Name [1-16 Characters]
Unit Info Name [1-16 Chars]
Base Memory Address l0-OFFFFFPHI
Write Protected
IYes/No ]

Enter lAbbreviatlon:
dev-ran 
bna-300000h 

n e r ^ r _ v a l u e/ A b b r e v l a t i o n

0100000H
NO
? / H I :


Figure 8-36. RAM Disk Driver Unit Information Screen
The fieldsthat mustbe filled in on this screenare "(DEV) DeviceName","(NAM) Unit
Info Name",and "(BMA) BaseMemoryAddress".The basememoryaddressvalueis
chosenby selectingan addressabovethe defaultmemoryreseryedfor the systemand the
Free SpaceManagerin the memorymap shownin FigureB-42. Enter "dev=ram",
"nam= uinfo_ram",and "bma= 300000h".To checkyour entries,entera " < CR > ". This
actionproducesthe screenshownin FigureB-37.

B-24

ICU User'sGuide

EXAMPLESYSTEMCONFIGURATION

(UR-AX)

RAM Disk Drj.ver Unit

Infornation

(DEV) Device Name [1-16 Characters]
(NAì4) UniÈ Info Nane [1-16 Chars]
( Bl'lA) Base Memory Address IO-oFFFFFFH]
(IJP) lJrite Protected [Yes/No]
Enter [Abbreviation
: 

- new_va1ue / Abbreviation

RAM
UINFO_RA.I{
300000H
NO
? / H |

:

Figure B-37. Inserted RAM Disk Driver Unit Information Screen
After checkingthe entrieson the screenshownin FigureB-37,ty?e a "" to viewthe
nextscreen.

Do you want anvlnore RA-t,fDisk Driver

UNITs ?


Figure B-38. RAM Unit Query Screen
Only one Unit is requiredfor the RAM Disk,so by enteringa "", asshownin
FigureB-38,you continuethe processof addingthe RAM Disk.

Do you want
y 

any/mo]ie RA.|4Disk Driver

DUIBS ?

FigureB-39. RAM DUIB QueryScreen
To finishaddingthe RAM disk,you mustcompletea DUIB. To begin,enter"y "
asshownin FigureB-39. The ICU thendisplaysthe "RamDisk Device-UnitInformation"
screen.as shownin FisureB-40.

ICU Use/s Guide

B-25

EXAMPLESYSTEMCONFIGURATION

( IRAI4)

RAM Disk Device-Uni!

Infornation

(DEV) Device Nane [1-16 CharacÈers]
( N A l ' f )D e v l c e - U n i t N a r n el 1 - 1 4 c h a r s l
(PFD) Physical Fí1e Driver Rèquired [Yes,zNo]
YES
( N F D ) N a r n eF i l e D r i v e r R e q u i r e d [ Y e s / N o ]
YES
(GM) Granularíty |0-OFFFFHI
0200H
(DSZ) Devlce Size |O-OFFFFFFFFHI
0100000H
(UN) Unit Ntrnbèr of this Device [0-0FFH]
0H
( U l N ) U n i t I n f o N a r u eI l ' 1 6 C h a r s ]
(RUT) Request Update Timeout IO-OFFFFH]
0H
(NB) Nr.ruber of Buffers [nonrandom - O/rand - 1-OFFFFH] 02H
( C U P ) C o n m o nU p d a t e [ Y e s / N o ]
YES
(MB) Max Buffers |O-OFFH]
OFFH
- new_value / Abbreviation
Enter lAbbreviation
dev-ran 
nan=ro

uln*uinfo_ran


? / H ) :


Figure B-40. RAM Disk Device-UnitInformation Screen
The fieldsthat mustbe filled in on this screenare "(DEV) DeviceName","(NAM)
Device-UnitName",and "(UIN) Unit Info Name". The remainingfieldscanusethe
defaultvalues.Enter "dev=ram < CR > ", "nam= r0",and "uin= uinfo ram ". To
checkyour entries,type
FigureB-41showsthe inserted"RAM Disk DeviceUnit Information"screen.

B-26

ICU User'sGuide

EXAMPLESYSTEMCONFIGURATION

( IRA.I'!
)

RAÌ.tDisk Device-Unit

Informarion

( D E V ) D e v i c e N a r n e[ 1 - 1 6 C h a r a c t e r s ]
( N A l , f )D e v i c e - U n i t N a m e l 1 - 1 4 c h a r s l
(PFD) Physlcal File Driver Required IYeslNo]
(NFD) Nane FiIe Driver Required [YesruNo]
( G M ) C r a n u l a r t c y [ 0 - O F F F F ]H
( D S Z ) D e v i c e Si z e [ 0 - 0 F F F F F F F I 1 I ]
(UN) Unit Nunber of this Device lO-0FFHl
( U l N ) U n í t I n f o N a r n e( 1 - 1 - 6 C h a r s l
(RUT) Request Update Timeout [0-0FFFF!]
(NB) Nunber of Buffers [nonrandom : O/rand - ],-0FFFFHI
(CUP) CommonUpdate [Yes/No ]
(MB) Max Buffers [0 - OFFH
]
Enter [Abbreviation
: f nens 

- new_value / Abbreviation

RAM
RO
YES
YES
0200H
0100000H
OH
UINFO-RAI'I
OH
02H
YES
OFFH

? / H ]

FigureB-41. InsertedRAM Disk DUIB InformationScreen
As mentionedearlier,addingcertaindevicesrequiresadjustments
to the memoryfor the
systemand the Free SpaceManager.Use the memorymap in FigureB-42to determine
whereyou will increasethe memorylocationsfor the systemand decrease
the memory
locationsfor the Free SpaceManager.FiguresB-43throughB-4tìshowthesechanges.
You will noticethat you cannotsimplyinsertthe memorylocationsnee " to viewthe "Memoryfor System"screenshownin FigureB-43.

ICU UseIJsGuide

B-27

EXAMPLE SYSTEMCONFIGURATION

16 M bytes

16 M bytes
CnM

S D MM o n i t o r
S D MS t a r t

Fc0000H

FC0000H

M^6 i r^r

S D MSt a r t

- - -OTFFFFH
Unused Address Space

4 M bytes
RAI'f Dr iver

Free Space Manager
I M bytes -

I'rao

Qnenp

M,n.oèr

5FFFFH-

----55000H
Sub- Systems
I 0 0 0 H- -

Sub- Systerns

2C00H

2000H
M S CR e s e r v e d

MSC tJakeuo

1200H

1000H

2690H-------I3Ba-f71210H
1200H

Reserved Memory
iSBC 220 l,,takeup

1180H

M S CR es e r v e d

1010H
1000H

MSC l.Iakeup

SDM DATA

SDM DATA
OH

2 8 6 1 2. D E F M a p

isBc 208
Reserved Memory

OH
S A U z 8 6D
. EF XaD

Figure B-42. The Original and Modified Memory Maps

B-28

ICU Usefs Guide

EXAMPLESYSTEMCONFIGURATION

(MEMS)
sYs
s
[1] YS

Menory for

System

- ì o w l 0 - O F F F F F F H I h, i g h [ 0 - O F F F F F F H ]
02000H,
059FFFH

[ 2] s Y s
Enter Changes [Nurnber : new_value /
^d
:
I 

^D

Number /

? / H ) :

Figure B-43. Memory for SystemScreen
To deletethe defaultvaluesrype"^d 1 ". This entryproducesthe screenshownin
FisureB-44.

(MEMS)
sYs
[1] sYS

Memoryfor Syst em
* l o w { 0 - O F F F F F F HhIÍ,g h l 0 - O F r F F r F H l

Enter Changes lNumber : nevr_value /
: I - 3000h,5ffffh


^D

Nltnber /

? /H]:

Figure B-4.1.Changingthe Memory for SystemScreen
From the memorymap in FigureB-42,you find the lowerand upperaddrcsslimits for
systemmemoryand configurethem by entering'l = 3000h,5ffffh", as shownin
FigureB-44. This producesthe "Memoryfor System"screencontainingthesechanges,
shownin FìgureB-45.Notethattheuppervalue(5FFFFII)wasselected
to ensure
adequatememoryspace.If savingmemoryis a concern,cxaminethe .mp2file producecl
duringsystemgeneration(G[enerate]command)to find out the actualsystemsize. Once
the actualsystemsizeis determined,adjustthis addressaccordingly.

ICU User'sGuide

B-29

EXAMPLE SYSTEMCONFIGURATION

(MEMS)

[r]

SYS
sYs

Menory for

systèn

- 1 o w I O - o F F F F F F H ] ,h l g h I o - o F F F F F F H ]
o5FFFFH
03000H,

[2] sYs
^D
Nunber / ? / H I :
Enter Changès [Number * ner,r_value /
: f nenf 

Figure B-45. NewMemory for SystemScreen
Now,you mustchangethe memoryfor the FreeSpaceManager.Enter "f memf < CR > "
to viewthe "Memoryfor Free SpaceManager"screenasshownin Figure8-46. Follow
asshownin Figures8-46 throughB-48.
the stepsfor changingmemoryaddresses,

(MEMF)
Fsu
[1] FsM
[2] FsM

Menory for

Free Space Manager

- l o w [ 0 - O F F F F F F H ] ,h i g h I O - O F F F F F H ]
:
O7FFFFzu
05A000H,

^D
E n t e r C h a n g e s [ N u r n b e r* n e \ { _ v a 1 u e/
Nunber /?
^d
:
1 

/H):

Figure 8-46. Memory for Free SpaceManagerScreen

(MEMF)

rsll

[ 1] rs],f

Memory for

Free Space Manager

- 1ow [0-OFFFrFrH],high lO-0rrFFFHl

^D
E n t e r C h a n g e s [ N u m b e r: n e w _ v a 1 u e/
Nunber /?

: I - 600O0h,02fffffh

/Hl:

Figure B-47. Changingthe Memory for Free SpaceManagerScreen

B-30

ICU Usefs Guide

EXAMPLESYSTEMCONFIGURATION

(MEilf)

Menory for

FsM
[1] FSr.f

Free Space Manager

- low [0-0FFFFFFH], high [0-OFFFFI1{]
060000H,
o2FFFFrir

[2] FsM
^D
E n t e r C h a n g e s [ N u m b e r: n e w _ v a l u e /
N u r n b e r/ ?
: f gen 

/H]:

Figure B-48. New Memory for Free SpaceManager Screen
Now that the systemand Free SpaceManagermemoryfor the 80286-based
multi-user
systemhavebeenchangedto matchthe targetsystem,you are readyto generatethe
system.To producethe "GenerateFile Names"screen,type"f gen " asshownin
FisureB-48.

(CEN)
File

cenerate File

Nanes

N a r n e[ 1 ^ - 5 5 C h a r a c t e r s ]

(ROF) ROMCode File

Nane

(RAF) RAl,fCode File

Narne

/BoOT/RMX286 . Rol,r

/Boor/28612.286
Enter
n e w _ v a L u e/ A b b r e v i a t l o n
fAbbrevlation:
' wf-/boot/
saxo286 . 28 ó 
: 

? / H ] :

Figure B-49. GenerateFile NamesScreen
On the "GenerateFiÌe Names"screen,sho\rynin Figure B-49,you must specifythe
pathnameof the newbootloadable
file you will be generating.For this application,the
file is SAM286.286,
and it will be a RAM codefile name. Enter "raf= /boot/sam28ó.286
". To producethe changed"GenerateFile Names"screen(shownin FigureB-50),
entera carriage
return""
You are now readyto startthe generationphaseof the ICU. To do thisyou mustfirst
return to the ICU menuscreen.Enter "c " on the screenshownin FigureB-50.
This entryproducesthe ICU menuscreenshownin FigureB-51.

ICU Usefs Guide

B-31

EXAMPLESYSTEMCONFIGURATION

(CEN)
File
(ROf)

File

Cenerate

Names

Narue [1-55 Characters]
ROM Code File

Name

. Ror.r
/Bo0T/RMX286
(RAF) RAM Code File

Name

/Roor/sM286.286
Enter

lAbbreviatíon:

new_value / Abbreviation

? / H ) :

: c 

Figure B-50, NewGenerateFile NamesScreen

For general help in any screen enter H .
The following

c o m m a n d sa r e a v a i l a b l e

Change
Generate
LisÈ
Save
Qul t
Exit
Replacè
Detail-Level
Backup
ENTER COMMAND
: g 

FigureB-51. ICU Menu Screen
Enteringthe G commandon the ICU menuscreenproducesthe screenshownin Figure
B-51,startingthe generationprocess.As shownin FigureB-52,the displaypromptsyou
for the prefixyou wishto assignto all the filesgeneratedby this submitfile. For this
example,type"s < CR > ". The ICU echoesthe prefixand informsyou of the progressof
the generationprocess.

B--ì2

ICU Usefs Guide

EXAMPLE SYSTEMCONFIGURATION

E N T E Ra l e t t e r

to be used as prefix:

s 

The preffx letter is: S
Beginnlng NUCLEUSFile Ceneration
.....,..DONE
Beginning BIOS file

GeneratiÒn

;;;i;;i;;';ióirii.c""..";i;;

D.NE

"'"

........DONE
Beglnning LOADERflle

;;;i;;i;;';i
:

'' " "
: :

Beginning

Generation

iii" c"""."iion
'
'
..:: :: : ^
UDI FiIe

;;;i;;i;;';;;

"'

Generat ion

Fii; ó;;;;;;i;;

': ''^.'':
:'':
-:-"^
B e g i n n i n g S u b n ít F i 1 e C e n e r a t i o n

" "D.NE
'''

DoNE

' "' D'NE
""'

DoNE

Beginning Build Fíle ceneration
NOTE: To Generate your systern subnit

........DONE
SAM286.CSD

For general help in any screen enter H .

The following

comrnandsare available

Change
Gènerate
Llst
Save
QuiÈ
Exi t
Replace
Detai I -Leve1
Backup
ENTER COMMAND
: e 

FigureB-52. GenerationPhaseICU Screen

ICU Usef s Guide

B-33

EXAMPLESYSTEMCONFIGURATION

When the generationprocessis completed,the ICU displaysthe nameof the resulting

thesubmit
fileisSAM286.CSD.
TheICUthencontinues
submit
file. In thiscase,
automatically
to the ICU menuscreenwhereyou shouldenter"e " to exit the ICU
antl savethe definitionfile. Upon receivingthe Exit command,the ICU informsyou that
the definitionfile hasbeenwritten. It issuesthe followingmessage
beforereturning
controlto the commandlìne:
The Deflnition

File

has been written

to file:

SAM286.DEF

You are now readyto invokethe SUBMIT file SAM286.CSD.You do this by entering

The SUBMIT file assembles
all the configuration
filesgeneratedby the ICU and binds
the objectfileswith all the librariesrequiredby the subsystems.
It then buildsthe system.
FigureB-53showsa listingof the outputfrom the SUBMIT file. You may noticewarning
messages.
The warningmessages
are normaland canbe ignored.Only error messages
mustbe heeded.

B-34

ICU User'sGuide

EXAMPLE SYSTEMCONFIGURATION

NUCLEUS
- : I A N G : A S M 2 8 6S N T A B LA. 2 I
TRI'ÍXII iAPX286 MACROASSEMBLER,V1 .3
Copyright 1982 lnte1 Corporation
NO ERRORS
ASSEI.ÍBLYCOM?LETE, NO I.'ARNINCS
,
- : IANG:ASM286 SNUCDA.A2E
iRMX II IAPX286 MACROASSEMBLER,Vl ,3
copyrighÈ 1982 Incel Corporation
ASSEMBLYCOMPLETE, NO WARNINGS, NO ERRORS
- : I A N C : A S M 2 8 6S N J O B.CA 2 8
IRMX II IAPX286 MACROASSEMBLER,Vl .3
C o p y r l g h t 1 9 82 I n t e l C o r p ó r a t i o n
ASSEMBLYCOMPLETE, NO WARNTNGS, NO ERRORS
- : I A N G : B N D 2 8 6&

* * O B J E C T i S N U C I . L N KN) O D E B UN
CO T Y P ES E G S I Z E ( S T A C K ( 2 O) O&)
** NoLOAD NoPUBLICSEXCEPT(RQ_ni1_os_ext , &

i R M X I I i O P X Z E EB I N D E R ,V 3 , 2
Copyright 1982, 1985 Intel Corporation
COMPLETED,
PROCOSSING
- : I - A N GB: N D 2 8 6&

2 WARNINGS,

O ERRORS

:
**OBJ ECT( SNUCLS
NOTYPE&
. LNK) NODEBUG
** NoLOADSECS
rZE ( STACK(200) )
i R M X I I I A P X 2 8 6 B I N D E R ,V 3 . 2
copyright 1982, 1985 Intel corporation
COMPLETED.
PROCESSING

1 WARNING,

O ERRORS

Figure B-53. Output of Submit File for SAM28ó.CSD

ICU UseCsGuide

B-35

EXAMPLE SYSTEMCONFIGURATION

nînc
. ;
- : I A N G : A S M 2 8 6S I T A B L .A 2 8
1RMXII 1APX286MACROÀSSE},IBLER,
V1.3
Copyrtght 1982 Intel CorporaÈlon
ASSEI,ÍBLY
COMPLETE, NO IIARNINGS, NO ERRORS
- : I A N G : A S U 2 8 6S I C D E V4. 2 8
iR}D( II iAPX286 MACROASSEMBLER,V1.3
Copyright 1982 Intel Corporaîrlon
ASSEMBLYCOMPLETE, NO WARNINGS, NO EPAORS
- : I - A N G : A S [ 2 8 6S I T D E V . A 2 S
iRMX II iAPX286 MACROASSEHELER,V1.3
Copyright 1982 Intè1 Córporation
ASSEI,IBLYCOMPLETE,
- : L A N G : b n d 2 8 6&

NO Í.IARNINCS
,

NO ERRORS

**OBJECT (SIOSI.LNK) NODEBUG
NOTYPE
&
** NOLOADNOPUBLICSEXCEPT(rqaiosinittask

, &

iRMxrr iepxzeoBTNDER,
v3.2
CopyrighÈ 1982, 1985 Intel

Corporarion

PROCESSING
COMPLETED,
- : I A N G : b n d 2 8 6&

1 I.IARNING,

O ERRORS

* * O B J E C T ( S T S C . L I T K ) N O D E B UN
GO T Y P ES E C S I Z E ( S T A C K ( O ) ) &
** NOLOADNOPUBLICSEXCEPT(TSCINITIO, &

i R } , l XI I i E T X Z S OB I N D E R ,V 3 . 2
Copyrlght 1982, 1985 Incel Corporarion
PROCESSING
COMPLETED.

O IIARNINCS,

O ERRORS

FigureB-53. Output of SubmitFile for SAM286.CSD
(continued)

B-36

ICU UseIJsGuide

EXAMPLESYSTEMCONFIGURATION

- : L A N G : b n d 2 8 6&

* * O B J E C T ( S I O S . L N K ) N O D E B UN
GO T Y P ES E C S I Z E ( S T A C K ()O ) &
** N0L0A! NoPUBLICSEXCEPT(rqaiosinittask
, &

1 R M XI I i E P X Z E EB I N D E R , V 3 . 2
Copyright 1982, i985 rnLeI corporation
COMPLETED.
PROCESSING
- :

O I.JARNINGS,

O ERRORS

EIOS

- : I - A N GA: S M 8
26 SETABL.A2S
V1 .3
tRIO( I1 1APX286MACROASSEI"IBLER,
Copyright 1982 Intel Corporation
ASSEMBLYCOMPLETE, NO WARNINGS, NO ERRORS
- : L A N G : A S M 2 8S
A 28
6 E D E V.C
V1 ,3
iRMX II 1APX286MACROASSEì'IBLER,
Copyrlght 1982 Intel Corporation
ASSEMBLYCOMPLETE, NO IIARNINCS, NO ERRORS
- : I A N G : A S M 2 8 6S E J O B .C4 2 8
A S S E M B L E RV,1 . 3
iRMX II iAPX286 MACRO
Copyrlght 1982 Intel Corporation
ASSEMBLYCOMPLETE, NO WARNINCS, NO ERRORS
- : L A N G : B N D 2 8&
6

**OBJECT( SEIOSl.LNK) NOLOAD
N O D E B US
GE G S I Z E ( S T A C K ( O )&)
** NOPUBLICS
ExcEPT(rqeiosinittask , &

í R M X I I i A P X 2 8 6 B I N D E R ,V 3 . 2
Copyright 1982, I985 Intel Corporation
COMPLEîED.
PROCESSING

1 WARNING,

O ERRORS

(continùed)
FigureB-53. Output of SubmitFile for SAM2116.CSD

ICU Uset'sGuide

B-37

EXAMPLESYSTEMCONFIGURATION

- :IANG:BND286
6

**OBJECT( SEIOS.LNK) NOLOADNODEBUG
SEGSIZE(STACK(O)
)
i R M X I I 1 A P X 2 8 6B I N D E R ,V 3 . 2
Copyright 1982, L985 Intel Corporarlon
PROCESSING
COI{PLETED.
- ;

O I.IARNINGS,

O ERRORS

I,OADER

- :lANc:ASl'f286 SLTABL.A2S
iR!.o( II 1ApX286 MACROASSEUBIER,V1 .3
Copyrlght 1982 Intel Corporarlon
ASSEI'TBLYCOMPLETE, NO WARNINGS,
- :I,ANG:PLtl286 SLCONF.
P28

NO ERRORS

1RMXII PL/N-286 COUP1LER
V2.5
Copyright Intel Corporarlon 1982, 1983, 1984, 1985
PL/t4-286 CoMPIIATTONCoMPLETE.
0 ITARNTNCS,

0 ERRORS

. : I , A N G : B N D 2 8&6

,
**oBJECT (SLOADR.
LNK) NOLoADNODEBUC
SEGSTZE(STACK(0)
) &
** NOPUBLICSEXCEPT(asynchload,
&

tRMxrr iarxzasBTNDER,
v3.2
Copyrighr 1982, l-985 lnrel

Corporation

PROCESSINC
COMPLETED.

O WARNINGS,

O ERRORS

I.TT

- irolrc,pr-Mzee
p28
sHcoNF.
íRlo( II PL/tt-286 CoMPILER
V2.5
Copyrlght Intel Corporarion 1982, 1983, 1994, 1985
PL/\I-286 CoMPITATIoN
CoMPLETE.
1 WARNTNC, 0 ERRORS
Figure B-53. Output of Submit File for SAM2E6.CSD(continued)

B-38

ICU Use/s Guide

EXAMPLE SYSTEMCONFIGURATION

- :l3NG:BND286 &

**OBJECT( SHI .II.IK) NOLOADNODEBUG
SEGSIZE(STACK(O)
) &
** NoPUBLICSEXCEPT
( rqhÍ lni ttask,
&

v3.2
rRlo(rr iepxzeeBTNDER,
Copyright 1982, 1985 Intel

corporation

PROCESSINC
COMPLETED.

1 WARNING,

O ERRORS

CLI
IANG:BND286

&

**OBJECT(SCLI.LNK) NOLOADNODEBUG
&
* * S E G S I Z E( s T A c K ( 0 2 4 0 0 H)) N o P U B L I C SE X c E P T
(hcl iinit)
1 R M XI I í A P X 2 8 6 B I N D E R , V 3 . 2
Copyrlght 1982, 1985 lnlel Corporacion
COMPLETED.
PROCESSINC
-i

O WARNINCS,

O ERRORS

UDI

- ; IANG:ASI'Í286SUTABL.A2S
IR},IX II 1APX286 I.IACROASSE},ÍBLER,VI , 3
Copyrtght 1982 lntel CorporaÈion
ASSEMBLYCOI'IPLETE, NO LIARNINGS, NO ERRORS
- : I A N G : B N D 2 8 6&

**OBJECTi SUDI. LNK ) NODEBUG
NOTYPESEGSIZE(STACK(O)
) &
**NoLOAD NoPUBLICS EXCEPT
(U_Allocete ,
&
.
I R M X I I i A P X 2 8 6 B I N D E R ,V 3 . 2
Copyright 1982, 1985 Intel Gorporation
COMPLETED.
PROCESSINC

O WARNINGS,

O ERRORS

Figure B-53. Output of Submit File for SAM286.CSD(continued)

ICU UsedsGuide

B-39

EXAMPLE SYSTEMCONFIGURATION

'

i

-i

sDB

- : I , A N G : A S M z 8S
A .2 8
6SDBCN
iRMX 1I iAPX286 MACROASSEMBLER,Vl.3
Copyright 1982 Incel Corporatlon
ASSEMBLYCOMPLETE, NO WARNINGS, NO ERRORS
. : I.ANG:BND286 &

**oBJECTi SSDB.r,Ì.rK) ss(STACK(0)) NOI,OAD
**NOPUBLICSEXCEPT
( rqsdb ini ttask )
i R M X I I í A P X 2 8 6 B I N D E R ,V 3 . 2
Copyright 1982, 1985 lnrel Corporaríon

&

PROCESSING
COMPLETED.

O ERRORS

- ;

O I.'ARNINGS,

BUILD

- :IANG:BLD28&
6

ì**

orincr 17ru,rxz
B6/rcu/sùi2f,6
.286 ) NoDEBUG
NorypE &
/ s$'r286

**
BUILDFILE( SA.I{2
86 . BLD)
iRMX 11 iAPX286 SYSTEM
B U I L D E R ,V 3 . 2
CopyrÍght 1982, 1985 Intel Corporarion
PROCESSING
COMPLETED.
- E N D S U B M I Ts a m 2 8 6 C
. SD

1 WARN]NG,

O ERRORS

FigureB-53. Output of SubrnitFile for SAM286.CSD
(continued)
This endsthe outputfrom the SUBMIT file SAM286.CSD.To bootstrapload this system,
preparea third-stagebootstraploaderby entering

This placesa copyof the device-specific
third-stage
bootstraploaderin a boot file named
which
is
required
ro
bootstrap
load
the bootablefile for this example
/BOOT/SAM286,
confisuration.

B-40

ICU User'sGuide

EXAMPLE SYSTEMCONFIGURATION

to the
you canminimizethe memoryassigned
If conserving
memoryis a consideration,
systemby examiningthe segmentmap of file /BOOT/SAM28ó.MP2 createdduring the
build process.By addingthe segmentlimits in the segmentmap you can calculatethe
precisememoryaddresses
requiredby the systemand the Free SpaceManager.
Rememberthat when you configuredthe ICU, you estimatedthe memory required,
madeduringdevelopment.Now with the exact
leavingextraroom for anychanges
addresses
availableyou canminimizethe memoryyou havereserved.For the rest of this
exampleassumethat thiscalculationresultedin a systemthat can residein addresses
3000Hto 59FFFH. To minimizethe memory,you mustinvokethe ICU with the
definitionfile you havejustcreated.Invokethe ICU by entering

iRMX II Inreractive Configuration Utility
CopyrlghÈ  Intel Corporation

FÒr Extended iRMX 1I,



For general help in any screen enter H .
The fol-lowlng

conrnands are availabl.e

Change
Generate
Llst
Save
Quit
Exl t
Replace
Detell - LeveI
Backup
ENTER COMI'ÍAND: c nems 

FigureB-54. Initial ICU Screen
This entryproducesthe initial ICU screenshownin FigureB-54. Entering"c mems
" takesyou to the "Memoryfor System"screen,shownin FigureB-55,whereyou
can adjustthe memoryreservedfor the system.Usingthe MP2 file you can determine
leavingmore
that the systemrequireslessmemorythanyou had previouslyreserved,
you mustchangethe memory
memoryfor the Free SpaceManager.Consequently,
that the ICU doesnot accept
through
60.
Remember
screens,
asshownin FiguresB-55
Therefore,you mustperformthe separatestepsof
overlappingmemoryaddresses.
andviewingthe new screen.
deletingthe existingmemorylocations,makingyour changes,

ICU Usefs Guide

B-41

EXAMPLE SYSTEMCONFIGURATION

(MEMS)
sYs
[1] sYs

Memory for

systèm

: 1ow [0-0FFFFFFH], high [o-OFFFFFFH]
03000H,
05FrFFH

[2] sYs

Enter Changès [Nurnber : new_value /
:^d I 

^D

Nunber / ? / H ] :

Figure B-55. Memory for SystemScreen

(MEMS)
sYs

[ 1] sYS

Mènory for

System

- 1 o w [ O - 0 F F F F F F H ] ,h i g h I 0 - O F F F F F F H ]

Enter Changes [Number - new_value / "D Nurnber /
;l- 3000h,5Bfffh 

? / H ] :

Figure B-56. Adjusting the Memory for SystemScreen

(MEMS)

lrl

SYS
sYs

[2] sYs

Menory for

System

: L o l r I 0 - O F F F F F F H ] ,h i g h I O - 0 F F F F F F H ]
03000H,
059FFFH

Enter Changes [Nurnber : ner{r_value /
:f nenf 

^D

Nurnber / ? / H ] :

Figure B-57. Final Memory for SystemScreen
Onceyou havechangedthe "Memoryfor System"screen,you are readyto changethe
"Memoryfor Free SpaceManager"screen.Onceyou knowthe systemmemory
requirements,
the Free SpaceManagergetsthe rest of the memory. you canassignthe
Free SpaceManagermore memorythanyou had originallyassigned
sinceyour system
wassmalìerthanyou expected.Changethe "Memoryfor FreeSpaceManager',screen,as
shownin FiguresB-58through8-60.

B-42

ICU Usefs Guide

EXAMPLE SYSTEMCONFIGURATION

(MEUF)
FsM
[1] rsu

Memory For Free Space Manager
- l o w [ 0 - O F F F F F F H ] ,h i g h [ O - O F F r r m ]
*
060000H,
o2FFFFFH

[ 2] F s M
Enter Changes [Nurnber : nelr_value /
^d
:
I 

^D

Nurnber / ? / H ] :

Figure B-58. Memory for Free SpaceManagerScreen

(MEMF)
FSM
[1] FsM

MemoryFor Free Space Manager
- l o w l O - O F F F F F F H Ih, i g h I O - 0 F F F F r u ]

Enter Changes lNurnber - neu_value /

:l - 5C00Oh,2fffffh

^D

Nlunber /

? / H ) :

Figure B-59. Changesto the Memory for Free SpaceManagerScreen

(MEì,fF)
FSM
F
sM
[1]

Menory For Free Space Manager
- l o w [ 0 - 0 F F F F F F H I ,h i g h [ 0 - 0 F F F F F H ]
:
05A000H,
O2FFFFFT

[ 2] r s M
Enter Changes [Nunber - new_value /
: c 

"D Nunber /

? / H ) :

Figure 8-60. Final Memory for Free SpaceManagerScreen
After you havemadeall the necessary
changesto your definitionfile, you cansavethe file
and exit the lCU. However,first you mustreturnto the ICU menuscreen(shownin
Figure8-61)by entering"c " asthe finalentryin Figure8-60. As an extra
precautionbeforeexiting,you shouldlist the contentsof our definitionfile to a file or to a
device.The List commandliststhe contentsof the screensin the systemyou havejust
generatedand enablesyou to ensurethat you havethe correctparametervaluesbefore
savingthe files.To usethe Listcommand,
enter"l  " in Figure8-61,
whichproducesthe screendisplayedin FigureB-62.

ICU User'sGuide

B-43

EXAMPLE SYSTEMCONFIGURATION

For general help
The follor.llng

in any screen enter H .

commands are available

Change
Generate
Lis t
Save
QuiÈ
Exi t
Rèplace
Detail -Level
Backup
ENTERCOMMLND
:l

san286.lst



Figure8-61. Enteringthe List Command

îhe Definltlon

File has been listed

For general help
The following

to file:

SAM286. LST

in any screen enÈer H .

commandsare available

Change
Generate
Lls È
Save
Quit
l!,x 1c

RepIace
Detall-Leve1
Backup
ENTER COMÌ,IAND
: g 

Figure 8-62. ICU Menu Screen
Enter the G commandon the ICU menuscreento startthe generationprocess,
shownin
Figure8-62. As shownin Figure8-63,the displaypromptsyou for the prefixyou wishto
assignto all the filesgeneratedby this submitfile. For this example,type "s ". The
ICU echoesthe prefixand informsyou of the progressof the generationprocess.

B-44

ICU Use/s Guide

EXAMPI-ESYSTEMCONFIGURATION

E N T E Ra l e t t e r

to be used as prefix:

s (CR)

The prefix letter is: S
Beginnlng NUCLzuSFile Generation
........DONE
Beginning BIOS File

Generation

'D.NE

"

,"ói""i"e eiói nii" ò"""i';i;;

nnÀtP

Beginning L0ADERFi.le Generation
........DONE
Beglnning HI Ftle GeneratÍon
Beglnning UDI File

CeneraÈlon

Beginning SDBFile

Generation

""

"

Fii; ;;;;;;i;"

;;;i;;i;;';;-i;

Beginning BuÍ1d File

"ói;;

The following

help

in

"'

D.NE

''""

DONE

Ceneration

i; ;;;"r.." y"", "y;;;' ;;;i;

For general

DONE

any screen enler

cornmands are

i*rà;.::it
H .

available

Change
Generate
List
Save
Qui t
Exi t
Replace
Detal1-l,eve1
Backup
ENTERCoMMAND:e(CR)

Figure 8-63. GenerationPhaseICU Screen
Now that you haveL[isted]the definitionfile and G[enerated]the systemconfiguration
files,you are readyto exit the ICU by entering"e ", asshownin Figure8-63

ICU User'sGuide

B-45

EXAMPLE SYSTEMCONFIGURATION

When the ICU hassuccessfully
savedthe definition file, it exitsafter issuingthe following
messaqe:
The Deflnfrlon

File has beén eritten

to file:

SAU286.DEF

You are now readyto invokethe SUBMIT file SAM286.CSD.Do this by entering

The SUBMIT file assemblesall the configurationfiles generatedby the ICU and binds
the objectfiles with all the libraries required by the subsystems.It then builds the system.
Refer againto Figure B-53 for a listing of the output from the SUBMIT file. You may
notice warning messages.The warning messages
are normal and can be ignored. Only
error messages
mustbe heeded.When the SUBMIT file is completedyour entiresystem
hasbeenbuilt.
The bootfilenamed/BOOT/SAM286.286containsthe entiresvstem.You are now readv
to bootloadyour newexecutable
system.

B-46

ICU User'sGuide

APPENDIX
C
PROGRAMMING
A 286.BASED
SYSTEMINTOPROMDEVICES

C.1 INTRODUCTION
This appendixprovidesexamples
of the procedures
usedto placethe iRMX II Operating
Systeminto ROM of a 286-basedsystem.All softwaregenerationdescribedassumesyou
are usingan Intel System300SeriesMicrocomputer.In this appendix,one versionof the
operatingsystemis created,but two examples
of how to proglamit into ROM exist.
The first exampleplacesthe iSDM monitorand the iRMX II BootstrapLoaderin ROM
the iSDM
alongwith the generatedoperatingsystem.A systemsuchasthis executes
monitorcodeduringthe initial power-upsequence.This exampleincludesthe iSDM
monitor and iRMX II BootstrapLoaderfor severalreasons.First,whileyou developthe
ROM-basedsystem,you canbootstrapload RAM-basedversionsof the operatingsystem
ratherthan havingto switchPROM devicesif you are usingone processorboard. Second,
the iSDM monitor, while not allowingbreakpointsin PROM DEVICEs, doesallow you to
and examinememoryin both ROM and RAM. You can usethis featureto
disassemble
determinecorrectcodeis in correctlocations.
The secondexampleeliminatesthe iSDM monitorand the BootstrapLoaderfrom the
systemsuchasthis allowsthe operatingsystemto be 32
PROM devices.A stand-alone
Kbyteslargerthan in the first example.In this example,the operatingsystemreceives
controlduringinitial power-upor reset.

C.2 REQUIREMENTS
you musthavethe followinghardware
To usethe procedures
outlinedin this appendix,
and software:
.

A systemdefinedduringconfigurationasresidingin RoM.

.

The iRMX IL3 and iPPSV1.4 lor newer)software.The iPPSsoftwarerunson an
Series-IVDevelopmentSystem.

ICU Usefs Guide

c-1

PROGRAMMINGA 286-BASEDSYSTEMINTO PROM DEVICES

.

A 286-based
systemand a Series-lVDevelopmentSystemconnectedvia the iSDM
monitor.
o An iUP-200/201UniversalProgrammer
with a 'FAST 27/K' modulewith 27512
support.
.

Four 27512EPROM devrces.

C.3 CONFIGURING
A ROM.BASED
SYSTEM
Beforeyou canprogramyour systeminto PROM DEVICEs,you mustmodifya number
of parametersin your definitionfile. Theseexamples
assumethat you startwith the Intelsupplieddefinitionfile 286l2.DEFlocaredin directory/RMX28ó/ICU.
To beginthe example,you shouldmakea copyof the definitionfile in a separate
directory.To do this,createa newdirectoryin whichto do the systemgeneration.The
definitionfile shouldhavea .DEF extension,
the boot-loadable
systemshouldhavea .286
extension,
and the systemto be loadedinto ROM shouldhavea .ROM extension.
Enteringthe threefollowingcommandscreatesa newdirectorycaltedROMSYS,attaches
you to that directory,and invokesthe ICU placinga copyof the definitionfile 28612.D8F
into the newdirectory.(This exampleassumes
your :HOME: directoryis your current
defaultdirectorv.l

As part of the configurationprocess,
you mustperformthe followingthreethingsin order
to fit the iRMX II systemdevelopedin theseexamplesinto ROM:
.

Deletethe SystemDebuggerfrom the system.

.

Replacethe iRMX II.3 CLI with theiRMX II.l CLL

.

Deleteall Intel devicedriversexceptthe 8274MPSCand MSC devicedrivers.

Havinginvokedthe ICU, you now canbeginto makethe necessary
configurationchanges.
Startby modifyingthe memoryscreensto definethe ROM memorylocationsthe system
requires.Do this by first selectingthe "Memoryfor System"screenwith the following
command:

c-2

ICU Use/s Guide

PROGRAMMING A 286.BASEDSYSTEMINTO PROM DEVICES

Enteringthe previouscommandcausesthe "memoryfor System"screento appearas
follows:

(MEMS)

[rl

SYS - los
sYs

Menory for

Syscen

I O - O F F F F F F H ] ,h r g h I O - 0 F F F F F F H ]
059FFFH
010000H,

[2] sYs
Enter

Changes lNurnber - new-value

/ "D Nurnber /

? / \

I I

Begin the alterationby deletingline I by enteringthe following command:

After the screenreappears,enter the low and high addressesto indicate the location of
the system in ROM as follows:

In this example,the systemresidesin locations0FC1000Hto 0FF7FFFH. These
locationsallowthe iSDM monitorand BootstrapLoaderto resideat locations0FF8000H
to OFFFFFFHin ROM. After enteringthe newmemorylocations,the "Memoryfor
System"screenappearsas follows:

(MEUS)

MerDory for

SysEen

S Y S - l o w [ 0 - 0 F F F F F F H,] h i g h
0Fc1000H,
[1] sYS

[O-0FFFFFFH]
0FFTFFTH

[ 2] s Y s

Enter Changes [Nurnber * new-value / "D Nwrber / ? / H 1 :

: 
Ifyou werenot to includethe iSDM monitorand BootstrapLoader,you coulduse
locations0FC1000Hto 0FFFFEFH.

ICU Use/s Guide

c-3

PROGRAMMINGA 2Iì6-BASEI)
SYSTEMINTO PROM DE\TCES

Now, displaythe "Memoryfor FreeSpaceManager"screenby entering"', as
shownin the previousscreen.You mustalsoadjustthis memoryscreenasa ROM-based
systemusesdifferentmemorylocationsthanthe RAM-basedsystemdefinedin the
definitionlile. Changethe "Memorylbr Free SpaceManager"screento containthe
memorylocations45000Hro IFFFFFH. The followingscreenshowsthe "Memoryfor
Free SpaceManager"screenafter makingthe changes:

(MEMF)
F S M:
[1] FSM
[2] FsM

Memory For Free Space Manager

Iow [ 0 - 0 F F F F F F H ] , h i g h
O45OOOH,

[ 0 - 0 F F F F F H]
O1FFFFFH

E n t e r C h a n g e s f N u r n b e r- n e w _ v a l u e /
:

^D

N u m b e r/ ?

/H):

After making changesto the memory screens,request the "Sub-systems',
screenby
e n t e r i n gt h e f o l l o w i n gc o m m l r n d :

(suB)
(UDI)
(HI )
(AL)
(RFA)
(EIo)
(BIO)
(SDB)
(OE)

S u b- s y s t e m s

Universal Developmenr Interface
H u m a nI n r e r f a c e I y e s / N o ]
A p p l i c a t i o n L o a d e r I Y e s / N o]
Renore File Access lyes/Nol
Exrended l/0 System [yes/No]
Basic I/0 System Iyes/No]
System Debugger IYes/No]
OS Extension IYes/No]

Enter fAbbreviation
:

Iyes/No]

: new_value
/ Abbreviation

YES
REQ
REQ
NO
REQ
REQ
YES
NO
? /H

] :

Here,you mustdeletethe SystcmDebuggerbecause
of sizeconsiderations.
Deretethe
SDB by enteringthe followingcommand:

c-4

ICU Use/sGuide

PROGRAMMINGA 28ó.BASEDSYSTEMINTO PROM DE\TCES

Next,requestthe "HumanInterface"screenby enteríngthe followingcommand:

Changethe residentinitial program(CLI) by enteringthe followingcommand:

Both the iRMX II.3 CLI and the iRMX II.2 CLI are considerably
largerthan the iRMX
II.1 CLI and cannotbe usedin this exampledue to sizerestrictions.
Next, requestthe "Intel DeviceDriver" screenby enteringthe following command:

Delete all devicedrivers exceptthe 8274and MSC drivers by enteringthe following
commands:

Do you want any/more

Do you ltant

iSBC 544A DEVICEs?

any/more Terninal

Do you want any/more Line

Corununications

Printer

for

Controller

Devices?

iSBC 286/10 DEVICEs

Now, requestthe "Nucleus"screenby enteringthe followingcommand:

You mustdefinethe numberof GlobalDescriptorTable(GDT) entriesyour ROM-based
systemneeds.BecauseROM spaceis limited,the numberyouentershouldbe the
minimumnumber. Enter the numberoî real GDT entriesrequiredwhenthe systemis
copiedand expandedin RAM usingthe "ROM Code"screen.Also,becausethe System
Debuggerwaspreviouslydeletedfrom the configuration,
you mustchangethe Default
ExceptionHandlerparameterto somethingother thanSDB.

ICU UsePsGuide

c-5

PROGRAMMING A 2E6-BASEDSYSTEMINTO PROM DEVICES

Chansethe "Nucleus"screenas follows:

(MJc)

Nucleus

2000

(NGE) Nr.[nber of GDT Entries [4a0 - 8190]
(NIE) Nunber of lDT Entries 10-256)
(PV) Parametar Validation
IYesr/No]
(RoD) Root objéct Dítéctory Size f0
38401
(DEH) Default Exception Handler [Yes/No/SDB/User ]
(NMI) Nl.fl Exception Handler I Yes/No/I gnore / J ob/ SDIIN seî I
(NEB) NHI Enable Byte [0-255]
(STK) Exception Handler for stack Exception, Bad TSS and
Double Faulc [Yes/No/JoblsDB ]
(NEH) Nane of Ex Handler ObJect Module [1-55chs]

128
REQ
50
SDB
ICNORE
4

JOB

(EM) Excèptión Mode INever/Program/Environ/Al l ]
( L S E ) L o s G D T / L D TS l o t E x c l u d e d f r o m F S M [ 4 4 0 - 8 1 8 9 H / N o n e : 0 ]
( H S E ) H i g h C D T / L D TS l o t E x c l u d e d f r o n F S M 1 4 4 0 - 8 1 8 9 / N o n e - 0 1
(RRP) Round Robin Priority Threshold l0-2551
(RRT) Round Robln Time Quota [0-255]
(RIE) Report Inltlalization
Errors IYeslNo]
(MCE) Maxinuxn Data Chain Elenents [0-OFFFFH]
(CS) Nucleus CoÍununicatíon Service [Yes/No]

NEVER
0
0
140
5

YES
080H
YES

E n t e r [ A b b r e v i a c i o n - n e w _ v a l u e/ A b b r e v i a t i o n ? / H ) :
: n g e - 460 
: d e h - Job 
: f rorn 

Onceyou haveupdatedthe "Nucleus"screen,viewthe "ROM Code"screento changethe
parametersto matchthe ROM-basedsystem.Setthe RAG parameterto FC1000Hto
matchthe startingaddressdefinedon the "Memory for System"screen.Alwaysplace the
GDT at the first memorylocationreservedfor the system.Setthe RAS parameterto
2000Hto allowenoughmemoryfor the controllersin the system.Controllersare always
assigned
addresses
below2000H. Finally,setthe RIA parameterto FC0000H,the
startingaddressof processor
boardROM. Changethe "ROM Code"screenasfollows:

c-6

ICU Uset'sGuide

PROGRAMMINGA 2E6-BASED
SYSTEMINTO PROM DEVICES

(R0ì,1)

R0!{ code

(SYR) System ln ROM [Yes/No]
( M G ) R O MA d d r e s s o f M a s t e r - G D T I 0 - O F F F F F F H ]
(NSG) Nunber Slots in Real CDT [440-81901
(RAS) RAtf Start Address for Systen IO-OFFFFFH]
(RIA) RoM lnítializatlon
Code Address [0-OFFFFFFH]
(RIP) RoM Inítlalizaclon
Procedure IL - 45 chars]
Enter [Àbbreviatlon
: syr-yes 

- nes_value / Abbrevlatlot

N0
0H
7024
0H
0FF0000H

? / H ):

: rag:fcloooh 
: ras-02000h
:rla-fc0000h



Now,requestthe "GenerateFile Names"screenby enteringthe followingcommand:

The "GenerateFile Names"screenis whereyou define the pathnameof the file
containingthe ROM-basedsystem.Enter the pathname:$:ROMSYS.ROMas shown
below:

(cEN)
File

Generate File

Names

Name Il- 55 Characters]

(ROF) RoM Code File

Name

(RAF) RAM Code File

Narne

. RoM
/Boor/RMX286
/Booî/28612.286
new*value / Abbreviatlon
Enter
[Abbrevlation:
: rof-: $: ronsys,ron 
: c 

? / H ) :

Next,entera "c " to returnto the ICU menuscreen.

ICU Uset'sGuide

c-7

PROGRAMMINGA 286-BASED
SYSTEMTNTOPROM DEVICES

THESYSTEM
c.4 GENERATTNG/BU|LD|NG
You are now readyto generatethe definition files and build the system.The last step oî
the previoussectioncausedthe ICU main screento appear. From this screen,enter the
Generate(G) commandto generatefiles.

For general help
The followlng

ln any scteen enter H (CR).

commandsare avallable

Change
Generate
List
Save
Qul t
ExiE
Replace
Detail-Level
Backup
ENTER COMMAND
:C 

After entering"G " with no prefix,the ICU informsyou aseachlayeris generated
(seeFigureB-35for an example).Whenthe systemhasbeengenerated,
the ICU returns
to the main menuscreen.
Enter the Exit (E) commandto write the definitionfile and exit the ICU as follows:

After enteringthis command,the ICU informsyou that the definitionfile hasbeen
written. It issuesthe following messagebefore returning control to the commandline:
The dafinítion

file

has been \rritten

to file:

ROMSYS.DEF

You are now readyto invokethe SUBMIT file ROMSYS.CSDthat buildsthe system.
The ICU createdthis SUBMIT file aspart of the generationprocess.Executionof the
SUBMIT file generates
the applicationsystemwith the pathname:$:ROMSYS.ROM.
Executionof this SUBMIT file alsogenerates
the map file ROMSYS.MP2,whichconrains
informationcrucialto configuringa "tight"system.The map file ROMSYS.MP2also
containsthe followingwarningwhichyou can safelyignore:

c-8

ICU Uset's Guide

PROGRAMMINGA 286-BASEDSYSTEMINTO PROM DEVICES

I,IARNINC119: SEGMENTS
OVERTAP
L O WA D D R E S S : 00Fc0000H
H I G H A D D R E S S : 00Fc0E04H

After the submitfile completesexecution,
usethe DOWNCOPY commandto copythe
resultingfile ROMSYS.ROMto the file :Fl:ROMSYS.ROMon the harddisk of the
Series-IVDevelopmentSystem.This assumes
you haveusedthe LNAME commandon
the Series-IVsystemto definethe logicalname:Fl for rhe directoryinto whichyou will
copy the file.

Now that the systemhasbeengenerated,
you caneitherprogramthe PROM devicesto
includeonly the operatingsystemby itself(stand-alone)
or you canincludethe iSDM
monitor. The nextsectionsdescribethesedifferentDrocesses.

C.4.1 Includingthe |SDM"Monitorand the BootstrapLoaderin
the PROMDevices
This sectionexplainshow to includethe iSDM monitorand iRMX ll BootstrapLoaderas
part of the operatingsystemthat residesin ROM. With this type of system,the iSDM
monitorcodeexecutes
whenthe systemis poweredup. In order to createa systemthat
includesthe iSDM monitorand the BootstrapLoaderyou mustpreparetwo files;one file
for eachpieceof software.
First you mustgeneratea versionof the iSDM monitorfor the iSBC286/10(A)board.
The iSDM monitor is normallyinstalledon iRMX lI systemsin the directory/SDM.
Sincethe BootstrapLoaderis to be includedin the PROM devicesalongwith the iSDM
monitor,be sureyou invokethe BOOTSTRAPmacroasfollowswhenyou configurethe
iSDM monitor:

The iRMX II.3 iSDM monitoris alwayslocatedat address0FF8000H.The iSDM
monitorplacesvaluesinto the resetvectorand receivescontrolon power-upor reset.
Refer to the iSDM Systetn
DebugMottitor User'sGuide for more information on
generatingthe iSDM monitor.
Next,generatea versionof the iRMX BootstrapLoaderfirst stage.Assignyour current
defaultdirectoryto be the BootstrapLoaderdirectoryby enteringthe following
command:

ICU User'sGuide

c-9

PROGRAMMINGA 286.BASEDSYSTEMINTO PROM DEVICES

Due to the limited amountof spaceleft overfor the Bootstrapl-oader,you cannot leave
you mustedit the first stage
all availabledevicesselectedwithin BS1.A8ó.Consequently,
configurationfile, BS1.A86to containonly the driverincludedin the ROM system,the
MSC devicedriver. You do not needîo changeanyotherparametersin BS1.A86.You
mustalsoedit the first stageconfigurationSUBMIT file (BSl.CSD)to link in only the
MSC file.
Executethe BootstrapLoaderSUBMIT file by enteringthe followingcommand:

Completedetailson theseactionsare availablein the Extended|RMX II BootstmpLoader
Reference
Manual.
At this point,the filesfor the iSDM monitorand the BootstrapLoaderare generated.
of the hard
to thefiles:F1:BSland :F1:286l0A
files,BSI and28610A,
Copythe resulting
command.
This
disk of the Series-IVDevelopmentSystemusingthe DOWNCOPY
you haveusedthe LNAME commandon the Series-IVsystemto define
exampleassumes
the logicalname:F1:as the directoryinto whichyou will copythe files. The following
commandsmovethe two files:

The next six sectionsdescribehow to program the PROM devices.

C.4.1.1 SettingUp the iUP 201 PROM Programmer
Performthe followingthreestepsto set up the iUP 201PROM Programmer:
1.

Make surethat the RS-232Aline is connectedfrom the iUP 201programmerto the
Series-IVsystem.

2.

Insertthe'FAST 27K'moduleinto the iUP 20128-pinsocketand turn on the power
to the iUP 201 UniversalProgrammer.

3

Pressthe ONLINE buttonon the iUP 201front oanel.

WARNING
While followingthe stepsoutlinedin this section,you mustcloselyadhere
to any warningsor cautionsgiven in the iUP-200/201UniversalProgrammer
User'sGukle.

c-10

ICU Uset'sGuide

PROGRAMMINGA 286.BASEDSYSTEMINTO PROM DEVICES

C.4.1.2 Formattingthe OperatingSystem PROM File
Invoke the iPPSsoftwareand issuethe followingcommandsto format the two PROM
imagefiles. Becausethis exampleincludesthe iSDM monitor and Bootstrapl,oader as
part of the operatingsystem,the memory rangefor the operatingsystemgoesfrom
OFC0000Hto 0FF7FFFH. lf you wereprogrammingonly the operatingsystem,the
largestmemoryrangefor it wouldrangefrom 0FC0000Hto OFFFFEFH.

. IPPS



INTEL PROMPROGRAM},IING
SOFTI,JARE,
VX. Y
COPYRIGHTINTEL CORPOMTIONyears
PPS>type 27512 
PPS>lnltlallze 286 
(0FC0000h, 0FFTFFFh) 
PPs>format :fl:romsys.ron
LOGICALUNIT ( BIT:1 , NIBBLE:2 , BYTE-3, N*BYTE-4)
LU -3 
I N P U T B L O C KS I Z E ( N B Y T E S )
N :2

OUTPUTBLOCKSIZE (N BYTES)
N -1 .
INPUT BLOCKSTRUCTURE.
NUMBEROF INPUT LOGICALUNITS :OO2
LSB

l o ol 0 1|
**ri*-ot

ourPUTLocrcALuNrrs :ool

O U T P U TS P E C I F I C A T I O N( < C R > T O E X I T ) :
*0 to ; fl: romsys , evn 
OUTPUTSTORED
*L to : fl: ronsys .odd 
OUTPUTSTORED

* 
PPS>

The parametersin parcnthesis
on the FORMAT line tell the IPPSsoftwarewhat memory
rangeof codeyou wishto programinto PROM devices.

ICU Use/s Guide

c-ll

SYSTEMINTO PROM DEITCES
PROGRAMMINGA 2II6-BASED

C.4.1.3 Programmingthe Operating System into PBOM Devices
To actuaUyplacethe generatedsysteminto the PROM devices,beginby insertingthe first
PROM deviceinto the activesocketof the PROM programmer.Next,enterthe following
PPScommandsshownasboldedtext:

to Ptom 
PPS>copy:fl:ronsys.evn
..,.CAUTION.. - - PROGRAMI"IING
THE TULL LENGTHREQUIRESMORETHAN ONE
PROM.
CHECKSUM*va1ue
FIRST INSTALL THE NEW/NEXTPRO}4AND THEN CONTINUE.
- -YlN? Y
coNTtNr.rE
CHECXSUM:value
PPS>ex!È 

determinesthat the contentsof the file
During the copy,the IPPSsoftwareautomatically
requiremore than one of the specifiedtypeof PROM devicesto containthe code. When
a new PROM deviceis needed,IPPSpromptsyou with the followingmessage:
INSTALL THE NE\N/NEXTPROMAND THEN CONTINUE

Removethe first PROM deviceanclinsertthe second.Next,type"Y ". When the
checksumvalueappearson the screen,removethe secondPROM device.Thesetwo
PROM devicesyou haveremovedcontainthe even(or low) bytesof the WORD values
that composethe operatingsystem.As you removethe PROM devicesfrom the
programmer,carefullylabelthem;unlabeledPROM deviceslook very muchalike. At a
later time,you will placethe first programmedPROM devicein socketU41 and the
secondprogrammedPROM devicein socketU40 of an iSBC286/10(A)board. (Use
socketsU2 and U3 of the iSBX 341on an iSBC286/12board.)
Next,you needto programthe PROM devicesto containthe odd (or high)bytesof the
WORD valuesthat composethe operatingsystem.Insertthe third PROM deviceinto the
activesocketof the PROM programmerand enterthe followingPPScommandsshownas
boldedtext:

c-12

ICU UsedsGuide

PROGRAMMINGA 286.8A5EDSYSTEMINTO PROM DEVICES

PPS>copy :fl:ronsys.odd
to prom 
. . . . CAUTION- . . . PROCRAì,IMING
THE TULL LENGTHREQUIRESMORET}IAN ONE
PROM
.
CHECKSUM:value
FIRST INSTALL THE NELT/NEXT
PROMAND THEN CONTINÙE.
- -YlN? Y
coNTIN'rJE
CHECKSUM:value
PPS>

Again,when IPPSdeterminesit needsanotherPROM device,it promptsyou with the
followingmessage:
INSTALL THE NEII/NEXTPROI,ITHEN CONTINUE

Removethe third PROM deviceand insertthe fourth. Next,type"Y ". Whenthe
checksumvalueappearson the screen,removethe fourth PROM device.Thesetwo
PROM devicescontainthe odd (or high)bytesof the WORD valuesthat composethe
system.As you removethe PROM devicesfrom the programmer,carefullylabelthem;
unlabeledPROM deviceslook very muchalike.. At a later time,you will placethe third
programmedPROM devicein socketU76 and the fourth programmedPROM devicein
socketU75 of an iSBC286/l0(A) board. (UsesocketsU5 and U6 of the iSBX 341on an
iSBC286/12board.)The nextstepprograms
the iSDM monitorandthe
iRMX BootstrapLoaderinto the fourth PROM deviceso do not installit now.
C.4.1.4 Programmingthe |SDMMonitor into PROMDevices
This sectiondescribes
how to programthe iSDM monitorinto the secondand fourth
PROM devices.To do this,insertthe secondPROM cleviceand enterthe followins
commandsshownasboldetltext:

ICU User'sGuide

c-r3

PROGRAMMINGA 286-BASEDSYSTEMINTO PROM DEVICES

PPs>forrnet :fl:28610a (0FF8000h, oFFFFFFh) 
LOGICALUNIT (BIT-1, NIBBLE_2,BYTE:3,N_BYTE-4)
LU *3 
INPUT BLOCKSIZE (N BYTES)
N :2

OUTPUTBLOCKSIZE (N BYTES)

N -l
OUTPUTSPECIFICATION (
OUTPUTSTORED
*l to :fl:28610a.odd 
OUTPUTSTORED


PPS>
PPS>copy :fl:28610a.ewn to prom(0c000H) 
CHECKSUM-va1ue

When the IPPSsoftwarepromptsyou with the followingmessage,
removethe second
PROM device,insertthe fourth,and enterthe followingcommand:

PPS>copy: fl:286Loa. odd to prom(0o000H)
CHEcKSUM:value



C.4.1.5 Programmingthe Bootstrap Loader into PROM Devices
This sectiondescribes
how to programthe BootstrapLoaderinto the secondand fourth
PROM devices.To begin,insertthe secondPROM deviceand enterthe commands
shownasboldedtext:

c-14

ICU UseCsGuide

PROGRAMMINGA 286.BASEDSYSTEMINTO PROM DEVICES

PPs>lnltlallze
86 
P P s > f o r m a t : f l : B S I ( 0 F E 4 0 0 h , 0 F F F T F h ) 
_
L O C I C A LU N I T ( B I T - I . N I B B L E : 2 , B Y T E : 3 , NBYTE:4
)
-3

LU
I N P U T B L O C KS I Z E ( N B Y T E S )
N -2 
O U T P U TB L O C KS I Z E ( N B Y T E S )

N :1
O U T P U TS P E C I F I C A T I O N( < C R > T O E X I T ) :
*0 to :fl:bsl.evn

OUTPUTSTORED
*l to:fl:bsl.odd

OUTPUTSTORED


PPS>
PPS>copy: fl:bsl. evn to pron(0F200H)
CHECKSUM:va1ue

When the IPPSsoftwaredisplaysthe followingprompt,removethe secondPROM device,
insertthe fourth PROM device,and enterthe followingcommand:

P P S > c o p y : f 1 : b s 1 . o d d t o p r o r n ( 0 F 2 0 0 H ) 
CHECKSùM:value
PPS>exlt 

C,4,'1,6Starting the Operating Syslem in ROM from the iSDM" Monitor
The four PROM devicesnow containthe operatingsystem,the iSDM monitor,and the
BootstrapLoader. Performthe followingstepsto slart the system:
1.

Placethe first programmedPROM devicein socketU4l of the iSBC286/10(,4)
board.

2.

Placethe secondprogrammedPROM devicein socketU40 of the iSBC286/10(A)
board.

3.

Placethe third programmedPROM devicein socketU76 of the iSBC286/10(A)
board.

,|

Placethe fourth programmedPROM devicein socketU75 of the iSBC286/10(A)
board.

ICU User'sGuide

c-15

PROGRAMMINGA 286-BASEDSYSTEMINTO PROM DEVICES

5.

Insertthe iSBC286/10(A)boardinto the systemchassisand applypowerto the
hardware.

6.

Enter the followingcommandfrom the iSDM monitorto activatethe iRMX ll
svstem:

The codeexecutedby enteringthe commandin step6 aboveis the ROM initialization
procedurewhoseaddresswasspecifiedin the ICU as0FC0000H.The offsetofthe
beginninginstructionof this procedureis 12H. The reason0C000:12is usedinsteadof
0FC000:12
is that,in real addressmode,the 80286canonly accessup to 1 megab]'teof
memory. Also, in real addressmode,the memorydecodingof the 286/10(A)board,when
jumpered for 2'7512EPROM devices,placesthe memory addressesof the PROM devices
schemeresultsin executionof the codeat
at 0C000:0to 0FFFF:F. This addressing
0C000:12to occurfirst. The codeat 0C000:l2 is the first instructionof the ROM
initializationcode.

C.4.2 Creatinga SystemThat is Activatedon Power-Up
The previoussectionexplainedhow to programa systemthat includedthe operating
system,the iSDM monitor,and the BootstrapLoaderinto PROM devices.With this type
of a system,the iSDM monitorreceivescontrolduringthe initial power-on(or reset)
sequence
and is signedon. This requiresthat you givea commandto the iSDM monitor
to startthe operatingsystem.This sectionexplainshow to programonly the operating
systeminto the PROM devices.To createa PROM-basediRMX II systemwhichreceives
controlat power-on,you needto take certainsteps.Beforethe followingsection
describes
thesesteps,you shouldbe madeawareof the following:
.

Most PROM-basedsystemsare already"debugged"
and haveno needof the iSDM
monitor or the iRMX II SystemDebugger(SDB).

o The iSDM monitorhaslimitedusein a PROM-basedsvstembecauseit can'tset
breakpointsin codethat executes
from ROM.
.

The ROM initializationcodeof the iRMX II Nucleuscurrentlyhasno meansof fully
initializingthe iSDM monitor. Initializationcodecanonly inform the iSDM monitor
(if it is presentand hasbeenpreviouslyinitialized)that the 80286CPU hasbeen
s$,itched
to ProtectedMode.

.

Virtuallyall PROM-basediRMX II systemsrequirethat the systembe initialized
immediatelvuoon PowerUn.

c-16

ICU Usefs Guide

PROGRAMMINGA 286-BASEDSYSTEMINTO PROM DEVICES

For thesereasons,a standalone
PROM-basediRMX II OperatingSystemhasno reason
to includethe iSDM monitor,the Bootstrapl.oaderor the SDB. With this in mind,the
following sectionsexplainhow to program sucha systeminto the PROM devicesand
detailthe additionalstepsrequiredto manuallyprogramthe ResetVector. (You must
manuallyprogram the ResetVector in order to havethe operatingsystemreceivecontrol
after the initial power-onor resetsequence.)
C.4.2.1 Formattingthe Operating System PROM File
To begin,you must preparetwÒPROM imagefiles: one for the evenbytesand one for
the odd bytesof the operatingsystem.To preparethesefiles, invoke the iPPSsoftware
and issuethe followingcommandsshownasboldedtext. Becauseyou are now
programmingonly the operatingsysteminto the PROM devices,the largestpossible
memory rangefor the systemrangesfrom 0FC0000Hto 0FFFFEFH. The parametersin
parenthesis
on the FORMAT line tell the IPPSsoftwarewhat memoryrangeof codeyou
wishto programinto the PROM devices.Ifyour systemdoesnot extendto 0FFFFEFH,
you only needto specifythe addressat whichit doesreach,althoughthereis usuallyno
harm in specilyingthe entire range.
The foÌlowingscreenshowsthe commandsnecessary
and the responseyou receiveat the
terminal:

ICU Uset's Guide

c-r7

PROGRAMMINGA 286-BASEDSYSTEMINTO PROM DEVICES

- IPPS



SOFTIIARE,Vx. y
INTEL PROMPRoGRA.tfì,tING
years
COPYRIGHTINTEL CORPORATION
PPS>type 27512 
PPs>lnltlaLlze 286 
(0Fc0000h, 0rFFFEFh) 
PPs>fornat :fl:ronsys.ron
LOGICALUNIT (BIT:1, NIBBLE:2 , BYTE:3,N-BYîE-4)
LU -3 
INPUT BLOCKSIZE (N BYTES)
N -2 
OUTPUTBLOCKSIZE (N BYTES)
N -1 
O U T P U TS P E C I F I C A T I O N( < C R > T O E X I T ) :
*0 to : fl: roEsys, evn 
OUTPUTSTORED
*1 to : fl: ronsys . odd <€R>
OUTPUTSTORED
* 
PPS>

C.4.2.2 Ptogtamming the OperatingSystem Into the PROM Devices
This sectiondescribeshow to programthe two operatingsystemfiles preparedin the
previoussectioninto the PROM devicesand how to modifythe ResetVectorjump
address.
^fwo
27512PROM devicesare requiredto containthe evenbytesof the operatingsystem
and two 27512PROM devicesare requiredto containthe odd bytesof the operating
system.This examplerefersto thesePROM devicesasone throughfour.
You canprogramthe first ofthesePROM deviceswith no intermediatesteps.Beginby
insertingthe first PROM deviceinto the activesocketand enterthe followingcommand:

P P S > c o p y : f l : r o n s y s . e w n ( 0 , o F F F F H ) to Pron
CHECKSUM-value



After the CHECKSUM= valuemessage
appears,removethe first PROM device,insert
the secondPROM device.and enterthe followinscommand:

c-18

ICU User'sGuide

PROGRAMMINGA 28ó.BASEDSYSTEMINTO PROM DE\TCES

PPS>copyifl:ronsys.evn(10000H,OIFFFFH)
to buffer
CHECKSUM:value



You now needto modi$ the evenbytesof the ResetVectorjump address.Use the iPPS
SUBSTITUTE commandto changethe evenbytesof the ResetVector in the buffer as
follows:
OOFFFS:
FF FF FF FF FF FF FF FF
lo

00FFF8:EA 00C0 FF FF FF FF FF
Afterchanging
thevalues,
copythebufferto a file byenteringthefollowing
command:
copy buffer

to

: fl: temp

Now,copythe temp file to the PROM devicesby enteringthe followingcommand:

PPS>copy : fl: tenp to pron
CHECKSUM:value



After the CHECKSUM=valuemessage
appearson the screen,removethe second
PROM device.The first two PROM devicesnowcontainthe even(or low) bytesof the
WORD valuesthat composethe operatingsystem.As you removethe PROM devices
from the programmer,carefullylabel them; unlabeledPROM deviceslook alike. Place
the first programmedPROM devicein socketU41 and the secondprogrammedPROM
devicein socketU40 of an iSBC 286/ 10(A) board.
You canprogramthe third and fourth PROM deviceswith no intermediatestepsalso.
Begrnby insertingthe third PROM deviceinto the activesocketand enter the following
command:

P P S > c o p y : f l ; r o n s y s , o d d ( O , 0 F F F F I I ) to pron
CHECKSUM-vaIue



Aîter the CHECKSUM=valuemessage
appears,removethe third PROM device,insert
the fourth PROM device,and enterthe followingcommand:

ICU UsefsGuide

c-19

PROGRAMMINGA 2tt6.BASEDSYSTEMINTO PROM DEVICES

PPS>copy:fL:ronsys.odd(10000H,0IFFFFH) to bìlffet
CHECKSUM-value



You now needto modifuthe odd bytesof the ResetVectorjump address.Use the iPPS
SUBSTITUTEcommandto chansethe odd bytesof the ResetVectorin the bufferas
fbllows:
00FFF8: EA 00 C0 FF FF FF FF FF
to
00FFF8: 12 00 FF FF FF FF FF FF
After changingthe values,copythe bufler to a temporaryfile by enteringthe following
command:

copy buffer

to

: f1: tenp

Now,copythe temporaryfile to the PROM devicesby enteringthe followingcommand:

P P S > c o p y: f l ; t e n p t o p r o m 
CHECKSUM:value

Afier the CHECKSUM=valuemessage
appearson the screen,removethe fourth PROM
device.The third and fourth PROM devicesnow containthe odd (or high)bytesof the
WORD valuesthat composethe operatingsystem.As you removethe PROM devices
from the programmer!carefullylabelthem;unlabeledPROM deviceslook alike. Place
the third programmedPROM devicein socketU76 and the fourth programmedPROM
devicein socketU75 of an iSBC286/l0(A) board.
The iPPsSUBSTITUTEcommandsaboveprovidea FAR JUMP instructionto the ROM
ìnitializationprocedurewhoseaddressis specifiedin the ICU as0FC0000H.The offset
of the beginninginstructionof this procedureis l2H. The reason0C000:l2 is used
insteadof 0FC000:12is that,in real adclress
mode,the 80286canonly accessup to 1
megabyteof memory.Also, in real addressmode,the memorydecodingof the
286/10(A)board,whenjumperedfor 27512EPROM devices,
placesthe memory
addresses
of the PROM devicesat 0C000:0to 0FFFF:F. This addressing
schemeresults
in executionof the codeat 0C000:12
to occurfirst. The codeat 0C000:12is the first
instruction
of the ROM initialization
code.

c-20

ICU Use/sGuide

PROGRAMMINGA 286-BASEDSYSTEMINTO PROM DEVTCES

C.4.2.3StartingtheOperating
Systemin ROM
The four PROM devicesnow contain the operatingsystemand the altered ResetVector
jump address.Performthe followingstepsto startthe system:
1.

Placethe first programmedPROM devicein socketU41 of the iSBC286/10(4.)
board.
Placethe secondprogrammedPROM devicein socketU40 of the iSBC286/10(A)
board.

3.

Placethe third programmedPROM devicein socketU76 of the iSBC286/10(A)
board.
Placethe fourth programmedPROM devicein socketU75 of the iSBC28ó/10(A)
board.

5.

Insertthe iSBC2U6/10(A)boardinto the systemchassisand applypowerto the
hardware.The iRMX ll systemis immediatelyinitializedand signon occursusing
the terminal(s)specifiedin :CONFIG:TERMINALSon the systemdevice.

C.4 HARDWARE
JUMPERMODIFICATIONS
To programthe systeminto PROM devicesasin the aboveexample,the following
jumperswerechangedon the iSBC2tl6/10(A)board:
To specifu4 27512EPROM devices,
setupjumpers62 through9l asfollows;

DefaultConfiguration
E62- E63
870 - E72
E71- 873
F.75- E76
Lt I - r:tó

E85- E87
886- 888
E90- E91

Jumpersto Setfor 27512EPROMS

E65- 867
E68- E70
E71- E73
875- 876
E80- 882
E83- E85
E86- E88
E90- E91

useprimary
To specify
a startingmemoryaddress
andmemorysizefor localmemory,
decode
option3. Thejumpers
requiredare
DefaultConfiguration

Jumoersfor PrimaryDecodeOption 3

E2l8 - E2l9 installed
8220 - E221removed

EZIS - E219 installed
8220 - E22l installed

ICU Uset'sGuide

c-21

PROGRAMMING A 286-BASEDSYSTEMINTO PROM DEVICES

To specifymemory/size/justification
for localmemory,usesecondary
option3. The

jumpersrequiredare
Default Configuration
E5t - 859 removed
E50 - 858 removed
E49 - E57 installed

c-22

Jumpersfor SecondaryOption 3
851 - E59 removed
E50 - E58 installed
E49 - 857 installed

ICU UsePsGuide

APPENDIX
D
PROGRAMMTNG
A 386/1oo-BASED
SYSTEMINTOPROMDEVICES

D.l INTRODUCTION
usedto placethe iRMX II
This appendixprovidesan exampleof the procedures
OperatingSysteminto ROM for a 386/ 100-based
system.All softwaregeneration
describedassumes
you are usingan Intel System300SeriesMicrocomputer.In addition,
becausea Series-IVDevelopment
Systemis requiredto run the PROM programmer,the
iSDM monitor is usedto providethe seriallink betweenthe iRMX systemand the SeriesIV system.In this example,one versionof the operatingsystemis created.
The exampleconsistsof threeprocesses:
configuringa ROM-basedsystem,
generation/building
of the system,and actuallyplacingthe systeminto ROM. In this
example,the iSDM monitorand BootstrapLoaderare not includedaspart of the
generatedsystem.This allowsthe operatingsystemto be 32 Kbyteslarger. For a system
generatedin this manner,the operatingsystemreceivescontrolon power-onor reset.
existingwhen
The lastsectionof this appendirdescribes
the configurationdifferences
systeminto PROM devices.
programminga 386/100-based
systemand a 386/20-based

D.2 REQUIREMENTS
outlinedin this appendir,you musthavethe followinghardware
To usethe procedures
and software:
.

A systemdefinedduringconfigurationasresidingin RoM.

.

The iRMX II.3 and iPPSVl.4 (or newer)software.]'he iPPSsoftwarerunson an
Series-IVDevelopmentSystem.

.

Systemconnectedvia the
A 386/100-based
systemand a Series-lVDevelopment
iSDM monitor.

r

An iUP-200/201UniversalProgrammerwith a'GUPI 27010'module.

o Two 27010EPROM devrces.

ICU Usefs Guide

D-l

PROGRAMMING A 3E6/1OO.BASED
SYSTEMINTO PROM DEVICES

D.3 CONFIGURING
A ROM.BASED
SYSTEM
Before you can programyour systeminto ROM, you must modi$ a number of
parametersin your definition file. Theseexamplesassumethat you start with the Intelsupplieddefinition file 386100.DEFlocatedin directory /RMX286/ICU.
To beginthe example,you shouldmakea copyofthe definitionfile in a separate
directory. To do this, createa new directoryin which to do the generation. Give the
directory the samenameas the definition file and the output system.The definition file
shouldhavea .DEF extension,
the boot-loadable
systemshouldhavea.28óextensionand
the systemto be loadedinto PROM devicesshouldhavea .ROM extension.Enteringthe
three followingcommandscreatesa new directorycalled ROMSYS, attachesyou to that
directory,and invokesthe ICU placinga copyofthe definitionfile 386100.DEF
into the
new directory. (This exampleassumesyour :HOME: directoryis your current default
directorv.l

As part of the configurationprocess,you must perform the following two things in order
to fit the iRMX II systemdevelopedin this exampleinto PROM devices.
.

Delete the SystemDebuggerand UDI from the system.

.

Replacethe iRMX IL3 CLI with the iRMX II.1 CLI.

Having invoked the ICU, you now can beginto make the necessaryconfigurationchanges.
Start by modifying the memoryscreensto define the ROM memorylocationsthe system
requires. Do this by first selectingthe "Memory for System"screenwith the following
command:

D-2

ICU Usefs Guide

PROGRAMMING A 386/IOO-BASEDSYSTEMINTO PROM DEVICES

Entering the previouscommandcausesthe "memoryfor System"screento appearas
follows:

(tfEMS)

lr]

Henory for System

S Y S - l o w I 0 - O F F F F F F H ] ,h i g h I O - 0 F F F F F F H ]
=
sYs
010000H,
059FFFH

[ 2] s Y s
Enter

Changes fNumber - new_va]-ue /

^D

Nr,nber /

? / H ) |

At this screen,you must configurethe amount of memory required for the generated
system.When a 386-based
systemis initialized,it movesfrom ROM to RAM and then
beginsexecution.The area in RAM where it residesis the lowestblock of memory
specifiedin the "Memory for System"screen.Thus,you must specirythe lowestblock of
memorywith enoughspaceto fit the system.At this point, becauseyou do not know the
exactsizeneeded,you would normallysupplya guessedvalue to replace06FFFEH.
Then, after the real systemis generated,you could determinethe actualsizeusing
informationgivenin the.MP2 file createdat generationtime. For this example,however,
the amountof memoryneededis knownbeforehandas 10000Hto 4FF00H.
Configurethe memory neededfor the systemusingthe following two commands.These
commandsdeletethe defaultinformationand add the new information.

ICU Use/s Guide

D-3

PROGRAMMING A 386/IOO.BASEDSYSTEMINTO PROM DEVICES

After enteringthe memorylocations,the "Memoryfor System"screenappearsas follows:

(MElfS)

llenory for

Systen

SYS - low |0-OFFFFFFIII, high
010000H,
[1] SYS
s
Y
S
[2]

|0-OFFFFFFHI
4FF00H

^D
Enter Changes [Ntrrrber - new_value /
Nurnber / ? / H ) :
: 

Now,displaythe "Memoryfor Free SpaceManager"screenby entering'", as
shownin the previousscreen.Becausea ROM-basedsystemusesdifferentmemory
locationsthan a RAM-basedsystem,you mustadjustthis memoryscreen.The memory
for the Free SpaceManagermustnot overlaysystemmemoryor the writeabledata
segments,which residejust abovesystemmemory. To ensurethat you speci! the correct
startingaddressfor the Free SpaceManagermemory,performthe followingsteps:
1.

Calculatethe sumof the read/writesegmentiimits foundin the .MP2file.

2.

Find the segmentwith the largestend address.

3.

Add togetherthe resultof stepone and the addressfound in steptwo.

4.

Use the resultof stepthreefor the minimumstartaddressfor the Free space
manager.

After determiningthe startaddressfor the FreeSpaceManager,makethe changesby
enteringin commandssimilarto the onesyou enteredto changethe',Memoryfor System,'
screen.The only differenceis usememorylocations65000Hto TFFFFFH. The following
screenshowsthe "Memoryfor FreeSpaceManager"screenafter makingchanges.

(MEl{f)
F S l , l:
[1] rsM

Menory For Free Spacè Manager
l o r . r [ 0 - o F F F F F F H,] h i g h [ 0 - 0 F F F F F H ]
:
6s000H,
TFFFFFH

[2] FsM
Enter Changes [Nurnber - new_value /
;f sub 

D-4

^D

Number /

? / H] :

ICU Usefs Guide

A 386/I()O-BASED
SYSTEMINTOPROMDEVICES
PROGRAMMING

screenusingthe
After makingchangesto the memoryscreens,requestthe "Sub-systems"
command"f sub < CR > " shownin the oreviousscreen.

(SUB)

S u b- s y s t e m s

(UDI) Universal Development Interface
(HI)
Hurnan Interface
[Yes/No]
(AL) Application Loader [Yes/No]
(RFA) Rèmote Filè Accèss [Yes/No]
(EIO) Extended I/O Sysrern [Yes/No]
(BI0) Basic l/O Systen [Yes/No]
(SDB) Sysren Debugger [YeslNo]
(OE) 0S Excension [Yes/No]
Enter lAbbreviation:
: s db-n 
: udl:n 
, 11_y 
: f hl 

IYes/No]

ner.r-value/ Abbreviation

YES
REQ
REQ
NO
REQ
REQ
YES
NO
? / H ] :

Here,you mustdeletethe SystemDebuggerand the UDI becauseof sizeconsiderations.
yes to "hi". The
You also selectthe Human Interfacefor your systemby settingans\trering
lastcommandaboverequeststhe "HumanInterface"screen
Changethe residentinitial program(CLI) versionsby enteringthe followingcommand:

largerthan the iRMX
Both the iRMX tl.3 CLI and the iRMX II.2 CLI are considerably
II.1 CLI and cannotbe usedin this exampledue to sizerestrictions.
Next,requestthe "Nucleus"screenby enteringthe followingcommand:

You now mustdefinethe numtrerof GlobalDescriptorTables(GDT) entriesyour ROMbasedsystemneeds.BecauseROM spaceis limited,the numberyou entershouldbe the
minimumnumberof entriesneeded.The numberof real GDT entriesrequiredwhenthe
systemis copiedand expandedin RAM is enteredon the "ROM Code"screen.
You alsomustchangethe DefaultExceptionHandlerparameterto somethingother than
SDB sincethe SDB wasnreviouslvdeletedfrom the confisuration.

ICU Usef s Guide

D-5

PROGRAMMINGA 386/IOO.BASED
SYSTEMINTO PROM I)EVICES

chancesto the "NucleusScreen":
Enter the followinscommandsto makethe necessarv

the "NucleusScreen"appearsasfollows:
After makingthesechanges,

(Mrc)

Nucleus

(NGE) Nunbér of cDT Entries l4zr0 - 81901
( N I E ) N u r n b e ro f I D T E n t r i e s [ 0 - 2 5 6 ]
( P V ) P a r a n è t e r V a l i d a t i o n I Y e s / N o]
(RoD) Root object Directory Size l0
38401
( D E H ) D e f a u l t E x c e p t i o n H a n d l e r I Y e s r î . l o l J o b / S D B / U sre]
(NflI) NMI Exception Handler IYes/No/I gnore/J ob/SDM/User ]
(NEB) NMI Enable Byte l0-2551
(STK) Exception Handler for Stack Exception, Bad TSS and
D o u b l e F a u l t I Y es / N o / J o b / S D B]
( N E H ) N a m eo f E x H a n d l e r O b j e c t M o d u l e [ 1 - 5 5 c h s ]
(EM) Exeeption Mode lNever/Prograrn/Envi. ron/Al1 l
(LSE) Low GDT/LDî Slot Excluded from FSM 1440-8189H/None:01
( H S E ) H i g h C D T / L D TS l o t E x c l u d e d f r o r n F S M [ 4 4 0 - 8 1 8 9 / N o n e - 0 ]
( R R P )R o u n dR o b i n P r i o r i t y T h r e s h o l d [ 0 - 2 5 5 J
(RRT) Round Robin Time Quota [0-255]
(RIE) Report lnitíalization
Errors lYes/Nol
( M C E ) M a x i r n u nD a t a C h a i n E l e r n e n t s [ 0 - F F F F H ]
( C S) N u c l e u s C o m m u n i c a t i o n S e r v i c e
Enter

[Abbreviatíon:

new_value / Abbreviatioa

460

r28
REQ
50
JOB
IGNORE
4
JOB

NEVER
0
0
255
5
YES
080H
YES

? / H ] :

After updatingthe "Nucleus"screen,enterthe the followingcommandto view the "ROM
Code"screen:

D-6

ICU User'sGuide

PROGRA]\,IMING
A 38ó/1OO-BASED
SYSTEMINTO PROM DEVICES

The "f rom " commandcausesthe "ROM Code"screento appearasfollows:

(ROM)

ROMcode

( S Y R ) S y s t e r n i n R O M[ Y e s / N o ]
( R A C ) R O MA d d r e s s o f M a s t è r - c D T [ 0 - O F F F F F ! ! ]
(NSG) Number Slots in Real GDT [440-8190]
( R A S ) R A MS t a r t A d d r e s s f o r S y s t e r n I O - O F F F F F H ]
( R I A ) R O MI n i t i a l Í z a t i o n
Code Address [0-0FFFFFFH]
( R I P ) R O Ml n i t i a l i z a t í o n
Procedure [1 - 45 chars]

N0
0H
L024
0H
0FF0000H

E n t e r [ A b b r e v i a t i o n : n e w _ v a l u e/ A b b r e v i a t i o n ? / H ) :

Use the followinq command to inform the ICU that vour systemis to reside in ROM:

of the masterGlobalDescriptorTable
I'he RAG field providesthe 2.1-bitphysicala andverifythat the "ROM Code"screenappearsas
follows:

(ROl'f)

ROM code

(SYR) Systen in ROM (Yes,rNol
( R A C ) R O MA d d r e s s o f M a s t e r - C D T I O - 0 F F F F F F H ]
( N S G ) N u r n b e rS l o t s i n R e a l c D T [ 4 4 0 - 8 1 9 0 ]
(RAS) RAl{ Start Address for Sysien [0-0FFFFI1i]
( R I A ) R O MI n i t i a l i z a c i o n
Code Address I0-oFFFFFFH]
( R l P ) R O Ml n i t i a l í z a t i o n
Procedure [1 - 45 chars]
Enter [Abbrevíation:

n e w _ v a 1 u e/ A b b r e v l a t i o n

YES
FC0000H
LO24
4FF00H
0l3A30H

? / H l:

Now,requestthe "GenerateFile Names"screenby enteringthe followingcommand:

Enteringthe abovecommandcausesthe "GenerateFile Names"screento appearas
below:

(GEN)
File

cenerate

Flle

Names

Narne[1-55 Characters]

(ROF) ROM Code Flle

Narne

(RAF) RAM Code File

Nane

/Boor/Rro(286. Rou
/ROOî/386100.286

Enter

[Abbreviation

- new_value ,/ Abbreviation

? / H ]:

The "GenerateFile Names"screenis whereyou definethe pathnameof the file
containingthe ROM-basedsystem.Specifythe pathnameby enteringthe following
command:

D-8

ICU UseCsGuide

PROGRAMMINGA 3Iì6/TM-BASEDSYSTEMINTO PROM DEVICES

After making the change,the screenlooks as follows:

(GEN)

Generate File

Narnes

F í l e N a r n e[ 1 - 5 5 C h a r a c t e r s ]
( R O F ) R O MC o d e F i L e N a m e
:$:Rol,tSYS.RoM
(RAF) RAI'!Code File

Name
/Roo"t/386100 .286

Enter

[Abbreviatíon:

new_value / Abbreviacion ? / H ] :c 

D.4 GENERATING/BUILDING
THESYSTEM
You are now readyto generatethe definitionfilesand build the system.Enteringa'C" as
the laststepin the previoussectioncausesthe ICU mainscreento appear.From this
screen,enterthe Generate(G) commandto generatefiles.

For general

help

The following

in

any screen

enter H .

commands are avallable

Change
Generate
Save
Qul t
Exi t
Replace
Detail-Level
Backup
ENTER CoMMAND:G 
ENTERa Ìetter

to be used as preflx

:(CR)

After enterìng"G ", the ICU asksyou to entera singleletter to be usedas a prefix
no prefixto be used.After
reîurncauses
to the generated
file names.Enteringa carriage
respondingto the prefixprompt,the ICU informsyou of eachlayeras it is generated(see
the ICU returnsto
FigureB-35for an example).Whenthe systemhasbeengenerated,
n.
the mainmenuscrce

ICU User'sGuide

D-9

PROGRAMMING A 386/1OO.BASED
SYSTEMINTO PROM DEVICES

Enter the Exit (E) commandto write the definitionfile and exit the ICU asfollows:

After entering this command, the ICU informs you that the definition file has been
written. It issuesthe following messagebefore returning control to the command line:
The deflnltlon

flle

has been wrltten

to flle;

ROI,ISYS.DEF

You are now readyto invokethe SUBMIT file ROMSYS.CSDthat buildsthe system.
The ICU createdthis SUBMIT file aspart of the generationprocess.Executionof the
SUBMIT file generates
the applicationsystemwith the pathname:$:ROMSYS.ROM.
Executionof this SUBMIT file alsogenerates
the map file ROMSYS.MP2,whichcontains
information crucial to configuringa "tight" system.The map file ROMSYS.MP2also
containsthe followingwarningswhich you can safelyignore:
***

IIAIINING269:

LINE 22, NEARCLI DATA: Sesnent Size Reduced

LIARNING119: SEGMENTS
OVERI^AP
LOWADDRESS
: FFT'FAOH
HIGH ADDRESS
: FFFFF2H

After the submitfile completesexecution,
usethe DOWNCOPY commandto copythe
resultingfile ROMSYS.ROMto the file :F1:ROMSYS.ROMon the hard diskof the
Series-IVDevelopmentSystem.This assumes
you haveusedthe LNAME commandon
the Series-IVsystemto definethe logicalname:Fi for the directoryinto whichyou will
copy the file.

Now that the systemhasbeengenerated,
you mustprogramthe PROM devicesto include
the stand-alone
system.

D.5 PROGRAMMING
THESYSTEMINTOPROMDEVICES
This sectionexplainshow to pro$am the operatingsysteminto PROM devices.To
createa PROM-basediRMX II systemwhichreceives
controlat power-on,you needto
take certainsteps.Beforethe followingsectiondescribes
thesesteps,you shouldbe made
awareof the following:
.

D-IO

Most PROM-basedsystems
are already"debugged"
and haveno needof the iSDM
monitor or the iRMX II SystemDebugger(SDB).

ICU User'sGuide

PROGR.ÀMMINGA 38ó/TOO-BASED
SYSTEMINTO PROM DEVICES

.

The iSDM monitorhaslimitedusein a PROM-basedsystembecauseit can'tset
breakpointsin codethat executes
from ROM.

.

The ROM initialization code of the iRMX II Nucleuscurrently hasno meansof fully
initializingthe iSDM monitor. Initializationcodecanonly inform the iSDM monitor
(if it is presentand hasbeenpreviouslyinitialized)rhat the 80286CPU hasbeen
switchedto ProtectedMode.

o

Virtually all PROM-basediRMX II systemsrequire that the systembe initialized
immediatelyupon PowerUp.

For thesereasons,
a standalone
PROM-basediRMX lI OperatingSystemhasno reason
to includethe iSDM monitor,the BootstrapLoader,or the SDB. With this in mind,the
following sectionsexplainhow to program sucha systeminto PROM devices.

ICU UsefsGuide

D-I1

SYSTEMINTO PROM DEVICES
PROGRAMMINGA 386/IOO-IìASED

D.5.1 Formattingthe OperatingSystemPROMFile
lnvokethe iPPSsoftwareand issuethe folÌowingcommands(userinput is in bold) to
on the FORMAT
preparethe four PROM imagefiles. The parametersin parenthesis
you
wish
to
program
into PROM
line tell the IPPSsoftwarewhat memoryrangeof code
devices.

. IPPS



Vx.y
SOFTWARE,
INTEL PROMPROGRAI"IMING
years
COPYRIGHTINTEL CoRPORATION
PPS>type 27010 
PPs>lnltiallze
286 

PPs>fornat : fl :ronsys .ron (010000h, 04ff00h)
L O G I C A LU N I T ( B I T : 1 , N I B B L E : 2 , B Y T E : 3 , N _ B \ " I E : 4 )
LU -3 
I N P U T B L O C KS I Z E ( N B Y T E S )
N *2 
O U T P U TB L O C KS I Z E ( N B Y T E S )
N :l

INPUT BLOCKSTRUCTURE.
N ' I Ì H B EO
R F I N P U T I , O C ] C A IU
, N1TS: OO2
LSB

l o ol o ll
NUMBEROF OUTPUTLOGICALUNITS : OO1
O U T P U TS P E C I F I C A T I O N( < C R > T O E X I T ) :
* 0 t o : f l : r o m s y s .e v n < C R >
OUTPUTSTORED
*l- to : fl: ronsys. odd 
OUTPUTSTORED
* 
PPS>

D-12

ICU Use/s Guide

PROGRAMMINGA 386/TOO-BASED
SYSTEMINTO PROM DEVICES

D.5.2Formatting
theCopyRoutine
This stepinvolvesformattingthe copyroutinethat actuallyexecutes
in ROM. Enter the
followingcommandsshownin bold textto performthis task:

P P s > f o r n a t : f I : r o m s y s .r o n ( 0 f f f f a o h )
LOG]CALUN]T ( BIT:1 , NIBBLE-2 , BYTE-3, N-BYTE:4)
LU -3 
I N P U T B L O C KS I Z E ( N B Y T E S )
N :2

OUTPUTBLOCKSIZE (N BYTES)
N -1 
o u T P ù T S P E C Ì F I C A T I o N( < C R > T O E X I î ) :
*0 to :fl: copyron.evn 
OUTPUTSTORED
*1 to : fl: copyron. odd 

* 

D.5.3 Copyingthe OperatingSystemand the CopyRoutingto
ROM
To copythe systemand the copyroutineto ROM, you mustcopyevenand odd bytesof
the systemand the copyroutineusingthe PPScopycommand.First inserta PROM
deviceand usethe PPScopycommandto burn the evenbytesof the systemand the copy
routineinto the PROM devices:

PPS> copy romsys.evn to PROU
_ VALUE
CHECKSUM
PPS> copy copyron. evn to PROU(lffdOh)
_ VALUE
CHECKSUM

ICU Uset'sGuide

D.I]

PROGRAMMING A 3116/I(n.BASEDSYSTEM INTO PROM DEYICES

Nowyou mustburn in the odd bytesof the systemand the copyroutine. Insertthe
remaininsPROM deviceand issuethe folìowinstwo commands:

P P S >c o p y r o n s y s . o d d t o P R o X
' VALUE
CHECKSUM
PPS> copy copyrou, odd ro PRolr(l,ffd0h)
- VALUE
CHECKSUM

Noticethat the copycommandfor the copyroutineis enteredin the followingform:
copy copyrom.)oo(
to PROM(offset)
The valueoffsetcausesthe copyroutineto be physically
placedawayfrom the system.To
determinethe valuefor offsetusethe followingformula:
- PROM_start_address)
offset = (start_address_of_copy_routine
/ 2
For this example,offsetis calculated
asfollows:
offset = (FFFFAOH- FC0000H)/ 2 = IFFD0H

D.6 BOOTINGTHESYSTEM
After placingthe systeminto PROM devices,
you canboot the system.In this example,
the systemincludedthe Human Interfacesubsystem.
Consequently,
the systemmustalso
includea systemdevice(harddiskdriveor llexiblediskettedrive). If your systemdoes
not includethe Human Interface,the systemdoesnot haveto includea systemdevice.
For systemsthat includea systemdevice,you mustperforma systemresetafter initially
supplyingpowerto the system.The reasonfor performinga resetafter power-upis
because
the systemdeviceneedstime to reachmaximumspinningspeedbeforethe
Human Interfacecan successfullv
accessfiles on the device.

D-14

ICU Use/s Guide

PROGRAMMTNGA 38ó/lOO-BASEDSYSTEMINTO PROM DE!'ICES

D.7 CONSIDERATTONS
FORA 386/20-BASED
SYSTEM
If the systemyou are buildingis goingto run on a 38ó/20-based
machine,some
configurationdifferencesexist. The followinglist summarizesthesedifferences:
.

BecauseROM is mappedto the lower megabyteof memorywhen the systemis in real
mode,you must supplya different ROM addressfor the masterGlobal Descriptor
Tablein the "ROM Code"screen.Assumingyour systemuses27010EPROM devices,
supplya value of 0C0000Hfor the RAG field in the "ROM Code" screenduring
configuration.This valuecausesthe GDT to be placedat the startof ROM.

o

You mustconfigurethe InitializeOn-boardFunctions(IF) field in the "Hardware"
screento 3 ratherthan4. The value3 indicatesthe boardbeinsinitializedis an iSBC
386/20board.

ICU Uset'sGuide

D-r5

INDEX
A
Abbreviatedscreennames l- 1o
Aborting ICU commandsl-24
Accessrightsto definitionfiles 1-7
Addinga RAM driver B-21
Addingan Intel-devicedriver B-15
Addingan Intel-supplied
controller 8-6
Addingnew devicedrivers 1-45,46,47
Addingunit informationB-10,18
Adding usersto your system4-l
Applicationcode 3-I
Applicationjobs 3-l
ASCII backupfiles 1-23
Assembling
configurationfiles 2-4,B-34,D- 10

B
Backupcommandl-23
Bindingapplicationjobs 3-4,7
Bindingthe subsystems
2-4,8-34.C-8,D-10
BND286 3-4
Bootstraploadinga systemB-4[]
BootstrapLoaderinclusionC-v
Build files 1-18
Buildingapplicationjobs 3-4,7
Buildingthe system2-5,B-34,C-8,D- 10

c
Changecommand 1-16,25, B-41,C-2,D-2
Changingdefinitionfiles l-17,29
Changingthe editingcontrolcharacter1-21
Changingsystemmemory B-29,C-2,D-2
Choosinga definitionfile 1-7
Codesegmentsize 3-8
Commandmode 1-14

ICIJ Usefs Guide

Index-l

INDEX

Commands

Backup1-23
Change 1-16,B-41,C-2,D-2
Detail-level l-22
Exit l-27,2-1,B-34
Generate 1-18,2-1,B-32,44,C-8,D-9
Help 1-15
List 1-19,2-l,B-44
Quit 1-20
Replace 1-21
Save 1-19,2-1
Communication
board 3-3
Configuration
Environments1-4
Files 2-2,3, A-l
Generatingfiìes 2-1
Configuringusersinto your system4-l
Control-C 1-24
Conventions iv
Copyroutine D-13
Copyingthe currentscreen 1-33,34
Creatingbuild and submit files 1-18
Creatingdirectoriesfor your systems 1-10,C-2, D-2
Creatingsystemsthat activateon power-upC-16

D
Data segnentsize 3-8
Debuggingapplicationjobs 5-6
Definitionfile 1-1,7,B-1,C-8,D-10
Deleting a repetitive-fixedscreen 1-38
Deletinga screen 1-33,38
Deletingan element 1-33,34,35
Deleting data on a repetitivescreenformat 1-35
Determiningmemorylocations3-3,6
Displayingthe next screen 1-33,34
Displayingthe previousscreen 1-33

E
Editinga screen 1-29,32,8-6,7
Editingcontrolcharacter1-21
Editingdefinitionfiles 1-17,25
Elementsof a screen 1-26
Eliminating excessspace 3-6, B-41

Index-2

ICU Uset'sGuide

INDEX

Endingan ICU session1-20,21
Errors
Assemblingthe configurationfiles 2-6
Binding the system 2-6
Buildingthe system2-6
ICUMRG I-49
Insufficientaccess
rightsfor the definitionfile 1-8
Interactive1-42
Internal 1-43
Invocation 1-12
Systeminitialization 5-3
Type of 1-42
Examples
Adding a RAM driver B-21
Addingan Intel-devicedriver B-15
Addingan Intel-supplied
controller B-6
Addingunit information B-10,18
Assemblingconfigurationfiles B-34
Bindingthe subsystems
B-34
Bootloadinga systemB-40
Buildingthe systemB-34
Changingsystemmemory B-29,C-2,D-2
Configuration C-2,D-2
Deletinga repetitivefixedscreen 1-38
Deletingdataon a repetitivescreenformat 1-3ó
Deleting the SystemDebuggerfrom the system C-4, D-5
Deletingthe UDI from the systemD-5
Editinga screen8-6, 7
Formattingthe copyroutine D-13
Formattingthe operatingsystemPROM file C-11,17,D-12
Generate2-2,B-32,44,C-8,D-9
ICUMRG 1.48
Insertinga repetitive-fixed
screen 1-42
Insertingdataon a repetitivescreenformat 1-37
Invokingthe ICU 1-9,10,B-4
List commandB-44
Loadinga systeminto RAM B-40
Memoryadjustments
to includethe BootstrapLoader C-3
Memoryadjustments
to includethe iSDM" monitor C-3
Memoryfor FreeSpaceManagerAdjustmentsC-4,D-4
Memorymap for 80286-based
systemA-3, B-28
Programming
a 286-based
systeminto PROM devicesC-1
Programminga 386/100-based
systeminto PROM devicesD-l

ICU Use/s Guide

Index-3

INDEX

Examples(cont.)
systeminto PROM devicesD-15
Programming
a 386/20-based
ProgrammingPROM devicesC-10,D-10
Programmingthe BootstrapLoaderinto PROM devicesC-14
Programmingthe iSDM" monitorinto PROM devicesC-13
Programmingthe operatingsysteminto PROM devicesC-12,lu, D-13
Removingdevicedrivers C-5
Startingthe operatingsystemin ROM C-21
Startingthe operatingsystemin ROM from the iSDMa* monitor C-15
SystemconfigurationB-l
Exit command 7-25,2-1,B-34

F
File locations1-2
File versionnumbers 1-12,44,46
Filesof the ICU l-2, 5, 6, 2-3,A-1
Findinga screen 1-33,34
Fixedscreenformats 1-30
Formattingthe copyroutine D- 13
Formattingthe operatingsystemPROM file C-11,17,D-12
Formatsof screens1-30

G
GeneralICU use 1-3
Generate
command1-18,2-1,B-32,44,
C-8,D-9
Generatedfiles 2-3,A- 1
Generatingconfigurationfiìes 2-1,C-8,D-9
Generatingthe system2-1,B-31
Gettinghelp l-15,30,33,34

H
Hardwarerequirementsl-4
Hardwarescreen 1-28
Help command 1-15,30
Help for specialeditingcommands1-33,34
How to choosea definitionfile l-7

I
I2ICE" In-CircuitEmulator 5-ó
ICU flowchart 1-39
ICUMRG Utiliry 1-45
Includefiles 3-2

Index-4

ICU User'sGuide

INDEX

Includingthe BootstrapL,oaderC-9
Includingthe iSDM" monitor C-9
Initializationroutine 3-8
Initializingyour system5-1
Insertinga new line 1-33,34,37
Insertinga new screen 7-33,34,42
Insertinga repetitive-fixedscreen 1-42
Insertingdataon a repetitivescreenformat 1-37
Intel-supplied
definitionfiles 1-7
Interactiveerrors 1-42
Interfacelibraries 3-5
Internalerrors 1-43
Invocationerrors 1-12
Invokingthe ICU 1-9,10,11,B-4
ISDM* monitorinclusionC-9

L
Languagerequirements
whenwritingapplicationcocle3-2
Level of detail for screens 1-22
List command 1-19,2-1,B-44
Listinga definitionfile 1-19
I-oadingthe systeminto RAM 5-1,B-40
Location of ICU files 1-2
l-og-file 1-45
l,ogical flow of the ICU 1-39

M
Main menuscreen 1-14,B-5
Manualoverviewiii
Memorylocations3-3,6, B-29
Minimizingmemoryaddresssize 3-6,B-41

N
NamingICU-generated
files l-1I
Non-residentusers4-1

P
Partsof a screen 1-26
Pre-configuration
requirements1-4
Prefix option 1-11,2-3
Preparinga RAM-basedsystem 3-1
Preparing
application
code 3-l

ICU Uset'sGuide

lndex-5

INDEX

Productoverview 1-1
Programming
PROM devicesC-1, 10,D-10
Programmingthe BootstrapI-oader into PROM devices C-14
Programming
the iSDM" monitorinto PROM devicesC-13
Programming
the operatingsysteminto PROM devices C-18,12,D-13

o
Quit command 1-20

R
RAM disk driver 3-3
RAM-basedsystems3-1
Readerlevel iii
Redisplaying
the currentscreen 1-33,34
Repetitivescreenformats 1- 30
Repetitive-fixed
screenformats 1-31
Replacecommand 1-21
Residentuser 4-1
Restoringfrom af e 113,23,44
Returningto commandmode 1-33,C-7,D-9
ROM-basedsystems3-7,C-1,D-1

S
Savecommand l-19, 25, 2-1
Savingan editeddefinitionfile 1-19,21,25
Screenediting 1-29
Screeneditingcommands1-32,33
Screenelementsl-26
Screenformats 1-30
Screennames 1-18
Searching
for a stringwithin a screen 1-33,35
Soft-Scope2860 5-5
Softwarerequirements 1-4
Specialeditingcommands1-33
Startaddressof a system3-8
Startingthe operatingsystemin ROM C-21
Startingthe operatingsystemin ROM from the iSDM" monitor C- 15
Submitfiles 1-18,2-2,4,B-34,46,
C-8,D-10
Synchronous
initialization5-2
Systemdebugger 5-5

Index-6

ICU User'sGuide

INDEX

T
Testingthe system5-1,4

U
Unit information,adding B-10,18
UPDEF Utiliry l-1,7,44
Upgradingdefinitionfiles 1-43
Usingthe ICU 1-3,39

v
Versionnumbers,files 1-12,44,46

w
When to usethe ICU 1-2
Writing Applicationcode 3-1

ICU UsePsGuide

Index-7

intel
E X T E N D Ei R
DM X @ I I
PROGRAMMtNG TECHNTQU
ES
R E F E R E NM
CA
EN U A L

lnte Corporation
3 0 65 B o w e r s A v e n u e
5 a n t aC l a r a ,C a l i f o r na 9 5 0 5 1

C o p y r L g h It 1 9 8 8 ,I n t e lC o r p o r a to n , A

R r g h t sR e s e r v e d

PREFACE

INTRODUCTION
This manualsummarizes
techniques
that will be usefulto you asyou producean
applìcationsystembasedon the ExtendediRMX II OperatingSystem.A typical
developmentprocessgoesthrough thesestages:
.

Dividing the applicationinto jobs and tasks

o

Writing the codefor tasks

r

Writing interrupthandlers

.

Configuringand startingup the system

.

Debuggingan application

Use this manualasa referenceguidewhendeveloping
your applicationsystem.The
techniques
describedherewill helpyou savetime and avoidproblemsduringthe
development
process.
Informationhasbeenaddedto this manualto reilectchangesin the useof external
declarationINCLUDE files. Use of individualfiles,hintsfor efficiency,and tablesof the
Nucleus,BasicI/O System,Extendedl/O System,HumanInterface,ApplicationLoader,
and UniversalDevelopmentInterfacesystemcallswith their corresponding
external
declarationfile namesappearin Chapter2.

READERLEVEL
This manualassumes
that you are familiarwith the following:
o

the PL/M-286programminglanguage

.

PL/M-286 segmentationmodels

.

iRMX II jobs, tasks,mailboxes,physicalfiles or namedfiles, streamfiles, type
managersand compositeobjects,systemcalls,and segments

.

the SystemDebugger

ProgrammingTechniques

l

PREf'ACE

.

objectmodulelinking

o

objectlibraries

.

programmingin the iRMX II environmentusingPL/M-286

MANUALOVERVIEW
This manualis organizedin the lbllowingmanner:
Chapter1

This chapterprovidesinformationon PL/M-286segnentation
models.

Chapter2

how to invokeiRMX II systemcallsfrom
This chapterdescribes
your sourcecode.

Chapter3

occursbetweeniRMX
how communication
This chapterdescribes
jobs.
II

Chapter4

This chapterpresentsguidelinesfor stacksizes.

Chapter5

how to convertiRMX I (IRMX 86)
This chapterdescribes
applications
to iRMX II applications.This chapteralsodescribes
of your application.
how to improvethe performance

AppendixA

sampleiRMX II applications.
This appendirlistsand describes

CONVENTIONS
are usedthroughoutthis manual:
The followingconventions
.

User input appearsin one of the followingforms:

as bolded

tv

text

irirh!n

a screen

o

The term "iRMX II" refersto the ExtendediRMX II.3 OperatingSystem.

r

The term'iRMX I" refersto the iRMX I (iRMX 86)Operating
System.

.

All numbers,unlessotherwisestated,are assumedto be decimal.Hexadecimal
numbersincludethe "lI" radixcharacter(for example,0FFH).

ProgrammingTechniques

CONTENTS
CHAPTER1

PAGE

CHAPTER2
USING|RMXOII SYSTEMCALLS

PAGE

CHAPTER3
BETWEEN
iRMX@
COMMUNICATION
JOBS

PAGE

CHAPTER4
GUIDELINESFOR STACK SIZES

PAGE

ProgrammingTechniques

CONTENTS

CHAPTER4 (continued)

PAGE

APPENDIXA
EXAMPLEPROGRAMS

PAGE

vl

Programming Techniques

CONTENTS

APPENDIX
A (continued)

PAGE

TABLES
TABLE

A-1
A-2
A-3
A-4

PAGE

iRMX@II ExternalDeclaration
..........................2-5
INCLUDE Files.....................
InterfaceLibrariesandiRMXo II Layers.................
............2-11
StackRequirements
for Interrupts
andSystem
Ca11s.........-........-.
....-.-..-..-..-..-..4-4
LiteralFilesHelpfulWith Nucleus
System
CaIIs................................................A-5
LiteralFilesHelpfulWith BIOSSystem
Calls...............................................-....ALiteralFilesHelpfulWith EIOSSystemCalls....................................................ALiteral FilesHelpfulWith HumanInterfaceSystemCaIÌs...............................A-6

ProgrammingTechniques

Ytl

CONTENTS

FIGURES
FIGURE
A-1

A-3
A-4
A-5
A-6
A-7
A-8
A-9
A-10
A-11

v|ll

PmgrarnmingTechniques

1
CHAPTER
A PLIM-286
SELECTTNG
If/IODEL
SEGMENTATION

1.1 INTRODUCTION
Readthis chapteronly if you will be programmingiRMX II tasksusingPL/M-286. You
shouldalreadybe familiarwith the followingconcepts:
.

The PL/M-286programminglanguage

c

models
PL/M-2t16segmentation

.

iRMX II jobs,tasks,and segments

Whenyou invokethe PLIM-286compiler,you mustspecify(eitherexplicitlyor by
default)the segmentation
model(SMALL, COMPACT,MEDIUM, or t-qRGE) that
your programwill use. The segmentation
modelaffectsthe amountof memoryrequired
to storeyour application's
objectcodeand the perfbrmanceof the application.
n
(or on til0286
and tì0386processors
With operatingsystems
that run on lJ0[J6
processors
modelis importantfor
real addressmode),choosingthe appropriatesegmentation
reducingthe amountof memorythat an applicationuses.Memoryuseis important
becausethe 8086processoris limitedto I megabyteof memoryaddressspace.The
in protected
operatingsystem,on the other hand,usesthe 80286and 80386processors
virtual addressmode(PVAM). ìn PVAM, the processorcanaccessthe full memory
addressrangethat is available.Thus,programsizebecomeslessimporlant.
However,loadinga segmentregisterin PVAM takeslongerthanìoadingother kindsof
instructions.If you canminimizethe numberof timesthe processormustswitch
model
will improve.Becausethe segmentation
applicationperformance
segments,
proper
minimizes
the
the
model
determineshow codeand dataare stored,choosing
perlbrmance.
and increases
numberof segmentswitches,
modelwill attainthe highest
The followingsectionsexplainwhichsegmentation
while still satisfying
systemrequirements.
performance,

ProgrammingTechniques

l-l

SELECTINGA PL/M-286 SEGMENTATION MODEL

1.2 WHATARETHESEGMENTATION
MODELS?
The four segrnentationmodelssupportedby PL/M-286 are SMALL, COMPACT,
MEDIUM, and [,ARGE. T\e PL/M-286 User'sGuidcfor ikMX 286Systemsdescribes
eachof thesemodelsin detai.l.This sectionqivesa brief overviewof each.
SMALL

Code sectionsfrom all linked modulesare placedin the samecode
whichis addressed
segment,
by CS. Data and stacksectionsare
placedin the samedatasegment,
whichis addressed
by both DS
and SS.

COMPACT

Codesectionsfrom all linkedmodulesare olacedin the samecode
whichis addressed
segment,
by CS. Data sectionsare placedinto a
singledata segnrent,which is addressedby DS. Likewise,stack
sectionsare placedinto a stacksegment,which is addressedby SS.

MEDIUM

The codesectionfrom eachcompiledmodule is placedin its own
codesegrnent,
enablingthe total amountof codeto be more than
64K bytes.Data and stacksectionsfrom all finkedmodulesare
placedinto a sing.ledata segment,which is addressedby both DS
and SS.
During programexecution,
the CS registeris updatedwhenevera
PUBLIC or EXTERNAL procedureis activated.

TARGE

Codeand datasectionsfrom eachcompiledmoduleare placedinto
their own codeand datasegments,
enablingthe total amountof
codeand datato be more than64K bytes.Stacksectionsare
placedinto a sing.lestacksegment,which is addressedby SS.
In I-ARGE model,codeand datasegments
are paired. During
programexecution,
both the CS and DS are updatedwhenevera
PUBLIC or EXTERNAL nrocedureis activated.

Specifyingthe ROM or RAM compilercontrolsdetermineswhetherthe constants
you
define in your prog'ams are placedin the codeor data areas. This providesadditional
controlon the sizeof thosesegments.

1.3 RESTRICTIONS
The fewer times your applicationmust load the segrnentregisters,the better it performs.
To improveperformance,
choosethe segmentation
modelthat usesthe fewestsegments
but still supportsthe requiredamountof codeor data. This practicemeansstartingwith
the SMALL modelandworkingup to the TARGE model,usingthe first modelthat can
handlethe amountof codeor datain your application.However,somemodelsplace
restrictionson iRMX II ooerations.

t-2

PmgrammingTechniques

SELECTINGA PLIM-286 SEGMENTATION MODEL

1.3.1SmallModelRestrictions
Whenyou compileprogramsusingthe PL/M-286SMALL control,all POINTER values
are 16bits long. This introducessomerestrictions,includinginability to addressthe
contentsofan iRMX II segmentreceivedfrom anotherjob. Becauseoftheserestrictions,
that canuseSMALL modelare thosethat invokeUDI systemcalls
the only applications
only. Applicationsthat invokeotheriRMX II systemcallscannotusethe SMALL
seprnentation
model.

1.3.2 CompactModelRestrictions
You cannotcompileexceptionhandlersin the COMPACT modeland link them with
other COMPACT prcrcedures,
becausethe operatingsystemalwaysmakesa far call to an
exceptionhandler.To includeexceptionhandlers,compilethem usingthe l-A.RGEsize
control.

1.3.3MediumModelRestrictions
When usingPLIM-286 MEDIUM model,you losethe optionof havingthe Operating
allocatestacksfor tasksthat are createddynamically.Anticipateeach
Systemdynamically
task'sstackrequirements,
and explicitlyreservememoryfor eachstackduring
configuration.

1.3.4 UsingLargeModel
with the PL/M-286[-A.RGEmodel. If your applicationis too
There are no restrictions
usethe I-ARGE model.
largefor the other models,or you wishto avoidrestrictions,

1.4 CHOOSING
A SEGMENTATION
MODEL
model:
For bestperformance,
usethe followingguidelines
whenchoosinga segmentation
.

If your codeand datacaneachfit into a 64K-bytesegment,usethe COMPACT
model.

.

If your applicationis too largefor COMPACT,considerusingCOMPACT
each
subsystems.
This enablesyou to setup your applicationin pieces(subsystems),
segment
of whichadheresto the COM PACT model. With COMPACT subsystems,
registersare changedonly when you call proceduresor accessvariablesthat residein
requires
one of the other subsystems.However,creatingCOMPACT subsystems
more technicalknowledgethan the other alternativesand it requireschangesto the
sourcecode. Refer to the PL,/M-286User'sGuidefor |RMX 286Systemsfor more
information.

ProgrammingTechniques

l-3

SELECTING A PL/M-286 SEGMENTATTONMODEL

.

MEDIUM offersthe nextbest
If you decidenot to useCOMPACT subsystems,
performance.MEDIUM, however,requiresthat all dataand stackfit into a single
64K segment.

.

If all elsefails,usel-ARGE model. Thereare no sizeor iRMX II restrictionswith
I-ARGE, but this modelresultsin the largestnumberof segmentregisterswitches.

To determinewhetheryour applicationcanfit into the COMPACT model,try compiling
and bindingit underthe COMPACT model. If the applicationis too largefor
COMPACT,BND286will return an error message.At that point,you can decidewhether
to useMEDIUM, [-A,RGE,or recodeyour applicationfor COMPACT subsystems.
If your applicationwill be loadedinto RAM, you maybe ableto usethe ROM or RAM
controlsto adjustsegmentsizesso that your applicationfits into the COMPACT or
MEDIUM models.ThesecontrolsspeciSwhereyour program'sconstants
will reside.
For example,ifyour application's
datais slightlylargerthan 64K bytes,specifyingthe
ROM control(whichplacesthe constantsin the codesegment)mightalÌowthe remaining
datato fit in a 64K segment.This couldmakeyour codeeligiblefor the COMPACT or
MEDIUM models.

l-4

ProgrammingTechniques

CHAPTER
2
US IN G| R MX @
II SYSTEMCALLS

2.1 INTRODUCTION
Readthis chapterif you write programsthat useiRMX Il systemcalls. You should
alreadybe familiarwith the foÌlowingconcepts:
o

Systemcalls

.

Object module linking

.

Objectlibraries

.

PL/M-286segmentation
models

This chapterexplainshow to includeiRMX II systemcallsin your programs,and how to
bind your codewith the necessary
iRMX II libraries.

2.2 CODINGTHESYSTEMCALLS
The first step in invoking iRMX II systemcallsis placingsourcestatementsin your code.
The following sectionsdiscusshow to placesystemcallsin your PL/M-286 and ASM286
sourcecode.

2.2.1 InvokingSystemCallsFromPL/M-286
The iRMX II systemcall referencemanualsusethe PL/M-286 syntaxwhen listing the
iRMX II systemcalls. Whenwritingcode,usethe synt:rxlistedin the systemcall
referencemanuals.

2.2.2 lnvokingSystemCalls FromAssemblyLanguage
Programscommunicate
with the operatingsystemcallinginîerfaceproceduresdesigned
for usewith programswritten in PL/M-286. To invokesystemcallsfrom assembly
programsmustobeythe procedure-calling
languageprograms,the assembly
language
protocolusedby PL/M-286. For example,ifyour ASM286programusesthe
interface
SEND$MESSAGEsystemcall,thenyou mustcall the rq$send$message
procedurefrom your assembly
language
code.

PmgrammingTechniques

2-l

USING iRMX@ II SYSTEMCALLS FROM I-ANGUAGES

The techniquefor callingPL/M-286 proceduresfrom assemblylanguageis describedin
theASM28ó Macro AssemblerOperatingInstructionsfor \RMX 28ó Sysfems.This section
presentsan overviewof the technique.
In general,to call a PL/M-286 procedure,first push all the parametersonto the stackand
thencall the procedure.Pushthe parametersin the order theyare listedin the system
call referencemanuals;that is, startingwith the leftmostparameter.Long pointers
(completeaddresses
consisting
of a selectorand an offset)shouldbe pushedastwo words:
the selectorfirst, then the offset.
The CALL instructionalsoplacesthe return addressofyour callingprocedureonto the
stack. This enablescontrol to return to your program after the systemcall completes.
Somesystemcallsreturn values. In assemblylanguage,the returnedvaluesare available
in registers,as follows:
Type

Register

BYTE
WORD
DWORD
INTEGER
POINTER
SELECTOR

AL
AX
DX:AX
AX
ES:BX
AX

When writing assemblylanguageroutinesthat call PLIM-286 interfaceprocedures,you
mustadhereto a segmentation
model(COMPACT,MEDIUM, or I,ARGE) because
conventions
for makingcallsdependon the segmentation
model.
Ifyour applicationis written entirely in assemblylanguage,you can arbitrariìy selectan
interfacelibrary(COMPACT or l-ARGE) basedon whetheryour applicationmakesnear
or far calls. Sizeand performanceadvantagescan be gainedby usingthe COMPACT
interfaceprocedures,becausetheir procedurecallsare all NEAR. The IARGE interface,
whichhasprocedures
that requireFAR procedurecalls,is advantageous
only ifyour
applicationcode is larger than 64K b1tes.
However,if someof your applicationcodeis written in PL/M-286, your assembly
languagecodeshouldusethe sameinterfaceprocedures
asthoseusedby your PL/M-286
code.

7-)

PmgrammingTechniques

USINGiRMX@II SYSTEMCALLSFROM LANCUAGES

language.
The followingexampleshowshow to call iRMX II systemcallsfrom assembly
modelis used.
that the COMPACT seqmentation
The examoleassumes
DATA segnent RW FUBLIC
seg_tok
excèp

Dl1l ?
Dl.l ?

DAÎA ENDS
coDE segnent ER PUBLIC
e x t r n r q c r e a t e s è g m e n t:

near

ny_prog PROCnear
; Gec addressability
push bp
uìov bp, sp
;
; Save caller's
push
mov

to parameters

DS and obtain local

DS

ds
ds, daÈa
.

Typical ASMstatemenEs
:
i
; s e g _ t o k - r q $ c r e a t e $s e g r n e n c ( 4 0 0 H , @ e x c e p ) ;
;
push 400H
push ds
push offset excep
call
rqcreatesegment
seg_tok, ax
uÌov

PmgrammingTechniques

t_1

USING iRMX@ II SYSTEM CALLS I.'ROMI-ANGUAGES

; IF except o

E$OK THEN GOTOe r r o r ;

cmp excep, 0

:
Typical ASMstaLenents

rny_prog ENDP
CODE
ENDS
END

2.2.3 lnvokingSystemCallsFromC
Programswritten in c caneasilydirectlyaccessiRMX II systemcallsby definingthem as
alienprocedures.
For example,the followingIinesdefinethe CREATE$SEGMENTand
DELETE$SEGMENTsystemcallsasalienprocedures.
alien
alien

unslgnèd short rqcreatesegment( )
r q d e l e t e s e g r n e n t( )

Ifyou invokesystemcallsfrom C, you mustpassparametersofthe sametypeexpectedby
the systemcal.ls.The c compilerdoesno tlpe checkingof arienprocedurei.Raiher,it
assumes
the parametert)?esare thosethat are usedin the actualcall. In oarticular.32.
bit constantsshouldbe explicitlymarkedby usingthe L suffix.

2.3 INCLUDING
EXTERNAL
DECLARATION
FILES
Whenyou call a procedurethat is not definedin your currentprogrammo in the previousscreenis the decrementing
count. To continue,pressa key. After pressinganykey,the exampleclearsthe screen
and promptsyou with the followingmessage:
Please hit

a key which will

be forlrarded to task2 for processing.

Let's assumeyou enterthe letter X for the first "counted"keystroke.The examplereads
the X from the terminaland passesit on to TASK2. TASK2 "wakesup" and prints out the
following messageto the screen:
T A S K 2P R O C E S S I N G
Please hit a key which will

be forwarded to cask2 for processing
' . .

The X characters
that TASK2 printsto the screencontinueto appearat the rate ofone
per second. The characterwill repeat indefinitelyuntil you enter anotherkeystroke.
Also,noticethat the promptto enteranotherkeystrokeis buriedin the middleof
message
and the stringof lettersthat it displays.A closeexamination
TASK2'sprocessing
usedto time the output
of the mainprogramcodeandTASK2 showthe synchronization
to achievetaskcommunication.
of thesetasks.The tasksusea semaDhore

PmgrammingTechniques

A,-25

EXAMPLE PROGRAMS

concludethe example.The followingoutputassumes
Enteringthe nexttwo keystrokes
you enter the charactersY and Z:
Y
TASK2 PROCESSING
Please hlt a key which wlll

be forwarded to task2 for processlng
. . . .

îASK2 PROCESSINC
Z
T h l s c o n c l u d e s t h e P L / M D e m oP r o g r a m .
This vould be a good time to exanine the program code to see hov
these features work.
l.le wiII

n o ' , re x i t

by generacíng an error.

INTERNALERRORAT il 340 STATUS: QQ23: E$SUPPORT

After you enterthe final keystroke,the mainprogramcoderecognizes
that you have
enteredthreecharacters.This fact signalsthe codeto end the program. Noticethat the
mainprogramcodeendsthe programbeforeTASK2 canbeginprintingthe third
characterto the consolescreen.

4.3 EXAMPLE
2 . TASKCOMMUNICATION
The secondexampleis a simpleone that showsone methodthat two taskscanuseto
communicate
with eachother. The exampleis written in PLIM-286and canbe invoked
by the operatorfrom the HumanInterfacelevel.

A.3.1 ProgramSourceCode
FiguresA-1, A-2, andA-3 list the sourcecodeof this example.This exampleincludes
threetasks:an initializationtask(calledINIT) that createsthe othertwo tasksand a
mailbox,and two tasks(calledALPHONSE and GASTON) that exchange
messages
via
mailboxes.The nextfew paragraphs
discusshow thesetasksoperate.
The exampleruns when invokedat the Human Interfacelevel from the keyboard. The
taskcalledIMT runsfirst,creatinga mailboxthat it catalogsin the root directoryunder
the name"master.'It createsthe tasksGASTON andALPHONSE.and then susDends
itself.

A,-26

Pmgramming Techniques

EXAMPLE PROGRAMS

When GASTON receivescontrol, it getsthe token for the mailboxcreatedby INIT (by
looking up the name"master"in the root job's objectdirectory). It then createsa segment
(in which it will placea message)and a responsemailbox(to which ALPHONSE will send
a reply). Next it goesinto a loop in which it placesa messagein the segment(after
displayingit on the screen),sendsthe segmentto the mastermailbox,and waits at the
responsemailboxfor a reply.
When ALPHONSE receivescontrol, it too getsthe token for the mailboxcreatedby IMT
(again,by looking up the name in the root job's object directory). It then goesinto a loop
in which it waits at the mailboxfor a message,
checksto seeif the token it receivedis a
segment,and if it is, placesits own messagein the segrnent(after displayingit on the
screen),and sendsthe segrnentto the responsemailbox.
By usingthe two mailboxes,the tasksALPHONSE and GASTON are synchronized.
GASTON sendsa message
to the first mailboxand waitsat the secondone before
continuing.ALPHONSEwaitsat the first mailbox.When it receivesa message,
it sends
a replyto the secondmailboxandwaitsat the first for anothermessage.This cycle
continuesfor 15messages.
After sendingits fifteenth message,GASTON drops out of the loop. lnstead of sendinga
segmentto the mastermailbox,GASTON tJisplays
a final message
to the screenand sends
the tokenfor a task(the tokenfor the INIT task)to the mailbox.WhenALPHONSE
receivesthis tokenand findsit is not a sesment,ALPHONSE dropsout of its loop and
deletesitself.
To finishthe processing,
GASTONcausesthe INIT taskto resumeprocessing
(remember,the INIT tasksuspended
itselfearlier). When INIT takesover,it deletes
both offspringtasksand issuesan EXIT$IO$JOB systemcall to return control to the
Human Interfacelevel.
In this example,eachof the threetasksare containedin separatefiles. The procedures
for compiÌingand linking assumethat sourcefiles are calledINIT.P28 (shownin Figure
A-1), ALPHONSE.P2S(shownin FigureA-2), and GASTON.P28(shownin FigureA-3).

PmgrammingTechniques

a-27

EXAMPLE PROGRAMS

$compact
$debug
init:
DO;
DECIAREtoken
DECIAREfi fo
DECIAREE$OK
DECIAREself
DECIAREtask$priority
DECIAREcall lng$task
DECTAREca l l ing$ tasks $j ob
DECIAREnastersrnbox
DECIAREstatus
DECIAREinit$Èask$token
DECI-AREgas Èon$task$ token
DECIAREalphonse$ task$ token
DECIAREalphonse$ s tart$add
DECIAREgas ton$ start$add
DECI^ARE
gaston$ds
DECIAREalphonse$ds
DECIAREstack$po inter
DECLAREs tack$s 1ze
DECIAREtask$flags

LITERALLY
LITERALLY
LITERALLY
LITERALLY
BYTE;
TOKEN
;
TOKEN;
TOKEN;
WORD
;
TOKEN
;
TOKEN
;
TOKEN;
POINTER;
POINTER;
WORDEXTERNAL;
WORDEXTERNAL;
POINTER;
I,IORD
;
WORD
;

,SELECTOR'
;
,0,;
,0,;

gASTON: PROCEDURE
EXTERNAL;
end gaston;
alphonse:
Y

U

PRoCEDURE
EXTERNAL;

drPrrur'5c,

$inc lude (/rrnx286/inc/nuclus. ext)
$i nclude (/rux286 / inc / eios. ext)
exit:
PROCEDURE
PUBLIC;
lF status o E$OK THEN
CAUSE$INTERRUPT(3);
END;

/* An error
/*

has occurred

Exi t

Figurc A-1. ExamplePLIM-286 Application (INIT)

A-28

PmgrammingTechniques

EXAMPLE PROGRAMS

c a l l i n g $ t a s k s $ j o b : SE L E C T o R $ o( N
F IL) i
: SELECT0R$0F(NIL);

calling$task

g a st o n 9 s t a r t 9 a d d - @ g a s t o n ;
a l p h o n s e $s t a r t $ a d d - @ a l p h o n s e ;
stack$pointer : NIL;
SEaCKìSIZe

-

,/*
/*
/*
,/*
/*
,/*

x/
*/.
*/
*/
*/
*/

Directory in which to
catalog obj
Task whose priority
will
be Sotten
SeC up start addresses
for tasks

,/* Values for creating

tasks *,/

lt4H;

task$flags - 0;
initgtask$coken
self,
G st a t u s ) ;

- R Q $ G E T $ T A S K $ T O K (E N S
/*

Cet token for

init

*/

task

IF status o E$OK THEN
C A L Le x i t ;

/*

has occurred

*/

CALL RQ$CATALOC$OBJ
ECT (
callingStasks$job.
init$task$token,
@(4,'init'),
@ st a t u s ) ;

/* Catalog task token in
/* direclory of calling
,/* task's job

*/
*/
*/

IF scaÈus o E$oK THEN
CALL exit;

/* An error

*/

(
master$mbox - RQ$CREATE$MAILBoX
fifo,
@ s t a t u s) ;

/* Create mailbox tasks use
,/* to pass messages.

*/
*/

l F s t a t u s o E 9 O KT H E N
CALL exit;

/* An error

*/

CALL RQ$CATALOG$OBJ
ECT (
calling$tasks$job,
masCer$mbox,
G(6,'master'),
@ s t a t u s) ;

/*
/*
/*

IF status o E$oK THEN
C A L Le x i t ;

/* An error

- R Q $ G E T $ P R I O R I T( Y
task$priority
calling$task,
G st a t u s ) ;

,/* Cet prioríty
/* task

I F s t a t u s o E $ O KT H E N
CALL exit:

/* An error has occurred

An erroî

has occurred

has occurred

Catalog mailbox in
direcxory of callÍng
task's job

has occurred
of calling

*/
*/
*/

*/
*/
*/
*/

Figure A-1. Example PL/M-286 Application (INIT)
(continued)

PmgrammingTechniques

A-29

EXAMPLEPROGRAMS

task$priority

- task9Priority

+ 1;

j:

Pick lower
new tasks

prioricy

for

*/
*/

(
alphonse$ task$ token : RQ$CREATE$TASK
task$prlorlÈy,
alphonse$ s tart$add ,
S E L E C T O R $(0@
F a l p h o n s e $ d )s,
stack$pointer,
stack$s1ze,
task$fl-ags,
G s t a c u s) ;
I F s t a t u s o E $ O KT H E N
CALL exit;

/ * An error

gas ton$ task$ token - RQ$CREATE$TASK(
task$priority,
g a st o n $ s t a r t $ a d d ,
S E L E C T o R $ o F ( G gt o
an
s $ d s) ,
stack$pointer,
stack$slze,
task$f1ags,
Gstatus);

/*

IF status o E$oK îHEN
CALL exit;

/* An error has occurred

(
CALL RQ$SUSPENDgTASK
calllng$task,
@status);

,/* Suspend self and let
,/* other tasks run

IF status o
CALL exlt;

,/* An error has occurred

*/

,/* An error

* /

E90K THEN

has

^^.i'rra.l

* /

Create tasks

*/

(
CALL RQ$EXIT$IO$JOB
0,
NIL,
Gstatus);
I F s t a t u s o E $ O KT H E N
CALL exit;
LoOP:
END;

GoTO LOOP;

If
in

has

nnnrrrrarl

we got here,
trouble

we're

lnit

FigureA-1. ExamplePLIM-286Apprication(INIT)
(continued)

A-30

Pmgramming Techniques

EXAMPLE PROGRAMS

$conpacc
$debug
alphonse:

D0;

DECIARECR
DECIARE LF
DECIAREtoken
DECIAREvait$forever
DECIARE FOREVER
DECIAREself
DECIAREE$OK
DEoIARE cal l lng$ tasks $j ob
DECIARErnaster$nbox
DECIARErespons e $rnbox
DECIAREstatus
DECIAREtype$code
DECIAREt ime$l imi t
DECIAREcount
DECIAREalphonse$ds
DECIAREseg$token
DECIAREseg$s iz e
DECI-AREdi sp lay$rness age ( * )
CR,LF, 'After you, Gaston',

'13';
'10';
,SELECTOR';

LITEMLLY
LITERALLY
LITEMLLY
LITERALLY
LITERALLY
LITERALLY
LITERALLY
TOKEN
;
TOKEN
;
TOKEN
;
WORD;
WORD
;
ifORD;
I.IORD
:
W O R DP U B L I C ;
TOKEN
;
WORD
;
BYTE
CR, LF);

, oF['Fr ' .
, LTHILE1 '

;
, s ELECTOR$oF
(NrL) ',;

DATA (

(
DECI^A,RE
message BASEDseg$token STRUCTURE
count
rext(25)
EXTERNAL;
exit:
PRoCEDURE
end exlt;

BYÎE ,
BYTE);

$ include ( /rmx286/inc/nuclus . ext)
$include (/rrnx286 / Lncl\i . exx)
alphonse:

P R O C E D U RPEU B L I C ;

/*
/*
seg$size - 32;
/*
cal1lng$ tasks $j ob - SELECTOR$OF(NIL); /*
/*

Delay factor for message
display
size of nessage segnent
Directory in which to
look up obj

*/
*/
*/
*/
*/

(
rnaste r$nbox:RQ$LooKUP$OBJECT
c a l l i n g $ c a s k s$ j o b ,
'rnaster'
),
G(6,
wait$forever,
Gstatus);

Look up nessage rnailbox

*/

tlme$lirnlt - 25;

/*

Figure A-2. ExamplePL/M-2Eó Application (ALPHONSE)

Progranming Techniques

A-3r

EXAMPLE PROGRAMS

I F s t a t u s o E $ O RT H E N
CALL exit;

/* An error has occurred

*/

DO FOREVER;
s e g $ t o k e n - R Q $ R E C E I V E $ M E S S( A G E / *

Receive Gaston's response */

nrcrarqmh^Y

walt$forever,
@response$rnbox
,
Q s t a c u s) ;
IF status O
CALL exlt;

E$oK THEN

,/* An error

tyPe$code : RQSGET$TYPE(
seg$token, /* íL is */
G st a t u s ) ;

/*

I F s t a t u s o E $ O KT H E N
CALL exit;

/* An error

IF type$code o 6 THEN
DO;
(
CALL RQ$SUSPEND$TASK
s e1 f ,
@starus);

,/* If

I F s t a c u s o E $ O KT H E N
CALL exit;

has occurred

See what kind of object

has occurred

not a segnent, stop

/* An error

has occurred

*/
*/

*/
x/

*/

END;
n e s s a g e. c o u n t : s i z e ( d i s p l a y $ r n e s s a g e ) ;
C A L L M O V (BG d i s p l a y $ m es s a g e , G n e s s a g e .r e x r , s i z e ( d i s p l a y g m e s s a g e ) ) ;
C A L L R Q $ CS
$E N D $ C O $ RPEOSNE
S (
NIL,
0,
G m e s s a g ec. o u n t ,
G st a t u s ) ;

/x Send nessage to screen

*/

I F s t a t u s O E $ O KT H E N
CALL exit;

/* An error has occurred

*/

(
CALL RQSSLEEP
tine$linit,
Gstatus ) ;

/* Wait awhile ro give user
,/* time to see the nessage

*/
*/

FigureA-2. ExamplePL/M-2E6Application(ALPHONSE)
(continued)

A-32

Programrning Techniques

EXAMPLE PROGRAMS

I F s t a t u s o E $ O KT H E N / * A n e r r o r h a s o c c u r r e d
CALL exit;

*/

( /* Send nessage to response */
CALL RQ$SEND$MESSAGE
*/
r e s p o n s e $ m b o x, / * m ai l b o x
seg$token,
SELECT0R$0F(NrL),
Qstatus);
IF scatus o E$oK THEN /* An error
CALL exlt;

has occurred

*/

/* FOREVER */
,/* Alphonse */

END;
END;
END;

Figure A-2. ExamplePL/M-286 Application (ALPHONSE)
(continued)

$conpact
$debug
gaston: D0;
DECI^ARECR
DECIARE LF
DECIAREtoKen
DECIAREfi fo
DECI-AREself
DECIARElrait$forever
DECIAREE$OK
D E C L { R Ep a r e n t $ t a s k

LITEMLLY
LITERALLY
LITEMLLY
LITEMLLY
LlTERALLY
LITEMLLY
LITERALLY
TOKEN
;

DECIARE cal l ing$ tasks $j ob
DECI-AREnaster$nbox

TOKEN:
TOKEN;

TOKEN
DECIAREre sponse$rnbox
;
WORD
DECIAREs tatus
;
WORD
tirne$linit
DECTARE
;
WORD
DECLAREcounc
;
WORD
D E C I A R Ef i n a l $ c o u n t
;
W O R DP U B L I C ;
DECI-AREgas ton$ ds
ToKEN;
D E C I A R Es e g $ t o k e n
tioRD;
D E C I A R Es e g $ s i z e
BYTE
DECIAREmain$rnessage (*)
CR,LF, 'After you, Alphonse', CR, LF);

,10,;
,SELECTOR';
'0'
:
, SELECTOR$OF
( NIL) ' ;
,OFFFFH'
;
,0,;

DATA (

Figure A-3. ExamplePL/M-2E6 Application (GASTON)

ProgrammingTechniques

A-33

EXAMPLE PROGRAMS

DECI-AREflnal$rnes sage ( * )
CR,LF, 'If you inslst,

DATA (

BYîE
Alphonse', CR, LF);

(
DECIAREnessage BASEDseg$token STRUCTURE
count
text(27)

BYTE,
BYTE);

exlt
PROCEDURE
EXTERNAL;
end exlt;
$ include ( /rmx2 8 6/inc/nuc lus . ext )
$ include (/rrnx286 / ír,c /hi . ext)
gaston

P R O C E D U RPEU B L I C ;

count - 0;
flnalScount - 15:
tlrne$linit : 25;

/*
,/*
/*
/*
/*
,/*
/x

lniCialize
count
Set number of loops
DeLay factor for display
to screen
S i z e o f r n e s s a g es e g n e n t
Directory in which to
ì-ook up obj

*/
*/
*/
*/
*/
*/
*/

naster$nbox - RQ$LOOKUP$OBJ
ECT (
cal l ing$ tasks $j ob,
@(6,'rnaster'),
wait$forever,
G st a c u s ) ;

/*

Look up message rnailbox

*/

I F s t a t u s O E $ O KT H E N
CALL exÍr;

/* An error

response$rnbox : RQ$CREATE$MAILBoX
(
fifo,
@ s t a t u s) ;

/*

I F s t a t u s O E $ O KT H E N
CALL exít;

/* An error has occurred

seg$size : 32;
calllng$tasks$job

: S E L E C T O R $(O
NFI L ) i

s e g $ c o k e n - R Q $C R E A T ES$E G M E N( T
seg$size,
@status);
IF status O E$oK THEN
CALL exit;

/*

has occurred

Create response mailbox

create lnessagesegnenr

/* An error

has occurred

*/
*/

*/
*/

*/

Figure A-3. Example PL/M-286 Application (GASTON)
(continued)

A-34

Programming Techniques

EXAMPLE PROGRAMS

DO l,v'}tl
LE count < f inal$count;
m e s s a g ec. o u n L - s i z e ( m ai n $ m e s s a g)e;
C A L L M o V B( @ mian $ m es s a g e, @ m e s s a g et e. x t ,
C A L L R Q $C $SE N D $ C O $ RPEOSNE
S (
NIL,
0,
/ ) * ^s^s^d^É^E^ . L^v^u.r .r L- ,*

S I Z E ( n a i n $ m e s s a g e )) ;
*/

/*

Send message to screen

IF scatus O E$oK THEN
CALL exit;

/*

An error

C A L L R Q S S L E E P(
tineglinit,
G st a t u s ) ;

/*
/*

tlait awhile to give user
time to see the message

*/
*/

IF status O E$OK THEN
CALL exit;

/*

An error

*/

C A L L R Q $ S E N D $ M E S S A G( E
naster$mbox,
seg$token,
response$mbox,
@status ) ;

/*

Send message to rnaílbox

*/

IF status o E$OKTHEN
CALL exit;

/*

An error

*/

s e g 9 t o k e n : R Q $ R E C E M $ M E S S A C E(
response$nbox ,
wait$forever,
NIL,
G st a t u s ) ;

/*
/*

Receive response
Alphonse

IF status O E$OK THEN
CALL exit;

/*

An error

/*

l,IHtLE

Yxrr

G st a t u s ) ;

count

-

has occurred

has occurred

from

has occurred

count+1 ;

END;

/*
/*

Send final
screen

*/
*/

*/

x/

r n e s s a g e. c o u n t : s i z e ( f i n a l $ m e s s a g e ) ;
C A L L M O V B ( G f i n a l $ m e s s a g e , @ m e s s a gtee.x t , S l Z E ( f i n a I $ m e s s a g e )
C A L L R Q $C $SE N D $ C O $ R EPSO N S
E (
NlL,
0,
@ m e s s a g e. c o u n t ,
Gstatus ) ;

*/

has occurred

) ;

message to

*/
*/

FigureA-3. ExamplePL/M-286Application(cASTON)
(continued)

Programming Techniques

A-35

EXAMPLE PROGRAMS

has occurred

*/

I F s t a t u s o E S O KT H E N
CALL exit;

,/* An error

(
CALL RQSSEND$MESSAGE
rnaster$mbox,
rnaster$rnbox,

*/
/* send token for rnailbox to
*/
s
t
o
p
w
i
J
l
T
h
i
s
m
a
i
l
b
o
x
.
,/*
*/
o
t
h
e
r
t
a
s
k
.
/*

s F I F c r n p q n F / N - tT . )

Gstatus);
has occurred

I F s t a t u s o E $ O KT H E N
CALL exit;

,/* An error

- RQ$LOOKUP$OBJ
parent$task
ECT (
'
calling$tasks$job,
@(4,'init'),
vait$forever,
€status ) ;

/* Look uP token for
/* task

rF status o E$oK THEN
CALL exit;

/* An error has occurred

CALL RQ$RESUME$TASK(
parent$task,
Qstatus ) ;

,/* Resurne calling
/* cleanuP

rF status o E$oK THEN
CALL exit;

/* An error has occurred

C A L L R Q $ S U S P E N D $ T A( S K
self,
Gstatus);

/*

IF stacus o E$oK THEN
CALL exit;

,/* An error

END;
END;

/*

Suspend self

calling

task for

just

*/
*/
*/

*/
*/
*/
*/

in case */

has occurred

*/
*/

Gaston

FigureA-3. ExamplePL/M-286Application(GASTON)
(continued)

A.3.2 lncludeFiles
As shownin FiguresA-l throughA-3, eachof the taskscontains$INCLUDE statements
of the iRMX II systemcalls. INIT.P28usesboth
to includethe externaldeclarations
Nucleusand ExtendedI/O Systemcalls,so it includesthe externalfilesfor both those
useNucleusand HumanInterfacesystem
layers.ALPHONSE.P28and GASTON.P2S
calls,so they include the externalfiles for thosetwo layers.

A-36

ProgrammingTechniques

EXAMPLEPROGRAMS

Eachtaskcontainsits own setof includefilesbecause
eachis a separately
compiled
module. If the taskswereall containedin the sameprogrammodule,only one set of
wouldbe needed.
$INCLUDE statements

4.3.3 Compilingand Bindingthe Code
The followingcommandis usedto compilethe threefilesof PL/M-286sourcestatements:

The PLM286commandsdo not includecontrolsfor selecting
the modelof segmentation
(SMALL, COMPACT,MEDIUM, or I-ARGE) because
the $COMPACTcontrolwas
alreadyincludedin the sourcefiles.
The compilerproducesthreefilesof objectcode. Becausethe PLM2tl6commanddid not
speci! namesfor the objectcodefiles,the filesare giventhe namesINIT.OBJ,
ALPHONSE.OBJ,and GASTON.OBJby default.
After compiling,the objectfilesmustbe boundtogetherand boundwith the iRMX ll
interfacelibraries.The BND286statementusedto do this is as follows:

ln this BND286statement,
the threeobjectlìles(INIT.OBJ,GASTON.OBJ,and
ALPHONSE.OBJ)are boundtogetherwith two libraries:PLM286.LIBand
RMXIFC.LIB. PLM286.LIBis the standardPLIM-286librarydistributedwith the
compiler. RMXIFC.LIB is the COMPACT versionof rhe iRMX II interfacelibrary.
The OBJECTcontrolspecifiesthe nameof the executable
file generatedby BND286. In
this case,the file is calledSAMPLE.
The SEGSIZE(STACK(+ 1500))controlspecifies
that 1500bytesof stackshouldbe
reseryedin additionto the amountrequiredby the program.As listedin Chapter4, this
amountrepresents
the amountrequiredby iRMX II applications
that includethe Human
Interface.
The RCONFIGURE(DYNAMICMEM(5000H))controldirectsBND286to producean
STL (single-task
loadable)moduleand îo assigna minimumof 5000Hbytesof dynamic
memoryto the module.

PmgrammingTechniques

A-37

EXAMPLE PROCRAMS

A.3.4 Runningthe ExamPle
The BND286 commandproducesan executablefile calledSAMPLE. To run the example,
at the Human Interfaceprompttypethe nameof the file.

HANDLER
A.4 EXAMPLE3 - CONTROL.C
This sectionshowsan exampleof a CONTROL-Chandler.It is written in PL/M-286and
lt canbe invokedfrom the HumanInterfacelevel.
usesUDI callsexclusively.

A.4.1 SourceCode
FigureA-4 containsthe sourcecodefor the CONTROL-Cexample(a file called
ECHO.P28).The main programechoesto the screenanyline enteredat the terminal.
However,beforestartingthis infiniteloop,the programinstallsa CONTROL-C handler
and opensa connectionto the terminal. The CONTROL-Chandler(a procedurecalled
CC$TRAP)is invokedwhenthe operatorentersa CONTROL-Cat the keyboard.It
to the terminal,and exitsto the
resetsthe CONTROL-C handler.issuesa message
Human Interface.

A-38

PrograrnmingTechniques

EXAMPLE PROGRAMS

$ l a r g e D E B U GP t . l ( 7 9 ) R o M
E C H OD O ;
( /RMX28 6/rNC/RMXPLM.
EXr )
$ TNcLUDE
DECI.ARE
NUL
JOB$ABORTED
CR
LF
READ$WRITE
TRUE
FALSE

LITERALLY
LITERALLY
LITEMLLY
LITERI.LLY
LITERALLY
LITEMLLY
LITEMLLY

' S E L E C T O R $ O F ( N I' L )
,
' ODH'
,
'OAH'
,
'3'
,
'OFFH'
,
'O'
;

DECI-ARE
CONSOLE
TOKEN,
ACTUAL
WORD,
STATUS
WORD,
I O $ B U F F E R (2 5 6 )
BYTE;
DEClARE
INIT$MSG( * ) BYTE DATA( CR,LF, ' DNTERDATA FROMKEYBOARD'
, CR,LF) ,
* G)( B Y T E D A T A( C R ,L F , ' G O N N AG O B Y E B Y E N O W " C R , L F ) ;
CONTROL$CSMS
CC$TRAP: PROCEDURE PUBLIC;
DECIARE
'WORD;
STATUS
L e t t h e O n e r a l - o rk n o w t h a L w e a r e f i n i s h e d .
(
CALL DQ$hT.ITE
CONSOLE,
@coNTROL$C$MSG,

srzE(coNrRoL$c$Msc),

GSTATUS
);
Return control

back to the CLI

C A L L D Q $ E X I T (J O B A B O R T E)D
;
E N DC C $ T R A P ;

Figure A-4. CONTROLC Handler Example

PmgrammingTechniques

A-39

EXAMPLEPROGRAMS

Main line code is required so the APplication Loader gets an
We vill
open a connection to the terninal
record.
initialization
the interrupt
a n d s e È a C O N T R O L -hCa n d l e r i n p l a c e b e f o r e i n s t a l l i n g
t
h
e CONTROL-C
k
e
y
b
o
a
r
d
t
h
e
e
n
t
e
r
e
d
f
r
o
r
n
i
s
l
f
a
C
O
N
T
R
O
L
C
handler.
, ill reset the interruPt and then call DQ$EXIT
h a n d l e r , C C $ T R A Pw

Install

t h e C o N T R o L - Ch a n d l e r

(
CALL DQ$TRAP$CC
GCC$TRAP,
);
@STATUS
Create an open connection to the console. :CI: and :CO: will
autonatically be cataloged in our job's object directory as Part
of the loading process.
(
coNsoLE - DQ$ATTACH
G(4,':CO:'),
);
@STATUS
(
CALL DQ$OPEN
c0Ns0LE,
READ$I.IRITE,
0,
);
€STATUS
r-.t^-*

Fl-^

(
CALL DQ$WRITE
CONSOLE,
GINITMSG,
SIZE(INIT$MSG),
);
GSTATUS
DO Ii},IILE TRUE;
tr'ntpr forewpr

loon

Read a line

echo lines

entered

at

the

console.

frorn the keyboard.

(
ACTUAL : DQ$READ
CONSOLE,
@IO$BUFFER,
S I Z E ( I O $ B U F F E R ),
@STATUS
) ;

FigureA-4. CONTROLC HandlerExample
lcontinued)

A-40

ProgrammingTechniques

EXAMPLE PROGRAMS

Echo it

back to the crt.

CALL DQL'RITE(
coNsoLE,
@IO$BUFFER,
ACTUAL,
GSTATUS
);
END; /* I,IHILE I */
ENDECHO;

Figure A-4. CONTROLC Handler Example
(continued)

4.4.2 Compilingand Bindingthe Code
The followingcommandis usedto compilethe codefor this example:

The PLM286commanddoesn'tincludecontrolsfor selectingthe modelof segmentation
(SMALL, COMPACT,MEDIUM, or LARGE) because
the $LARGE controlwas
alreadyincludedin the sourcefiles. The ROM controlis alsoincluded,to placethe
constantsin the datasegment.
The compiler placesthe generatedobjectcode into the file ECHO.OBJ.
After compiling,the objectfile mustbe boundwith the appropriateiRMX II interface
libraries.The BND286statementusedto do this is asfollows:

4.4.3 Runningthe Example
The BND286 commandproducesan executablefile called ECHO. To run the
application,simply type the nameof the file at the Human Interfaceprompt. To invoke
the CONTROL-C handlerand stopthe progam, hold downthe CONTROL key and type

ProgrammingTechniques

A-41

EXAMPLEPROGRAMS

EXAMPLES
FORREMAINING
REQUIREMENTS
A.5 HARDWARE
of interrupthandlers.Both of theseexamples
SectionsA.6 and A.7 showexamples
on all iRMX II systems.This hardware
not
be
available
that
might
requirehardware
includesan iSBX 350parallelMULTIMODULE boardand an iCS 920digitalsignal
weredevelopedusingthe iSBX 350modulemountedon
terminationpanel. The examples
an iSBC286/10Aprocessorboard.
Beforerunningthe examplesin sectionsA.6 andA.7,you shouldconfigurethe hardware
as follows:
iSBX 350configuration
.

Add jumper E5-86,placing+5V on Jl pin 50

.

Removejumper El-E2 and addjumperE2-83. This configuresPort A for input.

o

the PortA
RemovejumperE13-El4andaddjumperEl3-E'18.Thisconfigures
interruptto MlNTR0.

o

Installthe iSBC901terminatorpacksin socketsXU3, XU5, and XU6.

o

Installthe 7438bufferin socketXU4.

iCS 920configuration
o

Connectjumper E2-83,enablingthe +5V from the iSBX 350to powerthe iCS 90
board.

o

For wirewrapmatricesJ1 throughJ24,installjumper 1-2,enablingthe LED
on
indicators.Also installjumper3-4to wire the iSBX signalsto the plusconnectors
jumper
ground
the
connectors
on
5-6
to
place
the
to
the terminalstrip. Finally,install
the terminalstrip.

Cableconfiguration
o

Connectthe iSBX 350boardto the iCS 920boardwith a 50-pinribboncable(3M
33ó5-50or equivalent).Whenfabricatingthe ribbon,note that the iCS 920connector
J25is wired the oppositeof the iSBX 350pins.

o

Connectthe cableto the iSBX 350boardusinga connectorequivalentto one of the
following:
3M 3415-0000
AMP 88083-1
ANSLEY 6Oq.5OI5
SAE SD6750Series

L-42

ProgrammingTechniques

EXAMPLE PROGRAMS

.

Connectthe cableto the iCS 920boardusinga connectorequivalentto one of the
following:
3M 3425-7050
ANSLEY 609.5001M

Switches
.

Pull-upresistorsare providedto +5V on both the iCS 920and iSBX 350boards.
Single-pole,
single-throw
switches
will be adequatefor datainputs0 through7. The
interruptswitchshouldbe a momentary-contact
switch.

o

Switches0 through 7 shouldbe wired to terminalsA0 throughA7 respectively.The
momentary-contact
switchshouldbe wired to terminalC4.

NOTE
Becausetimed interruptwaitsare availablewith the OperatingSystem,
testingcanproceedwithoutthe interruptcircuitin place.
iSBC286/l0A configuration
.

Installthe iSBX 350modulein the J5 connectorof the iSBC28ól10Aboard.

4.6 EXAMPLE
4..INTERRUPT
TASK
This exampleshowsan interrupttaskthat workswith the hardwaredescribedin the
previoussection.In this example,the interrupttaskechoesthe Port A switchesto the
Port B lightswheneverthe interruptswitchis togg.led.
This exampleis invokedfrom the HumanInterfacelevel. For the exampleto work,the
usermusthavea marimumtaskpriority of 126or higher(numericallylower). The
examplealsoincludesa CONTROL-Chandler,enablingyou to cancelthe programand
return to the Human Interfacelevelbv enterinsa CONTROL-C.

4.6.1 SourceCode
FigureA-5 containsthe sourcecodefor the interrupttaskexample(a file called
INTRTSK.P2S).The programconsists
of an interrupthandler,a CONTROL-Chandler,
and a main program.
The interrupthandler(SBXj50$IN1$HNDLR)receivescontrolwheneverthe interrupt
switchis toggled.It informsthe interrupttask(the main program)of the interruptby
issuingthe SIGNAT$INTERRUPTsystemcall. It performsno other operations.

Progryamming
Techniques

A-43

EXAMPLE PROGRAMS

The CONTROL-C handler (CC$TRAP) is invokedwheneverthe operator entersa
CONTROL-C at the keyboard. When this happens,the routine invokesthe
RESET$INTERRUPT systemcall to reset the CONTROL-C handler and then exitsto
the Human Interfacelevel by invokingthe DQ$EXIT systemcall.
The main program issuesa DQ$TRAP$CC systemcall to set up the CONTROL-C
handler.Then it createsa connectionto the terminaland initializesthe iSBX 350
interface. When this is complete,it issuesthe SET$INTERRUFI systemcall to install
the interrupt handler. Finally, it entersa loop where it performs a WAIfiINTERRUPT
to wait for the interrupt signalfrom the interrupt handler. When it receivesnotification
of the interrupt,it readsthe statusof the switchesand setsthe lightsaccordingly.Then it
waits for the next interruDt.

$ I a r g e D E B U GP t . I ( 7 9 ) R O M
S B X 3 5 0 _ M O D :D O ;
WARNING:
In order to run this 1ab from the Hurnan Interface
the user must
of 126. If you
have the abillÈy to create tasks with a priority
a r e u s i n g d y n a m i c l o g o n t e r m i n a l s t h e ' lpersosc.e s s i n v o l v e s c r e a t i n g
a u s e r w i t h a r n a xp r i o r i t y o f 1 2 6 o r
lf you are usÍng a
static logon terninal, you rnayhave to reconfigure your systen.
8 6/rNC/RMXPi,r'f. EXT)
$ TNcLUDE( /R-r,fX2
DECIARE
NUL

LITEMLLY
U s e M I N T R Of r o m a n i S B X 3 5 0 i n s t a l l e d

SBX350$ INTR$LEVEL
JOB$ABORTED
CR
LF
READ$WRITE

LITERALLY
LITERALLY
LITERALLY
LITERALLY
LITERALLY

'SELECTOR$OF(NIL)'
,
on J5
'075H"
'4'
,
' ODH'
,
'OAH'
'3'
,

Figure A-5. Internrpt Task Example

A-44

PmgrarnmingTechniques

EXAMPLE PROGRAMS

SBX3509P0RT$A
SBX35O$PoRT$B
SBX350$P0RT$C
PORT
SBX35O$CONTROL$
Set Port A for

LTTERALLY
LTTERALLY
LTTEMLLY
LITERALLY

',OAoH',
,
',OA2H',
,
',OA4H',
,
'OA6H"

strobed input and Port B for Mode 0 output

LTTERALLY
s B x 350 $r N I T $ M O D E
INTERRUPTLITEMLLY
ENABLE$PORT$A$

',10111000B',
,
' OOOO1OO1B'
;

DECI-ARE
(
TOKEN,
CONSOLE
)
(
WORD;
STATUS )
DECIARE
(
DATA
SBXINITMSC (*) BYTE
C R , L F , ' T H EI N T E R R U PTTA S KI S N O WI N I T I A L I Z E D ' , C R , L F ) ,
(
DATA
CONTROL$C$MSG(*) BYTE
C R , L F , ' C O N NG
A O B Y E B Y EN O I J " C R , L F ) ;
PUBLIC;
CC$TRAP: PROCEDURE
DECI.ARE
STATUS WORD;
fìlaer

rha

iht-èrr,'nl-

(
CALL RQ9RESET$
INTERRUPT
s B x 35 0$ I N T R $ L E V E L ,
G S T A T U S) ;
L e t t h e O p e r a t o r k n o w t h a t r , r ea r e f i n i s h e d .
CALL DQ$\,'RITE(
c0NsoLE,
GcoNîRoL$c$Msc,
sIZE(CONTROL$C$MSc),
);
@STATUS
Return concrol back to the CLI
CALL DQ$EXIT(
J O B A B O R T E)D
;
END CC$TRAP
;

FigureA-5. Interrupt TaskExample
(continued)

ProgrammingTechniques

A-45

EXAMPLE PROGRAMS

SBX35O$INT$HNDLR: PROCEDURE

INTERRUPT

PUBLIC;

DECIARE STATUS WORD;
l.pl. thp intcrrunt
task do all
context slrítch should help in
sr^'i Èch .

of the work.
The time for a
the debounce of the ínterrupc

CALL RQ$SICNAL$ INTERRUPT( SBX350 $ INTR$LEVEL, @STATUS );
END

SBX350$INT$HNDLR;

Maln llne
initlallzatlon
We will
handler

code is require
record.

so the application

loader

gets

an

open a connection to the terrninal and set a CONTROL-C
in place before installing
the interrupt
handler.

I f a C O N T R O L - Ci s e n t e r e d f r o m t h e k e y b o a r d , t h e C O N T R O L - C
handler,
CC$TRAP,will
reset the interrupt
and then call DQ$EXIT

lns tal l- the

CONTROL-C handler

(
CALL DQ$TRAP$CC
GCC$TRAP,
GSTATUS) ;
Create
CONSOLE-

an open connection

to

the console.

(
DQ$ATTACH

G(4,':co:'),
GSTATUS
);

(
CALLDQ$OPEN
coNs0LE,
READ$L'RITE,
0,
@STATUS
);

Figure A-5. Interrupt Task Example
(continued)

A-46

PmgrammingTechniques

EXAMPLE PROGRAMS

Initialize
the SBX3
50 interface.
Port A - Input
Port B - output
Port C - Output
Port A interrupt enabled
o U T P U T ( S B X 3 5 0 S C o N T R O L $ P:o RSTB) X 3 5 0 $ r N r T $ M o D E ;
( SBX350$CONTROL$PORT
INTERRUPT
OUTPUT
;
) : ENABLE$PORT$A$
Lrrc

-"--t

auee!!uP

H a n d l e r.

(
CALL RQ$SET$INTERRUPT
s B X 35 0 $T N T R $ L E v E L ,
1,
s0$ TNT9HNDLR
,
GSBX3
NUL,
GSTATUS
);
lh€^rh

Èha

nnÀ

r.

r ^?

(
CALL DQ$I./RITE
coNs0LE,
GSBXINlTMSG,

srzE(sBX$rNrr$MsG),

);
GSTATUS
Enter forever

loop waiting

for

interrupts.

DO WHILE1;
(
CALL RQ$WAIT$INTERRUPT
sBX350$ rNTR$LEVEL
,
G S T A T U S) ;
l , l a i t L o d e b o u n c et h e i n l e r r u p t

swÍtch.

(
CALL RQ$SLEEP
I,
);
GSTATUS
Crl

the

innìrl

d.eta.

O U T P U T (S B X 3 5 O $ P O R T $
) )A;
) B: N O T ( I N P U T ( S B X 3 5 O $ P O R T $
END; /* WHILEI */
ENDSBX35O_MOD;
Figure A-5. Interrupt Task Example
(continued)

ProgrammingTechniques

A-47

EXAMPLE PROGRAMS

A.6.2 Compilingand Bindingthe Code
The followingcommandis usedto compilethe codefor this example:

The PLM286commanddoesn'tincludecontrolsfor selectingthe modelof segmentation
(SMALL, COMPACT, MEDIUM, or I-ARGE) becausethe $LARGE control was
alreadyinclude input

fron

the keyboard.

ACTUAL- RQ$WAIT$
IO (
coNsoLE9TOKEN,
Bros$RsP$MBX,
wAlrìruKÉvt K,

@ S T A T U )S;
The terminal- driver will append a  afrer the .
We don't want either of thern so zeÍo out the next to last
character.
IF ACTUAL >: 2 THEN
BUFFER(ACTUAL.2):O;
ELSE
BUFFER(O):O;
Send the zero terminated strÍng

back to whomeverrequested it.

(
CALL RQ$SEND$MES
SAGE
USER$RSPMBX,
BUFFERT
,
NUL,
G S T A T U S) ;
END; /* DO I.IHILE 1 */
END TERUIN_TSK;

Figure A-7. Terminal Job (TERM.P28)
(continued)

ProgrammingTechniques

A-57

EXAMPLE PROGRAMS

TERMOUT
TSK:

PUBLTC;
PROCEDURE

TERMOUTTSK
expects to receive zero terninated strings at TERMOUTMBX.
Ic will then write these string ouc to the CoNSOLE.
DECIARE
ECT$TOKEN
PARAMETER$OBJ
TERM$OUT$MBX
CONSOLE$TOKEN
BUFFERT
USER$RSPgMBX
BIOS$RSP9MBX
B U F F E R B A S E D B U F F E R T( 1 )
ACTUAL
STATUS)

TOKEN,
TOKEN,
TOKEN,
TOKEN,
TOKEN,
TOKEN,
BYTE,
WORD,
WoRD;

C r e a t e t h e m a i l b o x a t w h í c h c o n s o l e o u t p u t r n e s s a g e sw i l - l b e r e c e i v e d ,
- RQ$CREATE$MAILBOX
(
TERMOUTMBX
0,
G S T A T U S) ;
C a t a l o g t h e m a í l b o x a s " T E R M O U Ti"n t h e p a r e n t j o b .
: RQ$GET$TASK$TOKENS
(
PARAMETER$OBJECT$TOKEN
PARAMETER$OBJECT$TYPE,
@ s T A T n S) ;
(
CALL RQ$CATALOG$oBJECT
PARAMETER$OBJ
ECTSTOKEN,
TERM$OUT$MBX,
@(7,'TERMoUT',),
@ s r A T U s) ;
Lookup the open connection for the console.
- RQ$LOoKUP$oBJ
CoNSOLE$ToKEN
ECT(
NUL,

@(7,',coNsoLE'),
I'AIT9FOREVER,
G S T A T U S) ;

Figure A-7. Terminal Job (TERM.EZE)
(continued)

A-58

ProgrammingTechniques

EXAMPLE PROGRAMS

Create the response nailbox

Èo be used with BIOS system calls.

- RQ$CREATE$MAILBOX(
BIOS$RSP$MBX
0,
G S T A T U S) ;
D0 trrHlLE TRUE;
Enter forever

loop waiting

for

input requests.

Yr-|È

w a r L fr^o- ! a n o u L p u t n e s s a g e ,

(
BUFFERT. RQ$RECEIVE$MES
SAGE
TERM$OUTSMBX,
LTAIT$FOREVER,

@usER$RSPr{8X,
G S T A T U S) ;
Write the nessage to the console
(
CALL RQSA$L'RITE
coNsoLE$ToKEN,
@BUTFER,
STRLEN(GBUFFER),

BrossRsP$M8x,
csrATUs);

WaÍt for the nessage to be output
- RQ$WArT$rO
(
ACTTJAL
coNSoLE9TOKEN,
F.lnq(psp(MRY

i.tAlT9FoREVER,
GSTATUS) i
Nolr deLece the segnent which we received

ac TERMOUTMIX.

(
CALL RQ$DELETE$SEGMENT
BUFFERT
,
G S T A T U S) ;
END; /* DO IIHILE 1 */
END TERMOUT-TSK;

Figure A-7. Terminal Job (TERM.P28)
(continucd)

PmgrammingTechniques

A-59

EXAMPLE PROGRAMS

TERM-INIT-TSK:

PROCEDURE PUBLIC;

Thls task ls responsible
the console and creatíng
DECI.ARE
MBX,
Bros9RsP$trBX
DIJI,ÍMY$MBX
TERÌÍ$DEV$CON
TERM$FILE$CON
USERST
TERI'ÍIN$TASK$TOKEN
TERMOUT$TASK$TOKEN
IORST
IORS BASEDIORST
STATUS WORD),
STATUS,
ACTUAL )
B U F F E R (2 5 6 )

for setting up the connections to
the tasks TERMINTSK,and TERMOUTTSK.

ToKEN,
TOKEN,
TOKEN,
TOKEN,
TOKEN,
TOKEN,
TOKEN,
TOKEN,
STRUCTURE (
LIORD,
BYTE,

(*)
SICNON$MESSAGE
BYTE
R E A D YF O R P R O C E S S I N G . ' , O A H , O) ;D H

DATA

'TERMINAL ONLINE .-

Create the response rnailbox to be used with BIOS systen cal1s,
- RQ$CREATE$MAILBOX(
BIOS$RSP$MBX
0,

@srArus
);
Create a device connection the terninal-.
(
CALL RQ$APHYS
I CAL$ATTACH$DEVICE

€ ( 2 ,' , r 0 ), ,

PHYS
I CAL$FILE$DRIVER
,

Bros$RsP$MBX,
@ S T A T U )S;

Figure A-7. Terminal Job (TERM.P28)
(continued)

A-60

ProgrammingTechniques

EXAMPLE PROGRAMS

Wait for the device connection token to be returned be the BIOS.
: RQ$RECEIVE$MES
(
SAGE
TERM$DEV$CON
Br0s$RsP$MBX,
WAIT$FOREVER,
GDUMMY$MBX
,
G S T A T U S) :
Create a file

connection on the terminal

FI LE (
CALL RQ$A$CREATE$
NUL,
TERM$DEV9CON,

/*

lJser token

Subpath pointer

device.

ignored
ignored

for

physical

for

physical

fi1es.
fi1es.

G(0),

/*

0,

We are not on a */
/* Cranularity irrelevant.
*
/
, / * R a n d o r nA c c e s s d e v i c e .
lle are not on a Random */
/* Size irrelevant.

DRAU,
0,

./*

Aî^òcc

Àaf

i

îa

*

*/
*/

/

0,
Bros$RsP$MBX,
GSTATUS
);
wait for

the device connectíon token to be returned be the BI0S.

(
SE
AS
CE
T E R M $ F I L E $ C O- N R Q $ R E C E I V E $ M
BIOS9RSP$MBX,
WAIT$FOREVER,
,
GDUMMY$MBX
G S T A T U S) ;
onan

ihF

t-erminrl

File

for

both

read

and l,rrite.

(
CALL RQ$ASOPEN
TERM$FILE9CON,
READSL'RITE,
S}IARE$ALL,

BrossRsP$MBX,
G S T A T U S) ;

Figure A-7. Terminal Job (TERM.P2E)
lcontinued)

ProgrammingTechniques

A-61

EXAMPLE PROGRAMS

i.talt for

segnent to be returned by the 81OS.

the I/O result

(
SAGE
roRsr - RQ$RECETVE$IÍES
Bros9RsP9MBX,
wAtT$FOREVER,
ANIIMMV
(
DATA
SMPLE$MSG(*)
BYTE
"O
W
AS ');
N
U
M
B
E
R
O
F
S
A
M
P
L
E
S
T
A
K
E
N
CR,LF,'THE

),

Figure A-9. ProcessTask (PROCIO.P28)
lcontinued)

A-68

ProgrammingTechniques

EXAMPLEPROGRAMS

Lookup the mailboxes for terrninal l/0

a n d t h e S B X 3 5 0t a s k .

- RQ$LOOKUP$OBJ
TERM$IN$MBX
ECT(
NUL,
@(6,'TERMTN'),
T.TAIT9FoREVER,
G S T A T U S) ;
- RQ$LOOKUP$OBJ
TERM$OUT$MBX
ECT(
NUL,
@(7,',TERMOUT',),
WAIT$FOREVER,

@sTArus
);

sBX350$MBX- RQ$LOOKUP$OBJ
ECT(
NUL,

@ ( 9 ',,s B X 3 s o M )B,X '
WAIT$FOREVER,
G S T A T U S) ;

Setup a rnailbox where the PPI task can send data for processing.
: RQ$CREATE$MAI
PROCIO$MBX
LBOX (
60H,
set up for passing data not RMx objects */
/*
GSTATUS
);
Catalog the mailbox so the PPI task can find

it.

CALL RQ$CATALOG$OBJ
ECT(
NUL,
PR0Ct0$MBX,
'
G ( 9 , P R O C T O M )B,X '
G S T A T U S) ;
Wait for data fron PPI task iniÈialization

before proceeding.

(
ACTUAL_ RQ$RECEIVE$DATA
PROCIO$MBX,
GDATA$BUFFER,
WAIT9FOREVER,
G S T A T U S) ;

Figure A-9. ProcessTask (PROCIO.P28)
lcontinued)

ProgrammingTechniques

A-ó9

EXAMPLE PROGRAMS

Create a nailbox

for use when requesting

keyboard input

pRoclo$RsP$MBX- RQ$CREATE$MATLBOX
(
p
a
s
s
i
n g R M Xo b j e c t s * /
s
e
t
u
p
f
o
r
0,
/*
G S T A T U S) ;
l.lalt for a response from the operator before proceeding.
VALID - FALSE;
DO I,IHILE NOT VALID;
waiE for

initialization

data from the operator before proceeding.

s e n d a r n e s s a g er e q u e s t i n g o p e r a t o r i n p u t
(
BUFFERT. RQ$CREATEg
SECMENT
SI ZE( BUFFER
),
GSTATUS) i
CALL MOVB(
GENTRY$MSG
,
,
GBUFFER
S I Z E ( E N T R Y $ M S) G) ;
(
CALL RQ$SEND$MESSAGE
TERM9OUT$MBX,
BUFFERT
,
NUL,

);
@sTArus
Now check for a response.
(
BUFFERT- RQ9CREATE$
SEG},IENT
slzE(BUFFER),

@srArus
);

B U F F E R ( O )- 8 0 H ;
(
CALL RQ$SEND9MES
SAGE
TERM$
IN$MBX,
BUFFERT
,
PRoC$r0$RSP$MBX,
G S T A T U S) ;

R tl F F F p , r _ D ^ ( D F . F r \ r F $ M E SS A GE (

PROC$
10$RSP$MBX
,
t{A.L I ì f Ut(ÉV EK ,

GDUMMY$MBX
,
@STATUS
)j
Figure A-9. PrccessTask (PROCIO.P28)
lcontinued)

A-70

ProgrammingTechniques

EXAMPLE PROGRAMS

Valldace che input parameter and cransforn

it

fron ASCII

NUMBER$OF$
SAMPLES - ATOB(
@BUFFER
,
€ S T A T U S) ;
rF(STATUS-0)
AND (NWBER$OF$SAMPLES
>O )
AND ( NUMBER$OF$
SAMPLES<:128 ) THEN
VALID - TRUE;
Delete the segment received at PROCIO$RSP$MBX.
(
CALL RQ$DELETE$
SEGMENT
BUFFERT
,
G S T A T L S) ;
END; /* DO LIHILE NOT VALID */
- NUMBER$OFSMPLES
LAST$SA.I,fPLE
;
Now let

the PPI task proceed

(
CALL RQ$SEND9DATA
sBX350$MBX,
GNUMBER$OF$SAMPLES,
1,
@STATUS
);
Set a flag

noting the no requests are pending for keyboard input.

: FALSE;
I,IAITINC$FOR$KEYBOARD
DO I,IHILE 1;
Enter nain loop for processing digital

I/O.

Wait for data .fromPPI task.
ACTUAL- RQ$RECE
I VE$DATA(
PROCIo$MBX,
ANATA (RIIFFFP
wAl r lruKÉv

È . K!

G S T A T U S) ;

Figure A-9. ProcessTask (PROCIO.P28)
(continuedl

ProgrammingTechniques

A-71

EXAMPLEPROGRAMS

Now fornat

the data and send it

to the terminal

output task.

Inform the operacor of the number of sarnples taken.
(
SEGMENT
BUFFERT- RQ$CREATE$
SI ZE( BUFFER
),
G S T A T U S) ;
CALL MoVB(
GSAMPLE9MSG,
GBUFFER
,
clTF/

qaMr)IFCMqcì\.

CALL BTOA(
ACTUAL,
) );
G B U F F E RS
( I Z E ( S A M P L E $ M S) C
(
CALL RQ$SEND$MES
SAGE
TERM$OUT9MBX,
BUFFERT
,
NUL,
G S T A T U S) ;
Calculate
d s

P d r

the nean input value send it

L

to the operator

s L r r r r É . .

(
MEAN: CALCSMEAN
ACTUAL,
G D A T A $ B U F F E) ;R
(
BUFFERT- RQ$CREATE$
SEGMENT
SIZE(BUFFER),
€ S T A T U S) ;
CALL MOVB(
€MEAN$MSG,
@BUFFER
,
srzE( MEAN$MS
) )G;
CALL BTOA( MEAN,
G B U F F E R s( r z E ( M E A N $ M S)G) );
(
CALL RQ$SEND9MES
SAGE
TERM$OUT$MBX,
BUFFERT
,
NUL,
Q S T A T U S) ;

Figure A-9. ProcessTask (PROCIO.P28)
(continued)

A-72

PrograrnmingTechniques

EXAMPLEPROGRAMS

Calculate
,c

nrrt

the median input
af

a

zcro

value

t érhin,tè.1

send it

to

the

operator



P d !

the rnode input value send it

to the operator

5 L '

L

" ' 6 . .

(
MODE- CALC$MoDE
ACTUAL,
@ D A T A $ B U F F )E; R
(
SEGMENT
BUFFERT- RQ$CREATE$
srzE(BUFFER),
G S T A T U S) ;
cALL MOVB(
GMODE$MSG,
,
GBUFFER
c r 7F r/ MnnF(MC/: r \ .

CALL BTOA(
MODE
,
) ;)
@ B U F F E RS(I Z E ( M O D E $ M S) G
(
CALL RQ$SEND$MESSAGE
TERM$OUT$MBX,
BUFFERT,
NUL,
@ S T A T U )S:

Figure A-9. ProcessTask (PROCIO,P28)
lcontinued)

PmgrammingTechniques

A-73

EXAMPLEPROGRAMS

s e n d a r n e s s a g er e q u e s t i n g o p e r a t o r i n p u t
(
SEGMENT
BUFFERT- RQ$CREATE$
SIZE(BUFFER),
G S T A T U S) ;
CALL MOVB(
@ENTRY$MSC,
,
@BUFFER
s r z E ( E N T R Y $ M S)G; )
(
CALL RQ$SEND$MES
SAGE
TERM$OUT$MBX
,
BUFFERT
,
NUL,
@ S T A T U )S;
<> TRUE THEN DO;
IF WAITING$FOR$KEYBOARD
lf

no input

request message ís pending then send one,

(
BUFFERT- RQ$CREATE$
SEGMENT
SIZE( BUFFER),
@srATUS
);
B U F F E R ( O )- 8 0 H ;
(
CALL RQ$SEND$MESSAGE
TERM$IN9MBX,
BUFFERT
,
PROC$
IO9RSP$MBX
,
@STATUS
);
: TRUE;
I'AITING$FOR$KEYBOARD
END;
Check for a response from the operator before proceeding.
BUFFERT- RQ$RECEIVE9MES
SACE (
P R o C r$o 9 R S P $ M B, X
NO9WAITINC,
GDUMMY$MBX
,
@ S T A T U )S;
I F S T A T U S- O T H E ND O ;

Figure A-9. ProcessTask (PROCIO.P28)
lcontinued)

A-74

ProgrammingTechniques

EXAMPLE PROGRAMS

Validate

the input parameter and transform it

fron ASCII.

NUUBER$OF9
SA]"TPLES- ATOB (
GBUFFER,
@ S T A T U )S;
rF ( NUMBER$oF$
SAMPLES>0 )
AND ( NI,I.fBER$OF$SAMPLES
<:128 )
AND(STATUS-O)THENDO;
New sarnple size requested.

Inform the interrupt

task.

(
CALL RQ$SEND$DATA
sBX350gMBX,
GNUMBER$OF$SAI'iPLES,
1,
GSTATUS
);
IAST9SAMPLE- NUMBER$OF$SMPLES
;
END;
Delete the segment we received frorn the keyboard.
(
CALL RQ$DELETE$
SEGMENT
BUFFER$T,
@STATUS
);
Clear the fJ-ag showing that a keyboard input request is pending
: FALSE;
I.IAITINC$FOR$KEYBOARD
E N D ; / * I F S T A T U S: 0 * /
END; /*

DO h'IIILE 1 *,/

ENDPROCIO-TSK;
END PROCIO-MOD;

Figure A-9, ProcessTask (PROCIO.P28)
(continued)

Prograrnming Techniques

A-75

EXAMPLE PROGRAMS

$ C O M P A CDTE B U GP W ( 7 9 ) R O MO P T I M I Z E ( O )
UTILIfi-MOD :

DO;

( /Rrfi 2 8 6/rNC/RMXPLM.
EXT)
$ TNcLUDE
DECIARE
NUL
WAIT$FOREVER
TRUE
FALSE
MAX$STRINC

LITEMLLY
LITERALLY
LITEMLLY
LITEMLLY
LITERALLY

STRLEN: PROCEDURE(
STRPTR)

BYTE

DECIARE
STRPTR
S T R I N CB A S E DS T R P T R ( I )
INDEX

POINTER,
BYTE,
BYTE;

I N D E X- O ;
DO Í,ÍHILE ( STRING(INDEX)O
INDEX . INDEX + 1;
END;
I F S T R I N G ( I N D E X:) O T H E N
RETURNINDEX:
ELSE
RETURNO;
END STRLEN;

'SELECTOR9OF(NIL)'
,
' OFFFFH'
,
'T'
,
'O'
,
'255' .,

PUBLIC;

O ) AND ( INDEX < MAXSTRING) ;

BTOA: PROCEDURE
C(H R , S T R I N G S P)
DECI-ARE
STRING$P
CHR
DECIARE (
QUOîrENT,
REMAINDER,
COUNT,
MORE$DATA,
INDEX)
S T R I N CB A S E DS T R I N C $ P ( 8 0 )
DIGIT(8o)

PUBLIC;
POINTER,
BYÎE;

BYTE,
BYTE,
BYTE;

Figure A-10. Utility Procedures(UTILS.P28)

L-76

ProgrammingTechniques

EXAMPLEPROGRAMS

I N D E X , M O R E 9 D A-T AO ;
REI,IAINDER- CHR;
I F C H R: O T H E ND O ;

D r c r T ( 0 ') ' 0 ' ;
DrGrT(l):0;

I N D E X: 1 ;
END;
ELSE DO I.IHILE REMAINDER
> O;
D I G I T ( I N D E X) : ( R E M A I N D EMRO D1 0 ) + , 0 ' ;
- REMAINDER. ( REMAINDER
REMAINDER
MOD10 );
- REÌ.fAINDER
REI,ÍAINDER
/ 10;
I N D E X- I N D E X+ 1 ;
DIGIT(INDEX)-O;
END;
This string must be reversed to have the most significant
. l i o í t - ^ r r i - n r r r -f i r 9 l

31 the

termínal.

C O U N T: O ;
D O W H I L E I N D E X> O ;
S T R I N G (C O U N T) _ D I G I T ( I N D E X . 1 ) ;
COUNT: COUNT+ 1;
I N D E X: I N D E X - 1 ;
END;
STRINC(COUNT):0;
END

BTOA;

A T O B : P R O C E D U(R E
S T R $ P , S T S $ P)

BYTE

PUBLIC;

This procedure ís total ly wrong!
DECIARE
STR$P
STS$P
CHARSBASEDSTR$P( 1)
S T A T U SB A S E DS T S $ P
VALUE
INDEX
I
M U L T I P L I E R)

POINTER,
POINTER,
BYTE,
WORD,
BYTE,
BYTE,
BYTE,
BYTE:

Figure A-10. Utility Procedures(UTILS.P28)
(continued)

Programming Techniques

A-77

EXAMPLE PROGRAMS

I N D E X , V A L U E. O ;
MULTIPLIER - 1;
STATUS. O;
( ÌNDEX ) >: '0',)
DO r,rHrLE ( CHARS
A N D ( C H A R(S I N D E X ) < : ' , 9 ' ) ;
INDEX - INDEX + 1;
END;
I F I N D E X: O T H E ND O ;
STAÎUS - OFFFFTI;
RETURNO;
END;
I - I N D E X- 1 ;
DOWHILEI VALUES( MAX ) THEN
IF VALUES
MAX : INDEX;
END;
RETURNMAX;
END CALC$MODE;
END UTILITY_MOD;

Figure A-10. Utility Procedures(UTILS.P28)
(continued)

ProgrammingTechniques

a-79

EXAMPLE PROGRAMS

A.7.2 Compilingand Bindingthe Code
The followingcommandsare usedto compilethe codefor this example:

ThesePLM286commandsdo not includecontrolsfor selecting
the modelof
segmentation(SMALL, COMPACT, MEDIUM, or l-ARGE) becausethe $COMPACT
control was alreadyincludedin the sourcefiles. The ROM control is also included,to
placethe constantsin the datasegment.
The compiler placesthe generatedobjectcode into the files INITTSK.OBJ, SBX350.OBJ,
TERM.OBJ,PROCIO.OBJ,and UTI[-S.OBJ.
After compiling,the objectfi-tesmustbe boundwith the appropriateiRMX Il interface
libraries.Becausethe codewill be configuredinto the systemwith the Interactive
ConfigurationUtility, the BND286commandrequiredis differentthanthe onesusedfor
the previousexamples.The BND286commandfor this examplemustincludethe
NOLOAD and NOPUBLICSEXCEPT controls.
The NOLOAD controlis requiredbecause
the SUBMIT file createdby the ICU will
invoke BLD28ó to further processthe resultingmodule. The NOPUBLICS EXCEFI
controlis requiredto limit the publicsymbolsin the outputmodule.The only public
symbolsin the outputmoduleare the entrypoint of the initial taskand the dummy
variableidentifyingthe datasegmentof that task. If all publicsymbolswereallowed,the
namesof the iRMX II interfaceprocedures
wouldconflictwith the namesof the call gates
usedinsidethe operatingsystem.
Eventhoughthe NOPUBLICSEXCEPTcontrolis required,includingthat controlcan
makedebugging
somewhatof a chorebecause
the MAP286utilitywill not be ableto
generatemuchvaluableinformation.To correctthat problem,you can usea three-step
bind operationthat producesone outputfile for useby MAP286and anotheroutputfile
that will be usedasinput to the ICU.
To implementthis solution,first bind the objectcodewith the NOLOAD and DEBUG
controlsand placethe resultin a temporaryfiìe. Then usethe temporaryfile as input to
BND286and includethe LOAD ontion. This will causethe error
NO STARTADDRESSFOUNDIN OUTPUTMODULE

A-80

ProgrammingTechniques

EXAMPLE PROGRAMS

This error can be ignored. The objectmoduleproducedfrom this invocationof BND286
can be usedas input to MAP286 to generatea map of the first-leveljob. Finally, run the
temporaryfile through BND286 again,speciryingthe NOLOAD and NOPUBLICS
EXCEPT controls. The output of this invocationwill be combinedduring configuration
with the rest of the operatingsystem.
The following commandsperform the operationsjust mentioned. They createboth a
usablemap file and the objectmodulethat will be combinedwith the operatingsystem.

A.7.3 Configuring
the First-Level
Job
To add the first-leveljob to the operatingsystem,you must usethe ICU and build a
configurationcontainingthat job. The easiestway to do this is to start with an existing
configurationfile and modif it to includethe newfirst-leveljob. You canuseany
configurationfile that includesthe SDB,the BasicI/O System,and supportsa devicewith
the nameT0. This exampleassumes
that you startwith the configurationfile 28612.DEF
as suppliedwith the operatingsystem.

Programming Techniques

A-81

EXAMPLE PROGRAMS

When you run the ICU, make sure to examinethe following screens:

Memoryfor System(MEMS)
screen.

In many cases,when you add a first-level
job to the operatingsystem,you must
allocatemore memoryfor the operating
you won't need
system.In this instance,
to allocatemore memorybecauseyou
will be eliminatingsomeof the layersof
the operatingsystemfrom your
configuration(only the Nucleus,SDB,
and BIOS are needed).In fact,you'll
probablyhavemore thanenoughmemory
allocatedfor operatingsystemcode. If
you were building an actualproduction
system,you could find out exactlyhow
muchyou needby runningthe ICU twice.
The first time through,allocatea
generousamountof systemmemory.
After you run the SUBMIT file generated
by the ICU, examinethe .MP2 file
producedby BLD286and find out how
muchmemorywasactuallyused. Then
go backand modifothe MEMS screen
accordingly,
and generatethe system
just leavethe
again.For this example,
MEMS screensetto its defaultvalue.

Sub-systems
(SUB) screen.

This examplerequiresjust the servicesof
the Nucleus,SystemDebugger,and Basic
I/O System.Therefore,speciff NO for
the UDI (UDI = NO) and YES for the
BasicI/O System(BIO=YES).

DeviceDrivers.

Thereare no changesrequiredto the
BIOS screens,
but only the 8274driveris
requiredfor this example.To removethe
other drivers,invoketheir driverscreens
and enterthe value
^D
to deletethemfrom theconfiquration.

A-82

ProgrammingTechniques

EXAMPLE PROGRAMS

UserJobs(USERI)screen.

Because
you are addinga firstleveljob,
you mustfill out the UserJobsscreento
describethat job. The fieldson this
screenaresimilarto îhe parameters
in
the RQE$CREATE$JOBsystemcall.
Figure A- 1I showsthe filìed-out User
Jobsscreen.Noticethat the TaskStart
Address(TSA) and PublicVariable
Name(VAR) fieldsare set to the public
namesthat remainin the first-leveliob
afterrunningBND286
(DUMMYvARIBLE and lNlT_TsK).

User Modules(USERM)
screen.

On this screen,you mustindicatethe
paîhname
of the ohjectmodule
containingyour firstJeveljob.This is the
file producedby BND286earlier
IEXAMPLE.LNK).

After you makethesemodifications
with the lCU, generatea new systemand run the
SUBMIT file producedby the ICU. You can invokeyour systemby usingthe Bootstrap
Loaderto load the operatingsystemfile producedby the ICU's SUBMIT file.

(usERJ
)
( NAì'I)

(oDs)
(Pr.rr
)
( PMA)

(MoB
)
(l,fTK)
(MPR)

(EHs)
( Er'{)
(Pv)

User Jobs
J o b N a m e[ 0 - 1 4 c h a r a c t e r s ]
O b J e c c d i r e c t o r y S i z e [ 0 - 3 8 4 0]
PooI Mininun [20H - OFFFFzu]
PooI Maxirm-un[20H - OFFFFFH]
MaxlnumObJecrs 11 - oFFFFHI
l,faxirnurnTasks [1 - OFFFFH]
M a x i m u mP r i o r i t y
[0 - 255]
Excepcion Handler Entry Point [L-31 chars]

EXAI'IPLE
40
OFFFH
OFFFFFH
OFFFFH
OFFFFH

0

(TSA)

Exception Mode INever/Prog/Envi ronlAl L ]
P a r a m e t e r V a l i d a t l o n I Y e s / N o]
Task Priority [0-255]
Task Entry Polnt [1-31 chars]

(vAR)

P u b l i c V a r l a b l e N a m el 0 - 3 1 c h a r s l

(ssA)
(ssr)

BLE
DUMUYDATAVARI
0000: 0000H
S t a c k S e g m e n tA d d r e s s I S S : S P ]
Stack Size [0-OFFFFH] 0300H
NO
Nurneríc Processor Extension Used fYes,/Nol

(TP)

ALL
YES
139
INIT TSK

(NPX)

FigureA-l l. UserJobsScreen

ProgrammlngTechniques

A-83

$SLEEPA.32,35

A
A$GET$CONNECTION$STATUS A.6
A$GET$FILE$STATUS A.6
A$OPEN A.ó,61
A$PHYSICALI$ATTACH$DEVICE A-6
A$READ A.21,57
A$SEEK A.6,21
A$SPECI-ALA'.6,7,8
A$WRITE A-21,23,59
Assemblycode
Parameterpassing2-3
UsingiRMXo systemcalls 2-1

B
Basedvariables 5-2
Bind sequence2-12,A-23,37,41,48,8l
Bindingcodeto interfacelibraries2-11
BIOS.EXT 2.5
BND2862-1t, 12,A-37,41,48,
81
Buffer Pools
Creating 5-3,A- 16
Overview A-3
Passingbuffers A- 15
Releasing
buffers A-17, 19
Requesting
buffers A-18
Using 5-3,A-15, l8

c
C code
Parameterpassing2-4
Using iRMXo systemcalls 2-4
C$GET$OUTPUT$CONNECTION A-6
C$GET$OUTPUT$PATTINAME A-6
C$SEND$CO$RESPONSEA-32,35
C$SEND$EO$RESPONSE
A-20
CATALOG$OBJECT A-11, 16,29, 56,58,62, 65,69

PmgrammingTechniques

Index-l

INDEX

CatalogingobjectsA-2, 10
CodingiRMX@systemcalls 2-l
CommunicationA-3
Jobs 3-1
Tasks A- 12,22
model l-2
Compactsegmentation
Compilercontrols
RAM 1-2,4
ROM 1-2,4
Compilingcode A-23,37,41,48,80
Configuringajob into the operatingsystemA-81
Constantlocations 1-4
Control-Chandler A-38
Conventionsiv
ConvertingiRMX@I applications5-1
CREATE$BUFFER$POOLA. 17,18
CREATE$IO$JOBA.6
CREATE$JOB A-5
CREATE$MAILBOX A-14,29,34, 56,58,59,60, 64,69,70
CREATE$SEGMENT4.17, 18,34,70,72,73,74
62
CREATE$TASKA-9, 11,30,53,
CreatingtasksA-2, 9

D
Data Acquisitionjob A-48
Data passingbetweenjobs 3-2
SEND$DATA and RECEIVE$DATA 3-6
Dynamicstackallocations1-3

E
E$CREATE$IO$JOBA-6
E$CREATE$JOBA-54
EIOS.EXT 2-5
Example
Bindingcode A-23,37,41,48,81
BND286 2-12
Buffer Pools A-15
CatalogingobjectsA-10
Clearingthe screenA-20
Compilingcode A-23,37,41,48,ll0

Index-2

ProgrammingTechniques

INDEX

Example(cont.)
ConceptsA-1
Configuringa job into the operatingsystem A-83
Control-Chandler A-38
Data acquisitionA-48
Executionof a job A-24,38,41,48
First-leveljob A-48
FORTRAN-28ó string conversion2- 10
In-line exceptionprocessingA-3
Include files 2-5, 6, 7
Inter-taskcommunication A-12,22, 26
Interrupthandler A-43,49,63
Job initialization A-52
Literal files A-5
Programming
conceptsA-1
ProgramsA-1
Pushingparametersonto the stack 2-3
Response
pointer A-12
ScreenI/O A-20,35,55
Simultaneous
IIO A-22
Systemcallsfrom assemblysourcecode 2-3
Task creation A-9
TerminalattributesA-7
Exceptionhandlers 1-3,5-4, A-4
Executionofajob A-24,38,41,48
EXIT$IO$JOB A-6,27,30
Externalprocedures't-2,2-4,1l

F
File connectionrestrictions3-3,6
FORTRAN-286 code
Include file 2-7
Parameterpassing2-8
Restrictions2-8
String conversionexample 2-10
Strings2-10
Using iRMXo systemcalls 2-8

ProgrammingTechniques

Index-3

INDEX

G
error 3-1,b
Generalprotection
GEfiEXCEPTION$HANDLER A-4,5
4.6
GET$LOGICATJDEVICE$STATUS
GET$PRIORITY A-9,II, 29
A.5, 29,53,56,58
GET$TASK$TOKENS
GET$TYPEA-5,32
GettingterminalattributesA-7

H
HI.EXT 2-5

I
I/O ResultSegnent(IORS)A-21,22,62
(seeoptimization)) - l
Improvingperformance
A-2,3
In-lineexceptionprocessing
Includefiles
BIOS.EXT 2-5
Description2-5,A-36
EIOS.EXT2-5
Exampleof use 2-5,6
Exampleuseof 2-7
FORTRAN-286fiÌe 2-7
HI.EXT 2-5
LOADER.EXT 2.5
Locationof 2-5
NUCLUS.EXT2.5
PASCAL-286
file 2-6
RMXFTN.EXT2-5,7,8
RMXPAS.EXT2.5,6,7
RMXPLM.EXT 2.5
Types2-5
UDI.EXT 2.5
InitializationA-52
Inter-taskcommunicationA-3,12,26
Interfacelibraries
BND286restrictions
2-12
Choosing
for use 2-11
Function2-11
RMXIFC.LIB2.11,12
UDIIFC.LIB 2-11,12
Interrupthandlers4-1,3,A-43,49,63
Interrupts4-1

Index-4

ProgrammingTechniques

INDEX

L
l-argeapplications1-2,3
Literal files A-2,5
LOADER.EXT 2-5
l,oadingthe stack 2-3
LOGICAI]'ATTACH$DEVICE A-ó
LOOKUP$OBJECIA-4, 31,34,36,56,58,65,69

M
Mailbox 3-6,A-27,49
Mailbox optimization 5-3
Manual overview iv
Maskableinterrupts4-1
Medium segnentationmodels 1-2
Multitaskingjob A-48

N
Nonmaskable
interrupts4-1
NUCLUS.EXT2-5

o
Object cataloging A-2, 10
Objectdirectoryofthe rootjob 3-5
Object passingbetweenjobs 3-3
Optimization
Basedvariables5-2
Compiler controls 5-2
Mailboxes 5-3
Nucleus5-3
Overflow queues,mailboxes5-3
Seglentationmodel 5-2
SequentialI/O 5-3
Basedvariables5- 2

P
Parameterpassing
Assemblycode 2-3
Betweentasks 3-6
C code 2-4
FORTRAN-2862.8

Pmgramming Techniques

lndex-5

INDEX

code
PASCAL-286
Includefile 2-6
Restrictions 2-6
Stackallocation 2-7
Passingbuffersbetweentasks A-15
Passingdata passingbet'weenjobs
BIOS 3-3
EIOS 3-3
Segments3-2
SEND$DATA and RECEIVE$DATA 3-2
Streamfiles 3-3
UDI 3.3
Passingobjectsbetweenjobs
Guidelines 3-7
Mailboxes 3-6, 7
Object directories 3-4,7
Overview 3-3
Parameters3-6,7
6, 5-1.,2
Performance1,-1,2-2,
PLIM-286code
Basedvariables 5-2
Using iRMXo systemcalls 2-1
ProcessingexceptionsA-3
Programconversion 5-1
ProgrammingexamplesA-1
Publicproceduresl-2,2-2

R
RAM compilercontrol 1-2,4
Readerlevel iii, 1-1,2-1,3-1,4-1
56,59,61,62,70,74
RECEM$MESSAGEA-7,8, 13,14,15,23,32,35,
RECEIVESUMTSA.12. 15
A-14,17,18,19
RELEASE$BUFFER
A-17,
19
Releasing
buffers
A.12,18,22
REQUEST$BUFFER
buffers
A-18
Requesting
RESET$INTERRUFTA.44.45
pointerA-3,12
Response
Restrictions
BND2862-12
model 1-3
Compactsegmentation
Connectionobjects3-3,6
FORTRAN-286code 2-8

Index-6

PmgrammingTechniques

INDEX

Restrictions(cont.)
Ilrge segmentationmodel 1-3
Medium segmentation
model 1-3
PASCAL-286code 2-6
Passingdata betweenjobs 3-2,3
Passingobjectsbetweenjobs 3-6
Small segmentationmodel 1-3
Stacksize 4-2
RESUME$TASK A-3ó
RMXF|N.EXT 2.5,7,8
RMXIFC.LIB 2.1I, 12
RMXPAS.EXT2-5,6,7
RMXPLM.EXT 2.5
ROM compiler control 1-2,4
Root job object directory 3-5

S
S$GET$CONNECTION$STATUSA.-6
S$GET$FILE$STATUSA-6
S$OPEN A-4,6,21
S$SEEK A-6
S$SPECIALA-6,7,8
ScreenI/O A-3, 20,35,55
Segnentregisters7-1,5-1,2
Segnentationmodel
Assemblylanguagecallingconventions2-2
Choosingthe size 1-3,2-2,3
Compact1-2,2-2,3
Default 5-1
Interfacelibraries 2-I I
l-arge 1-2,2-2, 5-1
Medíum 1-2,2-2
Small 1-2
Semaphores
Cataloging3-4
Creations3-4
Gettingunitsfrom 3-5,A- 15
Lookingup 3-5
Use in synchronization
3-4
57,70,72,73,74
SEND$MESSAGEA-12,13,14,15,18,22,33,35,36,
SEND$UNITS A.14, 15,19
SET$EXCEPTION$HANDLER A-4, 5
SET$INTERRUM A.44,47,65
SettingterminalattributesA-7

PmgrammingTechniques

Index-7

INDEX

SIGNAI]$INTERRUPT A.43, 46,50,64
SimultaneousI/O A-3, 22
SLEEP A-47,66
Small applications 1-2,3
Small segrnentationmodel 1-2
Stack
Allocation in PASCAL-286code 2-7
Computingsizeusingthe arithmetictechnique4-3,4
Computingsizeusingthe empiricaltechnique 4-4
Interruptrequirements4-3
Overflow 4-1,2
Recursivecode 4-2
Sizefor createdtasksandjobs 4-2
Sizefor loaded or invokedtasks 2-12,4-2,A,-37
Sizelimitationfor interrupthandlers4-1,3
Systemcall requirements4-3,4
Streamfile 3-3
SUSPEND$TASK A-30,32, 36
Synchronization
Tasksin differentjobs 3-4
Using semaphores3-4

T
TaskcreationA-2,9
TerminalattributesA-2,7
TerminalI/O A-20,35,55

u
UDI systemcalls 2-11
UDI.EXT 2-5
UDIIFC,LIB 2-11,12
Using iRMX@systemcalls 2-1

w
WAIT$INTERRUM A-44,47,65
WAIT$IO A-2r,22,23,s7,s9
Writingcode 2-1

Index-8

Progr-ammingTechniques

INTERNATIONAL
SALES
OFFICES
I N ' TLEC O R P O R A I I O N
3 0 6 5B o w e r sA v e n u e
S a n î aC l a r aC
, a l i f o r n i9a5 0 5 1
EELGIUM
I n t e lC o r p o r a t i o n5 A
R u ed e sC o t t a g e s6 5
B-1180
Brussels
DENMARK
Intel DenmarkA,/5
Gl e n t e v e 6
j î - 3 r dF l o o r
d k - 2 4 0 0C o p e n h a g e n
E N GL A ND
I n t e lC o r p o r a t i o n( U K . )t I D
Prper'W
s ay
S w i n d o n ,W i l t s h i r e5 N 3 1 R J
F t NL A N D
l n t e l F i n l a n dO Y
R u o s i l a n t2e
0 0 3 9 0H e l s i n k i
FRANCE
I n t e lP a r i s
1 R u eE d i s o n - B3P0 3
7 8 0 5 45 t . - Q u e n n
t i - e n - Y v ei nl e sC e d e x
I S R A LE
I n t e lS e m i c o n d u c t o Lr sT D .
A t i d i mI n d u s t r i aPla r k
N e v es h a r e t
P . O B o x4 3 2 0 2
'f
e l - A v i v6 1 4 3 0
ITALY
I n t e lC o r p o r a t r o S
n .P.A.
M i l a n d fi o r i ,P a l a z z oE l 4
2 0 0 9 0A s s a g o( M i l a n o )

.]APAN
I n t e lJ a p a nK . K
Flower-HillShin-machi
1-23.9,5hrnmachi
S e t a g a y a - kTuo, k y oj 5
NETIIERLAND5
t n t e lS e m i c o n d u c t(oNr e t h e r l a nId V . )
A l e x a n d e r p o o r8t ui l di n g
M a r t e nM e e s w e g9 3
3068Rotterdam
NORWAY
lntel NorwayA"/5
P . O B o x9 2
Hvamveien
4
N - 2 0 l 3 ,S k j e t t e n
sPAIN
I n r e lt b e r i a
C a l l eZ u r b a r a n2 8 - l Z e D A
2 8 0 1 0M a d r i d
SWEDEN
I n t e ls w e d e nA . B .
D a l v a e g e n2 4
5 - 1 7 13 6 S o t n a
5 W I - T Z E R LD
AN
I n t e lS e m i c o n d u c t oAr. G .
T a l a c k e r s t r a s1s7e
8 1 2 5G l a t r b r u g g
C H - 8 0 6Z
5 ur i c h
W E s TG E R M A N Y
l n t e l 5 e mi c o n du c t o rG .N .B .H .
S e i d l e s t r a s2s 7
e
D - 8 0 0 0M u n c h e n



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
XMP Toolkit                     : Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-21:37:19
Create Date                     : 2008:05:16 08:18:49+01:00
Creator Tool                    : Canon
Modify Date                     : 2016:12:22 07:43:58-08:00
Metadata Date                   : 2016:12:22 07:43:58-08:00
Producer                        : 
Format                          : application/pdf
Document ID                     : uuid:2059dc22-eaba-9347-b875-198525a2eab7
Instance ID                     : uuid:29f67dc2-df42-bd42-9170-c35490abb9f7
Page Layout                     : SinglePage
Page Count                      : 748
Creator                         : Canon
EXIF Metadata provided by EXIF.tools

Navigation menu