.TOC
.COM ~astx 1
.COM sistemnye tablicy i biblioteki
.COM 16	oktqbrq	1989
.TTL

operacionnaq sistema	R T 1 1 (OPISANIE SOSTAWLENO NA OSNOWE

OPISANIQ os rafos S WNESENIEM IZMENENIJ I DOPOLNENIJ)

sistemnye tablicy i biblioteki

rukowodstwo programmista



1984



.INT
dannyj dokument	sostoit	iz dwuh	~astej.
w perwoj ~asti dano opisanie sistemnoj makrobiblioteki i
sistemnoj ob'ektnoj biblioteki.	wwodqtsq osnownye ponqtiq,
neobhodimye pri	rabote s |timi bibliotekami, i prawila obra}eniq
k makrokomandam, proceduram i funkciqm bibliotek. krome	|togo
daetsq kratkoe opisanie	sistemnyh tablic (sistemnaq oblastx swqzi
i fiksirowannye	sme}eniq w rezidente monitorow).
dano opisanie sredstw mnogoterminalxnoj	poddervki w RT11SJ ili RT11FB 
i opisanie sredstw raboty s ras{irennoj	pamqtx`	w RT11XM.
wtoraq ~astx dokumenta sodervit	rekomendacii po	razrabotke drajwerow
wne{nih	ustrojstw. w nej opisany makrokomandy dlq ih napisaniq i dany primery
nekotoryh drajwerow.
.COM nazna~enie	i uslowiq primeneniq bibliotek
.CPT nazna~enie	i uslowiq primeneniq bibliotek
.LIN
operacionnaq sistema RT11 sodervit {irokij
nabor serwisnyh	funkcij, takih kak
rabota s fajlami, interpretaciq
komandnyh strok, uprawlenie wwodom/wywodom i t.	d.
.LIN
obra}enie k nim	programm polxzowatelq, napisannyh na qzyke assebler,
osu}estwlqetsq s pomo}x` sistemnyh makrokomand.
opredeleniq makrokomand
wkl`~eny w fajl	sistemnoj biblioteki, ime`}ej
naimenowanie SYSmas.SmL. sistemnye makrokomandy
interpretiru`tsq monitorom wo wremq wypolneniq
programmy polxzowatelq.
.LIN
pri programmirowanii na	qzyke fortran sm dostup	k serwisnym funkciqm
programmist polu~aet ~erez wyzowy podprogramm iz sistemnoj ob'ektnoj
biblioteki, ime`}ej naimenowanie SYSLIB.OBJ. w |tu biblioteku
takve wkl`~eny nabory podprogramm dlq raboty so	strokowymi dannymi
i 32-h razrqdnoj celo~islennoj arifmetikoj. podprogrammy biblioteki pozwolq`t
napisatx l`bu` programmu na qzyke fortran sm bez programmirowaniq
otdelxnyh |lementow na qzyke assembler.
.LIN
dopustimo takve	obra}enie k podprogrammam biblioteki iz	programm na qzyke
makroassembler.
.LIN
podprogrammy biblioteki	dopolnq`t i ras{irq`t wozmovnosti
qzyka fortran sm,
pozwolq`t ispolxzowatx razli~nye osobennosti i swojstwa
monitorow, wypolnq`t wspomogatelxnye funkcii.
.LIN
podprogrammy biblioteki	obespe~iwa`t wypolnenie	programmoj na qzyke
fortran	sm dejstwij, analogi~nyh wypolneni` sistemnyh makrokomand
w programme na qzyke makroassembler,
rabotu fortranowskoj programmy so stro~nymi dannymi, a takve
celo~islennu` dwuslownu` (32 razrqda) arifmetiku.
.CPT harakteristiki bibliotek
.LIN
dannyj razdel opisywaet	harakteristiki biblioteki sistemnyh
makrokomand (SYSMAC.SML) i sistemnoj ob'ektnoj biblioteki (SYSLIB.OBJ).
.HLV 1
makrobiblioteka
.LIN
sistemnye makrokomandy podderviwa`tsq i	wypolnq`tsq razli~nymi komponentami
operacionnoj sistemy:
.DFN RT11SJ 
podderviwaet bolx{instwo sistemnyh makrokomand pozwolq`}ih rabotatx
s fajlami, proizwoditx operacii	wwoda/wywoda, rabotatx s tajmerom,
opredelqtx resursy i sostoqnie sistemy,	a takve	zawer{atx wypolnenie programm;
.DFN RT11FB 
podderviwaet nekotorye sistemnye makrokomandy, wypolnq`}iesq tolxko pod
uprawleniem |togo monitora; |ti
sistemnye makrokomandy pozwolq`t polxzowatel` opredelqtx podprogrammy,
wypolnqemye po tajmeru,	priostanawliwatx i prodolvatx wypolnenie programmy,
organizowywatx obmen informaciej mevdu zadaniqmi, rabota`}imi w	raznyh
razdelah; wse sistemnye	makrokomandy, podderviwaemye RT11SJ 
podderviwa`tsq i RT11FB 
.DFN RT11XM 
podderviwaet sistemnye makrokomandy, ras{irq`}ie dostupnu` zadani` pamqtx
ot 28 kslow do 124 kslow (pl`s 4 Kslow stranicy	wwoda/wywoda)
i wse sistemnye	makrokomandy, dostupnye	w RT11FB;
.DFN mnogoterminalxnyj drajwer
podderviwaet sistemnye makrokomandy, pozwolq`}ie peredawatx i prinimatx
simwoly	s 16-i terminalow, zakreplqtx i	oswobovdatx terminaly, polu~atx
sistemnoe sostoqnie terminala i	ustanawliwatx harakteristiki terminala
i linii.
.LIN
argumenty sistemnyh makrokomand	dolvny bytx
dopustimymi wyraveniqmi	qzyka makroassembler. pri translqcii
makrokomandy ras{irq`tsq w posledowatelxnostx instrukcij.
.LIN
bolx{instwo sistemnyh makrokomand ispolxzu`t instrukci`
emt dlq	pereda~i informacii
monitoru, kotoryj izwlekaet ee
i wypolnqet trebuemu` funkci`. mlad{ij bajt
instrukcii emt sodervit	kod w interwale	ot 340 do 377 (wosxmeri~noe):
.DFN 377
zarezerwirowan;	RT11 ignoriruet emt	s |tim kodom i
wozwra}aet uprawlenie programme	polxzowatelq;
.DFN 376
ispolxzuetsq monitorom RT11; |tot kod ne dolven
primenqtxsq polxzowatelem;
.DFN 375
sistemnaq makrokomanda s neskolxkimi argumentami; R0
sodervit adres tablicy argumentow;
.DFN 374
sistemnaq makrokomanda s odnim argumentom; R0 sodervit
w star{em bajte	kod funkcii, a w mlad{em -
nomer kanala ili 0;
.DFN 360-373
ispolxzu`tsq monitorom RT11 |ti kody ne dolvny
primenqtxsq polxzowatelem;
.DFN 340-357
argumenty sistemnoj makrokomandy nahodqtsq w steke
i/ili w	R0.
.ATT
instrukciq EMT ne dolvna ispolxzowatxsq	w programmah, napisannyh
polxzowatelem.
.HLV 1
ob'ektnaq biblioteka
.LIN
sistemnaq ob'ektnaq biblioteka (SYSLIB.OBJ) sodervit
podprogrammy, wyzywaemye iz programm, napisannyh na qzyke fortran sm.
podprogrammy pozwolq`t ispolxzowatx swojstwa monitorow,
wypolnqtx raznoobraznye	wspomogatelxnye	funkcii. w
nee whodit paket podprogramm dlq raboty	so strokami i
obespe~enie wspomogatelxnyh preobrazowanij dwuslownogo celogo.
.LIN
biblioteka SYSLIB imeet:
.AND
nabor sredstw wwoda/wywoda: sinhronnyj,	asinhronnyj
i po sobytiqm; podprogrammy biblioteki
mogut bytx iniciirowany	iz podprogramm zawer{eniq;
.AND
wozmovnostx planirowaniq wo wremeni asinhronnyh
podzadanij (podprogramm	zawer{eniq);
.AND
nabor sredstw dlq swqzi	mevdu operatiwnym i fonowym (ili sistemnymi)
zadaniqmi (tolxko dlq RT11FB i RT11XM )
.AND
podprogrammy obsluviwaniq prerywanij;
.AND
nabor sredstw obsluviwaniq tajmera, wkl`~aq asinhronnu`
obrabotku prerywanij; preobrazowanie razli~nyh
formatow wremeni;
.AND
wspomogatelxnye	funkcii	wwoda/wywoda,
wkl`~a`}ie wozmovnosti otkrytiq, zakrytiq, pereimenowaniq,
sozdaniq i udaleniq fajlow s ustrojstwa;
.AND
wozmovnostx ispolxzowaniq informacionnyh funkcij na urowne monitora:
wyda~a parametrow zadaniq, statisti~eskih dannyh ustrojstwa i
statisti~eskih dannyh kanalow wwoda/wywoda;
.AND
dostup k interpretatoru	komandnyh strok	(CSI) dlq
wyborki	i analiza standartnyh komandnyh	strok RT11;
.AND
paket obrabotki	simwolxnyh dannyh, obespe~iwa`}ij obrabotku simwolxnyh
strok peremennoj dliny;
.AND
podprogrammy obrabotki dannyh w	formate	INTEGER*4, kotorye pozwolq`t
wypolnqtx wy~isleniq s celymi dlinoj w dwa slowa;
.AND
sredstwa raboty	s rezidentnymi bibliotekami i awtonomnymi zadaniqmi;
.AND
wozmovnostx obmena informaciej mevdu zadaniqmi pri pomo}i po~towyh
q}ikow i razdelqemyh fajlow;
.AND
sredstwa analiza |ffektiwnosti programmnogo koda.
.ATT
biblioteka ne sodervit podprogramm uprawleniq ras{irennoj pamqtx`,
t.k. sootwetstwu`}ie wozmovnosti ispolxzu`tsq pri rabote s massiwami,
ob'qwlennymi operatorom	VIRTUAL.
.LIN
podprogrammy IPEEK, IPOKE, IPEEKB, IPOKEB i/ili
ISPY dlq wyborki adresow sistemy, monitora, tehni~eskih	sredstw
mogut razli~nym	obrazom
wypolnqtxsq na opredelennyh konfiguraciqh. pri programmirowanii	na
qzyke fortran sm neobhodimo
imetx w	widu
sledu`}ee:
.AND
razli~nye funkcii w pakete SYSLIB.OBJ kak rezulxtat wyda`t weli~iny,
kotorye	po tipu	qwlq`tsq celymi, we}estwennymi ili udwoennoj
to~nosti. esli polxzowatelx primenqet operator IMPLICIT, kotoryj
izmenqet zadannye po umol~ani` tipy weli~in  dlq wne{nih funkcij, to on
dolven qwno opredelitx tip teh funkcij iz SYSLIB.OBJ, kotorye na wyhode
wyda`t celye ili we}estwennye rezulxtaty. funkcii udwoennoj
to~nosti wsegda	dolvny opisywatxsq operatorom DOUBLE PRECISION (ili
REAL*8). nesobl`denie |togo trebowaniq movet priwesti k
nepredskazuemym	rezulxtatam;
.AND
wse imena podprogramm, qwlq`}ihsq wne{nimi po otno{eni`
k golownoj programme i kotorye pereda`tsq "planiru`}im"	podprogrammam
(takim kak ISCHED, ITIMER, IREADF i dr.), dolvny opisywatxsq
w operatore EXTERNAL programmy,
kotoraq	ispolxzuet |tot	wyzow;
.AND
nekotorye parametry (ukazannye w opisaniqh otdelxnyh podprogramm)
w wyzowah SYSLIB.OBJ dolvny razme}atxsq	takim obrazom, ~toby
ne popastx w oblastx swopinga USR. esli	sekciq OTS$I po	dline
ne rawna 2 Kslow, to w programme,
wyzywa`}ej moduli iz SYSLIB.OBJ, movet poqwitxsq o{ibka. ~toby izbevatx
o{ibki,	sleduet	sdelatx	USR rezidentnoj	(komanda monitora
"SET USR NOSWAP") ili ras{iritx	OTS$I do 10000 (wosxmeri~noe) q~eek.
fortran	sm ispolxzuet direktiwu	.PSECT dlq komponowki
programmy i dannyh sootwetstwu`}ej oblasti pamqti;
.AND
literaly (stroki) mogut	ispolxzowatxsq w ka~estwe parametrow pri wyzowe
podprogramm i funkcij sistemnoj	ob'ektnoj biblioteki;
.AND
na podprogrammy	zawer{eniq i obsluviwaniq prerywanij nakladywa`tsq
opredelennye ograni~eniq.
.CPT obra}enie k bibliotekam
.LIN
programma polxzowatelq pri wypolnenii operacij sredstwami operacionnoj
sistemy	obra}aetsq k monitoru s	"programmnym zaprosom".	pri obra}enii
k monitoru programma dolvna sformirowatx tablicu parametrow i wypolnitx
neobhodimu` instrukci` EMT. dlq	obleg~eniq formirowaniq	tablic i wybora
instrukcii EMT polxzowatel` predostawlqetsq dwe	biblioteki.
dlq formirowaniq "programmnyh zaprosow"	iz programm, napisannyh	na qzyke
assembler, ispolxzuetsq	sistemnaq makrobiblioteka SYSMAC.SML, a	iz
programm, napisannyh na	qzyke fortran sm, ispolxzuetsq sistemnaq ob'ektnaq
biblioteka SYSLIB.OBJ, dopuska`}aq obra}eniq i iz programm,
napisannyh na qzyke assembler.
.HLV 1
obra}enie k sistemnoj makrobiblioteke
.LIN
imena sistemnyh	makrokomand na~ina`tsq s to~ki (.) dlq otli~iq ih ot
simwolow i imen	makrokomand, opredelennyh polxzowatelem.
.LIN
argumenty sistemnyh makrokomand	dolvny bytx dopustimymi	wyraveniqmi
qzyka assembler, t.k. pri makroras{irenii w processe translqcii	oni
budut ispolxzowany kak operand "isto~nik" w instrukcii MOV.
.LIN
wse sistemnye makrokomandy, ispolxzuemye w programme, dolvny bytx
opisany	w direktiwe .MCALL. w processe translqcii opredeleniq sootwetstwu`}ih
makrokomand budut wybrany iz SYSMAC.SML.
.LIN
w RT11 ispolxzu`tsq	sistemnye makrokomandy dwuh formatow:
.SWT
	  1) .PRGREQ   ARG1,ARG2,...,ARGN

	  2) .PRGREQ   AREA,ARG1,ARG2,...,ARGN
