
















     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





                               LISTOW 372

























 pERW.PRIMEN.
                                                                 lITERA

                                 - 2 -








                               aNNOTACIQ



       dannyj dokument sostoit iz dwuh ~astej. w perwoj ~asti dano opi-
  sanie sistemnoj makrobiblioteki  i  sistemnoj  ob'ektnoj  biblioteki.
  wwodqtsq osnownye ponqtiq, neobhodimye pri rabote s |timi biblioteka-
  mi, i prawila obra}eniq k makrokomandam, proceduram i  funkciqm  bib-
  liotek. krome |togo daetsq kratkoe opisanie sistemnyh tablic (sistem-
  naq 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.

                                 - 3 -








                               sodervanie



     aNNOTACIQ                                                        2


 1.  nazna~enie i uslowiq primeneniq bibliotek                       10


 2.  harakteristiki bibliotek                                        11

 2.1.    makrobiblioteka                                             11
 2.2.    ob'ektnaq biblioteka                                        12

 3.  obra}enie k bibliotekam                                         14

 3.1.    obra}enie k sistemnoj makrobiblioteke                       14
 3.1.1.    kl`~ewoj argument "wLosk"                                 16
 3.1.2.    kl`~ewoj argument "rSest"                                 17
 3.1.3.    kl`~ewoj argument "CODE"                                  17
 3.1.4.    adresaciq argumentow                                      18
 3.2.    obra}enie k sistemnoj ob'ektnoj biblioteke                  19
 3.2.1.    swqzx programm na fortrane i makroassemblere              19
 3.2.2.    wyzow podprogramm  na  fortrane  iz  programm  na
           qzyke makroassembler                                      20
 3.2.3.    obra}enie  k  SYSLIB.OBJ  iz  programm  na  qzyke
           makroassembler                                            22
 3.2.4.    wyzow  podprogramm  na  qzyke  makroassembler  iz
           programm na qzyke fortran sm                              23
 3.2.5.    zapusk programmy na fortrane w operatiwno/fonowom
           revime                                                    25
 3.2.6.    komponowka  sistemnoj  ob'ektnoj   biblioteki   s
           programmoj polxzowatelq                                   28

 4.  whodnye i wyhodnye dannye                                       29

 4.1.    sistemnaq makrobiblioteka                                   29
 4.1.1.    nomer kanala                                              29
 4.1.2.    blok ustrojstwa                                           29
 4.1.3.    swoping USR                                               30
 4.1.4.    podprogrammy zawer{eniq                                   31
 4.2.    sistemnaq ob'ektnaq biblioteka                              32
 4.2.1.    nomer kanala                                              32
 4.2.2.    blok ustrojstwa                                           32
 4.2.3.    swoping USR                                               33
 4.2.4.    uprawlenie swopingom USR                                  33
 4.2.5.    strategiq swopinga USR                                    34
 4.2.6.    ispolxzowanie USR i wremq                                 35
 4.2.7.    rabota s INTEGER*4                                        35
 4.2.8.    podprogrammy trebu`}ie  dopolnitelxnogo  |lementa
           o~eredi                                                   36
 4.2.9.    podprogrammy zaBer{eniq                                   37
 4.2.10.   funkcii po obrabotke strok simwolow                       38


                                 - 4 -




 5.  soob}eniq                                                       41


 6.  sistemnye tablicy                                               42

 6.1.    sistemnaq oblastx swqzi                                     42
 6.1.1.    status zawer{eniq programmy (USERRB)                      43
 6.1.2.    slowo sostoqniq zadaniq (JSW)                             45
 6.2.    fiksirowannye sme}eniq rezidenta monitora                   46
 6.2.1.    slowo konfiguracii sistemy (soNFIG)                       49
 6.2.2.    dopolnitelxnoe   slowo    konfiguracii    sistemy
           (soNFG2)                                                  50
 6.2.3.    slowo parametrow generacii sistemy (SYSGeN)               50

 7.  sistemnaq makrobiblioteka                                       51

 7.1.    operacii s katalogami                                       52
 7.1.1.    makrokomanda .sLoSe                                       52
 7.1.2.    makrokomanda .DeLete                                      53
 7.1.3.    makrokomanda .ENTER                                       55
 7.1.4.    makrokomanda .ReName                                      57
 7.1.5.    makrokomanda .LOOKUP                                      58
 7.2.    operacii wwoda/wywoda                                       61
 7.2.1.    makrokomandy .ReaD/.ReaDC/.ReaDW                          61
 7.2.1.1.  makrokomanda .ReaD                                        62
 7.2.1.2.  makrokomanda .ReaDs                                       63
 7.2.1.3.  makrokomanda .ReaDW                                       64
 7.2.2.    makrokomandy .ttYIN/.ttINR                                65
 7.2.3.    makrokomandy .TTYOUT/.TTOUTR                              66
 7.2.4.    makrokomanda .WaIt                                        67
 7.2.5.    makrokomandy .WRIte/.WRIts/.WRItW                         68
 7.2.5.1.  makrokomanda .WRIte                                       69
 7.2.5.2.  makrokomanda .WRIts                                       69
 7.2.5.3.  makrokomanda .WRItW                                       70
 7.2.6.    makrokomanda .rRINt                                       73
 7.2.7.    makrokomanda .SPFUN                                       74
 7.3.    rabota s kanalami                                           77
 7.3.1.    makrokomanda .sDFN                                        77
 7.3.2.    makrokomanda .snsorY (RT11FB ili RT11XM)                  79
 7.3.3.    makrokomanda .sStat (RT11FB(XM))                          82
 7.3.4.    makrokomanda .rURGe                                       83
 7.3.5.    makrokomanda .REOPEN                                      84
 7.3.6.    makrokomanda .SaVeStatUS                                  85
 7.4.    obrabotka komandnoj stroki                                  87
 7.4.1.    makrokomanda .CSIGEN                                      88
 7.4.2.    makrokomanda .CSISPC                                      89
 7.4.3.    makrokomanda .GtLIN                                       92
 7.5.    rabota s tajmerom                                           93
 7.5.1.    makrokomanda .GTIM                                        93
 7.5.2.    makrokomanda .smkt                                        94
 7.5.3.    makrokomanda   TWAIT   (w   SJ-monitore   trebuet
           poddervki tajmera)                                        95
 7.5.4.    makrokomanda .mRkt                                        95
 7.6.    sistemnye makrokomandy ob}ego nazna~eniq                    97
 7.6.1.    makrokomanda .snaIN                                       97
 7.6.2.    makrokomanda .sNFDF                                       99
 7.6.3.    makrokomanda .sNthSW (RT11FB(XM))                        101
 7.6.4.    makrokomanda .stRLt                                      102
 7.6.5.    makrokomanda .DATE                                       103

                                 - 5 -




 7.6.6.    makrokomanda .DBLK                                       105
 7.6.7.    makrokomanda  .DeVIse  (movet  ne  wypolnqtxsq  w
           RT11SJ w zawisimosti ot generacii sistemy)               105
 7.6.8.    makrokomanda .DIR                                        107
 7.6.9.    makrokomanda .DSTATUS                                    108
 7.6.10.   makrokomanda .EXIT                                       110
 7.6.11.   makrokomandy .Fetsn/.RELEAS                              112
 7.6.11.1. makrokomanda .FETCH                                      112
 7.6.11.2. makrokomanda .ReLeaS                                     113
 7.6.12.   makrokomanda .GTJB                                       114
 7.6.13.   makrokomanda .GVaL                                       116
 7.6.14.   makrokomandy .HERR/.SERR                                 117
 7.6.14.1. makrokomanda .HERR                                       117
 7.6.14.2. makrokomanda .SERR                                       118
 7.6.15.   makrokomandy .HRESET/.SRESET                             120
 7.6.15.1. makrokomanda .HRESET                                     120
 7.6.15.2. makrokomanda .SRESET                                     121
 7.6.16.   makrokomanda .INteN                                      121
 7.6.17.   makrokomanda .JSWDF                                      122
 7.6.18.   makrokomandy .LOCK/.TLOCK/.UNLOCK                        122
 7.6.18.1. makrokomanda .LOCK                                       123
 7.6.18.2. makrokomanda .TLOCK                                      124
 7.6.18.3. makrokomanda .UNLosk                                     125
 7.6.19.   makrokomandy .MFPS/.MTPS                                 126
 7.6.19.1. makrokomanda .mFrS                                       126
 7.6.19.2. makrokomanda .mtrS                                       126
 7.6.20.   makrokomandy .POP/.PUSH                                  127
 7.6.20.1. makrokomanda .POP                                        127
 7.6.20.2. makrokomanda .PUSH                                       128
 7.6.21.   makrokomandy .PROTECT/.UNPROTECT                         128
 7.6.21.1. makrokomanda .PROTECT                                    128
 7.6.21.2. makrokomanda .UNPROTECT                                  129
 7.6.22.   makrokomanda .QSET                                       130
 7.6.23.   makrokomanda .RstRLo                                     131
 7.6.24.   makrokomanda .RoFDF                                      132
 7.6.25.   makrokomanda .Sssa                                       133
 7.6.26.   makrokomanda .SsmDF                                      135
 7.6.27.   makrokomanda .Settor                                     135
 7.6.27.1. osobennosti pri rabote RT11XM                            136
 7.6.28.   makrokomanda .SFra                                       137
 7.6.29.   makrokomanda .SPCPS (wypolnenie w RT11SJ  zawisit
           ot generacii).                                           139
 7.6.30.   makrokomandy .SPND/.RSUM (RT11FB(XM)).                   140
 7.6.30.1. makrokomanda .SPND                                       140
 7.6.30.2. makrokomanda .RSUm                                       141
 7.6.31.   makrokomanda .SDTTM                                      142
 7.6.32.   makrokomanda .SYNCH                                      144
 7.6.33.   makrokomanda .TRPSET                                     146
 7.6.34.   makrokomanda .USwDF                                      147
 7.7.    obmen mevdu zadaniqmi (RT11FB ili RT11XM)                  148
 7.7.1.    makrokomanda .mWaIt                                      148
 7.7.2.    makrokomandy .RsVD/.RsVDs/.RsVDW                         148
 7.7.2.1.  makrokomanda .RsVD                                       149
 7.7.2.2.  makrokomanda .RCVDC                                      150
 7.7.2.3.  makrokomanda .RsVDW                                      151
 7.7.3.    makrokomandy .SDat/.SDats/.SDatW                         151
 7.7.3.1.  makrokomanda .SDat                                       152
 7.7.3.2.  makrokomanda .SDats                                      152
 7.7.3.3.  makrokomanda .SDatW                                      153

                                 - 6 -




 7.8.    rabota s dopolnitelxnymi terminalami.                      155
 7.8.1.    KOMpOHEHTy MHOgOTEPMiHAlxHOj CiCTEMy                     155
 7.8.2.    tehni~eskie sredstwa                                     156
 7.8.3.    KOHCOlxHyj TEPMiHAl                                      157
 7.8.4.    iCpOlxzOBAHiE   dopolnitelxnyh   TEPMiHAlOB   bez
           mnogoterminalxnoj poddervki                              159
 7.8.4.1.  KOHCOlxHyj  wideo-TEPMiHAl   i   TEPMiHAl-vECTKAq
           KOpiq                                                    159
 7.8.4.2.  pEPEKl`~EHiE KOHCOlxHOgO TEPMiHAlA                       162
 7.8.4.3.  OTdElxHyj TEPMiHAl dlq KAvdOgO zAdAHiq                   163
 7.8.5.    wwedenie w makrokomandy                                  163
 7.8.6.    CTPuKTuPy dAHHyX                                         165
 7.8.6.1.  blOK upPABlEHiq TEPMiHAlA (TCB)                          166
 7.8.6.2.  ACiHXPOHHyj CTATuC TEPMiHAlA (aSt)                       174
 7.8.7.    ispolxzowanie mnogoterminalxnyh makrokomand              176
 7.8.7.1.  .MTATCH -zAXBAT TEPMiHAlA                                177
 7.8.7.2.  .MTGET - pOlu~EHiE CTATuCA                               179
 7.8.7.3.  .MTSET - uCTAHOBKA XAPAKTEPiCTiK                         181
 7.8.7.4.  .MTIN - BBOd CiMBOlA                                     184
 7.8.7.5.  .MTOUT - ByBOd CiMBOlA                                   185
 7.8.7.6.  .MTPRNT - ByBOd CTPOKi                                   186
 7.8.7.7.  .MTRCTO - sbros flaga <CTRL/O>                           187
 7.8.7.8.  .MTSTAT - parametry sistemy                              188
 7.8.7.9.  .MTDTCH - OCBObOvdEHiE TEPMiHAlA                         189
 7.8.7.10. pPiMEP MHOgOTEPMiHAlxHOj pPOgPAMMy                       190
 7.8.8.    rekomendacii i ograni~eniq                               192

 8.  sistemnaq ob'ektnaq biblioteka                                 192

 8.1.    operacii s katalogami                                      192
 8.1.1.    podprogrammy CLOSEC/ICLOSE                               192
 8.1.2.    funkciq IDELET                                           194
 8.1.3.    funkciq IENTER                                           195
 8.1.4.    funkciq IRENAM                                           197
 8.1.5.    funkciq LOOKUP                                           198
 8.2.    operacii wwoda/wywoda                                      200
 8.2.1.    funkcii IREAD/IREADC/IREADF/IREADW                       200
 8.2.1.1.  funkciq IREAD                                            201
 8.2.1.2.  funkciq IREADC                                           202
 8.2.1.3.  funkciq IREADF                                           203
 8.2.1.4.  funkciq IREADW                                           204
 8.2.2.    funkciq ITTINR                                           205
 8.2.3.    funkciq ITTOUR                                           206
 8.2.4.    funkciq IWAIT                                            208
 8.2.5.    funkcii IWRITE/IWRITC/IWRITF/IWRITW                      208
 8.2.5.1.  funkciq IWRITE                                           208
 8.2.5.2.  funkciq IWRITC                                           209
 8.2.5.3.  funkciq IWRITF                                           210
 8.2.5.4.  funkciq IWRITW                                           211
 8.2.6.    podprogramma PRINT                                       212
 8.2.7.    funkcii ISPFN/ISPFNC/ISPFNF/ISPFNW                       213
 8.2.7.1.  funkciq ISPFN                                            213
 8.2.7.2.  funkciq ISPFNC                                           215
 8.2.7.3.  funkciq ISPFNF                                           216
 8.2.7.4.  funkciq ISPFNW                                           218
 8.3.    rabota s kanalami                                          219
 8.3.1.    funkciq ICDFN                                            220
 8.3.2.    funkciq ICHCPY (RT11FB ili RT11XM)                       221
 8.3.3.    funkciq ICSTAT (RT11FB ili RT11XM)                       221

                                 - 7 -




 8.3.4.    funkciq IFREEC                                           222
 8.3.5.    funkciq IGETC                                            223
 8.3.6.    funkciq ILUN                                             224
 8.3.7.    funkciq IREOPN                                           224
 8.3.8.    funkciq ISAVES                                           225
 8.3.9.    podprogramma PURGE                                       226
 8.4.    obrabotka komandnoj stroki                                 227
 8.4.1.    podprogramma GTLIN                                       227
 8.4.2.    funkciq IASIGN                                           228
 8.4.3.    funkciq ICSI                                             229
 8.5.    rabota s tajmerom                                          232
 8.5.1.    podprogramma CVTTIM                                      232
 8.5.2.    podprogramma GTIM                                        233
 8.5.3.    funkciq ICMKT                                            234
 8.5.4.    funkciq ISCHED                                           234
 8.5.5.    funkciq ISLEEP                                           236
 8.5.6.    funkciq ITIMER                                           237
 8.5.7.    funkciq ITWAIT (RT11FB ili RT11XM)                       238
 8.5.8.    funkciq IUNTIL (RT11FB ili RT11XM)                       239
 8.5.9.    podprogramma JTIME                                       240
 8.5.10.   funkciq MRKT                                             240
 8.5.11.   funkciq SECNDS                                           241
 8.5.12.   podprogramma TIMASC                                      242
 8.5.13.   podprogramma TIME                                        243
 8.6.    funkcii ob}ego nazna~eniq                                  243
 8.6.1.    podprogramma CHAIN                                       244
 8.6.2.    podprogramma DEVICE (RT11FB ili RT11XM)                  245
 8.6.3.    podprogrammy GTJB/IGTJB                                  246
 8.6.4.    funkciq IDSTAT                                           248
 8.6.5.    funkciq IFETCH                                           249
 8.6.6.    funkciq IQSET                                            250
 8.6.7.    funkciq ITLOCK (RT11FB ili RT11XM)                       251
 8.6.8.    podprogramma LOCK                                        252
 8.6.9.    podprogramma RCHAIN                                      253
 8.6.10.   podprogramma RCTRLO                                      254
 8.6.11.   podprogramma RESUME (RT11FB ili RT11XM)                  254
 8.6.12.   podprogramma SCCA                                        255
 8.6.13.   podprogramma SETCMD                                      256
 8.6.14.   podprogramma SUSPND (RT11FB ili RT11XM)                  257
 8.6.15.   podprogramma UNLOCK                                      258
 8.7.    sluvebnye operacii                                         259
 8.7.1.    funkciq IADDR                                            259
 8.7.2.    funkciq IGETSP                                           259
 8.7.3.    funkciq INTSET                                           260
 8.7.4.    funkciq IPEEK                                            262
 8.7.5.    funkciq IPEEKB                                           262
 8.7.6.    podprogramma IPOKE                                       263
 8.7.7.    podprogramma IPOKEB                                      264
 8.7.8.    funkciq ISPY                                             264
 8.8.    obmen mevdu zadaniqmi                                      265
 8.8.1.    funkcii  IRCVD/IRCVDC/IRCVDF/IRCVDW  (RT11FB  ili
           RT11XM)                                                  265
 8.8.1.1.  funkciq IRCVD                                            265
 8.8.1.2.  funkciq IRCVDC                                           266
 8.8.1.3.  funkciq IRCVDF                                           266
 8.8.1.4.  funkciq IRCVDW                                           267
 8.8.2.    funkcii  ISDAT/ISDATC/ISDATF/ISDATW  (RT11FB  ili
           RT11XM).                                                 268
 8.8.2.1.  funkciq ISDAT                                            268

                                 - 8 -




 8.8.2.2.  funkciq ISDATC                                           269
 8.8.2.3.  funkciq ISDATF                                           269
 8.8.2.4.  funkciq ISDATW                                           270
 8.8.3.    podprogramma MWAIT (RT11FB ili RT11XM)                   271
 8.9.    rabota s dopolnitelxnymi terminalami                       271
 8.9.1.    funkciq MTATCH                                           271
 8.9.2.    funkciq MTDTCH                                           272
 8.9.3.    funkciq MTGET                                            273
 8.9.4.    funkciq MTIN                                             273
 8.9.5.    funkciq MTOUT                                            274
 8.9.6.    funkciq MTPRNT                                           275
 8.9.7.    funkciq MTRCTO                                           276
 8.9.8.    funkciq MTSET                                            276
 8.9.9.    funkciq MTSTAT                                           279

 9.  ispolxzowanie ras{irennoj pamqti (RT11XM)                      280

 9.1.    osnownye ponqtiq                                           280
 9.1.1.    16-razrqdnaq adresaciq                                   280
 9.1.2.    wirtualxnye i fizi~eskie adresa w kompleksah  (28
           kslow)                                                   280
 9.1.3.    razmer programmy                                         281
 9.1.4.    18-razrqdnaq adresaciq                                   283
 9.2.    tehni~eskie sredstwa                                       285
 9.2.1.    dispet~er pamqti                                         286
 9.2.2.    ponqtie stranicy                                         286
 9.2.3.    pereme}enie                                              288
 9.2.4.    registr aktiwnyh stranic (ras)                           290
 9.2.4.1.  registr adresa stranicy (ra)                             291
 9.2.4.2.  registr opisaniq stranicy (ro)                           292
 9.2.5.    preobrazowanie     16-razrqdnogo     adresa     w
           18-razrqdnyj                                             293
 9.2.6.    registry sostoqniq dp                                    294
 9.2.7.    sistemnyj i polxzowatelxskij revimy processora           295
 9.2.8.    otobravenie po umol~ani`                                 297
 9.3.    programmnye koncepcii                                      300
 9.3.1.    raspredelenie pamqti                                     300
 9.3.2.    programmnoe uprawlenie otobraveniem                      301
 9.3.2.1.  oblastx fizi~eskih adresow                               302
 9.3.2.2.  wirtualxnoe adresnoe okno                                304
 9.3.2.3.  prostranstwo logi~eskih adresow programmy (PLAS)         306
 9.3.3.    dwa wida otobraveniq                                     306
 9.3.3.1.  wirtualxnye zadaniq                                      306
 9.3.3.2.  priwilegirowannye zadaniq                                311
 9.3.3.3.  razli~iq mevdu  wirtualxnym  i  priwilegirowannym
           zadaniqmi                                                314
 9.3.3.4.  perekl`~enie mevdu zadaniqmi                             316
 9.4.    tipi~noe primenenie ras{irennoj pamqti                     317
 9.4.1.    owerlei ras{irennoj pamqti                               317
 9.4.2.    bolx{ie bufery ili massiwy dannyh  w  ras{irennoj
           pamqti                                                   320
 9.4.3.    mnogopolxzowatelxskaq programma                          321
 9.4.4.    rabo~aq oblastx w ras{irennoj pamqti                     323
 9.4.4.1.  ispolxzowanie .SETTOP w RT11XM                           323
 9.4.4.2.  werhnie granicy programmy                                324
 9.4.4.3.  oby~naq makrokomanda .SETTOP                             326
 9.4.4.4.  ras{irennaq makrokomanda .SETTOP                         326
 9.4.4.5.  .SETTOP i priwilegirowannye zadaniq                      328
 9.4.4.6.  .SETTOP i wirtualxnye zadaniq                            331

                                 - 9 -




 9.4.4.7.  wozmovnosti .SETTOP                                      336
 9.4.5.    planirowanie ras{irennoj pamqti                          338
 9.5.    obzor makrokomand ras{irennoj pamqti                       339
 9.6.    struktury dannyh                                           341
 9.6.1.    blok opisaniq oblasti                                    341
 9.6.1.1.  slowo sostoqniq oblasti                                  342
 9.6.1.2.  makrokomanda .RDBDF                                      343
 9.6.1.3.  makrokomanda .RDBBK                                      343
 9.6.2.    blok uprawleniq oblastx`                                 344
 9.6.3.    blok opisaniq okna                                       345
 9.6.3.1.  slowo sostoqniq okna                                     349
 9.6.3.2.  sistemnaq makrokomanda .WDBDF                            350
 9.6.3.3.  sistemnaq makrokomanda .WDBBK                            351
 9.6.4.    blok uprawleniq oknom                                    352
 9.6.5.    |lement o~eredi wwoda/wywoda                             354
 9.6.6.    spisok swobodnoj pamqti                                  355
 9.7.    wypolnenie sistemnyh makrokomand                           355
 9.7.1.    sozdanie oblasti - .CRRG                                 355
 9.7.2.    sozdanie okna - .CRAW                                    356
 9.7.3.    otobravenie okna na oblastx - .MAP                       357
 9.7.4.    sostoqnie otobraveniq - .GMCX                            359
 9.7.5.    otmena otobraveniq okna - .UNMAP                         359
 9.7.6.    ustranenie oblasti - .ELRG                               360
 9.7.7.    ustranenie okna - .ELAW                                  361
 9.7.8.    kody o{ibok                                              361
 9.8.    ograni~eniq                                                363
 9.8.1.    ograni~eniq pri ispolxzowanii ra1                        363
 9.8.2.    ograni~eniq sistemnyh makrokomand                        364
 9.8.3.    ograni~eniq pri ispolxzowanii ra2                        364
 9.8.4.    sinhronnye sistemnye lowu{ki                             364
 9.8.4.1.  instrukcii TRAP, BPT i IOT                               366
 9.8.4.2.  lowu{ki 4, 10 i FPU                                      366
 9.8.4.3.  o{ibki dispet~era pamqti                                 366
 9.8.4.4.  o{ibki pariteta pamqti                                   367
 9.9.    otladka programm                                           367
 9.10.   primer programmy                                           368

                                 - 10 -




              1. nazna~enie i uslowiq primeneniq bibliotek




       operacionnaq sistema RT11 sodervit {irokij nabor serwisnyh funk-
  cij, takih kak  rabota  s  fajlami,  interpretaciq  komandnyh  strok,
  uprawlenie wwodom/wywodom i t. d.

       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  naimenowa-
  nie SYSmas.SmL. sistemnye makrokomandy interpretiru`tsq monitorom  wo
  wremq wypolneniq programmy polxzowatelq.

       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  biblio-
  teku takve wkl`~eny nabory podprogramm dlq raboty so strokowymi  dan-
  nymi i 32-h razrqdnoj celo~islennoj arifmetikoj. podprogrammy biblio-
  teki pozwolq`t napisatx l`bu` programmu na qzyke fortran sm bez prog-
  rammirowaniq otdelxnyh |lementow na qzyke assembler.

       dopustimo takve obra}enie k podprogrammam biblioteki iz programm
  na qzyke makroassembler.

       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.

       podprogrammy biblioteki obespe~iwa`t  wypolnenie  programmoj  na
  qzyke fortran sm dejstwij, analogi~nyh wypolneni` sistemnyh  makroko-
  mand w programme na qzyke makroassembler, rabotu fortranowskoj  prog-
  rammy so stro~nymi dannymi, a takve celo~islennu` dwuslownu` (32 raz-
  rqda) arifmetiku.

                                 - 11 -




                      2. harakteristiki bibliotek




       dannyj razdel opisywaet harakteristiki biblioteki sistemnyh mak-
  rokomand (SYSMAC.SML) i sistemnoj ob'ektnoj biblioteki (SYSLIB.OBJ).



       2.1. makrobiblioteka



       sistemnye makrokomandy podderviwa`tsq i  wypolnq`tsq  razli~nymi
  komponentami operacionnoj sistemy:

  RT11SJ - podderviwaet bolx{instwo sistemnyh  makrokomand  pozwolq`}ih
           rabotatx s fajlami, proizwoditx operacii wwoda/wywoda, rabo-
           tatx s tajmerom, opredelqtx resursy i sostoqnie  sistemy,  a
           takve zawer{atx wypolnenie programm;

  RT11FB - podderviwaet nekotorye sistemnye makrokomandy, wypolnq`}iesq
           tolxko pod uprawleniem |togo monitora; |ti sistemnye  makro-
           komandy  pozwolq`t  polxzowatel`  opredelqtx   podprogrammy,
           wypolnqemye po tajmeru, priostanawliwatx i prodolvatx wypol-
           nenie  programmy,  organizowywatx  obmen  informaciej  mevdu
           zadaniqmi, rabota`}imi w raznyh razdelah; wse sistemnye mak-
           rokomandy, podderviwaemye RT11SJ podderviwa`tsq i RT11FB

  RT11XM - podderviwaet sistemnye makrokomandy,  ras{irq`}ie  dostupnu`
           zadani` pamqtx ot 28 kslow do 124 kslow (pl`s 4 Kslow  stra-
           nicy wwoda/wywoda) i wse sistemnye makrokomandy, dostupnye w
           RT11FB;

  mnogoterminalxnyj drajwer
         - podderviwaet sistemnye makrokomandy, pozwolq`}ie  peredawatx
           i prinimatx simwoly s 16-i terminalow, zakreplqtx i oswobov-
           datx terminaly, polu~atx  sistemnoe  sostoqnie  terminala  i
           ustanawliwatx harakteristiki terminala i linii.

       argumenty sistemnyh makrokomand dolvny bytx dopustimymi  wyrave-
  niqmi qzyka makroassembler. pri translqcii makrokomandy ras{irq`tsq w
  posledowatelxnostx instrukcij.

       bolx{instwo sistemnyh makrokomand ispolxzu`t instrukci` emt  dlq
  pereda~i informacii monitoru, kotoryj izwlekaet ee i  wypolnqet  tre-
  buemu` funkci`. mlad{ij bajt instrukcii emt sodervit kod w  interwale
  ot 340 do 377 (wosxmeri~noe):

  377    - zarezerwirowan; RT11 ignoriruet emt s |tim kodom  i  wozwra-
           }aet uprawlenie programme polxzowatelq;

  376    - ispolxzuetsq monitorom RT11; |tot kod ne dolven  primenqtxsq
           polxzowatelem;

  375    - sistemnaq makrokomanda s neskolxkimi argumentami; R0  soder-
           vit adres tablicy argumentow;

                                 - 12 -




  374    - sistemnaq makrokomanda s odnim  argumentom;  R0  sodervit  w
           star{em bajte kod funkcii, a w mlad{em - nomer kanala ili 0;

  360-373
         - ispolxzu`tsq monitorom RT11 |ti kody ne  dolvny  primenqtxsq
           polxzowatelem;

  340-357
         - argumenty sistemnoj makrokomandy nahodqtsq w steke  i/ili  w
           R0.


       pRIME^ANIE. instrukciq EMT ne dolvna ispolxzowatxsq  w  program-
  mah, napisannyh polxzowatelem.



       2.2. ob'ektnaq biblioteka



       sistemnaq ob'ektnaq biblioteka (SYSLIB.OBJ) sodervit podprogram-
  my, wyzywaemye iz programm, napisannyh na qzyke fortran sm.  podprog-
  rammy pozwolq`t ispolxzowatx swojstwa monitorow,  wypolnqtx  raznoob-
  raznye wspomogatelxnye funkcii. w nee whodit  paket  podprogramm  dlq
  raboty so strokami i obespe~enie wspomogatelxnyh preobrazowanij dwus-
  lownogo celogo.

       biblioteka SYSLIB imeet:

         - nabor sredstw wwoda/wywoda:  sinhronnyj,  asinhronnyj  i  po
           sobytiqm; podprogrammy biblioteki mogut bytx iniciirowany iz
           podprogramm zawer{eniq;

         - wozmovnostx planirowaniq wo wremeni  asinhronnyh  podzadanij
           (podprogramm zawer{eniq);

         - nabor sredstw dlq swqzi mevdu  operatiwnym  i  fonowym  (ili
           sistemnymi) zadaniqmi (tolxko dlq RT11FB i RT11XM )

         - podprogrammy obsluviwaniq prerywanij;

         - nabor  sredstw  obsluviwaniq  tajmera,  wkl`~aq  asinhronnu`
           obrabotku prerywanij; preobrazowanie razli~nyh formatow wre-
           meni;

         - wspomogatelxnye funkcii wwoda/wywoda, wkl`~a`}ie wozmovnosti
           otkrytiq, zakrytiq, pereimenowaniq, sozdaniq i udaleniq faj-
           low s ustrojstwa;

         - wozmovnostx ispolxzowaniq informacionnyh funkcij  na  urowne
           monitora: wyda~a parametrow zadaniq,  statisti~eskih  dannyh
           ustrojstwa i statisti~eskih dannyh kanalow wwoda/wywoda;

         - dostup k interpretatoru komandnyh strok (CSI) dlq wyborki  i
           analiza standartnyh komandnyh strok RT11;

         - paket obrabotki simwolxnyh dannyh, obespe~iwa`}ij  obrabotku
           simwolxnyh strok peremennoj dliny;

                                 - 13 -




         - podprogrammy obrabotki dannyh w formate  INTEGER*4,  kotorye
           pozwolq`t wypolnqtx wy~isleniq s celymi dlinoj w dwa slowa;

         - sredstwa raboty s rezidentnymi  bibliotekami  i  awtonomnymi
           zadaniqmi;

         - wozmovnostx obmena informaciej mevdu  zadaniqmi  pri  pomo}i
           po~towyh q}ikow i razdelqemyh fajlow;

         - sredstwa analiza |ffektiwnosti programmnogo koda.


       pRIME^ANIE. biblioteka ne sodervit podprogramm uprawleniq ras{i-
  rennoj pamqtx`, t.k.  sootwetstwu`}ie  wozmovnosti  ispolxzu`tsq  pri
  rabote s massiwami, ob'qwlennymi operatorom VIRTUAL.

       podprogrammy IPEEK, IPOKE, IPEEKB, IPOKEB i/ili ISPY dlq wyborki
  adresow sistemy, monitora, tehni~eskih sredstw mogut razli~nym  obra-
  zom wypolnqtxsq na opredelennyh konfiguraciqh.  pri  programmirowanii
  na qzyke fortran sm neobhodimo imetx w widu sledu`}ee:

         - 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 nep-
           redskazuemym rezulxtatam;

         - wse imena podprogramm, qwlq`}ihsq wne{nimi  po  otno{eni`  k
           golownoj programme i kotorye pereda`tsq "planiru`}im"  podp-
           rogrammam (takim kak ISCHED, ITIMER, IREADF i  dr.),  dolvny
           opisywatxsq w operatore EXTERNAL programmy, kotoraq  ispolx-
           zuet |tot wyzow;

         - nekotorye parametry (ukazannye w opisaniqh  otdelxnyh  podp-
           rogramm) w wyzowah SYSLIB.OBJ dolvny razme}atxsq takim obra-
           zom, ~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  kom-
           ponowki programmy i dannyh sootwetstwu`}ej oblasti pamqti;

         - literaly (stroki) mogut ispolxzowatxsq w ka~estwe parametrow
           pri wyzowe podprogramm i funkcij sistemnoj ob'ektnoj biblio-
           teki;

         - na podprogrammy zawer{eniq i obsluviwaniq prerywanij  nakla-
           dywa`tsq opredelennye ograni~eniq.

                                 - 14 -




                       3. obra}enie k bibliotekam




       programma polxzowatelq pri wypolnenii operacij sredstwami opera-
  cionnoj 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  bib-
  lioteki. dlq formirowaniq "programmnyh zaprosow" iz  programm,  napi-
  sannyh na qzyke  assembler,  ispolxzuetsq  sistemnaq  makrobiblioteka
  SYSMAC.SML, a iz programm, napisannyh na qzyke  fortran  sm,  ispolx-
  zuetsq sistemnaq ob'ektnaq biblioteka SYSLIB.OBJ, dopuska`}aq obra}e-
  niq i iz programm, napisannyh na qzyke assembler.



       3.1. obra}enie k sistemnoj makrobiblioteke



       imena sistemnyh makrokomand na~ina`tsq s to~ki (.)  dlq  otli~iq
  ih ot simwolow i imen makrokomand, opredelennyh polxzowatelem.

       argumenty sistemnyh makrokomand dolvny bytx dopustimymi  wyrave-
  niqmi qzyka assembler, t.k. pri makroras{irenii w processe translqcii
  oni budut ispolxzowany kak operand "isto~nik" w instrukcii MOV.

       wse sistemnye makrokomandy,  ispolxzuemye  w  programme,  dolvny
  bytx opisany w direktiwe .MCALL. w  processe  translqcii  opredeleniq
  sootwetstwu`}ih makrokomand budut wybrany iz SYSMAC.SML.

       w RT11 ispolxzu`tsq sistemnye makrokomandy dwuh formatow:

            1) .PRGREQ   ARG1,ARG2,...,ARGN

            2) .PRGREQ   AREA,ARG1,ARG2,...,ARGN

       makrokomandy perwogo formata generiru`t libo emt 374, libo  odnu
  iz emt 340-357.

       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.

       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.

       nekotorye argumenty makrokomandy mogut bytx opu}eny.

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




                    !--------!--------!
        R0 => AREA: !  CODE  !  CHAN  !
                    !--------!--------!
                    !      ARG 1      !
                    !-----------------!
                    !      ARG 2      !
                    !-----------------!
                    !      . . .      !
                    !-----------------!
                    !      ARG N      !
                    !-----------------!

                                 ris. 1

       dopuskaetsq otsutstwie argumentow. esli opu}en argument AREA, to
  predpolagaetsq, ~to on sodervitsq w R0. esli opu}eny kakie-libo Argu-
  menty ot aRG1 do aRGN, to makrokomanda ne izmenqet sootwetstwu`}ih im
  zapisej w spiske argumentow.

       naprimer, w makrokomande:

               .PRGREQ   AREA,ARG1,ARG2

  zapolnq`tsq perwyj i wtoroj argumenty, a  R0  sodervit  adres  spiska
  argumentow.

       w makrokomande:

               .PRGREQ   AREA

  w spiske zapolnqetsq tolxko perwyj bajt (kod  funkcii),  a  ostalxnye
  argumenty (esli oni estx) ne izmenq`tsq.  R0  sodervit  adres  spiska
  argumentow.

       w makrokomande:

               .PRGREQ   ,ARG1

  predpolagaetsq, ~to R0 uve sodervit adres spiska argumentow. w spiske
  zapolnqetsq tolxko perwyj argument, ne izmenqq  ostalxnyh  (esli  oni
  estx).

       w makrokomande:

               .PRGREQ

  predpolagaetsq, ~to R0 sodervit adres spiska argumentow, a sami argu-
  menty uve zaneseny polxzowatelem ili predydu}im wyzowom dannoj makro-
  komandy.

       spisok argumentow EMT movet bytx zapolnen stati~eski:

               MOV      #AREA,R0
               .PRGREQ
               . . .
   AREA:       .BYTE    CHAN
               .BYTE    CODE
               .WORD    ARG1
               .WORD    ARG2

                                 - 16 -




  i dinami~eski:

               .PRGREQ  #AREA,#ARG1,#ARG2
   ili
               MOV      #AREA,R0
               MOV      #ARG1,2(R0)
               MOV      #ARG2,4(R0)
               MOVB     #CHAN,@R0
               MOVB     #CODE,1(R0)
               .PRGREQ

       |ti tri primera opredelq`t odnu i tu ve makrokomandu.

       oba formata analogi~ny formatam sistemnyh makrokomand w  sisteme
  fobos, no RT11 predostawlqet krome togo tri nowye modifikacii sistem-
  nyh makrokomand wtorogo formata (emt 375), osnowannyh na  wozmovnosti
  ispolxzowaniq kl`~ewyh argumentow, t.e. takih, na  mnemoniku  kotoryh
  reagiruet makroassembler.



       3.1.1. kl`~ewoj argument "wLosk"



       |tot kl`~ewoj argument daet wozmovnostx polxzowatel`  stati~eski
  opisywatx spisok argumentow EMT. sama makrokomanda dolvna bytx opisa-
  na w razdele dannyh programmy polxzowatelq sledu`}im obrazom:

   LABEL:      .PRGREQ   BLOCK,ARG1,...,ARGN

  gde

  aRG1,...,aRGN
         - dopustimye argumenty dlq direktiw .WoRD i .wYte.

       w |tom slu~ae makrokomanda ras{iritsq w spisok argumentow EMT, a
  sama instrukciq EMT generirowatxsq ne budet.

       ~toby wypolnitx dannu` makrokomandu, polxzowatelx dolven ispolx-
  zowatx odnu iz treh |kwiwalentnyh zapisej:

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




   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

   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



       3.1.2. kl`~ewoj argument "rSest"



       |tot kl`~ewoj argument pozwolqet odnowremenno opredelitx  stati-
  ~eski spisok argumentow i wypolnitx makrokomandu.

       wstretiw |tot kl`~ewoj argument, makroassembler  sozdaet  spisok
  argumentow w programmnoj sekcii $$emt$.

       primer.

            .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

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



       3.1.3. kl`~ewoj argument "CODE"



       |tot kl`~ewoj argument pozwolqet programmistu regulirowatx zane-
  senie koda funkcii w spisok argumentow. CODE movet imetx  dwa  zna~e-
  niq: SET - zanesti kod funkcii i NOSET - ne zanositx kod funkcii.

                                 - 18 -




       primer.

               .MCALL  .WRITE,.READ,.EXIT
               . . .
               .WRITE  #AREA,#CHAN,#BUF,#WCN,#BLOCKN
               . . .
               .WRITE  #AREA,CODE=NOSET
               . . .
               .READ   #AREA,CODE=SET
               . . .
               .WRITE  #AREA,CODE=SET
               . . .
               .EXIT

       |tot kl`~ewoj argument pozwolqet ispolxzowatx odin i tot ve spi-
  sok 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.



       3.1.4. adresaciq argumentow



       argumenty sistemnyh makrokomand dolvny  imetx  revim  adresacii,
  dopustimyj w instrukcii MOV. naprimer, dlq zaneseniq w  spisok  argu-
  mentow ~isla {estx, ispolxzuetsq adresaciq (#):

               .PRGREQ  #AREA,#6

  esli nuvno zanesti sodervimoe adresa ili registra, ispolxzuetsq:

               .PRGREQ  #AREA,ADDR,R0

       |to swqzano s tem, ~to spisok argumentow dolven sodervatx nepos-
  redstwenno zna~eniq argumentow.

       pri ispolxzowanii kl`~ewyh slow "BLOCK" i "PSECT"  spisok  argu-
  mentow formiruetsq s pomo}x` direktiw .WORD i .BYTE. po|tomu argumen-
  ty makrokomand dolvny bytx neposredstwennymi zna~eniqmi i ukazywatxsq
  wse.

       prime~aniq:
       1. posle wypolneniq  makrokomandy  wse  uniwersalxnye  registry,
  krome R0, sohranq`t swoi zna~eniq. R0 sodervit informaci`, wozwra}en-
  nu` monitorom. w  teh  slu~aqh,  kogda  informaciq  ne  wozwra}aetsq,
  sodervimoe R0 ne predskazuemo.
       2. tak kak R0 qwlqetsq rabo~im registrom sistemnyh  makrokomand,
  programmist pri ukazanii argumentow ne dolven ispolxzowatx  swqzannyh
  s nim revimow adresacii.
       3. ukazatelx steka ostaetsq bez izmenenij. iskl`~eniem  qwlqetsq
  wyzow interpretatora komandnoj stroki (CSI).

                                 - 19 -




       3.2. obra}enie k sistemnoj ob'ektnoj biblioteke



       podprogrammy iz SYSLIB.OBJ wyzywa`tsq tak ve, kak i  podprogram-
  my, napisannye polxzowatelem. w sistemnu` ob'ektnu` biblioteku whodqt
  kak podprogrammy (SUBROUTINE), tak i funkcii (FUNCTION). obra}enie  k
  funkcii proizwoditsq po imeni w wide:

          I=NAME([ARGUMENTS])

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

       podprogrammy wyzywa`tsq s pomo}x` operatora CALL w wide:

          CALL NAME[(ARGUMENTS)]

       funkcii iz SYSLIB.OBJ mogut bytx  wyzwany  i  kak  podprogrammy,
  esli net neobhodimosti w rezulxtiru`}ej weli~ine i naoborot.

       naprimer:

          CALL  ITWAIT(TIME)
   ili
          I = ITWAIT(TIME)

       esli w opisanii podprogrammy ne ukazano, ~to ee  movno  wyzywatx
  kak funkci`, to pri obra}enii k nej kak k funkcii wozwra}aemoe zna~e-
  nie neopredelenno.



       3.2.1. swqzx programm na fortrane i makroassemblere



       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.

       pereda~a uprawleniq podprogramme iz SYSLIB.OBJ  proizwoditsq  po
  sledu`}ej instrukcii:

          JSR PC,SUBR

       w registre R5 ukazywaetsq adres spiska argumentow,  perwyj  |le-
  ment kotorogo zadaet koli~estwo argumentow  wyzowa,  wtoroj  -  adres
  perwogo argumenta, tretij - adres wtorogo argumenta i t.d. (ris. 2).

                                 - 20 -




                  ----------------------------
          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
                  ----------------------------
                                 ris. 2

       propu}ennyj argument w operatore CALL dolven ukazywatxsq  podrqd
  idu}imi zapqtymi, naprimer:

          CALL  SUBR(X,,Y)

       w spiske argumentow propu}ennye argumenty wyzowa polu~a`t zna~e-
  nie rawnoe "-1".

       dlq pereda~i uprawleniq ispolxzuetsq registr PC, a dlq  pereda~i
  argumentow wyzowa - registr R5. w fortrane wyzywa`}aq programma awto-
  mati~eski sohranqet registry.

       imq podprogrammy dolvno bytx ob'qwleno globalxnym.


       pRIME^ANIE. wyzywaemaq  podprogramma  ne  dolvna  modificirowatx
  spisok argumentow.

       wozwrat uprawleniq  w  wyzywa`}u`  programmu  osu}estwlqetsq  po
  instrukcii "RTS PC".



       3.2.2. wyzow podprogramm  na  fortrane  iz  programm  na
              qzyke makroassembler



       esli trebuetsq wyzwatx fortranowsku` podprogrammu  iz  programmy
  na qzyke makroassembler, nuvno sozdatx fiktiwnu` golownu`  programmu,
  naprimer:

          PROGRAMM     FORINT
          CALL         CALMAC
          STOP
          END

  CALMAC - imq programmy na  makroassemblere,  kotoraq  movet  wyzywatx
  podprogrammy na fortrane i assemblere.

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

       sledu`}aq programma CALMAC wyzywaet podprogrammu  MAXMIN,  napi-

                                 - 21 -




  sannu` na fortrane.

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

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

       w predydu}ej programme blok argumentow razme}en w oblasti  prog-
  rammy. sledu`}aq programma STAKEM  wypolnqet  teve  operacii,  ~to  i
  programma CALMAC, no argumenty razme}aet w steke.

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

       pri razme}enii argumentow w steke, neobhodimo pered  wypolneniem
  instrukcii "RTS PC" wosstanowitx ukazatelx steka. pered wyzowom prog-
  rammy na fortrane neobhodimo  sohranqtx  wse  ispolxzuemye  registry,
  t.k. ne izwestno kakie registry ispolxzuet programma. sodervimoe uka-
  zatelq steka posle wyzowa ostaetsq neizmennym.

       imq podprogrammy na fortrane, kotoru` wyzywaet programma na MAk-
  roassemblere dolvno bytx ob'qwleno globalxnym. wozwrat w programmu na
  makroassemblere proishodit po operatoru RETURN. sledu`}aq podprogram-
  ma napisana na qzyke fortran sm.

           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

                                 - 22 -




   20      FORMAT ('bolx{ee ~islo rawno:',I2)
   30      FORMAT ('menx{ee ~islo rawno:',I2)
           END

       posle assemblirowaniq i komponowki zadaniq, ispolxzuq  programmu
  CALMAC ili STAKEM, sleduet zapustitx ego. programma wydaet  sledu`}ie
  soob}eniq:

   bolx{ee ~islo rawno:78
   menx{ee ~islo rawno:28
   STOP --



       3.2.3. obra}enie  k  SYSLIB.OBJ  iz  programm  na  qzyke
              makroassembler



       w sledu`}em primere funkciq JMUL iz biblioteki SYSLIB wyzywaetsq
  programmoj, napisannoj na qzyke makroassembler.

       primer.

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

       sledu`}ie podprogrammy i funkcii iz SYSLIB.OBJ  mogut  ispolxzo-
  watxsq tolxko s programmami na fortrane:

             GETSTR         IQSET         IASIGN
             IRCVDF         ICDFN         IREADF
             IFETCH         ISCHED        IFREEC
             ISDATF         IGETC         ISPFNF
             IGETSP         ITIMER        ILUN
             IWRITF         INTSET        PUTSTR
             SECNDS

       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  wossta-
  nawliwatx ih posle wyhoda iz podprogrammy.

       funkcii pome}a`t w registry edinstwennyj rezulxtat.  raspredele-
  nie registrow dlq pome}eniq razli~nyh tipow peremennyh sledu`}ee:


                                 - 23 -




         - rezulxtaty funkcij celogo i logi~eskogo tipow zapisywa`tsq w
           registr R0;

         - rezulxtaty funkcij 32-razrqdnogo celogo i logi~eskogo  tipow
           zapisywa`tsq w registr  R0  (mlad{aq  ~astx)  i  registr  R1
           (star{aq ~astx);

         - rezulxtaty funkcij we}estwennogo tipa zapisywa`tsq w registr
           R0 (star{aq ~astx) i w registr R1 (mlad{aq ~astx);

         - rezulxtaty funkcij s udwoennoj to~nostx` - w registry R0-R3,
           samaq mlad{aq ~astx rezulxtata zapisywaetsq w R3;

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


       pRIME^ANIE. rezulxtaty funkcij we}estwennogo tipa zapisywa`tsq w
  uniwersalxnye registry centralxnogo processora, a ne w registry  pro-
  cessora s plawa`}ej zapqtoj. podprogrammy na  qzyke  makroassemblera,
  ispolxzu`}ie |tot processor, dolvny sohranqtx i  wosstanawliwatx  ego
  registr sostoqniq.

       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  prery-
  wanij, podprogrammy zawer{eniq,  ih  dannye.  pro}e  wsego  proweritx
  wypolnenie |togo trebowaniq putem prowerki karty zagruzki, ~toby ube-
  ditxsq, ~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 bib-
  liote~nyh podprogramm. ~toby snqtx |ti ograni~eniq,  sleduet  sdelatx
  USR rezidentnoj.



       3.2.4. wyzow  podprogramm  na  qzyke  makroassembler  iz
              programm na qzyke fortran sm



       programmy na fortrane mogut wyzywatx  podprogrammy  na  makroas-
  semblere, no neobhodimo sledowatx  opredelennym  prawilam.  naprimer,
  programma INIARR qwlqetsq podprogrammoj na  makroassemblere,  kotoraq
  movet bytx wyzwana iz programmy na qzyke fortran.

       primer.

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




   1$:     moV  R1,(R2)+       ; inicializirowatx massiw
           DEC  R0             ; umenx{itx s~et~ik
           BNE  1$             ; powtorqtx do nulq
   RETURN: RTS  PC
           .END

       programma na fortrane wyzywaet predydu}u` podprogrammu sledu`}im
  obrazom:

          CALL   INIARR  (IAR, IVAL, N)

   gde

  INIARR - imq podprogrammy;

  IAR    - imq inicializiruemogo massiwa;

  IVAL   - weli~ina, inicializiru`}aq massiw;

  N      - ~islo inicializiruemyh |lementow.

  |ta programma ill`striruet prawila sostawleniq podprogramm  na  qzyke
  makroassemblera. imq podprogrammy ob'qwlqetsq globalxnym.

       registr R5 ispolxzuetsq dlq pereda~i argumentow. takim obrazom w
  programme INIARR, blok argumentow predstawlen kak pokazano na ris. 3.

              ----------------
       R5 =>  !   O  !   3   !
              ----------------
              !  adres  IAR  !
              ----------------
              !  adres  IVAL !
              ----------------
              !  adres  N    !
              ----------------

                  ris. 3

       registry ot R0 do R4 mogut  swobodno  ispolxzowatxsq,  poskolxku
  wyzywa`}aq programma ih sohranila. kogda  argumenty  polu~eny,  movno
  takve ispolxzowatx R5.

       pri zawer{enii podprogramma wozwra}aet uprawlenie  w  wyzywa`}u`
  programmu ~erez RTS PC.

       sledu`}aq fortranowskaq programma s imenem DOFOR wyzywaet  podp-
  rogrammu INIARR.

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




        END

       zapustiw zadanie, posle translqcii i komponowki obeih  programm,
  inicializirowannyj massiw budet wyweden na terminal kak pokazano:

   1
   1
   2
   2
   3
   3
   STOP --



       3.2.5. zapusk programmy na fortrane w operatiwno/fonowom
              revime



       programmy na fortrane mogut wypolnqtxsq kak operatiwnye, fonowye
  ili sistemnye zadaniq, ~to pozwolqet  |ffektiwno  ispolxzowatx  wremq
  centralxnogo processora. osnownye {agi dlq zapuska programm na  fort-
  rane, kotorye ispolxzu`t RT11FB(XM) opisany nive.

       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.

       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  operatiw-
  nom 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.  raz-
  mer steka movno ukazatx wo wremq komponowki.

       fonowaq oblastx dolvna imetx dlinu ne menee 4 kslow dlq razme}e-
  niq USR i KMON. do zapuska fonowogo zadaniq im qwlqetsq KMON.

       ~toby swoping USR proishodil prawilxno, neobhodimo imetx  prost-
  ranstwo 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  mini-
  malxnyj ob'em 4 kslow dlq ispolxzowaniq USR i KMON.

       esli programma na fortrane skomponowana kak operatiwnoe (sistem-
  noe) zadanie,  zapuskaemoe  komandoj  monitora  FRUN  (SRUN),  razmer
  dopolnitelxnoj operatiwnoj pamqti, neobhodimoj dlq  wypolneniq  |togo
  zadaniq, ras~itywaetsq po formule:

          X = 0.5*(440+(33*N)+(R-136)+A*512)            (1.1)

  gde

  h      - razmer dopolnitelxnoj rabo~ej oblasti dlq operatiwnogo zada-
           niq;

                                 - 26 -




  N      - maksimalxnoe ~islo kanalow wwoda/wywoda; opredelqetsq kl`~om
           /UNITS:N pri translqcii programmy; po umol~ani` N=6;

  R      - maksimalxnaq dlina bufera dlq formirowaniq zapisej formatno-
           go wwoda/wywoda; opredelqetsq kl`~om /RECORDS:R pri translq-
           cii programmy; po umol~ani` R=136;

  A      - koli~estwo odnowremenno ispolxzuemyh  buferow  wwoda/wywoda;
           pri dwojnoj buferizacii "A" umnovaetsq na 2.

       dlq nekotoryh funkcij  sistemnoj  ob'ektnoj  biblioteki  formula
  dolvna bytx modificirowana.

       dlq funkcii IQSET w formulu neobhodimo wnesti  poprawku,  u~ity-
  wa`}u` dopolnitelxnoe mesto w pamqti  dlq  zapisi  |lementow  o~eredi
  (dlina o~eredi):

          X = h + (10*dlina o~eredi)                    (1.2)

       dlq funkcii ICDFN neobhodimo wnesti w formulu  poprawku,  u~ity-
  wa`}u` dopolnitelxnoe mesto w pamqti dlq zapisi ispolxzuemyh kanalow:

          X = h + (6*~islo kanalow)                     (1.3)

       dlq funkcii INTSET neobhodimo wnesti w formulu poprawku,  u~ity-
  wa`}u` dopolnitelxnoe mesto w pamqti dlq neobhodimogo  ~isla  wyzowow
  INTSET, wkl`~ennyh w programmu:

          X = h + (25*INTSET)                           (1.4)

       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 raz-
  me}eniq wtorogo bufera zapisej (po umol~ani`  nazna~aetsq  68  slow).
  dlina bufera zapisej ukazywaetsq kl`~om /R w komandnoj stroke  trans-
  lqtora (kl`~ /RECORDS komandy monitora  FORTRAN).  esli  kl`~  /R  ne
  ispolxzuetsq, to w formulu neobhodimo dobawitx 132 (desqti~nOE)  slo-
  wa:

          X = h + (64+R/2)                              (1.5)

       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:

                     ?ERR 0, NON FORTRAN ERROR CALL

       |to soob}enie poqwlqetsq takve w slu~ae, esli w pamqti  nedosta-
  to~no mesta dlq fonowogo zadaniq  ili  esli  podprogramma  zawer{eniq
  iniciirowana pod uprawleniem RT11SJ wo wremq wypolneniq drugoj  podp-
  rogrammy zawer{eniq. w poslednem slu~ae wypolnenie programmy  prekra-
  }aetsq. dlq aktiwizacii neskolxkih podprogramm zawer{eniq  neobhodimo
  ispolxzowatx FB/XM-monitory.

       nive opisywaetsq procedura zapuska zadanij na fortrane, odnogo w
  fonowom razdele i odnogo w operatiwnom razdele.

       fonowoe zadanie BACK pokazano nive:

                                 - 27 -




           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

       |ta programma pe~ataet soob}enie "priwet iz fonowogo razdela"  i
  budet pe~atatx soob}enie pri kavdom wwode simwola s terminala.

       operatiwnoe zadanie FORE pokazano nive:

           PROGRAM FOREGROUND
           IMPLICIT INTEGER (0)
           CALL IPOKE ("44, "10000. OR. IPEEK ("44))
   100     CALL PRINT ('priwet iz operatiwnogo ~nzdela')
           ICHAR=ITTINR ()
           OCHAR=ITIOUR (ICHAR)
           GOTO 100
           END

       operatiwnoe zadanie sozdaetsq komandoj  LINK/FOREGROUND.  zagru-
  zo~nomu modul` priswaiwaetsq tip fajla .REL, i on dolven  zapuskatxsq
  kak wysokoprioritetnoe zadanie. naprimer:

              .LINK/FOREGROUND FORE

  pri wyzowe programmy po komande :

              .FRUN FORE

  wydaetsq soob}enie:

              ?ERR 62 FORTRAN START FAIL

       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:

              .FRUN FORE/BUFFER:760

       rezulxtatom wypolneniq |toj komandy  budet  sledu`}ij  wywod  na
  terminal:

   F>
   priwet iz operatiwnogo razdela
   B>
   .

       pe~atx F> ukazywaet na to, ~to wywod proizwoditsq iz operatiwno-
  go zadaniq. zatem, monitor pe~ataet B> i to~ku, ukazywaq, ~to  upraw-
  lenie wozwra}eno w revim komand  monitora.  komandnyj  wwod  ostaetsq
  swqzannym s fonowym zadaniem. posle wwoda:

              .RUN BACK

  wywoditsq soob}enie iz fonowogo razdela:

                                 - 28 -




   priwet iz fonowogo razdela

       dlq wwoda s terminala w operatiwnoe zadanie ispolxzuetsq  upraw-
  lq`}ij simwol CTRL/F. sistema nape~ataet F>, ukazywaq ~to  wwod  nap-
  rawlqetsq w operatiwnoe zadanie.  nape~ataw  simwol,  naprimer,  "Y",
  budet wywedeno soob}enie iz operatiwnogo zadaniq.

   F>
   Y priwet iz operatiwnogo razdela

       wwedite CTRL/B dlq wozwrata w  fonowyj  razdel  ili  CTRL/C  dlq
  wozwrata w revim komand monitora. posle zawer{eniq operatiwnogo zada-
  niq, dlq wosstanowleniq prostranstwa w pamqti,  neobhodimo  wygruzitx
  operatiwnoe zadanie i nenuvnye drajwery.

       komponowka i zapusk sistemnyh  zadanij  proizwoditsq  analogi~no
  operatiwnomu.



       3.2.6. komponowka  sistemnoj  ob'ektnoj   biblioteki   s
              programmoj polxzowatelq



       pri ispolxzowanii biblioteki SYSLIB.OBJ s programmoj polxzowate-
  lq budut komponowatxsq tolxko nuvnye moduli. naprimer:

                  .LINK PROG


       pRIME^ANIE.  movno  ne  ukazywatx  w  komande  fajl   biblioteki
  SYSLIB.OBJ, t.k. |ta biblioteka ispolxzuetsq po umol~ani`.

       oby~no, sistemnaq biblioteka tak  ve  wkl`~aet  w  sebq  drajwer
  raboty s perekrytiqmi i podprogrammy, prednazna~ennye dlq OTS fortra-
  nA.

       dlq  dobawleniq  modulej  FORLIB.OBJ  k  biblioteke   SISLIB.OBJ
  ispolxzujte sledu`}u` komandu:

                  .LIBRARY/INSERT/REMOVE SISLIB FORLIB
                  GLOBAL? $OVRH
                  GLOBAL?

                                 - 29 -




                      4. whodnye i wyhodnye dannye




       dannyj podrazdel sodervit opisaniE parametrow sistemnyh makroko-
  mand, podprogramm i funkcij sistemnoj ob'ektnoj biblioteki.



       4.1. sistemnaq makrobiblioteka



       nive priwedeny osnownye ponqtiq, ispolxzuemye pri opisanii  mak-
  rokomand sistemnoj makrobiblioteki.



       4.1.1. nomer kanala



       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  makroko-
  mand. posle ustanowleniq swqzi dlq ssylki  na  fajl  ili  ustrojstwo,
  dostato~no ukazatx nomer kanala.

       sistema po umol~ani` predostawlqet polxzowatel` 16 kanalow. ~to-
  by polu~itx bolx{ee koli~estwo kanalow, neobhodimo ispolxzowatx soot-
  wetstwu`}ie sistemnye makrokomandy.



       4.1.2. blok ustrojstwa



       blok ustrojstwa - ~etyrehslownaq tablica, soderva}aq  informaci`
  dlq sistemnoj makrokomandy ob imeni ustrojstwa, imeni i tipe fajla  w
  kode .RaD50.

       perwoe slowo sodervit fizi~eskoe ili logi~eskoe imq  ustrojstwa.
  wtoroe i tretxe - sodervat imq fajla (ne bolee 6 simwolow), ~etwertoe
  - tip fajla.

       imena ne dolvny sodervatx to~ek i dwoeto~ij, qwlq`}ihsq razdeli-
  telqmi w komandnoj stroke.

       naprimer, blok ustrojstwa, predstawlq`}ij fajl rokaZ.mas na ust-
  rojstwe Dk:, movno zapisatx sledu`}im obrazom:

                                 - 30 -




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

       nedosta`}ie simwoly wo wtorom slu~ae dopolnq`tsq probelami, a  w
  perwom i tretxem mogut prosto opuskatxsq. dlq udobstwa  rekomenduetsq
  ispolxzowatx makrokomandu .DBLK.



       4.1.3. swoping USR



       w zawisimosti ot togo, trebu`t ili  net  sistemnye  makrokomandy
  prisutstwiq w pamqti USR, oni delqtsq na dwa sootwetstwu`}ih tipa.

       nekotorye sistemnye makrokomandy, ispolxzu`}ie USR, trebu`t s~i-
  tywaniq nowoj kopii USR. |to swqzano s tem, ~to podprogrammy,  wypol-
  nq`}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  modificiro-
  wan, i po|tomu, dlq wypolneniq podobnyh sistemnyh makrokomand, proiz-
  woditsq s~itywanie nowoj kopii USR.

       w razli~nyh tipah monitora ispolxzowanie USR dlq odnoj i toj  ve
  makrokomandy movet otli~atxsq.

       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.

       USR ne qwlqetsq reenterabelxnoj programmoj i  po|tomu  ne  movet
  wypolnqtx sistemnye makrokomandy bolee ~em odnoj programmy  polxzowa-
  telq. sledowatelxno, kogda  USR  ispolxzuetsq  odnoj  programmoj,  to
  l`baq drugaq, trebu`}aq USR, stawitsq w o~eredx.

       esli w programme wstretilasx makrokomanda, dlq wypolneniq  koto-
  roj neobhodima USR, to oblastx programmy, w kotoru` dolvna bytx  zag-
  ruvena USR, sohranqetsq sistemoj w fajle SWAP.SYS na  sistemnom  ust-
  rojstwe, a USR zagruvaetsq w operatiwnu` pamqtx. zawer{iw  wypolnenie
  trebuemoj  operacii,  sistema  wosstanawliwaet  programmu  iz   fajla
  SWAP.SYS.

       pri rabote RT11XM USR wsegda rezidentna.

       oby~no swoping proishodit po umol~ani`, no  movno  swesti  koli-
  ~estwo neobhodimyh obmenow k minimumu, esli  pri  napisanii  programm
  u~itywatx sledu`}ee:

         - 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);


                                 - 31 -




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

         - sme}enie 374 w rezidentnoj ~asti  monitora  sodervit  razmer
           USR w bajtah i dolvno ispolxzowatxsq programmoj dlq  dinami-
           ~eskogo opredeleniq razmera oblasti, neobhodimoj dlq swopin-
           ga.

       prime~aniq:
       1. operaciq swopinga trebuet otnositelxno bolx{ih zatrat  wreme-
  ni, po|tomu ee neobhodimo po wozmovnosti izbegatx.
       2. sodervimoe q~ejki 46 ignoriruetsq, esli ne nuven swoping.
       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 proi-
  zojdet neustranimaq o{ibka. o{ibki  ne  budet,  esli  USR  rezidentna
  (rezidentnostx USR obespe~iwaetsq komandoj  monitora  "Set  USR  NoS-
  War").
       4. RT11SJ ne kontroliruet prawilxnostx adresa swopinga w  q~ejke
  46. esli oblastx swopinga perekrywaet  rezidentnyj  monitor,  sistema
  razru{aetsq.
       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.



       4.1.4. podprogrammy zawer{eniq



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

       pri sozdanii podprogramm zawer{eniq neobhodimo sobl`datx sledu`-
  }ie ograni~eniq:

         - im zapre}aetsq wydawatx zaprosy, trebu`}ie swoping USR, ina-
           ~e wozniknet neustranimaq o{ibka monitora;

         - oni ne dolvny razme}atxsq w pamqti, prednazna~ennoj dlq USR;

         - wyhod iz podprogrammy zawer{eniq dolven osu}estwlqtxsq  pos-
           redstwom komandy RtS rs;

         - esli ispolxzu`tsq registry, krome R0  i  R1,  ih  sodervimoe
           dolvno w na~ale podprogrammy zapominatxsq, a w konce wossta-
           nawliwatxsq.

                                 - 32 -




       4.2. sistemnaq ob'ektnaq biblioteka



       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.



       4.2.1. nomer kanala



       nomer kanala qwlqetsq logi~eskim identifikatorom fajla ili nabo-
  ra dannyh, ispolxzuemyh w qzyke  fortran  sm.  takim  obrazom,  kogda
  polxzowatelx otkrywaet fajl na ustrojstwe, on priswaiwaet nomer kana-
  la |tomu fajlu. k otkrytomu fajlu movno obra}atxsq ~erez  priswoennyj
  nomer kanala.

       OTS fortranA imeet 16 (desqti~noe) kanalow dostupnyh dlq ispolx-
  zowaniq. 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.

       funkciq ISDFN predostawlqet  polxzowatel`  do  255  (desqti~noe)
  kanalow. ona wydelqet pamqtx w oblasti zadaniq dlq razme}eniq  infor-
  macii o statuse  dopolnitelxnyh  kanalow.  funkci`  ICDFN  velatelxno
  ispolxzowatx wo wremq iniciacii zadaniq. sistema wwoda/wywoda fortra-
  na ispolxzuet kanaly ot 0 do 15 (desqti~noe), po|tomu kanaly s  bolx-
  {imi nomerami movno ispolxzowatx bez ograni~enij.

       kanaly dolvny wydelqtxsq w osnownoj programme ili w ee  podprog-
  rammah. ne rekomenduesq wydelqtx kanaly w  programmah,  kotorye  byli
  aktiwizirowany w rezulxtate  zawer{eniq  wwoda/wywoda  ili  funkciqmi
  ISCHED ili ITIMER.



       4.2.2. blok ustrojstwa



       blokom ustrojstwa qwlqetsq ~etyrehslownyj blok informacii w kode
  RAD50, kotoryj opredelqet fizi~eskoe ustrojstwo i imq fajla. w  fort-
  rane movno ispolxzowatx tri razli~nyh metoda zadaniq |togo bloka:

  1) movno ispolxzowatx operatory DIMENSION i DATA.

       DIMENSION      IFILE (4)
       DATA           IFILE     /3RSY, 3RFIL, 3RE, 3RXYZ/

  2) movno perewesti dostupnu` stroku simwolxnogo opisaniq fajla w for-
  mat RAD50, ispolxzuq wyzowy  SYSLIB,  takie  kak  IRAD50,  R50ASC,  i
  RAD50. naprimer:

                                 - 33 -




       REAL*8   FILSPC
       CALL     IRAD50    ( 12, 'SY FILE  XYZ', FILSPC )

  3) movno ispolxzowatx  SYSLIB,  wyzwaw  ICSI,  kotoraq  obra}aetsq  k
  interpretatoru komandnoj stroki (CSI) dlq  priema  i  grammati~eskogo
  razbora standartnoj komandnoj stroki RT11



       4.2.3. swoping USR



       w programmah napisannyh na fortrane neobhodimo u~itywatx  razme-
  }enie USR. USR zanimaet 2 kslow. esli USR ne rezidentna, to pri wyzo-
  we podprogramm iz SYSLIB, trebu`}ih USR (takih kak  IENTER  ili  LOO-
  KUP), ili kogda  USR  wyzywaetsq  OTS  fortrana,  ona  zagruvaetsq  w
  pamqtx. OTS fortrana postroena takim obrazom, ~to USR movet prowoditx
  s nej swoping.

       neobhodimo razme}atx programmy obsluviwaniq prerywanij  i  podp-
  rogrammy 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.



       4.2.4. uprawlenie swopingom USR



       movno uprawlqtx swopingom USR, ispolxzuq komandy kMON:

          SET USR NOSWAP
   i
          SET USR SWAP

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

       esli programma ne welika i w pamqti ostaetsq 2  kslow  neispolx-
  zuemoj pamqti, to ee  movno  translirowatx  komandoj  FORTRAN/NOSWAP.
  posle kompOnowki pri zagruzke programmy USR budet postoqnno rezident-
  na 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  trebowa-
  niq swopinga USR.

       wo wremq wypolneniq zadaniq  movno  uprawlqtx  swopingom  USR  s
  pomo}x` podprogramm LOCK, UNLOCK i ITLOCK.

       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 opredele-
  niq ispolxzuetsq li USR drugim zadaniem. esli da,to ITLOCK wozwra}aet
  uprawlenie s kodom o{ibki. |to pozwolqet programme, sdelaw{ej popytku

                                 - 34 -




  zahwata, prodolvatx drugie dejstwiq. wyzowy LOCK i UNLOCK primenq`tsq
  w operatiwnoj programme dlq predotwra}eniq konflikta s fonowym  zada-
  niem w processe inicializacii, na faze zawer{eniq i  dlq  minimizacii
  ~isla obmenow.



       4.2.5. strategiq swopinga USR



       pri  napisanii  programm  neobhodimo  u~itywatx,  ~to  ob'ektnyj
  modulx sostoit iz programmnyh sekcij (PSECT), ime`}ih unikalxnye ime-
  na. 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.

       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  inst-
  rukcii ili dannye), sme{annye sekcii, soderva}ie peremennye.

       golownoj modulx w programme na fortrane (oby~no - perwyj ob'ekt-
  nyj modulx w posledowatelxnosti pred'qwlennyh komponow}iku) ob'qwlqet
  programmnye sekcii w sledu`}em porqdke:

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


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




       4.2.6. ispolxzowanie USR i wremq



       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 podp-
  rogrammy zawer{eniq i programmy obsluviwaniq prerywanij, no ne osnow-
  naq programma. minimizirowatx wremq wypolneniq zadaniq movno odnim iz
  sledu`}ih ~etyreh sposobow:

         - ne ispolxzowatx ustrojstwa s medlennym dostupom,  takie  kak
           kassetnye ili magnitnye lenty;
         - pisatx operacii realxnogo wremeni kak podprogrammy obrabotki
           prerywanij ili podprogrammy zawer{eniq tak, ~toby wremq ovi-
           daniq ne wliqlo na operacii realxnogo wremeni;
         - razdelqtx operacii realxnogo wremeni i rabotu s USR;
         - ispolxzowatx wyzow ITLOCK i izbegatx wyzowow SYSLIB, trebu`-
           }ih USR, poka USR zanqta drugim zadaniem.

       operatiwnoe zadanie movet bytx postroeno tak:  faza  inicializa-
  cii, na kotoroj ono otkrywaet wse neobhodimye kanaly i zapuskaet ope-
  racii realxnogo wremeni, faza realxnogo wremeni,  na  kotoroj  wypol-
  nq`tsq operacii wwoda/wywoda i obsluviwanie prerywanij, faza zawer{e-
  niq, 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.



       4.2.7. rabota s INTEGER*4



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

       |tot format otli~aetsq ot dwuslownogo wnutrennego formata wreme-
  ni, soglasno kotoromu star{aq ~astx zna~eniq wremeni hranitsq w  per-
  wom slowe, a mlad{aq ~astx - wo wtorom.  funkciq  JJCVT  osu}estwlqet
  preobrazowanie odnogo formata w drugoj.

       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.

       primer.

          INTEGER*4 J
          INTEGER*2 I(2)
          EQUIVALENCE (J,I)
          DATA I/3,0/


                                 - 36 -




       w sledu`}em primere pokazano  neprawilxnoe  zadanie  zna~eniq  3
  peremennoj tipa INTEGER*4.

       primer.

          INTEGER*4 J
          DATA J/3/

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

       primer.

          INTEGER*4 J
          INTEGER*2 I(2)
          EQUIVALENCE (J,I)
          DATA I/-4,-1/

       pri wyzowe podprogramm udobna sledu`}aq forma priswoeniq  zna~e-
  nij parametram tipa INTEGER*4:

          INTEGER*2 J(2)
          DATA J/3,0/



       4.2.8. podprogrammy trebu`}ie  dopolnitelxnogo  |lementa
              o~eredi



       nekotorye podprogrammy dlq wypolneniq trebu`t |lement o~eredi:

        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

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




       4.2.9. podprogrammy zaBer{eniq



       podprogrammy zawer{eniq mogut bytx napisany  na  qzykah  fortran
  ili makroassembler.

       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~a-
  nie wwoda/wywoda ili iste~enie zadannogo interwala wremeni. wse podp-
  rogrammy zawer{eniq teku}ego zadaniq ime`t wys{ij prioritet po  sraw-
  neni` s drugimi ~astqmi zadaniq. wyzow podprogrammy zawer{eniq prery-
  waet wypolnenie zadaniq na wremq wypolneniq podprogrammy.

       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  prery-
  wa`t drug druga, a wypolnq`tsq na osnowe  prawila  "perwyj  pri{el  -
  perwyj wypolnen".

       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 dan-
  nu` podprogrammu.

       podprogrammy zawer{eniq,  napisannye  na  qzyke  fortran,  mogut
  imetx maksimum dwa argumenta, naprimer:

            SUBROUTINE    CRTN  [(IARG1, IARG2)]

  gde

  CRTN   - imq podprogrammy zawer{eniq;

  IARG1  - |kwiwalenten R0 na whode w podprogrammu zawer{eniq na  qzyke
           assemblera;

  IARG2  - |kwiwalenten R1 na whode w podprogrammu zawer{eniq na  qzyke
           assemblera.

       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.

       podprogrammy zawer{eniq, kotorye wyzywa`tsq sledu`}imi wyzowami:

          INTSET      ISDATF      IRCVDC
          ISPFNC      IRCVDF      ISPFNF
          IREADC      ITIMER      IREADF
          IWRITC      ISCHED      IWRITF
          ISDATC      MRKT

       ime`t takie ograni~eniq:

         - perwyj wyzow podprogrammy, planiru`}ej obra}eniq k  podprog-
           ramme zawer{eniq, napisannoj na qzyke fortran, dolven  isho-

                                 - 38 -




           ditx iz osnownoj programmy;

         - kanal ne movet bytx polu~en  wyzowom  IGETC  ili  oswobovden
           wyzowom IFREEC iz podprogrammy zawer{eniq; kanaly ispolxzue-
           mye podprogrammoj zawer{eniq  dolvny  bytx  uve  wydeleny  i
           pome}eny w blok COMMON;

         - podprogramma zawer{eniq ne movet proizwoditx wyzow,  trebu`-
           }ij ispolxzowaniq USR;

         - fajly, ispolxzuemye podprogrammoj  zawer{eniq,  dolvny  bytx
           otkryty i zakryty w osnownoj programme; net  ograni~enij  na
           operacii wwoda/wywoda, kotorye mogut prowoditxsq podprogram-
           mami 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 prisoedi-
           neniem fajla k kanalu wyzowom IREOPN; dave esli  sama  podp-
           rogramma 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  wyzy-
           watx CLOSE dlq zakrytiq logi~eskogo kanala;

         - podprogrammy fortrana powtornoispolxzuemy, no ne  powtornow-
           hodimy; po|tomu podprogramma movet wyzywatxsq trebuemoe ~is-
           lo raz kak  podprogramma  zawer{eniq  ili  kak  podprogramma
           osnownoj programmy, no ne movet bytx wyzwana sama iz sebq;

         - pod RT11SJ tolxko odna funkciq zawer{eniq dolvna bytx aktiw-
           na w kavdyj moment wremeni.



       4.2.10. funkcii po obrabotke strok simwolow



       funkcii i podprogrammy po obrabotke strok simwolow, ime`}iesq  w
  sistemnoj ob'ektnoj  biblioteke,  pozwolq`t  obrabatywatx  simwolxnye
  stroki peremennoj dliny.

       stroki hranqtsq w massiwah tipa LOGICAL*1, kotorye  dolven  opi-
  satx programmist. stroki zapomina`tsq w |tih massiwah po odnomu  sim-
  wolu w kavdom |lemente massiwa  pl`s  nulewoj  bajt  dlq  obozna~eniq
  teku}ego konca stroki (format ASCIZ).

       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. stro-
  ki mogut sodervatx simwoly koi-7 ime`}ie kody ot 1 do  127  (desqti~-
  noe).

       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'ekt-
  noj biblioteki, generiru`tsq kompilqtorom s qzyka fortran wsqkij raz,
  kogda stroka, zakl`~ennaq w kawy~ki, ispolxzuetsq w ka~estwe paramet-

                                 - 39 -




  ra w operatore CALL. pustaq stroka movet predstawlqtxsq w qzyke fort-
  ran peremennoj ili konstantoj l`bogo tipa, soderva}ej nulx, ili logi-
  ~eskoj (LOGICAL) peremennoj, ili konstantoj so zna~eniem FALSE.

       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 neobqza-
  telxnyj parametr. w razdelah, opisywa`}ih podprogrammy obrabotki sim-
  wolxnyh 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.

       pri ukazanii parametra LEN movet wkl`~atxsq neobqzatelxnyj para-
  metr ERR, pozwolq`}ij opredelitx nali~ie o{ibki. parametr ERR qwlqet-
  sq logi~eskoj peremennoj, kotoraq dolvna perwona~alxno ustanawliwatx-
  sq w zna~enie FALSE esli w funkcii po obrabotke simwolxnyh strok uka-
  zywa`tsq parametry LEN i ERR, a parametr LEN dejstwitelxno  ispolxzo-
  walsq dlq ograni~eniq dliny rezulxtiru`}ej stroki, to togda  parametr
  ERR ustanawliwaetsq w zna~enie TRUE. esli parametr LEN dlq  ograni~e-
  niq dliny stroki ne ispolxzowalsq, to parametr ERR ne izmenqetsq.

       parametry LEN i ERR qwlq`tsq neobqzatelxnymi parametrami.  para-
  metr LEN movet zadawatxsq otdelxno, a parametr ERR - tolxko  s  para-
  metrom LEN.

       nekotorye podprogrammy ispolxzu`t ponqtie pozicii. kavdomu  sim-
  wolu stroki priswaiwaetsq pozicionnyj nomer, na edinicu bolx{e nomera
  pozicii simwola, stoq}ego neposredstwenno slewa ot nego. perwyj  sim-
  wol stroki imeet pozicionnyj nomer, rawnyj edinice.

       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:

             LOGICAL*1 A(45)

  massiw "A" movet bytx ispolxzowan dlq hraneniq stroki iz 44  i  menee
  simwolow.

       2-mernyj massiw tipa LOGICAL*1, movet ispolxzowatxsq dlq  hrane-
  niq odnomernogo massiwa strok. kavdaq stroka massiwa movet imetx dli-
  nu na odin simwol menx{u` perwogo parametra razmernosti massiwa  tipa
  LOGICAL*1. koli~estwo strok opredelqetsq ~islom, ukazannym dlq wtoro-
  go parametra razmernosti massiwa tipa LOGICAL*1. naprimer:

          LOGICAL*1 W(21,10)

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

       dwumernyj massiw strok movno opredelitx sledu`}im obrazom:

          LOGICAL*1 T(14, 5, 7)

       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).

                                 - 40 -




  |tot process uweli~eniq razmernostej massiwa movno prodolvatx do soz-
  daniq {estimernyh massiwow strok (predstawlennyh semimernymi massiwa-
  mi tipa LOGICAL*1).

       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`  dli-
  nu, to wsem  posledu`}im  peremennym  bloka  COMMON  budut  priswoeny
  ne~etnye adresa.

       massiw tipa LOGICAL*1 imeet ne~etnu` dlinu tolxko w slu~ae, esli
  proizwedenie ego razmernostej ne~etno.

       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:

          COMMON A1,A2,A3(10),H(21)

  ili

          COMMON A1,A2,H(21),H1(7),A3(10)

  takaq mera predostorovnosti primenqetsq tolxko k peremennym i  massi-
  wam tipa LOGICAL*1.

       wtoroj sposob pereda~i strok w podprogrammy zakl`~aetsq w  pere-
  da~e ~erez dejstwitelxnye ili formalxnye parametry. odino~naq  stroka
  movet bytx peredana s ispolxzowaniem  imeni  ee  massiwa  w  ka~estwe
  dejstwitelxnogo parametra. naprimer:

          LOGICAL*1 A(21)
          CALL SUBR(A)

       esli maksimalxnaq dlina parametra stroki podprogrammy ili  funk-
  cii neizwestna ili esli dannaq podprogramma ispolxzuetsq dlq obrabot-
  ki strok razli~noj dliny, to formalxnyj parametr podprogrammy  dolven
  ob'qwlqtxsq kak massiw tipa LOGICAL*1 s razmerom, rawnym 1, naprimer:

          LOGICAL*1 ARG(1)

  w |tom slu~ae podprogrammy obrabotki stroki budut  prawilxno  oprede-
  lqtx dlinu massiwa ARG wsqkij raz, kogda on ispolxzuetsq,  no  nelxzq
  budet opredelitx stroku maksimalxnogo razmera. wyhodom iz |togo polo-
  veniq 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 prog-
  ramme s temi ve razmerami, s kotorymi on opisan w wyzywa`}ej program-
  me.

       stroki, zakl`~ennye w kawy~ki, mogut ispolxzowatxsq w wide para-
  metrow l`boj podprogrammy obrabotki stroki, kotoraq wyzywaetsq opera-
  torom CALL. oni mogut takve ispolxzowatxsq dlq podprogramm,  wyzywae-
  myh w ka~estwe funkcii. naprimer:

          CALL SCOMP(NAME,'FREE CORE',M)

  |tot operator srawniwaet stroku w massiwe NAME  so  strokoj  simwolow

                                 - 41 -




  "FREE CORE" i ustanawliwaet sootwetstwu`}ee zna~enie celoj peremennoj
  M.




                              5. soob}eniq




       w processe wypolneniq sistemnyh makrokomand monitor movet  obna-
  ruvitx o{ibki, o kotoryh neobhodimo  soob}itx  polxzowatel`.  w  RT11
  su}estwuet tri sposoba soob}enij ob o{ibkah:

         - ~erez bit s w slowe sostoqniq;

         - ~erez bajt o{ibki (bajt 52 w sistemnoj oblasti swqzi);

         - posredstwom soob}enij monitora ob o{ibkah.

       bit s sbrasywaetsq pri prawilxnom wypolnenii programmnogo zapro-
  sa, 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.

       kogda ustanowlen bit s, bajt 52 sodervit dopolnitelxnu` informa-
  ci` ob o{ibkah. zna~eniq bitow bajta 52 opisany otdelxno  dlq  kavdoj
  makrokomandy. programma polxzowatelq dolvna prowerqtx |tot bajt, esli
  bit s ustanowlen.

       nekotorye serxeznye (grubye) o{ibki zastawlq`t monitor  raspe~a-
  tywatx na terminale sootwetstwu`}ie soob}eniq, posle ~ego  uprawlenie
  peredaetsq monitoru. ~toby proanalizirowatx takie o{ibki,  neobhodimo
  ispolxzowatx sistemnu` makrokomandu .SeRR.

       teksty soob}enij priwodqtsq w dokumente "soob}eniq i diagnostika
  o{ibok", 2/b/.00109-01 94 01.

                                 - 42 -




                          6. sistemnye tablicy




       wo wremq wypolneniq zadaniq  ~asto  neobhodimo  znatx  nekotorye
  parametry monitora i samogo zadaniq, inogda nuvno izmenitx |ti  para-
  metry. 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.

       swojstwa monitorow i drajwerow dostupny programme s pomo}x` sis-
  temnoj makrobiblioteki (dlq programm na makroassemblere) i  sistemnoj
  ob'ektnoj biblioteki (dlq programm na fortrane i paskale).



       6.1. sistemnaq oblastx swqzi



       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  monito-
  ru, tak i programmistu. ~toby ispolxzowatx |ti swedeniq w  programme,
  movno primenqtx sistemnye makrokomandy, opredelq`}ie simwolxnye oboz-
  na~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  prog-
  rammy (t.e. opredelqetsq na |tape ee komponowki) i movet bytx izmene-
  na samoj programmoj wo wremq ee wypolneniq. nive dany adresa bajtow i
  w skobkah ih simwolxnye obozna~eniq.

    40,41 (USeRrs)
         - startowyj adres programmy. |to slowo ustanawliwaetsq  kompo-
           now}ikom libo samoj programmoj.  pri  zagruzke  operatiwnogo
           zadaniq po komande FRUN |to slowo korrektiruetsq tak,  ~toby
           ono sodervalo fakti~eskij startowyj adres.

    42,43 (USeRSr)
         - na~alxnoe zna~enie ukazatelq steka. |to slowo ustanawliwaet-
           sq 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  uka-
           zatelx 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.

    44,45 (JSW)
         - slowo sostoqniq  programmy.  ~astx  ego  bitow  ispolxzuetsq
           tolxko monitorom, ostalxnye mogut bytx  izmeneny  programmoj
           polxzowatelq.

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




           266 RmoN.

    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.

    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.

    53 (USeRRw)
         - status zawer{eniq programmy. pri poqwlenii o{ibki  wo  wremq
           wypolneniq programmy informaciq o tipe o{ibki ustanawliwaet-
           sq samoj programmoj w dannom bajte. ispolxzuetsq pri  rabote
           koswennogo komandnogo fajla.

    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 monito-
           ra RMON. zna~enie |togo slowa izmenqtx zapre}eno.

    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.

    57 (ttNFIL)
         - s~et~ik zapolnitelej. koli~estwo znakow-zapolnitelej oprede-
           lqetsq w zawisimosti ot apparatury. esli bajty 56 i 57 rawny
           0, to zapolniteli ne trebu`tsq.


       pRIME^ANIE. bajt 52 dolven ispolxzowatxsq wsegda kak bajt, a  ne
  kak slowo, t.k. bajt 53 primenqetsq dlq ukazaniq  statusa  zawer{eniq
  programmy.



       6.1.1. status zawer{eniq programmy (USERRB)



       pri zagruzke interpretator komand monitora (KMON) prowerqet sta-
  tus zawer{eniq polxzowatelxskoj programmy. esli pri wypolnenii  polx-
  zowatelxskoj programmy imelisx o{ibki, informaciq o kotoryh sodervit-
  sq 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.

       ime`tsq sledu`}ie statusy zawer{eniq programmy:

                                 - 44 -




  SUCCESS
         - uspe{noe zawer{enie; |tot status  zawer{eniq  ozna~aet,  ~to
           programma byla wypolnena bez o{ibok;

  WARNING
         - zawer{enie s preduprevdeniem; |tot status ozna~aet, ~to  pri
           wypolnenii programmy bylo wydano preduprevda`}ee  soob}enie,
           no programma wypolnilasx polnostx`;

  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;

  SEVERE ERROR
         - serxeznaq o{ibka; |tot status ozna~aet,  ~to  programmoj  ne
           byli sozdany wyhodnye dannye; |tot status movet  bytx  usta-
           nowlen, esli otsutstwu`t resursy, neobhodimye programme  dlq
           polnogo  ee  zawer{eniq;  naprimer,  otsutstwie  dostato~noj
           oblasti pamqti dlq assemblirowaniq ili kompilqcii prikladnoj
           programmy;

  FATAL ERROR
         - neustranimaq o{ibka; |tot status  ozna~aet,  ~to  ne  tolxko
           prerwano wypolnenie programmy, no wozmovno ispor~en monitor.

       sistemnye programmy i KMON wsegda ustanawliwa`t status  zawer{e-
  niq programmy dlq ukazaniq rezulxtata wypolneniq kavdoj komandy moni-
  tora. 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.

                                                  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


       pRIME^ANIE. 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  oprede-
  lqet status po bitu s naibolx{im porqdkowym nomerom.

                                 - 45 -




       6.1.2. slowo sostoqniq zadaniq (JSW)



       bajty 44 i 45 sodervat slowo sostoqniq zadaniq (JSW). nive daet-
  sq opisanie bitow JSW. bity, otme~ennye "*", ustanawliwa`tsq  monito-
  rom 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.

  15 (USWar$)
         - bit swopinga USR (tolxko dlq RT11SJ) ustanawliwaetsq  siste-
           moj, esli USR rezidentna.

  14*+ (ttLs$)
         - bit wwoda kirillicy. esli on ustanowlen, wwod kirillicy raz-
           re{en. esli programma  polxzowatelq  ne  ustanawliwaet  |tot
           bit, to pri wwode s terminala drajwer  proizwodit  awtomati-
           ~eskoe preobrazowanie simwolow kirillicy w latinskie  simwo-
           ly.

  13*+ (RStRt$)
         - bit restarta. esli trebuetsq, ~toby programma byla  powtorno
           zapu}ena po komande REENTER s terminala,  neobodimo  ustano-
           witx |tot bit w programme.

  12*+ (ttSrs$)
         - bit specrevima terminala. su}estwu`t dwa revima wwoda s ter-
           minala w zawisimosti ot 12 bita JSW.
         - esli bit sbro{en, to proizwoditsq oby~nyj wwod s  klawiatury
           sistemnogo terminala:
                - wse nabrannye simwoly otobrava`tsq  na  |krane  (|ho-
                  pe~atx);
                - wypolnqetsq stiranie stroki  ili  simwola  s  pomo}x`
                  specialxnyh komand operatora <CTRL/U> i  <DEL>  soot-
                  wetstwenno;
                - simwoly teku}ej stroki na~nut peredawatxsq w program-
                  mu  polxzowatelq  tolxko  posle   navatiq   <CTRL/Z>,
                  <CTRL/C>, <CR> i <LF>; do ih poqwleniq simwoly  sobi-
                  ra`tsq w sistemnom bufere terminala.
         - esli bit ustanowlen, to terminal nahoditsq w specrevime wwo-
           da:
                - ni odin iz nabiraemyh  simwolow  ne  otobravaetsq  na
                  |krane, krome <CTRL/C> i <CTRL/O>;
                - <CTRL/U> i <DEL> ne wypolnq`t swoih funkcij, a  pere-
                  da`tsq w programmu kak oby~nye znaki;
                - simwoly pereda`tsq w  programmu  polxzowatelq  srazu,
                  kak tolxko navata klawi{a na sistemnom terminale.

  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  raz-
           dela (operatiwnoj i sistemnyh) pri rabote RT11FB ili RT11XM)

  10+ (VIRt$)
         - bit wirtualxnoj programmy (tolxko dlq RT11XM) on dolven bytx
           ustanowlen pered zapuskom programmy. |tot bit ustanawliwaet-

                                 - 46 -




           sq  libo  wo  wremq  assemblirowaniq  (dlq  modifikacii  JSW
           ispolxzuetsq direktiwa .ASECT), libo  wypolnqetsq  korrekti-
           rowka fajla ob'ektnogo modulq programmy ili fajla ee  zagru-
           zo~nogo modulq s pomo}x` programmy PAT ili  SIPP  sootwetst-
           wenno.

  9 (oVLY$)
         - bit owerlejnoj programmy. ustanawliwaetsq komponow}ikom  pri
           nali~ii owerlejnyh struktur.

  8+ (snaIN$)
         - |tot bit movet bytx ispolxzowan dwumq sposobami. esli w zag-
           ruzo~nom module |tot razrqd ne ustanowlen, to on  ustanawli-
           waetsq 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 zagru-
           vaemoj programme (oby~nyj wariant). esli |tot bit byl  usta-
           nowlen polxzowatelem w JSW programmy pered ee zagruzkoj mak-
           rokomandoj .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).

  7*+ (nLteR$)
         - bit ostanowa po o{ibke wwoda/wywoda (tolxko dlq RT11SJ) esli
           polxzowatelx ho~et prerwatx wypolnenie programmy pri woznik-
           nowenii o{ibki wwoda/wywoda, on dolven ustanowitx |tot bit.

  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.

  3*+    - bit nezawer{ennoj sistemnoj makrokomandy .GTLIN. ispolxzuet-
           sq makrokomandoj .GTLIN dlq polu~eniq  stroki  s  terminala,
           esli ona otsutstwuet w komandnom fajle. |tot bit ispolxzuet-
           sq 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:

                RUN LINK
                TEST,TEST=MOD1,LIB/I
                ^C

       razrqdy 5,4,2,1,0 zarezerwirowany dlq sistemnyh celej.



       6.2. fiksirowannye sme}eniq rezidenta monitora



       nekotorye q~ejki, soderva}ie informaci` o sisteme, wsegda  ime`t
  fiksirowannoe polovenie ot na~ala RMON. |ti q~ejki nazywa`tsq q~ejka-
  mi s fiksirowannymi sme}eniqmi. dlq dostupa k q~ejkam s fiksirowanny-
  mi sme}eniqmi iz wypolnq`}ejsq programmy ispolxzuetsq sistemnaq  mak-

                                 - 47 -




  rokomanda .GVAL.

       nive dany fiksirowannye sme}eniq RMON. ih simwolxnoe obozna~enie
  i dlina w bajtah dany w skobkah w wosxmeri~nom wide.

  266 (USRLC, 2)
         - adres oby~noj zagruzki USR. |tot adres ispolxzuetsq pri zag-
           ruzke USR w pamqtx fonowym zadaniem, esli q~ejka 46  sistem-
           noj oblasti swqzi rawna 0. operatiwnoe ili sistemnoe zadanie
           obqzatelxno dolvno obespe~itx oblastx wnutri  programmy  dlq
           swopinga USR (dlq RT11FB(XM))

  270 (QCOMP, 2)
         - adres podprogrammy zawer{eniq operacii wwoda/wywoda dlq wseh
           drajwerow.

  272 (SPUSR, 2)
         - slowo ispolxzuetsq drajwerami ustrojstw,  ne  ime`}ih  stan-
           dartnu` fajlowu` strukturu RT11, dlq  soob}eniq  monitoru  o
           poqwiw{ihsq o{ibkah.

  274 (SYUNIT, 2)
         - star{ij bajt sodervit nomer ustrojstwa, s kotorogo byla zag-
           ruvena sistema.

  276 (SYSVeR, 1)
         - nomer redakcii (wersii) monitora.

  277 (SYSUrD, 1)
         - nomer korrekcii monitora.

  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.

  302 (SCROLL, 2)
         - adres programmy obsluviwaniq (skrollera) grafi~eskogo  disp-
           leq sm-7300 (|pg sm)

  304 (ttkS, 2)
         - adres registra sostoqniq klawiatury sistemnogo terminala

  306 (ttkw, 2)
         - adres bufernogo registra klawiatury sistemnogo terminala

  310 (ttrS, 2)
         - adres registra sostoqniq |krana sistemnogo terminala

  312 (Ttrw, 2)
         - adres bufernogo registra |krana sistemnogo terminala

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




  320 (CNTXT, 2)
         - ukazatelx na sme{annu`  oblastx  zadaniq,  wypolnq`}egosq  w
           dannyj moment (tolxko dlq RT11FB(XM))

  322 (JOBNUM, 2)
         - nomer wypolnq`}egosq zadaniq (tolxko dlq RT11FB(XM)).

  320 ($TIME, 4)
         - wremq dnq (tolxko dlq RT11SJ).

  324 (SYNsn, 2)
         - adres podprogrammy obrabotki sistemnoj makrokomandy .SYNsn

  326 (LOWMAP, 24)
         - na~alo karty za}ity mlad{ih adresow pamqti (s 0 po 476)

  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.

  354 (GtVest, 2)
         - adres wektora prerywanij po  ostanowu  grafi~eskogo  displeq
           sm-7300 (|pg-sm). po umol~ani` rawen 320.

  356 (ERRCNT, 2)
         - mlad{ij bajt qwlqetsq  s~et~ikom  o{ibok.  ispolxzuetsq  pri
           rabote sistemnyh programm. star{ij bajt ne ispolxzuetsq.

  360 ($mtrS, 2)
         - adres podprogrammy obrabotki sistemnoj makrokomandy .mtrS.

  362 ($mFrS, 2)
         - adres podprogrammy obrabotki sistemnoj makrokomandy .mFrS.

  364 (SYINDX, 2)
         - indeks drajwera sistemnogo ustrojstwa  w  tablice  ustrojstw
           monitora.

  370 (soNFG2, 2)
         - dopolnitelxnoe slowo konfiguracii sistemy. ego bity  ispolx-
           zu`tsq dlq ukazaniq ime`}egosq dopolnitelxnogo  oborudowaniq
           centralxnogo processora.

  372 (SYSGeN, 2)
         - slowo parametrow generacii monitora.

  374 (USRaRe, 2)
         - razmer USR w bajtah. programmy mogut ispolxzowatx |tu infor-
           maci` dlq opredeleniq razmera oblasti, neobhodimoj dlq  swo-
           pinga USR.

  406 (MONAME, 4)
         - w dwuh slowah sodervitsq imq fajla monitora (w kode  RAD50),
           zagruvennogo w pamqtx.


                                 - 49 -




  412 (SUFFIX, 2)
         - q~ejka, sodervit simwol w kode RADIX-50  (wyrawnennyj  wpra-
           wo), ispolxzuemyj monitorom dlq opredeleniq  imen  drajwerow
           ustrojstw.



       6.2.1. slowo konfiguracii sistemy (soNFIG)



       slowo konfiguracii sistemy CONFIG (imeet otnositelxnoe  sme}enie
  300) sodervit informaci` o podkl`~ennoj  apparature  i  o  parametrah
  monitora.

       nive priwoditsq opisanie bitow  slowa  konfiguracii  CONFIG  (po
  umol~ani` s~itaetsq, ~to bit ustanowlen, ili ve nazna~enie bita  uka-
  zywaetsq dlq oboih slu~aew). w skobkah ukazano simwolxnoe imq bita.

  0 (FBMON$)
         - esli FBMON$=0 pri FJOB$=0, to rabotaet RT11SJ.
         - esli FBMON$=1 pri mmU$=0, to rabotaet RT11FB.
         - esli FBMON$=1 pri mmU$=1, to rabotaet RT11XM.

  2 (nWDSr$)
         - imeetsq apparatura grafi~eskogo displeq sm-7300 (|pg-sm).

  5 (sLk50$)
         - esli sLk50$=1, to ispolxzuetsq tajmer s ~astotoj  prerywanij
           50gc.
         - esli sLk50$=0, to ispolxzuetsq tajmer s ~astotoj  prerywanij
           60gc.

  6 (HWFPU$)
         - prisutstwuet processor s plawa`}ej zapqtoj (dlq sm-1420).

  7 (FJOB$)
         - zagruvena operatiwnaq programma ili sistemnoe zadanie.

  8 (GtLNk$)
         - ispolxzuetsq grafi~eskij displej (posle komandy Gt oN).

  9 (USR$)
         - USR rezidentna w operatiwnoj pamqti (ispolxzowalasx  komanda
           "Set USR NoSWar").

  10     - zagruvena sistemnaq programma QUEUE.

  11 (LSI$)
         - w ka~estwe  centralxnogo  ispolxzuetsq  mikroprocessor  tipa
           "|lektronika - 60" (net adresuemogo slowa sostoqniq  proces-
           sora).

  12 (mmU$)
         - rabotaet RT11XM.

  13 (LksS$)
         - tajmer imeet registr sostoqniq.

                                 - 50 -




  14 (kW$P)
         - w ka~estwe sistemnogo ispolxzuetsq programmiruemyj tajmer.

  15 (sLosk$)
         - w sostaw sistemy whodit tajmer.



       6.2.2. dopolnitelxnoe   slowo    konfiguracii    sistemy
              (soNFG2)



       dopolnitelxnoe slowo konfiguracii sistemy (otnositelxnoe  sme}e-
  nie 370) ukazywaet na ime`}iesq dopolnitelxnye apparatnye sredstwa  w
  komplekse. wse opisaniq dany dlq ustanowlennogo bita.

  0 (sasne$)
         - w sostaw centralxnogo processora whodit k|{-pamqtx.

  1 (mrtY$)
         - ispolxzuetsq operatiwnaq pamqtx s kontrolem po  ~etnosti  (s
           paritetom).

  2 (SWReG$)
         - processor imeet registr perekl`~atelej (dlq ~teniq).

  3 (LIGnt$)
         - processor imeet registr indikatorow (dlq zapisi).

  8 (eIS$)
         - processor imeet ras{irennyj nabor instrukcij (eIS).

  9 (Vt6$0)
         - w sostaw kompleksa whodit grafi~eskij displej  |pg-2,  a  ne
           |pg sm.

  14 (tYr70$)
         - processor dopuskaet 22-razrqdnu` adresaci` operatiwnoj pamq-
           ti.

  15 (tYr60$)
         - processor imeet pereprogrammiruemyj mikroprogrammnyj blok.



       6.2.3. slowo parametrow generacii sistemy (SYSGeN)



       slowo parametrow generacii sistemy sodervit informaci`  o  para-
  metrah, opredelqemyh pri generacii sistemy.  wse  opisaniq  dany  dlq
  ustanowlennogo bita.

  0 (eRL$G)
         - sbor statistiki o rabote operatiwnoj pamqti (s paritetom)  i
           wne{nih ustrojstwah.


                                 - 51 -




  1 (mmG$T)
         - ispolxzowanie apparatury dispet~era pamqti.

  2 (tIm$It)
         - ispolxzowanie zaprosow dlq raboty s tajmerom w drajwerah.

  3 (TSG$T)
         - ispolxzowanie {estogo  registra  adresa  stranic  dispet~era
           pamqti (|tot sposob prinqt dlq os NTS, oby~no RT11XM ispolx-
           zuet perwyj registr).

  9 (mrtY$)
         - ispolxzowanie pamqti s paritetom.

  10 (tImeR$)
         - rabota s tajmerom w RT11SJ.

  13 (MTTY$)
         - rabota s dopolnitelxnymi terminalami.

  14     - rabota s sistemnymi zadaniqmi w RT11FB(XM).


       pRIME^ANIE. zna~eniq perwyh treh  bitow  dolvny  sootwetstwowatx
  parametram, kotorye ustanawliwa`tsq pri  translqcii  polxzowatelxskih
  drajwerow.





                      7. sistemnaq makrobiblioteka




       w dannom razdele predstawleny makrokomandy, kotorye obespe~iwa`t
  dostup programmam polxzowatelq, napisannym na qzyke makroassembler, k
  monitoram i drugie serwisnye wozmovnosti.

       wse rassmatriwaemye makrokomandy w sootwetstwii  s  wypolnqemymi
  funkciqmi podrazdelq`tsq na sledu`}ie gruppy:

         - makrokomandy raboty s katalogami;
         - makrokomandy operacij wwoda/wywoda;
         - makrokomandy raboty s kanalami;
         - makrokomandy obrabotki komandnoj stroki;
         - makrokomandy raboty s tajmerom;
         - makrokomandy ob}ego nazna~eniq;
         - makrokomandy obmena mevdu zadaniqmi (RT11FB ili RT11XM);
         - makrokomandy dlq raboty s dopolnitelxnymi terminalami;
         - makrokomandy raboty s drajwerami;
         - makrokomandy dlq raboty s ras{irennoj pamqtx`.

       w otdelxnye gruppy wydelq`tsq makrokomandy, rabota`}ie tolxko  w
  NTS

         - sluvebnye;
         - rezidentnye biblioteki;

                                 - 52 -




         - awtonomnye zadaniq;
         - obmen soob}eniqmi;
         - sredstwa realxnogo wremeni;
         - razdelqemye fajly;
         - analiz |ffektiwnosti.



       7.1. operacii s katalogami



       pri wypolnenii makrokomand, rabota`}ih s katalogami, ispolxzuet-
  sq USR, obsluviwa`}aq katalogowye struktury nositelej, po|tomu  neob-
  hodimo u~itywatx ograni~eniq, swqzannye so swopingom. oby~no  swoping
  proishodit po umol~ani`,  no  su}estwuet  wozmovnostx  optimizirowatx
  programmu tak, ~to koli~estwo neobhodimyh obmenow swedetsq k  minimu-
  mu.

       dlq wypolneniq makrokomand raboty s katalogami takve neobhodimo,
  ~toby drajwery obsluviwaemyh ustrojstw byli zagruveny  w  operatiwnu`
  pamqtx.



       7.1.1. makrokomanda .sLoSe



       sistemnaq makrokomanda .sLoSe zawer{aet rabotu s ukazannym kana-
  lom (zakrywaet kanal) i tem samym oswobovdaet ego dlq  drugih  opera-
  cij.

       format makrokomandy:

          .sLoSe   snaN

  gde

  CHAN   - nomer kanala, kotoryj neobhodimo zakrytx.

       format registra R0:

                    !--------!--------!
        R0 =        !    6   !  CHAN  !
                    !--------!--------!


       esli ukazannyj kanal snaN ne otkryt, makrokomanda ignoriruetsq.

       makrokomanda .sLoSe prednazna~ena dlq fajla, otkrytogo s pomo}x`
  makrokomandy .ENTER. w rezulxtate ee wypolneniq ukazannyj fajl stano-
  witsq postoqnnym na ustrojstwe, sootwetstwu`}em ukazannomu kanalu,  i
  w katalog zanositsq informaciq o nem (imq, tip, data  sozdaniq).  pri
  |tom fajl s takim ve imenem, uve ime`}ijsq  na  |tom  ustrojstwe,  iz
  kataloga iskl`~aetsq.

       esli na ustrojstwe uve su}estwuet za}i}ennyj fajl s  analogi~nym
  imenem, to zakrytie fajla proishodit, no poqwlqetsq dwa fajla s  odi-

                                 - 53 -




  nakowymi imenami.

       dlina fajla, zakrytogo makrokomandoj .sLoSe, opredelqetsq  koli-
  ~estwom zapolnennyh blokow.

       oby~no dlq wypolneniq makrokomandy .CLOSE neobhodimo prisutstwie
  w pamqti USR. odnako, fajl, otkrytyj s pomo}x`  .LookUr,  ne  trebuet
  nikakih preobrazowanij w kataloge po makrokomande .CLOSE, po|tomu net
  neobhodimosti w ispolxzowanii USR.

       ispolxzowanie .CLOSE obqzatelxno dlq ustrojstw s fajlowoj  orga-
  nizaciej tipa magnitnoj lenty.

       o{ibki:

          kod             poqsnenie

           -3     na ustrojstwe su}estwuet za}i}ennyj
                  fajl s ukazannym imenem.


       pRIME^ANIE. sleduet pomnitx, ~to pri otsutstwii  drajwera  soot-
  wetstwu`}ego ustrojstwa w pamqti, woznikaet o{ibka monitora.

       primer priweden pri opisanii makrokomandy .SPFUN (p. 7.2.7).



       7.1.2. makrokomanda .DeLete



       makrokomanda .DeLete otme~aet fajl  w  kataloge  ustrojstwa  dlq
  udaleniq. mesto na ustrojstwe, kotoroe on zanimal s~itaetsq swobodnym
  i tuda movet bytx zapisan l`boj drugoj fajl. |ta  makrokomanda  nedo-
  pustima dlq magnitnoj lenty.

       format makrokomandy:

          .DeLete   aRea,snaN,DwLk,SeGNUm

  gde

  aRea   - adres tablicy argumentow emt iz treh slow;

  CHAN   - nomer kanala;

  DBLK   - blok ustrojstwa;

  SEGNUM - nomer fajla pri operaciqh s kassetami,  esli  |tot  argument
           propu}en, emu priswaiwaetsq zna~enie 0.

                                 - 54 -




       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !    0   !  CHAN  !
                    !--------!--------!
                    !      DBLK       !
                    !-----------------!
                    !      SEGNUM     !
                    !-----------------!


       makrokomanda .DeLete ignoriruetsq,  esli  ukazano  ustrojstwo  s
  nefajlowoj strukturoj.

       drajwer ustrojstwa, soderva}ego fajl,  dolven  bytx  zagruven  w
  pamqtx k momentu wypolneniq makrokomandy.


       pRIME^ANIE. kanal, ukazannyj w makrokomande, dolven bytx  swobo-
  den. kogda wypolnenie makrokomandy zawer{eno, kanal oswobovdaetsq.

       o{ibki:

          kod              poqsnenie

            0     kanal zanqt;

            1     fajl w kataloge ustrojstwa ne najden;

            2     nedopustimaq operaciq
                  dlq dannogo ustrojstwa;

            3     fajl za}i}en ot udaleniq.

       primer.

          .MCALL  .LOOKUP,.EXIT
          .MCALL  .DELETE,.PRINT
           ERRWD = 52

  ST:     .LOOKUP #AREA,#3,#FILE1    ;otkrytx fajl po
           BCS    NLO                ;kanalu 3
          .PRINT  #MSG1
          .DELETE #AREA,#3,#FILE1    ;udalitx ego
           BCS    NDE1
          .PRINT  #MSG2
          .EXIT
   AREA:  .BLKW   10
   FILE1: .RAD50  /SY ABC   /
          .RAD50  /TXT/
   NLO:   .PRINT  #NOLO
          .EXIT
   NDE:   .PRINT  #NODE
          .EXIT
   NDE1:  .TSTB   @#ERRWD     ;opredelenie koda o{ibki
           BNE    NDE
          .PRINT  #NODE1
          .EXIT
   NODE:  .ASCIZ  /fajl ne najden/

                                 - 55 -




   mSG1:  .ASCIZ  /kanal otkryt/
   NOLO:  .ASCIZ  /o{ibka LOOKUP/
   NODE1: .ASCIZ  /kanal zanqt/
   MSG2:  .ASCIZ  /fajl ABs.TXT udalen/
          .eVEN
          .END    ST



       7.1.3. makrokomanda .ENTER



       makrokomanda .ENTER sozdaet wremennyj fajl s ukazannym imenem na
  zadannom ustrojstwe. ukazannyj nomer kanala swqzywaetsq s fajlom.

       fajl stanowitsq postoqnnym tolxko posle wypolneniq  makrokomandy
  .CLOSE. esli su}estwowal postoqnnyj fajl s tem ve imenem, to on  uda-
  lqetsq, a |to imq polu~aet wnowx sozdannyj  fajl.  fakti~eskaq  dlina
  fajla opredelqetsq pri wypolnenii .CLOSE.

       posle wypolneniq makrokomandy  .ENTER  R0  sodervit  fakti~eskij
  razmer oblasti nositelq, dostupnoj dlq fajla. esli ustrojstwo qwlqet-
  sq beskatalogowym, to R0 sodervit 0.

       format makrokomandy:

          .ENTER   AREA,CHAN,DBLK,LEN,SEGNUM

  gde

  AREA   - adres tablicy argumentow EMt iz ~etyreh slow;

  CHAN   - nomer kanala;

  DBLK   - blok ustrojstwa;

  LEN    - razmer fajla, kotoryj movet prinimatx sledu`}ie zna~eniq:

           0    - predostawlqetsq  1/2  naibolx{ej  swobodnoj  oblasti,
                  libo wtoraq po weli~ine swobodnaq oblastx celikom;

           M    - predstawlqetsq "m" blokow; weli~ina  "m"  ukazywaetsq
                  polxzowatelem;

           -1   - naibolx{aq swobodnaq oblastx na ustrojstwe;

  SEGNUM - pri rabote s kassetami ozna~aet nomer fajla; esli on opu}en,
           prinimaetsq nulewoe zna~enie; pri rabote s magnitnymi lenta-
           mi |tot argument movet prinimatx sledu`}ie zna~eniq:

           0    - peremotka magnitnoj lenty w na~alo, a  zatem  wpered,
                  do teh por poka ne budet najdeno imq fajla  ili  poka
                  ne budet obnaruvena metka logi~eskogo konca magnitnoj
                  lenty (LEOT);

           N    - pozicionirowanie magnitnoj lenty na  na~alo  fajla  s
                  porqdkowym nomerom  "N";  algoritm  pozicionirowaniq:
                  esli "N" bolx{e, ~em "k"  (nomer  fajla,  na  kotorom

                                 - 56 -




                  ustanowlena lenta w teku}ij moment), to poisk  proiz-
                  woditsq ot |togo poloveniq k LEOT;  esli  "N"  menx{e
                  "k", to proizojdet peremotka lenty na na~alo, a zatem
                  budet wypolnqtxsq poisk; w slu~ae, esli "N"  li{x  na
                  edinicu menx{e "k", to proishodit obratnaq  peremotka
                  na na~alo |togo ("N"-go) fajla;

           -1   - peremotka do metki LEOT i otkrytie fajla;

           -2   - peremotka magnitnoj lenty  na  na~alo  i  prodwivenie
                  wpered do teh por, poka ne budet  najdeno  imq  fajla
                  ili metka LEOT.


       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !    2   !  CHAN  !
                    !--------!--------!
                    !      DBLK       !
                    !-----------------!
                    !      LEN        !
                    !-----------------!
                    !      SEGNUM     !
                    !-----------------!

       ukazywaq nulewoe zna~enie argumenta "LEN" w makrokomande  .eNTER
  neobhodimo imetx wwidu, ~to nazna~aetsq polowina naibolx{ej  oblasti,
  t.e., esli na ustrojstwe naibolx{aq swobodnaq oblastx sostawlqet  200
  blokow, a dlina fajla, podleva}ego pereda~e, 150 blokow, to  pereda~a
  s argumentom LEN=0 newozmovna, t.k. makrokomanda  .ENTER  predostawit
  tolxko 100 blokow. wo wremq pereda~i  poqwitsq  o{ibka  wwoda/wywoda.
  odnako, esli s pomo}x` argumenta LEN=150 zatrebowana dlina w 150 blo-
  kow, to pereda~a projdet bez o{ibok. za |tim obstoqtelxstwom osobenno
  neobhodimo sleditx  pri  kopirowanii  na  ustrojstwa,  ime`}ie  malyj
  ob'em, naprimer, DX:.


       pRIME^ANIE. makrokomanda .ENTER trebuet, ~toby drajwer ustrojst-
  wa nahodilsq w pamqti pered ee wypolneniem. po|tomu neobhodimo  pered
  .ENTER, naprimer, wypolnitx makrokomandu .FETCH.

       o{ibki:

          kod              poqsnenie

            0     kanal zanqt;

            1     pri ispolxzowanii Makrokomandy s
                  fiksirowannoj dlinoj "LEN" ne najdena
                  oblastx, bolx{aq ili rawnaq "LEN", ili
                  katalog ustrojstwa okazalsq zapolnennym.

       primer  priweden  pri  opisanii  makrokomandy  .WRITW  (podpunkt
  7.2.5.3).

                                 - 57 -




       7.1.4. makrokomanda .ReName



       |ta sistemnaq makrokomanda izmenqet imq ukazannogo  fajla.  esli
  na ustrojstwe uve su}estwuet fajl s tem ve imenem, to on udalqetsq.

       format makrokomandy:

          .ReName   aRea,snaN,DwLk

  gde

  aRea   - adres tablicy argumentow emt iz dwuh slow;

  snaN   - nomer kanala;

  DwLk   - blok, soderva}ij dwe posledowatelxnye  specifikacii  fajlow,
           pri |tom perwye ~etyre  slowa  prednazna~eny  dlq  fajla,  u
           kotorogo budet izmenqtxsq imq, posledu`}ie - dlq nowogo ime-
           ni.


       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !    4   !  CHAN  !
                    !--------!--------!
                    !      DBLK       !
                    !-----------------!


       makrokomanda .RENAME dejstwitelxna tolxko dlq  katalogowyh  ust-
  rojstw; dlq ostalxnyh ustrojstw ona ignoriruetsq.


       pRIME^ANIE. po zawer{enii .RENAME kanal CHAN budet swoboden.

       o{ibki:

          kod          poqsnenie

            0      kanal zanqt;

            1      fajl ne najden;

            2      nedopustimaq operaciq
                   dlq ukazannogo ustrojstwa;

            3      na ustrojstwe estx za}i}ennyj fajl
                   s ukazannym imenem.

       w sledu`}em primere fajl DATA.TMP na  DX0:  pereimenowywaetsq  w
  fajl DATA.CNT.

       primer.

          .MCALL  .FETCH,.PRINT,.EXIT,.RENAME
   ST:    .FETCH  #HSPACE,#NAMBLK    ;zagruzitx drajwer DX

                                 - 58 -




           BCS    FEER
          .RENAME #AREA,#0,#NAMBLK   ;sdelatx pereimenowanie
           BCS    RENER
          .EXIT
   FEER:  .PRINT  #FMSG
          .EXIT
   RENER: .PRINT  #RNMSG
          .EXIT
   AREA:  .BLKW    2               ;obl. argumentow emt
   NAMBLK:.RAD50  /DX0DATA  TMP/   ;staroe imq
          .RAD50  /DX0DATA  CNT/   ;nowoe imq
   FMSG:  .ASCIZ  /o{ibka .FETCH/
   RNMSG: .ASCIZ  /o{ibka .RENAME/
          .eVEN
   HSPACE = .
          .END    ST



       7.1.5. makrokomanda .LOOKUP



       makrokomanda .LOOKUP swqzywaet  ukazannyj  kanal  s  ustrojstwom
  i/ili fajlom dlq wypolneniq operacij wwoda/wywoda.  ~toby  oswoboditx
  kanal dlq drugih operacij, neobhodimo wypolnitx odnu iz makrokomand:

          .CLOSE
          .SAVESTATUS
          .SRESET
          .HRESET
          .PURGE
          .CSIGEN (oswobodit wse kanaly s nomerami 0-10)

       format makrokomandy:

          .LOOKUP   AREA,CHAN,DBLK[,SEGNUM]    (forma 1)
          .LOOKUP   AREA,CHAN,JOBBLK[,SEGNUM]  (forma 2)

  gde

  AREA   - adres tablicy argumentow emt iz treh slow;

  CHAN   - nomer kanala;

  DBLK   - blok ustrojstwa;

  SEGNUM - pri operaciqh s kassetami ozna~aet nomer fajla;  esli  argu-
           ment propu}en, to ego zna~enie predpolagaetsq rawnym 0;  pri
           operaciqh s magnitnymi lentami argument ozna~aet sledu`}ee:

           -1   - poisk imeni fajla ot teku}ego poloveniq; esli  ono  w
                  dannyj moment neopredeleno, to drajwer  budet  wypol-
                  nqtx  algoritm  pozicionirowaniq,   kotoryj   wyzowet
                  obratnu` peremotku, do teh por, poka ne budet najdena
                  metka "EOF";

           0    - prqmaq peremotka magnitnoj lenty ot na~ala wpered  do
                  teh por, poka ne budet najdeno imq fajla ili LEOT;

                                 - 59 -




           N    - l`boe polovitelxnoe  ~islo;  ono  ozna~aet  ustanowku
                  lenty na fajl  s  porqdkowym  nomerom  "N";  algoritm
                  pozicionirowaniq  priweden  w  opisanii  makrokomandy
                  .ENTER.

  JOBBLK - imq zadaniq dlq obmena  informaciej,  sostoq}ee  iz  ~etyreh
           slow:

          .RAD50 /MQ/

           .ASCII /NAME/
                - logi~eskoe imq zadaniq dolvno sodervatx  ot  1  do  6
                  simwolow; nedosta`}ie simwoly imeni dopolnq`tsq nulq-
                  mi; esli logi~eskoe imq opu}eno (t. e. sodervit  odni
                  nuli), to kanal budet otkryt  dlq  ~teniq  iz  l`bogo
                  zadaniq.


       perwaq forma ustanawliwaet swqzx mevdu kanalom i ustrojstwom ili
  su}estwu`}im fajlom. wtoraq forma swqzywaet kanal s  drugim  zadaniem
  dlq obmena informaciej w RT11FB ili RT11XM.

       format tablicy argumentow EMT (forma 1):

                    !--------!--------!
        R0 => AREA: !    1   !  CHAN  !
                    !--------!--------!
                    !     DBLK        !
                    !-----------------!
                    !     SEGNUM      !
                    !-----------------!


       sleduet pomnitx, ~to owerlejnaq programma ispolxzuet 15-j  kanal
  dlq ~teniq perekrytij. pered wypolneniem .LOOKUP drajwer dolven naho-
  ditxsq w pamqti. posle zawer{eniq makrokomandy  registr  R0  sodervit
  dlinu otkrytogo fajla w blokah ili 0 dlq beskatalogowyh ustrojstw.

       o{ibki:

          kod          poqsnenie

            0      kanal zanqt;

            1      ukazannyj fajl w kataloge ne najden.

       w primere pokazano ispolxzowanie makrokomandy  .LOOKUP.  oprede-
  lqetsq, su}estwuet li na ustrojstwe DK: rabo~ij fajl, soderva}ij o~e-
  redx fajlow na wywod k ukazannomu ustrojstwu. esli takoj fajl su}est-
  wuet, to ego razmer wywoditsq na terminal (w blokah).

       primer.

            .TITLE    LOOKUP.MAC
            .MCALL    .LOOKUP,.PRINT,.EXIT
   START:   .LOOKUP   #AREA,#0,#QUSPEC
            BCC       1$
            .PRINT    #NOFIL
            .EXIT

                                 - 60 -




   1$:      MOV       #SIZE,R1
            JSR       PC,CNV10
            .PRINT    #BUFF
            .EXIT
   CNV10:   MOV       R0,-(SP)
            CLR       R0
   1$:      INC       R0
            SUB       #10.,@SP
            BGE       1$
            ADD       #72,@SP
            DEC       R0
            BEQ       2$
            CALL      CNV10
   2$:      MOVB      (SP)+,(R1)+
            RTS       PC
   AREA:    .BLKW     3
   QUESPEC: .RAD50    /DK QUFILE/
            .RAD50    /TMP/
   BUFF:    .ASCII    /DK:QUFILE.TMP = /
   SIZE:    .ASCIZ    /    BLOCKS/
   NOFIL:   .ASCIZ    /?ne najden fajl DK:QUFILE.TMP ?/
            .EVEN
            .END      START



       format tablicy argumentow EMT (forma 2):

                    !--------!--------!
        R0 => AREA: !    1   !  CHAN  !
                    !--------!--------!
                    !     JOBBLK      !
                    !-----------------!
                    !     SEGNUM      !
                    !-----------------!

       o{ibki:

          kod          poqsnenie

            0      kanal zanqt;

            1      ukazannoe zadanie ne najdeno.


       w sledu`}em primere makrokomanda  .LOOKUP  otkrywaet  kanal  dlq
  sistemnogo zadaniq  QUEUE.REL,  ispolxzuemogo  tolxko  w  RT11FB  ili
  RT11XM.

                                 - 61 -




       primer.

            .TITLE   SJLOOK.MAC
            .MCALL   .LOOKUP,.PRINT,.EXIT
            .MCALL   .WRITW,.READW
    START   .LOOKUP  #AREA,#0,#QMSG
            BCC      1$
            .PRINT   #NOJOB
            .EXIT
    1$:     .WRITW   #AREA,#0,#RMSG,#6
            BCS      2$
            .PRINT   #QRUN
            .EXIT
    2$:     .PRINT   #MSGERR
            .EXIT
    AREA:   .BLKW    5
    QMSG:   .RAD50   /MQ/
            .ASCIZ   /QUEUE/
            .WORD    0,0
    RMSG:   .WORD    0
            .ASCII   /SJLOOK/
    MSGERR: .ASCIZ   /?o{ibka?/
    NOJOB:  .ASCIZ   /?QUEUE ne zagruvena?/
    QRUN:   .ASCIZ   /!QUEUE zagruvena!/
            .EVEN
            .END     START



       7.2. operacii wwoda/wywoda





       7.2.1. makrokomandy .ReaD/.ReaDC/.ReaDW



       dannye makrokomandy obespe~iwa`t pereda~u ukazannogo  koli~estwa
  slow po zadannomu kanalu w pamqtx w odnom iz treh revimow.

       posle wypolneniq l`boj makrokomandy tipa .ReaD registr R0  budet
  sodervatx poleznu` informaci`.

       esli s~itywanie proizwoditsq s ustrojstwa posledowatelxnogo dos-
  tupa, to R0 sodervit trebuemoe dlq operacii ~islo slow. pri  obsluvi-
  wanii ustrojstw s prqmym dostupom R0 sodervit fakti~eskoe  koli~estwo
  slow,  kotoroe  budet  s~itano  (.ReaD,  .ReaDs)  ili  bylo   s~itano
  (.ReaDW).

       esli sdelana popytka s~itywaniq posle konca fajla, to  ~asti~naq
  pereda~a wse ve wozmovna, no |to koli~estwo slow (takve otravaemoe  w
  R0) budet menx{e, ~em trebuetsq. w slu~ae ~asti~noj pereda~i ustanaw-
  liwaetsq bit "s", i wydaetsq kod o{ibki 0. po|tomu  programma  wsegda
  dolvna ispolxzowatx  swedeniq  o  fakti~eskom  ~isle  prinqtyh  slow,
  soderva}ihsq w R0. naprimer, esli dlq fajla  dlinoj  w  semx  blokow,
  ime`}ego nomera blokow s 0 po 6 wypolnqetsq  makrokomanda  na  ~tenie
  512 slow, na~inaq s bloka 6, to s~itywaetsq tolxko 256 slow  i  usta-

                                 - 62 -




  nawliwaewaetsq bit "s" (kod o{ibki 0 w ERRWD).

       o{ibki odinakowy dlq wseh treh revimow:

          kod              poqsnenie

           0     popytka s~itywaniq posle konca fajla;

           1     o{ibka apparatury;

           2     kanal ne otkryt.



       7.2.1.1. makrokomanda .ReaD



       makrokomanda .READ wypolnqet pereda~u dannyh po ukazannomu kana-
  lu w pamqtx. posle togo, kak zapros ustanowlen w o~eredx k sootwetst-
  wu`}emu drajweru, uprawlenie nemedlenno peredaetsq programme  polxzo-
  watelq. nazna~enie kanala proizwoditsq s pomo}x` makrokomand  .LookUr
  i .eNteR.

       format makrokomandy:

           .ReaD   aRea,snaN,wUF,WsNt,wLk

  gde

  aRea   - adres tablicy argumentow emt iz 5 slow;

  snaN   - nomer kanala;

  wUF    - adres bufera, kuda pome}a`tsq dannye;

  WsNt   - dlina bufera w slowah;

  wLk    - nomer bloka, kotoryj dolven bytx  s~itan;  dlq  ustrojstw  s
           katalogowoj organizaciej - |to blok otnositelxno na~ala faj-
           la; esli ustrojstwo s beskatalogowoj organizaciej (magnitnye
           lenty, kassety), to |to nomer absol`tnogo bloka na ustrojst-
           we; polxzowatelx dolven sam  izmenqtx  |tot  argument  pered
           o~erednym ispolxzowaniem dannoj makrokomandy.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !   10   !  CHAN  !
                    !--------!--------!
                    !       BLK       !
                    !-----------------!
                    !       BUF       !
                    !-----------------!
                    !      WCNT       !
                    !-----------------!
                    !        1        !
                    !-----------------!

                                 - 63 -




       pRIME^ANIE. dlq  ispolxzowaniq  s~itannyh  dannyh  rekomenduetsq
  wypolnitx makrokomandu .WaIt, kotoraq perewodit programmu w sostoqnie
  ovidaniq do zawer{eniq operacii wwoda/wywoda. makrokomanda .WAIT tak-
  ve wozwra}aet o{ibki, kotorye mogut poqwitxsq wo wremq pereda~i.



       7.2.1.2. makrokomanda .ReaDs



       makrokomanda peredaet neobhodimoe ~islo slow po ukazannomu kana-
  lu w pamqtx. uprawlenie  wozwra}aetsq  programme  polxzowatelq  srazu
  posle togo, kak zapros postawlen w  o~eredx.  programma  polxzowatelq
  prodolvaet wypolnqtxsq do okon~aniq wwoda  dannyh,  zatem  uprawlenie
  peredaetsq podprogramme zawer{eniq, ukazannoj w  makrokomande.  posle
  wypolneniq instrukcii RtS rs  w  podprogramme  zawer{eniq  uprawlenie
  wozwra}aetsq prerwannoj programme.

       format makrokomandy:

           .ReaDs   aRea,snaN,wUF,WsNt,sRtN,wLk

  gde

  aRea   - adres tablicy argumentow EMT iz 5 slow;

  snaN   - nomer kanala;

  wUF    - adres bufera, kuda pome}a`tsq dannye;

  WsNt   - dlina bufera w slowah;

  sRtN   - adres podprogrammy zawer{eniq;

  wLk    - nomer bloka, kotoryj dolven bytx  s~itan;  dlq  ustrojstw  s
           katalogowoj organizaciej - |to blok otnositelxno na~ala faj-
           la; esli ustrojstwo s beskatalogowoj organizaciej (magnitnye
           lenty, kassety), to |to nomer absol`tnogo bloka na ustrojst-
           we; polxzowatelx dolven sam  izmenqtx  |tot  argument  pered
           o~erednym ispolxzowaniem dannoj makrokomandy.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !   10   !  CHAN  !
                    !--------!--------!
                    !       BLK       !
                    !-----------------!
                    !       BUF       !
                    !-----------------!
                    !      WCNT       !
                    !-----------------!
                    !      CRTN       !
                    !-----------------!

       pri whode w podprogrammu zawer{eniq:

         - R0 sodervit slowo sostoqniq kanala; ustanowlennyj w nem  bit

                                 - 64 -




           0 ozna~aet woznik{u` pri pereda~e apparatnu` o{ibku;

         - R1 sodervit wosxmeri~nyj nomer kanala; ego udobno  ispolxzo-
           watx, kogda odna i ta ve podprogramma zawer{eniq primenqetsq
           dlq raboty s neskolxkimi kanalami.


       pRIME^ANIE. w podprogrammah zawer{eniq nedopustimo ispolxzowanie
  makrokomand, trebu`}ih USR.



       7.2.1.3. makrokomanda .ReaDW



       |ta makrokomanda peredaet ukazannoe koli~estwo slow  po  oprede-
  lennomu kanalu w pamqtx. uprawlenie wozwra}aetsq programme  polxzowa-
  telq tolxko posle zawer{eniq  operacii  ~teniq  ili  pri  obnaruvenii
  o{ibki.

       format makrokomandy:

           .ReaDW   aRea,snaN,wUF,WsNt,wLk

  gde

  aRea   - adres tablicy argumentow EMT iz 5 slow;

  snaN   - nomer kanala;

  wUF    - adres bufera, kuda pome}a`tsq dannye;

  WsNt   - dlina bufera w slowah;

  wLk    - nomer bloka, kotoryj dolven bytx  s~itan;  dlq  ustrojstw  s
           katalogowoj organizaciej - |to blok otnositelxno na~ala faj-
           la; esli ustrojstwo s beskatalogowoj organizaciej (magnitnye
           lenty, kassety), to |to nomer absol`tnogo bloka na ustrojst-
           we; polxzowatelx dolven sam  izmenqtx  |tot  argument  pered
           o~erednym ispolxzowaniem dannoj makrokomandy.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !   10   !  CHAN  !
                    !--------!--------!
                    !       BLK       !
                    !-----------------!
                    !       BUF       !
                    !-----------------!
                    !      WCNT       !
                    !-----------------!
                    !        0        !
                    !-----------------!

       esli posle wypolneniq makrokomandy .ReaDW ustanowlen s bit,  |to
  ozna~aet, ~to proizo{la o{ibka pereda~i. w to  wremq  kak  programma,
  wypolnq`}aq  makrokomandu,  ovidaet  wwoda/wywoda,  w  sisteme  movet

                                 - 65 -




  wypolnqtxsq drugaq (fonowaq ili operatiwnaq) programma.

       primer  priweden  pri  opisanii  makrokomandy  .WRITW  (podpunkt
  7.2.5.3).



       7.2.2. makrokomandy .ttYIN/.ttINR



       |ti sistemnye makrokomandy proizwodqt pereda~u znakow s  sistem-
  nogo terminala w programmu polxzowatelq.  peresylaemyj  simwol  pome-
  }aetsq w R0, ili w R0 i ukazannu` q~ejku.

       format makrokomandy:

          .TTYIN   CHAR
          .TTINR

  gde

  CHAR   - adres pamqti, kuda peresylaetsq simwol iz R0.

  esli argument CHAR ne ukazan, to simwol ostaetsq w mlad{em bajte R0.

  makrokomanda .TTYIN ras{irqetsq w posledowatelxnostx:

          emt   340
          BCS   .-2

  A .ttINR kak

           emt   340

       pri rabote .ttYIN wypolnenie  osnownoj  programmy  priostanawli-
  waetsq do teh por, poka simwol ne  budet  wweden.  pri  ispolxzowanii
  .TTINR, esli net znaka na wwod (bit 12 JSW rawen 1) ili  stroki  (bit
  12 JSW rawen 0) na wwod, to wypolnqetsq  wozwrat  iz  makrokomandy  s
  ustanowlennym bitom "s". sleduet imetx  wwidu,  ~to  pod  uprawleniem
  RT11FB(3)(4) makrokomanda .ttINR ne budet ustanawliwatx bit "s", esli
  predwaritelxno ne ustanowlen bit 6 w JSW.

       ispolxzuq bit 12 w JSW, movno uprawlqtx rabotoj sistemnogo  ter-
  minala (sm. p. 6.1.2)

       |tot bit polxzowatelx dolven ustanawliwatx sam. pri  wozwra}enii
  uprawleniq sisteme on sbrasywaetsq. kombinacii <CTRL/F> i <CTRL/B> ne
  zawisqt ot bita 12.

       kombinacii <CTRL/S> i  <CTRL/Q>  ne  budut  funkcionirowatx  kak
  oby~no, esli byla wypolnena komanda (dlq  RT11FB  i  RT11XM)  SET  TT
  NOPAGE.


       pRIME^ANIE. makrokomanda .TTYIN ne s~itywaet dannyh iz komandno-
  go fajla. esli pri ispolxzowanii komandnyh  fajlow  neobhodima  takaq
  funkciq, ispolxzuetsq makrokomanda .GTLIN.

                                 - 66 -




       o{ibki odinakowy dlq oboih revimow:

           kod              poqsnenie

            0     w kolxcewom bufere wywoda net simwolow.

       primer priweden pri opisanii makrokomandy .TTYOUT (p. 7.2.3).



       7.2.3. makrokomandy .TTYOUT/.TTOUTR



       sistemnye makrokomandy .TTYOUT i .TTOUTR wypolnq`t pereda~u sim-
  wolow iz R0 na sistemnyj terminal.

       raznica mevdu nimi w tom, ~to w slu~ae, esli w  bufere  monitora
  net mesta dlq simwola iz R0,  to  makrokomanda  .TTYOUT  priostanowit
  wypolnenie wsej programmy polxzowatelq i budet ovidatx poqwlenie swo-
  bodnoj q~ejki, w to wremq kak makrokomanda .TTOUTR prodolvit wypolne-
  nie programmy, dave esli simwol ne peredan iz R0 w monitor.

       format makrokomandy:

          .TTYOUT   CHAR
          .TTOUTR

  gde

  CHAR   - adres q~ejki, soderva}ej simwol, kotoryj budet zagruven w R0
           i peredan w monitor.

  esli argument CHAR ne ukazan, to w monitor budet peredano  sodervimoe
  R0.

       esli posle wypolneniq makrokomandy .TTOUTR bit  "s"  ustanowlen,
  |to ozna~aet, ~to w bufere net mesta, i simwol ne byl wyweden.  kogda
  w sisteme funkcioniruet RT11FB ili 3, .TTOUTR  ne  ustanawliwaet  bit
  perenosa, wmesto |togo programma blokiruetsq  do  teh  por,  poka  ne
  oswoboditsq mesto w bufere wywoda. esli neobhodimo izbevatx  podobnu`
  situaci`, t.e. prodolvitx wypolnenie programmy  i  imetx  wozmovnostx
  ustanawliwatx bit "s", to neobhodimo ustanowitx bit  6  w  JSW  pered
  wypolneniem makrokomandy .TTOUTR.


       pRIME^ANIE. esli operatiwnaq programma ostawit bit 6 w JSW usta-
  nowlennym, to l`bye posledu`}ie makrokomandy .TTYIN i .TTYOUT  zablo-
  kiru`t fonowu` programmu. poskolxku kavdaq programma imeet swoe  JSW,
  oni mogut nezawisimo drug ot druga nahoditxsq w raznyh revimah raboty
  s sistemnym terminalom.

       o{ibki:

          kod              poqsnenie

           0     cikli~eskij bufer wywoda zapolnen.

                                 - 67 -




       primer.

          .MCALL  .EXIT,.TTYIN,.TTYOUT,.TTINR,.TTOUTR
   ST:     MOV    #BUFF,R1
           CLR    R2
           BIS    #100,@#44        ;ustanowitx bit 6
   INLOOP:.TTINR                   ;wwesti simwoly
                                   ;s terminala
           BCS    NOCHAR
   CHRIN:  MOVB   R0,(R1)+         ;zapisatx simwol w bufer
           INC    R2               ;uweli~itx s~et~ik
           CMP    R0,#12
           BNE    INLOOP
           MOV    #BUFF,R1
   OUTLOP: MOVB   (R1),R0          ;zanesti simwol w R0
          .TTOUTR                  ;raspe~atatx ego
           BCS    NOROOM           ;net mesta dlq wyhodnogo
                                   ;bufera
   CHROUT: DEC    R2               ;umenx{itx s~et~ik
           BEQ    ST
           INC    R1               ;sdwinutx ukazatelx
                                   ;bufera i pe~atatx
           BR     OUTLOP           ;sledu`}ij simwol
   NOCHAR:.TTINR                   ;periodi~eskaq prowerka
           BCC    CHRIN            ;na nali~ie simwola
           NOP
           NOP
            .
            .
            .
           NOP
           BR     NOCHAR
   NOROOM: MOVB   (R1),R0          ;periodi~eskaq popytka
          .TTOUTR                  ;wywesti simwol
           BCC    CHROUT
   TYPETT: BIC    #100,@#44        ;wosstanowitx bit 6
          .ttYOUT (R1)             ;wywesti simwol
           BIS    #100,@#44
           BR     CHROUT
   BUFF:  .BLKW   100.
          .END    ST



       7.2.4. makrokomanda .WaIt



       sistemnaq makrokomanda .WaIt priostanawliwaet  wypolnenie  prog-
  rammy do zawer{eniq operacij wwoda/wywoda po ukazannomu kanalu.

       format makrokomandy:

           .WaIt snaN

  gde

  snaN   - nomer kanala wwoda/wywoda.

                                 - 68 -




       format registra R0:

                    !--------!--------!
        R0 =>       !    0   !  CHAN  !
                    !--------!--------!

       makrokomanda  .WaIt,  ispolxzuemaq  sowmestno  s  makrokomandami
  .ReaD/.WRIte,  pozwolqet  osu}estwitx  dwojnu`  buferizaci`  processa
  wwoda/wywoda.

       makrokomanda .WaIt peredaet polxzowatel` informaci`  ob  o{ibkah
  apparatury w operacii wwoda/wywoda.

       w  Fw-monitore  wypolnenie  makrokomandy  .WaIt  pri   operaciqh
  wwoda/wywoda wyzowet priostanowku odnoj programmy i wypolnenie  (esli
  wozmovno) drugoj.

       o{ibki:

          kod              poqsnenie

           0     kanal ne otkryt;

           1     w operacii wwoda/wywoda byla apparatnaq
                 o{ibka.

       primer priweden pri opisanii makrokomandy .MRKT (p. 7.5.4).



       7.2.5. makrokomandy .WRIte/.WRIts/.WRItW



       dannye makrokomandy obespe~iwa`t pereda~u ukazannogo  koli~estwa
  slow iz pamqti po ukazannomu kanalu.


       pRIME^ANIE. pri ispolxzowanii  zaprosow  tipa  .ReaD/.WRIte  dlq
  bufernyh operacij  wwoda/wywoda  neobhodimo  wydelqtx  dopolnitelxnye
  |lementy o~eredi pri pomo}i makrokomandy .QSet.

       o{ibki odinakowy dlq wseh treh revimow:

          kod              poqsnenie

           0     popytka zapisi posle konca fajla;

           1     o{ibka apparatury;

           2     kanal ne otkryt.

                                 - 69 -




       7.2.5.1. makrokomanda .WRIte



       wypolnqet pereda~u ukazannogo koli~estwa slow iz pamqti po kana-
  lu CHAN. uprawlenie peredaetsq  programme  polxzowatelq  srazu  posle
  togo, kak zapros postawlen w o~eredx. nazna~enie kanala  proizwoditsq
  pri pomo}i makrokomand .LOOKUP i .ENTER

       format makrokomandy:

           .WRIte   aRea,snaN,wUF,WsNt,wLk

  gde

  AREA   - adres tablicy argumentow EMT iz 5 slow;

  CHAN   - nomer kanala;

  wUF    - adres bufera wywoda;

  WsNt   - koli~estwo peredawaemyh slow;

  wLk    - nomer zapisywaemogo bloka; dlq ustrojstw s fajlowoj  organi-
           zaciej - |to blok otnositelxno na~ala fajla; esli ustrojstwo
           otkryto, kak ustrojstwo  s  nefajlowoj  strukturoj,  to  |to
           absol`tnyj nomer bloka na ustrojstwe.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !   11   !  CHAN  !
                    !--------!--------!
                    !       BLK       !
                    !-----------------!
                    !       BUF       !
                    !-----------------!
                    !      WCNT       !
                    !-----------------!
                    !        1        !
                    !-----------------!



       7.2.5.2. makrokomanda .WRIts



       peredaet neobhodimoe koli~estwo slow  iz  pamqti  po  ukazannomu
  kanalu. uprawlenie  wozwra}aetsq  programme  polxzowatelq  nemedlenno
  posle togo, kak zapros  postawlen  w  o~eredx.  wypolnenie  programmy
  polxzowatelq prodolvaetsq do okon~aniq wywoda, zatem uprawlenie pere-
  daetsq podprogramme zawer{eniq, po instrukcii RtS rs  w  podprogramme
  zawer{eniq uprawlenie peredaetsq w prerwannu` programmu polxzowatelq.

       format makrokomandy:

           .WRIts   aRea,snaN,wUF,WsNt,sRtN,wLk


                                 - 70 -




  gde

  AREA   - adres tablicy argumentow EMT iz 5 slow;

  CHAN   - nomer kanala;

  wUF    - adres bufera wywoda;

  WsNt   - dlina bufera w slowah;

  sRtN   - adres podprogrammy zawer{eniq;

  wLk    - nomer zapisywaemogo bloka; dlq ustrojstw s fajlowoj  organi-
           zaciej - |to blok otnositelxno na~ala fajla; esli ustrojstwo
           otkryto, kak ustrojstwo  s  nefajlowoj  strukturoj,  to  |to
           absol`tnyj nomer bloka na ustrojstwe.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !   11   !  CHAN  !
                    !--------!--------!
                    !       BLK       !
                    !-----------------!
                    !       BUF       !
                    !-----------------!
                    !      WCNT       !
                    !-----------------!
                    !      CRTN       !
                    !-----------------!


       pRIME^ANIE. dlq makrokomandy .WRITC dejstwitelxny wse sogla{eniq
  i prime~aniq, kasa`}iesq makrokomandy .READC.



       7.2.5.3. makrokomanda .WRItW



       |ta makrokomanda peredaet ukazannoe koli~estwo slow iz pamqti po
  ukazannomu kanalu. uprawlenie wozwra}aetsq w  programmu  polxzowatelq
  posle zawer{eniq wywoda.

       format makrokomandy:

           .WRItW   aRea,snaN,wUF,WsNt,wLk

  gde

  AREA   - adres tablicy argumentow EMT iz 5 slow;

  CHAN   - nomer kanala;

  wUF    - adres bufera wywoda;

  WsNt   - dlina bufera w slowah;

                                 - 71 -




  wLk    - nomer zapisywaemogo bloka; dlq ustrojstw s fajlowoj  organi-
           zaciej - |to blok otnositelxno na~ala fajla; esli ustrojstwo
           otkryto, kak ustrojstwo  s  nefajlowoj  strukturoj,  to  |to
           absol`tnyj nomer bloka na ustrojstwe.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !   11   !  CHAN  !
                    !--------!--------!
                    !       BLK       !
                    !-----------------!
                    !       BUF       !
                    !-----------------!
                    !      WCNT       !
                    !-----------------!
                    !        0        !
                    !-----------------!

       w sledu`}em primere s ispolxzowaniem .READW i .WRITW wywod  pol-
  nostx` sinhronen. programma ne wypolnqetsq  do  teh  por,  poka  wesx
  bufer ne budet zapolnen ili o~i}en.

       primer.

          .MCALL  .FETCH,.READW,.WRITW,.ENTER,.LOOKUP,.PRINT
          .MCALL  .EXIT,.CLOSE
           ERRWD = 52
   ST:    .FETCH  #HSPACE,#PCNAME    ;zagruzitx drajwer PC
           BCS    FERR
           MOV    #AREA,R5           ;obl. argumentow emt
           CLR    R4                 ;R4 = kanal wywoda 0
           MOV    #1,R3              ;R3 = kanal wwoda 1
          .ENTER  R5,R4,#PCNAME      ;otkrytx fajl
           BCS    ENERR
          .LOOKUP R5,R3,#PCNAME
           BCS    LKERR
           CLR    R1                 ;R1 - nomer bloka
   LOOP:  .READW  R5,R3,#BUFF,#256.,R1 ;s~itatx blok
           BCS    RDERR
          .WRITW  R5,R4,#BUFF,#256.,R1 ;zapisatx ego
           BCS    WTERR
           INC    R1                 ;uweli~itx s~et~ik
           BR     LOOP
   RDERR:  TSTB   ERRWD              ;|to EOF ?
           BEQ    1$                 ;da
          .PRINT  #RDMSG
   1$:    .EXIT
   WTERR: .PRINT  #WTMSG
          .EXIT
   PCNAME:.RAD50  /PC/               ;dlq PC ne nuvno imq
          .WORD   0                  ;fajla, ono - 0
   FERR:  .PRINT  #FEMSG
          .EXIT
   eNERR: .PRINT  #ENMSG
          .EXIT
   LKERR: .PRINT  #LKMSG
          .EXIT
   FEMSG: .ASCIZ  /sdelatx "INSTALL PC"/

                                 - 72 -




   ENMSG: .ASCIZ  /o{ibka ENTER/
   LKMSG: .ASCIZ  /o{ibka LOOKUP/
   RDMSG: .ASCIZ  /o{ibka READ/
   WTMSG: .ASCIZ  /o{ibka WRITE/
          .EVEN
   AREA:  .BLKW   10
   BUFF:  .BLKW   256.
   HSPACE = .
          .END    ST

  |ta ve programma movet bytx  napisana  s  ispolxzowaniem  makrokomand
  .READC i .WRITC. makrokomandy wypolnqt na~alxnu` ~astx  wwoda/wywoda,
  a podprogrammy zawer{eniq obrabota`t ostaw{u`sq ~astx.

          .MCALL  .PRINT,.EXIT,.FETCH,.ENTER,.LOOKUP
          .MCALL  .CLOSE,.READC,.WRITC,.WAIT
           ERRWD = 52
   ST:    .FETCH  #AREA,#PCNAME      ;zagruzitx drajwer PC
           BCS    FERR
   FLNK:   MOV    #AREA,R5           ;Obl. argumentow emt
          .ENTER  R5,#1,#PCNAME      ;otkrytx fajl
           BCS    ENERR
          .LOOKUP R5,#0,#PCNAME
           BCS    LKERR
           CLR    R1                 ;R1 = nomer bloka
   LOOP:   CLR    DFLG               ;sbros flaga wyp./o{ib.
          .READC  R5,#0,#BUFF,#256.,RDCOMP,R1 ;s~itatx blok
           BCS    EOF
   1$:     TST    DFLG               ;flag ustanowlen ?
           BEQ    1$                 ;net
           BMI    IOERR              ;da
   EOF:   .CLOSE  #1
          .EXIT
   RDCOMP: ROR    R0               ;bit s ustanowlen, zna~it
           BCS    RWERR            ;wstretilasx o{ibka
          .WRITC  R5,#0,#BUFF,#256.,#WRCOMP,BLKN ;zapisatx
                                     ;blok
           BCC    RTS
   RWERR:  MOV    #-1,DFLG           ;flag o{ibki
   RTS:    RTS    PC
   WRCOMP: ROR    R0
           BCS    RWERR              ;o{ibka apparatury
           INC    BLKN
          .READC  R5,#1,#BUFF,#256.,#RDCOMP,BLKN
           BCC    3$
           TSTB   ERRWD
           BNE    RWERR              ;net
           INC    DFLG
   3$:     RTS    PC
   FERR:   MOV    #FMSG,R0
           BR     TYPIT
   IOERR:  mOV    #IOMSG,R0
           BR     TYPIT
   LKERR:  MOV    #LMSG,R0
           BR     TYPIT
   ENERR:  MOV    #EMSG,R0
   TYPIT: .PRINT
          .EXIT
   FMSG:  .ASCIZ  /sdelatx "INSTALL PC"/

                                 - 73 -




   EMSG:  .ASCIZ  /o{ibka ENTER/
   LMSG:  .ASCIZ  /o{ibka LOOKUP/
   IOMSG: .ASCIZ  !o{ibka wwoda/wywoda!
          .EVEN
   DFLG:  .WORD   0
   PCNAME:.RAD50  /PC/
          .WORD   0
   BLKN:  .WORD   0
   AREA:  .BLKW   10
   BUFF:  .BLKW   256.
   HSPACE = .
         .END     ST



       7.2.6. makrokomanda .rRINt



       |ta makrokomanda prednazna~ena dlq wywoda stroki teksta na  sis-
  temnyj terminal.

       format makrokomandy:

           .rRINt   aDDR

  gde

  ADDR   - adres raspe~atywaemoj stroki.

       stroka, wydawaemaq na pe~atx, movet  okan~iwatxsq  libo  nulewym
  bajtom, libo bajtom so  zna~eniem  <200>.  esli  stroka  okan~iwaetsq
  nulewym bajtom, to awtomati~eski dobawlqetsq  <CR><LF>.  esli  stroku
  zakan~iwaet bajt <200>, to wyda~a <CR><LF> ne proizwoditsq.

       pri wypolnenii operatiwnoj  (fonowoj)  programmy  pered  wywodom
  teksta na sistemnyj terminal sna~ala pe~ataetsq soob}enie F> (w>),  a
  za nim sleduet tekst stroki.

       uprawlenie wozwra}aetsq programme polxzowatelq posle  razme}eniq
  w bufere wywoda wseh wywodimyh simwolow.

       operatiwnaq programma, ispolxzuq sistemnu` makrokomandu  .rRINt,
  wydaet soob}enie nezawisimo ot sostoqniq  fonowogo  zadaniq.  po|tomu
  dlq sro~nyh soob}enij udobnee ispolxzowatx makrokomandu  .rRINt,  ~em
  .ttOUTR ili .ttYoUt.

       o{ibki otsutstwu`t.

       primer priweden pri opisanii makrokomandy .CHCOPY (p. 7.3.2).

                                 - 74 -




       7.2.7. makrokomanda .SPFUN



       |ta sistemnaq makrokomanda ispolxzuetsq drajwerami ustrojstw dlq
  wypolneniq specialxnyh funkcij,  zawisq}ih  ot  ustrojstw.  naprimer,
  obratnaq peremotka magnitnoj lenty.

       format makrokomandy:

           .SrFUN   aRea,snaN,FUNC,wUF,WsNt,wLk,sRtN

  gde

  aRea   - blok argumentow emt iz {esti slow;

  snaN   - nomer kanala;

  FUNs   - kod funkcii, kotoru` neobhodimo wypolnitx;

  wUF    - adres bufera;

  WsNt   - |tot argument qwlqetsq specifi~nym dlq  kavdogo  konkretnogo
           drajwera i, wozmovno, budet zawisetx ot ukazannoj funkcii;

  wLk    - dannyj argument ispolxzuetsq analogi~no argumentu WCNT;

  sRtN   - to~ka whoda w podprogrammu zawer{eniq; kogda  |tot  argument
           propu}en, to awtomati~eski zanositsq nolx; esli sRtN=0 revim
           analogi~en .ReaDW; esli sRtN=1 revim analogi~en .ReaD;  esli
           sRtN>500, to |to adres podprogrammy zawer{eniq.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !   32   !  CHAN  !
                    !--------!--------!
                    !       BLK       !
                    !-----------------!
                    !       BUF       !
                    !-----------------!
                    !      WCNT       !
                    !-----------------!
                    !       377       !
                    !-----------------!
                    !      CRTN       !
                    !-----------------!

       argumenty wLk, snaN i WCNT mogut opredelqtxsq tak  ve,  kak  dlq
  operacii .ReaD/.WRIte.

  makrokomanda .SPFUN daet wozmovnostx wypolnqtx funkcii, priwedennye w
  tabl. 2:

                                 - 75 -




                                                 tablica 2
  ----------------------------------------------------------
        funkciq          ! MT  ! CT  ! DX  ! DM  ! DY  ! DL
  ----------------------------------------------------------
  peremotka wpered do    !     !     !     !     !     !
  poslednego fajla       !     ! 377 !     !     !     !
                         !     !     !     !     !     !
  peremotka wpered do    !     !     !     !     !     !
  poslednego bloka       !     ! 376 !     !     !     !
                         !     !     !     !     !     !
  peremotka wpered do    !     !     !     !     !     !
  sledu`}ego fajla       !     ! 375 !     !     !     !
                         !     !     !     !     !     !
  peremotka wpered do    !     !     !     !     !     !
  sledu`}ego bloka       !     ! 374 !     !     !     !
                         !     !     !     !     !     !
  peremotka do to~ki     !     !     !     !     !     !
  zagruzki               ! 373 ! 373 !     !     !     !
                         !     !     !     !     !     !
  zapisatx mevfajlowyj   !     !     !     !     !     !
  promevutok             !     ! 372 !     !     !     !
                         !     !     !     !     !     !
  zapisatx EOF           ! 377 !     !     !     !     !
                         !     !     !     !     !     !
  peremotka wpered na    !     !     !     !     !     !
  odnu zapisx            ! 376 !     !     !     !     !
                         !     !     !     !     !     !
  peremotka nazad na     !     !     !     !     !     !
  odnu zapisx            ! 375 !     !     !     !     !
                         !     !     !     !     !     !
  zapisx                 ! 371 !     ! 376 ! 376 ! 376 !
                         !     !     !     !     !     !
  ~tenie                 ! 370 !     ! 377 ! 377 ! 377 !
                         !     !     !     !     !     !
  zapisx s ras{irennym   !     !     !     !     !     !
  mevfajlowym promevutkom! 374 !     !     !     !     !
                         !     !     !     !     !     !
  obratnaq peremotka     !     !     !     !     !     !
  w awtonomnom revime    ! 372 !     !     !     !     !
                         !     !     !     !     !     !
  zapisx so stiraniem    !     !     !     !     !     !
  markera dannyh         !     !     ! 375 !     ! 375 !
                         !     !     !     !     !     !
  ~tenie drajwerom       !     !     !     !     !     !
  tablicy raspoloveniq   !     !     !     !     !     !
  plohih blokow iz       !     !     !     !     !     !
  bloka 1 diska          !     !     !     ! 374 !     ! 374
                         !     !     !     !     !     !
  wozwra}enie razmera    !     !     !     !     !     !
  drajwera               !     !     !     ! 373 ! 373 ! 373

       ~toby ispolxzowatx zapros .SPFUN, drajwer  dolven  nahoditxsq  w
  pamqti, i kanal dolven bytx swqzan s fajlom zaprosom .LOOKUP.

       zapros .SPFUN dlq zapisi absol`tnyh blokow  na  gibkij  disk  ne
  dolven ni~ego zapisywatx na nulewu` dorovku, esli budet ispolxzowatx-
  sq komanda DUP ili COPY/DEVICE dlq poddervki nositelq. DUP ne zapisy-
  waet datu na nulewu` dorovku. takve, nuvno sleditx za tem, ~toby pra-
  wilxno byl ukazan adres bufera i koli~estwo slow.  monitor  prowerqet

                                 - 76 -




  nahoditsq  li  argument  BUF  w  rabo~ej  oblasti,  no  ne  prowerqet
  BUF+WCNT. esli ispolxzowatx zapros .SPFUN i drajwer ustrojstwa, koto-
  ryj ne podderviwaet specialxnyh funkcij, wyzow wozwra}aetsq  w  prog-
  rammu, ne ob'qwlqq ob o{ibke.

       dlq drajwera diska tipa RK06/07 (DM)  kody  specialxnyh  funkcij
  377 i 376 trebu`t razmera bufera na odno slowo bolx{e, ~em neobhodimo
  dlq dannyh. perwoe slowo bufera sodervit informaci` ob o{ibke,  wozw-
  ra}ennu` kak rezulxtat raboty zaprosa .SPFUN.  dannye,  peredannye  w
  rezulxtate zaprosa ~teniq ili zapisi, nahodqtsq wo wtorom i sledu`}ih
  slowah bufera.

  kody o{ibok:

      kod                 zna~enie

    100000        operaciq wwoda/wywoda pro{la uspe{no;

    100200        obnaruven plohoj blok (o{ibka BSE);

    100001        ECC o{ibka isprawlena;

    100002        o{ibka pri powtornoj popytke wypolneniq
                  operacii;

    100004        o{ibka pri popytke nowogo sme}eniq;

    100010        o{ibka posle razmetki nositelq;

    1774XX        o{ibka ne obnaruvena.


  o{ibki:

     kod              poqsnenie

      0       popytka ~teniq ili zapisi za koncom fajla;

      1       w kanale poqwilasx apparatnaq o{ibka;

      2       kanal ne otkryt.



       pRIME^ANIE. pered wypolneniem makrokomandy .SPFUN drajwer  soot-
  wetstwu`}ego ustrojstwa dolven bytx zagruven w pamqtx. dlq  magnitnoj
  lenty mm: kody polnostx` sowpada`t s kodami dlq mt:.

       sleduet otmetitx, ~to kod funkcii zanimaet tolxko  odin  bajt  i
  ego zna~enie wsegda otricatelxno. dopustimye zna~eniq koda ne wyhodqt
  za predely ot -1 do -128 desqti~nyh (ot 377 do 200 wosxmeri~nyh).

       w sledu`}em primere programma  proizwodit  peremotku  kassety  i
  zapisywaet blok w 256 slow i mevfajlowyj promevutok.

       primer.

          .MCALL  .PRINT,.FETCH,.LOOKUP,.SPFUN
          .MCALL  .WRITW,.EXIT,.WAIT,.CLOSE

                                 - 77 -




   ST:    .FETCH  #HSPC,#CT          ;zagruzitx drajwer st
           BCS    FERR
          .LOOKUP #AREA,#4,#CT
           BCS    LKERR
          .SPFUN  #AREA,#4,#373,#0   ;peremotatx sinhronno
           BCS    SERR
          .WRITW  #AREA,#4,#BUFF,#256.,BLK
           BCS    WTERR
          .SPFUN  #AREA,#4,#372,#1   ;zapisx mevfajlowogo
                                     ;promevutka
          .PRINT  #DONE
          .WAIT   #4
          .CLOSE  #4
          .EXIT
   AREA:  .BLKW   10
   FERR:  .PRINT  #FMSG
          .EXIT
   LKERR: .PRINT  #LKMSG
          .EXIT
   SERR:  .PRINT  #SMSG
          .EXIT
   WTERR: .PRINT  #WTMSG
          .EXIT
   DONE:  .ASCIZ  /konec raboty/
   FMSG:  .ASCIZ  /o{ibka FETCH/
   LKMSG: .ASCIZ  /o{ibka LOOKUP/
   SMSG:  .ASCIZ  /o{ibka SPFUN/
   WTMSG: .ASCIZ  /o{ibka WRITW/
          .EVEN
   CT:    .RAD50  /CT/
          .WORD   0,0,0
   BUFF:  .BLKW   256.
   BLK:   .WORD   0
   HSPC = .
          .END    ST



       7.3. rabota s kanalami



       dannaq gruppa makrokomand ispolxzuetsq dlq polu~eniq  sprawo~noj
  informacii o kanalah, kopirowaniq informacii iz odnogo kanala w  dru-
  goj, powtornogo otkrytiq kanala, oswobovdeniq kanala.



       7.3.1. makrokomanda .sDFN



       sistemnaq makrokomanda .sDFN ispolxzuetsq dlq  uweli~eniq  ~isla
  kanalow wwoda/wywoda.

       format makrokomandy:

                           .sDFN aRea,aDDR,NUm


                                 - 78 -




  gde

  aRea   - adres tablicy argumentow emt, sostoq}ej iz treh slow;

  aDDR   - adres bufera dlq razme}eniq kanalow wwoda/wywoda;

  NUm    - koli~estwo dopolnitelxnyh kanalow wwoda/wywoda.

       format tablicy argumentow emt:

                    !--------!--------!
        R0 => AREA: !   15   !   0    !
                    !--------!--------!
                    !      ADDR       !
                    !-----------------!
                    !       NUM       !
                    !-----------------!

       kavdoe zadanie, operatiwnoe ili fonowoe, perwona~alxno obespe~i-
  waetsq 16 (desqti~noe) kanalami wwoda/wywoda, ime`}imi nomera s 0  po
  15. s pomo}x` dannoj makrokomandy ~islo kanalow movet bytx  uweli~eno
  do 256 (desqti~noe).

       pamqtx, ispolxzuemaq dlq razme}eniq nowyh kanalow  wwoda/wywoda,
  rezerwiruetsq w programme  polxzowatelq.  kavdyj  kanal  wwoda/wywoda
  trebuet 5 slow pamqti (7 slow dlq RT11XM). esli koli~estwo opredelqe-
  myh kanalow rawno N, to polxzowatelx dolven zarezerwirowatx  dlq  nih
  5*N slow pamqti (7*N dlq RT11XM), na~inaq s adresa ADDR.

       rekomenduetsq ispolxzowatx makrokomandu .sDFN w na~ale  program-
  my, pered wypolneniem operacii wwoda/wywoda.

       makrokomanda .sDFN opredelqet tolxko nowye kanaly; ranee oprede-
  lennye kanaly ne ispolxzu`tsq, no sodervimoe staryh kanalow peredaet-
  sq w nowye. popytka umenx{itx koli~estwo kanalow priwedet k soob}eni`
  ob o{ibke.

       esli ispolxzuetsq neskolxko makrokomand  .sDFN,  bufera  kanalow
  dolvny na~inatxsq libo s odnoj i toj ve q~ejki, libo woob}e ne perek-
  rywatxsq.

       esli programma ispolxzuet owerlejnu` strukturu, 15 kanal ne dol-
  ven izmenqtxsq, t.k. ispolxzuetsq drajwerom owerleew.  drugie  kanaly
  mogut bytx opredeleny i ispolxzowany kak oby~no.

       makrokomandy .SReSet i .nReSet  otmenq`t  dejstwie  makrokomandy
  .CDFN i ustanawliwa`t ishodnye 16 kanalow, opredelennye  pri  zapuske
  programmy.

       o{ibki:

          kod              poqsnenie

           0     sdelana popytka opredelitx menx{e kanalow,
                 ~em uve estx. wozmovno sdelana popytka w
                 RT11XM razmestitx tablicu opisaniq kanalow
                 w oblasti dejstwiq perwogo registra aktiwnyh
                 stranic dispet~era pamqti.


                                 - 79 -




       w primere opredelqetsq sna~ala 25. kanalow, zatem  30.  kanalow.
  pri popytke opredelitx 20. kanalow woznikaet o{ibka, t.k. ranee  bylo
  opredeleno bolx{ee koli~estwo kanalow. na sistemnyj terminal wyda`tsq
  soob}eniq.

       primer.

          .MCALL  .CDFN,.PRINT,.HRESET,.EXIT
   START: .CDFN   #AREA,#CHANL,#25.  ;opredelitx 25. kanalow
           BCS    ERR
          .PRINT  #MSG               ;pe~atx soob}eniq
          .CDFN   #AREA,#CHANL,#30.  ;opredelitx 30. kanalow
           BCS    ERR
          .PRINT  #MSG               ;pe~atx soob}eniq
          .CDFN   #AREA,#CHANL,#20.  ;opredelitx 20. kanalow
           BCC    ERR1
          .PRINT  #MSG
   CONT:  .HRESET                    ;wozwrat k 16. kanalam
          .CDFN   #AREA,#CHANL,#20.  ;opredelitx 20. kanalow
           BCS    ERR
          .PRINT  #MSG               ;pe~atx soob}eniq
          .EXIT
   ERR:   .PRINT  #MSG1
          .EXIT
   ERR1:  .PRINT  #MSG1
           BR     CONT
   AREA:  .BLKW   3                  ;blok argumentow emt
   MSG:   .ASCIZ  /kanaly opredeleny/
   MSG1:  .ASCIZ  /o{ibka .CDFN/
          .EVEN
   CHANL: .BLKW   30.*5              ;oblastx dlq kanalow
          .END    START



       7.3.2. makrokomanda .snsorY (RT11FB ili RT11XM)



       sistemnaq makrokomanda .snsorY otkrywaet nowyj kanal dlq  opera-
  cii wwoda, logi~eski swqzywaq ego s fajlom, w dannyj  moment  nahodq-
  }imsq w otkrytom sostoqnii w drugom razdele.

       makrokomandu .snsorY movno primenqtx kak  dlq  fonowogo  revima,
  tak i dlq operatiwnogo, no ona dolvna  wypolnqtxsq  do  ispolxzowaniq
  sistemnyh makrokomand .ReaD i .WRIte.

       format makrokomandy:

                   .snsOPY   AREA,CHAN,OsnaN[,JOBBLK]

  gde

  AREA   - adres tablicy argumentow emt, sostoq}ej iz treh slow;

  CHAN   - kanal, kotoryj budet ispolxzowatxsq programmoj dlq  s~itywa-
           niq dannyh;

  OCHAN  - nomer kanala w drugoj programme, kotoryj budet kopirowatxsq;

                                 - 80 -




  JOBBLK - ukazatelx na trehslownoe  logi~eskoe  imq  zadaniq  (w  kode
           koi-7), sootwetstwu`}ee sistemnomu zadani`.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !   13   !  CHAN  !
                    !--------!--------!
                    !      OCHAN      !
                    !-----------------!
                    !     JOBBLK      !
                    !-----------------!

       esli kanal osnaN w odnoj programme byl otkryt posredstwom makro-
  komandy .eNteR pri sozdanii fajla FILe1, to posle wypolneniq makroko-
  mandy .snsorY w drugoj programme kanal snaN  budet  swqzan  s  fajlom
  FILe1.

       esli  w  |tom  slu~ae  wtoraq  programma  wypolnit  makrokomandu
  .CLOSE, to FILE1 ne  stanet  postoqnnym  (ostanetsq  wremennym).  dlq
  togo, ~toby fajl stal postoqnnym, perwaq programma tove dovna  wypol-
  nitx makrokomandu .CLOSE.

       makrokomanda .snsorY dopustima tolxko dlq ustrojstw s  katalogo-
  woj organizaciej; pri ispolxzowanii drugih ustrojstw ona  ignoriruet-
  sq.


       pRIME^ANIE. ~toby zakrytx kanal,  otkrytyj  s  pomo}x`  .CHCOPY,
  nuvno primenitx makrokomandy .sLoSe libo .rURGe.

       o{ibki:

          kod              poqsnenie

           0         net drugoj programmy, kanalow
                     opredeleno nedostato~no ili ukazannyj
                     kanal (OsnaN) ne otkryt;

           1         kanal snaN uve otkryt.

       w operatiwnoj programme kanal 1 otkryt dlq  fajla  PRINT.SAV.  w
  fonowoj programme makrokomanda .CHCOPY kopiruet |tot fajl  po  kanalu
  0, a zatem fajl s~itywaetsq w oblastx BUFF i raspe~atywaetsq na  sis-
  temnyj terminal. skopirowatx |tot fajl po kanalu 2 nelxzq, t.k.  |tot
  kanal byl otkryt ranee.

       w sledu`}em primere predstawlena programma, rabota`}aq w fonowom
  razdele.

       primer.

          .MCALL  .PRINT,.EXIT,.LOOKUP,.CHCOPY,.SDATW
          .MCALL  .PURGE,.READW
   ST:    .PURGE  #0                 ;o~istitx kanal 0
          .CHCOPY #AREA,#0,#1        ;skopirowatx fajl
                                     ;s kanala 0 po kanalu 1
           BCS    NCH
          .READW  #AREA,#0,#BUFF,#25,#0 ;pro~itatx fajl

                                 - 81 -




           BCS    NRE
          .PRINT  #BUFF              ;raspe~atatx fajl
          .LOOKUP #AREA,#2,#FILE1    ;otkrytx fajl
                                     ;po kanalu 2
           BCS    NLO
          .CHCOPY #AREA,#2,#1        ;skopirowatx fajl
                                     ;s kanala 1 po kanalu 2
           BCS    NCH
          .PRINT  #MSG1
          .SDATW  #AREA,#MSG,#COUNT  ;peredatx soob}enie w
                                     ;operatiwnu` programmu
           BCS    NSD
          .EXIT
   NSD:   .PRINT  #NOS
          .EXIT
   NCH:   .PRINT  #NOCH
          .EXIT
   NRE:   .PRINT  #NORE
          .EXIT
   NLO:   .PRINT  #NOLO
          .EXIT
   NOS:   .ASCIZ  /net zadaniq/
   NOCH:  .ASCIZ  /o{ibka .CHCOPY/
   NORE:  .ASCIZ  /o{ibka .READ/
   NOLO:  .ASCIZ  /o{ibka .LOOKUP/
   MSG:   .ASCIZ  /tik-tok/           ;tekst dlq operatiwnoj
                                      ;programmy
   COUNt = .-MSG
   MSG1:  .ASCIZ  /kanal zanqt/
          .eVEN
   AREA:  .BLKW   10
   FILE1: .RAD50  /SY PRINT SAV/     ;imq ustrojstwa i fajla
   BUFF:  .BLKW   25
          .END    ST

  programma, rabota`}aq w operatiwnom razdele:

          .MCALL  .LOOKUP,.RCVDW,.EXIT,.PRINT
   START1:.LOOKUP #AREA,#1,#FILE     ;otkrytx fajl po
                                     ;kanalu 1
           BCS    NLOO
          .RCVDW  #AREA,#TEXT,#20    ;prinqtx stroku
           BCS    NRC
          .PRINT  #TEXT+2            ;pe~atx polu~ennogo
                                     ;soob}eniq
          .EXIT
   NRC:   .PRINT  #MSG               ;o{ibka .RCVDW
          .EXIT
   NLOO:  .PRINT  #MSG1              ;o{ibka .LOOKUP
          .EXIT
   FILE:  .RAD50  /SY/
          .RAD50  /PRINT/
          .RAD50  /SAV/
   AREA:  .BLKW   10
   TEXT:  .BLKW   20
   MSG:   .ASCIZ  /net zadaniq /
   MSG1:  .ASCIZ  /o{ibka LOOKUP/
          .EVEN
          .END    START1

                                 - 82 -




       7.3.3. makrokomanda .sStat (RT11FB(XM))



       sistemnaq makrokomanda .sStat zapolnqet 6 slow  pamqti  informa-
  ciej o kanale.

       format makrokomandy:

                          .sStat aRea,snaN,aDDR

  gde

  aRea   - adres tablicy argumentow emt, sostoq}ej iz dwuh slow;

  snaN   - nomer kanala, o kotorom trebuetsq informaciq;

  aDDR   - adres bloka iz {esti slow, soderva}ih informaci` o kanale.

       format tablicy argumentow emt:

                    !--------!--------!
        R0 => AREA: !   27   !  CHAN  !
                    !--------!--------!
                    !      ADDR       !
                    !-----------------!

       polxzowatel` peredaetsq:

       slowo 1 - slowo sostoqniq kanala;
       slowo 2 - nomer perwogo bloka fajla;
       slowo 3 - dlina fajla;
       slowo 4 - maksimalxnyj nomer zapisannogo bloka;
       slowo 5 - nomer ustrojstwa;
       slowo 6 - imq ustrojstwa (w RaDIh-50).

       slowo 2 sodervit nolx, esli ustrojstwo s posledowatelxnym dostu-
  pom ili kanal byl otkryt makrokomandami .LookUr ili .eNteR  dlq  ust-
  rojstwa s nefajlowoj strukturoj.

       w slowe 3 informaciq otsutstwuet, esli ustrojstwo  s  nefajlowoj
  strukturoj, a takve, esli kanal byl otkryt makrokomandami .LookUr ili
  .eNteR dlq ustrojstwa s nefajlowoj strukturoj.

       w slowe 4 informaciq otsutstwuet, esli ustrojstwo  s  nefajlowoj
  strukturoj.

       o{ibki:

          kod              poqsnenie

           0     kanal ne otkryt.

       w primere pokazano polu~enie imeni ustrojstwa, swqzannogo s per-
  wym wyhodnym fajlom w komandnoj stroke.

       primer.

                                 - 83 -




          .MCALL  .CSTAT,.CSIGEN,.PRINT,.EXIT
   START: .CSIGEN #DEVSPC,#DEVEXT    ;wwod komandnoj stroki
          .CSTAT  #AREA,#0,#ADDR     ;polu~itx informaci`
                                     ;o 0 kanale
           BCS    ERR
           MOV    #ADDR+10,R5
           MOV    (R5)+,R0
           ADD    (PC)+,R0
          .RAD50  /  0/
           ADD    (R5),R0
           MOV    R0,DEVNAM          ;polu~itx imq ustrojstwa
          .EXIT
   AREA:  .BLKW   5                  ;blok argumentow emt
   ADDR:  .BLKW   6                  ;blok informacii
                                     ;o kanale
   DEVNAM:.WORD   0
   DEVEXT:.WORD   0,0,0,0            ;blok ras{irenij
                                     ;po umol~ani`
   ERR:   .PRINT  #MSG
          .EXIT
   MSG:   .ASCIZ  /kanal ne otkryt/
          .EVEN
   DEVSPC = .                        ;adres zagruzki
                                     ;drajwerow
          .END    START



       7.3.4. makrokomanda .rURGe



       sistemnaq  makrokomanda  .rURGe  ispolxzuetsq  dlq  oswobovdeniq
  kanala bez wypolneniq makrokomand .nReSet, .SReSet,  .SaVeStatUS  ili
  .sLoSe.

       format makrokomandy:

                              .rURGe  snaN

  gde

  CHAN   - nomer kanala (wosxmeri~noe).

       format registra R0:

                    !--------!--------!
        R0 =>       !    3   !  CHAN  !
                    !--------!--------!

       makrokomanda .rURGe oswobovdaet kanal, ne wypolnqq nikakih  dru-
  gih operacij (wremenno sozdannyj fajl terqetsq).

       esli programma imeet owerlejnu`  strukturu,  to  w  makrokomande
  .PURGE nelxzq zadawatx  kanal  17  (wosxmeri~noe),  t.k.  |tot  kanal
  ispolxzuetsq drajwerom perekrytij.

       esli ukazannyj w makrokomande kanal ne zanqt, t.e. ne  swqzan  s
  fajlom, to makrokomanda ignoriruetsq.

                                 - 84 -




       o{ibki otsutstwu`t.

       primer  priweden  pri  opisanii  makrokomandy  .CHCOPY  (sm.  p.
  7.3.2).



       7.3.5. makrokomanda .REOPEN



       makrokomanda .ReoreN swqzywaet ukazannyj  kanal  s  fajlom,  dlq
  kotorogo  byla  wypolnena  makrokomanda  .SaVeStatUS,  takim  obrazom
  proizwodq powtornoe otkrytie |togo fajla.

       format makrokomandy:

                        .ReorEN   aRea,snaN,CBLK

  gde

  AREA   - adres tablicy argumentow emt, sostoq}ej iz dwuh slow;

  snaN   - nomer kanala w interwale 0-377 (wosxmeri~noe);

  CBLK   - adres bloka iz pqti slow s informaciej o sostoqnii kanala.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !    6   !  CHAN  !
                    !--------!--------!
                    !      CBLK       !
                    !-----------------!

       so~etanie makrokomand .ReoreN i .SaVeStatUS udobno  w  teh  slu-
  ~aqh, kogda nuvno odnowremenno obrabotatx bolx{oe  ~islo  fajlow  pri
  ograni~ennom koli~estwe kanalow. neobhodimoe koli~estwo fajlow  movno
  otkrytx makrokomandoj .LOOKUP i sohranitx makrokomandoj  .SAVESTATUS.
  kogda trebu`tsq dannye iz fajla, makrokomanda  .ReoreN  daet  wozmov-
  nostx programme swqzatx fajl, sohranennyj makrokomandoj  .SaVeStatUS,
  so swobodnym kanalom i zatem proizwesti s~itywanie.

       makrokomanda .REOPEN movet ispolxzowatx l`boj kanal,  ne  obqza-
  telxno tot, kotoryj  ispolxzowalsq  ranee  makrokomandami  .LookUr  i
  .SaVeStatUS.

       o{ibki:

          kod          poqsnenie

           0      kanal zanqt.

       primer  priweden  pri  opisanii  makrokomandy  .SAVESTATUS   (p.
  2.3.6).

                                 - 85 -




       7.3.6. makrokomanda .SaVeStatUS



       makrokomanda .SAVESTATUS peredaet 5 slow informacii o  sostoqnii
  kanala w ukazannu` oblastx pamqti, oswobovdaq kanal dlq drugih celej.
  |ti slowa sodervat polnu` informaci`, neobhodimu` sisteme dlq oprede-
  leniq fajla.

       format makrokomandy:

                      .SaVeStatUS   aRea,snaN,CBLK

  gde

  AREA   - adres tablicy argumentow emt, sostoq}ej iz dwuh slow;

  snaN   - nomer kanala;

  CBLK   - adres bloka pamqti (5 slow), gde  sohranqetsq  informaciq  o
           sostoqnii kanala.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !    5   !  CHAN  !
                    !--------!--------!
                    !      CBLK       !
                    !-----------------!

       posle wypolneniq makrokomandy fajl zakrywaetsq i kanal  oswobov-
  daetsq dlq ispolxzowaniq.

       makrokomanda .SaVeStatUS primenqetsq tolxko w tom  slu~ae,  esli
  fajl byl otkryt posredstwom makrokomandy .LookUr. esli fajl byl  otk-
  ryt makrokomandoj .eNteR, to ispolxzowanie  makrokomandy  .SaVeStatUS
  nedopustimo, pri |tom woznikaet o{ibka.

       |ta makrokomanda movet otnositxsq tolxko k tem  fajlam,  kotorye
  nahodqtsq na ustrojstwe s katalogowoj organizaciej.

       w tabl. 3 priwedena informaciq o sostoqnii kanala. simwolom  <*>
  pome~eny bity, poqsneniq k kotorym dany, dlq ustanowlenogo bita.

                                 - 86 -




                                                  tablica 3
  ----------------------------------------------------------
    slowo  !  bit  !           sodervimoe
  ----------------------------------------------------------
      1    !       ! slowo sostoqniq kanala
           !-------!----------------------------------------
           !   0*  ! apparatnaq o{ibka po |tomu kanalu
           !-------!----------------------------------------
           !   1-5 ! indeks w tablicah monitora. opisywaet
           !       ! fizi~eskoe ustrojstwo, swqzannoe s
           !       ! |tim kanalom
           !-------!----------------------------------------
           !    6* ! na kanale wypolnqetsq makrokomanda
           !       ! .ReName
           !-------!----------------------------------------
           !    7* ! w kataloge dolvna proizojti nowaq
           !       ! zapisx makrokomandoj .sLoSe (t.e.
           !       ! |tot bit ustanowlen, esli wypolnena
           !       ! makrokomanda .eNteR)
           !-------!----------------------------------------
           !  8-12 ! nomer segmenta kataloga ot 1 do 37
           !       ! (wosxmeri~nye), w kotorom nahoditsq
           !       ! zapisx o teku}em fajle
           !-------!----------------------------------------
           !   13* ! najden konec fajla
           !-------!----------------------------------------
           !   14  ! ne ispolxzuetsq
           !-------!----------------------------------------
           !   15* ! |tot kanal w dannyj moment zanqt
  ---------!-------!----------------------------------------
      2    !       ! na~alxnyj nomer bloka fajla. nulx, esli
           !       ! ustrojstwo posledowatelxnogo dostupa
  ---------!-------!----------------------------------------
      3    !       ! dlina fajla (w blokah po 256 slow)
  ---------!-------!----------------------------------------
      4    !       ! ne ispolxzuetsq
  ---------!-------!----------------------------------------
      5    !       ! ~etnyj bajt: koli~estwo nezawer{ennyh
           !       ! operacij wwoda/wywoda po kanalu
           !       ! (dlina o~eredi)
           !       ! ne~etnyj bajt: nomer ustrojstwa,
           !       ! swqzannogo s kanalom (ot 0 do 7)


       so~etanie makrokomand .SaVeStatUS/.ReoreN o~enx udobno, no neob-
  hodimo sobl`datx nekotorye mery predostorovnosti:

       1) esli posle wypolneniq makrokomandy .SaVeStatUS fajl byl  uda-
  len do makrokomandy .ReoreN, to wypolnennaq w |tot moment makrokoman-
  da .eNteR movet ispolxzowatx oblastx  |togo  fajla  kak  swobodnu`  i
  izmenitx ee sodervimoe; posle |togo sodervimoe fajla nelxzq wosstano-
  witx;

       2) pri wypolnenii  makrokomandy  .ReoreN  prisutstwie  w  pamqti
  drajwera  sootwetstwu`}ego  ustrojstwa  neobqzatelxno;  odnako,  esli
  wypolnq`tsq makrokomandy .ReaD ili .WRIte, to pri otsutstwii drajwera
  wydaetsq neustranimaq o{ibka.

                                 - 87 -




       o{ibki:

          kod          poqsnenie

           0     ukazannyj kanal ne swqzan s fajlom,
                 t.e. ne wypolnena makrokomanda .LOOKUP;

           1     ukazannyj fajl otkryt makrokomandoj
                 .ENTER ili nahoditsq na CT: ili MT:.

       w primere otkrywa`tsq wse neobhodimye dlq raboty programmy  faj-
  ly, ih sostoqniq sohranq`tsq, a zatem oni otkrywa`tsq po mere neobho-
  dimosti s pomo}x` .REOPEN.

       primer.

          .MCALL  .READ,.EXIT,.CSIGEN,.SAVESTATUS,.REOPEN
   ST:     MOV    #AREA,R5
          .CSIGEN #DSPACE,#DEXT     ;wwesti stroku
           MOV    R0,BUFF           ;ukazatelx na
                                    ;swobodnu` pamqtx
          .SAVEST R5,#3,#BLOCK1     ;sohranitx informaci`
                                    ;o perwom whod. fajle
          .SAVEST R5,#4,#BLOCK2     ;O wtorom
          .SAVEST R5,#5,#BLOCK3     ;O tretxem
           MOV    #BLOCK1,R4
   PRCS:  .REOPEN R5,#0,R4          ;pereotkrytx  fajl
                                    ;po kanalu 0
          .READ   R5,#0,BUFF,COUNT,BLOCK ;i obrabotatx ego
   DONE:   ADD    #12,R4           ;ukazatelx   na
                                   ;sledu`}ij  blok
           CMP    R4,#BLOCK3       ;posledn. fajl obrabotan?
           BLOS   PRCS             ;net, wypolnitx sledu`}ij
          .EXIT
   BLOCK1: .WORD  0,0,0,0,0        ;bloki dlq informacii
   BLOCK2: .WORD  0,0,0,0,0        ;o sohranennom
   BLOCK3: .WORD  0,0,0,0,0        ;sostoqnii kanalow
   AREA:   .BLKW  10
   BUFF:   .WORD  0
   BLOCK:  .WORD  0
   COUNT:  .WORD  256.
   DEXT:   .WORD  0,0,0,0
   DSPACE = .
          .END    ST



       7.4. obrabotka komandnoj stroki



                                 - 88 -




       7.4.1. makrokomanda .CSIGEN



       sistemnaq makrokomanda .CSIGEN wyzywaet interpretator  komandnoj
  stroki (CSI) w oby~nom revime.

       format makrokomandy:

           .CSIGEN DEFSPC,DEFEXT,CSTRNG[,LINBUF]

  gde

  DEVSPC - adres oblasti pamqti, kuda zagruva`tsq drajwery ustrojstw;

  DEFEXT - adres bloka iz ~etyreh slow, soderva}ego  ras{ireniq  fajlow
           po umol~ani` w kode RaDIh-50;

  sStRNG - adres komandnoj stroki ili #0, esli wwod stroki proishodit s
           terminala;

  LINwUF - adres, gde sohranqetsq kopiq komandnoj stroki.

       esli stroka nahoditsq w pamqti, ona dolvna zakan~iwatxsq nulewym
  bajtom, a ne sodervatx simwoly <sR>,<LF>.

       blok DeFeht sodervit:

  slowo 1
         - ras{irenie dlq wseh whodnyh fajlow;

  slowo 2
         - ras{irenie dlq perwogo wyhodnogo fajla;

  slowo 3
         - ras{irenie dlq wtorogo wyhodnogo fajla;

  slowo 4
         - ras{irenie dlq tretxego wyhodnogo fajla.

       esli ne ispolxzu`tsq ras{ireniq  po  umol~ani`,  sootwetstwu`}ie
  slowa dolvny sodervatx nolx.

       oblastx LINwUF (dlino` 81.  bajt)  rezerwiruetsq  polxzowatelem.
  wwodimaq stroka predstawlqetsq, kak stroka direktiwy .aSsIZ, i  movet
  bytx nape~atana s pomo}x` makrokomandy .rRINt.

       makrokomanda .sSIGeN awtomati~eski wybiraet stroku iz komandnogo
  fajla, esli byl ukazan wwod s terminala (sStRNG=0), a sama  programma
  wyzywalasx iz |togo komandnogo fajla.

       makrokomanda .sSIGeN swqzywaet tri wozmovnyh  wyhodnyh  fajla  s
  kanalami 0,1,2 sootwetstwenno i {estx whodnyh  fajlow  -  s  kanalami
  3-10 (wosxmeri~noe). propusk specifikacii fajla  w  komandnoj  stroke
  ostawlqet sootwetstwu`}ij kanal swobodnym.

       oblastx DeVSrs dolvna bytx dostato~noj, ~toby wmestitx wse  wwo-
  dimye drajwery odnowremenno. esli razmery drajwerow  prewy{a`t  ime`-
  }u`sq oblastx, programma polxzowatelq movet bytx ispor~ena. po zawer-

                                 - 89 -




  {enii makrokomandy .sSIGeN R0 sodervit adres perwoj swobodnoj  q~ejki
  wy{e drajwerow.

       kl`~i i swqzannye s nimi zna~eniq pereda`tsq w stek.

       o{ibki:

          kod              poqsnenie

           0     nedopustimaq komanda;

           1     ukazannoe ustrojstwo otsutstwuet;

           2     ne ispolxzuetsq;

           3     perepolnenie kataloga;

           4     whodnoj fajl ne najden.


       pRIME^ANIE. esli wwod stroki  proishodit  s  terminala,  to  pri
  poqwlenii o{ibok soob}enie o nih wywoditsq na sistemnyj terminal.

       primer priweden pri opisanii makrokomandy .CSTAT (sm. p. 7.3.3).



       7.4.2. makrokomanda .CSISPC




       sistemnaq makrokomanda .sSISrs wyzywaet interpretator  komandnoj
  stroki w specialxnom revime.

       format makrokomandy:

           .sSISrs oUtSrs,DeFeht,sStRNG[,LINwUF]

  gde

  oUtSrs - adres bloka iz 39 slow, gde razme}a`tsq deskriptory  fajlow,
           ukazannye w makrokomande .sSISrs;

  DeFeht - adres bloka iz ~etyreh slow, soderva}ego  ras{ireniq  fajlow
           po umol~ani` w kode RaDIh-50;

  sStRNG - adres komandnoj stroki ili #0, esli wwod stroki proishodit s
           terminala;

  LINwUF - adres, gde sohranqetsq kopiq komandnoj stroki.

       w |tom revime interpretator komandnoj stroki ne proizwodit  zag-
  ruzku drajwerow i ne wypolnqet makrokomand .sLoSe, .eNteR i .LookUr.

       w bloke oUtSrs otwoditsq perwye 15 slow dlq treh wyhodnyh fajlow
  (5 slow na fajl) i 24 slowa dlq {esti  whodnyh  fajlow  (4  slowa  na
  fajl). esli kakoj-to fajl otsutstwuet, to sootwetstwu`}ee pole zapol-
  nqetsq nulqmi.

                                 - 90 -




       w blok dlq wyhodnyh fajlow zanositsq:

  1 slowo
         - imq ustrojstwa (RADIX-50);

  2-3 slowo
         - imq fajla (RADIX-50);

  4 slowo
         - ras{irenie imeni fajla (RADIX-50);

  5 slowo
         - razmer fajla (wosxmeri~noe).

       w blok dlq whodnyh fajlow zanositsq:

  1 slowo
         - imq ustrojstwa (RADIX-50);

  2-3 slowo
         - imq fajla (RADIX-50);

  4 slowo
         - ras{irenie imeni fajla (RADIX-50).

       esli stroka nahoditsq w pamqti, ona dolvna zakan~iwatxsq nulewym
  bajtom, a ne sodervatx simwoly <sR>,<LF>.


       blok DeFeht sodervit:

  slowo 1
         - ras{irenie dlq wseh whodnyh fajlow;

  slowo 2
         - ras{irenie dlq perwogo wyhodnogo fajla;

  slowo 3
         - ras{irenie dlq wtorogo wyhodnogo fajla;

  slowo 4
         - ras{irenie dlq tretxego wyhodnogo fajla.

       esli ne ispolxzu`tsq ras{ireniq  po  umol~ani`,  sootwetstwu`}ie
  slowa dolvny sodervatx 0.

       oblastx LINwUF (dlino` 81.  bajt)  rezerwiruetsq  polxzowatelem.
  wwodimaq stroka predstawlqetsq, kak stroka direktiwy .aSsIZ, i  movet
  bytx nape~atana s pomo}x` makrokomandy .rRINt.

       makrokomanda .sSISPC awtomati~eski wybiraet stroku iz komandnogo
  fajla, esli byl ukazan wwod s terminala (sStRNG=0), a sama  programma
  wyzywalasx iz |togo komandnogo fajla.

       w ob}em i specialxnom revimah  interpretatora  komandnoj  stroki
  (sSI) kl`~i i sootwetstwu`}ie im zna~eniq pereda`tsq w steke.

       kl`~om qwlqetsq kosaq ~erta (/), za kotoroj sleduet l`boj simwol
  (velatelxno, ~toby on byl nesluvebnym).

                                 - 91 -




       za kl`~om movet sledowatx zna~enie  kl`~a,  kotoroe  ukazywaetsq
  dwoeto~iem (:). zna~enie kl`~a movet bytx libo  wosxmeri~nym  ~islom,
  libo desqti~nym ~islom, libo naborom bukwenno-cifrowyh simwolow (ot 1
  do 3 simwolow), perwyj iz kotoryh dolven bytx  bukwennym.  desqti~nye
  weli~iny ukazywa`tsq ~islom s to~koj. esli to~ka otsutstwuet, to ~is-
  lo s~itaetsq wosxmeri~nym.

       polxzowatelx polu~aet w steke kl`~i i ih  zna~eniq  w  sledu`}em
  wide:

  slowo 1 (werhu{ka steka)
         - koli~estwo kl`~ej w komandnoj stroke; esli  nolx,  to  kl`~i
           otsutstwu`t;

  slowo 2
         - mlad{ij bajt sodervit mnemoniku kl`~a, star{ij - nomer  faj-
           la, s kotorym swqzan kl`~; esli 15 bit ustanowlen,  to  kl`~
           imeet zna~enie;

  slowo 3
         - esli ustanowlen 15 bit slowa 2, to sodervitsq zna~enie  kl`-
           ~a; esli net, to sledu`}ij kl`~ (esli on estx).


       pRIME^ANIE. esli kl`~ imeet neskolxko zna~enij, w  stek  zapisy-
  waetsq sootwetstwu`}ee koli~estwo kl`~ej.

       sleduet pomnitx, ~to w Fw-monitore wwod s  sistemnogo  terminala
  wsegda osu}estwlqet neqwnoe obra}enie k makrokomande .UNLosk dlq USR.
  |to nuvno imetx wwidu pri ispolxzowanii makrokomandy .Losk.

       o{ibki:

          kod              poqsnenie

           0     nedopustimaq komanda;

           1     ukazannoe ustrojstwo otsutstwuet.


       pRIME^ANIE. esli wwod stroki  proishodit  s  terminala,  to  pri
  poqwlenii o{ibok soob}enie o nih wywoditsq na sistemnyj terminal.

       w primere pokazano ispolxzowanie CSI w specialxnom revime. prog-
  ramma ~itaet fajl w formate dos i zapisywaet ego w formate RT11.

       primer.

          .MCALL  .CSISPC,.PRINT,.EXIT,.ENTER,.CLOSE
   START: .CSISPC #OUTSP,#DEFEXT,#CSTRNG ;wwesti komandnu`
                                     ;stroku iz pamqti
           BCC    1$
          .PRINT  #MSG
          .EXIT
   1$:    .ENTER  #AREA,#0,#OUTSPC,OUTSPC+10 ;otkrytx fajl
                                     ;dlq wywoda
           BCC    2$
          .PRINT  #MSG1
          .EXIT

                                 - 92 -




   2$:     JSR    PC,IO              ;podprogramma wwoda
                                     ;w formate dos i wywoda
                                     ;w formate RT11
          .CLOSE  #0                 ;zakrytx wyhodnoj fajl
          .EXIT
   CSTRNG:.ASCIZ  "RK1:RAFOS.MAC=RK2:DOS.MAC" ;komandnaq
                                     ;stroka
          .EVEN
   DEXT:  .WORD   0,0,0,0            ;blok ras{irenij
                                     ;po umol~ani`
   AREA:  .BLKW   5                  ;blok argumentow emt
   MSG:   .ASCIZ  /o{ibka CSI/
   MSG1:  .ASCIZ  /o{ibka ENTER/
          .EVEN
   IO:     .                         ;tekt podprogrammy
           .
           RTS    PC
   OUTSP = .                        ;blok deskriptorow
          .END    START



       7.4.3. makrokomanda .GtLIN



       sistemnaq  makrokomanda  .GtLIN  wwodit  komandnu`   informaci`,
  otli~nu` ot formata sSI s sistemnogo terminala ili iz  wypolnq`}egosq
  komandnogo fajla.

       format makrokomandy:

           .GtLIN LINwUF[,PROMPT]

  gde

  LINwUF - adres bufera, kuda wwoditsq stroka;

  PROMPT - neobqzatelxnyj argument; adres stroki-podskazki, pe~ata`}ej-
           sq na sistemnom terminale.

       wwodimaq stroka w oblasti LINwUF (81. bajt) okan~iwaetsq nulewym
  bajtom wmesto <sR><LF>.

       makrokomanda .GtLIN trebuet USR i wybiraet stroku  s  sistemnogo
  terminala ili iz komandnogo fajla w zawisimosti ot togo, otkuda  byla
  zagruvena programma.

       esli byla zadana komanda Set tt QUIet, a wwod proishodit iz kos-
  wennogo fajla,  stroka-podskazka  ignoriruetsq.  w  protiwnom  slu~ae
  stroka-podskazka wywoditsq na sistemnyj terminal prevde, ~em  wybrana
  wwodimaq stroka.

       o{ibki otsutstwu`t.

       w sledu`}em primere programma wwodit stroku s terminala i raspe-
  ~atywaet ee.

                                 - 93 -




       primer.

          .MCALL  .GTLIN,.PRINT,.EXIT
   START: .GTLIN  #BUFF,#PROMPT      ;wwesti stroku
           TSTB   BUFF               ;stroka pustaq?
           BEQ    END                ;da
          .PRINT  #BUFF              ;net...wywesti stroku
           BR     START
   END:   .EXIT
   PROMPT:.ASCIZ  /wwedite stroku/   ;stroka-podskazka
   BUFF:  .BLKB   82.                ;bufer wwodimoj stroki
          .END    START



       7.5. rabota s tajmerom





       7.5.1. makrokomanda .GTIM



       sistemnaq makrokomanda .GTIM wozwra}aet teku}ee sodervimoe  sis-
  temnogo tajmera (w tikah) po ukazannomu adresu.

       format makrokomandy:

          .GtIm aRea,aDDR

  gde

  aRea   - adres tablicy argumentow emt iz dwuh slow;

  aDDR   - adres massiwa iz dwuh slow, w  kotoryj  zanositsq  wremq  wo
           wnutrennem formate (perwoe slowo sodervit  star{ie  razrqdy,
           wtoroe - mlad{ie).


       format spiska argumentow emt:

                    !--------!--------!
        R0 => AREA: !   21   !   0    !
                    !--------!--------!
                    !      ADDR       !
                    !-----------------!


       programma polxzowatelq  dolvna  sama  preobrazowywatx  wremq  iz
  tikow w ~asy, minuty, sekundy (1 sek = 50 tikam dlq seti  s  ~astotoj
  50 gc).

  o{ibki otsutstwu`t.

       w primere polxzowatelx polu~aet w q~ejke TIME  teku}ee  wremq  w
  tikah.

                                 - 94 -




       primer.

          .MCALL  .GTIM,.EXIT
   START: .GTIM   #AREA,#TIME        ;polu~itx wremq
          .EXIT
   TIME:  .WORD   0,0
   AREA:  .BLKW   2                  ;blok argumentow emt
          .END    START



       7.5.2. makrokomanda .smkt



       sistemnaq makrokomanda .smkt prednazna~ena dlq  otmeny  newypol-
  nennyh makrokomand wremennogo interwala (.MRkt).

       format makrokomandy:

          .smkt aRea,ID[,TIME]

  gde

  aRea   - adres tablicy argumentow emt iz treh slow;

  ID     - identifikator kavdoj makrokomandy .mRkt;

  TIME   - adres massiwa iz dwuh slow, soderva}ih wremq  wo  wnutrennem
           formate, ostaw{eesq w otmenennoj makrokomande; perwoe  slowo
           sodervit star{ie razrqdy, wtoroe - mlad{ie.

       format spiska argumentow emt:

                    !--------!--------!
        R0 => AREA: !   23   !   0    !
                    !--------!--------!
                    !       ID        !
                    !-----------------!
                    !      TIME       !
                    !-----------------!


       otmena makrokomandy .mRkt  oswobovdaet  sootwetstwu`}ij  |lement
  o~eredi dlq drugih celej.

       esli neskolxko makrokomand .mRkt ime`t odinakowyj ID,  to  otme-
  nqetsq makrokomanda s samym rannim wremenem okon~aniq.

       esli ID = 0, to wse nesistemnye makrokomandy .mRkt (w  diapazone
  1-177377) dlq dannoj programmy otmenq`tsq, a  argument  TIME  ignori-
  ruetsq.

       o{ibki:

          kod              poqsnenie

            0     makrokomanda .mRkt s zadannym NUm ne
                  najdena (libo makrokomanda ne byla zadana,

                                 - 95 -




                  libo ona uve zakon~ena).

       primer priweden pri opisanii makrokomandy .MRKT (p. 2.5.4).



       7.5.3. makrokomanda   TWAIT   (w   SJ-monitore   trebuet
              poddervki tajmera)



       sistemnaq makrokomanda .tWaIt priostanawliwaet wypolnenie  prog-
  rammy na ukazannyj interwal wremeni.

       format makrokomandy:

          .tWaIt aRea,tIme

  gde

  aRea   - adres tablicy argumentow emt iz dwuh slow;

  tIme   - adres massiwa iz dwuh slow, soderva}ih wremennoj interwal  w
           tikah.

       format tablicy argumentow emt:

                    !--------!--------!
        R0 => AREA: !   24   !   0    !
                    !--------!--------!
                    !      TIME       !
                    !-----------------!


       sistemnaq makrokomanda .tWaIt trebuet |lement  o~eredi,  po|tomu
  prevde neobhodimo wypolnitx makrokomandu .QSet.


       pRIME^ANIE. makrokomanda .tWaIt realizuetsq w monitore s ispolx-
  zowaniem makrokomand  .SrND  i  .RSUm.  po|tomu  makrokomanda  .RSUm,
  wydannaq  programmoj  zawer{eniq  bez  sootwetstwu`}ej   makrokomandy
  .SPND, movet  wyzwatx  prodolvenie  osnownoj  programmy  ranx{e,  ~em
  zakon~itsq zadannyj wremennoj interwal.

       o{ibki:

          kod              poqsnenie

            0     net swobodnogo |lementa o~eredi.



       7.5.4. makrokomanda .mRkt



       sistemnaq makrokomanda .mRkt planiruet zapusk ukazannoj podprog-
  rammy zawer{eniq ~erez zadannyj interwal wremeni w tikah ( 1 s  =  50
  tikow dlq ~astoty seti 50 gc).

                                 - 96 -




       format makrokomandy:

          .mRkt aRea,tIme,CRTN,ID

  gde

  aRea   - adres tablicy argumentow emt iz ~etyreh slow;

  tIme   - adres massiwa iz dwuh slow, soderva}ih wremennoj interwal;

  CRTN   - adres whoda w podprogrammu zawer{eniq;

  ID     - identifikator kavdoj makrokomandy .mRkt.


       format tablicy argumentow emt:

                    !--------!--------!
        R0 => AREA: !   22   !   0    !
                    !--------!--------!
                    !      TIME       !
                    !-----------------!
                    !      CRTN       !
                    !-----------------!
                    !       ID        !
                    !-----------------!


       sistemnaq makrokomanda .mRkt trebuet |lement o~eredi.  polxzowa-
  telx dolven sam raspredelitx dostato~noe koli~estwo |lementow  o~ere-
  di.

       ID w diapazone 177400-177777 (wosxmeri~noe) zarezerwirowany  dlq
  sistemnogo ispolxzowaniq.

       neskolxko makrokomand .mRkt mogut imetx odin i tot ve ID.

       pri whode w podprogrammu zawer{eniq R0 sodervit ID.

       o{ibki:

          kod              poqsnenie

            0     net swobodnogo |lementa o~eredi.

       w sledu`}em primere po iste~enii wremeni wydaetsq  soob}enie  na
  terminal.

       primer.

          .MCALL  .READ,.WAIT,.MRKT,.CMKT
          .MCALL  .QSET,.PRINT,.EXIT,.LOOKUP
   START: .LOOKUP #AREA,#0,#FILE     ;otkrytx fajl
           BCS    LKERR
           MOV    #AREA,-(SP)
          .QSET   #QUEUE,#5          ;dobawitx 5 |lementow
                                     ;o~eredi
          .MRKT   (SP),#INTRVL,#MRTN,#1 ;zapustitx MRTN
                                     ;po iste~enii wremeni

                                 - 97 -




           BCS    NOMRKT
          .READ   #RDLST             ;~itatx
           BCS    RDERR
          .WAIT   #0                 ;vdatx
          .CMKT   (SP),#1            ;oswoboditx |lement
                                     ;o~eredi (otmenitx .MRKT)
           BCS    NOTDUN
          .EXIT
   MRTN:                             ;podprogramma zawer{eniq
          .PRINT  #FAIL1
           RTS    PC
   LKERR: .PRINT  #LM
          .EXIT
   RDERR: .PRINT  #RDMSG
          .EXIT
   NOTDUN:.PRINT  #FAIL
          .EXIT
   NOMRKT:.PRINT  #NOQ
          .EXIT
   NOQ:   .ASCIZ  /net |lementa o~eredi/
   FAIL:  .ASCIZ  /o{ibka CMKT/
   FAIL1: .ASCIZ  /wremq isteklo/
   LM:    .ASCIZ  /o{ibka LOOKUP/
   RDMSG: .ASCIZ  /o{ibka READ/
          .EVEN
   INTRVL:.WORD   0,13.              ;wremq
   QUEUE: .BLKW   5*7                ;blok |lementow
   AREA:  .BLKW   5                  ;blok argumentow emt
                                     ;dlq .MRKT
   FILE:  .RAD50  /DK FILE  TST/
   RDLST: .BYTE   0                  ;blok argumentow emt
          .BYTE   10                 ;dlq .READ
   BLOCK: .WORD   0
          .WORD   BUFF
          .WORD   256.
          .WORD   1
   BUFF:  .BLKW   256.               ;bufer wwoda
          .END    START




       7.6. sistemnye makrokomandy ob}ego nazna~eniq



       w |tom podrazdele w alfawitnom porqdke priwedeno  opisanie  sis-
  temnyh makrokomand ob}ego nazna~eniq.



       7.6.1. makrokomanda .snaIN



       sistemnaq makrokomanda .CHAIN imeet rqd ograni~enij w  FB  i  XM
  monitorah: movet bytx ispolxzowana tolxko dlq fonowogo (w t. ~isle  i
  wirtualxnogo dlq RT11XM) razdela.


                                 - 98 -




       sistemnaq makrokomanda .snaIN obespe~iwaet zagruzku nowoj  prog-
  rammy wmesto wypolnqemoj i pereda~u ej uprawleniq  bez  wme{atelxstwa
  operatora. powtorqq |tot process, movno organizowatx  zagruzku  prog-
  ramm po "cepo~ke".

       q~ejki pamqti 500-507 sodervat imq ustrojstwa i  fajla  (w  kode
  RaDIh-50), iz kotorogo budet wypolnqtxsq zagruzka nowoj programmy,  a
  oblastx 510-777  ispolxzuetsq  dlq  pereda~i  informacii  zagruvaemoj
  programme.

       format makrokomandy:

          .snaIN

       format registra R0:

                    !--------!--------!
        R0 =>       !   10   !   0    !
                    !--------!--------!

       wypolnenie makrokomandy .snaIN garantiruet sohranenie sodervimo-
  go oblasti  pamqti  500-510  i  monitora.  sohranenie  q~eek  510-777
  (oblastx obmena informaciej) zawisit ot zna~eniq bita CHAIN$ (bit  8)
  w slowe sostoqniq programmy pered zagruzkoj. sodervimoe |tih q~eek ne
  sohranqetsq, esli makrokomanda  .CHAIN  wypolnqetsq  iz  wirtualxnogo
  zadaniq.

       pri wypolnenii makrokomandy .snaIN otkrytye kanaly  wwoda/wywoda
  mogut ispolxzowatxsq nowoj programmoj. odnako  sleduet  pomnitx,  ~to
  monitor wo wremq wypolneniq makrokomandy .snaIN wozwra}aetsq k ishod-
  nym 16 kanalam. sledowatelxno, programmy, ostawlq`}ie fajly  otkryty-
  mi, ne dolvny ispolxzowatx makrokomandu .sDFN. sleduet  pomnitx,  ~to
  |to sprawedliwo tolxko dlq programmam na assemblere. dlq qzykow wyso-
  kogo urownq informaciq ob otkrytyh kanalah i  nazna~eniqh  ne  sohra-
  nqetsq pri wypolnenii makrokomandy .CHAIN.

       nerezidentnye drajwery ustrojstw wygruva`tsq wo wremq wypolneniq
  makrokomandy .snaIN  i  dolvny  bytx  zagruveny  nowoj  programmoj  s
  pomo}x` makrokomandy .Fetsn.

       prowerkoj bita snaIN$ (bit 8) slowa sostoqniq programmy JSW mov-
  no ustanowitx, byla li programma zagruvena  posredstwom  makrokomandy
  .snaIN ili komandoj monitora RUN.

       o{ibki:

          makrokomandoj .snaIN wyda`tsq te ve soob}eniq  ob
          o{ibkah, kakie generiru`tsq pri wypolnenii koman-
          dy monitora RUN. pri  poqwlenii  o{ibki  makroko-
          manda .snaIN ignoriruetsq i uprawlenie  peredaet-
          sq monitoru.

       wirtualxnoe zadanie dolvno  zagruvatxsq  po  komande  RUN,  t.e.
  nelxzq ispolxzowatx makrokomandu .CHAIN dlq ego zagruzki.


       pRIME^ANIE. pri ispolxzowanii  makrokomandy  .CHAIN  nuvno  bytx
  ostorovnym pri inicializacii steka. oby~no komponow}ik pri  iniciali-
  zacii steka po umol~ani` ustanawliwaet  ego  na~alxnyj  adres  rawnym

                                 - 99 -




  1000 (wosxmeri~noe). esli ostorovnostx ne sobl`dena, stek movet  raz-
  ru{itx peredawaemu` informaci` do togo, kak ona budet ispolxzowana.

       primer.

       programma PRINT.SAV zagruvaetsq iz programmy  GO.SAV  s  pomo}x`
  makrokomandy .CHAIN.

   ;       programma GO.SAV
   ;      ------------------
   ;
          .MCALL  .CHAIN,.TTYIN,.DBLK,.CTRLT
          .CTRLT                     ;opredelitx uprawlq-
                                     ;`}ie simwoly
                                     ;(zdesx LF)
   START:  MOV    #500,R1
           MOV    #FILE,R2
          .REPT   4
           MOV    (R2)+,(R1)+        ;imq fajla w 500-507
          .ENDR
   1$:    .TTYIN                     ;zanesenie simwolow s
           MOVB   R0,(R1)+           ;TT: w oblastx 510-777
           CMPB   R0,#LF             ;wsq stroka wwedena?
           BNE    1$                 ;net
           CLRB   -(R1)              ;da
          .CHAIN                     ;zapusk programmy PRINT
   FILE:  .DBLK   SY,PRINT,SAV       ;imq ustrojstwa i fajla
          .END    START

   ;      programma PRINT
   ;      ---------------
   ;
          .MCALL  .PRINT,.EXIT
   BUFF=510
   START: .PRINT  #MSG               ;pe~atx soob}eniq
          .PRINT  #BUFF              ;pe~atx oblasti 510-777
          .PRINT  #MSG1              ;pe~atx soob}eniq
          .EXIT
   MSG:   .ASCII  /na~alo pe~ati soob}eniq iz /
          .ASCIZ  /oblasti 510-777/
   MSG1:  .ASCIZ  /konec pe~ati/
          .EVEN
          .END    START



       7.6.2. makrokomanda .sNFDF



       sistemnaq makrokomanda .sNFDF opredelqet simwoly i mnemoni~eskie
  obozna~eniq razrqdow slow konfiguracii sistemy.

       format makrokomandy:

          .sNFDF

       ras{irenie makrokomandy:

                                 - 100 -




   CONFIG  =^O300
   FBMON$  =^O1
   HWDSP$  =^O4
   BATCH$  =^O10
   CLK50$  =^O40
   HWFPU$  =^O100
   FJOB$   =^O200
   GTLNK$  =^O400
   USR$    =^O1000
   LSI$    =^O4000
   MMU$    =^O10000
   LKCS$   =^O20000
   KW$P    =^O40000
   CLOCK$  =^O100000
   CONFG2  =^O370
   CACHE$  =^O1
   MPTY$   =^O2
   SWREG$  =^O4
   LIGHT$  =^O10
   EIS$    =^O400
   VS6$0   =^O1000
   TYP70$  =^O40000
   TYP60$  =^O100000
   SYSGEN  =^O372
   ERLG$   =^O1
   MMGT$   =^O2
   TIMIT$  =^O4
   MPTY$   =^O1000
   TIMER$  =^O2000
   ESCP$   =^O14000
   MTTY$   =^O20000

       dannaq makrokomanda kodow emt ne generiruet,  a  qwlqetsq  ~isto
  opisatelxnoj.

       o{ibki otsutstwu`t.

       w sledu`}em primere opredelqetsq rezidentnostx USR.

       primer.

         .MCALL  .CNFDF,.EXIT,.PRINT,.GVAL
         .CNFDF                     ;opredelitx mnemoniku
                                    ;sme}eniq monitora
                                    ;CONFIG (300) i ego
                                    ;bitow (zdesx USR$)
  START: .GVAL   #AREA,#CONFIG      ;polu~itx sodervimoe
                                    ;sme}eniq CONFIG w R0
          BIT    R0,#USR$           ;bit USR$ ustanowlen?
          BEQ    1$                 ;net
         .PRINT  #MSG               ;da...pe~atx soob}eniq
          BR     2$
  1$:    .PRINT  #MSG1              ;pe~atx soob}eniq
  2$:    .EXIT
  AREA:  .BLKW   2                  ;blok argumentow emt
  MSG:   .ASCIZ  /USR ne rezidentna/
  MSG1:  .ASCIZ  /USR rezidentna/
         .EVEN
         .END    START

                                 - 101 -




       7.6.3. makrokomanda .sNthSW (RT11FB(XM))



       sistemnaq makrokomanda .sNthSW opredelqet q~ejki, kotorye  neob-
  hodimo wkl`~itx w oblastx  kontekstnogo  perekl`~eniq  programmy  pri
  perekl`~enii monitora s wypolneniq odnoj programmy na wypolnenie dru-
  goj.

       format makrokomandy:

          .sNthSW aRea,aDDR

  gde

  aRea   - adres tablicy argumentow emt iz dwuh slow;

   aDDR  - adres tablicy adresow, podleva}ih wkl`~eni` w oblastx sohra-
           neniq.

       format tablicy argumentow emt:

                    !--------!--------!
        R0 => AREA: !   33   !   0    !
                    !--------!--------!
                    !      ADDR       !
                    !-----------------!

       tablica adresow  dolvna  zakan~iwatxsq  nulewym  slowom.  adresa
  dolvny bytx ~etnymi i prinadlevatx k odnoj iz sledu`}ih oblastej:

         - w diapazone 2 - 476;

         - w oblasti zadaniq polxzowatelq;

         - w stranice wwoda/wywoda (160000-177776).

       pri perekl`~enii s odnogo zadaniq na  drugoe  sistema  sohranqet
  informaci` dlq programmy, wkl`~a`}u`:

         - sodervimoe uniwersalxnyh registrow R0-R5 i R7;
         - sodervimoe slowa sostoqniq processora PS;
         - wektor instrukcii tRar (q~ejki 34-36);
         - q~ejki sistemnoj oblasti swqzi (40-52);
         - q~ejki, opredelennye makrokomandoj .sNthSW.

       esli makrokomanda .SFra wypolnqetsq s nenulewym adresom, to tak-
  ve sohranq`tsq wse registry i slowo  sostoqniq  processora  plawa`}ej
  zapqtoj (dlq sm-1420).

       pri mnogokratnom wypolnenii  makrokomandy  .sNthSW,  sohranq`tsq
  tolxko adresa iz poslednego spiska; pred{estwu`}ie spiski ignoriru`t-
  sq. spisok ne dolven bytx raspoloven w oblasti swopinga USR i modifi-
  cirowatxsq pri wypolnenii programmy.

       esli argument aDDR=0, to nikakie adresa ne sohranq`tsq.

                                 - 102 -




       pRIME^ANIE. w RT11XM makrokomanda .sNthSW ignoriruetsq  po  dwum
  pri~inam:

         - pri popytke wypolneniq ee  iz  wirtualxnoj  programmy,  t.k.
           wirtualxnaq programma ne imeet dostupa k q~ejkam pamqti dru-
           gih programmam;

         - wektory Iot, tRar, wrt awtomati~eski  wkl`~a`tsq  w  oblastx
           sohraneniq pri rabote RT11XM.

       o{ibki:

          kod              poqsnenie

           0     ne~etnyj adres w tablice ADDR ili on
                 prinadlevit k zapre}ennoj oblasti

       w sledu`}em primere  w  oblastx  sohraneniq  zadaniq  wkl`~a`tsq
  adresa 20, 22, 177302, 177304, 177310.

       primer.

         .MCALL  .CNTXSW,.PRINT,.EXIT
  START:  MOV    #LIST,R0
         .CNTXSW ,SWAPLS            ;wkl`~itx w oblastx
                                    ;sohraneniq zadaniq
          BCC    1$
         .PRINT  #MSG
         .EXIT
  1$:    .PRINT  #MSG1
         .EXIT
  SWAPLS:.WORD   20                 ;tablica adresow
         .WORD   22                 ;dlq sohraneniq
         .WORD   177302
         .WORD   177304
         .WORD   177310
         .WORD   0                  ;konec tablicy
  LIST:  .BYTE   0,33               ;blok argumentow emt
         .WORD   0
  MSG:   .ASCIZ  /adres neweren/
  MSG1:  .ASCII  /adresa wkl`~eny w/
         .aSCIZ  /perekl`~atelx resursow/
         .EVEN
         .END    START



       7.6.4. makrokomanda .stRLt



       sistemnaq makrokomanda .stRLt opredelqet simwolxnye  obozna~eniq
  uprawlq`}ih simwolow (ime`}ih kody 0-37).

       format makrokomandy:

          .stRLt

                                 - 103 -




       ras{irenie makrokomandy:

   NUL     =^O000
   SOH     =^O001
   STH     =^O002
   ETX     =^O003
   EOT     =^O004
   ENQ     =^O005
   ACK     =^O006
   BEL     =^O007
   BS      =^O010
   HT      =^O011
   LF      =^O012
   VT      =^O013
   FF      =^O014
   CR      =^O015
   SO      =^O016
   SI      =^O017
   DLE     =^O020
   DC1     =^O021
   DC2     =^O022
   DC3     =^O023
   DC4     =^O024
   NAK     =^O025
   SYN     =^O026
   ETB     =^O027
   CAN     =^O030
   EM      =^O031
   SUB$    =^O032
   ESC     =^O033
   FS      =^O034
   GS      =^O035
   RS      =^O036
   US      =^O037

       dannaq makrokomanda kodow emt ne generiruet,  a  qwlqetsq  ~isto
  opisatelxnoj.

       o{ibki otsutstwu`t.

       primer priweden pri opisanii makrokomandy .CHAIN (sm. p. 7.6.1).



       7.6.5. makrokomanda .DATE



       sistemnaq makrokomanda .DATE peredaet informaci` o teku}ej  date
  w R0:

         - bity 13-10 - nomer mesqca (1-12.);

         - bity 9-5 - denx nedeli (1-31.);

         - bity 4-0 - god (zna~enie  goda  opredelqetsq  wy~itaniem  iz
           teku}ego goda ~isla 1972).

                                 - 104 -




       format makrokomandy:

          .DATE

       format registra R0:

                    !--------!--------!
        R0 =>       !   12   !   0    !
                    !--------!--------!

       esli posle wypolneniq makrokomandy R0=0, to  |to  ozna~aet,  ~to
  data ne byla wwedena polxzowatelem.


       pRIME^ANIE. RT11 ne proizwodit prowerku na korrektnostx  ukazan-
  noj daty (konec mesqca i goda). naprimer, polxzowatelx  movet  wwesti
  taku` datu kak 31 fewralq. neobhodimo to~no wy~islqtx w programme god
  i perwyj denx kavdogo mesqca.

       o{ibki otsutstwu`t.

       w primere priwedena podprogramma obrabotki daty, wwedennoj polx-
  zowatelem komandoj monitora DATE.

       primer.

   ; obra}enie k podprogramme:
   ;
   ;          JSR    PC,DATE
   ;
   ; rezulxtat: R0 = mesqc (1-12)
   ;            R1 = ~islo (1-31)
   ;            R2 = god (po modul` 100)
   ;
   ; o{ibki: R0=0, esli data ne wwedena polxzowatelem
   ;
          .MCALL  .DATE,.POP,.PUSH
   DATE:
          .PUSH   R2,R1,R0           ;sohranitx registry
          .DATE                      ;wybratx datu
           MOV    R0,R2              ;wwedena?
           BEQ    1$                 ;net
           BIC    #^C37,R2           ;wybratx god w R2
           ADD    #72.,R2
           MOV    R0,R1              ;wybratx ~islo
           ASL    R1
           ASL    R1
           ASL    R1
           SWAB   R1
           BIC    #^C37,R1
           SWAB   R0                 ;wybratx mesqc
           ASR    R0
           ASR    R0
           BIC    #^C37,R0
   1$:    .POP    R0,R1,R2           ;wosstanowitx registry
           RTS    PC
          .END

                                 - 105 -




       7.6.6. makrokomanda .DBLK



       sistemnaq makrokomanda .DwLk sozdaet blok ustrojstwa dlq ukazan-
  nogo fajla w kode RaDIh-50.

       format makrokomandy:

          .DwLk DeV,Nam,tYr

  gde

  DeV    - imq ustrojstwa;

  Nam    - naimenowanie fajla;

  tYr    - ras{irenie imeni fajla.

       dannaq makrokomanda kodow emt ne generiruet.

       o{ibki otsutstwu`t.

       primer priweden pri opisanii makrokomandy .CHAIN (sm. p. 7.6.1).



       7.6.7. makrokomanda  .DeVIse  (movet  ne  wypolnqtxsq  w
              RT11SJ w zawisimosti ot generacii sistemy)



       sistemnaq makrokomanda .DEVICE ispolxzuetsq dlq zagruzki regist-
  row ustrojstw  neobhodimymi  zna~eniqmi,  esli  wypolnenie  programmy
  zawer{aetsq. naprimer, pri wypolnenii makrokomandy .EXIT ili prerywa-
  nii wypolneniq programmy po <CTRL/C> sistema izwlekaet spisok i zapi-
  sywaet zna~eniq w ukazannye adresa. s pomo}x` |toj makrokomandy movno
  zapretitx prerywaniq ot ustrojstwa pri prerywanii wypolneniq program-
  my.

       esli fonowaq  programma  qwlqetsq  perezapuskaemoj  (po  komande
  monitora REENTER) i ispolxzuet makrokomandu .DEVICE, to EE neobhodimo
  wkl`~itx kak ~astx procedury powtornoj inicializacii wsej programmy.

       sistemnaq makrokomanda .DeVIse  opredelqet  tablicy  adresow,  w
  kotorye nuvno zapisatx ukazannu` informaci` pri zawer{enii programmy.

       makrokomanda .DEVICE ignoriruetsq, esli zapros postupaet iz wir-
  tualxnoj programmy pri rabote RT11XM.

       format makrokomandy:

          .DeVIse aRea,aDDR[,LINk]

  gde

  aRea   - adres tablicy argumentow emt iz dwuh slow;

  aDDR   - adres tablicy adresow i zna~enij; esli argument  ADDR  imeet

                                 - 106 -




           zna~enie "#0", to predydu}aq  uni~tovaetsq  (w  |tom  slu~ae
           argument LINK dolven otsutstwowatx);

  LINk   - argument, pozwolq`}ij ob'edinqtx tablicy adresow i  zna~enij
           pri posledowatelxnyh wypolneniqh makrokomandy .DeVIse;  esli
           argument opu}en, to predydu}aq tablica  adresow  i  zna~enij
           zamenqetsq nowoj, a ne ob'edinqetsq; odnako, newozmovno sow-
           mestnoe su}estwowanie tablic dwuh formatow.

       format tablicy argumentow emt (bez ob'edineniq):

                    !--------!--------!
        R0 => AREA: !   14   !   0    !
                    !--------!--------!
                    !      ADDR       !
                    !-----------------!

       format tablicy argumentow emt (s ob'edineniem):

                    !--------!--------!
        R0 => AREA: !   14   !   1    !
                    !--------!--------!
                    !      ADDR       !
                    !-----------------!

       oba formata tablicy  adresow  i  zna~enij  dolvny  zakan~iwatxsq
  nulewym slowom. no, w otli~ie ot formata bez  ob'edineniq,  format  s
  ob'edineniem dolven i na~inatxsq nulewym slowom:

                    format tablicy adresow i zna~enij

         bez ob'edineniq               s ob'edineniem

          !----------!                  !----------!
   ADDR:  !   adres  !           ADDR:  !     0    !
          !----------!                  !----------!
          ! zna~enie !                  !   adres  !
          !----------!                  !----------!
          !   adres  !                  ! zna~enie !
          !----------!                  !----------!
          :          :                  :          :
          :          :                  :          :
          !----------!                  !----------!
          ! zna~enie !                  !   adres  !
          !----------!                  !----------!
          !    0     !                  ! zna~enie !
          !----------!                  !----------!
                                        !     0    !
                                        !----------!

       tablica adresow i zna~enij zapolnqetsq polxzowatelem poslowno:

  slowo 1
         - adres, w kotoryj pome}aetsq informaciq;

  slowo 2
         - zna~enie, kotoroe neobhodimo zanesti po zawer{enii  program-
           my;

                                 - 107 -




  slowo 3
         - adres;

  slowo 4
         - zna~enie;

                   i t.d.

    zakan~iwaetsq tablica nulewym slowom.

       o{ibki otsutstwu`t.

       w sledu`}em primere po okon~anii raboty w q~ejku 172570 zanosit-
  sq 0.

       primer.

          .MCALL  .DEVICE,.EXIT
   START: .DEVICE #AREA              ;opredelitx tablicu
          .EXIT
   AREA:  .BYTE   0,10               ;blok argumentow emt
          .WORD   ATOD
   ATOD:  .WORD   172570             ;tablica adresow i
          .WORD   0                  ;zna~enij
          .WORD   0
          .END    START



       7.6.8. makrokomanda .DIR



       sistemnaq makrokomanda  .DIR  Bypolnqet  makrokomandu,  zadannu`
  tablicej argumentoB.

       format makrokomandy:

          .DIR aDDR

  gde

  aDDR   - adres tablicy argumentoB Bypolnqemoj makrokomandy.

       tablica argumentow movet bytx raspolovena w l`bom meste program-
  my polxzowatelq.

       o{ibki otsutstBu`t.

       primer priweden pri opisanii makrokomandy .SYNCH (p. 7.6.32).

                                 - 108 -




       7.6.9. makrokomanda .DSTATUS



       sistemnaq makrokomanda .DStatUS peredaet sistemnye harakteristi-
  ki ustrojstwa w programmu polxzowatelq.

       format makrokomandy:

          .DStatUS aDDR,DNam

  gde

  aDDR   - adres bloka iz 4 slow dlq informacii o sostoqnii ustrojstwa;

  DNam   - adres slowa, soderva}ego imq ustrojstwa (RaDIh-50), o  koto-
           rom neobhodimo polu~itx informaci`.

       imq ustrojstwa movet bytx logi~eskim  imenem.  sleduet  pomnitx,
  ~to |ta makrokomanda  movet  ispolxzowatxsq  tolxko  dlq  ustrojstwa,
  drajwer kotorogo raspoloven na sistemnom diske i o nem estx  informa-
  ciq w sistemnyh tablicah monitora.

       polxzowatelx polu~aet sledu`}u` informaci`:

  slowo 1
         - parametry ustrojstwa (drajwera);

  slowo 2
         - razmer drajwera w bajtah;

  slowo 3
         - adres zagruzki drajwera (sootwetstwuet  adresu  zagruzki+6);
           rawen 0, esli drajwer ne zagruven w pamqtx;

  slowo 4
         - razmer ustrojstwa w blokah; nolx - dlq ustrojstwa posledowa-
           telxnogo dostupa. poslednij blok na ustrojstwe  rawen  minus
           edinice.


       slowo parametrow ustrojstwa sodervit:

  bit 15 - esli sbro{en, ustrojstwo posledowatelxnogo  dostupa  (napri-
           mer, LP, TT, MT i t.d.), ina~e  ustrojstwo  prqmogo  dostupa
           (naprimer, RK);

  bit 14 - esli ustanowlen, to ustrojstwo tolxko dlq ~teniq  (naprimer,
           PR);

  bit 13 - esli ustanowlen, to ustrojstwo tolxko dlq zapisi  (naprimer,
           LP);

  bit 12 - esli ustanowlen,  to  ustrojstwo  s  nestandartnoj  fajlowoj
           strukturoj (naprimer, MT);

  bit 11 - esli ustanowlen, to pri udalenii programmy drajwer wypolnqet
           zawer{a`}ie  operacii  s  ustrojstwom,  ina~e  ne  wypolnqet
           zawer{a`}ih operacij na  ustrojstwe,  esli  |lement  o~eredi

                                 - 109 -




           aktiwen;

  bit 10 - esli sbro{en, to makrokomanda .SPFUN zapre}ena, ina~e  draj-
           wer movet wypolnqtx makrokomandu .SPFUN;

  bity 0 - 7
         - nomer, opredelq`}ij tip ustrojstwa.

       nive pere~isleny nomera ustrojstw, ispolxzuemyh w RT11:

  0      - disk s plawa`}imi golowkami kassetnogo tipa (RK);

  3      - ustrojstwo pe~ati parallelxnogo tipa (LP);

  4      - sistemnyj  terminal  (TT)  ili  drajwer  paketnoj  obrabotki
           (BATCH);

  6      - gibkij disk s dwojnoj plotnostx` (DY);

  7      - ustrojstwo wwoda/wywoda na perfolentu (PC);

  11     - magnitnaq lenta (MT);

  12     - disk s fiksirowannymi golowkami (RF);

  13     - nakopitelx na kassetnoj lente (CT);

  14     - ustrojstwo wwoda s perfokart (CR);

  20     - magnitnaq lenta s wysokoj plotnostx` (Mm);

  21     - paket smennyh diskow 20 ili 40 Mbajt (DP);

  22     - gibkij disk (DX);

  23     - smennyj disk s plawa`}imi golowkami 14 Mbajt (DM);

  25     - nulx-drajwer (NL);

  34     - drajwer swqzi w raspredelennoj sisteme na aktiwnom komplekse
           (DD);

  41     - ustrojstwo pe~ati posledowatelxnogo tipa (LS);

  42     - drajwer obmena mevdu zadaniqmi (MQ);

  44     - drajwer swqzi w raspredelennoj sisteme na passiwnom komplek-
           se (XT);

  60     - drajwer wirtualxnyh nositelej (UX,UY,UZ);

  377    - drajwer ras{irennoj pamqti (VM).

       o{ibki:

          kod              poqsnenie

           0     ustrojstwo ne obnaruveno w sistemnyh
                 tablicah monitora.

                                 - 110 -




       w primere opredelqetsq rezidentnostx drajwera i, w slu~ae  neob-
  hodimosti, drajwer zagruvaetsq ili wygruvaetsq.

       primer.

          .MCALL  .DSTATUS,.PRINT,.EXIT,.FETCH,.RELEAS
   START: .DSTATUS #CODE,#FTPR       ;polu~itx informaci`
                                     ;ob ustrojstwe
           BCC    1$
          .PRINT  #MSG
          .EXIT
   1$:     TST    CODE+4             ;uve zagruven?
           BNE    3$                 ;da
          .FETCH  #DRVR,#FTPR        ;net...zagruzitx
                                     ;drajwer
           BCC    2$
          .PRINT  #MSG1
          .EXIT
   2$:    .PRINT  #MSG2              ;pe~atx soob}eniq
          .EXIT
   3$:    .RELEAS #FTPR              ;wygruzitx drajwer
           BCC    4$
          .PRINT  #MSG3
          .EXIT
   4$:    .PRINT  #MSG4              ;pe~atx soob}eniq
          .EXIT
   CODE:  .BLKW   4                  ;blok informacii
   FTPR:  .RAD50  /RK0/              ;imq ustrojstwa
          .RAD50  /FILE  MAC/        ;imq fajla
   MSG:   .ASCIZ  /ustrojstwo otsutstwuet/
   MSG1:  .ASCIZ  /o{ibka FETCH/
   MSG2:  .ASCIZ  /drajwer rezidenten/
   MSG3:  .ASCIZ  /o{ibka RELEAS/
   MSG4:  .ASCIZ  /drajwer wygruven/
          .EVEN
   DRVR   = .                        ;adres zagruzki
                                     ;drajwera
          .END    START



       7.6.10. makrokomanda .EXIT



       sistemnaq makrokomanda .EXIT wyzywaet okon~anie programmy  polx-
  zowatelq.

       format makrokomandy:

          .EXIT

       wse nezawer{ennye makrokomandy .mRkt annuliru`tsq. wse  makroko-
  mandy wwoda/wywoda i podprogrammy zawer{eniq, wypolnqemye dlq dannogo
  zadaniq, zakan~iwa`tsq normalxno.

       esli pri wypolnenii makrokomandy .EXIT R0=0, to wypolnqetsq pod-
  razumewaemaq makrokomanda .nReSet,  zapre}aq  posledu`}ee  wypolnenie
  komand monitora ReeNteR, StaRt, sLoSe.

                                 - 111 -




       makrokomanda .EXIT pozwolqet programme polxzowatelq peredawatx w
  q~ejki 500-777 komandnye stroki dlq KMON, kotorye  wypolnq`tsq  posle
  zawer{eniq zadaniq. operaciq wypolnqetsq sledu`}im obrazom:

         - q~ejka (slowo, ne bajt) 510  dolvna  sodervatx  ob}ee  ~islo
           bajtow komandnyh strok, peredawaemyh dlq kmoN;
         - komandnye stroki, soderva}iesq s  512  q~ejki,  dolvny  bytx
           strokami direktiwy .aSsIZ, naprimer:

                      .=510
                      .WoRD     w-a
                A:    .aSsIZ    /sorY a.mas w.mas/
                      .aSsIZ    /DeLet a.mas/
                w  =  .

         - pered wypolneniem  makrokomandy  .EXIT  polxzowatelx  dolven
           ustanowitx bit snNIF$ w slowe sostoqniq  programmy  (JSW)  i
           o~istitx R0.

       pri pereda~e komandnyh strok dlq KMON ime`tsq sledu`}ie  ograni-
  ~eniq:

         - esli programma wyzwana iz komandnogo fajla, to ego  wypolne-
           nie prerywaetsq i wypolnq`tsq  komandnye  stroki  programmy;
           l`bye sledu`}ie stroki iz komandnogo fajla nikogda ne  budut
           wypolneny (t.e. ne wypolnqetsq wozwrat w komandnyj fajl);
         - iz programmy movet bytx wyzwan tolxko odin  komandnyj  fajl;
           stroka wyzowa  komandnogo  fajla  dolvna  bytx  poslednej  w
           komandnyh strokah, peredawaemyh dlq KMON;
         - makrokomanda .EXIT annuliruet  wyzowy  makrokomand  .sDFN  i
           .QSet i wypolnqet makrokomandu .UNLosk, esli byla  wypolnena
           makrokomanda .Losk; takim obrazom, komanda monitora sLoSe ne
           zakrywaet kanalow, otkrytyh s pomo}x` .sDFN;
         - makrokomanda .EXIT w podprogrammah zawer{eniq nedopustima.


       pRIME^ANIE. programma polxzowatelq sama obespe~iwaet celostnostx
  dannyh, peredawaemyh kmoN wo  wremq  wypolneniq  makrokomandy  .EXIT.
  neobhodimo, ~toby |ta oblastx ne portilasx stekom polxzowatelq.  esli
  makrokomanda .EXIT ispolxzuetsq  dlq  pereda~i  komandnyh  strok  dlq
  KMON, ukazatelx strok budet inicializirowan i ustanowlen rawnym  1000
  (wosxmeri~noe) pered zawer{eniem programmy.

       o{ibki otsutstwu`t.

       w primere posle okon~aniq  raboty  programmy  proishodit  polnaq
  raspe~atka kataloga.

       primer.

          .MCALL  .EXIT,.JSWDF
          .JSWDF                     ;opredelitx mnemoniku
                                     ;JSW i ego bitow
                                     ;(zdesx CHNIF$)
   START:  MOV    #510,R0
           MOV    #CMDSTR,R1
   1$:     MOV    (R1)+,(R0)+
           CMP    R1,#CMDEND
           BLO    1$

                                 - 112 -




           BIS    #CHNIF$,@#JSW      ;ustanowitx bit CHNIF$
           CLR    R0
          .EXIT
   CMDSTR:.WORD   CMDEND-CMDSTR      ;dlina komandnoj
                                     ;stroki
          .ASCIZ  "DIRECT/FULL *.*"  ;komandnaq stroka
   CMDEND:
          .EVEN
          .END    START



       7.6.11. makrokomandy .Fetsn/.RELEAS



       sistemnaq makrokomanda .FETCH (.RELEAS) ispolxzuetsq dlq zagruz-
  ki (udaleniq) w operatiwnu` pamqtx drajwera ustrojstwa wo wremq rabo-
  ty programmy.

       pri rabote RT11FB tolxko drajwery dlq programm operatiwnogo raz-
  dela (sistemnye i operatiwnoe) dolvny zagruvatxsq  komandoj  monitora
  LOAD.

       pri rabote RT11XM drajwery ustrojstw dolvny zagruvatxsq komandoj
  monitora LOAD pered zagruzkoj programm w l`boj  razdel  (fonowyj  ili
  operatiwnyj), no na~inaq s wersii 5.2 w RT11XM rabotaet i makrokoman-
  da .FETCH.

       pri rabote RT11SJ otrabotka obeih makrokomand zawisit ot  sgene-
  rirowannoj wersii monitora (naprimer, pri otkaze ot fajlowoj struktu-
  ry ispolxzowanie |tih  makrokomand  priwodit  k  snqti`  programmy  s
  wypolneniq).



       7.6.11.1. makrokomanda .FETCH



       sistemnaq makrokomanda .Fetsn  zagruvaet  drajwer  s  sistemnogo
  ustrojstwa w operatiwnu` pamqtx.

       format makrokomandy:

          .Fetsn aDDR,DNam

  gde

  aDDR   - adres, kuda dolven zagruvatxsq drajwer ustrojstwa;

  DNam   - adres slowa, soderva}ego imq ustrojstwa w kode RaDIh-50.

       adres w pamqti dlq zagruzki drajwera peresylaetsq w stek.  posle
  wypolneniq makrokomandy .Fetsn R0  sodervit  adres  perwoj  swobodnoj
  q~ejki wy{e drajwera. esli drajwer uve w pamqti, to R0  sodervit  tot
  ve adres, ~to i nahodq}ijsq w steke. esli  zna~enie  w  steke  <  400
  (wosxmeri~noe), to dlq drajwera wypolnqetsq makrokomanda .ReLeaS.


                                 - 113 -




       sledu`}ie makrokomandy trebu`t prisutstwiq drajwera w pamqti:

           .CLOSE          .LOOKUP          .ENTER
           .RENAME         .SPFUN           .DELET
           .READ           .READC           .READW
           .WRITE          .WRITC           .WRITW


       pRIME^ANIE. operacii wwoda/wywoda ne mogut bytx wypolneny,  esli
  ne zagruven drajwer ustrojstwa.

       o{ibki:

          kod               poqsnenie

           0     ustrojstwo otsutstwuet w sistemnyh
                 tablicah monitora; na sistemnom diske
                 net drajwera |togo ustrojstwa.

       primer priweden  pri  opisanii  makrokomandy  .DSTATUS  (sm.  p.
  7.6.9).



       7.6.11.2. makrokomanda .ReLeaS



       sistemnaq makrokomanda .ReLeaS udalqet ukazannyj drajwer iz ope-
  ratiwnoj pamqti.

       format makrokomandy:

          .ReLeaS DNam

  gde

  DNam   - adres slowa, soderva}ego imq ustrojstwa w kode RaDIh-50.

       posle makrokomandy .ReLeaS, ~toby wnowx ispolxzowatx ustrojstwo,
  neobhodimo wypolnitx makrokomandu .Fetsn.


       pRIME^ANIE. makrokomanda .ReLeaS ne udalqet drajwer, zagruvennyj
  komandoj monitora LoaD. |to movno sdelatx  tolxko  komandoj  monitora
  UNLOAD ili perezagruziw sistemu.

       makrokomanda .RELEAS ignoriruetsq, esli:

         - ukazano sistemnoe ustrojstwo;
         - drajwera ustrojstwa net w pamqti;
         - drajwer nahoditsq w pamqti (rezidenten), no zagruven  koman-
           doj monitora LOAD;
         - ispolxzuetsq l`boj iz programm operatiwnogo razdela (sistem-
           nogo ili operatiwnogo) pri rabote RT11FB.

                                 - 114 -




       o{ibki:

          kod                    poqsnenie

           0    ustrojstwo s ukazannym imenem otsutstwuet
                w sistemnyh tablicah monitora.

       primer priweden  pri  opisanii  makrokomandy  .DSTATUS  (sm.  p.
  7.6.9).



       7.6.12. makrokomanda .GTJB



       sistemnaq makrokomanda  .GtJw  wozwra}aet  parametry  zadaniq  w
  programmu polxzowatelq.

       format makrokomandy:

          .GtJw aRea,aDDR[,JOBBLK]

  gde

  aRea   - adres tablicy argumentow emt iz dwuh slow;

  aDDR   - adres bloka iz wosxmi ili dwenadcati slow,  kuda  pome}a`tsq
           parametry;

  JOBBLK - adres bloka iz treh slow, soderva}ih logi~eskoe imq  zadaniq
           w kode koi-7.

       format tablicy argumentow emt:

                    !--------!--------!
        R0 => AREA: !   20   !   0    !
                    !--------!--------!
                    !      ADDR       !
                    !-----------------!
                    !     JOBBLK      !
                    !-----------------!

       polxzowatelx polu~aet sledu`}ie parametry w bloke ADDR:

  slowo 1
         - nomer zadaniq ili linii; dlq  RT11SJ  nomer  zadaniq  wsegda
           nolx; w RT11FB(XM) pri poddervke sistemnyh zadanij dlq fono-
           wogo zadaniq - nolx, dlq sistemnyh zadanij - 2,  4,  6,  10,
           12, 14 i dlq operatiwnogo - 16; w RT11FB(XM)  bez  poddervki
           sistemnyh zadanij dlq fonowogo - nolx,  dlq  operatiwnogo  -
           dwa.

  slowo 2
         - werhnij adres razdela zadaniq (star{ij adres+2);

  slowo 3
         - nivnij adres razdela zadaniq;

                                 - 115 -




  slowo 4
         - adres na~ala oblasti kanalow wwoda/wywoda;

  slowo 5
         - adres sme{annoj oblasti zadaniq (dlq RT11FB(XM));

  slowo 6


                - nomer terminala, kotoryj qwlqetsq dlq zadaniq sistem-
                  nym (ispolxzuetsq tolxko pri nali~ii  mnogoterminalx-
                  noj poddervki); rawen nul`, esli net  mnogoterminalx-
                  noj poddervki;

           star{ij bajt
                - zarezerwirowan;

  slowo 7
         - star{ij wirtualxnyj adres dlq wirtualxnogo  zadaniq  (tolxko
           pri rabote RT11XM); rawen nul`, esli  l`boj  drugoj  monitor
           ili |to ne wirtualxnoe zadanie;

  slowa 8-9
         - zarezerwirowany;

  slowa 10-12
         - logi~eskoe imq zadaniq  w  kode  koi-7  (tolxko  pri  rabote
           RT11FB(XM) s poddervkoj sistemnyh zadanij); rawny nul`, esli
           poddervka sistemnyh zadanij  otsutstwuet;  ne  opredeleny  w
           RT11SJ.

       ~etwertoe slowo w  ADDR  (adres  oblasti  kanalow  wwoda/wywoda)
  oby~no ukazywaet na adres w sme{annoj oblasti zadaniq.  odnako,  esli
  byla wypolnena makrokomanda .CDFN, to adres  na~ala  oblasti  kanalow
  wwoda/wywoda budet qwlqtxsq adresom oblasti, ukazannoj  polxzowatelem
  w |toj makrokomande.

       esli argument JOBBLK ispolxzuetsq dlq odnogo iz sistemnyh  zada-
  nij (w interwale mevdu 0 i 16) pri zaprose statusa zadaniq on interp-
  retiruetsq kak nomer zadaniq. esli argument  JOBBLK  rawen  "ME"  ili
  "-1", to wozwra}aetsq informaciq o  teku}em  zadanii.  esli  argument
  JOBBLK otsutstwuet ili rawen "-3", to wozwra}a`tsq  tolxko  perwye  8
  slow informacii (t.e. kak dlq predydu}ej wersii sistemy ili dlq teku-
  }ej pri rabote RT11FB(XM) bez poddervki sistemnyh zadanij).

       o{ibki:

         kod                 poqsneniq

          0       ukazannogo zadaniq net w pamqti.

       w priwedennom nive primere opredelqetsq razdel, w kotorom  rabo-
  taet programma.

       primer.

          .MCALL  .GTJB,.PRINT,.EXIT
   START: .GTJB   #AREA,#JOBARG      ;polu~itx parametry
           MOV    #MSG,R0

                                 - 116 -




           TST    JOBARG             ;fonowyj razdel?
           BNE    1$                 ;net
           MOV    #MSG1,R0           ;da
   1$:    .PRINT                     ;pe~atx soob}eniq
          .EXIT
   MSG:   .ASCIZ  /programma w operatiwnom razdele/
   MSG1:  .ASCIZ  /programma w fonowom razdele/
          .EVEN
   AREA:  .BLKW   2                  ;blok argumentow emt
   JOBARG:.BLKW   8.                 ;blok parametrow
          .END    START



       7.6.13. makrokomanda .GVaL



       sistemnaq makrokomanda .GVaL wozwra}aet w R0 sodervimoe  ukazan-
  noj q~ejki monitora.

       format makrokomandy:

          .GVaL aRea,oFFSet

  gde

  aRea   - adres tablicy argumentow emt iz dwuh slow;

  oFFSet - sme}enie nuvnoj q~ejki ot na~ala monitora.

       format tablicy argumentow emt:

                    !--------!--------!
        R0 => AREA: !   34   !   0    !
                    !--------!--------!
                    !     OFFSET      !
                    !-----------------!

       makrokomanda .GVaL ispolxzuetsq tolxko dlq ~teniq i obespe~iwaet
  sohrannostx informacii w monitore.


       pRIME^ANIE. dlq sme}enij rekomenduetsq polxzowatxsq  mnemonikoj,
  polu~ennoj s pomo}x` makrokomandy .ROFDF.

  -2     - nomer zadaniq (linii);

  -4     - znak na~ala specialxnoj posledowatelxnosti znakow; uprawlqet
           parametrami drajwera terminala (kod 177);

  -6     - rawno "1" - priwilegirowannoe zadanie (zapu}eno priwilegiro-
           wannym polxzowatelem); "0" -  nepriwilegirowannoe  (zapu}eno
           nepriwilegirowannym polxzowatelem);

  -10    - rawno "1", PAR 7 otobraven na stranicu  wwoda/wywoda;  rawen
           "0", esli otobraven na monitor;

  -12    - nomer gruppy polxzowatelq, zapustiw{ego zadanie;

                                 - 117 -




  -14    - nomer polxzowatelq w gruppe;

  -16    - zarezerwirowano.

       o{ibki:

          kod              poqsnenie

           0     sme}enie wyhodit za predely rezidentnogo
                 monitora.

       w primere polxzowatelx polu~aet nomer wersii monitora  w  q~ejke
  MONVER i nomer korrekcii monitora w q~ejke MONUPD.

       primer.

          .MCALL  .GVAL,.EXIT,.ROFDF
          .ROFDF                     ;polu~itx mnemoniku
                                     ;sme}enij monitora
                                     ;(zdesx SYSVER)
   START: .GVAL   #AREA,#SYSVER      ;polu~itx w R0 soder-
                                     ;vimoe q~ejki monitora
           MOVB   R0,MONVER          ;polu~itx nomer wersii
           SWAB   R0
           MOVB   R0,MONUPD         ;polu~itx nomer korrekcii
          .EXIT
   MONVER:.BLKB
   MONUPD:.BLKB
   AREA:  .BLKW   2                  ;blok argumentow emt
          .END    START



       7.6.14. makrokomandy .HERR/.SERR



       makrokomandy .HERR/.SERR ispolxzu`tsq dlq uprawleniq (zapre}eniq
  ili razre{eniq) obrabotkoj serxeznyh o{ibok w programme polxzowatelq.



       7.6.14.1. makrokomanda .HERR



       sistemnaq makrokomanda .HERR zapre}aet obrabotku serxeznyh  o{i-
  bok w programme polxzowatelq. |ta makrokomanda ispolxzuetsq po  umol-
  ~ani`.

       format makrokomandy:

          .HERR

       format registra R0:

                    !--------!--------!
        R0 =>       !    5   !   0    !
                    !--------!--------!

                                 - 118 -




       sistemnaq makrokomanda .HERR razre{aet sisteme udalqtx programmu
  po serxeznoj o{ibke i wydawatx soob}enie ob o{ibke na terminal.

       o{ibki:

          obrabotku o{ibok proizwodit monitor.

       primer  priweden  pri  opisanii  makrokomandy  .SERR   (podpunkt
  7.6.14.2).



       7.6.14.2. makrokomanda .SERR



       sistemnaq makrokomanda .SERR  pozwolqet  programme  obrabatywatx
  serxeznye o{ibki i zapre}aet monitoru prekra}atx ee wypolnenie w slu-
  ~ae ih poqwleniq.

       format makrokomandy:

          .SeRR

       format registra R0:

                    !--------!--------!
        R0 =>       !    4   !   0    !
                    !--------!--------!

       wo wremq wypolneniq programmy mogut wozniknutx serxeznye o{ibki.
  naprimer, popytka osu}estwitx wwod/wywod na  ustrojstwo,  ne  ime`}ee
  drajwera w pamqti, ili popytka zagruzitx drajwer ustrojstwa na  mesto
  USR. oby~no |ti o{ibki wyzywa`t  prerywanie  wypolneniq  programmy  s
  soob}eniem ob o{ibke na sistemnyj terminal. odnako, w nekotoryh  slu-
  ~aqh neobhodimo predotwratitx prevdewremennoe okon~anie programmy iz-
  za |tih o{ibok.

       posle wypolneniq makrokomandy ustanawliwaetsq bit "s", a bajt 52
  sodervit otricatelxnyj kod o{ibki.

       w  nekotoryh  slu~aqh,  takih  kak  pri  wypolnenii  makrokomand
  .LOOKUP i .ENTER, makrokomanda .SERR ostawlqet otkrytymi kanaly. po|-
  tomu polxzowatel` samomu  neobhodimo  wypolnitx  nuvnu`  makrokomandu
  .PURGE ili .CLOSE dlq |tih kanalow.

       o{ibki:

          kod              poqsnenie

          -1     wyzow USR iz podprogrammy zawer{eniq;

          -2     otsutstwuet drajwer ustrojstwa, a dlq
                 dannoj operacii on neobhodim;

          -3     o{ibka ~teniq/zapisi kataloga;

          -4     o{ibka .Fetsn; libo proizo{la o{ibka wo
                 wremq s~itywaniq drajwera, libo popytka

                                 - 119 -




                 zagruzitx drajwer na mesto RMON ili USR;

          -5     o{ibka s~itywaniq owerleq;

          -6     w kataloge net mesta dlq fajlow;

          -7     nedopustimyj adres (tolxko pri rabote
                 RT11FB); popytka wypolnitx
                 dejstwie wne oblasti zadaniq;

         -10     nedopustimyj nomer kanala; nomer bolx{e,
                 ~em fakti~eskoe koli~estwo su}estwu`}ih
                 kanalow;

         -11     nedopustimaq emt; nedopustimyj kod funkcii.

       sistemnaq makrokomanda .SeRR ne obrabatywaet prerywaniq po  wek-
  toram 4 i 10, a takve prerywanie ot processora s  plawa`}ej  zapqtoj.
  oni obrabatywa`tsq sistemnymi makrokomandami .tRrSet, .SFra.

       w primere dlq makrokomandy .ENTER trebuetsq drajwer PC:, kotoryj
  ne zagruven w pamqtx. posle wypolneniq makrokomandy  .SERR  obrabotka
  o{ibok proishodit w programme, a posle wypolneniq makrokomandy  .HERR
  proishodit wyhod po o{ibke w monitor.

       primer.

          .MCALL  .ENTER,.HERR,.SERR,.PRINT,.EXIT,.USBDF
   START: .SERR                      ;zapretitx prerywanie
                                     ;programmy po o{ibke
          .USBDF                     ;opredelitx mnemoniku
                                     ;statusa zawer{eniq
                                     ;programmy USERRB
          .ENTER  #AREA,#1,#FILE     ;otkrytx fajl na PC:
           BCC    3$
           JSR    PC,ERR             ;idti na obrabotku
                                     ;o{ibki
          .HERR                      ;razre{itx prerywanie
                                     ;programmy po o{ibke
          .ENTER  #AREA,#1,#FILE     ;otkrytx fajl na PC:
           BCS    ERR1
   3$:    .EXIT
   ERR1:  .PRINT  #MSG
          .EXIT
   MSG:   .ASCIZ  /o{ibka .ENTER/
          .EVEN
   ERR:    MOVB   @#52,R0            ;podprogramma obrabotki
           NEG    R0                 ;o{ibok
           DEC    R0
           ASL    R0
           MOV    COD(R0),R0
          .PRINT
           BISB   #3,@#USERRB        ;ustanowitx zawer{enie s
                                     ;gruboj o{ibkoj
           RTS    PC
   COD:           C1
                  C2
                  C3
                  C4

                                 - 120 -




                  C5
                  C6
                  C7
                  C10
                  C11
   C1:    .ASCIZ  /USR?/
   C2:    .ASCIZ  /ne zagruven drajwer/
   C3:    .ASCIZ  /o{ibka ~teniq kataloga/
   C4:    .ASCIZ  /o{ibka .FETCH/
   C5:    .ASCIZ  /owerlej?/
   C6:    .ASCIZ  /net mesta w kataloge/
   C7:    .ASCIZ  /o{ibka adresacii/
   C10:   .ASCIZ  /neweren nomer kanala/
   C11:   .ASCIZ  /neweren kod emt/
          .EVEN
   AREA:  .BLKW   4                  ;blok argumentow emt
   FILE:  .RAD50  /PC/
          .WORD   0,0,0
          .END    START



       7.6.15. makrokomandy .HRESET/.SRESET



       makrokomandy .HRESET/.SRESET ispolxzuetsq dlq prekra}eniq opera-
  cij wwoda/wywoda, o~i}eniq o~eredi podprogramm  zawer{eniq,  udaleniq
  iz pamqti drajwerow ustrojstw.



       7.6.15.1. makrokomanda .HRESET



       sistemnaq  makrokomanda  .HRESET  o~i}aet  kanaly  wwoda/wywoda,
  oswobovdaet drajwery ustrojstw, zagruvennye w operatiwnu`  pamqtx  po
  makrokomande .FETCH, i prekra}aet wse operacii wwoda/wywoda.

       format makrokomandy:

          .HRESET

       sistemnaq makrokomanda .HRESET ne ispolxzuetsq dlq sbrosa  appa-
  ratnyh o{ibok.

       sistemnaq makrokomanda .HRESET dejstwitelxna tolxko  dlq  swoego
  zadaniq. operacii wwoda/wywoda dlq drugih programm prodolva`t  wypol-
  nqtxsq.

       o{ibki otsutstwu`t.

       primer priweden pri opisanii makrokomandy .CDFN (sm. p. 7.3.1).

                                 - 121 -




       7.6.15.2. makrokomanda .SRESET



       sistemnaq makrokomanda .SRESET inicializiruet opredelennye  tab-
  licy monitora, swqzannye s programmoj:  oswobovdaet  kanaly,  o~i}aet
  o~eredx podprogramm zawer{eniq, udalqet zagruvennye drajwery.

       format makrokomandy:

          .SRESET

       drajwery sistemnyh ustrojstw i  drajwery,  zagruvennye  komandoj
  monitora LoaD, osta`tsq rezidentnymi.

       wozwra}aet  k  ispolxzowani`  tolxko  16  (desqti~noe)   kanalow
  wwoda/wywoda. l`bye kanaly, otkrytye sistemnoj  makrokomandoj  .sDFN,
  iskl`~a`tsq.

       ~toby otkrytx bolx{e 16 kanalow posle wypolneniq .SReSet,  neob-
  hodimo powtoritx makrokomandu .QSet ili .CDFN.

       o~i}aet o~eredx podprogramm zawer{eniq.

       o{ibki otsutstwu`t.

       primer priweden pri opisanii makrokomandy .RCTRLO (p. 7.6.23).



       7.6.16. makrokomanda .INteN



       sistemnaq makrokomanda .INteN soob}aet monitoru o woznik{em pre-
  rywanii,  perekl`~aet  rabotu  w  sostoqnie  "sistema"  (w  sistemnyj
  revim), ustanawliwaet  trebuemyj  prioritet  processora  i  sohranqet
  sodervimoe registrow R4 i R5 pered pereda~ej uprawleniq  podprogramme
  obsluviwaniq prerywanij.  l`bye  drugie  registry  pri  neobhodimosti
  dolvny sohranqtxsq polxzowatelem.

       format makrokomandy:

          .INteN rRIo[,rIs]

  gde

  rRIo   - trebuemyj prioritet processora dlq obrabotki prerywanij;

  rIs    - neobqzatelxnyj argument.

       argument rIs ukazywaet, ~to  podprogramma  obrabotki  prerywaniq
  napisana w pozicionno-nezawisimom kode, ina~e  on  dolven  otsutstwo-
  watx. argument obqzatelen  dlq  podprogramm  obrabotki  prerywanij  w
  drajwere.

       wse wne{nie prerywaniq perewodqt  prioritet  processora  na  7-j
  urowenx. makrokomanda .INteN ponivaet prioritet processora do trebue-
  moj weli~iny.

                                 - 122 -




       wyhod iz programmy obrabotki  prerywaniq,  kotoraq  ispolxzowala
  makrokomandu .INteN, osu}estwlqetsq po RtS rs.

       o{ibki otsutstwu`t.

       primer priweden pri opisanii makrokomandy .SYNCH (p. 7.6.32).



       7.6.17. makrokomanda .JSWDF



       sistemnaq makrokomanda .JSWDF opredelqet simwoly i mnemoni~eskie
  obozna~eniq razrqdow slowa sostoqniq programmy.

       format makrokomandy:

          .JSWDF

       ras{irenie makrokomandy:

   JSW     =^O44
   USWAP$  =^O100000
   TTLC$   =^O40000
   RSTRT$  =^O20000
   TTSPC$  =^O10000
   CHNIF$  =^O4000
   VIRT$   =^O2000
   OVLY$   =^O1000
   CHAIN$  =^O400
   HLTER$  =^O200
   TCBIT$  =^O100
   ESCFL$  =^O40
   ESCSQ$  =^O20
   GTLIN$  =^O10

       dannaq makrokomanda ne generiruet kodow emt,  a  qwlqetsq  ~isto
  opisatelxnoj.

       o{ibki otsutstwu`t.

       primer priweden pri opisanii makrokomandy .EXIT (sm. p. 7.6.10).



       7.6.18. makrokomandy .LOCK/.TLOCK/.UNLOCK



       makrokomandy .LOCK/TLOCK/UNLOCK ispolxzu`tsq dlq uprawleniq  USR
  iz programmy polxzowatelq - zagruzka USR w ukazannu` oblastx pamqti i
  zakreplenie ee za dannoj programmoj, snqtie monopolxnogo  ispolxzowa-
  niq i udalenie iz pamqti, libo prowerka, zakreplena li USR za  drugoj
  programmoj.

       makrokomanda .LOCK/TLOCK/UNLOCK zapre}aet  powtornoe  s~itywanie
  programmy polxzowatelq, po|tomu neobhodimo, ~toby ee wyzow ne ishodil
  iz oblasti, kotoraq budet wygruvatxsq w fajl  swopinga  USR.  w  |toj

                                 - 123 -




  oblasti ne dolvna takve sodervatxsq informaciq dlq makrokomand,  tre-
  bu`}ih wyzow USR.

       ne sleduet razru{atx oblastx USR (dave esli ona ne nuvna)  posle
  wypolneniq makrokomandy .Losk, t.k.  |to  priwedet  k  nepredwidennym
  rezulxtatam pri wypolnenii makrokomandy .UNLosk.

       ~islo makrokomand .LOCK i .UNLOCK dolvno  sowpadatx.  esli  dano
  bolx{e zaprosow .LOCK, to USR ostaetsq  rezidentnoj  w  pamqti.  esli
  dano bolx{e zaprosow .UNLOCK w programme, to oni ignoriru`tsq.

       w mnogozada~nom monitore rekomenduetsq ispolxzowatx makrokomandy
  LOCK/UNLOCK tolxko, esli neobhodimo. esli programma  zakreplqet  USR,
  to nikakaq drugaq iz programm ne movet ispolxzowatx ee  do  teh  por,
  poka ona ne budet oswobovdena.



       7.6.18.1. makrokomanda .LOCK



       sistemnaq makrokomanda .Losk zagruvaet USR (esli ona ne zagruve-
  na) i delaet ee rezidentnoj w operatiwnoj pamqti.

       format makrokomandy:

          .LOCK

       pri zagruzke USR wozmovny sledu`}ie situacii:

         - USR net w pamqti i pri zagruzke ona perekrywaet ~astx  prog-
           rammy; w |tom slu~ae |ta ~astx programmy wygruvaetsq w  fajl
           swopinga (SWAP.SYS);  posle  |togo  osu}estwlqetsq  zagruzka
           USR;

         - USR ne rezidentna w pamqti i  pri  zagruzke  ne  perekrywaet
           programmu; osu}estwlqetsq zagruzka USR;

         - USR uve rezidentna i zakreplena  za  teku}ej  programmoj;  w
           |tom slu~ae makrokomanda otrabatywaet kak NOP (pustaq opera-
           ciq);

         - USR rezidentna i ne zakreplena ni za odnoj programmoj;  zak-
           replqetsq za teku}ej programmoj;

         - USR rezidentna i zakreplena za  drugoj  programmoj;  teku}aq
           programma perehodit w revim ovidaniq i wypolnenie  programmy
           budet prodolveno tolxko posle togo, kak  USR  oswoboditsq  i
           budet zakreplena za dannoj programmoj.

       pri rabote RT11FB wyzow CSI pri wwode stroki s terminala  priwo-
  dit k wypolneni` neqwnoj makrokomandy .UNLOCK.

       o{ibki otsutstwu`t.

       primer priweden  pri  opisanii  makrokomandy  .UNLOCK  (podpunkt
  7.6.18.3).

                                 - 124 -




       7.6.18.2. makrokomanda .TLOCK



       sistemnaq makrokomanda .TLOCK prowerqet, zakreplena li za drugoj
  programmoj USR; esli USR swobodna, to wypolnqetsq makrokomanda .LOCK,
  w protiwnom slu~ae proishodit  wozwrat  w  programmu  polxzowatelq  s
  ustanowlennym "C" bitom.

       format makrokomandy:

          .tLosk

       format registra R0:

                    !--------!--------!
        R0 =>       !    7   !   0    !
                    !--------!--------!

       wozwrat s ustanowlennym bitom  "C"  ozna~aet,  ~to  makrokomanda
  .TLOCK ne wypolnena.

       o{ibki:

          kod              poqsnenie

           0     USR uve ispolxzuetsq drugoj programmoj.

       primer.

          .MCALL  .TLOCK,.LOOKUP,.UNLOCK,.PRINT,.EXIT
   START: .TLOCK                     ;USR zanqta?
           BCS    SUSPND             ;da
          .LOOKUP #AREA,#4,#J1NAM    ;net...otkrytx fajl
           BCS    LKERR
          .UNLOCK                    ;oswoboditx USR
          .EXIT
   SUSPND: JSR    PC,SPSJOB
           JSR    PC,SCHED
           BR     START
   AREA:  .BLKW   10
   J1NAM: .RAD50  /DK TEST1 TMP/
   LKERR: .PRINT  #LKMSG
          .EXIT
   LKMSG: .ASCIZ  /o{ibka LOOKUP/
          .EVEN
   SPSJOB: .                          ;tekst podprogrammy
           .
           RTS    PC
   SCHED:  .                          ;tekst podprogrammy
           .
           RTS    PC
          .END    START

                                 - 125 -




       7.6.18.3. makrokomanda .UNLosk



       sistemnaq makrokomanda .UNLosk otmenqet zapre}enie swopinga USR,
  zadannoe makrokomandoj .LOCK.

       format makrokomandy:

          .UNLosk

       esli makrokomanda .Losk trebowala swoping, to .UNLosk  zagruvaet
  programmu polxzowatelq obratno w pamqtx.

       esli USR ne trebuet swopinga, to .UNLosk ignoriruetsq.

       esli  wypolneno  bolx{e  makrokomand  .UNLosk,  ~em  makrokomand
  .Losk, to li{nie makrokomandy ignoriru`tsq.

       o{ibki otsutstwu`t.

       w primere makrokomandoj .SETTOP zapra{iwaetsq  wsq  pamqtx,  ~to
  priwodit k nerezidentnosti USR. pered otkrytiem kanala, makrokomandoj
  .LOCK USR zanositsq w  pamqtx  i  stanowitsq  rezidentnoj,  t.e.  pri
  wypolnenii makrokomand .LOOKUP swopinga ne proishodit. posle wypolne-
  niq makrokomandy .UNLOCK USR snowa stanowitsq nerezidentnoj.

       primer.

           .MCALL .LOCK,.UNLOCK,.SETTOP,.SCMDF
           .MCALL .LOOKUP,.PRINT,.EXIT
   START:  .SCMDF                    ;opredelitx mnemoniku
                                     ;sistemnoj oblasti swqzi
                                     ;(zdesx SYSPTR)
           .SETTOP @#SYSPTR          ;zaprositx ws` pamqtx
           .LOCK                     ;wyzow USR w pamqtx
           .LOOKUP #AREA,#0,#DEV1    ;ispolxzowanie USR
           BCS    1$
           .LOOKUP #AREA,#1,#DEV2
           BCS    1$
           .UNLOCK                   ;udalitx USR iz pamqti
           .EXIT
   1$:     .PRINT #MSG
           .EXIT
   MSG:    .ASCIZ /o{ibka .LOOKUP/
           .EVEN
   AREA:   .BLKW  3                  ;blok argumentow emt
   DEV1:   .RAD50 /SY FORTRASAV/
   DEV2:   .RAD50 /SY PATCH SAV/
           .END   START

                                 - 126 -




       7.6.19. makrokomandy .MFPS/.MTPS



       makrokomandy .MFPS/.MTPS ispolxzu`tsq dlq polu~eniq informacii o
  teku}em prioritete processora ili dlq ego korrekcii.

       pri rabote RT11XM |ti makrokomandy mogut bytx ispolxzowany tolx-
  ko priwilegirowannym zadaniem, no ne dostupny dlq wirtualxnogo.

       sodervimoe registra R0 sohranqetsq pri wypolnenii l`boj iz  mak-
  rokomand.



       7.6.19.1. makrokomanda .mFrS



       sistemnaq makrokomanda .mFrS ispolxzuetsq dlq s~itywaniq  razrq-
  dow prioriteta iz slowa sostoqniq processora.

       format makrokomandy:

          .mFrS aDDR

  gde

  aDDR   - adres, w kotoryj pome}aetsq zna~enie prioriteta. esli  adres
           otsutstwuet, zna~enie pome}aetsq w stek.


       pRIME^ANIE. kody uslowij razru{a`tsq w processe wypolneniq  mak-
  rokomandy. po|tomu nelxzq ispolxzowatx |tu makrokomandu dlq opredele-
  niq kodow uslowij. ispolxzujte oby~nye instrukcii perehoda.

       o{ibki otsutstwu`t.

       primer  priweden  pri  opisanii  makrokomandy  .MTPS   (podpunkt
  7.6.19.2).



       7.6.19.2. makrokomanda .mtrS



       sistemnaq makrokomanda .mtrS ustanawliwaet razrqdy prioriteta  i
  T-bit w slowe sostoqniq processora.

       format makrokomandy:

          .mtrS aDDR

  gde

  aDDR   - adres, sodervimoe kotorogo zapisywaetsq  w  slowo  sostoqniq
           processora. esli adres otsutstwuet, zna~enie beretsq iz ste-
           ka. esli polxzowatelx rabotaet so  stekom,  neobhodimo  pom-

                                 - 127 -




           nitx, ~to star{ij bajt dolven bytx rawen  nul`,  a  zna~enie
           zapisywatxsq w mlad{ij bajt.

       o{ibki otsutstwu`t.

       w primere prioritet sohranqetsq w steke,  ustanawliwaetsq  nowyj
  prioritet, a zatem wosstanawliwaetsq staryj.

       primer.

          .MCALL  .MFPS,.MTPS,.EXIT
   START:  JSR    PC,PICKQ
           NOP
           NOP
           NOP
          .EXIT
   PICKQ: .MFPS                      ;sohranitx prioritet
                                     ;w steke
           MOV    #QHEAD,R4
          .MTPS   #340               ;ustanowitx prioritet 7
           MOV    @R4,R5
           BEQ    1$
           MOV    @R5,@R4
          .MTPS                      ;wosstanowitx prioritet
                                     ;iz steka
           CLZ
   1$:     RTS    PC
   QHEAD: .WORD   Q1
   Q1:    .WORD   Q2,0,0
   Q2:    .WORD   Q3,0,0
   Q3:    .WORD   0,0,0
          .END    START



       7.6.20. makrokomandy .POP/.PUSH



       makrokomandy .POP/.PUSH ispolxzu`tsq dlq izwle~eniq ili sohrane-
  niq w steke neobhodimoj informacii.



       7.6.20.1. makrokomanda .POP



       sistemnaq makrokomanda .ror wybiraet zna~eniq iz steka  i  pome-
  }aet ih w ukazannye adresa.

       format makrokomandy:

          .POP ADDR

  gde

  ADDR   - adres, kuda pome}aetsq zna~enie iz steka.


                                 - 128 -




       neskolxko adresow dolvny zakl`~atxsq w uglowye skobki.

       naprimer:

                        .POP <ADR1,ADR2,...,ADRN>

       o{ibki otsutstwu`t.

       primer priweden pri opisanii makrokomandy .DATE (sm. p. 7.6.5).



       7.6.20.2. makrokomanda .PUSH



       sistemnaq makrokomanda .PUSH zanosit sodervimoe ukazannyh  argu-
  mentow w stek.

       format makrokomandy:

          .PUSH ADDR

  gde

  ADDR   - argument, zna~enie kotorogo neobhodimo zanesti w stek.

       neskolxko argumentow zakl`~a`tsq w uglowye skobki.

       naprimer:

                       .PUSH <ADR1,ADR2,...,ADRN>

       o{ibki otsutstwu`t.

       primer priweden pri opisanii makrokomandy .DATE (sm. p. 7.6.5).



       7.6.21. makrokomandy .PROTECT/.UNPROTECT



       makrokomandy .PROTECT/.UNPROTECT  ispolxzu`tsq  dlq  zakrepleniq
  (oswobovdeniq) ustrojstwa za dannoj programmoj wo wremq  ee  wypolne-
  niq.



       7.6.21.1. makrokomanda .PROTECT



       sistemnaq makrokomanda .rRotest daet programme wozmovnostx mono-
  polxnogo ispolxzowaniq wektora ustrojstwa w diapazone 0-476  (wosxme-
  ri~nyh).

       format makrokomandy:

                                 - 129 -




          .PROTECT AREA,ADDR

  gde

  AREA   - adres tablicy argumentow emt iz treh slow;

  ADDR   - adres wektora, kotoryj dolven bytx zakreplen.

       format tablicy argumentow emt:

                    !--------!--------!
        R0 => AREA: !   31   !   0    !
                    !--------!--------!
                    !      ADDR       !
                    !-----------------!
                    !     ADDR+2      !
                    !-----------------!

       uspe{noe wypolnenie sistemnoj  makrokomandy  .rRotest  ozna~aet,
  ~to ukazannyj wektor w dannyj moment ne ispolxzuetsq drugim  zadaniem
  ili monitorom i zakreplqetsq za dannoj programmoj.

       o{ibki:

          kod              poqsnenie

           0     wektor uve ispolxzuetsq i ne movet bytx
                 zakreplen;

           1     adres (ADDR) > 476 (wosxmeri~nyh) ili ne
                 kraten 4.

       primer priweden pri opisanii makrokomandy  .UNPROTECT  (podpunkt
  7.6.21.2).



       7.6.21.2. makrokomanda .UNPROTECT



       sistemnaq makrokomanda .UNPROTECT oswobovdaet wektor  ustrojstwa
  w diapazone 0-476.

       format makrokomandy:

          .UNPROTECT AREA,ADDR

  gde

  AREA   - adres tablicy argumentow emt iz dwuh slow;

  ADDR   - adres wektora, kotoryj dolven bytx oswobovden.

                                 - 130 -




       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !   31   !   1    !
                    !--------!--------!
                    !      ADDR       !
                    !-----------------!

       o{ibki:

          kod              poqsnenie

           1     adres (aDDR) > 476 (wosxmeri~nyh) ili ne
                 kraten 4.

       primer.

          .MCALL  .PROTECT,.UNPROTECT,.EXIT,.PRINT
   START: .PROTECT #AREA,#234        ;za}ita q~eek 234, 236
           BCS    INUSE
           .
           .
           .
          .UNPROTECT #AREA,#234      ;oswoboditx q~ejki
          .EXIT
   INUSE: .PRINT  #ERR
          .EXIT
   ERR:   .ASCIZ  /o{ibka PROTECT/
          .EVEN
   AREA:  .BLKW   2                  ;blok argumentow emt
          .END    START



       7.6.22. makrokomanda .QSET



       sistemnaq makrokomanda .QSET uweli~iwaet dlinu o~eredi |lementow
  wwoda/wywoda, podprogramm zawer{eniq i t.p.

       w BL-monitore komanda .QSET otrabatywaetsq w zawisimosti ot sge-
  nerirowannoj wersii monitora (naprimer, pri otkaze ot fajlowoj struk-
  tury ispolxzowanie |tih makrokomand priwodit  k  snqti`  programmy  s
  wypolneniq).

       format makrokomandy:

          .QSET ADDR,LEN

  gde

  ADDR   - na~alxnyj adres oblasti dlq nowyh |lementow o~eredi;

  LEN    - ~islo nowyh |lementow o~eredi.

       w RT11SJ(FB) kavdyj |lement o~eredi zanimaet semx slow. w RT11XM
  - desqtx slow. sledowatelxno, oblastx, otwodimaq dlq o~eredi,  dolvna
  rawnqtxsq:

                                 - 131 -




         - dlq RT11SJ(FB) - LEN*7;

         - dlq RT11XM - LEN*10.

  dlq raboty programmy, nezawisimo ot tipa monitora,  neobhodimo  wyde-
  litx maksimalxnyj razmer oblasti dlq |lementa o~eredi (10 slow). pos-
  le wypolneniq makrokomandy w R0 wozwra}aetsq  dejstwitelxnyj  werhnij
  adres |toj oblasti.

       makrokomanda .QSET movet wyzywatxsq stolxko  raz,  skolxko  tre-
  buetsq.

       oblastx dlq |lementow o~eredi rezerwiruetsq polxzowatelem. neob-
  hodimo sleditx, ~toby programma ne izmenqla |lementy,  esli  oni  uve
  ustanowleny. posle wypolneniq makrokomandy R0 sodervit adres  perwogo
  slowa posle oblasti |lementow o~eredi.

       makrokomandy .SRESET i .HRESET otmenq`t wse  o~eredi  |lementow,
  opredelennye polxzowatelem. posle nih neobhodimo  powtoritx  makroko-
  mandu .QSET, ~toby snowa opredelitx oblastx dlq |lementow o~eredi.

       |lementy o~eredi zadannye makrokomandoj .QSET ne dolvny perekry-
  watxsq s oblastx`, w kotoru`  obmeniwaetsq  USR,  i  raspolagatxsq  w
  owerlejnoj oblasti.

       pri rabote RT11XM oblastx dlq |lementow o~eredi dolvna  raspola-
  gatxsq w mlad{ih 56 kbajt pamqti, t.k. dolvna bytx dostupna pri otob-
  ravenii w sistemnom revime. krome togo, |lementy  o~eredi  ne  dolvny
  razme}atxsq w wirtualxnom adresnom  prostranstwe,  otobravaemym  PAR1
  (oblastx adresow s 20000 do 37776).

       nivepere~islennye makrokomandy trebu`t |lement o~eredi:

            .READ           .READC          .READW
            .WRITE          .WRITC          .WRITW
            .RCVD           .RCVDC          .RCVDW
            .SDAT           .SDATC          .SDATW
            .TWAIT          .MRKT

       o{ibki:

          pri rabote RT11XM popytka naru{itx granicy
          oblasti, otobravaemoj PAR1, priwodit k soob}e-
          ni` ?MON-F-ADDR ERROR. |ta o{ibka movet bytx
          ustranena s pomo}x` makrokomandy .SERR.

       primer priweden pri opisanii makrokomandy .MRKT (sm. p. 7.5.4).



       7.6.23. makrokomanda .RstRLo



       sistemnaq makrokomanda .RstRLo razre{aet wywod na sistemnyj ter-
  minal (sbrasywaet flag stRL/o).

       format makrokomandy:

                                 - 132 -




          .RstRLo

       komanda <stRL/o>, wwedennaq s terminala, zapre}aet wywod na ter-
  minal. razre{itx wywod na terminal movno powtornym wwedeniem <stRL/o>
  s terminala ili s pomo}x` makrokomandy .RstRLo.

       o{ibki otsutstwu`t.

       w primere polxzowatelx s klawiatury terminala zapre}aet wywod na
  terminal. w programme makrokomanda .RCTRLO razre{aet wywod na  termi-
  nal, o ~em ukazywaet poqwlenie zwezdo~ki na |krane.

       primer.

          .MCALL  .RCTRLO,.CSIGEN,.EXIT,.SRESET
   START: .RCTRLO                    ;razre{itx wywod na tt:
          .CSIGEN #DSPACE,#DEXT,#0   ;wwesti komandnu`
                                     ;stroku
           BCS    NSCI
          .READW  #AREA,#3,#BUFF,#256.,#0 ;~itatx
           BCS    NRE
          .WRITW  #AREA,#0,#BUFF,#256.,#0 ;zapisatx
           BCS    NWR
          .SRESET
           JMP    START
   NCSI:  .PRINT  #MSG
          .EXIT
   NRE:   .PRINT  #MSG1
          .EXIT
   NWR:   .PRINT  #MSG2
          .EXIT
   MSG:   .ASCIZ  /o{ibka CSI/
   MSG1:  .ASCIZ  /o{ibka READ/
   MSG2:  .ASCIZ  /o{ibka WRITE/
          .EVEN
   DEXT:  .WORD   0,0,0,0            ;blok ras{irenij
   AREA:  .BLKW   5                  ;blok argumentow emt
   BUFF:  .BLKW   256.               ;bufer wwoda/wywoda
   DSPACE  =.                        ;adres zagruzki
                                     ;drajwerow
          .END    START



       7.6.24. makrokomanda .RoFDF



       sistemnaq makrokomanda .RoFDF opredelqet mnemoni~eskie  sme}eniq
  poleznyh q~eek rezidentnogo monitora.

       format makrokomandy:

          .RoFDF

       ras{irenie makrokomandy:

   $USRLC  =^O266
   QCOMP   =^O270

                                 - 133 -




   SPUSR   =^O272
   SYUNIT  =^O275
   SYSVER  =^O276
   SYSUPD  =^O277
   TTKS    =^O304
   TTKB    =^O306
   TTPS    =^O310
   TTPB    =^O312
   MAXBLK  =^O314
   SYSCH   =^O324
   GTVEC   =^O354
   $MTPS   =^O360
   $MFPS   =^O362
   STATWD  =^O366
   USRAREA =^O374
   IFMXNST =^O377
   EMTRTN  =^O400
   FORK    =^O402

       dannaq makrokomanda ne generiruet kodow emt,  a  qwlqetsq  ~isto
  opisatelxnoj.

       o{ibki otsutstwu`t.

       primer priweden pri opisanii makrokomandy .GVAL (p. 7.6.13).



       7.6.25. makrokomanda .Sssa



       sistemnaq makrokomanda .Sssa zapre}aet zawer{enie  programmy  po
  komande operatora <stRL/s>; daet wozmovnostx programme razli~atx odi-
  narnu` i dwojnu` komandy <stRL/s>.

       w RM-monitore |ta  komanda  ne  imeet  smysla,  t.k.  w  sisteme
  otsutstwuet KMON.

       format makrokomandy:

          .Sssa aRea,aDDR

  gde

  aRea   - adres tablicy argumentow emt iz dwuh slow;

  aDDR   - adres, prednazna~ennyj dlq slowa sostoqniq terminala (rezer-
           wiruetsq polxzowatelem).

       format tablicy argumentow emt:

                    !--------!--------!
        R0 => AREA: !   35   !   0    !
                    !--------!--------!
                    !      ADDR       !
                    !-----------------!

       sistemnaq makrokomanda .Sssa perehwatywaet i wremenno  zapre}aet

                                 - 134 -




  komandu operatora <stRL/s>, prepqtstwuq zawer{eni` programmy. simwoly
  <stRL/s> wosprinima`tsq kak oby~nye simwoly bez specialxnyh sistemnyh
  funkcij i pome}a`tsq wo whodnoj bufer.

       pri |tom, esli poqwlqetsq dwojnaq  komanda  <stRL/s>  ustanawli-
  waetsq 15 bit slowa sostoqniq terminala (aDDR).  polxzowatelx  dolven
  sam o~i}atx ego dlq dalxnej{ego ispolxzowaniq.

       makrokomanda .SCCA ne wliqet na <CTRL/C> iz komandnogo fajla.

       esli aDDR=0, to makrokomanda .SCCA ignoriruetsq. w  |tom  slu~ae
  programma prerywaetsq po <CTRL/C>, esli ovidaet wwoda s terminala,  i
  po dwojnomu <CTRL/C> w l`bom drugom slu~ae.

       o{ibki otsutstwu`t.

       w programme zapre}aetsq wyhod po CTRL/C pri wwode l`boj (wkl`~aq
  CTRL/C) informacii s terminala. pri  wwode  dwojnogo  CTRL/C  monitor
  ustanawliwaet 15 bit dlq  informirowaniq  programmy.  dlq  razre{eniq
  prerywaniq programmy po dwojnomu CTRL/C neobhodimo wypolnitx makroko-
  mandu s ADDR=0.

       primer.

          .MCALL  .SCCA,.PRINT,.TTYIN,.TTYOUT
   JSW    = 44
   TTSPC$ = 10000
   START:  MOV    #SCCA,R1
          .SCCA   #AREA,R1           ;zapretitx CTRL/C
           BIS    #TTSPC$,@#JSW
           CLR    (R1)
          .PRINT  #MSG
   1$:     TST    (R1)               ;dwojnoe CTRL/C?
           BNE    2$                 ;da
          .TTYIN                     ;net...wwesti simwol
          .TTYOUT                    ;|ho-pe~atx
           BR     1$
   2$:    .PRINT  #CTRLC
          .SCCA   #AREA,#0           ;razre{itx prerywanie
                                     ;po CTRL/C
           BR     .
   SCCA:  .BLKW   1                  ;slowo sostoqniq
                                     ;terminala
   AREA:  .BLKW   2                  ;blok argumentow emt
   MSG:   .ASCII  /primer makrokomandy .SCCA/<15><12>
          .ASCIZ  "wwedite CTRL/C dwa raza"
          .EVEN
   CTRLC: .ASCII  "CTRL/C wwedena"<15><12>
          .ASCII  "wwedite dwojnoe CTRL/C dlq wyhoda"
          .ASCIZ  / iz programmy/
          .EVEN
          .END    START

                                 - 135 -




       7.6.26. makrokomanda .SsmDF



       sistemnaq makrokomanda .SsmDF opredelqet mnemoni~eskie obozna~e-
  niq sistemnoj oblasti swqzi.

       format makrokomandy:

          .SsmDF

       ras{irenie makrokomandy:

   USERPC  =^O40
   USERSP  =^O42
   UFLOAT  =^O46
   USERTOP =^O50
   SYSPTR  =^O54
   TTFILL  =^O56
   TTNFIL  =^O57

       dannaq makrokomanda ne generiruet kodow emt,  a  qwlqetsq  ~isto
  opisatelxnoj.

       o{ibki otsutstwu`t.

       primer priweden pri opisanii makrokomandy .UNLOCK (sm.  podpunkt
  7.6.18.3).



       7.6.27. makrokomanda .Settor



       sistemnaq makrokomanda .Settor pozwolqet programme  polxzowatelq
  zapra{iwatx nowyj adres werhnej granicy pamqti dlq programmy.  dopol-
  nitelxnaq pamqtx movet ispolxzowatxsq dlq razme}eniq buferow i  rabo-
  ~ih oblastej.

       format makrokomandy:

          .Settor aDDR

  gde

  ADDR   - adres slowa, soderva}ego  werhn``  granicu  programmy.  esli
           ADDR=-2, to zapra{iwaetsq wsq dostupnaq programme pamqtx.

       monitor opredelqet dopustimostx |togo adresa, neobhodimostx swo-
  pinga w slu~ae ispolxzowaniq USR. esli werhnqq granica pamqti, zapra-
  {iwaemaq programmoj, raspolovena nive na~alxnogo adresa USR, to  swo-
  ping ne proizwoditsq,  t.k.  USR  pri  |tom  ne  perekrywaetsq.  esli
  .Settor iz fonowoj programmy zapra{iwaet werhn`` granicu wy{e na~alx-
  nogo adresa USR, a komanda "Set USR NoSWar" ne byla wydana,  to  tre-
  buetsq swoping.

       po zawer{enii sistemnoj makrokomandy  .Settor  R0  i  q~ejka  50
  (wosxmeri~noe) sodervat maksimalxnyj adres predostawlqemoj  polxzowa-

                                 - 136 -




  tel` pamqti. esli trebuemyj adres prewy{aet dopustimu`  weli~inu,  to
  programme predostawlqetsq dopustimoe zna~enie.

       adres w R0 ili q~ejke 50 ispolxzuetsq programmoj kak ee absol`t-
  nyj werhnij adres. esli |to  zna~enie  budet  prewy{eno,  mogut  bytx
  uni~toveny ~asti monitora i celostnostx sistemy budet naru{ena.

       pri zawer{enii raboty programmy monitor zapisywaet  ~asti  prog-
  rammy iz fajla swopinga w pamqtx i zatem zagruvaet KMON. makrokomanda
  .SETTOP s nulewym adresom (ADDR=0) zapre}aet s~itywanie programmy  iz
  fajla swopinga pered zagruzkoj KMON.  |ta  procedura  neobhodima  dlq
  sistemnoj diskety, esli ispolxzu`tsq  komandnye  fajly  dlq  zagruzki
  posledowatelxnosti programm.

       o{ibki otsutstwu`t.

       primer priweden pri opisanii makrokomandy .UNLOCK (sm.  podpunkt
  7.6.18.3).



       7.6.27.1. osobennosti pri rabote RT11XM



       movno ispolxzowatx makrokomandu .SETTOP  w  ras{irennoj  pamqti,
  esli programma byla skomponowana s pomo}x` komandy  monitora  LINK  s
  kl`~om /XM ili programmoj LINK s  kl`~om  /V.  wozmovnosti  programmy
  .SETTOP razli~ny dlq priwilegirowannyh i wirtualxnyh programm.

       dlq priwilegirowannyh programm  -  esli  w  makrokomande  ukazan
  adres, prewy{a`}ij werhn`` granicu  dopustimogo  wirtualxnogo  adresa
  programmy (T.E. star{ij adres PAR, kotoryj programma ispolxzuet),  to
  wozwra}aetsq star{ij adres PAR.

       dlq wirtualxnyh programm - esli zapra{iwaemyj adres wy{e werhne-
  go wirtualxnogo adresa programmy, to wozwrw}aetsq zna~enie argumenta,
  ukazannogo w makrokomande, ili werhnqq  granica  wirtualxnogo  adresa
  programmy, esli byl ukazan adres rawnyj 177776. budut  sozdany  nowye
  oblastx i okno. razmer oblasti i  okna  rawen  wozra}aemomu  zna~eni`
  dostupnoj oblasti, okruglennoj do 32-slownoj granicy,  minus  werhnee
  zna~enie,  wozwra}aemoe  makrokomandoj  .LIMIT  (werhnij  wirtualxnyj
  adres programmy). esli otsutstwu`t bloki uprawleniq oblastx` i oknom,
  to wozwra}aetsq werhnij  wirtualxnyj  adres  programmy.  makrokomanda
  .SETTOP ispolxzuet odin blok uprawleniq oblastx` i odin blok uprawle-
  niq oknom, prednazna~ennyh dlq polxzowatelq. Takim Obrazom  programme
  polxzowatelq dostupen na odin  blok  uprawleniq  menx{e.  posledu`}ie
  makrokomandy  .SETTOP  mogut   tolxko   pereotobrazitx   originalxnu`
  oblastx, sozdannu` perwoj makrokomandoj.  zapros,  argument  kotorogo
  nive werhnego wirtulxnogo adresa, razru{aet oblastx i okno. sledu`}aq
  makrokomanda .SETTOP sozdaet nowye oblastx i okno.

       pri wypolnenii makrokomandy wozwra}aetsq:
         - ukazannyj adres, esli on ne prewy{aet razmer pamqti po umol-
           ~ani`;
         - razmer pamqti po umol~ani`, esli ne  ustanowlena  q~ejka  56
           nulewogo bloka programmy ili ee zna~enie ne prewy{aet  |togo
           razmera;
         - razmer pamqti, ukazannyj w q~ejke 56, esli on prewy{aet raz-

                                 - 137 -




           mer po umol~ani`; w  |tom  slu~ae  wosstanawliwaetsq  razmer
           pamqti po umol~ani`, esli programma zakon~ila wypolnenie,  i
           programma zagruvena po makrokomande .CHAIN.

       format makrokomandy:

          .SETTOP AREA,ADDR

  gde

  AREA   - adres tablicy argumentow EMT iz dwuh slow;

  ADDR   - adres slowa, soderva}ego  werhn``  granicu  programmy.  esli
           ADDR=-2, to zapra{iwaetsq wsq dostupnaq programme pamqtx.

       format tablicy argumentow emt:

                    !--------!--------!
        R0 => AREA: !    0   !  141   !
                    !--------!--------!
                    !      ADDR       !
                    !-----------------!

       posle wypolneniq  makrokomandy  R0  sodervit  werhnij  dostupnyj
  adres dlq programmy.

       programme nelxzq izmenitx swoj razmer, esli  ona  byla  zapu}ena
  komandoj monitora RUN s kl`~om /DEBUG ili sistema byla  sgenerirowana
  bez poddervki swopinga programm.



       7.6.28. makrokomanda .SFra



       sistemnaq makrokomanda .SFra predostawlqet polxzowatelqm,  ime`-
  }im processor s plawa`}ej zapqtoj (w kompleksah sm-1420 ili sm-4/20),
  wozmovnostx obrabatywatx prerywaniq po o{ibke.

       format makrokomandy:

          .SFra aRea,aDDR

  gde

  aREA   - adres tablicy argumentow EMT iz dwuh slow;

  ADDR   - adres programmy obrabotki prerywaniq.

       format tablicy argumentow emt:

                    !--------!--------!
        R0 => AREA: !   30   !   0    !
                    !--------!--------!
                    !      ADDR       !
                    !-----------------!

       oby~no, esli woznikaet prerywanie po  o{ibke  pri  ispolxzowanii

                                 - 138 -




  processora s plawa`}ej zapqtoj, prekra}aetsq wypolnenie  programmy  i
  wydaetsq soob}enie ob o{ibke na sistemnyj terminal.

       sistemnaq makrokomanda .SFra pozwolqet polxzowatel` samomu obra-
  batywatx prerywaniq. argument aDDR ukazywaet adres podprogrammy obra-
  botki prerywaniq.

       esli argument ADDR=0, to makrokomanda .SFPA ignoriruetsq.

       pri rabote RT11FB, esli argument ADDR=1, to registry  processora
  s plawa`}ej zapqtoj  dolvny  bytx  wkl`~eny  w  oblastx  kontekstnogo
  perekl`~eniq pri perekl`~enii sistemy s  odnogo  zadaniq  na  drugoe.
  esli aDDR=1, polxzowatelx ne obrabatywaet prerywaniq po  o{ibke.  pri
  |tom l`baq iz programm imeet dostup k ustrojstwu. w RT11SJ pri ADDR=1
  wypolnq`tsq dejstwiq, analogi~nye ADDR=0.

       sistemnu` makrokomandu .SFra neobhodimo  powtorqtx  kavdyj  raz,
  kogda woznika`t prerywaniq, esli polxzowatelx ho~et  obrabatywatx  ih
  sam, t.e. podprogramma obrabotki prerywaniq  dolvna  sodervatx  wyzow
  .SFPA.

       polxzowatelx dolven sam sohranqtx  i  wosstanawliwatx  registry,
  esli |to neobhodimo.

       wyhod iz podprogrammy obrabotki prerywanij dolven wypolnqtxsq po
  RTI.

       o{ibki otsutstwu`t.

       primer.

          .MCALL  .SFPA,.EXIT
   START:   .
            .
            .
          .SFPA   #AREA,#FPTRAP
            .
            .
            .
          .EXIT
   FPTRAP: MOV    R0,-(SP)
            .
            .
            .
          .SFPA   #AREA,#FPTRAP
            .
            .
            .
           MOV    (SP)+,R0
           RTI
   AREA:  .BLKW   10
          .END    START

                                 - 139 -




       7.6.29. makrokomanda .SPCPS (wypolnenie w RT11SJ  zawisit
               ot generacii).



       makrokomanda .SPCPS pozwolqet podprogramme zawer{eniq peredawatx
  uprawlenie na l`bu` to~ku w programme polxzowatelq. poddervka  makro-
  komandy .SPCPS zadaetsq pri generacii.

       makrokomanda .SPCPS  sohranqet  zna~eniq  PC  i  PS,  soderva}ie
  informaci` o to~ke wozrata iz podprogrammy zawer{eniq i  zamenqet  PC
  na nowoe zna~enie.

       esli programma wypolnqet  makrokomandu,  monitor  dovidaetsq  ee
  zawer{eniq pered pereda~ej uprawleniq podprogramme zawer{eniq. fakti-
  ~eski pereda~a uprawleniq podprogramme zawer{eniq  priostanawliwaetsq
  do togo, kak budet snowa peredano uprawlenie programme.

       makrokomanda .SPCPS wozwra}aet kod o{ibki, esli ona wydaetsq  do
  togo, kak byla zawer{ena pred{estwu`}aq  makrokomanda  .SPCPS.  bolee
  togo, informaciq, sohranqemaq w bloke polxzowatelq  ne  dejstwitelxna
  do teh por, poka snowa ne budet peredano uprawlenie w programmu polx-
  zowatelq.

       format makrokomandy:

          .SPCPS AREA,ADDR

  gde

  AREA   - adres tablicy argumentow EMT iz dwuh slow;

  ADDR   - adres bloka iz treh slow w programme  polxzowatelq,  kotoryj
           sodervit nowyj adres wozwrata PC, a takve starye PC i PS.

       format tablicy argumentow EMT:

                      !--------!--------!
          R0 => AREA: !   41   !    0   !
                      !--------!--------!
                      !      ADDR       !
                      !-----------------!

       o{ibki:

      kod                         poqsnenie

      0           makrokomanda .SPCPS zadana iz programmy,
                  a ne iz podprogrammy zawer{eniq;

      1           pred{estwu`}aq makrokomanda .SPCPS e}e
                  ne wypolnena.

       primer priweden pri opisanii makrokomandy .SYNCH (p. 7.6.32).

                                 - 140 -




       7.6.30. makrokomandy .SPND/.RSUM (RT11FB(XM)).



       makrokomandy .SPND/.RSUM ispolxzu`tsq dlq priostanowa i  prodol-
  veniq raboty programmy.

       monitor sodervit s~et~ik  dlq  kavdoj  programmy.  |tot  s~et~ik
  umenx{aetsq na edinicu makrokomandoj .SPND i uweli~iwaetsq na edinicu
  makrokomandoj .RSUM. programma budet priostanowlena tolxko w tom slu-
  ~ae, esli zna~enie s~et~ika  otricatelxno.  po|tomu,  esli  sistemnaq
  makrokomanda .RSUm wydana ranx{e .SPND, to makrokomanda .SPND ignori-
  ruetsq.

       programma dolvna wydawatx odinakowoe ~islo sistemnyh makrokomand
  .SPND i .RSUM.

       makrokomandy .RSUM/.SPND, kak i drugie makrokomandy, mogut  bytx
  wydany iz podprogrammy obrabotki prerywaniq,  napisannoj  polxzowate-
  lem, esli imeetsq posledowatelxnostx  .INTEN/.SYNCH.  wse  zame~aniq,
  otnosq}iesq k .RSUM/.SPND w podprogramme zawer{eniq, primenimy k |to-
  mu slu~a`.



       7.6.30.1. makrokomanda .SPND



       sistemnaq makrokomanda .SPND priostanawliwaet rabotu programmy i
  pozwolqet wypolnqtxsq tolxko podprogrammam  zawer{eniq  dlq  operacij
  wwoda/wywoda i zaprosow po tajmeru.

       format makrokomandy:

          .SPND

       format registra R0:

                    !--------!--------!
        R0 =>       !    1   !   0    !
                    !--------!--------!

       sistemnaq makrokomanda .SPND iz podprogrammy  zawer{eniq  umenx-
  {aet s~et~ik ostanowow, no ne ostanawliwaet osnownu` programmu.  esli
  podprogramma zawer{eniq  osu}estwlqet  makrokomandu  .SPND,  osnownaq
  programma prodolvaetsq do wyda~i |toj makrokomandy samoj  programmoj,
  tolxko posle |togo ona budet priostanowlena, i potrebuetsq dwe makro-
  komandy .RSUM dlq ee prodolveniq.

       o{ibki otsutstwu`t.

       primer.

          .MCALL  .SPND,.RSUM,.READC,.EXIT
          .MCALL  .LOOKUP,.PRINT,.WAIT
   START: .LOOKUP #AREA,#2,#FILE2
           BCS    1$
          .LOOKUP #AREA,#3,#FILE3

                                 - 141 -




           BCS    1$
          .LOOKUP #AREA,#4,#FILE4
           BCC    3$
   1$:    .PRINT  #2$
          .EXIT
   2$:    .ASCIZ  /o{ibka LOOKUP/
          .EVEN
   3$:     MOV    #2,RSVCTR
           MOV    #AREA,R5
          .READC  R5,#2,#BUF1,COUNT1,#CROUTN,BLOK1
           BCS    ERROR
          .READC  R5,#3,#BUF2,COUNT2,#CROUTN,BLOK2
           BCS    ERROR
          .READC  R5,#4,#BUF3,COUNT3,#CROUTN,BLOK3
           BCS    ERROR
          .SPND
          .WAIT   #2
          .WAIT   #3
          .WAIT   #4
          .EXIT
   CROUTN: ASL    R1
           INC    DONFL(R1)
           ROR    R0
           ADC    ERRFLG(R1)
           DEC    RSVCTR
           BNE    1$
          .RSUM
   1$:     RTS    PC
   ERROR: .PRINT  #RDMSG
          .EXIT
   RDMSG: .ASCIZ  /o{ibka READ/
          .EVEN
   AREA:  .BLKW   10
   RSVCTR:        0
   COUNT1:        256.
   COUNT2:        256.
   COUNT3:        256.
   BLOK1:         0
   BLOK2:         0
   BLOK3:         0
   FILE2: .RAD50  /DK TEST2 TMP/
   FILE3: .RAD50  /DK TEST3 TMP/
   FILE4: .RAD50  /DK TEST4 TMP/
   DONFL:         0,0,0
   ERRFLG:        0,0,0
   BUF1:  .BLKW   256.
   BUF2:  .BLKW   256.
   BUF3:  .BLKW   256.
          .END    START



       7.6.30.2. makrokomanda .RSUm



       sistemnaq makrokomanda  .RSUM  prodolvaet  wypolnenie  programmy
  posle togo, kak ona byla priostanowlena makrokomandoj .SPND.


                                 - 142 -




       format makrokomandy:

          .RSUm

       format registra R0:

                    !--------!--------!
        R0 =>       !    2   !   0    !
                    !--------!--------!

       makrokomanda .RSUM iz l`boj podprogrammy zawer{eniq wozobnowlqet
  wypolnenie osnownoj programmy.

       tak kak sistemnaq makrokomanda .tWaIt realizuetsq w  monitore  s
  ispolxzowaniem  ostanowa  i  wozobnowleniq,  to  makrokomanda  .RSUm,
  wydannaq iz podprogrammy zawer{eniq bez sootwetstwu`}ej .SrND,  movet
  wyzwatx prodolvenie osnownoj programmy prevde, ~em zakon~itsq  polnyj
  wremennoj interwal, ukazannyj w .TWAIT.

       o{ibki otsutstwu`t.

       primer priweden pri opisanii makrokomandy  .SPND  (sm.  podpunkt
  7.6.30.1).



       7.6.31. makrokomanda .SDTTM



       makrokomanda .SDTTM pozwolqet iz programmy polxzowatelq  ustano-
  witx w sisteme nowye datu i wremq.

       format makrokomandy:

         .SDTTM AREA,ADDR

  gde

  AREA   - adres tablicy argumentow EMT iz dwuh slow;

  ADDR   - adres bloka iz treh slow w programme polxzowatelq,  soderva-
           }ego nowye datu i wremq.

       format tablicy argumentow EMT:

                      !--------!--------!
          R0 => AREA: !   40   !    0   !
                      !--------!--------!
                      !      ADDR       !
                      !-----------------!

       polxzowatelx zanosit w blok iz treh slow sledu`}u` informaci`:

  slowo 1
         - sodervit nowu` sistemnu` datu wo wnutrennem formate (sm.  p.
           7.6.5); esli |to slowo imeet otricatelxnoe  zna~enie  (soot-
           wetstwuet nekorrektnomu zna~eni` daty),  monitor  ignoriruet
           ego; zna~enie |togo slowa dolvno bytx otricatelxnym tolxko w

                                 - 143 -




           tom slu~ae, esli neobhodimo izmenitx w sisteme tolxko  para-
           metr "wremq"; esli |to slowo imeet  polovitelxnoe  zna~enie,
           ono stanowitsq sistemnoj datoj; razrqdy 14 i 15 slowa  "sis-
           temnaq data" dolvny bytx sbro{eny;

  slowa 2 i 3
         - sodervat mlad{ie razrqdy (slowo 2) i star{ie razrqdy  (slowo
           3) interwala wremeni wo wnutrennem formate. |to 32-razrqdnoe
           zna~enie wremeni posle poluno~i; esli slowo 3 sodervit otri-
           catelxnoe zna~enie, to nowoe wremq w sisteme  ne  ustanawli-
           waetsq; neobhodimo zapisatx  otricatelxnoe  zna~enie  w  |to
           slowo, esli nuvno izmenitx tolxko sistemnu` datu;  esli  |to
           slowo polovitelxnoe, to ustanawliwaetsq nowoe sistemnoe wre-
           mq; dlq ~astoty pitaniq 50 gc slowo 3 dolvno bytx menx{e ili
           rawno 101 (wosxmeri~noe), a slowo 2 menx{e ~em 165400 (wosx-
           meri~noe).

       monitor ne osu}estwlqet prowerki zna~eniq slow, soderva}ih "sis-
  temnu` datu" i wremq na korrektnostx zapisi (tolxko, kak bylo skazano
  wy{e, prowerqet |ti slowa na znak - otricatelxnoe ili polovitelxnoe).
  po|tomu polxzowatelx dolven sam w programme osu}estwlqtx |tu  prower-
  ku.


       pRIME^ANIE. sleduet pomnitx, ~to korrekciq  daty  i/ili  wremeni
  pri wypolnenii l`boj iz makrokomand  tipa  .TWAIT,  .MRKT  ili  .CMKT
  movet priwesti k nepredskazuemym rezulxtatam.

       o{ibki otsutstwu`t.

       w sledu`}em primere predstawlena podprogramma korrekcii  wremeni
  na 1 ~as s u~etom dekretnogo wremeni.

       primer.

   ;
   ; wyzow podprogrammy osu}estwlqetsq po CALL ADDR,
   ; gde ADDR sootwetstwuet OCT  ili APR w zawisimosti
   ; ot trebuemoj korrekcii
   ;
           .MCALL .SDTTM,.PRINT,.EXIT,.GTIM
           .GLOBL STD,DALITE
   OCT:    COM     HR              ; podgotowka dlq umenx-
           NEG     HR+2            ; {eniq wremeni na 1 ~as
   APR:    .GTIM   #AREA,#TIME     ; polu~enie tek. wremeni
           CALL    JADD            ; uhod na podprogrammu
           .SDTTM  #AREA,#NEWDT    ; ustanowka nowogo wremeni
           .GTIM   #AREA,#TIME     ; polu~enie nowogo wremeni
           RETURN

   NEWDT:  .WORD   -1              ; data
   TIME:   .WORD   0,0             ; wremq
   HR:     .WORD   2               ; zna~enie 1 ~asa wo
           .WORD   137440          ; wnutrennem formate
   AREA:   .WORD   0,0             ;

   JADD:   MOV     #HR,R4
           MOV     #AREA,R3
           MOV     #HR,R1

                                 - 144 -




           MOV     -(R4),R2        ; korrekciq mlad{ih
           ADD     -(R3),R2        ; razrqdow
           MOV     -(R4),R5        ;
           ADC     R5              ; esli bylo perepolnenie
           ADD     -(R3),R5        ; korrekciq star. razrqdow
           MOV     R2,-(R1)        ; sohranenie nowogo
           MOV     R5,-(R1)        ; wremeni
           RETURN
           .END



       7.6.32. makrokomanda .SYNCH



       sistemnaq makrokomanda .SYNCH daet wozmovnostx  programme  obra-
  botki prerywanij wypolnqtx sistemnye makrokomandy.

       format makrokomandy:

          .SYNCH AREA[,PIC]

  gde

  AREA   - adres bloka iz semi slow; w otli~ie  ot  drugih  makrokomand
           |tot blok ispolxzuetsq kak |lement o~eredi dlq .SYNCH;

  PIC    - neobqzatelxnyj  argument,  pozwolq`}ij  makrokomande  .SYNCH
           generirowatx pozicionno-nezawisimyj kod.

       blok AREA sodervit:

  slowo 1
         - sistemnoe slowo, kotoroe ne dolvno izmenqtxsq polxzowatelem;

  slowo 2
         - teku}ij nomer zadaniq (linii), kotoryj dolven ustanawliwatx-
           sq polxzowatelem; movet bytx polu~en makrokomandoj .GTJB;

  slowo 3-4
         - ne ispolxzu`tsq;

  slowo 5
         - identifikator makrokomandy .SYNCH; pri  uspe{nom  wypolnenii
           makrokomandy |to slowo zanositsq w R0;

  slowo 6
         - dolvno sodervatx -1;

  slowo 7
         - dolvno sodervatx 0.

       makrokomanda .SYNCH perewodit podprogrammu obrabotki  prerywaniq
  w sostoqnie "programma" (w polxzowatelxskij revim) na nulewom priori-
  tete processora dlq wypolneniq makrokomand.

       mevdu makrokomandami .SYNCH  i  .INTEN  polxzowatelx  ne  dolven
  ni~ego zanositx w stek.

                                 - 145 -




       esli makrokomanda .SYNCH ne wypolnena, to wozwrat  proishodit  w
  sledu`}u` za makrokomandoj q~ejku. w |tom slu~ae programma  obrabotki
  prerywanij ne movet wypolnqtx makrokomandy;  R4  i  R5  swobodny  dlq
  ispolxzowaniq.

       esli makrokomanda .SYNCH wypolnena, to wozwrat proishodit w sle-
  du`}u` za wozwratom po o{ibke q~ejku. programme obrabotki  prerywanij
  razre{eno wypolnqtx makrokomandy. R0 sodervit argument,  nahodiw{ijsq
  w pqtom slowe bloka AREA. R4 i R5 nelxzq ispolxzowatx  bez  predwari-
  telxnogo sohraneniq w steke, a R0 i R1 - movno.

       wyhod iz programmy obrabotki prerywaniq dolven bytx po  instruk-
  cii RTS PC.

       movno dwumq sposobami opredelitx, swoboden li blok AREA:

         - proweritx sodervimoe slowa 7  bloka  AREA;  esli  ono  rawno
           nul`, to blok swoboden i movet ispolxzowatxsq nowoj makroko-
           mandoj .SYNCH;
         - wypolnitx nowu` makrokomandu .SYNCH; esli wozwrat  osu}estw-
           lqetsq s o{ibkoj, sledowatelxno blok zanqt.

       o{ibki:

          wozwrat po o{ibke proishodit w sledu`}ih slu~aqh:
          - ne zakon~ena makrokomanda .SYNCH, ispolxzu`}aq
            tot ve blok AREA;
          - ukazan nedopustimyj nomer zadaniq;
          - esli proizo{lo udalenie ili ostanow osnownoj
            programmy.

       primer.

          .MCALL  .GTJB,.INTEN,.WRITC,.SYNCH,SPCPS
          .MCALL  .EXIT,.DIR,.PRINT
   START:  MOV    #JOB,R5            ;polu~itx nomer
          .GTJB   #AREA,R5           ;zadaniq
           MOV    (R5),SYNBLK+2
            .
            .
            .
   INTRPT:.INTEN  5                  ;perejti w sistemnoe
                                     ;sostoqnie, ustanowitx
                                     ;prioritet 5
          .SYNCH  #SYNBLK
          BR     SYNFAIL             ;blok .SYNCH zanqt
          .DIR    WRITE              ;zapisx w bufer
          BCC    1$
          .SPCPS AREA,ADDR
  1$:     RTS    PC                  ;wyhod
   SYNBLK:        0,0,0,0,5,-1,0     ;blok .SYNCH
   SYNFAIL:
           MOV    #SYNER,R0
           BR     ERRM
   WTFAIL: MOV    #MSG,R0
   ERRM:  .PRINT
          .EXIT
   MSG:   .ASCIZ  /o{ibka zapisi/
   SYNER: .ASCIZ  /o{ibka SYNCH/

                                 - 146 -




          .EVEN
   AREA:  .BLKW   5                  ;blok argumentow emt
                                     ;dlq .WRITE
  ADDR:   .WORD WTFAIL,0,0           ;blok dlq .SPCPS

   JOB:   .BLKW   5                  ;blok argumentow emt
                                     ;dlq .SYNCH
   CRTN1:  .                         ;tekst podprogrammy
           .                         ; zawer{eniq
           RTS    PC
   WRITE: .WRITC  #AREA,CHAN,BUFF,WCNT,#CRTN1,BLK
   CHAN:          0
   BUFF:  .BLKW   256.
   WCNT:          256.
   BLK:           0
          .END    START



       7.6.33. makrokomanda .TRPSET



       sistemnaq makrokomanda  .TRPSET  pozwolqet  polxzowatel`  samomu
  obrabatywatx prerywaniq po wektoram 4 i 10.

       format makrokomandy:

          .TRPSET AREA,ADDR

  gde

  AREA   - adres tablicy argumentow iz dwuh slow;

  ADDR   - adres programmy obrabotki prerywaniq.

       format tablicy argumentow emt:

                    !--------!--------!
        R0 => AREA: !    3   !   0    !
                    !--------!--------!
                    !      ADDR       !
                    !-----------------!

       makrokomanda .TRPSET zapre}aet monitoru  udalqtx  programmu  pri
  wozniknowenii prerywanij po wektoram 4 i 10.

       esli pri whode w programmu obrabotki prerywaniq bit  C  sbro{en,
  to proizo{lo prerywanie po wektoru 4, esli bit C ustaanowlen, to pre-
  rywanie po wektoru 10.

       programma obrabotki prerywaniq dolvna zakan~iwatxsq  instrukciej
  RTI. pered |toj instrukciej dolvna stoqtx makrokomanda .TRPSET.

       makrokomandu .TRPSET neobhodimo powtorqtx kavdyj raz pri woznik-
  nowenii prerywaniq, esli polxzowatelx ho~et i w dalxnej{em  obrabaty-
  watx ih sam, t.e. podprogramma obrabotki prerywaniq dolvna  sodervatx
  .TRPSET.


                                 - 147 -




       esli prerywaniq proishodqt pri wypolnenii podprogrammy obrabotki
  prerywaniq, to wydaetsq soob}enie ob o{ibke  i  wypolnenie  programmy
  prerywaetsq.

       esli ADDR=0, makrokomanda .TRPSET ignoriruetsq.

       obrabotka prerywanij pri ispolxzowanii  makrokomandy  .TRPSET  w
  RT11XM osu}estwlqetsq w polxzowatelxskom revime. dlq polu~eniq dostu-
  pa k wektoram prerywaniq w wirtualxnoj programme neobhodimo ispolxzo-
  watx makrokomandu .TRPSET, t.k. ona  ne  imeet  dostupa  k  sistemnym
  q~ejkam.

       o{ibki otsutstwu`t.

       w primere makrokomanda .TRPSET ukazywaet adres  programmy  obra-
  botki lowu{ek 4 i 10.

       primer.

          .MCALL  .TRPSET,.EXIT,.PRINT
   START: .TRPSET #AREA,#TRPLOC      ;zapretitx udalqtx
                                     ;programmu
           MOV    #101,R0
           TST    (R0)+              ;ne~etnyj adres
          .WORD   67                 ;neweren kod instrukcii
          .EXIT
   TRPLOC: MOV    R0,-(SP)           ;programma obrabotki
           BCS    1$                 ;lowu{ek
          .PRINT  #TRP4
           BR     2$
   1$:    .PRINT  #TRP10
   2$:    .TRPSET #AREA,#TRPLOC
           MOV    (SP)+,R0
           RTI
   AREA:  .BLKW   10                 ;blok argumentow emt
   TRP4:  .ASCIZ  /TRAP TO 4/
   TRP10: .ASCIZ  /TRAP TO 10/
          .EVEN
          .END    START



       7.6.34. makrokomanda .USwDF



       sistemnaq makrokomanda .USwDF opredelqet mnemoni~eskie obozna~e-
  niq statusa zawer{eniq programmy.

       format makrokomandy:

          .USwDF

       ras{irenie makrokomandy:

   ERRBYT  =^O52
   USERRB  =^O53
   SEVER$  =^O10
   ERROR$  =^O4

                                 - 148 -




   WARN$   =^O2
   SUCCS$  =^O1

       dannaq makrokomanda ne generiruet kodow emt,  a  qwlqetsq  ~isto
  opisatelxnoj.

       o{ibki otsutstwu`t.

       primer priweden pri opisanii makrokomandy  .SERR  (sm.  podpunkt
  7.6.14.2).




       7.7. obmen mevdu zadaniqmi (RT11FB ili RT11XM)



       makrokomandy dannoj gruppy mogut ispolxzowatxsq dlq obmena  dan-
  nymi mevdu fonowoj i operatiwnoj programmami.



       7.7.1. makrokomanda .mWaIt



       sistemnaq makrokomanda .mWaIt priostanawliwaet wypolnenie  prog-
  rammy do okon~aniq obmena soob}eniqmi mevdu programmami.

       format makrokomandy:

                                 .mWaIt

       format registra R0:

                    !--------!--------!
        R0 =>       !   11   !   0    !
                    !--------!--------!

       oby~no |ta makrokomanda ispolxzuetsq w so~etanii s makrokomanda-
  mi .RsVD ili .SDat, kotorye ne predusmatriwa`t nikakih operacij posle
  zawer{eniq soob}eniq.

       o{ibki otsutstwu`t.

       primer  priweden  w  opisanii  makrokomandy   .SDATW   (podpunkt
  7.7.3.3).



       7.7.2. makrokomandy .RsVD/.RsVDs/.RsVDW



       sistemnye makrokomandy |togo tipa ispolxzu`tsq sowmestno s  mak-
  rokomandami .SDAt/.SDats/.SDatW  dlq  osu}estwleniq  pereda~i  dannyh
  mevdu programmami. neposredstwenno makrokomandy tipa .RsVD  wypolnq`t
  priem dannyh analogi~no makrokomandam tipa .ReaD s toj li{x raznicej,

                                 - 149 -




  ~to pereda~a dannyh proizwoditsq ne periferijnym ustrojstwom, a prog-
  rammoj, rabota`}ej w  drugom  razdele  (operatiwnom  ili  fonowom)  i
  wypolnq`}ej peresylku dannyh.

       soob}eniq wsegda obrabatywa`tsq w porqdke: "perwyj wo{el -  per-
  wyj wy{el". takim obrazom polxzowatelx movet bytx uweren, ~to im pri-
  nqto dejstwitelxno zatrebowannoe soob}enie.

       programmy, ispolxzu`}ie makrokomandy  tipa  .RsVD/.SDat,  dolvny
  predusmatriwatx libo pereda~u dannyh w  fiksirowannom  formate,  libo
  wozmovnostx obrabotki peremennyh formatow.


       pRIME^ANIE. pri ispolxzowanii makrokomand  .RsVD  i  .RsVDs  dlq
  buferizacii zaprosow wwoda  nuvno  wydelqtx  dopolnitelxnye  |lementy
  o~eredi (sm. p. 7.6.22).

  o{ibki odinakowy dlq wseh treh revimow:

          kod              poqsnenie

           0      w sisteme net drugogo zadaniq.



       7.7.2.1. makrokomanda .RsVD



       ustanawliwaet zapros na priem soob}eniq ot  drugoj  programmy  w
  o~eredx i wozwra}aet uprawlenie programme. pri neobhodimosti priosta-
  nowitx programmu do okan~aniq  priema  soob}eniq  nuvno  ispolxzowatx
  makrokomandu .MWAIT.

       format makrokomandy:

                          .RsVD   aRea,wUF,WsNt

  gde

  AREA   - Adres tablicy argumentow emt, sostoq}ej iz 5 slow;

  BUF    - adres bufera dlq priema dannyh;

  WCNT   - dlina bufera w slowah.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !   26   !    0   !
                    !--------!--------!
                    ! zarezerwirowano !
                    !-----------------!
                    !       BUF       !
                    !-----------------!
                    !      WCNT       !
                    !-----------------!
                    !        1        !
                    !-----------------!

                                 - 150 -




       sleduet imetx w widu, ~to perwoe slowo bufera "wUF" budet soder-
  vatx koli~estwo peredannyh slow  po  zawer{enii  makrokomandy  .RsVD.
  po|tomu oblastx, wydelennaq dlq priema, wsegda dolvna bytx, po  kraj-
  nej mere, na odno slowo bolx{e,  ~em  fakti~eskij  razmer  ovidaemogo
  soob}eniq.

       WCNT qwlqetsq peremennoj weli~inoj, t.e. odna i ta ve kombinaciq
  makrokomand .RCVD/.SDAT movet bytx primenena dlq  pereda~i  soob}enij
  razli~noj dliny, (neskolxkih slow bufera ili wsego bufera).

       operaciq .RsVD zawer{aetsq tolxko posle wypolneniq  makrokomandy
  .SDat drugoj programmoj.

       primer  priweden  w  opisanii  makrokomandy   .SDATW   (podpunkt
  7.7.3.3).



       7.7.2.2. makrokomanda .RCVDC



       sistemnaq makrokomanda .RsVDs osu}estwlqet priem  dannyh.  posle
  togo, kak zapros  postawlen  w  o~eredx  na  obrabotku,  prodolvaetsq
  wypolnenie teku}ej  programmy  polxzowatelq.  kogda  pereda~a  dannyh
  zakon~itsq, uprawlenie budet peredano podprogramme zawer{eniq.

       format makrokomandy:

                       .RsVDs   aRea,wUF,WsNt,sRtN

  gde

  AREA   - Adres tablicy argumentow emt, sostoq}ej iz 5 slow;

  BUF    - adres bufera dlq priema dannyh;

  WCNT   - dlina bufera w slowah.

  CRtN   - adres podprogrammy zawer{eniq.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !   26   !    0   !
                    !--------!--------!
                    ! zarezerwirowano !
                    !-----------------!
                    !       BUF       !
                    !-----------------!
                    !      WCNT       !
                    !-----------------!
                    !      CRTN       !
                    !-----------------!

  perwoe slowo bufera wUF sodervit koli~estwo prinqtyh slow.

       primer  priweden  w  opisanii  makrokomandy   .SDATW   (podpunkt
  7.7.3.3).

                                 - 151 -




       7.7.2.3. makrokomanda .RsVDW



       sistemnaq makrokomanda .RsVDW  osu}estwlqet  priem  soob}enij  s
  ovidaniem konca pereda~i, t.e. programma, wydaw{aq  zapros  na  priem
  soob}eniq, priostanawliwaetsq do pereda~i soob}eniq  drugoj  program-
  moj. posle okon~aniq priema  |ta  programma  prodolvaet  wypolnqtxsq.
  perwoe slowo w bufere priema, kak i w ostalxnyh  makrokomandah  |togo
  tipa, sodervit koli~estwo prinqtyh slow.

       format makrokomandy:

                         .RsVDW   aRea,wUF,WsNt

  gde

  AREA   - Adres tablicy argumentow emt, sostoq}ej iz 5 slow;

  BUF    - adres bufera dlq priema dannyh;

  WCNT   - dlina bufera w slowah.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !   26   !    0   !
                    !--------!--------!
                    ! zarezerwirowano !
                    !-----------------!
                    !       BUF       !
                    !-----------------!
                    !      WCNT       !
                    !-----------------!
                    !        0        !
                    !-----------------!



       7.7.3. makrokomandy .SDat/.SDats/.SDatW



       sistemnye makrokomandy tipa .SDat primenq`tsq w so~etanii s mak-
  rokomandami .RsVD/.RsVDs/.RsVDW dlq osu}estwleniq pereda~i soob}enij.
  |ti makrokomandy wypolnq`tsq analogi~no makrokomandam tipa .WRIte, no
  pereda~a proishodit ne na perefirijnoe ustrojstwo, a w  sootwetstwu`-
  }u` programmu, rabota`}u` w drugom razdele i soderva}u`  makrokomandu
  tipa .RCVD.


       pRIME^ANIE. dlq makrokomand tipa .SDat dejstwitelxny wse  sogla-
  {eniq i zame~aniq, kasa`}iesq makrokomand tipa .RsVD.

       o{ibki odinakowy dlq wseh treh revimow:

          kod              poqsnenie

                                 - 152 -




           0     otsutstwuet drugoe zadanie.



       7.7.3.1. makrokomanda .SDat



       wypolnqet pereda~u ukazannogo koli~estwa slow  drugomu  zadani`.
  uprawlenie peredaetsq programme polxzowatelq srazu  posle  togo,  kak
  zapros postawlen w o~eredx.

       format makrokomandy:

                          .SDat   aRea,wUF,WsNt

  gde

  AREA   - Adres tablicy argumentow emt, sostoq}ej iz 5 slow;

  BUF    - adres bufera dlq pereda~i dannyh;

  WCNT   - dlina bufera w slowah.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !   25   !    0   !
                    !--------!--------!
                    ! ne ispolxzuetsq !
                    !-----------------!
                    !       BUF       !
                    !-----------------!
                    !      WCNT       !
                    !-----------------!
                    !        1        !
                    !-----------------!



       7.7.3.2. makrokomanda .SDats



       wypolnqet pereda~u ukazannogo koli~estwa slow. uprawlenie  wozw-
  ra}aetsq programme polxzowatelq nemedlenno  posle  togo,  kak  zapros
  postawlen w o~eredx. wypolnenie programmy  polxzowatelq  prodolvaetsq
  do  okon~aniq  pereda~i,  zatem  uprawlenie  peredaetsq  podprogramme
  zawer{eniq, a po instrukcii RTS PC w podprogramme zawer{eniq uprawle-
  nie peredaetsq prerwannoj programme polxzowatelq.

       format makrokomandy:

                       .SDats   ARea,wUF,WsNt,sRtN

  gde

  AREA   - Adres tablicy argumentow emt, sostoq}ej iz 5 slow;

                                 - 153 -




  BUF    - adres bufera dlq pereda~i dannyh;

  WCNT   - dlina bufera w slowah;

  CRTN   - adres podprogrammy zawer{eniq.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !   25   !    0   !
                    !--------!--------!
                    ! ne ispolxzuetsq !
                    !-----------------!
                    !       BUF       !
                    !-----------------!
                    !      WCNT       !
                    !-----------------!
                    !      CRTN       !
                    !-----------------!



       7.7.3.3. makrokomanda .SDatW



       wypolnqet pereda~u ukazannogo koli~estwa slow  drugomu  zadani`.
  uprawlenie wozwra}aetsq w  programmu  polxzowatelq  posle  zawer{eniq
  pereda~i.

       format makrokomandy:

                         .SDatW   ARea,wUF,WsNt

  gde

  AREA   - Adres tablicy argumentow emt, sostoq}ej iz 5 slow;

  BUF    - adres bufera dlq pereda~i dannyh;

  WCNT   - dlina bufera w slowah.

       format tablicy argumentow EMT:

                    !--------!--------!
        R0 => AREA: !   25   !    0   !
                    !--------!--------!
                    ! ne ispolxzuetsq !
                    !-----------------!
                    !       BUF       !
                    !-----------------!
                    !      WCNT       !
                    !-----------------!
                    !        0        !
                    !-----------------!

       w priwedennom primere fonowaq  programma  posylaet  soob}enie  w
  operatiwnu` programmu posredstwom makrokomand .SDAT i .SDATW.


                                 - 154 -




       primer.

  ;  prinima`}aq programma:
          .MCALL  .RCVD,.MWAIT,.EXIT,.RCVDC,.PRINT
   ST:     MOV    #AREA,R5
          .RCVD   R5,#BUFF,#20.      ;prinqtx soob}enie
           BCS    NRC
          .MWAIT
          .PRINT  #BUFF+2            ;pe~atx prinqtogo
                                     ;teksta
          .RCVDC  R5,#BUFF1,#20.,#PROG1 ;prinqtx
                                    ;wtoroe soob}enie
           BCS    NRCC              ;i wwesti p/p zawer{eniq
          .mWAIT                    ;ovidatx priema
          .PRINT  #MSG4
          .EXIT
   PROG1: .PRINT  #BUFF1+2          ;p/p zawer{eniq, pe~atx
           RTS    PC                ;prinqtogo soob}eniq
   NRC:   .PRINT  #NORC
          .EXIT
   NRCC:  .PRINT  #NORCC
          .EXIT
   NORC:  .ASCIZ  /net wtorogo zadaniq/
   NORCC: .ASCIZ  /o{ibka .RCVDC/
          .EVEN
   BUFF:  .WORD   0                 ;bufer dlq
          .BLKW   20.                ;perwogo soob}eniq
   BUFF1: .WORD   0                  ;dlq wtorogo
          .BLKW   20.
   MSG4:  .ASCIZ  /pereda~a okon~ena/
          .EVEN
   AREA:  .BLKW   10
          .END    ST


  ;  pereda`}aq programma:
          .MCALL  .SDAT,.RCVD,.MWAIT,.SDATC,.PRINT,.EXIT
   ST:     MOV    #AREA,R0
          .SDAT   R0,#MSG,#COUNT     ;peredatx soob}enie
           BCS    NSD
          .SDATC  R5,#MSG1,#COUNT1,#PROG ;peredatx
           BCS    NSD1               ;wtoroe sob}enie
          .PRINT  #MSG3
          .EXIT
   PROG:  .PRINT  #MSG2              ;p/p zawer{eniq, pe~atx
           RTS    PC                 ;soob}eniq
   NSD:   .PRINT  #NOSD
          .EXIT
   NSD1:  .PRINT  #NOSD1
          .EXIT
   MSG:   .ASCIZ  /soob}enie/       ;tekst perwogo soob}eniq
   COUNT = .- MSG+1/2
          .EVEN
   MSG1:  .ASCIZ  /e}e odno soob}enie/
   COUNT1 = .- MSG1+1/2
          .EVEN
   MSG2:  .ASCIZ  /pereda~a okon~ena/
   MSG3:  .ASCIZ  /idet pereda~a soob}eniq/
   NOSD:  .ASCIZ  /net drugogo zadaniq/

                                 - 155 -




   NOSD1: .ASCIZ  /o{ibka .SDATC/
          .EVEN
   AREA:  .BLKW   10
          .END    ST





       7.8. rabota s dopolnitelxnymi terminalami.




       priwoditsq opisanie mnogoterminalxnyh  wozmovnostej,  informaciq
  po tehni~eskim sredstwam, struktury dannyh i sootwetstwu`}ie  sistem-
  nye makrokomandy dlq uprawleniq dopolnitelxnymi terminalami iz odnogo
  zadaniq. opisywa`tsq takve  tipi~nye  situacii,  w  kotoryh  wozmovno
  ispolxzowanie terminalow bez obra}eniq k mnogoterminalxnoj poddervke.



       7.8.1. KOMpOHEHTy MHOgOTEPMiHAlxHOj CiCTEMy




       B RT11 zAlOvEHA BOzMOvHOCTx MHOgOTEPMiHAlxHOj pOddEPvKi, KOTOPAq
  MOvET byTx BybPAHA BO BPEMq gEHEPAcii CiCTEMy. pO Cu}ECTBu  MHOgOTEP-
  MiHAlxHAq pOddEPvKA pOzBOlqET BypOlHqEMOj pPOgPAMME  upPABlqTx  OdHiM
  ili bOlEE TEPMiHAlAMi.

       pOddEPvKA HECKOlxKiX TEPMiHAlOB OCu}ECTBlqETCq C pOMO}x` ClEdu`-
  }iX KOMpOHEHT:

         - .MTTEMT.MAC, KOTOPAq ObPAbATyBAET MHOgOTEPMiHAlxHyE makroko-
           mandy;

         - .MTTINT.MAC, KOTOPAq COdEPviT pPOgPAMMy obrabotki pPEPyBAHij
           i pPOgPAMMy OpPOCA TEPMiHAlOB;

         - .SYSTBL.MAC, KOTOPAq OpPEdElqET upPABlq`}iE  blOKi  TEPMiHA-
           lOB.

       MTTEMT, MTTINT i SYSTBL ACCEMbliPu`TCq i KOMpOHu`TCq BMECTE  KAK
  ~ACTx PEzidEHTHOgO MOHiTOPA dlq MHOgOTEPMiHAlxHOj CiCTEMy.

       B  MHOgOTEPMiHAlxHOj  CiCTEME  iME`TCq  TakvE  HEKOTOPyE  BAvHyE
  iHfOPMAciOHHyE CTPuKTuPy :

         - upPABlq`}iE blOKi TEPMiHAlOB, HAzyBAEMyE TCB (OdiH HA TEPMi-
           HAl), KOTOPyE COdEPvAT iHfOPMAci` O TEPMiHAlE i zAdAnii; TCB
           TAKvE COdEPviT BXOdHOj i ByXOdHOj KOlxcEByE bufEPy dlq  TEP-
           MiHAlA;

         - lOgi~ECKiE HOMEPA, HAzyBAEMyE  LUN,  ~EPEz  KOTOPyE  monitor
           ObPA}AETCq K TEPMiHAlAM;

         - ClOBA ACiHXPOHHOgO CTATuCA COCTOqHiq TEPMiHAlOB,  HAzyBAEMyE

                                 - 156 -




           ClOBA AST (OdHO HA LUN),  B  KOTOPyX  monitor  uCTAHABliBAET
           flAgi CObyTij, ~TOby OTPAziTx TEKu}EE COCTOqHiE KAvdOgO TEP-
           MiHAlA. |Ti ClOBA AST BXOdqT B CpiCOK CpEciAlxHyX BOzMOvHOC-
           TEj, KOTOPyE Bybira`tsq pPi gEHEPAcii CiCTEMy.



       7.8.2. tehni~eskie sredstwa




       PAfOC MOvET pOddEPviBATx pOClEdOBATElxHyE  iHTEPfEjCy  KAK  TipA
  ads-a, nazywaemye DL (wkl`~aq DL i DLV ili  COBMECTiMyj  |KBiBAlEHT),
  tAK i TipA mpd-a, nazywaemye DZ (BKl`~Aq DZ i DZV). iHTEPfEjC  AHAlO-
  gi~EH KOHTPOllEPu uCTPOjCTBA; OH HAXOdiTCq MEvdu |wm i pOClEdOBATElx-
  HOj liHiEj. dPugOj KOHEc liHii MOvET byTx CBqzAH C  TEPMiHAlOM,  uCT-
  POjCTBOM CBqzi, pEPifEPijHyM uCTPOjCTBOM ili E}E OdHoj |wm.

       iHTEPfEjC  DL  CBqzyBAET  |BM  C  EdiHCTBEHHOj  pOClEdOBATElxHOj
  liHiEj. KAvdyj iHTEPfEjC DL iMEET CBOi CObCTBEHHyE  AdPECA  PEgiCTPOB
  upPABlEHiq i COCTOqHiq (CSR) i AdPEC BEKTOPA pPEPyBAHiq. MOvHO  iMETx
  dO BOCxMi DL iHTEPfEjCOB B  CiCTEME,  BKl`~Aq  KOHCOlxHyj  iHTEPfEjC.
  T.K. KAvdyj DL iHTEPfEjC qBlqETCq OTdElxHyM KOHTPOllEPOM, TO PEAlxHyj
  fizi~ECKij HOMEP OTCuTCTBuET; 0 - HAzHA~AETCq dlq OpPEdElEHHOCTi.

       CiCTEMA wsegda iMEET AppAPATHyj  KOHCOlxHyj  iHTEPfEjC,  KOTOPyj
  iCpOlxzuETCq AppAPATHyM zAgPuz~iKOM pPi zAgPuzKE CiCTEMy, i COOb}EHiE
  Ob |TOM pOME}AETCq HA KOHCOlxHyj TEPMiHAl. AppAPATHyj zAgPuz~iK  TPE-
  buET, ~TOby |TOT TEPMiHAl byl CBqzAH pO CTAHdAPTHyM KOHCOlxHyM  AdPE-
  CAM dlq diAgHOCTi~ECKiX cElEj i dlq CBqzi s OpEPATOPom pPi  zAgPuzKE.
  AppAPATHyj iHTEPfEjC KOHCOli dolvEH byTx lOKAlxHyM  DL.  EgO  BEKTOPA
  pPEPyBAHij PAzME}A`TCq B 60 i 64 q~EjKAX HivHEj  pAMqTi,  A  EgO  LUN
  BCEgdA PABEH 0.

       iHtEPfEjC DZ - MulxTiplEKCor ; OH CBqzyBAET HECKOlxKO pOClEdOBA-
  TElxHyX liHij ~EPEz EdiHCTBEHHu` pAPu CSR i AdPECA BEKTOPOB.

       iHTEPfEjC DZ CBqzyBAET |BM  C  BOCEMx`  liHiqMi,  KOTOPyE  iME`T
  fizi~ECKiE HOMEPA OT 0 dO 7. DZV pOdObEH DZ, HO OH CBqzyBAET  CiCTEMu
  TOlxKO C ~ETyPxMq liHiqMi, KOTOPyE iME`T fizi~ECKiE HOMEPA OT 0 dO 3.
  B |TOM Clu~AE MOvHO ispolxzowatx dBa DZ ili ~ETyPe DZV dlq 16  dOpOl-
  HiTElxHyX liHij.

       HA ris. 4 pOKAzAHy DL i DZ iHTEPfEjCy i iX fizi~ECKiE i lOgi~EC-
  KiE HOMEPA.

    --------------------------------------------------------
    |                       RT11                           |
    --------------------------------------------------------
            |            |                 |
       -----------    -------        -------------
       |   DL    |    |  DL |        |    DZ     |
       | konsolx |    -------        -------------
       -----------       |                 |
           |             |   --------------|--------------
           |             |   |   |   |   |   |   |   |   |
           |             |   |   |   |   |   |   |   |   |
   fizi~.: 0             0   0   1   2   3   4   5   6   7

                                 - 157 -





   logi~.: 0             1   2   3   4   5   6   7   8   9

                                 ris. 4

       pPi gEHEPAcii CiCTEMy OpPEdElqeTCq, sKOlxKO DL i DZ  iHTEPfEjCOB
  iMEET CiCTEMA. TAKvE uKAzyBAETCq, CKOlxKO fizi~ECKiX EdiHic  dEjCTBi-
  TElxHO CBqzAHO C TEPMiHAlAMi B CiCTEME. dlq |TiX TEPMiHAlOB HEObXOdi-
  MO uKAzATx, KAKiE iz nih qBlq`TCq lOKAlxHyMi, a KAKiE  diCTAHciOHHyMi
  lokalxnymi liHiqMi. B OTli~iE OT fizi~ECKiX  HOMEPOB,  kotorye  HA~i-
  Ha`tsq C 0 dlq kavdogo interfejsa, lOgi~ECKiE HOMEPA,  nezawisimo  ot
  interfejsa, HA~iHA`TCq C 0, i pPOdOlvA`TCq, pOKA BCE TEPMiHAly  buduT
  pEPEC~iTAHy. wo wremq generacii fizi~ECKim HOMEPAm iHTEPfEjCOB HAzHA-
  ~A`Tsq pPOgPAMMHye lOgi~ECKie HOMEPA B ClEdu`}EM pOPqdKE:

         - lOKAlxHyE DL liHii (AppAPATHyj KOHCOlxHyj  iHTEPfEjC  BCEgdA
           ECTx LUN 0);

         - udAlEHnyE DL liHii ;

         - lOKAlxHyE DZ liHii ;

         - udAlEHHyE DZ liHii.

       pOPqdOK, B KOTOPOM pPiCBAiBA`tsq  fizi~ECKiM  liHiqM  lOgi~ECKiE
  HOMEPA COOTBETCTBuET pOPqdKu, B KOTOPOM gEHEPiPu`TCq upPABlq`}iE blO-
  Ki TEPMiHAlOB (TCB). dlq KAvdOj liHii,  KOTOPu`  ukazali  w  diAlOge,
  gEHEPiPuETCq OdiH TCB. blOKi TCB PACpOlAgA`TCq B RMON B TOM  pOPqdKE,
  B KOTOPOM OpPEdElqliCx liHii.  dlq  l`bOj  HEiCpOlxzuEMOj  liHii  TCB
  OTCuTCTBuET.

       pPi zAgPuzKE MHOgOTEPMiHAlxHOj CiCTEMy PAfOC  pPOBEPqET  HAli~iE
  KAvdOgO iHTEPfEjCA, dlq KOTOPOgO Cu}ECTBuET TCB.  ECli  iHTEPfEjC  HE
  Cu}ECTBuET, lOgi~ECKij HOMEP, CBqzAHHyj C |TiM iHTEPfEjCOM, OTME~AET-
  Cq KAK HECu}ECTBu`}ij, i l`bAq pOpyTKA pOlu~iTx TAKOj LUN pPiBOdiT  K
  O{ibKE. MECTO, zAHiMAEMOE TCB HECu}ECTBu`}EgO LUN, HE budet ispolxzo-
  wano . dlq pPOBEPKi pPABilxHOCTi iHfOPMAcii, zAdAHHOj  pPi  gEHEPAcii
  CiCTEMy, MOvHO iCpOlxzOBATx KOMAHdu MOHiTOPA SHOW TERMINALS.

       zAMETiM, ~TO CiCTEMA HE pyTAETCq OpPEdEliTx, CBqzAH ili HET TEP-
  MiHAl ili  MOdEM  C  liHiEj  iHTEPfEjCA;  pPEdpOlagAETCq,  ~TO  CBqzx
  Cu}ECTBuET. dlq HECBqzAHHOj liHii BXOdHyE CiMBOly HE MOguT byTx  BBE-
  dEHy; ByXOdHyE - TEPq`TCq.



       7.8.3. KOHCOlxHyj TEPMiHAl



       PAfOC pozwolqet perekl`~enie KOHCOlxHOgO TEPMiHAlA. dalee  budet
  OpPEdElEHO zHA~EHiE TEPMiHOB: AppAPATHyj KOHCOlxHyj  iHTEPfEjC,  KOH-
  COlx zAgPuzKi, fOHOBAq KOHCOlx i ~ACTHAq KOHCOlx.

       AppAPATHyj KOHCOlxHyj iHTEPfEjC, KAK OpiCAHO By{e,  pPEdCTABlqET
  CObOj iHTEPfEjC TEPMiHAlA, PAzME}EHHyj B BEKTOPAX 60 i  64,  PEgiCTPy
  upPABlEHiq i COCTOqHiq KOTOPyX HA~iHA`TCq C  AdPECA  177560  CTPAHicy
  BBOdA/ByBOdA. |TO pOClEdOBATElxHyj (ili parallelxnyj) liHEjHyj iHTEP-
  fEjC, KOTOPyj iCpOlxzuETCq AppAPATHyM zAgPuz~iKOM (Oby~HO, ~TOby zAg-

                                 - 158 -




  PuziTx CiCTEMu, HEObXOdiMO iMETx  TEPMiHAl,  CBqzAHHyj  C  AppAPATHyM
  KOHCOlxHyM iHTEPfEjCOM.) pO~Ti BCEgdA  -  |TO  TEPMiHAl,  HA  KOTOPOM
  PAfOC pE~ATAET CBOE HA~AlxHOE COOb}EHiE. sleduet pomnitx,  ~TO  AppA-
  PATHyj KOHCOlxHyj iHTEPfEjC BCEgdA iMEET LUN 0.

       KOHCOlx zAgPuzKi - |TO TEPMiHAl, HA KOTOPOM PAfOC pE~ATAET  CBOE
  HA~AlxHOE COOb}EHiE. |TO pO~Ti BCEgdA TOT vE TEPMiHAl, KOTOPyj CBqzAH
  C AppAPATHyM KOHCOlxHyM iHTEPfEjCOM. B CiCTEME bEz  MHOgOTEPMiHAlxHOj
  pOddEPvKi CSR dlq |TOgO TEPMiHAla - 177560 COdEPviTCq B  TTKS.  (TTKS
  PAzME}AETCq w fiKCiPOBAHHOj q~ejke 304 OT HA~AlA PEzidEHTHOgO MOHiTO-
  PA). B MHOgOTEPMiHAlxHOj CiCTEME CSR PAzME}AETCq  w  q~ejke  T.CSR  B
  pEPBOM TCB B PEzidEHTHOM MOHiTOPE.

       fOHOBAq KOHCOlx, HAzyBAEMAq TAKvE CiCTEMHOj  KOHCOlx`,  pEPBOHA-
  ~AlxHO pPEdCTABlqET CObOj TO vE, ~TO i KOHCOlx zAgPuzKi. OHA OCTAETCq
  B TOM vE KA~ECTBE dO TEX pOP, pOKA HE iCpOlxzuETsq  komanda  SET  TT:
  CONSOL dlq pEPEHAzHA~EHiq fOHOBOj KOHCOli. |TO TEPMiHAl,  HA  KOTOPOM
  HAbiPA`tsq KOMAHdy MOHiTOPa i osu}estwlqetsq CBqzx  C  fOHOByM  zAdA-
  HiEM. dlq BypOlHEHiq OpEPATiBHOgO zAdAHiq ili CiCTEMHyX zAdAHij  CiC-
  TEMHAq KOHCOlx MOvET byTx PAzdElEHA. B |TOM Clu~AE ClEduET  iCpOlxzO-
  BATx CTRL/B dlq CBqzi C fOHOByM zAdAHiEM, CTRL/F -  dlq  OpEPATiBHOgO
  zAdAHiq i CTRL/X dlq CiCTEMHyX zAdAHij. ~TOby pPEPBATx zAdAHiE C PAz-
  dElEHHOj KOHCOli, ClEduET HAbPATx dwavdy <CTRL/C>.

       CiCTEMHyE MAKPOKOMAHdy .TTYIN, .TTYOUT, .CSIGEN, .CSISPC, .GTLIN
  i .PRINT rabota`t TOlxKO C fOHOBOj KonCOli dlq  fOHOBOgO  zAdAHiq,  A
  TAKvE dlq l`bOgO OpEPATiBHOgO ili CiCTEMHOgO zAdAHij,  zAgPuvAEMyX  C
  |TOgO TEPMiHAlA.


       pRIME^ANIE. l`bOj HOMEP, uKAzAHHyj C uCTPOjCTBOM TT, budET igHO-
  PiPOBATxCq PAfOC. pO|TOMu ObPA}EHiq K TT:, TT0:, TT1: i T.d. qBlq`TCq
  |KBiBAlEHTHyMi i BOCpPiHiMA`TCq pO uMOl~AHi` KAK ObPA}EHiE K  fOHOBOj
  KOHCOli.

       B MHOgOTEPMiHAlxHOj CiCTEME MOvHO HAzHA~iTx fOHOBu`  KOHCOlx  HA
  dPugOj TEPMiHAl, iCpOlxzuq komandu monitora SET TT: CONSOL.  uKAzyBAq
  dPugOj lOgi~ECKij HOMEP B komande SET, MOvHO HAzHA~iTx  fOHOBu`  KOH-
  COlx HA l`bOj dPugOj TEPMiHAl B CiCTEME, iCKl`~Aq ~ACTHu` KOHsolx.

       ~astnaq konsolx - |to  lokalxnyj  terminal,  ispolxzuemyj  odnim
  operatiwnym ili sistemnym  zadaniem.  nazna~itx  sobstwennu`  ~astnu`
  konsolx movno, ispolxzuq FRUN/TERMINAL:N ili SRUN/TERMINAL:N.

       nikakoe drugoe zAdAHiE HE  MOvET  iCpOlxzOBATx  ~ACTHu`  KOHCOlx
  COBMECTHO C pEPBOHA~AlxHyM zAdAHiEM.

       ~ACTHAq KOHCOlx zAdAHiq pPEdCTABlqET CObOj TEPMiHAl,  C  KOTOPym
  rabota`t MAKPOKOMAHdy .TTYIN, .TTYOUT,  .CSIGEN,  .CSISPC,  .GTLIN  i
  .PRINT, zApPOCy TipA .READ ili .WRITE, iME`}EE dOCTup K |TOj  ~ACTHOj
  KOHCOli. ECli zAdAHiE iMEET CBO` CObCTBEHHu` ~ACTHu` KOHCOlx,  HElxzq
  ObPA}ATxCq K zAdAHi` ~EPEz fOHOBu`  KOHCOlx.  TAKiM  ObPAzOM,  HElxzq
  iCpOlxzOBATx, naprimer, <CTRL/F> C fOHOBOj KOHCOli dlq BzAiMOdEjCTBiq
  C OpEPATiBHyM zAdAHiEM, KOTOPOE iMEET CBO` CObCTBEHHu`  ~ACTHu`  KOH-
  COlx.

       nelxzq nazna~itx ~ACTHu` KOHCOlx HA dPugOj  TEPMiHAl,  iCpOlxzuq
  komandu monitora SET TT: CONSOL; TAKaq komanda CpPABEdliBa  li{x  dlq
  fOHOBOj KOHCOli. |TO pPOiCXOdiT iz-zA TOgO, ~to interpretator  komand

                                 - 159 -




  monitora wypolnqetsq KAK fOHOBOE zAdAHiE,  A  OHO  MOvET  zApusKATxCq
  TOlxKO C fOHOBOj KOHCOli. fOHOBAq KOHCOlx qBlqETCq ~ACTHOj, ECli  HET
  zAdAHij, PAzdElq`}iX EE.

       PAzdElqemaq KOHCOlx budet qwlqtxsq fOHOBOj KOHCOlx` pOKA  wypol-
  nq`tsq ClEdu`}iE uClOBiq:

         - B RT11FB(XM) bEz  pOddEPvKi  CiCTEMHyh  zAdAHij  OpEPATiBHOE
           zAdAHiE BypOlHqETCq C ~ACTHOj KOHCOli;

         - B RT11FB(XM) C pOddEPvKOj sistemnyh zAdAHij BCE 6  CiCTEMHyX
           zAdAHij i OpEPATiBHOE zAdAHiE  BypOlHq`TCq  i  KAvdOE  iMEET
           CBO` ~ACTHu` KOHCOlx.

       sleduet pOMHiTx, ~TO ~ACTHAq  KOHCOlx  HiKOgdA  HE  PAzdElqETCq.
  pPOCTO KOHCOlx - |to TEPMiH, KOTOPyj OTHOCiTCq K  TEPMiHAlu,  iCpOlx-
  zuEMOMu KAK fOHOBAq PAzdElqEMAq KOHCOlx, ili KAK ~ACTHAq KOHCOlx OpE-
  PATiBHOgO libo CiCTEMHOgO zAdAHij.



       7.8.4. iCpOlxzOBAHiE   dopolnitelxnyh   TEPMiHAlOB   bez
              mnogoterminalxnoj poddervki




       Cu}ECTBuET HECKOlxKO CiTuAcij,  B  KOTOPyX  iCpOlxzOBAHiE  bOlEE
  OdHOgO TEPMiHAlA MOvET byTx dopustimo bez primeneniq CpEciAlxHyX MaK-
  POKOMAHd. dalee OpiCyBA`Tsq HEKOTOPyE iz |TiX CiTuAcij i  pOKAzyBAeT-
  sq, KAK ispolxzowatx TEPMiHAly bEz MHOgOTEPMiHAlxHOj pOddEPvKi.



       7.8.4.1. KOHCOlxHyj  wideo-TEPMiHAl   i   TEPMiHAl-vECTKAq
                KOpiq




       Tipi~HAq CiTuAciq BOzHiKAET TOgdA, KOgdA vElATElxHO iCpOlxzOBATx
  BidEO-TEPMiHAl KAK fOHOByj  KOHCOlxHyj  TEPMiHAl  i  TEPMiHAl-vECTKu`
  KOpi`  KAK  pOCTPO~HOE  uCTPOjCTBO.  predstawlqemye  nive  pPOcEduPy,
  iCpOlxzu`TCq B zABiCiMOCTi OT TOgO, KAKOj TEPMiHAl qBlqETCq  KOHCOlx`
  zAgPuzKi - BidEO-TEPMiHAl ili TEPMiHAlvECTKAq KOpiq.


       1) KOHCOlx` zAgPuzKi qBlqETCq wideo-terminal


       ECli BidEO-TEPMiHAl qBlqETCq KOHCOlx` zAgPuzKi,  to  TEPMiHAl  -
  vECTKu` KOpi` pPoCTO movno  iCpOlxzOBATx  KAK  pOCTPO~HOE  pE~ATA`}EE
  uCTPOjCTBO, ustanowiw nowoe zna~enie adresow wektora i CSR dlq termi-
  nala-vestkaq kopiq w fajle LS-drajwera komandami  SET  LS:VECTOR=N  i
  SET LS:CSR=N, gde N - ~etnoe wosxmeri~noe ~islo (dlq CSR -  ne  menee
  160000, a dlq VECTOR - ne bolee  500).  zatem  sleduet  perezagruzitx
  drajwer LS i, HAzHA~iw LP->LS (komandoj monitora ASSIGN LS LP) na~atx
  iCpOlxzOBATx TEPMiHAl-vECTKu` KOpi` KAK pE~ATA`}EE uCTPOjCTBO.


                                 - 160 -




       |TO pPOCTEj{EE iz MHOgOTEPMiHAlxHyX pPiMEHEHij, pOCKOlxKu OHO HE
  BKl`~AET gEHEPAcii CiCTEMy. |TA pPOcEduPA  |ffEKTiBHA  tolxko  w  tom
  slu~ae,  ECli  TEPMiHAl-vestkaq  KOpiq  HAXOdiTCq  HA  lOKAlxHOM  DL-
  iHTEPfEjCE.

       B Cilu PqdA ObCTOqTElxCTB MOvET byTx vElATElxHO, ~TOby TEPMiHAl-
  vestkaq KOpiq CTAl KOHCOlxHyM TEPMiHAlOM. ~TOby |TO CdElATx,  sleduet
  iCpOlxzowatx pPOcEduPu, OpiCAHHu` B sledu`}em podpunkte;


       2) KOHCOlx` zAgPuzKi qBlqETCq terminal-vestkaq kopiq


       KAK CdElAtx TEPMiHAl-vestku` KOpi` uCTPOjCTBOM pe~ati B TOM Clu-
  ~AE, KOgdA OH qBlqETCq KOHCOlx` zAgPuzKi, zABiCiT OT TOgO,  HA  KAKOM
  iHTEPfEjCE DL ili DZ HAXOdiTCq  BidEO-TEPMiHAl.  ECli  BidEO-TEPMiHAl
  HAXOdiTCq HA DL-iHTEPfEjCE, Cu}ECTBu`T ~etyre BOzMOvHyX METOdA, KOTO-
  PyE pOzBOlq`T iCpOlxzOBATx TEPMiHAl-vECTKu` KOpi` KAK pE~ATA`}EE uCT-
  POjCTBO.

       pPOcEduPa 1. sleduet BypOlHiTx  gEHEPAci`  CiCTEMy  (HE  BKl`~Aq
  MHOgOTEPMiHAlxHu` pOddEPvKu), ~TOby CdElATx  BidEO-TEPMiHAl  KOHCOlx`
  zAgPuzKi. zAMETiM,  ~TO  pPi  |TOM  TEPMiHAl-vestkaq  KOpiq  BCE  E}E
  OCTAETCq na AppAPATHOM KOHCOlxHOM iHTEPfEjCE. OdHAKO,  RT11  prEdCTA-
  BiTCq pPi zAgPuzKE HA BidEO-TEPMiHAl. KOgdA CiCTEMA zAgPuvEHA,  MOvno
  iCpOlxzOBATx LS-dPAjBEP,  ~TOby  HAzHA~iTx  TEPMiHAlvECTKu`  KOpi`  B
  KA~ECTBE pE~ATA`}EgO uCTPOjCTBA.

       pPOcEduPa 2.  izMEHiTx  KOHfiguPAci`  CiCTEMy  TAK,  ~TO  BidEO-
  TEPMiHAl stanet KOHCOlx` zAgPuzKi,  A  TEPMiHAl-vECTKAq  KOpiq  budet
  HAXOdiTxCq HA DLiHTEPfEjCE.  zATEM  sleduet  iCpOlxzOBATx  pPOcEduPu,
  OpiCAHHu` wy{e dlq slu~aq, kogda konsolx` zagruzki qwlqetsq wideoter-
  minal.

       pPOcEduPa 3. MOvno  iCpOlxzOBATx  CpEciAlxHu`  pPOgPAMMu,  ~TOby
  pEPEKl`~iTx fOHOBu` KOHCOlx HA BidEO-TEPMiHAl. pPOcEduPA 3 AHAlOgi~HA
  pPOcEduPE 1. MOvno iCpOlxzOBATx LS-dPAjBEP, ~TOby HAzHA~iTx TEPMiHAl-
  vECTKu` KOpi` KAK pE~ATA`}EE uCTPOjCTBO. sledu`}ij  podpunkt  pOKAzy-
  BAET pPOgPAMMu, KOTOPu` nado zApuCtitx, ~TOby  realizowatx  pPOcEduPu
  3.

       pPOcEduPA 4 AHAlOgi~HA pPOcEduPE  3  zA  iCKl`~EHiEM  TOgO,  ~TO
  izMEHqETsq ObPAz MOHiTOPA HA uCTPOjCTBE wne{nej pAMqTi. |TA pPocEduPA
  pOlezHA TOlxKO B CiCTEMAX bEz MHOgOTEPMiHAlxHOj pOddEPvKi.  dlq  |toj
  procedury neobhodimo zAdATx pPABilxHOE zHA~EHiE BEKTOPA, CSR,  CME}E-
  HiE dO KAPTy zA}iTy AdPECOB i CAM  KOd  za}ity  wektora  "uprawlq`}aq
  sistema. rukowodstwo sistemnogo programmista", 2/b/.00109-01 32 01-3.

  sledu`}ij nive tekst predstawlqet  soboj  fragment  korrekcii  obraza
  monitora programmoj SIPP.

                                 - 161 -




   |modifikaciq w monitore adresow CSR i wektorow
   !CSR = 175620-175626 / VEC = 310-316

    .R SIPP<CR>
    *MONITR.SYS<CR>              ! imq fajla monitora,
                                  ! kotoryj modificiruetsq
    BASE?    ;S<CR>
    SEARCH FOR?  60<sR>
    START?       5100<sR>
    END?         5200<sR>
    FOUND AT NNNNNN               ! najden NNNNNN,
                                  ! soderva}ij "60"
    OFFSET? <sR>                 ! wwesti NNNNNN


     BASE       OFFSET        OLD    NEW?
    NNNNNN      000000     000060    310<sR>!nowyj wektor
    OFFSET?     6<sR>


     BASE       OFFSET        OLD    NEW?
    NNNNNN      000006     000064    314<sR>!nowyj wektor
                                             !+4
    NNNNNN      000010     XXXXXX    ^Z<sR>
    OFFSET?     ^Z<sR>
    BASE?     $RMON<sR>              !najti $RMON w karte
    OFFSET?    340<sR>               !zagruzki
     BASE       OFFSET        OLD    NEW?
    $RMON       000304     177560    175620<sR> !now. zna~eniq
    $RMON       000306     177562    175622<sR> !adresow
    $RMON       000310     177564    175624<sR> !registrow
    $RMON       000312     177566    175626<sR> !
    $RMON       000314     177777    ^Z<sR>
    OFFSET?    342<sR>               !sme}enie do karty
                                      !za}ity


     BASE        OFFSET         OLD    NEW?
    $RMON        000342      000000    17<sR> !ustanowitx
                                               !za}itu
    $RMON        000344      000000    ^Y
    *^C


       ECli BideO-TEPMiHAl pOdKl`~EH C pOMO}x` DZ-interfejsa, TO  Heob-
  hodimo BypOlHiTx gEHEPAci` CiCTEMy  s  MHOgOTEPMiHAlxHOj  poddervkoj,
  ukazaw iHfOPMAci` O KOHfiguPAcii CiCTEMy takoj, KAK  OHA  Cu}ECTBuET.
  pri zAgPuzke HOBoj CiCTEMy neobhodimo uCTAHOBiTx LS-BEKTOP i CSR TEP-
  MiHAlu-vECTKOj KOpii, iCpOlxzuq komandu "SET LS:", ~to  izMEHiT  fAjl
  dPAjBEPA HA uCTPOjCTBE  wne{nej  pAMqTi.  pOClE  |TOgO  HElxzq  budET
  iCpOlxzOBATx TEPMiHAl-vECTKu` KOpi` B l`bOM MHOgOTEPMiHAlxHOM  pPiME-
  HEHii. BEKTOP pPEPyBAHiq i CSR HEObXOdiMO MOdificiPOBATx TOlxKO  Odin
  raz.

       pPEvdE ~EM iCpOlxzOBATx LS-dPAjBEP, uCTAHOBiTE SET  TT:  CONSOL,
  ~TOby HAzHA~iTx fOHOBu` KOHCOlx BidEO-TEPMiHAlu. pOCKOlxKu |TA  uCTA-
  HOBKA BOzBPA}AETCq K CBOEMu pEPBOHA~AlxHOMu  COCTOqHi`  pOClE  KAvdOj
  zAgPuzKi, zAHECiTE |Tu KOMAHdu SET B CBOj CTAPTOByj KOMAHdHyj fAjl.

                                 - 162 -




       pRIME^ANIE. nelxzq  iCpOlxzOBATx  KOMAHdu  SET  TT:CONSOL=0  ili
  ObPA}ATxCq K TEPMiHAlu pO LUN 0, T.K. |TO ByzOBET CbOj CiCTEMy.



       7.8.4.2. pEPEKl`~EHiE KOHCOlxHOgO TEPMiHAlA




       nive sleduet tekst pPOgPAMMy, KOTOPu` MOvno iCpOlxzOBATx,  ~TOby
  pEPEKl`~aTx  KOHCOlxHyj  TEPMiHAl  HA  dPugOj  TEPMiHAl  CiCTEMy  bEz
  iCpOlxzOBAHiq CpEciAlxHyX MHOgOTEPMiHAlxHyX OCObEHHOCTEj.  dlq  |togo
  nado OTPEdAKTiPowatx iCXOdHyj fAjl dlq zHA~EHij CSR i  BEKTOPA  HOBOj
  KOHCOli, iCpOlxzuq CiMBOly CSRAD i VEC, a  dlq  pEPEKl`~EHiq  KOHCOli
  MEvdu dBuMq TEPMiHAlAMi (TudA i ObPATHO) CdElaTx dBE KOpii pPOgPAMMy,
  pO OdHOj HA TEPMiHAl.

             pPOgPAMMA pEPEKl`~EHiq konsoli
             ------------------------------

   ;+
   ;      programma perekl`~eniq sistemnogo terminala na
   ;      drugoj lokalxnyj terminal bez mnogoterminalxnoj
   ;      poddervki
   ;-


          .MCALL  .MTPS,.PRINT,.EXIT

          CSRAD   = 175620       ;** CSR klawiatury nowoj
                                 ;konsoli **
          VEC     = 310          ;wektor nowoj konsoli
          SYSGEN  = 372          ;sme}enie do slowa SYSGEN
          MTTY$   = 20000        ;bit mnogoterminalxnoj
                                 ;poddervki w slowe SYSGEN


          BMASK   = 360/<<15.*<VEC-<20*<VEC/20>>>/8.>+1>
                                 ;bit-maska razrqdow w slowe
                                 ;za}ity wektorow
          BITMAP  = 326+<VEC/20> ;sme}enie do slowa za}ity
                                 ;wektorow w RMON


   PROC3: MOV     @#54,R0           ;R0 => RMON
          BIT     #MTTY$,SYSGEN(R0) ;estx mnogoterminalxnaq
                                    ;poddervka?


          BNE     2$                ;da, estx
          .MTPS   #340              ;ustanowitx prioritet 7

          BISB    #BMASK,BITMAP(R0) ;za}ita wektora nowoj
                                    ;konsoli


          ADD     #304,R0        ;adres TTKS, soderva}ij CSR
                                 ;konsoli

                                 - 163 -




          MOV     #CSR,R1
          CLR     @(R0)          ;zapretitx prerywanie ot
                                 ;klawiatury
   1$:    MOV     (R1)+,(R0)+
          TST     @R1
          BMI     1$
          MOV     #60,R0         ;wektor nastoq}ej konsoli
          MOV     @R1,R1         ;R1 => nowyj wektor
          .REPT   4
          MOV     (R0)+,(R1)+
          .ENDR
          .MTPS   #0             ;razre{itx prerywaniq
          .EXIT                  ;konec programmy

   2$:    .PRINT  #NOMT          ;pe~atx soob}eniq ob o{ibke
          .EXIT

          .NLIST  BEX
   NOMT:  .ASCII  /?mnogoterminalxnyj revim,/
          .ASCIZ / ispolxzujte SET TT CONSOL /
          .EVEN

   CSR:   .WORD   CSRAD          ;tablica adresow CSR,
          .WORD   CSRAD+2        ;buferow dannyh,
          .WORD   CSRAD+4        ;wektora prerywaniq nowoj
          .WORD   CSRAD+6        ;konsoli
          .WORD   VEC
          .END    PROC3



       7.8.4.3. OTdElxHyj TEPMiHAl dlq KAvdOgO zAdAHiq




       CgEHEPiPOBAB CiCTEMu C MHOgOTEPMiHAlxHOj pOddEPvKOj, lEgKO MOvHO
  HAzHA~iTx ~ACTHyE TEPMiHAly dlq KAvdOgO iz BOCxMi  zAdAHij.  KOHE~HO,
  dlq |togo HuvHO zAgPuziTx RT11FB(XM) C pOddEPvKOj CiCTEMHyh zAdAnij.

       KAK OpiCAHO By{e, dlq |TOgO  HAdO  pPOCTO  iCpOlxzOBATx  KOMAHdy
  FRUN/TERMINAL:N ili SRUN/TERMINAL:N pPi zApuCKE OpEPATiBHOgO ili CiC-
  TEMHOgO zAdAHiq, HAzHA~Aq TEM CAMyM TEPMiHAly dlq HiX. pri  |tom  HET
  HEObXOdiMOCTi iCpOlxzOBATx KAKiE-libO MHOgOTEPMiHAlxHyE MAKPOKOMAHdy.
  ClEduET pOMHiTx, ~TO KAvdAq KOHCOlx qBlqETCq  dEjCTBiTElxHO  ~ACTnOj:
  HElxzq HAzHA~iTx OdiH TEPMiHAl dBuM zAdAHiqM C  pOMO}x`  KOMAHd  FRUN
  ili SRUN/TERMINAL:N. KAvdOE zAdAHiE MOvET iCpOlxzOBATx TOlxKO  CObCT-
  BEHHyj TEPMiHAl.



       7.8.5. wwedenie w makrokomandy



       rabotu s dopolnitelxnymi terminalami, ob}ee  koli~estwo  kotoryh
  ne dolvno prewy{atx 16, obespe~iwa`t mnogoterminalxnye makrokomandy.



                                 - 164 -




       B TAbl. 4 ukazany dEjCTBiq, KOTOPyE pPOgPAMMA  dOlvHA  BypOlHqTx
  dlq TOgO, ~TOby uprawlqtx dOpOlHiTElxHymi TEPMiHAlami. B HEj pPiBEdE-
  Hy  TAKvE  COOTBETCTBu`}iE  makrokomandy  dlq  pPOgPAMMiPOBAHiq  |TiX
  dEjCTBij.

                                                   tablica 4
  -------------------!--------------------------------------
         dEjCTBie    !     makrokomanda
  -------------------!--------------------------------------
   pOlu~EHiE CTATuCA !
   MHOgOTEPMiHAlxHOj ! iCpOlxzujTE .MTSTAT
   CiCTEMy           !
                     !
   zAXBAT TEPMiHAlA  ! iCpOlxzujTE .MTATCH dlq zAXBATA
   (pOdKl`~EHiE K    ! TEPMiHAlA i zAKPeplEHiq EgO zA
    pPOgPAMME)       ! pPOgPAMMOj. Oby~HO zAXBAT BCEX
                     ! HEObXOdiMyX TEPMiHAlOB OCu}ECTBlq-
                     ! ETCq B HA~AlE pPOgPAMMy. zAMETiM,
                     ! ~TO TOlxKO OdHO zAdAHiE MOvET
                     ! zAXBATiTx PAzdElqEMu` KOHCOlx i
                     ! TOlxKO BlAdElEc TEPMiHAlA MOvET
                     ! iCpOlxzOBATx MAKPOKOMAHdu dlq
                     ! |TOgO. TEM HE MEHEE BCE zAdAHiq,
                     ! iCpOlxzu`}iE COBMECTHO fOHOBu`
                     ! KOHCOlx MOguT iCpOlxzOBATx
                     ! .TTYIN,.TTYOUT, .CSIGEN, .CSISPC,
                     ! .GTLIN  i .PRINT , TAKvE KAK
                     ! .READ  i .WRITE  dlq TT:.
                     ! dlq OpPEdElEHiq ili izMEHEHiq
                     ! sostoqniq terminalow dO iCpOlxzO-
                     ! waniq sootwetstwu`}ih mnogoter-
                     ! MiHAlxHyX MAKPOKOMAHd nuvno proweritx
                     ! slowo sostoqnie kavdogo terminala
                     ! (ast).
                     ! dlq OCu}ECTBlEHiq KAvdOgO iz uKA-
                     ! zannyh dejstwij ClEduET iCpOlxzOBATx
                     ! pPiBEdEHHyE HivE MAKPOKOMAHdy.

                                 - 165 -




                                         prodolvenie tabl. 4
   ------------------!--------------------------------------
         dejstwie    !         makrokomanda
  -------------------!--------------------------------------
   pPOBEPKA XAPAKTE- ! ispolxzujte .MTGET
   ristik terminala  !
                     !
   izMEHEHiE XAPAKTE-! ispolxzujte .MTSET
   ristik TEPMiHAlA  !
                     !
   pOlu~EHiE CiMBOlA ! ispolxzujte .MTIN
   s TEPMiHAlA C     !
   ovidaniem         !
   BypOlHEHiq        !
                     !
   pOlu~EHiE CiMBOlA ! iCpOlxzujTE  .MTSET  dlq
   C TEPMiHAlA bEz   ! uCTAHOBKi ClOBa COCTOqHiq,
     OvidAHiq        ! A zATEM  .MTIN (HEObXOdiMO
                     ! iCpOlxzOBATx .MTSET TOlxKO
                     ! OdiH PAz)
                     !
   pEPEdA~A CiMBOlA  ! ispolxzujte .MTOUT
   na TEPMiHAl C     !
   ovidaniem         !
   BypOlHEHiq        !
                     !
   pEPEdA~A CiMBOlA  ! uCTAHOBiTE ClOBO COCTOqHiq
   na TEPMiHAl bEz   ! C pOMO}x`  .MTSET i zATEM
   ovidaniq          ! iCpOlxzujTE  .MTOUT
                     !
   pEPEdA~A CTPOKi   ! ispolxzujte .MTPRINT
   na terminal C ovi-!
   dAHiEM BypOlHEHiq !
                     !
   CbPOC <CTRL/O> dlq! ispolxzujte .MTRCTO
   BOzMOvHOCTi ByBOdA!
                     !
   OCBObOvdEHiE TEP- ! ispolxzujte .MTDTCH
   minala dlq        !
   dPugOgO zAdAHiq   !



       7.8.6. CTPuKTuPy dAHHyX




       ClEdu`}iE razdely OpiCyBA`T dBE BAvHyX CTPuKTuPy dAHHyX dlq MHO-
  gOTEPMiHAlxHyX CiCTEM: blOK upPABlEHiq TEPMiHAlA i ClOBO ACiHXPOHHOgO
  CTATuCA TEPMiHAlA.

                                 - 166 -




       7.8.6.1. blOK upPABlEHiq TEPMiHAlA (TCB)




       dlq KAvdOgO TEPMiHAlA COzdAETsq pO OdHOMu blOKu upPABlEHiq.  pPi
  gEHEPAcii mnogoterminalxnoj CiCTEMy KAvdyj  TCB  PAzME}EH  B  RMON  i
  COdEPviT XAPAKTEPiCTiKi TEPMiHAlA, CTATuC TEPMiHAlA, BXOdHyE i ByXOd-
  HyE KOlxcEByE bufEPy i uKAzATEli dlq TEPMiHAlA. dliHA TCB  KOlEblETCq
  B  zABiCiMOCTi  OT  zAdAHHyX  XAPAKTEPiCTiK  pPi  gEHEPAcii  CiCTEMy.
  zAMETiM,~TO pEPByE 20(dECqTi~Hoe) ClOB B KAvdOM TCB fiKCiPOBAHy.


       tabl. 5 opisywaet sodervanie atributow TCB, (*) OTME~EHy TE PEK-
  BiziTy TCB, dlq kotoryh PAzMEPy, CME}EHiq i CAMO Cu}ECTBOBAHiE  zABi-
  CqT OT CpEciAlxHyX BOzMOvHOCTEj, zAdAHHyX B pPOcECCE gEHEPAcii.

                                 - 167 -




                                                   tablica 5
                sodervanie atributow TCB

  ----------------------------------------------------------
  CME}EHiE! iMq  !        OpiCAHiE
  (bAjTy) !      !
  --------!------!------------------------------------------
       0  !T.CNFG! ClOBO KOHfiguPAcii TEPMiHAlA. pPOgPAMMA
          !      ! i MOHiTOP ObMEHiBA`TCq iHfOPMAciEj O XA-
          !      ! PAKTEPiCTiKAX TEPMiHAlA ~EPEz .MTGET i
          !      ! .MTSET. |Ti MAKPOKOMAHdy iCpOlxzu`T ~ety-
          !      ! re ClOBA blOKA COCTOqHiq BHuTPi pPOgPAMMy
          !      ! dlq pOlu~EHiq iHfOPMAcii O TEPMiHAlE.
          !      ! pEPBOE ClOBO M.TSTS iMEET TAKu` vE CTPuK-
          !      ! TuPu, ~TO i T.CNFG (TAbl. 6)
  --------!------!-----------------------------------------
       2  !T.CNF2! BTOPOE ClOBO KOHfiguPAcii TEPMiHAlA.
          !      ! CTuKTuPA EgO TAKAq vE KAK i M.TST2
          !      ! BTOPOgO ClOBA ~etyrehClOBHOgO blOKA CTA-
          !      ! tusa dlq .MTGET i .MTSET (TAbl. 7)
  --------!------!-----------------------------------------
       4  !T.TFIL! COdEPviT CiMBOl, TPEbu`}ij dlq |TOgO
          !      ! TEPMiHAlA zApOlHiTElEj. KOpiq |TOgO bAj-
          !      ! TA B ~etyreXClOBHOM blOKE CTATuCA HAz-
          !      ! wana M.TFIL
  --------!------!------------------------------------------
       5  !T.FCNT! COdEPviT KOli~ECTBO zApOlHiTElEj dlq
          !      ! simwola, ukazannogo w T.tFIL. kopiq
          !      ! bAjTA B ~etyreXClOBHOM blOKE statusa
          !      ! nazwana M.FCNT
  --------!------!------------------------------------------
       6  !T.WID ! COdEPviT {iPiHu CTPOKi dAHHOgO TEPMiHAlA.
          !    :  ! KOpiq HAzBAHA M.TWID. MAKCiMAlxHAq dliHA
          !      ! CTPOKi 255 CiMBOlOB (dECqTi~Hoe)
  --------!------!------------------------------------------
      10  !T.OCHR! COdEPviT CiMBOl dlq ByBOdA
  --------!------!------------------------------------------
      11  !T.LPOS! COdEPviT TEKu}u` pOzici` KAPETKi
          !      ! w stroke terminala
  --------!------!------------------------------------------
      12  !T.OWNR! uKAzATElx CME{AHHOj OblACTi zAdAHiq, zA-
          !      ! XBATiB{EgO TEPMiHAl. |TO ClOBO pPiHiMAET
          !      ! zHA~EHiE, ECli TEPMiHAl qBlqETCq ~ACTHyM
          !      ! dlq PAbOTy, ili, ECli |to PAzdElqEMAq
          !      ! konCOlx i OdHO zAdAHiE zAXBATilo EE. zna-
          !      ! ~EHiE PABHO nul`, ECli TEPMiHAl qBlqETCq
          !      ! PAzdElqEMOj KOHCOlx` i OHA HE zAXBA~EHA
          !      ! zAdAHiEM, ili, ECli |TO HE KOHCOlx i
          !      ! TEPMiHAl HE zAKPEplEH ni zA OdHim zadani-
          !      ! em. zHA~EHiE ClOBA HE HulEBOE B
          !      ! RT11SJ, ECli zAdAHiE iCpOlxzuET .MTATCH.

                                 - 168 -




                                         prodolvenie tabl. 5
  --------!-------!-----------------------------------------
  sme}enie!  imq  !          opisanie
  (bAjTy) !       !
  --------!-------!-----------------------------------------
      14  !T.STAT ! COdEPviT CTATuC TEPMiHAlA (TAbl. 8)
  --------!-------!-----------------------------------------
      16  !T.CSR  ! COdEPviT AdrEC (CSR) KlABiATuPy TEPMiHA-
          !       ! lA ili nulx, ECli zAgPuz~iK HE ObHAPuvil
          !       ! adres CSR. |TO dElAET LUN HEiCpOlxzuEMyM
  --------!-------!-----------------------------------------
      20  ! T.VEC ! COdEPviT pEPByj BEKTOP pPEPyBAHiq TEPMi-
          !       ! HAlA
  --------!-------!-----------------------------------------
      22  ! T.PRI ! COdEPviT pPiOPiTET pPEPyBAHiq
  --------!-------!-----------------------------------------
      24  ! T.JOB ! COdEPviT HOMEP zAdAHiq, zAXBATiB{EgO
          !       ! TEPMiHAl
  --------!-------!-----------------------------------------
      25  ! T.PUN ! COdEPviT HOMEP TEPMiHAlA. |TO zHA~EHiE
          !       ! BCEgdA nulx dlq TEPMiHAlOB, pOdKl`~AEMyX
          !       ! ~EPEz DL iHTEPfEjC. dlq DZ interfejsa -
          !       ! zHA~EHiq OT 0 dO 7 (0 - 3 dlq DZV)
  --------!-------!-----------------------------------------
      26  !T.NFIL ! C~ET~iK zApOlHiTElEj. |TOT bAjT COdEPviT
          !       !KOli~ECTBO, pOzicij OCTAB{iXCq dlq ByBOdA
  --------!-------!-----------------------------------------
      27  !T.PTTI ! COdEPviT pOClEdHij CiMBOl, BBEdEHHyj C
          !       ! TEPMiHAlA
  --------!-------!-----------------------------------------
      30  !T.TCTF ! COdEPviT CpEciAlxHyj CiMBOl-zApOlHiTElx
          !       !  (HApPiMEP, zApOlHiTElx dlq TAbulqcii)
  --------!-------!-----------------------------------------
      31  !T.TNFL ! COdEPviT C~ET~iK dlq CpEciAlxHOgO CiMBO-
          !       ! lA zApOlHEHiq. zHA~EHiE B HEM zApiCyBA-
          !       ! ETCq KAK OTPicATElxHOE ~iClO
  --------!-------!-----------------------------------------
      32  ! T.TID ! uKAzATElx CTPOKi idEHTifiKAcii, KOTOPAq
          !       ! COdEPviT iMq zAdAHiq; iCpOlxzuetsq
          !       ! TOlxKO TOgdA, KOgdA MOHiTOP pE~Ataet
          !       ! (ByBOdiT) |TOT idEHTifiKATOP. B
          !       ! OCTAlxHOE BPEMq - PABEH nul`
  --------!-------!-----------------------------------------
      34  !       ! zAPEzEPBiPOBAH
  --------!-------!-----------------------------------------
      36  !T.TtLC ! COdEPviT C~ET~iK CTPOK TEPMiHAlA (KOli-
          !       ! ~ECTBO CTPOK BO BXOdHOM bufEPE)
  --------!-------!-----------------------------------------
      40  !T.IRNG ! uKAzATElx na pEPByj bAjT BO BXOdHOM
          !       ! kolxcEBOM bufEPE
  --------!-------!-----------------------------------------
      42  !T.IPUT ! BXOdHOj uKAzATElx rUT
  --------!-------!-----------------------------------------
      44  !T.ICTR ! C~ET~iK BBOdiMyX CiMBOlOw

                                 - 169 -




                                         prodolvenie tabl. 5
  --------!-------!-----------------------------------------
  sme}enie!  imq  !           opisanie
  (bAjTy) !       !
  --------!-------!-----------------------------------------
      46  !T.IGET ! BXOdHOj uKAzATElx GET
  --------!-------!-----------------------------------------
      50  !T.ITOP ! uKAzyBAET gPAHicu BXOdHOgO KOlxcEBOgO
          !       ! bufEPA. |TO ClOBO uKAzyBAEt HA bAjT, HA-
          !       ! XOdq}ijCq zA pPEdElAMi dAHHOgO bufEPA
  --------!-------!-----------------------------------------
   *  52  !   -   ! BXOdHOj KOlxcEBOj bufEP. EgO dliHA zAdA-
          !       ! ETCq pPi gEHEPAcii CiCTEMy. dliHA bufera
          !       ! w bajtah (40) COdEPviTCq B TTYIN
  --------!-------!-----------------------------------------
   *      !T.OPUT ! ByXOdHOj uKAzATElx PUT
   *      !T.OCTR ! C~ET~iK ByBOdiMyX CiMBOlOB,
          !  -    ! flag CTRL/O. nulx ozna~aet, ~to
          !       ! CTRL/o sbro{en, edinica - ustanowlen
   *      !T.OGET ! ByXOdHOj uKAzATElx GET
   *      !T.OTOP ! pOKAzyBAET gPAHicu ByXOdHOgO KOlxcEBOgO
          !       ! bufEPA
   *      !  -    ! ByXOdHOj KOlxcEBOj bufEP. EgO dliHA zA-
          !       ! dAETCq pPi gEHEPAcii CiCTEMy. |Ta dliHA
          !       ! B bAjTAX COdEPviTCq B TTYOUT
   *      ! T.RTRY! Cu}ECTBuET, ECli pPi gEHEPAcii zAdAHA
          !       ! pOddEPvKA TAjM-AuTA ili MOdEMA. |TO ClO-
          !       ! BO COdEPviT C~ET~iK pOBTOPHyX zApPOCOB
          !       ! HA ByBOd
   *      ! T.TBLK! Cu}ECTBuET, ECli pPi gEHEPAcii zAdAHA
          !       ! pOddEPvKA TAjM-AuTA ili MOdEMA. |TO blOK
          !       ! TAjM-AuTA dliHOj semx ClOB
   *      ! T.AST ! Cu}ECTBuET, ECli pPi gEHEPAcii zAdAHO
          !       ! ACiHXPOHHOE ClOBO COCTOqHiq TEPMiHAlA.
          !       ! qBlqETCq uKAzATElEM ClOBA aSt. w
          !       ! RT11XM zA     uKAzATElEM aSt ClEduET
          !       ! BTOPOE ClOBO, COdEPvA}EE w PA1 BEli~iHu
          !       ! dlq OTObPAvEHiq B ClOBO aSt
   *      ! T.XFLG! Cu}ECTBuET, ECli pPi gEHEPAcii zAdAHA
          !       ! pOddEPvKA CiCTEMHyh zAdAHij
          !       ! flAg iMEET HEHulEBOE zHA~EHiE, esli
          !       ! zadan CTRL/X
   *      ! T.hsNT! su}estwuet, esli pri generacii zadana
          !       ! pOddEPvKA CiCTEMHyh zAdAHij. |TOT bAjT
          !       ! COdEPviT ~iClO CiMBOlOB, HAbPAHHyX pOClE
          !       ! CTRL/X (dliHA CTPOKi)
   *      ! T.XPRE! Cu}ECTBuET, ECli pPi gEHEPAcii zAdAHA
          !       ! pOddEPvKA CiCTEMHyh zAdAHij. COdEPviT
          !       ! pPEdydu}ij CiMBOl, HAbPAHHyj HA KlABiA-
          !       ! TuPE TEPMiHAla
   *      ! T.XBUF! Cu}ECTBuET, ECli pPi gEHEPAcii zAdAHA
          !       ! pOddEPvKA CiCTEMHOgO zAdAHiq. |Ti TPi
          !       ! ClOBA COdEPvAT CiMBOly, BBEdEHHyE dlq
          !       ! CiCTEMHOgO zAdAHiq pOClE CTRL/X
   *      ! T.CNT ! Cu}ECTBuET, ECli pPi gEHEPAcii zAdAHA
          !       ! pOddEPvKA CiCTEMHOgO zAdAHiq. ClOBO CO-
          !       ! dEPviT ~iClO zAdAHij, COBMECTHO iCpOlx-
          !       ! zu`}iX fOHOBu` KOHCOlx

                                 - 170 -




                                                   tablica 6
             slowo konfiguracii terminala T.CNFG

   ---------------------------------------------------------
     nomer bita   !              zHA~EHiE
   ---------------!-----------------------------------------
       0          ! bit AppAPATHOj TAbulqcii. budu~i uCTA-
                  ! HOBlEHHyM, OH pOKAzyBAET, ~TO dAHHyj
                  ! TEPMiHAl iMEET pOddEPvKu AppAPATHOj TA-
                  ! bulqcii. MOHiTOP HE pPEObPAzuET CiMBOl
                  ! TAbulqcii B pPObEl dO zACylKi EgO B By-
                  ! XOdHOj KOlxcEBOj bufEP. pPOgPAMMA MOvET
                  ! uCTAHOBiTx |TOT dBOi~Hyj PAzPqd dlq KOH-
                  ! KPETHOgO TEPMiHAlA makrokomandoj
                  ! .MTSET
                  ! KOMAHdA SET TT:TAB uCTAHABliBAET
                  ! |TOT dBOi~Hyj PAzPqd dlq fonowoj kon-
                  ! COli
   ---------------!-----------------------------------------
       1          ! KOgdA |TOT biT uCTAHOBlEH, MOHiTOP pOCy-
                  ! lAET KOMbiHAci` 'BOzBPAT KAPETKi-pEPEBOd
                  ! CTPOKi' <CR><LF> HA TEPMiHAl, B TOM Clu-
                  ! ~AE, ECli dliHA stroki iC~EPpAHA. pPOg-
                  ! PAMMA MOvET uCTAHOBiTx |TOT biT
                  ! dlq kOHKPETHOgO TEPMiHAlA makrokomandoj
                  ! .MTSET. KOMAHdA SET TT:CRLF uCTAHABliBA-
                  ! ET |TOT biT dlq fOHOBOj KOHCOli
   ---------------!-----------------------------------------
       2          ! biT AppAPATHOgO pEPEBOdA fOPMATA. budu~i
                  ! uCTAHOBlEHHyM, OH pOKAzyBAET, ~TO dAHHyj
                  ! TEPMiHAl iMEET AppAPATHu` pOddEPvKu pE-
                  ! rewoda formata (znak <FF>).
                  ! monitor  ne  preobrazuet  simwol
                  ! pEPEBOda fOPMATA B pEPEBOd CTPOKi dO zA-
                  ! CylKi EgO B ByXOdHOj KOlxcEBOj bufEP.
                  ! pPOgPAMMA MOvET uCTAHOBiTx |TOT biT dlq
                  ! konkretnogo terminala makrokomandoj
                  ! .MTSET. KOMAHdA SET TT:FORM uCTA-
                  ! HABliBAET |TOT biT dlq fOHOBOj KOHCOli
   ---------------!-----------------------------------------
       3          ! KOgdA |TOT biT pOgA{EH, MOHiTOP ObPAbA-
                  ! TyBAET <CTRL/F>, <CTRL/B> i <CTRL/X> KAK
                  ! oby~HyE CiMBOly i igHOPiPuET iX CpEciA-
                  ! lxnye HAzHA~EHiq. KOMAHdA SET TT:NOFB
                  ! O~i}AET |TOT biT dlq fonowoj konsoli.
                  ! programma ne movet ustanowitx |tot bit
                  ! dlq drugih terminalow, li{x PAzdElqEMAq
                  ! KOHsolx movet ego ispolxzowatx
   ---------------!-----------------------------------------
     4-5          ! zAPEzEPBiPOBAHy

                                 - 171 -




                                         prodolvenie tabl. 6
   ---------------!-----------------------------------------
     nomer bita   !             zna~enie
   ---------------!-----------------------------------------
       6          ! biT zApPEtA OvidAHiq TT. AHAlOgi~EH bitu
                  ! {estx B ClOBE COCTOqHiq zAdAHiq (JSW),
                  ! kotoryj pPOgPAMMA MOvET uCTAHOBiTx. B
                  ! |tom slu~AE pPOgPAMMA HE OvidAET zABEP-
                  ! {eniq wwodA-ByBOdA HA TEPMiHAl dlq pPO-
                  ! dolveniq ee BypOlHEHiq. zAMETiM, ~TO biT
                  ! {estx w JSW imeet smysl tolxko dlq
                  ! konsolxnogo (sistemnogo) terminala
                  ! zadaniq. ECli dlq wwoda-wywoda
                  ! pPOgPAMMA iCpOlxzuET dPugiE terminaly,
                  ! OHA MOvET uCTAHOBiTx |TOT biT w kavdom
                  ! TCB, iCpOlxzuq makrokomandu
                  ! .mTSET. ECli ve dAHHyj TEPMiHAl qBlq-
                  ! ETCq ~ACTHOj KOHCOlx` dlq dAHHOgO zAdA-
                  ! Hiq, TO zAdAHiE MOvET uCTAHOBiTx biT
                  ! {estx JSW. B MHOgOterminalxnoj sisteme
                  ! zAdAHiE MOvET
                  ! uCTAHOBiTx biT {estx w JSW i B tCB
                  ! konsolxHOgO TEPMiHAlA. B l`bOM Clu~AE,
                  ! ustanowka biTA {estx B TCB ili
                  ! JSW pPiBedeT K ustanowke ObOiX biTOB
   ---------------!----------------------------------------
       7          ! biT XON/XOFF. budu~i ustanowleHHyM, OH
                  ! dopuCKAET PACpOzHABAHiE XON(CTRL/Q) i
                  ! XOFF(CTRL/S) CiMBOlOB. KOMAHdA SET TT:
                  ! PAGE ustanowiT |TOT biT dlq fOHOBOj KOH-
                  ! COli
   ---------------!-----------------------------------------
       8-11       ! MACKA CKOPOCTi B bOdAX dlq TEPMiHAlOB
                  ! HA DZ-liHiqX. (CKOPOCTx B bOdAX dlq TEP-
                  ! MiHAlOB HA DL-liHiqX HEpPOgPAMMiPuEMA pO
                  ! zApPOCu .MTSET). zHA~EHiq ClEdu`}iE:
                  !
                  !   MACKA          CKOPOCTx
                  !(wosxmeri~noe)  (desqti~noe)
                  !   -----          --------
                  !   0000              50
                  !   0400              75
                  !   1000              110
                  !   1400              134.5
                  !   2000              150
                  !   2400              300
                  !   3000              600
                  !   3400             1200
                  !   4000             1800
                  !   4400               .
                  !   5000               .
                  !     .                .
                  !     .                .

                                 - 172 -




                                         prodolvenie tabl. 6
   ---------------!-----------------------------------------
   dwoi~nyj razrqd!           zna~enie
   ---------------!-----------------------------------------
       12         ! biT CpEciAlxHOgO PEviMA. AHAlOgi~EH biTu
                  ! 12 B JSW, KOTOPyj BzAiMOdEjCTBuET C KOH-
                  ! COlx` zAdAHiq. ECli |TOT TEPMiHAl qBlq-
                  ! ETCq ~ACTHOj KOHCOlx` dlq dAHHOgO zAdA-
                  ! niq, zadanie movet ustanowitx bit 12
                  ! JSW, ~toby emu byl dostupen specialxnyj
                  ! revim. w MHOgOTEPMiHAlxHOj sisteme
                  ! zadanie MOvET ustanowiTx biT 12 KAK w
                  ! JSW, tak i w TCB KOHCOlxHOgO TEPMiHAlA.
                  ! w l`bom slu~ae, ustanowka biTA 12 B TCB
                  ! ili JSW pPiBOdiT K ustanowke ObOiX bi-
                  ! tow. ECli pPOgPAMMA dlq BBOdA-ByBOdA iC-
                  ! pOlxzuET dPugiE TEPMiHAly, OHA MOvET us-
                  ! tanowiTx |TOT biT B KAvdOM TCB, iCpOlx-
                  ! zuq MAKPOKOMAHdu .MTSET
   ---------------!-----------------------------------------
       13         ! bit udalennogo terminala. on dostupen
                  ! tolxko dlq ~teniq i programma ne
                  ! MOvET izMEHiTx EgO. budu~i ustanowlen,
                  ! |TOT biT uKAzyBAET, ~TO dAHnyj terminal
                  ! qBlqETCq udAlEHHyM
   ---------------!-----------------------------------------
       14         ! KOgdA |TOT biT ustanowleH, BOzMOvHO OTO-
                  ! bravEHiE i BBOd KiPillicy i lATiHCKiX
                  ! buKB. KOgdA |TOT biT O~i}EH, MOHiTOP
                  ! pPEObPAzuET CiMBOly C KOdAMi 141-172
                  ! B lATiHCKiE. ECli dAHHyj TEPMiHAl qBlq-
                  ! ETCq ~ACTHOj KOHCOlx` zAdAHiq, zAdAHiE
                  ! MOvET ustanowitx |TOT biT B JSW.
                  ! pri mnogoterminalxnoj rabote zadanie
                  ! movet ustanowitx bit kak w JSW,
                  ! tak i TCB KOHCOlxHOgO TEPMiHAlA.
                  ! B l`bOM Clu~AE, ustanowka biTA B
                  ! TCB ili JSW pPiBOdiT K ustanowke
                  ! ObOiX biTOB
   ---------------!-----------------------------------------
       15         ! KOgdA |TOT biT ustanowleH, MOHiTOP By-
                  ! polHqET COOTBETCTBu`}EE dEjCTBiE dlq Bi-
                  ! deoTEPMiHAlA, pri navatii klawi{i <DEL>.
                  ! pPOgPAMMA MOvET ustanowitx |TOT biT
                  ! dlq KOHKPETHOgO TEPMiHAlA C pOMO}x` MA-
                  ! KPOKOMAHdy .MTSET. KOMAHdA SET TT:SCOPE
                  ! ustanowiT |TOT biT TOlxKO dlq fOHOBOj
                  ! KOHCOli

                                 - 173 -




                                                   tablica 7
          wtoroe slowo konfiguracii terminala T.CNF2

   -------!-------------------------------------------------
    biT   !                     zHA~EHiE
   -------!-------------------------------------------------
    0-1   ! |Ti dBA biTa pOKAzyBA`T PAzMEP (dliHu) CiMBOlA.
          ! DZ MOvET pEPEdABATx CiMBOly dlinoj
          ! 5, 6, 7 ili 8 biTOB. zHA~EHiq ClEdu`}ie:
          !
          !        zHA~EHiq    :     dliHA CiMBOlA
          !     ......................................
          !           00       :     5 biT
          !           01       :     6 biT
          !           10       :     7 biT
          !           11       :     8 biT
          !
          ! |Ti biTy HE iCpOlxzu`TCq dlq iHTEPfEjCA DL
   -------!-------------------------------------------------
    2     ! CTOp biT. B zABiCiMOCTi OT CKOPOCTi OH pOKAzyBA-
          ! ET KOli~ECTBO pEPECylAEMyX CTOp-biTOB.
          ! 0 - pEPECylAETCq OdiH CTOp-biT
          ! 1 - pEPECylAETCq dBA CTOp-biTA
          ! (pOlTOPA CTOp-biTA, ECli iCpOlxzu`TCq
          ! pqtibiTHyE CiMBOly.)
          ! biT HE iCpOlxzuETCq dlq DL
   -------!--------------------------------------------------
    3     ! bit prowerki pariteta. esli on ustanowlen,
          ! wypolnqetsq kontrolx po paritetu
   -------!-------------------------------------------------
    4     ! pOKAzyBAET, budET pPOBEPKA HA ~ETHOCTx ili
          ! HE~ETHOCTx.
          !
          !    zHA~EHie :   KOHTPOlx
          !    .........:................
          !       0     :  HA ~ETHOCTx
          !       1     :  HA HE~ETHOCTx
          !             :
          ! dlq DL HE iCpOlxzuETCq
   -------!-------------------------------------------------
    5-6   !   zAPEzEPBiPOBAHy
   -------!-------------------------------------------------
    7     ! budu~i ustanowlenHyM, |TOT biT uKAzyBAET PEviM
          ! '~iTATx BCE'. w |TOM PEviME drajwer pEPEdAET wse
          ! Bosemx biTOB KAvdOgO CiMBOlA bEz pPEObPAzOBAHiq.
          ! i powtoreniq simwolOB. naprimer,
          ! '^s' pPOXOdiT KAK 203 B PEviME '~iTATx BCE',
          ! ECli TEPMiHAl uCTAHABliBAET star{ij (15)
          ! biT HA pEPEdA~u. budu~i uCTAHOBlEHHyM,
          ! TEPMiHAl pOlHOCTx` nAXOdiTCq B pOzHAKOBOM
          ! PEviME
   -------!-------------------------------------------------
    8-14  ! zAPEzEPBiPOBAny
   -------!-------------------------------------------------
    15    ! budu~i ustanowlEHHyM, |TOT biT uKAzyBAET PEviM
          ! 'pEPEClATx BCE' (WRITE PASS-ALL). B |TOM
          ! PEviME drajwer pEPEdAEt wse wosemx bitow kavdogo
          ! simwola bez preobrazowaniq simwolow

                                 - 174 -




                                                   tablica 8
           slowo sostoqnie terminala T.STAT

   -------!-------------------------------------------------
     biT  !      zHA~EHiE pri ustanowlennom bite
   -------!-------------------------------------------------
    0     ! uKAzyBAET, ~TO pOClEdOBATElxHOCTx
          ! pPOdOlvAETCq
   -------!-------------------------------------------------
    1-3   ! zAPEzEPBiPOBAHy
   -------!-------------------------------------------------
    4     ! uKAzyBAET, ~TO wypolnqetsq OpEPAciq otkl`~eniq
          ! terminala. BBOd C TEPMiHAlA igHOPiPuETCq
   -------!-------------------------------------------------
    5     ! |TO biT CiHXPOHizAcii TT-dPAjBEPA
   -------!-------------------------------------------------
    6     ! uKAzyBAET, ~TO OvidAETCq pPEPyBAHiE BBOdA
   -------!-------------------------------------------------
    7     ! uKAzyBAET, ~TO TEPMiHAl pOClAl XOFF, ~TOby
          ! zATPEbOBATx pPiOCTAHOBKu Bywoda
   -------!-------------------------------------------------
    8-9   ! zAPEzEPBiPOBAny
   -------!-------------------------------------------------
    10    ! uKAzyBAET, ~TO dAHHyj TEPMiHAl qBlqETCq PAzdE-
          ! lqEMOj KOHCOlx`
   -------!-------------------------------------------------
    11    ! uKAzyBAET, ~TO udAlEHHyj TEPMiHAl HE HAXOdiTCq
          ! B COCTOqHii gOTOBHOCTi
   -------!-------------------------------------------------
    12    ! uKAzyBAET, ~TO iHTErfejC TEPMiHAlA - DZ
   -------!-------------------------------------------------
    13    ! zarezerwirowan
   -------!-------------------------------------------------
    14    ! uKAzyBAET, ~TO dBA <CTRL/C> byli BBEdEHy C dAH-
          ! HOgO TEPMiHAlA. |TOT biT BOzBPA}AETCq B iCXOd-
          ! HOE COCTOqHiE po .MTGET
   -------!-------------------------------------------------
    15    ! uKAzyBAET, ~TO dAHHyj TEPMiHAl qwlqETCq KOHCOlx`
          ! dlq HEKOTOPOgO zAdAHiq. OHA MOvET byTx PAzdElqE-
          ! MOj ili ~ACTHOj



       7.8.6.2. ACiHXPOHHyj CTATuC TEPMiHAlA (aSt)




       aSt qBlqETCq CpEciAlxHOj wozmovnostx`, KOTOPu` MOvHO BybPATx  BO
  BPEMq gEHEPAcii CiCTEMy. ECli ona bylA BybPAHA, TO  MOvHO  uCTAHOBiTx
  dOpOlHiTElxHO odno slowo dlq XPAHEHiq OdHOgO  aSt  na  KAvdOE  LUN  B
  pPOgPAMME. pri podkl`~enii terminala k programme s  pomo}x`  .MTATCH,
  nuvno uKAzatx KAK APguMEHT AdPEC aSt dlq |TOgO TEPMiHAlA.  aSt  pred-
  nazna~en dlq togo, ~toby pri upPABlEHii liHiEj pPOgPAMMA MOglA  pOlu-
  ~aTx iHfOPMAci` o statuse terminala i modema bEz BydA~i MAKPOKOMAHdy.
  drajwer ustanawliwaet ili O~i}aET biTy B aSt. aSt  COdEPviT  iHfOPMA-
  ci`, priwedennu` w tabl. 9:

                                 - 175 -




                                                   tablica 9
   ----------------------------------------------------------
   biT ! iMq    ! biT ustanowlen  ! flag sobytiq
   ----!--------!-----------------!--------------------------
       !        !                 !
    15 ! AS.CTC !    100000       ! byla dwavdy wwedena pos-
       !        !                 ! ledowatelxnostx <CTRL/C>.
       !        !                 ! neobhodimo sbrositx |tot
       !        !                 ! bit, t.k. monitor sam
       !        !                 ! ne wypolnqet |toj opera-
       !        !                 ! cii
       !        !                 !
    14 ! AS.INP !     40000       ! C dAHHOgO TEPMiHAlA
       !        !                 ! dOCTupEn BBOd
       !        !                 !
    13 ! AS.OUT !     20000       ! KOlxcEBOj ByXOdHOj
       !        !                 ! bufEP puCT
       !        !                 !
    7  ! AS.CAR !       200       ! liHiq BKl`~EHA i HAXO-
       !        !                 ! ditsq B COCTOqHii
       !        !                 ! goTOBHOCTi (TOlxKO dlq
       !        !                 ! udAlEHHyX liHij)
       !        !                 !
    6  ! AS.HNG !       100       ! daHHAq liHiq (udAlEHHAq)
       !        !                 ! TOlxKO ~TO OTKl`~EHA i
       !        !                 ! CiCTEMA bOlx{E HE
       !        !                 ! pOddEPviBAET |Tu liHi`

       MOHiTOP uCTAHABliBAET biT 15 (AS.CTC), BCqKij PAz, KOgdA dBE ili
  bOlEE pOClEdOBATElxHyX KOMAHd <CTRL/C> HApE~ATAHy HA KAKOM-libO  TEP-
  MiHAlE. pE~ATx dBuX KOMAHd <CTRL/C> HA KOHCOlxHOM  TEPMiHAlE  zAdAHiq
  BCEgdA ObPyBAET EgO, ECli zAdAHiE HE iCpOlxzuET  MAKPOKOMAHdu  .SCCA,
  KOTOPAq pPepqTCTBuET BOCpPiqTi` |TiX CiMBOlOB  KAK  CpEciAlxHyX.  dlq
  prodolveniq zAdAHiq nuvno sbrositx |TOT biT.

       MOHiTOP ustanawliwaet biT 14 (AS.INP), KOgdA C TEPMiHAlA  BOzMO-
  vEH BBOd. |TO MOvET byTx CTPOKA  CiMBOlOB  B  HOPMAlxHOM  PEviME  ili
  EdiHCTBEHHyj CiMBOl B CpEciAlxHOM PEviME. MOHiTOP ObHulqET |TOT  biT,
  KOgdA pPOgPAMMA C~iTAET CiMBOly.

       MOHiTOP ustanawliwaet biT 13 (AS.OUT), KOgdA ByXOdHOj  KOlxcEBOj
  bufEP TEPMiHAlA puCT. |TO pPOiCXOdiT pOClE TOgO, KAK pOClEdHij CiMBOl
  KOlxcEBOgO bufEPA ByBEdEH HA TEPMiHAl.  MOHiTOP  ObnulqET  |TOT  biT,
  KOgdA B KOlxcEBOM bufEPE ECTx CiMBOly.

       MOHiTOP ustanawliwaet biT 7 (AS.CAR), KOgdA OH OTBE~AET  udAlEH-
  HOj liHii. OH ObHulqET |TOT biT, KOgdA udAlEHHAq liHiq  zABiCAET  ili
  pAdAET HECu}Aq ~ACTOTA.

       MOHiTOP ustanawliwaet biT 6 (AS.HNG), KOgdA OH otbrasywaet  udA-
  lEHHu` liHi`, KOTOPAq TOlxKO ~TO zABiClA.

                                 - 176 -




       7.8.7. ispolxzowanie mnogoterminalxnyh makrokomand




       pPOgPAMMy MTTEMT, qwlq`}iesq ~ACTx` RMON, diCpET~EPizu`T  MHOgO-
  TEPMiHAlxHyE MAKPOKOMAHdy i BypOlHq`T iX. diCpET~EPizu`}Aq  pPOgPAMMA
  pPiHiMAET MAKPOKOMAHdy, KOTOPyE TPAHCliPu`TCq B iHCTPuKcii EMT 375  C
  KOdOM 37 i fuHKciOHAlxHyM KOdOM OT nulq dO desqti (wosmeri~noe).

       CHA~AlA diCpET~ePizu`}Aq pPOgPAMMA pPOBEPqET dOCTOBEPHOCTx  MAK-
  POKOMAHdy. zATEM OHA pPOBEPqET lOgi~ECKij HOMEP TEPMiHAlA i ubEvdAET-
  Cq, ~TO OH pOdKl`~EH. ECli  MAKPOKOMAHdA  qBlqETCq  KOMAHdOj  zAXBATA
  terminala, pPOgPAMMA pPOBEPqET zAHqTOCTx  ukazannogo  TEPMiHAlA.  dlq
  BCEX dPugiX MAKPOKOMAHd pPOBEPqETsq, zahwa~en li TEPMiHAl  ByzyBA`}Ej
  pPOgPAMMOj.

       esli makrokomanda pro{la wse prowerki dispet~erizu`}ej  program-
  my, uprawlenie peredaetsq  ispolnq`}emu  kodu  dlq  neposredstwennogo
  wypolneniq.

       pri wypolnenii makrokomand sistema soob}aet ob o{ibkah  w  bajte
  eRRwYt (52). wozmovny sledu`}ie kody o{ibok:

  0      - net znakow w bufere (dlq mtIN); net mesta  w  bufere  wywoda
           (dlq mtoUt);

  1      - neprawilxnyj nomer terminala (terminal ne zakreplen za zada-
           niem);

  2      - nesu}estwu`}ij logi~eskij nomer terminala (terminal ne podk-
           l`~en k kompleksu);

  3      - neprawilxnaq  makrokomanda  (ispolxzowan  nedopustimyj   kod
           funkcii);

  4      - popytka zakrepitx ili oswoboditx terminal,  zakreplennyj  za
           drugim zadaniem;

  5      - adres polxzowatelxskogo bufera, bloka  sostoqniq  ili  adres
           slowa  AST  nahoditsq  wne  predelow  dopustimogo  adresnogo
           prostranstwa (tolxko dlq RT11XM).

       wozmovnostx poqwleniq kavdoj iz  o{ibok  w  processe  wypolneniq
  makrokomand proill`strirowano w tabl. 10.

                                 - 177 -




                                                 tablica 10
   --------------------------------------------------------
    MAKPOKOMAHdy !            KOdy  O{ibOK
                 !            0 1 2 3 4 5
   --------------!-----------------------------------------
    .MTATCH      !                X X X X
    .mTGET       !              X X X X X
    .MTSET       !              X X X   X
    .MTIN        !            X X X X   X
    .MTOUT       !            X X X X   X
    .MTPRNT      !              X X     X
    .MTRCTo      !              X X X
    .MTSTAT      !                      X
    .MTDTCH      !              X X X



       7.8.7.1. .MTATCH -zAXBAT TEPMiHAlA




       .MTATCH iCpOlxzuETCq dlq zAXBATA TEPMiHAlA zAdAHiem. posle |togo
  pPOgPAMMa movet ByBOdiTx CiMBOly HA TEPMiHAl, BBOdiTx C HEgO i  izME-
  HqTx ego XAPAKTEPiCTiKi.

       pOClE zAXBATA TEPMiHAlA zAdAHiEM OH ostaetsq B |TOM COCTOqHii dO
  TEX pOP, pOKA HE dAnA MAKPOKOMAHdA  .MTDTCH  ili  zAdAHiE  zABEP{EHO.
  ECli TEPMiHAl OCBObOvdAETCq C pOMO}x` .MTDTCH, TO zAdAHiE blOKiPuETCq
  dO zABEP{EHiq ByBOdA HA TEPMiHAl i zATEM MOHiTOP OCBObOvdAET TEPMiHAl
  OT zAdAHiq. ECli TEPMiHAl OCBObOvdAETCq pPi CbPOCE zAdAHiq,  HEzABEP-
  {EHHyj ByBOd HA TEPMiHAl pPEPyBAETCq i MOHiTOP  OCBObOvdAET  TEPMiHAl
  HEMEdlEHHO.

       makrokomanda zAXBATA terminala CHA~AlA  pPOBEPqET,  qBlqETCq  li
  TEPMiHAl PAzdElEHHOj KOHCOlx`, HO HE  KOHCOlx`  dAHHOgO  zAdAHiq.ECli
  |TO TAK, TO BydAETsq O{ibKa C KOdOM 4.  ECli  TEPMiHAl  uvE  zAXBA~EH
  dPugiM zAdAHiEM, TO TAK vE BydAETCq O{ibKA s kodom 4.

       pPOgPAMMA zAXBATyBAET TEPMiHAl, uCTAHABliBAq dBA atributa B  TCB
  |TOgO TEPMiHAlA (T.JOB i T.OWNR).  B  RT11FB(XM)  OHA  zAHOCiT  HOMEP
  zAdAHiq B T.JOB. w RT11SJ pOClE zAXBATA  TEPMiHAlA  T.OWNR  pPiHiMAET
  HEHulEBOE zHA~EHiE. w RT11FB ili RT11XM T.OWNR COdEPviT uKAzATElx  HA
  CME{annu` OblACTx zAdAHiq, KOTOPOE zAXBATyBAET TEPMiHAl.

       ECli CiCTEMA CgEHEPiPOBAHA C  aSt,  TO  makrokomanda  zAHOCiT  B
  T.AST uKAzATElx ClOBA aSt. B RT11XM  OHA  TAKvE  zAHOCiT  zHA~EHiE  B
  T.AST+2, KOTOPOE iCpOlxzuETCq KAK zHA~EHiE PA1 pPi OTObPAvEHii  ClOBA
  AST.

       w tom slu~ae, esli terminal - konsolx zadaniq, to zHA~EHiq HEKO-
  TOPyX PAzPqdOB pEPEHOCqtsq iz JSW B  T.CNFG:  KOpiPu`tsq  PAzPqdy  14
  (dlq HivHEgO PEgiCTPA), 12 (CpEcPEviM) i 6  (zApPET  OvidAHiq).  ECli
  TEPMiHAl - fOHOBAq KOHCOlx, TO zAgPuvA`tsq T.TFIL iz q~EjKi 56.

       format makrokomandy:

            .mtatsn  aRea,aDDR,UNIt


                                 - 178 -




   gde

  aRea   - adres tablicy argumentow iz treh slow;

  aDDR   - adres asinhronnogo statusa terminala (odno slowo); esli  aSt
           ne ukazywaetsq, to ADDR dolven bytx 0;

  UNIt   - logi~eskij nomer terminala, kotoryj neobhodimo zakrepitx  za
           programmoj.

       format tablicy argumentow emt:

                    !--------!--------!
        R0 => AREA: !   37   !   5    !
                    !--------!--------!
                    !      ADDR       !
                    !--------!--------!
                    !   0    !  UNIT  !
                    !--------!--------!

       esli woznikla o{ibka pri wypolnenii makrokomandy, to budet usta-
  nowlen bit "s" slowa sostoqniq processora. eRRwYt (52)  budet  soder-
  vatx kod o{ibki (spisok o{ibok predstawlen w  na~ale  |togo  punkta).
  wozmovny soob}eniq ob o{ibkah s kodami: 2, 3, 4, 5.

       sledu`}ij primer pokazywaet ispolxzowanie  makrokomandy  .MTATCH
  dlq zakrepleniq terminala za programmoj i rabota s aSt dlq  opredele-
  niq, kakie terminaly gotowy k rabote.

       primer.

           .ENABLE LC
           .msaLL  .mtatsn,.mtrRNt,.MTSTAt,.ehIt
   aS.saR  = 200                  ;esli ustanowlen, to
                                  ;terminal gotow k rabote
   M.NLUN  = 4                    ;sme}enie do slowa, soder-
                                  ;va}ego kol-wo linij
                                  ;(terminalow)
   StaRt:
           .MTSTAT #MTA, #MSTAT   ;polu~itx status mnogoter-
                                  ;minalxnoj sistemy
           MOV MSTAT+M.NLUN,R4    ;R4=> koli~estwo linij
                                  ;(terminalow)
           BEQ MERR               ;esli da, to |ta sistema
                                  ;ne mnogoterminalxnaq!
           sLR     R1             ;s~et~ik log.nomerow
                                  ;terminalow
           moV     #aSt,R2        ;R2-> aSt
   10$:    .mtatsn #mta,R2,R1     ;popytka podkl`~itx term.
           wss     15$            ;wse w porqdke
           sLRw    taI(R1)        ;otmetitx, ~to term.
                                  ; ne podkl`~en
           wR      20$            ;popytaemsq sledu`}ij
   15$:    moVw    #1,taI(R1)     ;otmetitx, ~to term.
                                  ; podkl`~en
           wIt     #aS.saR,@R2    ;terminal gotow ?
           weQ     20$            ;net
           .mtrRNt #mta,#neLLoW,R1;pe~atatx stroku
   20$:    aDD     #2,R2          ;R2-> sledu`}ij aSt

                                 - 179 -




           INs     R1             ;sledu`}ij nomer term.
           smr     R1,R4          ;wse ?
           wLo     10$            ;net e}e
           .ehIt
   MERR:   .PRINT #NOMTTY         ;net mnogoterminalxnoj
                                  ;poddervki
           .EXIT
   NOMTTY: .ASCIZ /? ne mnogoterminalxnaq sistema/
   aSt:    .wLkW   16.            ;ASt dlq terminalow
   mta:    .wLkW   3              ;tablica argumentow
   neLLoW: .aSsIZ  /dobryj denx, towari} !/
   taI:    .wLkw   16.            ;1 => term. podkl`~en
                                  ;0 => ne podkl`~en
   MSTAT:  .BLKW   8.             ;tablica sostoqniq
                                  ;mnogoterminalxnoj
                                  ;sistemy
           .eND    StaRt



       7.8.7.2. .MTGET - pOlu~EHiE CTATuCA




       .MTGET ispolxzuetsq dlq pOlu~EHiq XAPAKTEPiCTiK  TEPMiHAlA  (pPi
  |TOM HEObqzATElxHO zAXBATyBATx TEPMiHAl). .MTGET wozwra}aet  informa-
  ci` o statuse iz atributow TCB terminala B 4-slownu` tablicu pPOgPAM-
  My. pPOiCXOdiT ClEdu`}ij pEPEHOC:

         - T.CNFG B M.TSTS;

         - T.CNF2 B M.TST2;

         - T.TFIL B M.TFIL;

         - T.FCNT B M.FCNT;

         - T.WID B M.WID;

         - star{ij bAjT slowa sostoqniq terminala T.STAT B M.TSTW.

       takim  obrazom,  tablica  sostoqniq  budet  sodervatx  sledu`}u`
  informaci`:

  m.tStS (slowo)
         - slowo konfiguracii terminala nomer  1  (ispolxzowanie  bitow
           priwedeno w podpunkte 7.8.7.3);

  m.tSt2 (slowo)
         - slowo konfiguracii terminala nomer 2;

  m.tFIL (bajt)
         - znak, trebu`}ij zapolnitelej dlq terminalow, podkl`~ennyh  s
           pomo}x` DL-interfejsa; esli  zapolniteli  ne  trebu`tsq,  to
           |tot bajt dolven sodervatx nulx;


                                 - 180 -




  m.FsNt (bajt)
         - s~et~ik zapolnitelej dlq znaka, ukazannogo w m.tFIL;

  m.tWID (bajt)
         - {irina stroki terminala w znakah;

  m.tStW (bajt)
         - bajt sostoqniq terminala (opisan w podpunkte 7.8.7.3).

       ECli TEPMiHAl HE zAXBA~EH Hi KAKiM  zAdAHiEM,  pPOgPAMMA  BydAET
  KOd O{ibKi 1. ECli TEPMiHAl zAXBA~EH dPugiM zAdAHiEM, TO BydAETCq KOd
  O{ibKi 4 i B R0 zAHOCiTCq HOMEP zAdAHiq-BlAdElxcA TEPMiHAlA.

       ECli TEPMiHAl-PAzdElqEMAq KOHCOlx, A zAdAHiE  iMEET  CObCTBEHHu`
  ~ACTHu` KOHCOlx, TO R0 COdEPviT HOMEP zAdAHiq,  BlAdE`}EgO  KOHCOlx`.
  HECMOTPq HA TO, ~TO wypolnenie makrokomandy  zABEP{AETCq  C  O{ibKOj,
  iHfOPMAciq O XAPAKTEPiCTiKAX TEPMiHAlA BCEgdA zAHOCiTCq B  blOK  COC-
  TOqHiq pPOgPAMMy. HAKOHEc, ECli wypolnenie  zABEP{ilACx  bEz  O{ibKi,
  CbPACyBAETsq PAzPqd 14 (<CTRL/C>) B T.STAT.


       format makrokomandy:

            .mtGet   aRea,aDDR,UNIt

   gde

  aRea   - adres tablicy argumentow iz treh slow;

  aDDR   - adres 4-slownoj tablicy sostoqniq, kuda pome}aetsq  informa-
           ciq o terminale;  opisanie  tablicy  priwedeno  w  podpunkte
           7.8.7.3;

  UNIt   - logi~eskij nomer terminala.


       format tablicy argumentow emt:

                    !--------!--------!
        R0 => AREA: !   37   !   1    !
                    !--------!--------!
                    !      ADDR       !
                    !--------!--------!
                    !   -    !  UNIT  !
                    !--------!--------!

       esli woznikla o{ibka pri wypolnenii makrokomandy, to budet usta-
  nowlen bit s. wozmovny soob}eniq ob o{ibkah s kodami 1, 2, 3, 4, 5.

       primer priweden w podpunkte 7.8.7.10.

                                 - 181 -




       7.8.7.3. .MTSET - uCTAHOBKA XAPAKTEPiCTiK




       makrokomanda .MTSET pozwolqet ustanowitx trebuemye harakteristi-
  ki (parametry) TEPMiHAlA i linii swqzi, a  takve  revim  wwoda-wywoda
  informacii na ukazannyj terminal.

       .MTSET pEPEHOCiT COdEPviMOE M.TSTS B T.CNFG, zA iCKl`~EHiEM PAz-
  PqdA 13 (udAlEHHyj TEPMiHAl), kotoryj prednazna~en TOlxKO dlq ~TEHiq.
  ECli TEPMiHAl - KOHCOlx zAdAHiq, TO pPOgPAMMA pEPEHOCiT iz  T.CNFG  B
  JSW PAzPqdy: 14 (HivHij PEgiCTP), 12 (CpEcPEviM) i 6  (zApPET  OvidA-
  Hiq).

       HEzABiCiMO OT TOgO, qBlqETCq li TEPMiHAl  KOHCOlx`  zAdAHiq  ili
  HET, pPOgPAMMA pEPEdAET w TCB terminala ClEdu`}u` iHfOPMAci`:

         - M.TST2 B T.CNF2;

         - M.TFIL B T.TFIL;

         - M.FCNT B T.FCNT;

         - M.TWID B T.WID

       ECli CiCTEMA iMEET DZ pOddEPvKu i dAHHyj  TEPMiHAl  pOdKl`~EH  C
  pOMO}x` DZ iHTEPfEjCA, TO pPOgPAMMA OvidAET zABEP{EHiq ByBOdA HA TEP-
  MiHAl i zATEM uCTAHABliBAET pAPAMETPy liHii DZ.


       pRIME^ANIE. sleduet BCEgdA BypOlHqtx .mTGET dO .MTSET.  i  izME-
  Hqtx TOlxKO TE zHA~EHiq, KOTOPyE HuvHy.  dlq  OdHOPAzPqdHyX  zHA~EHij
  iCpOlxzujTE KOMAHdy BIS i BIC. dlq  MHOgOPAzPqdHyX  zHA~EHij  CHA~AlA
  O~iCTiTE iX C pOMO}x` BIC i zATEM zAgPuziTE C pOMO}x` BIS. iCpOlxzuj-
  TE MOVB ili MOV TOlxKO dlq bAjTHyX ili  ClOBHyX  zHA~EHij.  izMEHEHiq
  dPugiX PAzPqdOB MOguT pPiBECTi K HEpPEdCKAzuEMyM O{ibKAM, i, HAKOHEc,
  sleduet iCpOlxzowatx dlq .MTSET TOT vE CAMyj blOK  COCTOqHiq,  ~TO  i
  dlq .MTGET.

       format makrokomandy:

            .mtSet   aRea,aDDR,UNIt

   gde

  aRea   - adres tablicy argumentow iz treh slow;

  aDDR   - adres tablicy sostoqniq iz ~etyreh  slow,  kotoraq  sodervit
           trebuemye   harakteristiki   terminala,   linii   i    revim
           wwoda/wywoda;

  UNIt   - logi~eskij nomer terminala.

                                 - 182 -




       format tablicy argumentow emt:

                    !--------!--------!
        R0 => AREA: !   37   !   1    !
                    !--------!--------!
                    !      ADDR       !
                    !--------!--------!
                    !   -    !  UNIT  !
                    !--------!--------!

   format tablicy sostoqniq:
    aDDR: .WoRD  m.tStS   ;slowo konfiguracii terminala
                          ;nomer 1(T.CNFG)
          .WoRD  m.tSt2   ;slowo konfiguracii terminala
                          ;nomer 2(T.CNF2)
          .wYte  m.tFIL   ;znak, trebu`}ij zapolnitelej
          .wYte  m.FsNt   ;koli~estwo zapolnitelej
          .wYte  m.tWID   ;{irina |krana w znakah
          .wYte  m.tStW   ;bajt sostoqniq terminala

       1) parametry terminala

       parametry terminala i revim wwoda-wywoda informacii opredelq`tsq
  sostoqniem sootwetstwu`}ih bitow (0 ili 1) w slowah T.CNFG i T.CNF2.

       slowo konfiguracii terminala M.TSTS imeet sledu`}ee  raspredele-
  nie bitow (poqsneniq dany na slu~aj, kogda bit ustanowlen):

  nWtaw$ = 1      (bit 0)
         - terminal imeet apparatnu` tabulqci` (znak <taw>);

  sRLF$  = 2      (bit 1)
         - wywoditx znaki <sR><LF> pri dostivenii prawogo kraq |krana;

  FoRm$  = 4      (bit 2)
         - terminal imeet apparatnyj perewod formata (znak <FF>);

  FwttY$ = 10     (bit 3)
         - obrabatywatx <stRL/F> i <stRL/w> kak oby~nye (neuprawlq`}ie)
           znaki;

  eSsSQ$ = 20     (bit 4)
         - raspoznawatx  <eSs>-posledowatelxnosti   (dlq   specialxnogo
           uprawleniq |kranom terminala);

  eSsFL$ = 40     (bit 5)
         - filxtrowatx <eSs>-posledowatelxnosti;

  tswIt$ = 100    (bit 6)
         - ne perewoditx programmu w  sostoqnie  ovidaniq,  esli  bufer
           wwoda pust ili bufer wywoda polnostx`  zapolnen;  analogi~en
           bitu TCBIT$ w JSW;

  raGe$  = 200    (bit 7)
         - ispolxzowatx znaki <stRL/S> i <stRL/Q>  dlq  priostanowki  i
           prodolveniq wywoda na terminal;


                                 - 183 -




  LINSr$ = 7400   (bity 8-11)
         - skorostx pereda~i informacii po linii swqzi (dlq mulxtiplek-
           sora);

  ttSrs$ = 10000  (bit 12)
         - specialxnyj revim wwoda s terminala (poznakowyj); analogi~no
           bitu TTSPC$ w JSW;

  Remot$ = 20000  (bit 13)
         - terminal qwlqetsq udalennym (bit tolxko dlq ~teniq);

  ttLs$  = 40000  (bit 14)
         - net preobrazowaniq znakow kirillicy w latinskie;

  wkSr$  = 100000 (bit 15)
         - ispolxzowatx znak s kodom <wS> (011) dlq udaleniq poslednego
           wwedennogo znaka na |krane terminala.

       sootwetstwie zna~eniq maski  bitow  "LINSr$"  skorosti  w  bodah
  (tolxko dlq mulxtipleksorow) priwedeno w tabl. 5.

       polnyj funkcionalxnyj pere~enx razrqdow  slow  T.CNFG  i  T.CNF2
  priweden w tabl. 5 i 6;

       2) sostoqnie terminala

       bajt sostoqniq terminala M.TSTW  imeet  sledu`}ee  raspredelenie
  bitow (poqsneniq dany dlq slu~aq, kogda bit ustanowlen):

  SnaRe$ = 2000   (bit 10)
         - terminal qwlqetsq razdelqemoj konsolx` dlq fonowoj i  opera-
           tiwnoj programm;

  nNGUr$ = 4000   (bit 11)
         - udalennyj terminal ne nahoditsq w sostoqnii gotownosti;

  mLtrL$ = 10000 (bit 12)
         - terminal podkl`~en k kompleksu s pomo}x` mulxtipleksora;

  CONSL$ = 100000 (bit 15)
         - lokalxnyj terminal qwlqetsq konsolxnym.

       esli woznikla o{ibka pri wypolnenii makrokomandy, to budet usta-
  nowlen bit "C" slowa sostoqniq processora. ERRBYT (52)  budet  soder-
  vatx kod o{ibki (spisok o{ibok predstawlen w  na~ale  |togo  punkta).
  wozmovnye kody o{ibok: 1, 2, 3, 5.

       wse pere~islennye opredeleniq  bitow  mogut  bytx  opredeleny  w
  programme polxzowatelq s pomo}x` sistemnoj makrokomandy .MTBDF, koto-
  raq operedelqet mnemoniku |tih bitow i ih zna~enie.

       primer priweden w podpunkte 7.8.7.10.

                                 - 184 -




       7.8.7.4. .MTIN - BBOd CiMBOlA



       .mtIN qwlqetsq mnogoterminalxnoj formoj makrokomandy .ttYIN. ona
  ne ispolxzuet |lement o~eredi. makrokomanda .mtIN peresylaet odin ili
  bolee znakow iz kolxcewogo bufera wwoda w bufer  programmy.  terminal
  dolven bytx predwaritelxnogo podkl`~en  k  programme.  esli  operaciq
  pro{la uspe{no, posle wypolneniq makrokomandy modificirowannyj  adres
  bufera programmy wozwra}aetsq w R0.

       makrokomanda .MTIN nemedlenno wozwra}aetsq s ustanowlennym bitom
  "C" slowa sostoqniq processora (kod o{ibki 0), esli bit 6  ustanowlen
  w M.TSTS (sm. podpunkt 7.8.7.3) i wypolneny sledu`}ie uslowiq:

         - bit 12 w M.TSTS ustanowlen i w kolxcewom bufere net  wweden-
           nyh s terminala simwolow;
         - bit 12 w M.TSTS o~i}en i wwod stroki w  kolxcewoj  bufer  ne
           zawer{en.

  esli pere~islennye uslowiq ne ime`t mesta, to .mtIN  perewodit  prog-
  rammu w sostoqnie ovidaniq do teh por, poka s terminala  ne  postupit
  informaciq.

       esli w .mtIN zapro{eno znakow bolx{e, ~em ih sodervitsq w  bufe-
  re, to w zawisimosti ot sostoqniq 6 bita  w  M.TSTS  programma  budet
  libo perewedena w sostoqnie ovidaniq,  libo  budet  peredano  menx{ee
  koli~estwo znakow. esli bit 6 slowa m.tStS o~i}en,  zapros  perewodit
  programmu w sostoqnie ovidaniq. esli bit 6  -  ustanowlen,  to  budut
  peredany tolxko te znaki, kotorye nahodqtsq  w  bufere.  w  poslednem
  slu~ae R0 budet sodervatx modificirowannyj adres bufera, t.e. pokazy-
  watx na sledu`}ij bajt za poslednim wwedennym znakom w  bufere  prog-
  rammy. pri |tom budet ustanowlen s-bit i kod o{ibki 0.


       .mtIN iCpOlxzuETCq  dlq  BBOdA  CiMBOlA  C  TEPMiHAlA.  TEPMiHAl
  qwlqetsq KOHCOlxnym, to programma (.MTIN) pEPECylAET iz JSW B  T.CNFG
  razrqdy 14, 12 i 6. ECli TEPMiHAl -  fOHOBAq  KOHCOlx,  TO  pPOgPAMMA
  zAgPuvAET T.TFIL iz q~EjKi 56.

       .MTIN pOlu~AET CiMBOl iz KOlxcEBOgO bufEPA BBOdA i  KOPPEKTiPuET
  EgO uKAzATEli. ECli TEPMiHAl qBlqETCq KOHCOlx`, TO iCpOlxzuETsq KOlx-
  cEBOj bufEP B CME{AnHOj OblACTi zAdAHiq. ECli TEPMiHAl HE KOHCOlx, TO
  iCpOlxzuETsq KOlxcEBOj bufEP TCB TEPMiHAl