.LIN
makrokomandy perwogo formata generiru`t	libo emt 374,
libo odnu iz emt 340-357.
.LIN
sistemnye makrokomandy,	ispolxzu`}ie instrukci`	EMT 374,
razme}a`t argumenty w registre R0. w mlad{ij bajt
zanositsq nomer	kanala,	a w star{ij - kod funkcii.
.LIN
dlq sistemnyh makrokomand s kodami 340-357 argumenty (esli oni zadany)
razme}a`tsq w steke, w R0 ili i	w R0, i	w sTEKE.
.LIN
nekotorye argumenty
makrokomandy mogut bytx	opu}eny.
.LIN
makrokomandy wtorogo formata generiru`t	wsegda emt 375.
w |tom formate perwyj argument (aRea) predstawlqet soboj
ukazatelx adresa spiska	argumentow. format spiska argumentow
predstawlen na ris. 1.
.TES 14
.SWT
		  !--------!--------!
      R0 => AREA: !  CODE  !  CHAN  !
		  !--------!--------!
		  !	 ARG 1	    !
		  !-----------------!
		  !	 ARG 2	    !
		  !-----------------!
		  !	 . . .	    !
		  !-----------------!
		  !	 ARG N	    !
		  !-----------------!

.MID ris. 1
.LIN
dopuskaetsq otsutstwie argumentow. esli	opu}en argument	AREA,
to predpolagaetsq, ~to on sodervitsq w R0. esli
opu}eny	kakie-libo Argumenty ot	aRG1 do	aRGN, to
makrokomanda ne	izmenqet sootwetstwu`}ih im zapisej w
spiske argumentow.
.LIN
naprimer, w makrokomande:
.SWT
	     .PRGREQ   AREA,ARG1,ARG2
.BLN
zapolnq`tsq perwyj i wtoroj argumenty, a R0 sodervit
adres spiska argumentow.
.LIN
w makrokomande:
.SWT
	     .PRGREQ   AREA
.BLN
w spiske zapolnqetsq tolxko perwyj bajt	(kod funkcii),
a ostalxnye argumenty (esli oni	estx) ne izmenq`tsq. R0	sodervit
adres spiska argumentow.
.LIN
w makrokomande:
.SWT
	     .PRGREQ   ,ARG1
.BLN
predpolagaetsq,	~to R0 uve sodervit adres spiska
argumentow. w spiske zapolnqetsq tolxko	perwyj argument,
ne izmenqq ostalxnyh (esli oni estx).
.LIN
w makrokomande:
.SWT
	     .PRGREQ
.BLN
predpolagaetsq,	~to R0 sodervit	adres spiska
argumentow, a sami argumenty uve zaneseny polxzowatelem
ili predydu}im wyzowom dannoj makrokomandy.
.LIN
spisok argumentow EMT movet bytx zapolnen stati~eski:
.TES 8
.SWT
	     MOV      #AREA,R0
	     .PRGREQ
	     . . .
 AREA:	     .BYTE    CHAN
	     .BYTE    CODE
	     .WORD    ARG1
	     .WORD    ARG2
.BLN
i dinami~eski:
.TES 9
.SWT
	     .PRGREQ  #AREA,#ARG1,#ARG2
 ili
	     MOV      #AREA,R0
	     MOV      #ARG1,2(R0)
	     MOV      #ARG2,4(R0)
	     MOVB     #CHAN,@R0
	     MOVB     #CODE,1(R0)
	     .PRGREQ
.LIN
|ti tri	primera	opredelq`t odnu	i tu ve	makrokomandu.
.LIN
oba formata analogi~ny formatam	sistemnyh makrokomand
w sisteme fobos, no RT11 predostawlqet krome togo
tri nowye modifikacii sistemnyh	makrokomand wtorogo
formata	(emt 375), osnowannyh na wozmovnosti
ispolxzowaniq kl`~ewyh argumentow, t.e.	takih, na
mnemoniku kotoryh reagiruet makroassembler.
.HLV 2
kl`~ewoj argument "wLosk"
.LIN
|tot kl`~ewoj argument daet wozmovnostx	polxzowatel` stati~eski
opisywatx spisok argumentow EMT. sama makrokomanda dolvna bytx opisana
w razdele dannyh programmy polxzowatelq	sledu`}im obrazom:
.SWT
 LABEL:	     .PRGREQ   BLOCK,ARG1,...,ARGN
.BLN
gde
.DFN aRG1,...,aRGN
dopustimye argumenty dlq direktiw .WoRD	i .wYte.
.LIN
w |tom slu~ae makrokomanda ras{iritsq w	spisok argumentow EMT, a sama
instrukciq EMT generirowatxsq ne budet.
.LIN
~toby wypolnitx	dannu` makrokomandu, polxzowatelx dolven
ispolxzowatx odnu iz treh |kwiwalentnyh	zapisej:
.TES 10
.SWT
 1)	     .msaLL   .WRIte,.DIR,.ehIt
	     .DIR     #WR
	     wsS      eRRoR
	     .EXIT
 eRRoR:	     . . .
 WR:	     .WRIte   wLosk,snaN,wUF,WsN,wLoskN
	     .eND
.TES 12
.SWT
 2)	     .msaLL   .WRIte,.ehIt
	     MOV      #WR,R0
	     .WRITE
	     wsS      eRRoR
	     .EXIT
 eRRoR:	     . . .
 WR:	     .WRIte   wLosk,snaN,wUF,WsN,wLoskN
	     .eND
.TES 12
.SWT
 3)	     .msaLL   .WRIte,.ehIt
	     MOV      #WR,R0
	     EMT      375
	     wsS      eRRoR
	     .EXIT
 eRRoR:	     . . .
 WR:	     .WRIte   wLosk,snaN,wUF,WsN,wLoskN
	     .eND
.HLV 2
kl`~ewoj argument "rSest"
.LIN
|tot kl`~ewoj argument pozwolqet odnowremenno opredelitx stati~eski spisok
argumentow i wypolnitx makrokomandu.
.LIN
wstretiw |tot kl`~ewoj argument, makroassembler	sozdaet
spisok argumentow w programmnoj	sekcii $$emt$.
.TES 16
.LIN
primer.
.SWT
	  .msaLL   .WRIte
	  .PSECT   PROG
	  .WRIte   rSest,snaN,wUF,WsN,wLoskN,SECT=PROG

	  .rSest   $$emt$	     ; ras{irenie
       $$$ = .			     ; makro-
	  .wYte	   snaN,soD	     ; komandy
	  .WoRD	   wUF,WsN,wLoskN    ;
	  .PSECT   PROG		     ;
	  moV	   #$$$,R0	     ;
	  emt	   375		     ;
	  BCS	   ERROR
.LIN
kl`~ewoj argument "rSest" pozwolqet polxzowatel` ne zadumywatxsq nad
mestom raspoloveniq spiska argumentow i	ne rezerwirowatx dlq nego mesto
w programme (mesto budet otwoditxsq awtomati~eski).
.HLV 2
kl`~ewoj argument "CODE"
.LIN
|tot kl`~ewoj argument pozwolqet programmistu regulirowatx zanesenie
koda funkcii w spisok argumentow. CODE movet imetx dwa zna~eniq:
SET - zanesti kod funkcii i NOSET - ne zanositx	kod funkcii.
.TES 14
.LIN
primer.
.SWT
	     .MCALL  .WRITE,.READ,.EXIT
	     . . .
	     .WRITE  #AREA,#CHAN,#BUF,#WCN,#BLOCKN
	     . . .
	     .WRITE  #AREA,CODE=NOSET
	     . . .
	     .READ   #AREA,CODE=SET
	     . . .
	     .WRITE  #AREA,CODE=SET
	     . . .
	     .EXIT
.LIN
|tot kl`~ewoj argument pozwolqet ispolxzowatx odin i tot ve spisok argumentow
dlq makrokomand, ime`}ih odni i	te ve argumenty, no razli~nye kody funkcij.
ispolxzowanie |togo kl`~ewogo argumenta	umenx{aet razmer programmy
i wremq	ee wypolneniq.
.HLV 2
adresaciq argumentow
.LIN
argumenty sistemnyh makrokomand	dolvny imetx revim adresacii,
dopustimyj w instrukcii	MOV. naprimer, dlq  zaneseniq w	spisok argumentow
~isla {estx, ispolxzuetsq adresaciq (#):
.SWT
	     .PRGREQ  #AREA,#6
.BLN
esli nuvno zanesti sodervimoe adresa ili registra, ispolxzuetsq:
.SWT
	     .PRGREQ  #AREA,ADDR,R0
.LIN
|to swqzano s tem, ~to spisok argumentow dolven	sodervatx neposredstwenno
zna~eniq argumentow.
.LIN
pri ispolxzowanii kl`~ewyh slow	"BLOCK"	i "PSECT" spisok argumentow
formiruetsq s pomo}x` direktiw .WORD i .BYTE. po|tomu argumenty
makrokomand dolvny bytx	neposredstwennymi zna~eniqmi
i ukazywatxsq wse.
.LIN
prime~aniq:
.LIN 0
1. posle wypolneniq makrokomandy wse uniwersalxnye registry,
krome R0, sohranq`t swoi zna~eniq. R0 sodervit informaci`,
wozwra}ennu` monitorom.	w teh slu~aqh, kogda informaciq	ne wozwra}aetsq,
sodervimoe R0 ne predskazuemo.
.LIN 0
2. tak kak R0 qwlqetsq rabo~im registrom sistemnyh makrokomand,	programmist
pri ukazanii argumentow	ne dolven ispolxzowatx swqzannyh s nim
revimow	adresacii.
.LIN 0
3. ukazatelx steka ostaetsq bez	izmenenij. iskl`~eniem qwlqetsq	wyzow
interpretatora komandnoj stroki	(CSI).
.HLV 1
obra}enie k sistemnoj ob'ektnoj	biblioteke
.LIN
podprogrammy iz	SYSLIB.OBJ wyzywa`tsq tak ve, kak i podprogrammy, napisannye
polxzowatelem. w sistemnu` ob'ektnu` biblioteku	whodqt
kak podprogrammy (SUBROUTINE), tak i funkcii (FUNCTION).
obra}enie k funkcii proizwoditsq po imeni w wide:
.SWT
	I=NAME([ARGUMENTS])
.LIN
zna~enie, wozwra}aemoe funkciej, movet bytx kodom o{ibki ili drugoj
informaciej, kotoru` ispolxzuet	wyzywa`}aq programma. smysl zna~eniq
opredelqetsq pri opisanii kavdoj konkretnoj funkcii.
.LIN
podprogrammy wyzywa`tsq	s pomo}x` operatora CALL w wide:
.SWT
	CALL NAME[(ARGUMENTS)]
.LIN
funkcii	iz SYSLIB.OBJ mogut bytx wyzwany i kak podprogrammy,
esli net neobhodimosti w rezulxtiru`}ej	weli~ine i naoborot.
.LIN
naprimer:
.SWT
	CALL  ITWAIT(TIME)
 ili
	I = ITWAIT(TIME)
.LIN
esli w opisanii	podprogrammy ne	ukazano, ~to ee	movno wyzywatx kak
funkci`, to pri	obra}enii k nej	kak k funkcii wozwra}aemoe zna~enie
neopredelenno.
.HLV 2
swqzx programm na fortrane i makroassemblere
.LIN
format wyzowa qwlqetsq standartnym dlq wseh programm,
napisannyh na qzyke fortran sm.
|ti standartnye	sogla{eniq kasa`tsq pereda~i uprawleniq, obmena
dannymi, raspredeleniq pamqti i	ispolxzowaniq registrow.
ispolxzowanie |tih sogla{enij pozwolqet	pisatx programmy na
qzyke makroassembler, kotorye movno budet wyzywatx iz
programm, napisannyh na	qzyke fortran sm.
.LIN
pereda~a uprawleniq podprogramme iz SYSLIB.OBJ
proizwoditsq po	sledu`}ej instrukcii:
.SWT
	JSR PC,SUBR
.LIN
w registre R5 ukazywaetsq adres	spiska argumentow,
perwyj |lement kotorogo	zadaet koli~estwo argumentow wyzowa,
wtoroj - adres perwogo argumenta, tretij - adres wtorogo argumenta
i t.d. (ris. 2).
.TES 15
.SWT
		----------------------------
	R5 =>	I      0      I	koli~estwo I
		I	      I	argumentow I
		I--------------------------I
		I    adres 1 argumenta	   I
		I--------------------------I
		I    adres 2 argumenta	   I
		I--------------------------I
		I	  . . .		   I
		I--------------------------I
		I    adres N argumenta	   I
		----------------------------
.MID ris. 2
.LIN
propu}ennyj argument w operatore CALL dolven ukazywatxsq
podrqd idu}imi zapqtymi,
naprimer:
.SWT
	CALL  SUBR(X,,Y)
.LIN
w spiske argumentow propu}ennye	argumenty wyzowa polu~a`t
zna~enie rawnoe	"-1".
.LIN
dlq pereda~i uprawleniq	ispolxzuetsq registr PC, a dlq pereda~i
argumentow wyzowa - registr R5.	w fortrane wyzywa`}aq programma
awtomati~eski sohranqet	registry.
.LIN
imq podprogrammy dolvno	bytx ob'qwleno globalxnym.
.ATT
wyzywaemaq podprogramma	ne dolvna modificirowatx spisok	argumentow.
.LIN
wozwrat	uprawleniq w wyzywa`}u`	programmu osu}estwlqetsq po instrukcii
"RTS PC".
.HLV 2
wyzow podprogramm na fortrane iz programm na qzyke makroassembler
.LIN
esli trebuetsq wyzwatx
fortranowsku` podprogrammu iz programmy	na qzyke makroassembler,
nuvno sozdatx fiktiwnu`	golownu` programmu, naprimer:
.SWT
	PROGRAMM     FORINT
	CALL	     CALMAC
	STOP
	END
.BLN
CALMAC - imq programmy na makroassemblere, kotoraq movet wyzywatx
podprogrammy  na fortrane i assemblere.
.LIN
sozdanie fiktiwnoj golownoj programmy neobhodimo, tak kak
pri zagruzke programmy proishodit inicializaciq	oblastej pamqti	i q~eek
dannyh,
neobhodimyh dlq	raboty ispolnq`}ej sistemy fortrana (OTS).
.LIN
sledu`}aq programma CALMAC wyzywaet
podprogrammu MAXMIN, napisannu`	na fortrane.
.SWT
	 .TITLE	 CALMAC
	 .GLOBL	 MAXMIN
 CALMAC::
	 MOV	 #ARGBLK,R5 ; ustan. R5	na blok	arg.
	 JSR	 PC,MAXMIN  ; wyzow MAXMIN
	 RTS	 PC
 I:	 .WORD	 28.	   ; zna~. perwogo arg.
 J:	 .WORD	 78.	   ; zna~. wtorogo arg.
 ARGBLK: .WORD	 2	   ; ~islo argumentow
	 .WORD	 I	   ; adres perwogo arg.
	 .WORD	 J	   ; adres wtorogo arg.
	 .END
.LIN
blok argumentow	neobhodimo razme}atx w steke ili w otdelxnoj oblasti w
programme na assemblere.
pered wyzowom podprogrammy na fortrane instrukciej
"JSR	 PC,mAXMIN" R5 dolven ukazywatx	 na werhu{ku  steka ili
na na~alo bloka	argumentow.
.LIN
w predydu}ej programme blok argumentow razme}en	w oblasti programmy.
sledu`}aq programma STAKEM wypolnqet teve operacii, ~to	i
programma CALMAC, no argumenty razme}aet
w steke.
.SWT
	 .TITLE	 STAKEM
	 .GLOBL	 MAXMIN, STAKEM
 STAKEM: MOV	 #J, -(SP)
	 MOV	 #I, -(SP)
	 MOV	 #2, -(SP)
	 MOV	 SP, R5
	 JSR	 PC, MAXMIN
	 ADD	 #6, SP
	 RTS	 PC
 I:	 .WORD	 28.
 J:	 .WORD	 78.
	 .END
.LIN
pri razme}enii argumentow w steke, neobhodimo
pered wypolneniem instrukcii "RTS PC" wosstanowitx ukazatelx steka.
pered wyzowom programmy	na fortrane neobhodimo
sohranqtx wse ispolxzuemye registry, t.k. ne izwestno kakie
registry ispolxzuet programma.
sodervimoe ukazatelq steka posle wyzowa	ostaetsq neizmennym.
.LIN
imq podprogrammy na fortrane, kotoru` wyzywaet programma
na MAkroassemblere dolvno bytx ob'qwleno globalxnym.
wozwrat	w programmu na makroassemblere proishodit po operatoru RETURN.
sledu`}aq podprogramma napisana	na qzyke fortran sm.
.SWT
	 SUBROUTINE MAXMIN (IN1,IN2)
	 INTEGER BIG, SMALL
	 IF (IN1. LT. IN2) GOTO	10
	 BIG=IN1
	 SMALL=IN2
  5	 TYPE 20, BIG
	 TYPE 30, SMALL
	 RETURN
 10	 BIG=IN2
	 SMALL=IN1
	 GO TO 5
 20	 FORMAT	('bolx{ee ~islo	rawno:',I2)
 30	 FORMAT	('menx{ee ~islo	rawno:',I2)
	 END
.LIN
posle assemblirowaniq i	komponowki zadaniq, ispolxzuq programmu
CALMAC ili STAKEM, sleduet zapustitx ego.
programma wydaet sledu`}ie soob}eniq:
.SWT
 bolx{ee ~islo rawno:78
 menx{ee ~islo rawno:28
 STOP --
.HLV 2
obra}enie k SYSLIB.OBJ iz programm na qzyke makroassembler
.LIN
w sledu`}em primere
funkciq	JMUL iz	biblioteki SYSLIB wyzywaetsq programmoj,
napisannoj na qzyke makroassembler.
.LIN
primer.
.TES 21
.SWT
	 .GLOBL	JMUL
	  . . .
	 MOV	#LIST,R5 ;zanesenie adresa parametrow
	 JSR	PC,JMUL	 ;obra}enie k funkcii
	 CMP	#-2,R0	 ;prowerka o{ibki
	 BEQ	ERROR
	  . . .
 LIST:	 .WORD	3	 ;blok parametrow
	 .WORD	OPR1
	 .WORD	OPR2
	 .WORD	RESULT
 OPR1:	 .WORD	100,0	 ;mnovimoe
 OPR2:	 .WORD	10,10	 ;mnovitelx
 RESULT: .BLKW	2	 ;rezulxtat
	 .END
.LIN
sledu`}ie podprogrammy i funkcii iz SYSLIB.OBJ mogut ispolxzowatxsq tolxko
s programmami na fortrane:
.TES 10
.SWT
	   GETSTR	  IQSET		IASIGN
	   IRCVDF	  ICDFN		IREADF
	   IFETCH	  ISCHED	IFREEC
	   ISDATF	  IGETC		ISPFNF
	   IGETSP	  ITIMER	ILUN
	   IWRITF	  INTSET	PUTSTR
	   SECNDS
.LIN
programmy polxzowatelq,	napisannye na makroassemblere i
wyzywa`}ie podprogrammy	iz SYSLIB.OBJ, dolvny sohranqtx	sodervimoe
l`byh trebu`}ihsq registrow do wyzowa podprogrammy iz SYSLIB.OBJ
i wosstanawliwatx ih posle wyhoda iz
podprogrammy.
.LIN
funkcii	pome}a`t w registry edinstwennyj rezulxtat.
raspredelenie registrow	dlq pome}eniq razli~nyh	tipow peremennyh
sledu`}ee:
.AND
rezulxtaty funkcij celogo i logi~eskogo	tipow zapisywa`tsq w
registr	R0;
.AND
rezulxtaty funkcij 32-razrqdnogo celogo	i logi~eskogo tipow
zapisywa`tsq w registr R0 (mlad{aq ~astx) i registr R1 (star{aq	~astx);
.AND
rezulxtaty funkcij we}estwennogo tipa zapisywa`tsq w registr R0
(star{aq ~astx)	i w registr R1 (mlad{aq	~astx);
.AND
rezulxtaty funkcij s udwoennoj to~nostx` - w registry R0-R3, samaq
mlad{aq	~astx rezulxtata zapisywaetsq w	R3;
.AND
rezulxtaty funkcij kompleksnogo	tipa - w registry R0-R3: w
registr	R0 - star{aq we}estwennaq ~astx	rezulxtata; w registr R1 -
mlad{aq	we}estwennaq ~astx rezulxtata; w registr R2 - star{aq mnimaq ~astx
rezulxtata; w registr R3 - mlad{aq mnimaq
~astx rezulxtata.
.ATT
rezulxtaty funkcij we}estwennogo tipa zapisywa`tsq w uniwersalxnye
registry centralxnogo processora,
a ne w registry	processora s plawa`}ej zapqtoj.
podprogrammy na	qzyke makroassemblera, ispolxzu`}ie |tot processor,
dolvny sohranqtx i wosstanawliwatx ego registr sostoqniq.
.LIN
USR, esli ona ne rezidentna, pome}aetsq	pri swopinge w oblastx pamqti,
smevnu`	so stekom (w storonu bolx{ih adresow) i	zanimaet 2 Kslow.
w |tu zonu ne dolvny pome}atxsq	podprogrammy obrabotki prerywanij,
podprogrammy zawer{eniq, ih dannye. pro}e wsego	proweritx wypolnenie
|togo trebowaniq putem prowerki	karty zagruzki,	~toby ubeditxsq, ~to
USR ne perekrywaet pri swopinge	podprogrammu na	qzyke makroassemblera
ili podprogrammu zawer{eniq na qzyke fortran sm. w protiwnom
slu~ae neobhodimo izmenitx porqdok ob'ektnyh modulej i bibliote~nyh
podprogramm. ~toby snqtx |ti ograni~eniq, sleduet sdelatx
USR rezidentnoj.
.HLV 2
wyzow podprogramm na qzyke makroassembler iz programm na qzyke fortran sm
.LIN
programmy na fortrane mogut wyzywatx podprogrammy na makroassemblere,
no neobhodimo sledowatx	opredelennym prawilam.
naprimer, programma INIARR qwlqetsq podprogrammoj na
makroassemblere,
kotoraq	movet bytx wyzwana iz programmy	na qzyke fortran.
.LIN
primer.
.SWT
	 .TITLE	 INIARR
	 .GLOBL	 INIARR
 INIARR: TST  (R5)+	     ; propustitx s~et~ik
			     ; argumentow
	 mOV  (R5)+,R2	     ; adres massiwa w R2
	 mOV  @(R5)+,R1	     ; "IVAL" w	R1
	 mOV  @(R5)+,R0	     ; s~et~ik w R0
	 BLE  RETURN	     ; KOnEc, esli s~et~ik <= 0
 1$:	 moV  R1,(R2)+	     ; inicializirowatx	massiw
	 DEC  R0	     ; umenx{itx s~et~ik
	 BNE  1$	     ; powtorqtx do nulq
 RETURN: RTS  PC
	 .END
.LIN
programma na fortrane wyzywaet predydu}u` podprogrammu sledu`}im obrazom:
.SWT
	CALL   INIARR  (IAR, IVAL, N)

 gde
.DFN INIARR
imq podprogrammy;
.DFN IAR
imq inicializiruemogo massiwa;
.DFN IVAL
weli~ina, inicializiru`}aq massiw;
.DFN N
~islo inicializiruemyh |lementow.
.BLN
|ta programma ill`striruet prawila sostawleniq
podprogramm na qzyke makroassemblera.
imq podprogrammy ob'qwlqetsq globalxnym.
.LIN
registr	R5 ispolxzuetsq	dlq pereda~i argumentow. takim obrazom w programme
INIARR,	blok argumentow	predstawlen kak	pokazano na ris. 3.
.TES 13
.SWT
	    ----------------
     R5	=>  !	O  !   3   !
	    ----------------
	    !  adres  IAR  !
	    ----------------
	    !  adres  IVAL !
	    ----------------
	    !  adres  N	   !
	    ----------------

		ris. 3
.LIN
registry ot R0 do R4 mogut swobodno ispolxzowatxsq, poskolxku wyzywa`}aq
programma ih sohranila.	kogda argumenty	polu~eny, movno	takve ispolxzowatx
R5.
.LIN
pri zawer{enii podprogramma wozwra}aet uprawlenie w wyzywa`}u` programmu
~erez RTS PC.
.LIN
sledu`}aq fortranowskaq	programma s imenem DOFOR wyzywaet podprogrammu INIARR.
.SWT
      PROGRAM  DOFOR
      INTEGER*2	    ARRAY
      DIMENSION	    ARRAY(2)
      N=2
      DO  20  IVAL = 1,	3
      CALL  INIARR   (ARRAY, IVAL, N)
      WRITE  (5,100) (ARRAY(I),	I=1,N)
 20   CONTINUE
 100  FORMAT   (I3)
      STOP
      END
.LIN
zapustiw zadanie, posle	translqcii i komponowki	obeih programm,
inicializirowannyj massiw budet	wyweden	na terminal kak	pokazano:
.TES 7
.SWT
 1
 1
 2
 2
 3
 3
 STOP --
.HLV 2
zapusk programmy na fortrane w operatiwno/fonowom revime
.LIN
programmy na fortrane mogut wypolnqtxsq	kak operatiwnye, fonowye
ili sistemnye zadaniq, ~to pozwolqet
|ffektiwno ispolxzowatx	wremq centralxnogo
processora. osnownye {agi dlq zapuska
programm na  fortrane, kotorye ispolxzu`t RT11FB(XM) opisany nive.
.LIN
prevde ~em zapustitx operatiwnu` programmu, neobhodimo
zagruzitx drajwery ustrojstw,
trebu`}iesq dlq	operatiwnogo zadaniq.
drajwery ustrojstw razme}a`tsq w pamqti
mevdu RMON i USR i KMON, ~to priwodit k	pereme}eni`
USR i KMON wniz	po operatiwnoj pamqti.
.LIN
po komande FRUN	operatiwnoe zadanie zagruvaetsq
w pamqtx mevdu drajwerami ustrojstw i USR, ~to priwedet
k pereme}eni` USR i KMON dalx{e	wniz po	pamqti.
pri zapuske programmy na fortrane w operatiwnom	razdele	neobhodimo
wydelqtx rabo~ee prostranstwo
s pomo}x` kl`~a	/BUFFER:N w komande FRUN (dlq sistemnogo zadaniq w komande
SRUN), a takve
udostoweritxsq,	~to ona
imeet dostato~no mesta dlq steka.
razmer steka movno ukazatx wo  wremq komponowki.
.LIN
fonowaq	oblastx	dolvna imetx dlinu ne menee
4 kslow	dlq razme}eniq USR i KMON. do zapuska fonowogo
zadaniq	im qwlqetsq KMON.
.LIN
~toby swoping USR proishodil prawilxno,	neobhodimo
imetx prostranstwo w 2 kslow w fonowom razdele i 2 kslow
w operatiwnom razdele. operatiwnoe (sistemnoe) zadanie rezerwiruet 2 kslow
pamqti,	dave esli kone~nyj ob'em zadaniq menx{e	2 kslow, a fonowyj
razdel imeet minimalxnyj ob'em 4 kslow dlq ispolxzowaniq USR i KMON.
.LIN
esli programma na fortrane skomponowana	kak operatiwnoe	(sistemnoe) zadanie,
zapuskaemoe
komandoj monitora FRUN (SRUN),
razmer dopolnitelxnoj
operatiwnoj pamqti, neobhodimoj	dlq wypolneniq |togo zadaniq,
ras~itywaetsq po formule:
.SWT
	X = 0.5*(440+(33*N)+(R-136)+A*512)	      (1.1)
.BLN
gde
.DFN h
razmer dopolnitelxnoj rabo~ej oblasti dlq operatiwnogo zadaniq;
.DFN N
maksimalxnoe ~islo kanalow wwoda/wywoda; opredelqetsq kl`~om /UNITS:N
pri translqcii programmy; po umol~ani` N=6;
.DFN R
maksimalxnaq dlina bufera dlq formirowaniq zapisej formatnogo wwoda/wywoda;
opredelqetsq kl`~om /RECORDS:R pri translqcii programmy; po umol~ani` R=136;
.DFN A
koli~estwo odnowremenno	ispolxzuemyh buferow wwoda/wywoda; pri dwojnoj
buferizacii "A"	umnovaetsq na 2.
.LIN
dlq nekotoryh funkcij sistemnoj	ob'ektnoj biblioteki formula dolvna bytx
modificirowana.
.LIN
dlq funkcii IQSET w formulu neobhodimo wnesti poprawku,	u~itywa`}u`
dopolnitelxnoe mesto w pamqti dlq zapisi |lementow o~eredi
(dlina o~eredi):
.SWT
	X = h +	(10*dlina o~eredi)		      (1.2)
.LIN
dlq funkcii ICDFN neobhodimo wnesti w formulu poprawku,	u~itywa`}u`
dopolnitelxnoe mesto w pamqti dlq zapisi ispolxzuemyh
kanalow:
.SWT
	X = h +	(6*~islo kanalow)		      (1.3)
.LIN
dlq funkcii INTSET neobhodimo wnesti w formulu poprawku, u~itywa`}u`
dopolnitelxnoe mesto w pamqti dlq neobhodimogo ~isla wyzowow INTSET,
wkl`~ennyh w programmu:
.SWT
	X = h +	(25*INTSET)			      (1.4)
.LIN
l`bye wyzowy sistemnoj ob'ektnoj biblioteki SYSLIB.OBJ,	wkl`~a`}ie wyzow
INTSET i wyzywa`}ie podprogrammy zawer{eniq, dolvny wkl`~atx 64
(desqti~nOE) slowa pl`s	koli~estwo slow, neobhodimyh dlq razme}eniq
wtorogo	bufera zapisej (po umol~ani` nazna~aetsq 68 slow).
dlina bufera zapisej ukazywaetsq kl`~om	/R w komandnoj stroke
translqtora (kl`~ /RECORDS komandy monitora FORTRAN).
esli kl`~ /R ne	ispolxzuetsq, to w formulu neobhodimo dobawitx
132 (desqti~nOE) slowa:
.SWT
	X = h +	(64+R/2)			      (1.5)
.LIN
esli w moment inicializacii podprogrammy zawer{eniq operatiwnogo zadaniq
OTS fortrana obnaruviwaet, ~to pri zapuske programmy po
komande	FRUN (SRUN) s kl`~om /BUFFER ne
wydeleno dostato~no mesta dlq operatiwnogo zadaniq, to
poqwlqetsq soob}enie:
.LIN
.MID ?ERR 0, NON FORTRAN ERROR CALL
.LIN
|to soob}enie poqwlqetsq takve w slu~ae, esli w	pamqti nedostato~no
mesta dlq fonowogo zadaniq ili esli podprogramma zawer{eniq iniciirowana
pod uprawleniem	RT11SJ wo wremq wypolneniq drugoj podprogrammy
zawer{eniq. w poslednem	slu~ae wypolnenie programmy prekra}aetsq. dlq
aktiwizacii neskolxkih podprogramm zawer{eniq neobhodimo ispolxzowatx
FB/XM-monitory.
.LIN
nive opisywaetsq procedura zapuska
zadanij	na fortrane, odnogo w fonowom razdele i
odnogo w operatiwnom razdele.
.LIN
fonowoe	zadanie	BACK pokazano nive:
.SWT
	 PROGRAMM BACKGROUND
	 IMPLICIT INTEGER (0)
	 CALL IPOKE ("44,"10000.OR.IPEEK ("44))
 100	 CALL PRINT ('priwet iz	fonowogo razdela')
	 ICHAR=ITTINR ()
	 OCHAR=ITTOUR (ICHAR)
	 GOTO 100
	 END
.LIN
|ta programma pe~ataet soob}enie "priwet iz fonowogo razdela"
i budet	pe~atatx soob}enie pri kavdom wwode
simwola	s terminala.
.LIN
operatiwnoe zadanie FORE pokazano nive:
.SWT
	 PROGRAM FOREGROUND
	 IMPLICIT INTEGER (0)
	 CALL IPOKE ("44, "10000. OR. IPEEK ("44))
 100	 CALL PRINT ('priwet iz	operatiwnogo zdela')
	 ICHAR=ITTINR ()
	 OCHAR=ITIOUR (ICHAR)
	 GOTO 100
	 END
.LIN
operatiwnoe zadanie sozdaetsq komandoj LINK/FOREGROUND.
zagruzo~nomu modul` priswaiwaetsq tip fajla .REL,
i on dolven zapuskatxsq	kak wysokoprioritetnoe zadanie.	naprimer:
.SWT
	    .LINK/FOREGROUND FORE
.BLN
pri wyzowe programmy po	komande	:
.SWT
	    .FRUN FORE
.BLN
wydaetsq soob}enie:
.SWT
	    ?ERR 62 FORTRAN START FAIL
.LIN
ono ukazywaet, ~to trebuetsq wydelenie
dopolnitelxnoj oblasti pamqti s	pomo}x`	kl`~a /BUFFER
(sm. formuly 1.1-1.5).
takim obrazom zadanie dolvno zapuskatxsq komandoj, ukazannoj
nive:
.SWT
	    .FRUN FORE/BUFFER:760
.LIN
rezulxtatom wypolneniq |toj komandy budet sledu`}ij wywod
na terminal:
.SWT
 F>
 priwet	iz operatiwnogo	razdela
 B>
 .
.LIN
pe~atx F> ukazywaet na to, ~to
wywod proizwoditsq iz operatiwnogo zadaniq. zatem, monitor
pe~ataet B> i to~ku, ukazywaq, ~to uprawlenie
wozwra}eno w revim komand monitora. komandnyj wwod ostaetsq
swqzannym s fonowym zadaniem. posle wwoda:
.SWT
	    .RUN BACK
.BLN
wywoditsq soob}enie iz fonowogo	razdela:
.SWT
 priwet	iz fonowogo razdela
.LIN
dlq wwoda s terminala w	operatiwnoe  zadanie
ispolxzuetsq uprawlq`}ij simwol	CTRL/F.
sistema	nape~ataet F>, ukazywaq
~to wwod naprawlqetsq w	operatiwnoe
zadanie. nape~ataw simwol, naprimer, "Y",
budet wywedeno soob}enie iz operatiwnogo zadaniq.
.SWT
 F>
 Y priwet iz operatiwnogo razdela
.LIN
wwedite	CTRL/B dlq wozwrata w fonowyj razdel ili CTRL/C
dlq wozwrata w revim komand monitora. posle zawer{eniq operatiwnogo
zadaniq, dlq wosstanowleniq
prostranstwa
w pamqti, neobhodimo wygruzitx	operatiwnoe zadanie i nenuvnye
drajwery.
.LIN
komponowka i zapusk sistemnyh zadanij proizwoditsq analogi~no
operatiwnomu.
.HLV 2
komponowka sistemnoj ob'ektnoj biblioteki s programmoj	polxzowatelq
.LIN
pri ispolxzowanii biblioteki SYSLIB.OBJ	s programmoj polxzowatelq budut
komponowatxsq tolxko nuvnye moduli.
naprimer:
.SWT
		.LINK PROG
.ATT
movno ne ukazywatx w komande fajl biblioteki SYSLIB.OBJ,
t.k. |ta biblioteka ispolxzuetsq po umol~ani`.
.LIN
oby~no,	sistemnaq biblioteka
tak ve wkl`~aet	w sebq drajwer raboty s	perekrytiqmi i
podprogrammy, prednazna~ennye dlq OTS
fortranA.
.LIN
dlq dobawleniq modulej FORLIB.OBJ k biblioteke
SISLIB.OBJ ispolxzujte sledu`}u` komandu:
.SWT
		.LIBRARY/INSERT/REMOVE SISLIB FORLIB
		GLOBAL?	$OVRH
		GLOBAL?
.CPT whodnye i wyhodnye	dannye
.LIN
dannyj podrazdel sodervit opisaniE parametrow
sistemnyh makrokomand, podprogramm i funkcij sistemnoj ob'ektnoj
biblioteki.
.HLV 1
sistemnaq makrobiblioteka
.LIN
nive priwedeny osnownye	ponqtiq, ispolxzuemye pri opisanii
makrokomand sistemnoj makrobiblioteki.
.HLV 2
nomer kanala
.LIN
nomer kanala - |to ~islowoj logi~eskij identifikator fajla ili nabora
dannyh,	ispolxzuemyj monitorami	RT11 on prinimaet zna~enie
ot 0 do	377 (wosxmeri~noe).
polxzowatelx dolven sam	ustanowitx swqzx nomera	kanala s fajlom	ili
ustrojstwom s pomo}x` sistemnyh	makrokomand. posle ustanowleniq	swqzi
dlq ssylki na fajl ili ustrojstwo, dostato~no ukazatx nomer kanala.
.LIN
sistema	po umol~ani` predostawlqet polxzowatel`	16 kanalow. ~toby
polu~itx bolx{ee koli~estwo kanalow, neobhodimo	ispolxzowatx sootwetstwu`}ie
sistemnye makrokomandy.
.HLV 2
blok ustrojstwa
.LIN
blok ustrojstwa	- ~etyrehslownaq  tablica, soderva}aq informaci`
dlq sistemnoj makrokomandy ob imeni ustrojstwa,	imeni i	 tipe
fajla w	kode .RaD50.
.LIN
perwoe slowo sodervit fizi~eskoe ili logi~eskoe	imq ustrojstwa.	wtoroe i
tretxe - sodervat imq fajla (ne	bolee 6	simwolow), ~etwertoe -
tip fajla.
.LIN
imena ne dolvny	sodervatx to~ek	i dwoeto~ij, qwlq`}ihsq
razdelitelqmi w	komandnoj stroke.
.LIN
naprimer, blok ustrojstwa, predstawlq`}ij fajl rokaZ.mas na
ustrojstwe Dk:,	movno zapisatx sledu`}im obrazom:
.TES 9
.SWT
	.RaD50	 /Dk/
	.RaD50	 /rok/
	.RaD50	 /aZ/
	.RaD50	 /MAC/
 libo
	.RaD50	/Dk rokaZ mas/
 libo
	.DBLK	DK,POKAZ,MAC
.LIN
nedosta`}ie simwoly wo wtorom slu~ae dopolnq`tsq probelami,
a w perwom i tretxem mogut prosto opuskatxsq.
dlq udobstwa rekomenduetsq ispolxzowatx	makrokomandu .DBLK.
.HLV 2
swoping	USR
.LIN
w zawisimosti ot togo, trebu`t ili net sistemnye makrokomandy
prisutstwiq w pamqti USR, oni delqtsq na dwa sootwetstwu`}ih tipa.
.LIN
nekotorye sistemnye makrokomandy, ispolxzu`}ie USR, trebu`t s~itywaniq
nowoj kopii USR. |to swqzano s tem, ~to	podprogrammy, wypolnq`}ie
|ti makrokomandy, raspoloveny w	oblasti	bufera USR, kotoryj ispolxzuetsq
dlq hraneniq odnogo segmenta kataloga. takim obrazom, esli USR w pamqti,
to sistema s~itaet, ~to	bufer USR uve modificirowan, i po|tomu,	dlq
wypolneniq podobnyh sistemnyh makrokomand, proizwoditsq	s~itywanie
nowoj kopii USR.
.LIN
w razli~nyh tipah monitora ispolxzowanie USR dlq odnoj
i toj ve makrokomandy movet otli~atxsq.
.LIN
sleduet	otmetitx, ~to rabota makrokomandy .CLOSE s ustrojstwami
nefajlowoj struktury (ustrojstwo pe~ati, terminal i t.d.) obhoditsq
 bez ispolxzowaniq USR dlq l`bogo tipa monitora.
.LIN
USR ne qwlqetsq	reenterabelxnoj	programmoj i po|tomu ne	movet
wypolnqtx sistemnye makrokomandy bolee ~em odnoj programmy polxzowatelq.
sledowatelxno, kogda USR ispolxzuetsq odnoj programmoj,
to l`baq drugaq, trebu`}aq USR,	stawitsq w o~eredx.
.LIN
esli w programme wstretilasx makrokomanda, dlq wypolneniq kotoroj
neobhodima USR,	to oblastx programmy, w	kotoru`	dolvna bytx
zagruvena USR, sohranqetsq sistemoj w fajle SWAP.SYS na	sistemnom
ustrojstwe, a USR
zagruvaetsq w operatiwnu` pamqtx. zawer{iw wypolnenie
trebuemoj operacii, sistema wosstanawliwaet programmu iz fajla
SWAP.SYS.
.LIN
pri rabote RT11XM USR wsegda rezidentna.
.LIN
oby~no swoping proishodit po umol~ani`,	no movno swesti
koli~estwo neobhodimyh
obmenow	k minimumu, esli pri napisanii programm	u~itywatx sledu`}ee:
.AND
esli w fonowom zadanii makrokomanda .Settor ukazywaet na adres,
prewy{a`}ij nivnij adres oby~nogo razme}eniq USR, to pri wyzowe	USR
potrebuetsq operaciq obmena (swoping);
.AND
esli adres zagruzki USR	w q~ejke 46 ustanowlen polxzowatelem wo	wremq
translqcii ili pri wypolnenii programmy, to on ispolxzuetsq monitorom
w ka~estwe wozmovnogo mesta zagruzki USR. esli ve w q~ejke 46
sodervitsq 0, USR zagruvaetsq w	oby~nu`	oblastx;
.AND
sme}enie 374 w rezidentnoj ~asti monitora  sodervit razmer USR w bajtah
i dolvno ispolxzowatxsq	programmoj dlq dinami~eskogo opredeleniq
razmera	oblasti, neobhodimoj dlq swopinga.
.TES 3
.LIN
prime~aniq:
.LIN 0
1. operaciq swopinga trebuet otnositelxno bolx{ih zatrat wremeni, po|tomu
ee neobhodimo po wozmovnosti izbegatx.
.LIN 0
2. sodervimoe q~ejki 46	ignoriruetsq, esli ne nuven swoping.
.LIN 0
3. w operatiwnom revime, esli budet proizhoditx	swoping	USR, neobhodimo
pomestitx zna~enie adresa zagruzki USR w q~ejku	46. pri	otsutstwii
sootwetstwu`}ej
oblasti	i neobhodimosti	swopinga USR proizojdet	neustranimaq o{ibka.
o{ibki ne budet, esli USR rezidentna (rezidentnostx USR
obespe~iwaetsq komandoj	monitora "Set USR NoSWar").
.LIN 0
4. RT11SJ ne kontroliruet prawilxnostx adresa swopinga w q~ejke 46.
esli oblastx swopinga perekrywaet rezidentnyj monitor, sistema
razru{aetsq.
.LIN 0
5. neobhodimo sleditx, ~toby USR ne zagruvalasx	w programmnyj stek,
w bloki	parametrow obra}eniq k USR, w bufery wwoda/wywoda, w drajwery
ustrojstw, w programmy zawer{eniq, ispolxzuemye	pri wyzowah USR.
.HLV 2
podprogrammy zawer{eniq
.LIN
podprogrammy zawer{eniq	- napisannye polxzowatelem programmy,
wypolnqemye po okon~anii wwoda/wywoda. pri whode w nee R0 sodervit
slowo sostoqniq	kanala,	R1 - nomer kanala, s kotorym
swqzana	operaciq. bit "s" sbro{en.
pri rabote RT11FB(XM) podprogrammy zawer{eniq drug druga
ne prerywa`t, a	ustanawliwa`tsq	w o~eredx.
pri rabote RT11SJ - prerywa`t.
.LIN
pri sozdanii podprogramm zawer{eniq neobhodimo sobl`datx sledu`}ie
ograni~eniq:
.AND
im zapre}aetsq wydawatx	zaprosy, trebu`}ie swoping USR,	ina~e wozniknet
neustranimaq o{ibka monitora;
.AND
oni ne dolvny razme}atxsq w pamqti, prednazna~ennoj dlq	USR;
.AND
wyhod iz podprogrammy zawer{eniq dolven
osu}estwlqtxsq posredstwom komandy RtS rs;
.AND
esli ispolxzu`tsq registry, krome R0 i R1, ih sodervimoe dolvno	w na~ale
podprogrammy zapominatxsq, a w konce wosstanawliwatxsq.
.HLV 1
sistemnaq ob'ektnaq biblioteka
.LIN
nive priwedeny osnownye	sistemnye ponqtiq, swqzannye s rabotoj
podprogramm i funkcij sistemnoj	ob'ektnoj biblioteki, i
sogla{eniq, ispolxzuemye pri wyzowe |tih podprogramm i funkcij.
.HLV 2
nomer kanala
.LIN
nomer kanala qwlqetsq logi~eskim
identifikatorom	fajla ili nabora dannyh,
ispolxzuemyh w qzyke fortran sm. takim obrazom,	kogda polxzowatelx otkrywaet
fajl na	ustrojstwe, on priswaiwaet nomer kanala
|tomu fajlu. k otkrytomu fajlu movno obra}atxsq
~erez priswoennyj nomer	kanala.
.LIN
OTS fortranA imeet 16 (desqti~noe) kanalow dostupnyh dlq
ispolxzowaniq. funkciq IGETC zakreplqet	nomer kanala za	programmoj
i pome~aet w sisteme wwoda/wywoda,
~to kanal ispolxzuetsq.	pri oswobovdenii kanala
kanal zakrywaetsq
podprogrammoj CLOSEC, ICLOSE ili PURGE.	kanal oswobovdaetsq i
wozwra}aetsq B sistemu wwoda/wywoda fortrana wyzowom IFREEC.
.LIN
funkciq	ISDFN predostawlqet polxzowatel`
do 255 (desqti~noe) kanalow.
ona wydelqet pamqtx w oblasti zadaniq dlq razme}eniq
informacii o statuse dopolnitelxnyh kanalow. funkci` ICDFN
velatelxno ispolxzowatx	wo wremq iniciacii zadaniq.
sistema
wwoda/wywoda fortrana ispolxzuet kanaly	ot 0 do	15 (desqti~noe),
po|tomu	kanaly s bolx{imi nomerami movno ispolxzowatx bez ograni~enij.
.LIN
kanaly dolvny wydelqtxsq w osnownoj programme ili w ee podprogrammah.
ne rekomenduesq	wydelqtx kanaly	w programmah, kotorye byli aktiwizirowany
w rezulxtate zawer{eniq	wwoda/wywoda ili funkciqmi ISCHED ili ITIMER.
.HLV 2
blok ustrojstwa
.LIN
blokom ustrojstwa qwlqetsq ~etyrehslownyj blok
informacii w kode RAD50, kotoryj opredelqet
fizi~eskoe ustrojstwo i	imq fajla.
w fortrane movno ispolxzowatx
tri razli~nyh metoda zadaniq |togo bloka:
.BLN
1) movno ispolxzowatx operatory	DIMENSION i DATA.
.SWT
     DIMENSION	    IFILE (4)
     DATA	    IFILE     /3RSY, 3RFIL, 3RE, 3RXYZ/
.BLN
2) movno perewesti dostupnu` stroku simwolxnogo	opisaniq fajla
w format RAD50,	ispolxzuq wyzowy SYSLIB, takie kak IRAD50, R50ASC, i RAD50.
naprimer:
.SWT
     REAL*8   FILSPC
     CALL     IRAD50	( 12, 'SY FILE	XYZ', FILSPC )
.BLN
3) movno ispolxzowatx SYSLIB,
wyzwaw ICSI, kotoraq obra}aetsq	k interpretatoru komandnoj stroki
(CSI) dlq priema i grammati~eskogo razbora
standartnoj komandnoj stroki RT11 
.HLV 2
swoping	USR
.LIN
w programmah napisannyh	na fortrane
neobhodimo u~itywatx
razme}enie USR.
USR zanimaet 2 kslow.
esli USR ne rezidentna,
to pri wyzowe podprogramm iz SYSLIB, trebu`}ih
USR (takih kak IENTER ili LOOKUP), ili kogda USR wyzywaetsq OTS
fortrana, ona zagruvaetsq w pamqtx. OTS	fortrana postroena takim obrazom,
~to USR	movet prowoditx	s nej swoping.
.LIN
neobhodimo razme}atx programmy obsluviwaniq
prerywanij i podprogrammy zawer{eniq tak, ~toby	oni ne perekrywalisx pri
swopinge USR. granicy oblasti swopinga opredelq`tsq po
karte raspredeleniq pamqti, postroennoj	komponow}ikom.
pri neobhodimosti nuvno	izmenitx porqdok ob'ektnyh modulej i
bibliotek w komande komponow}iku.
.HLV 2
uprawlenie swopingom USR
.LIN
movno uprawlqtx	swopingom USR, ispolxzuq komandy kMON:
.SWT
	SET USR	NOSWAP
 i
	SET USR	SWAP
.LIN
komanda	"SET USR NOSWAP" zapre}aet swoping USR i
fiksiruet ee w pamqti nive RMON
ili operatiwnogo zadaniq.
komanda	"SET USR SWAP"
razre{aet swoping USR.
.LIN
esli programma ne welika i w pamqti ostaetsq 2 kslow neispolxzuemoj
pamqti,	to ee movno translirowatx komandoj FORTRAN/NOSWAP.
posle kompOnowki pri zagruzke programmy	USR budet postoqnno rezidentna
i razme}ena nive operatiwnogo razdela ili RMON.
esli kwalifikator /NOSWAP ne byl ukazan, USR perekrywaet
2 kslow	programmy ot q~ejki 1000 (wosxmeri~noe)
do q~ejki 11000	(wosxmeri~noe),	kotorye	qwlq`tsq
~astx` fortranowskoj programmy naimenee	weroqtno
naru{a`}ej trebowaniq swopinga USR.
.LIN
wo wremq wypolneniq zadaniq movno uprawlqtx swopingom USR s pomo}x`
podprogramm
LOCK, UNLOCK i ITLOCK.
.LIN
wyzow LOCK fiksiruet USR w pamqti, prikreplqet ee k zapra{iwa`}emu
zadani`. wyzow UNLOCK oswobovdaet USR i	razre{aet ee swoping
i ispolxzowanie	drugim zadaniem. wyzow ITLOCK primenqetsq dlq opredeleniq
ispolxzuetsq li	USR drugim zadaniem. esli da,to	ITLOCK
wozwra}aet uprawlenie s	kodom o{ibki. |to pozwolqet programme,
sdelaw{ej popytku zahwata, prodolvatx drugie dejstwiq.
 wyzowy	LOCK i UNLOCK primenq`tsq
w operatiwnoj programme	dlq predotwra}eniq
konflikta s fonowym zadaniem w processe	inicializacii,
na faze	zawer{eniq i dlq minimizacii ~isla obmenow.
.HLV 2
strategiq swopinga USR
.LIN
pri napisanii programm neobhodimo u~itywatx,   ~to ob'ektnyj
modulx sostoit iz programmnyh sekcij (PSECT), ime`}ih unikalxnye
imena.
atributy, swqzannye s kavdoj
PSECT, ukazywa`t komponow}iku, kak kombinirowatx razli~nye
otdelxno ottranslirowannye moduli programm na fortrane,
modulej	na qzyke makroassembler	i bibliote~nyh programm	w zagruzo~nyj
modulx.
.LIN
programmnye sekcii w zagruzo~nom module	razme}a`tsq w porqdke, w
kotorom	oni ukazany komponow}iku.
sekcii uporqdo~iwa`tsq po sledu`}im kriteriqm:
soderva}ie informaci` tolxko dlq ~teniq
(takie,	kak instrukcii ili dannye), sme{annye
sekcii,	soderva}ie peremennye.
.LIN
golownoj modulx	w programme na fortrane	(oby~no	- perwyj ob'ektnyj modulx
w posledowatelxnosti pred'qwlennyh komponow}iku) ob'qwlqet programmnye sekcii
w sledu`}em porqdke:
.TES 19
.SWT
 -----------------------------------------------
   imq sekcii	  !	     atributy
 -----------------------------------------------
     OTS$I	  !	 RW, I,	LCL, REL, CON
     OTS$P	  !	 RW, D,	GBL, REL, OVR
     SYS$I	  !	 RW, I,	LCL, REL, CON
     USER$I	  !	 RW, I,	LCL, REL, CON
     $CODE	  !	 RW, I,	LCL, REL, CON
     OTS$O	  !	 RW, I,	LCL, REL, CON
     SYS$O	  !	 RW, I,	LCL, REL, CON
     $DATAP	  !	 RW, D,	LCL, REL, CON
     OTS$D	  !	 RW, D,	LCL, REL, CON
     OTS$S	  !	 RW, D,	LCL, REL, CON
     SYS$S	  !	 RW, D,	LCL, REL, CON
     $DATA	  !	 RW, D,	LCL, REL, CON
     USER$D	  !	 RW, D,	LCL, REL, CON
     .$$$$.	  !	 RW, D,	GBL, REL, OVR
 dr. bloki COMMON !	 RW, D,	GBL, REL, OVR
.LIN 2
USR movet perekrywatx instrukcii, no ne	dolvna zagruvatxsq na zonu konstant
i sme{annyh dannyh, kotorye mogut bytx ispolxzowany kak	argumenty dlq USR.
pokazannoe uporqdo~enie	sobiraet wse ~istye sekcii w pamqti pered
sme{annymi. USR	movet obmeniwatxsq s
sekciqmi OTS$I,	OTS$P, SYS$I, USER$I i CODE. po	umol~ani` oblastx obmena
na~inaetsq s bazy sekcii OTS$I.	q~ejka 46 sistemnoj oblasti swqzi
sodervit adres,	po kotoromu proizojdet swoping USR. esli q~ejka	46
sodervit nolx, to USR zagruvaetsq na 2 kslow nive ~em RMON.
.HLV 2
ispolxzowanie USR i wremq
.LIN
esli odno zadanie ispolxzuet USR, a ee trebuet i wtoroe	zadanie, to wtoroe
budet vdatx poka perwoe	ne oswobodit USR.
wremq ovidaniq movet bytx dostato~no weliko. w |to wremq mogut rabotatx	tolxko
podprogrammy zawer{eniq	i programmy obsluviwaniq prerywanij,
no ne osnownaq programma. minimizirowatx wremq wypolneniq zadaniq
movno
odnim iz sledu`}ih ~etyreh sposobow:
.AND
ne ispolxzowatx	ustrojstwa s medlennym dostupom, takie kak
kassetnye ili magnitnye	lenty;
.AND 0
pisatx operacii	realxnogo wremeni kak podprogrammy obrabotki prerywanij
ili podprogrammy zawer{eniq tak, ~toby wremq ovidaniq
ne wliqlo na operacii realxnogo	wremeni;
.AND 0
razdelqtx operacii realxnogo wremeni i rabotu s	USR;
.AND 0
ispolxzowatx wyzow ITLOCK i izbegatx wyzowow SYSLIB, trebu`}ih
USR, poka USR zanqta drugim zadaniem.
.LIN
operatiwnoe zadanie movet bytx postroeno tak:
faza inicializacii, na kotoroj ono otkrywaet
wse neobhodimye	kanaly i zapuskaet operacii
realxnogo wremeni, faza	realxnogo
wremeni, na kotoroj wypolnq`tsq
operacii wwoda/wywoda i
obsluviwanie prerywanij,
faza zawer{eniq,
kotoraq	ostanawliwaet aktiwnu` rabotu
w realxnom wremeni i zatem zakrywaet
kanaly.	ispolxzowanie takoj struktury
w operatiwnom zadanii pozwolqet	fonowomu zadani`
wypolnqtx operacii s USR
bez blokirowaniq operatiwnogo
zadaniq. |to ve	upro}aet swoping USR, tak kak USR
movet obmeniwatxsq s podprogrammami obrabotki prerywanij i buferom
wwoda/wywoda poskolxku oni ne aktiwny.
.HLV 2
rabota s INTEGER*4
.LIN
celye peremennye weli~iny tipa INTEGER*4 razme}a`tsq w pamqti
w dwuh slowah: perwoe slowo sodervit mlad{u`
~astx weli~iny,	a wtoroe slowo - znak i
star{u`	~astx weli~iny.	diapazon predstawlqemyh	~isel ot -(2**31)+1
do (2**31)-1.
.LIN
|tot format otli~aetsq ot dwuslownogo wnutrennego formata wremeni,
soglasno kotoromu star{aq ~astx	zna~eniq wremeni
hranitsq w perwom slowe,
a mlad{aq ~astx	- wo wtorom. funkciq JJCVT osu}estwlqet	preobrazowanie
odnogo formata w drugoj.
.LIN
esli dlq zadaniq zna~enij peremennym tipa INTEGER*4 ispolxzuetsq
operator DATA, to on dolven zadawatx kak mlad{u`, tak i	star{u`	~astx.
nive priwedeno prawilxnoe zadanie zna~eniq 3
peremennoj tipa	INTEGER*4.
.LIN
primer.
.SWT
	INTEGER*4 J
	INTEGER*2 I(2)
	EQUIVALENCE (J,I)
	DATA I/3,0/
.LIN
w sledu`}em primere pokazano neprawilxnoe zadanie zna~eniq 3
peremennoj tipa	INTEGER*4.
.LIN
primer.
.SWT
	INTEGER*4 J
	DATA J/3/
.LIN
pri priswoenii peremennoj tipa INTEGER*4 otricatelxnogo	zna~eniq
(naprimer, -4) star{aq ~astx (wtoroe slowo) dolvna bytx	prodolveniem
mlad{ej	~asti pri dwuslownom predstawlenii peremennoj.
.LIN
primer.
.SWT
	INTEGER*4 J
	INTEGER*2 I(2)
	EQUIVALENCE (J,I)
	DATA I/-4,-1/
.LIN
pri wyzowe podprogramm udobna sledu`}aq	forma priswoeniq zna~enij
parametram tipa	INTEGER*4:
.SWT
	INTEGER*2 J(2)
	DATA J/3,0/
.HLV 2
podprogrammy trebu`}ie dopolnitelxnogo |lementa	o~eredi
.LIN
nekotorye podprogrammy dlq wypolneniq trebu`t |lement o~eredi:
.SWT
      IRCVD/IRCVDC/IRCVDF/IRCVDW
      IREAD/IREADC/IREADF/IREADW
      ISCHED
      ISDAT/ ISDATC/ISDATF/ISDATW
      ISLEEP
      ISPFN/ISPFNC/ISPFNF/ISPFNW
      ITIMER
      ITWAIT
      IUNTIL
      IWRITC/IWRITE/IWRITF/IWRITW
      MRKT
      MWAIT
.LIN
dlq zadaniq awtomati~eski wydelqetsq odin |lement
o~eredi. ispolxzowanie bolee ~em odnogo	zaprosa
iz dannogo spiska trebuet dopolnitelxnyh |lementow
o~eredi. dopolnitelxnye	|lementy o~eredi mogut bytx wydeleny
pri pomo}i wyzowa funkcii IQSET.
.HLV 2
podprogrammy zaBer{eniq
.LIN
podprogrammy zawer{eniq	mogut bytx napisany na qzykah
fortran	ili makroassembler.
.LIN
podprogramma zawer{eniq	- |to podprogramma, kotoraq wypolnqetsq	asinhronno
s osnownoj programmoj i	planiruetsq k wyzowu kak movno skoree posle
zawer{eniq sootwetstwu`}ego sobytiq, takogo kak	okon~anie wwoda/wywoda
ili iste~enie zadannogo	interwala wremeni. wse podprogrammy zawer{eniq
teku}ego zadaniq ime`t wys{ij prioritet	po srawneni` s drugimi ~astqmi
zadaniq. wyzow podprogrammy zawer{eniq
prerywaet wypolnenie zadaniq na	wremq wypolneniq podprogrammy.
.LIN
podprogrammy zawer{eniq	obrabatywa`tsq po raznomu w RT11SJ i w
RT11FB(XM) w RT11SJ |ti podprogrammy polnostx`
asinhronny i mogut
prerywatx drug druga. w	RT11FB(XM) podprogrammy zawer{eniq ne
prerywa`t drug druga, a	wypolnq`tsq
na osnowe prawila "perwyj pri{el -
perwyj wypolnen".
.LIN
programmy zawer{eniq na	qzyke fortran
okan~iwa`tsq operatorami RETURN
ili END. imena wne{nih podprogramm zawer{eniq
dolvny bytx ob'qwleny w	operatore
EXTERNAL programmy na fortrane,	wyzywa`}ej dannu` podprogrammu.
.LIN
podprogrammy zawer{eniq, napisannye na qzyke fortran,
mogut imetx maksimum dwa argumenta, naprimer:
.SWT
	  SUBROUTINE	CRTN  [(IARG1, IARG2)]
.BLN
gde
.DFN CRTN
imq podprogrammy zawer{eniq;
.DFN IARG1
|kwiwalenten R0	na whode w podprogrammu	zawer{eniq na qzyke assemblera;
.DFN IARG2
|kwiwalenten R1	na whode w podprogrammu	zawer{eniq na qzyke assemblera.
.LIN
esli o{ibka proishodit w podprogramme zawer{eniq,
drajwer	o{ibok prowodit	trassirowku
prerwannoj osnownoj programmy. takim obrazom trassirowka pokazywaet
kakaq podprogramma zawer{eniq byla wyzwana iz osnownoj programmy.
|ta wozmovnostx	pozwolqet programmistu
opredelitx i isprawitx	o{ibki.
.LIN
podprogrammy zawer{eniq,
kotorye	wyzywa`tsq sledu`}imi wyzowami:
.SWT
	INTSET	    ISDATF	IRCVDC
	ISPFNC	    IRCVDF	ISPFNF
	IREADC	    ITIMER	IREADF
	IWRITC	    ISCHED	IWRITF
	ISDATC	    MRKT
.LIN
ime`t takie ograni~eniq:
.AND
perwyj wyzow podprogrammy, planiru`}ej obra}eniq k podprogramme	zawer{eniq,
napisannoj na qzyke fortran, dolven ishoditx iz	osnownoj programmy;
.AND
kanal ne movet bytx polu~en wyzowom IGETC ili oswobovden wyzowom IFREEC
iz podprogrammy	zawer{eniq; kanaly ispolxzuemye	podprogrammoj
zawer{eniq dolvny bytx uve wydeleny i pome}eny w blok COMMON;
.AND
podprogramma zawer{eniq	ne
movet proizwoditx wyzow, trebu`}ij ispolxzowaniq
USR;
.AND
fajly, ispolxzuemye podprogrammoj zawer{eniq,
dolvny bytx otkryty i zakryty w	osnownoj
programme; net ograni~enij na operacii
wwoda/wywoda, kotorye mogut prowoditxsq
podprogrammami zawer{eniq; esli	mnogo fajlow dolvny bytx
dostupny dlq podprogrammy zawer{eniq,
oni mogut bytx otkryty osnownoj	programmoj i
sohraneny dlq dalxnej{ego ispolxzowaniq	(ne zanimaq kanaly RT11)
wyzowom	ISAVES;	podprogramma zawer{eniq	movet w	dalxnej{em
sdelatx	ego dostupnym powtornym	prisoedineniem fajla
k kanalu wyzowom IREOPN; dave esli sama	podprogramma zawer{eniq
ne ispolxzuet programmnye zaprosy, a wypolnqet operacii	wwoda/wywoda
na logi~eskih nomerah ~erez OTS	fortranA,
|ti logi~eskie nomera dolvny bytx otkryty w osnownoj programme;
podprogramma zawer{eniq	ne dolvna wyzywatx CLOSE dlq zakrytiq logi~eskogo
kanala;
.AND
podprogrammy fortrana powtornoispolxzuemy, no ne powtornowhodimy;
po|tomu	podprogramma movet wyzywatxsq trebuemoe	~islo
raz kak	podprogramma zawer{eniq	ili kak	podprogramma osnownoj programmy,
no ne movet bytx wyzwana sama iz sebq;
.AND
pod RT11SJ tolxko odna funkciq
zawer{eniq dolvna bytx aktiwna w kavdyj	moment wremeni.
.HLV 2
funkcii	po obrabotke strok simwolow
.LIN
funkcii	i podprogrammy po obrabotke strok simwolow, ime`}iesq w
sistemnoj ob'ektnoj biblioteke,	pozwolq`t obrabatywatx
simwolxnye stroki peremennoj dliny.
.LIN
stroki hranqtsq	w massiwah tipa	LOGICAL*1, kotorye
dolven opisatx programmist.
stroki zapomina`tsq w |tih massiwah po odnomu simwolu w	kavdom
|lemente massiwa pl`s nulewoj bajt  dlq	obozna~eniq teku}ego
konca stroki (format ASCIZ).
.LIN
dlina stroki movet izmenqtxsq w	diapazone
ot nulq	simwolow w stroke do dliny, na edinicu menx{ej
dliny massiwa, w kotorom hranitsq stroka. maksimalxnyj razmer
stroki 32767 (desqti~noe) simwolow. stroki mogut sodervatx
simwoly	koi-7 ime`}ie kody ot 1	do 127 (desqti~noe).
.LIN
ispolxzuemyj dlq zapisi	simwolow kod koi-7
primenqetsq w qzyke fortran dlq	|lementow spiska wwoda/wywoda formata "A",
i w operatorah ENCODE/DECODE. stroki,
ispolxzuemye podprogrammami sistemnoj ob'ektnoj	biblioteki,
generiru`tsq kompilqtorom s qzyka fortran wsqkij raz, kogda stroka,
zakl`~ennaq w kawy~ki, ispolxzuetsq w ka~estwe parametra w operatore
CALL. pustaq stroka movet
predstawlqtxsq w qzyke fortran peremennoj ili konstantoj l`bogo
tipa, soderva}ej nulx, ili logi~eskoj (LOGICAL)	peremennoj, ili
konstantoj so zna~eniem	FALSE.
.LIN
neobhodimo sleditx, ~toby stroka ne prewysila razmer
massiwa, dlq ~ego
movno wospolxzowatxsq tem, ~to
w podprogrammah	(SUBROUTINE) sistemnoj biblioteki
dlq ograni~eniq	dliny movet
ukazywatxsq neobqzatelxnyj parametr. w razdelah, opisywa`}ih
podprogrammy obrabotki simwolxnyh strok, |tot parametr nazywaetsq
LEN. dlina wyhodnoj stroki ograni~iwaetsq weli~inoj, ukazannoj
parametrom LEN pl`s odin |lement dlq konca stroki.
po|tomu	massiw,	prinima`}ij rezulxtat, dolven po dline,	po krajnej
mere, rawnqtxsq	zna~eni` parametra LEN pl`s 1.
.LIN
pri ukazanii parametra LEN movet wkl`~atxsq neobqzatelxnyj
parametr ERR, pozwolq`}ij opredelitx nali~ie o{ibki.
parametr ERR qwlqetsq logi~eskoj peremennoj,
kotoraq	dolvna perwona~alxno ustanawliwatxsq w
zna~enie FALSE esli w funkcii po obrabotke simwolxnyh strok
ukazywa`tsq parametry LEN i ERR, a parametr LEN
dejstwitelxno ispolxzowalsq dlq	ograni~eniq dliny rezulxtiru`}ej
stroki,	to togda parametr ERR ustanawliwaetsq w	zna~enie
TRUE. esli parametr LEN	dlq ograni~eniq	dliny stroki
ne ispolxzowalsq, to parametr ERR ne izmenqetsq.
.LIN
parametry LEN i	ERR qwlq`tsq neobqzatelxnymi
parametrami. parametr LEN movet	zadawatxsq otdelxno, a
parametr ERR - tolxko s	parametrom LEN.
.LIN
nekotorye podprogrammy ispolxzu`t ponqtie pozicii.
kavdomu	simwolu	stroki priswaiwaetsq pozicionnyj nomer,	na edinicu
bolx{e nomera pozicii simwola, stoq}ego	neposredstwenno
slewa ot nego. perwyj simwol stroki imeet pozicionnyj nomer, rawnyj
edinice.
.LIN
odnomernyj logi~eskij massiw tipa LOGICAL*1 movet ispolxzowatxsq
dlq hraneniq odnoj stroki, dlina kotoroj movet izmenqtxsq ot nulq
do koli~estwa simwolow,	rawnogo	dline massiwa minus odin.
naprimer:
.SWT
	   LOGICAL*1 A(45)
.BLN
massiw "A" movet bytx ispolxzowan dlq hraneniq stroki
iz 44 i	menee simwolow.
.LIN
2-mernyj massiw	tipa LOGICAL*1,	movet ispolxzowatxsq dlq hraneniq odnomernogo
massiwa	strok. kavdaq stroka massiwa movet imetx dlinu na odin simwol
menx{u`	perwogo	parametra razmernosti massiwa tipa LOGICAL*1.
koli~estwo strok opredelqetsq ~islom, ukazannym	dlq wtorogo parametra
razmernosti massiwa tipa LOGICAL*1.
naprimer:
.SWT
	LOGICAL*1 W(21,10)
.LIN
w primere formiruetsq massiw "W" iz 10 strok, kavdaq iz	kotoryh	movet
sodervatx do 20	simwolow. obra}enie k stroke "I" massiwa "W" w wyzowe
podprogrammy ili funkcii wypolnqetsq w wide W(1,I).
.LIN
dwumernyj massiw strok movno opredelitx	sledu`}im obrazom:
.SWT
	LOGICAL*1 T(14,	5, 7)
.LIN
kavdaq stroka massiwa "T" movet	izmenqtxsq po dline maksimalxno	do 13
simwolow.
obra}enie k stroke "I,J" movet bytx wypolneno w	wide T(1,I,J).
sleduet	imetx w	widu, ~to "T" to ve samoe, ~to i T(1,1,1). |tot	process
uweli~eniq razmernostej	massiwa	movno prodolvatx do sozdaniq
{estimernyh massiwow strok (predstawlennyh semimernymi massiwami
tipa LOGICAL*1).
.LIN
massiwy	tipa LOGICAL*1,	soderva}ie stroki, mogut pome}atxsq w blok
COMMON i k nim mogut obra}atxsq	podprogrammy, ime`}ie
takie ve bloki COMMON. odnako, pri pome}enii massiwa tipa LOGICAL*1
w blok COMMON neobhodimo pomnitx, ~to esli takoj massiw	imeet
ne~etnu` dlinu,	to wsem	posledu`}im peremennym bloka COMMON
budut priswoeny	ne~etnye adresa.
.LIN
massiw tipa LOGICAL*1 imeet ne~etnu` dlinu tolxko w slu~ae, esli
proizwedenie ego razmernostej ne~etno.
.LIN
esli w blok COMMON pome}a`tsq massiwy ne~etnoj dliny, to oni
dolvny raspolagatxsq ili w konce bloka,	ili poparno rasstawlqtxsq tak,
~toby summa ih dlin byla ~etnaq.
naprimer:
.SWT
	COMMON A1,A2,A3(10),H(21)
.BLN
ili
.SWT
	COMMON A1,A2,H(21),H1(7),A3(10)
.BLN
takaq mera predostorovnosti primenqetsq	tolxko k peremennym i massiwam
tipa LOGICAL*1.
.LIN
wtoroj sposob pereda~i strok w podprogrammy zakl`~aetsq	w pereda~e
~erez dejstwitelxnye ili formalxnye parametry. odino~naq stroka	movet
bytx peredana s	ispolxzowaniem imeni ee	massiwa	w ka~estwe
dejstwitelxnogo	parametra.
naprimer:
.SWT
	LOGICAL*1 A(21)
	CALL SUBR(A)
.LIN
esli maksimalxnaq dlina	parametra stroki podprogrammy ili funkcii
neizwestna ili esli dannaq podprogramma	ispolxzuetsq dlq obrabotki
strok razli~noj	dliny, to formalxnyj parametr podprogrammy dolven
ob'qwlqtxsq kak	massiw tipa LOGICAL*1 s	razmerom, rawnym 1,
naprimer:
.SWT
	LOGICAL*1 ARG(1)
.BLN
w |tom slu~ae podprogrammy obrabotki stroki
budut prawilxno	opredelqtx dlinu massiwa ARG wsqkij raz, kogda on
ispolxzuetsq, no nelxzq	budet opredelitx stroku	maksimalxnogo razmera.
wyhodom	iz |togo poloveniq movet bytx pereda~a maksimalxnoj
dliny stroki w podprogrammu (w wide parametra ili ~erez	blok COMMON).
esli podprogramme
peredaetsq mnogomernyj massiw strok, to	on dolven opisywatxsq w
wyzywaemoj programme s temi ve razmerami, s kotorymi on	opisan
w wyzywa`}ej programme.
.LIN
stroki,	zakl`~ennye w kawy~ki, mogut ispolxzowatxsq w wide parametrow
l`boj podprogrammy obrabotki stroki, kotoraq wyzywaetsq	operatorom
CALL. oni mogut	takve ispolxzowatxsq dlq podprogramm, wyzywaemyh w
ka~estwe funkcii.
naprimer:
.SWT
	CALL SCOMP(NAME,'FREE CORE',M)
.BLN
|tot operator srawniwaet stroku	w massiwe NAME
so strokoj simwolow "FREE CORE"
i ustanawliwaet	sootwetstwu`}ee	zna~enie celoj peremennoj M.
.CPT soob}eniq
.LIN
w processe wypolneniq sistemnyh	makrokomand monitor movet obnaruvitx
o{ibki,	o kotoryh neobhodimo soob}itx polxzowatel`. w RT11 su}estwuet
tri sposoba soob}enij ob o{ibkah:
.AND
~erez bit s w slowe sostoqniq;
.AND
~erez bajt o{ibki (bajt	52 w sistemnoj oblasti swqzi);
.AND
posredstwom soob}enij monitora ob o{ibkah.
.LIN
bit s sbrasywaetsq pri prawilxnom wypolnenii programmnogo zaprosa, w
protiwnom slu~ae ustanawliwaetsq w 1, po|tomu prakti~eski za kavdoj
sistemnoj makrokomandoj	dolvny sledowatx libo instrukciq wsS, libo wss
dlq obnaruveniq	wozmovnyh o{ibok.
.LIN
kogda ustanowlen bit s,	bajt 52	sodervit dopolnitelxnu`
informaci` ob o{ibkah. zna~eniq	bitow bajta 52 opisany otdelxno
dlq kavdoj makrokomandy. programma polxzowatelq	dolvna
prowerqtx |tot bajt, esli bit s	ustanowlen.
.LIN
nekotorye serxeznye (grubye) o{ibki zastawlq`t monitor
raspe~atywatx na terminale sootwetstwu`}ie soob}eniq, posle ~ego
uprawlenie peredaetsq monitoru.	~toby proanalizirowatx takie o{ibki,
neobhodimo ispolxzowatx	sistemnu` makrokomandu .SeRR.
.LIN
teksty soob}enij priwodqtsq w dokumente	"soob}eniq i diagnostika
o{ibok", 2/b/.00109-01 94 01.
.CPT sistemnye tablicy
.LIN
wo wremq wypolneniq zadaniq ~asto neobhodimo znatx nekotorye parametry
monitora i samogo zadaniq, inogda nuvno	izmenitx |ti parametry.
programma polxzowatelq movet polu~atx
informaci` o parametrah	monitora
i uprawlqtx swoej rabotoj, ispolxzuq sistemnu` oblastx swqzi
i fiksirowannye	sme}eniq (q~ejki) rezidentnogo monitora.
.LIN
swojstwa monitorow i drajwerow dostupny	programme s pomo}x`
sistemnoj makrobiblioteki (dlq programm	na makroassemblere)
i sistemnoj ob'ektnoj biblioteki (dlq programm na fortrane i paskale).
.HLV 1
sistemnaq oblastx swqzi
.LIN
bajty 40-57 (absol`tnye	adresa)	nazywa`tsq sistemnoj oblastx` swqzi (SYSCOM).
oni sodervat informaci`	o sisteme i o programme,
wypolnq`}ejsq w	dannyj moment.
|ta informaciq neobhodima kak monitoru,	tak i programmistu.
~toby ispolxzowatx |ti swedeniq	w programme, movno
primenqtx sistemnye makrokomandy, opredelq`}ie simwolxnye
obozna~eniq bajtow.
ih sodervimoe opredelqetsq pri zagruzke	monitora (w ~asti, kasa`}ejsq
sistemy) i pri zagruzke	programmy. informaciq o	programme beretsq iz
nulewogo bloka fajla zagruzo~nogo modulq programmy
(t.e. opredelqetsq na |tape ee komponowki) i movet bytx	izmenena  samoj
programmoj wo wremq ee wypolneniq. nive	dany adresa bajtow i
w skobkah ih simwolxnye	obozna~eniq.
.DFN   40,41 (USeRrs)
startowyj adres	programmy. |to slowo ustanawliwaetsq komponow}ikom
libo samoj programmoj. pri zagruzke operatiwnogo zadaniq po
komande	FRUN |to slowo korrektiruetsq
tak, ~toby ono sodervalo fakti~eskij startowyj adres.
.DFN   42,43 (USeRSr)
na~alxnoe zna~enie ukazatelq steka. |to	slowo ustanawliwaetsq programmoj
polxzowatelq s pomo}x` direktiwy .aSest. po umol~ani` beretsq 1000
(wosxmeri~noe) ili  werhnij adres oblasti .aSest.
esli operatiwnoe zadanie ne opredelqet ukazatelx steka,	to po umol~ani`
stek razmerom w	128 (desqti~noe)
bajtow budet razme}en pri wypolnenii komandy FRUN
neposredstwenno	nive programmy.	ukazatelx steka	takve movet
bytx ustanowlen	kl`~ami	komponow}ika.
.DFN   44,45 (JSW)
slowo sostoqniq	programmy.
~astx ego bitow	ispolxzuetsq tolxko monitorom, ostalxnye
mogut bytx izmeneny programmoj polxzowatelq.
.DFN   46,47 (UFLoat)
adres zagruzki USR. w |to slowo, oby~no	rawnoe 0,
programmoj polxzowatelq	movet bytx ustanowlen
l`boj adres w oblasti programmy. po |tomu adresu budet zagruvatxsq USR.
esli slowo rawno 0,
USR zagruvaetsq	po adresu, soderva}emusq w sme}enii 266
RmoN.
.DFN   50,51 (USeRtor)
werhnij	adres programmy. w |tom	slowe sodervitsq star{ij adres pamqti,
kotoryj	predostawlqetsq	sistemoj programme polxzowatelq.
perwona~alxno ustanawliwaetsq komponow}ikom. movet bytx	izmenen
sistemnoj makrokomandoj	.Settor.
.DFN   52 (eRRwYt)
bajt o{ibki emt. pri poqwlenii o{ibki w	processe wypolneniq sistemnoj
makrokomandy kod o{ibki	peredaetsq w dannyj bajt, a w slowe sostoqniq
processora (PS)
ustanawliwaetsq	bit s. kavdaq sistemnaq	makrokomanda
imeet swoj nabor kodow o{ibok.
.DFN   53 (USeRRw)
status zawer{eniq programmy. pri poqwlenii o{ibki wo wremq wypolneniq
programmy informaciq o tipe o{ibki ustanawliwaetsq samoj programmoj
w dannom bajte.
ispolxzuetsq pri rabote	koswennogo
komandnogo fajla.
.DFN   54,55 (SYSrtR)
nivnij adres RMON. RT11 wsegda zagruvaet rezidentnu`
~astx monitora w werhnie adresa	pamqti (nive 56	Kbajt).
dannoe slowo ukazywaet na perwu` q~ejku	pamqti rezidentnogo monitora RMON.
zna~enie |togo slowa izmenqtx zapre}eno.
.DFN   56 (ttFILL)
nekotorye wysokoskorostnye terminaly
trebu`t	znaki-zapolniteli posle	wywoda opredelennyh simwolow. bajt 56
sodervit kod simwola w koi-7, trebu`}ego posle sebq wywoda
znakow-zapolnitelej.
.DFN   57 (ttNFIL)
s~et~ik	zapolnitelej. koli~estwo znakow-zapolnitelej opredelqetsq
w zawisimosti ot apparatury. esli bajty	56 i 57	rawny 0, to
zapolniteli ne trebu`tsq.
.ATT
bajt 52	dolven ispolxzowatxsq wsegda kak bajt, a ne kak	slowo, t.k. bajt
53 primenqetsq dlq ukazaniq statusa zawer{eniq programmy.
.HLV 2
status zawer{eniq programmy (USERRB)
.LIN
pri zagruzke interpretator komand monitora (KMON) prowerqet status zawer{eniq
polxzowatelxskoj programmy. esli pri
wypolnenii polxzowatelxskoj programmy imelisx
o{ibki,	informaciq o kotoryh sodervitsq	w bajte	53 (USERRB), to
KMON movet prerwatx (prekratitx) dalxnej{ee wypolnenie
teku}ego komandnogo fajla.
takim obrazom, proizwoditsq kontrolx za	wypolneniem komand w komandnom fajle.
|to osobenno wavno, esli korrektnoe wypolnenie posledu`}ih
komand zawisit ot uspe{nogo zawer{eniq pred{estwu`}ih.
.LIN
ime`tsq	sledu`}ie statusy zawer{eniq programmy:
.DFN SUCCESS
uspe{noe zawer{enie; |tot status zawer{eniq ozna~aet, ~to programma
byla wypolnena bez o{ibok;
.DFN WARNING
zawer{enie s preduprevdeniem; |tot status ozna~aet, ~to	pri wypolnenii
programmy bylo wydano preduprevda`}ee soob}enie,
no programma wypolnilasx polnostx`;
.DFN ERROR
o{ibka;	|tot status ozna~aet, ~to programma ne wypolnilasx
iz-za nali~iq o{ibki; |tot status
ispolxzuetsq w sistemnyh programmah RT11 esli oni sozda`t
wyhodnye fajly,	nesmotrq na soderva}iesq w nih o{ibki;
naprimer, kompilqtor movet ispolxzowatx	|tot status dlq
ukazaniq togo, ~to ob'ektnyj fajl byl sozdan, no programma polxzowatelq
sodervit o{ibki;
.DFN SEVERE ERROR
serxeznaq o{ibka; |tot status ozna~aet,	~to programmoj ne
byli sozdany wyhodnye dannye;
|tot status movet bytx ustanowlen, esli	otsutstwu`t
resursy, neobhodimye programme dlq polnogo ee zawer{eniq;
naprimer, otsutstwie dostato~noj oblasti pamqti	dlq
assemblirowaniq	ili kompilqcii prikladnoj programmy;
.DFN FATAL ERROR
neustranimaq o{ibka; |tot status ozna~aet, ~to
ne tolxko prerwano wypolnenie programmy, no wozmovno
ispor~en monitor.
.LIN
sistemnye programmy i KMON wsegda ustanawliwa`t	status
zawer{eniq programmy dlq ukazaniq rezulxtata wypolneniq
kavdoj komandy monitora. oby~no	wypolnenie komandnyh fajlow prekra}aetsq,
esli imela mesto o{ibka	pri wypolnenii komandy monitora.
w tabl.	1 predstawleny kody tipow o{ibok, kotorye mogut	bytx
ustanowleny w bajte 53. dlq wersii 5.2 i bolee "swevih" kody o{ibok
otli~a`tsq, no programma IND raspoznaet o{ibo~nye situacii prawilxno.
.TES 12
.SWT
						tablica	1
 ----------------------------------------------------------
	! zna~enie !	     !
  nomer	!  maski   !   tip   !	    soob}enie w RT11
  bita	! (wosxme- ! o{ibki  !	      
	! ri~noe)  !	     !
 ----------------------------------------------------------
    0	!     1	   ! SUCCESS ! ?PROG-I-TEXT ili	otsutstwuet
    1	!     2	   ! WARNING ! ?PROG-W-TEXT
    2	!     4	   ! ERROR   ! ?PROG-E-TEXT
    3	!    10	   ! SEVERE  ! ?PROG-F-TEXT
    4	!    20	   ! FATAL   ! ?PROG-U-TEXT
.ATT
bity  5-7 zarezerwirowany dlq primeneniq w sledu`}ih
wersiqh	sistemy. programmy ne dolvny obnulqtx bajt 53,
movno tolxko ustanawliwatx neobhodimyj bit s pomo}x` instrukcii	BISB.
opredelenie simwolxnyh obozna~enij statusa zawer{eniq i	bajta 53
rekomenduetsq wypolnqtx	s pomo}x` sistemnoj makrokomandy .USBDF.
esli pri rabote	programmy bylo ustanowleno neskolxko bitow,
to sistema RT11 opredelqet status po bitu s	naibolx{im
porqdkowym nomerom.
.HLV 2
slowo sostoqniq	zadaniq	(JSW)
.LIN
bajty 44 i 45 sodervat slowo sostoqniq zadaniq (JSW).
nive daetsq opisanie bitow JSW.	bity, otme~ennye "*",
ustanawliwa`tsq	monitorom ili samoj programmoj wo wremq	ee wypolneniq.
bity, otme~ennye "+", ustanawliwa`tsq pered zagruzkoj programmy
(pri komponowke),
a bity,	otme~ennye "*+", mogut bytx ustanowleny	kak do,	tak i pri
wypolnenii programmy.
.DFN 15	(USWar$)
bit swopinga USR (tolxko dlq RT11SJ) ustanawliwaetsq sistemoj, esli USR
rezidentna.
.DFN 14*+ (ttLs$)
bit wwoda kirillicy. esli on ustanowlen, wwod kirillicy	razre{en.
esli programma polxzowatelq ne ustanawliwaet |tot
bit, to	pri wwode s terminala drajwer proizwodit awtomati~eskoe	preobrazowanie
simwolow kirillicy w latinskie simwoly.
.DFN 13*+ (RStRt$)
bit restarta. esli trebuetsq, ~toby programma byla powtorno
zapu}ena po komande REENTER s terminala, neobodimo ustanowitx |tot bit
w programme.
.DFN 12*+ (ttSrs$)
bit specrevima terminala.
su}estwu`t dwa revima wwoda s terminala	w zawisimosti ot 12 bita JSW.
.AND 0
esli bit sbro{en, to proizwoditsq oby~nyj wwod s klawiatury sistemnogo
terminala:
.AN2 0
wse nabrannye simwoly otobrava`tsq na |krane (|ho-pe~atx);
.AN2 0
wypolnqetsq stiranie stroki ili	simwola	s pomo}x` specialxnyh komand operatora
<CTRL/U> i <DEL> sootwetstwenno;
.AN2 0
simwoly	teku}ej	stroki na~nut peredawatxsq w programmu polxzowatelq
tolxko posle navatiq <CTRL/Z>, <CTRL/C>, <CR> i	<LF>; do ih poqwleniq simwoly
sobira`tsq w sistemnom bufere terminala.
.AND 0
esli bit ustanowlen, to	terminal nahoditsq w specrevime	wwoda:
.AN2 0
ni odin	iz nabiraemyh simwolow ne otobravaetsq na |krane, krome	<CTRL/C>
i <CTRL/O>;
.AN2 0
<CTRL/U> i <DEL> ne wypolnq`t swoih funkcij, a pereda`tsq w programmu
kak oby~nye znaki;
.AN2 0
simwoly	pereda`tsq w programmu polxzowatelq srazu, kak tolxko navata
klawi{a	na sistemnom terminale.
.DFN 11+ (snNIF$)
bit komandnogo fajla. esli on ustanowlen programmoj,
to po okon~anii	ee raboty
wypolnqetsq koswennyj komandnyj	fajl.
|tot bit nelxzq	ispolxzowatx dlq programm
operatiwnogo razdela (operatiwnoj i sistemnyh) pri rabote
RT11FB ili RT11XM)
.DFN 10+ (VIRt$)
bit wirtualxnoj	programmy (tolxko dlq RT11XM) on dolven
bytx ustanowlen	pered zapuskom programmy. |tot bit ustanawliwaetsq
libo wo	wremq assemblirowaniq (dlq modifikacii JSW
ispolxzuetsq direktiwa .ASECT),	libo wypolnqetsq korrektirowka fajla
ob'ektnogo modulq programmy ili	fajla ee zagruzo~nogo modulq s
pomo}x`	programmy PAT ili SIPP sootwetstwenno.
.DFN 9 (oVLY$)
bit owerlejnoj programmy. ustanawliwaetsq komponow}ikom	pri nali~ii
owerlejnyh struktur.
.DFN 8+	(snaIN$)
|tot bit movet bytx ispolxzowan	dwumq sposobami.
esli w zagruzo~nom module |tot razrqd ne ustanowlen, to
on ustanawliwaetsq monitorom
pri zagruzke programmy makrokomandoj .CHAIN i w	bajty
s 500 po 777 ne	proizwoditsq zapisx informacii iz sootwetstwu`}ih q~eek
nulewogo bloka zagruzo~nogo modulq.
|ti q~ejki movno ispolxzowatx
dlq pereda~i informacii	zagruvaemoj programme (oby~nyj wariant).
esli |tot bit byl ustanowlen polxzowatelem w JSW programmy pered ee zagruzkoj
makrokomandoj .CHAIN, to w |tom	slu~ae w bajty s 500 po	777
budet proizwoditxsq zapisx (t.e. zagruzka budet	wypolnqtxsq analogi~no
zagruzke po komande monitora R ili RUN).
.DFN 7*+ (nLteR$)
bit ostanowa po	o{ibke wwoda/wywoda (tolxko dlq	RT11SJ) esli
polxzowatelx ho~et prerwatx wypolnenie programmy pri wozniknowenii
o{ibki wwoda/wywoda, on	dolven
ustanowitx |tot	bit.
.DFN 6*+ (tswIt$)
bit zapreta ovidaniq wwoda/wywoda dlq sistemnogo terminala
(tolxko	dlq RT11FB(XM)) 
esli bit sbro{en, to programma priostanawliwaetsq do wwoda
simwola	s terminala.
esli bit ustanowlen i w	bufere terminala net wwedennyh simwolow,
to operaciq zawer{aetsq	s o{ibkoj.
.DFN 3*+
bit nezawer{ennoj sistemnoj makrokomandy .GTLIN. ispolxzuetsq makrokomandoj
 .GTLIN	dlq polu~eniq stroki s terminala, esli ona otsutstwuet w komandnom
fajle. |tot bit	ispolxzuetsq w takih sistemnyh programmah kak
LINK, DUP, SRCCOM i LIBR. on ustanawliwaetsq, esli w komandnom
fajle imeetsq stroka ^C. naprimer, pri wypolnenii komandnogo fajla
wesx wwod posle	^C budet proizwoditxsq s terminala:
.SWT
	      RUN LINK
	      TEST,TEST=MOD1,LIB/I
	      ^C
.LIN
razrqdy	5,4,2,1,0 zarezerwirowany dlq sistemnyh	celej.
.HLV 1
fiksirowannye sme}eniq rezidenta monitora
.LIN
nekotorye q~ejki, soderva}ie informaci`	o sisteme,
wsegda ime`t fiksirowannoe polovenie ot
na~ala RMON. |ti q~ejki	nazywa`tsq q~ejkami s fiksirowannymi sme}eniqmi.
dlq dostupa k q~ejkam s	fiksirowannymi sme}eniqmi iz wypolnq`}ejsq
programmy ispolxzuetsq sistemnaq makrokomanda .GVAL.
.LIN
nive dany fiksirowannye	sme}eniq RMON. ih simwolxnoe
obozna~enie i dlina w bajtah dany w skobkah
w wosxmeri~nom wide.
.DFN 266 (USRLC, 2)
adres oby~noj zagruzki USR. |tot adres ispolxzuetsq pri	zagruzke USR
w pamqtx fonowym zadaniem, esli	q~ejka 46 sistemnoj
oblasti	swqzi rawna 0. operatiwnoe ili sistemnoe zadanie obqzatelxno dolvno
obespe~itx oblastx wnutri programmy dlq	swopinga USR (dlq RT11FB(XM))
.DFN 270 (QCOMP, 2)
adres podprogrammy zawer{eniq operacii wwoda/wywoda dlq	wseh
drajwerow.
.DFN 272 (SPUSR, 2)
slowo ispolxzuetsq drajwerami ustrojstw,
ne ime`}ih standartnu` fajlowu`	strukturu RT11,
dlq soob}eniq monitoru o poqwiw{ihsq o{ibkah.
.DFN 274 (SYUNIT, 2)
star{ij	bajt sodervit nomer ustrojstwa,
s kotorogo byla	zagruvena sistema.
.DFN 276 (SYSVeR, 1)
nomer redakcii (wersii)	monitora.
.DFN 277 (SYSUrD, 1)
nomer korrekcii	monitora.
.DFN 300 (CONFIG, 2)
slowo konfiguracii sistemy. bity |togo slowa ispolxzu`tsq dlq hraneniq
informacii o nabore apparatnyh sredstw i o parametrah monitora.
q~ejka 370 sodervit dopolnitelxnu` informaci` o	sisteme.
.DFN 302 (SCROLL, 2)
adres programmy	obsluviwaniq (skrollera) grafi~eskogo displeq sm-7300 (|pg sm)
.DFN 304 (ttkS,	2)
adres registra sostoqniq klawiatury sistemnogo terminala
.DFN 306 (ttkw,	2)
adres bufernogo	registra klawiatury sistemnogo terminala
.DFN 310 (ttrS,	2)
adres registra sostoqniq |krana	sistemnogo terminala
.DFN 312 (Ttrw,	2)
adres bufernogo	registra |krana	sistemnogo terminala
.DFN 314 (mahwLk, 2)
maksimalxnaq dlina fajla, sozdawaemogo po makrokomande .eNteR,
w kotoroj argument LEN rawen 0.
po umol~ani` |to zna~enie rawno	177777,	t.e. ograni~enie na dlinu fajla
otsutstwuet. zna~enie |toj q~ejki movet	bytx izmeneno wo wremq raboty
programmy ili pri pomo}i programmy SIPP.
.DFN 320 (CNTXT, 2)
ukazatelx na sme{annu` oblastx zadaniq,	wypolnq`}egosq w
dannyj moment (tolxko dlq RT11FB(XM))
.DFN 322 (JOBNUM, 2)
nomer wypolnq`}egosq zadaniq (tolxko dlq RT11FB(XM)).
.DFN 320 ($TIME, 4)
wremq dnq (tolxko dlq RT11SJ).
.DFN 324 (SYNsn, 2)
adres podprogrammy obrabotki sistemnoj makrokomandy .SYNsn
.DFN 326 (LOWMAP, 24)
na~alo karty za}ity mlad{ih adresow pamqti (s 0	po 476)
.DFN 352 (USRLOC, 2)
ukazatelx teku}ej to~ki	whoda w	USR. on	rawen nul`, esli USR
ne zagruvena w pamqti. esli USR	tolxko ~to byla	zagruvena w pamqtx,
to on ukazywaet	na na~alo bufera USRBUF. wo wseh ostalxnyh
slu~aqh	w |toj q~ejke sodervitsq adres na~ala oblasti postoqnnyh
podprogramm USR.
.DFN 354 (GtVest, 2)
adres wektora prerywanij po ostanowu grafi~eskogo displeq sm-7300 (|pg-sm).
po umol~ani` rawen 320.
.DFN 356 (ERRCNT, 2)
mlad{ij	bajt qwlqetsq s~et~ikom	o{ibok.	ispolxzuetsq pri
rabote sistemnyh programm. star{ij bajt	ne ispolxzuetsq.
.DFN 360 ($mtrS, 2)
adres podprogrammy obrabotki sistemnoj makrokomandy .mtrS.
.DFN 362 ($mFrS, 2)
adres podprogrammy obrabotki sistemnoj makrokomandy .mFrS.
.DFN 364 (SYINDX, 2)
indeks drajwera	sistemnogo ustrojstwa w	tablice	ustrojstw monitora.
.DFN 370 (soNFG2, 2)
dopolnitelxnoe slowo konfiguracii sistemy. ego bity ispolxzu`tsq dlq
ukazaniq ime`}egosq dopolnitelxnogo oborudowaniq centralxnogo processora.
.DFN 372 (SYSGeN, 2)
slowo parametrow generacii monitora.
.DFN 374 (USRaRe, 2)
razmer USR w bajtah. programmy mogut ispolxzowatx |tu informaci`
dlq opredeleniq	razmera	oblasti, neobhodimoj dlq swopinga USR.
.DFN 406 (MONAME, 4)
w dwuh slowah sodervitsq imq fajla monitora (w kode RAD50),
zagruvennogo w pamqtx.
.DFN 412 (SUFFIX, 2)
q~ejka,	sodervit simwol	w kode RADIX-50	(wyrawnennyj wprawo), ispolxzuemyj
monitorom dlq opredeleniq imen drajwerow ustrojstw.
.HLV 2
slowo konfiguracii sistemy (soNFIG)
.LIN
slowo konfiguracii sistemy CONFIG (imeet otnositelxnoe sme}enie	300) sodervit
informaci` o podkl`~ennoj apparature i o parametrah monitora.
.LIN
nive priwoditsq	opisanie bitow
slowa konfiguracii CONFIG (po umol~ani`
s~itaetsq, ~to bit ustanowlen, ili ve nazna~enie bita
ukazywaetsq dlq	oboih slu~aew).
w skobkah ukazano simwolxnoe imq bita.
.DFN 0 (FBMON$)
esli FBMON$=0 pri FJOB$=0, to rabotaet RT11SJ.
.AND 0
esli FBMON$=1 pri mmU$=0, to rabotaet RT11FB.
.AND 0
esli FBMON$=1 pri mmU$=1, to rabotaet RT11XM.
.DFN 2 (nWDSr$)
imeetsq	apparatura grafi~eskogo	displeq	sm-7300	(|pg-sm).
.DFN 5 (sLk50$)
esli sLk50$=1, to
ispolxzuetsq tajmer s ~astotoj prerywanij 50gc.
.AND 0
esli sLk50$=0, to ispolxzuetsq tajmer s	~astotoj prerywanij 60gc.
.DFN 6 (HWFPU$)
prisutstwuet processor s plawa`}ej zapqtoj (dlq	sm-1420).
.DFN 7 (FJOB$)
zagruvena operatiwnaq programma	ili sistemnoe zadanie.
.DFN 8 (GtLNk$)
ispolxzuetsq grafi~eskij displej (posle	komandy	Gt oN).
.DFN 9 (USR$)
USR rezidentna w operatiwnoj pamqti (ispolxzowalasx komanda
"Set USR NoSWar").
.DFN 10
zagruvena sistemnaq programma QUEUE.
.DFN 11	(LSI$)
w ka~estwe centralxnogo	ispolxzuetsq mikroprocessor tipa "|lektronika -	60"
(net adresuemogo slowa sostoqniq processora).
.DFN 12	(mmU$)
rabotaet RT11XM.
.DFN 13	(LksS$)
tajmer imeet registr sostoqniq.
.DFN 14	(kW$P)
w ka~estwe sistemnogo ispolxzuetsq programmiruemyj tajmer.
.DFN 15	(sLosk$)
w sostaw sistemy whodit	tajmer.
.HLV 2
dopolnitelxnoe slowo konfiguracii sistemy (soNFG2)
.LIN
dopolnitelxnoe slowo konfiguracii sistemy (otnositelxnoe
sme}enie 370) ukazywaet	na ime`}iesq dopolnitelxnye apparatnye
sredstwa w komplekse.
wse opisaniq dany dlq ustanowlennogo bita.
.DFN 0 (sasne$)
w sostaw centralxnogo processora whodit	k|{-pamqtx.
.DFN 1 (mrtY$)
ispolxzuetsq operatiwnaq pamqtx	s kontrolem po ~etnosti	(s paritetom).
.DFN 2 (SWReG$)
processor imeet	registr	perekl`~atelej (dlq ~teniq).
.DFN 3 (LIGnt$)
processor imeet	registr	indikatorow (dlq zapisi).
.DFN 8 (eIS$)
processor imeet	ras{irennyj nabor instrukcij (eIS).
.DFN 9 (Vt6$0)
w sostaw kompleksa whodit grafi~eskij displej |pg-2, a ne |pg sm.
.DFN 14	(tYr70$)
processor dopuskaet 22-razrqdnu` adresaci` operatiwnoj pamqti.
.DFN 15	(tYr60$)
processor imeet	pereprogrammiruemyj mikroprogrammnyj blok.
.HLV 2
slowo parametrow generacii sistemy (SYSGeN)
.LIN
slowo parametrow generacii sistemy sodervit informaci` o
parametrah, opredelqemyh pri generacii sistemy.
wse opisaniq dany dlq ustanowlennogo bita.
.DFN 0 (eRL$G)
sbor statistiki	o rabote operatiwnoj pamqti (s paritetom) i
wne{nih	ustrojstwah.
.DFN 1 (mmG$T)
ispolxzowanie apparatury dispet~era pamqti.
.DFN 2 (tIm$It)
ispolxzowanie zaprosow dlq raboty s tajmerom w drajwerah.
.DFN 3 (TSG$T)
ispolxzowanie {estogo registra adresa stranic dispet~era pamqti
(|tot sposob prinqt dlq os NTS, oby~no RT11XM ispolxzuet perwyj registr).
.DFN 9 (mrtY$)
ispolxzowanie pamqti s paritetom.
.DFN 10	(tImeR$)
rabota s tajmerom w RT11SJ.
.DFN 13	(MTTY$)
rabota s dopolnitelxnymi terminalami.
.DFN 14
rabota s sistemnymi zadaniqmi w	RT11FB(XM).
.ATT
zna~eniq perwyh	treh bitow dolvny sootwetstwowatx
parametram, kotorye ustanawliwa`tsq pri	translqcii
polxzowatelxskih drajwerow.
.CPY SRC:MO3311.TXT
.CPY SRC:MO3312.TXT
.CPY SRC:MO3313.TXT
.COM	.CPY SRC:MO3314.TXT \TO OTNOSITSQ TS-MONITORU
.CPY SRC:MO3315.TXT
.COM	.CPY SRC:MO3316.TXT \TO OTNOSITSQ TS-MONITORU
.CPY SRC:MO3317.TXT
.COM	.CPY SRC:MO3318.TXT \TO OTNOSITSQ TS-MONITORU

                                                                                                                                                                                                                                                                                                 