





























                        mIKROKOMPX@TER SPECTRUM-ZX

                     pROGRAMMIROWANIE NA QZYKE BASIC
mIKROKOMPX@TER SPECTRUM-ZX                                          Page 2



                                oGLAWLENIE


    
gLAWA 1. wWEDENIE                                               ...
gLAWA 2. oSNOWY PROGRAMMIROWANIQ NA QZYKE BASIC                 ...
gLAWA 3. uSLOWIQ                                                ...
gLAWA 4. cIKLY                                                  ...
gLAWA 5. pODPROGRAMMY                                           ...
gLAWA 6. oPERATORY READ, DATA I RESTORE                         ...
gLAWA 7. aRIFMETI^ESKIE OPERACII                                ...
gLAWA 8. sTROKI SIMWOLOW                                        ...
gLAWA 9. fUNKCII                                                ...
gLAWA 10. mATEMATI^ESKIE FUNKCII                                ...
gLAWA 11. sLU^AJNYE ^ISLA                                       ...
gLAWA 12. mASSIWY                                               ...
gLAWA 13. lOGI^ESKIE OPERACII                                   ...
gLAWA 14. nABOR SIMWOLOW                                        ...
gLAWA 15. dOPOLNITELXNYE SWEDENIQ OB OPERATORAH PRINT I INPUT   ...
gLAWA 16. cWETA                                                 ...
gLAWA 17. gRAFIKA                                               ...
gLAWA 18. uKAZANIQ                                              ...
gLAWA 19. pROGRAMMIROWANIE ZWUKOW                               ...
gLAWA 20. wNE[NQQ PAMQTX NA MAGNITNOJ LENTE                     ...
gLAWA 21. uSTROJSTWO PE^ATI                                     ...
gLAWA 22. dRUGOE PERIFERIJNOE OBORUDOWANIE                      ...
gLAWA 23. wWOD I WYWOD                                          ...
gLAWA 24. pAMQTX                                                ...
gLAWA 25. sISTEMNYE PEREMENNYE                                  ...
gLAWA 26. iSPOLXZOWANIE MA[INNYH KODOW                          ...
pRIL. A. pOLNYJ NABOR SIMWOLOW                                  ...
pRIL. B. sOOB]ENIQ                                              ...
pRIL. C. oPISANIE MIKROKOMPX@TERA ZX SPECTRUM                   ...
pRIL. D. qZYK PROGRAMMIROWANIQ BASIC                            ...
pRIL. E. pRIMERY PROGRAMM                                       ...
pRIL. F. {ESTNADCATIRI^NAQ I DWOI^NAQ SISTEMY S^ISLENIQ         ...
pRIL. G. uKAZATELX KOMAND BASIC                                 ...











                                CHAPTER 1

                             w W E D E N I E




   eSLI WY ^ITAETE \TU KNIGU WPERWYE, TO WY DOLVNY IMETX  PREDSTAWLENIE  O
TOM, ^TO KOMANDY BASIC WYPOLNQ@TSQ NEPOSREDSTWENNO (INTERPReTACIQ), OPERA-
TORY IME@T NOMER STROKI I SOHRANQ@TSQ W PAMQTI KOMPX@TERA.  wY DOLVNY TAK-
VE PREDSTAWLQTX SEBE, ^TO TAKIE KOMANDY, KAK PRINT, LET I INPUT, ISPOLXZU-
@TSQ WO WSEH KOMPX@TERAH, IME@]IH BASIC,  A  TAKIE  KOMANDY,  KAK  BORDER,
PAPER I BEEP, ISPOLXZU@TSQ TOLXKO W ZX SPECTRUM.

   ~TO BY WY NI  ^ITALI,  STARAJTESX  W  SWOEJ  DEQTELXNOSTI  ISPOLXZOWATX
KOMPX@TER.   eSLI  U  WAS  WOZNIK  WOPROS  '^TO BUDET, ESLI Q SDELA@ TAK I
TAK?', TOGDA OTWET O^ENX PROST:  WWEDITE \TI KOMANDY W KOMPX@TER I WY UWI-
DITE SAMI.

   wSQKIJ RAZ, KOGDA W \TOJ KNIGE  WY  WSTRETITE  PREDLOVENIE  ^TO  NIBUDX
WWESTI W KOMPX@TER I WYPOLNITX NA NEM, SPRA[IWAJTE SEBQ:  '^TO Q MOGU SDE-
LATX WMESTO \TOGO?' I POPROBUJTE \TO PRODELATX.   ~EM  BOLX[E  SOBSTWENNYH
PROGRAMM  WY  NAPI[ITE, TEM LU^[E WY BUDETE PONIMATX, KAK RABOTAET KOMPX@-
TER.

   w KONCE \TOJ KNIGI IMEETSQ NESKOLXKO PRILOVENIJ.  oNI SODERVAT SWEDENIQ
PO  ORGANIZACII PAMQTI, PO OPERACIQM S ^ISLAMI, A TAKVE NESKOLXKO PRIMEROW
PROGRAMM, ILL@STRIRU@]IH WOZMOVNOSTI SPECTRUM.



1.1  kLAWIATURA


   w ZX SPECTRUM KLAWI[I SODERVAT NE TOLXKO ODINO^NYE SIMWOLY (BUKWY, CIF-
RY I T.D.), NO TAKVE SOSTAWNYE SIMWOLY (KL@^EWYE SLOWA, NAZWANIQ FUNKCIJ I
T.P.).

   dLQ TOGO, ^TOBY REALIZOWATX WSE \TI FUNKCII I KOMANDY, NEKOTORYE KLAWI-
[I KLAWIATURY IME@T 5 I BOLEE ZNA^ENIJ, POLU^AEMYH LIBO PUTEM WYBORA SOOT-
WETSTWU@]EGO REGISTRA (T.E.  PUTEM NAVATIQ KLAWI[ CAPS  SHIFT  (<CS>)  ILI
SYMBOL  SHIFT (<SS>) ODNOWREMENNO S KAKOJ-LIBO NEOBHODIMOJ KLAWI[EJ), LIBO
PUTEM PEREWODA KOMPX@TERA W ODIN IZ WOZMOVNYH REVIMOW RABOTY.

   sOSTOQNIE INDICIRUETSQ KURSOROM - MERCA@]EJ BUKWOJ, KOTORAQ POKAZYWAET,
GDE BUDET POQWLQTXSQ NA \KRANE SLEDU@]IJ NABIRAEMYJ SIMWOL.

   rEVIM [K] AWTOMATI^ESKI ZAMENQET REVIM [L], KOGDA KOMPX@TER OVIDAET KO-
MANDU  ILI  PROGRAMMNU@  STROKU (OTLI^A@]U@SQ OT WWODIMYH DANNYH) I S \TOJ
POZICII W STROKE KURSOROM UKAZYWAETSQ, ^TO OVIDAETSQ WWOD KL@^EWOGO  SLOWA
ILI  STROKI.   |TO OTNOSITSQ K NA^ALU STROKI ILI ZNAKOMESTU SRAZU VE POSLE
OPERATORA THEN, ILI VE K ZNAKOMESTU SRAZU VE  POSLE  ':'  (ZA  ISKL@^ENIEM
DWOETO^IQ  W STROKE).  eSLI NE IZMENEN REVIM, TO NAVATIE SLEDU@]EJ KLAWI[I
BUDET INTERPRETIROWATXSQ KAK KL@^EWOE SLOWO, NAPISANNOE NA  KLAWI[E,  LIBO
KAK CIFRA.
w W E D E N I E                                                   Page 1-2



   rEVIM KURSORA [L] (DLQ BUKW) POQWLQETSQ OBY^NO WO WSEH DRUGIH  SLU^AQH.
eSLI  ON  NE MENQETSQ, TO NAVATIE SLEDU@]EJ KLAWI[I BUDET INTERPRETIROWANO
KAK OSNOWNOJ SIMWOL NA KLAWI[E.  w BOLX[INSTWE SLU^AEW \TO BUKWY.

   i W [K], I W [L]-REVIMAH ODNOWREMENNOE NAVATIE KLAWI[I <SS> I KAKOJ-LI-
BO KLAWI[I WOSPRINIMAETSQ KAK WSPOMOGATELXNYJ SIMWOL, IZOBRAVENNYJ NA KLA-
WI[E, A W SLU^AE <CS> S CIFROWOJ KLAWI[EJ - KAK UPRAWLQ@]AQ FUNKCIQ  NAPI-
SANNAQ NA CIFROWOJ KLAWI[E.

   nAVATIE KLAWI[I <CS> S DRUGIMI KLAWI[AMI W REVIME KURSORA [K] NE WLIQET
NA  KL@^EWYE  SLOWA,  A  W REVIME KURSORA [L] WYZYWAET POQWLENIE ZAGLAWNYH
BUKW.

   rEVIM KURSORA [C] (DLQ ZAGLAWNYH BUKW) - \TO WARIANT REVIMA [L], W  KO-
TOROM WSE BUKWY POQWLQ@TSQ NA \KRANE KAK ZAGLAWNYE.

   nAVATIE KLAWI[I CAPS LOCK (<CL>) PRIWODIT K SMENE KURSORA  [L]  NA  [C]
ILI NAOBOROT.

   rEVIM KURSORA [E] (RAS[IRENIE) ISPOLXZUETSQ DLQ POLU^ENIQ  DOPOLNITELX-
NYH  SIMWOLOW (OBY^NO ZNAKOW).  kURSOR [E] POQWLQETSQ POSLE ODNOWREMENNOGO
NAVATIQ OBEIH KLAWI[ SMENY REVIMA I SOHRANQETSQ DO NAVATIQ KAKOJ-LIBO  OD-
NOJ  IZ  NIH.  w \TOM REVIME NAVATIE DAET ODIN SIMWOL ILI ZNAK, ESLI REVIM
SOHRANQETSQ, I DRUGOJ, ESLI ODNOWREMENNO NAVATA ODNA IZ KLAWI[ SMENY REVI-
MA.

   oDNOWREMENNOE NAVATIE CIFROWYH KLAWI[ S KLAWI[EJ SMENY REVIMA <SS>  WY-
ZYWAET  POQWLENIE  ZNAKA,  W PROTIWNOM SLU^AE ONI DA@T POQWLENIE SIMWOLOW,
UPRAWLQ@]IH CWETOM.

   rEVIM KURSORA [G] WOZNIKAET POSLE NAVATIQ KLAWI[I GRAPHICS  (<CS>+9)  I
SOHRANQETSQ DO TEH POR, POKA NE BUDET NAVATO <CS> ILI <CS>+9.

   cIFROWYE KLAWI[I DA@T TAKVE GRAFI^ESKIE SIMWOLY, ZA ISKL@^ENIEM  GRAPH-
ICS  ILI  DELETE;  KAVDAQ IZ BUKWENNYH KLAWI[, KROME V, W, X, Y I Z, MOGUT
WYZYWATX POQWLENIE OPREDELENNYH POLXZOWATELEM GRAFI^ESKIH SIMWOLOW.

   eSLI NEKOTORAQ KLAWI[A UDERVIWAETSQ W NAVATOM SOSTOQNII  BOLEE,  ^EM  2
ILI 3 SEKUNDY, \TO WYZOWET POWTORENIE EE DEJSTWIQ.  wWOD S KLAWIATURY OSU-
]ESTWLQETSQ W NIVN@@ POLOWINU \KRANA, KAVDYJ SIMWOL (ILI  GRUPPA  SIMWOLOW
DLQ  KL@^EWYH  SLOW)  POQWLQETSQ PERED KURSOROM.  sAM KURSOR MOVET PEREME-
]ATXSQ PO \KRANU KLAWI[AMI:
        WLEWO - <CS>+5;
        WPRAWO - <CS>+8 I T.D.

   sIMWOL PERED KURSOROM MOVET BYTX UDALEN KOMANDOJ DELETE (<CS>+0).

   prime~anie:  CELAQ STROKA MOVET BYTX UDALENA  WWODOM  EDIT  (<CS>+1)  I
POSLEDU@]IM NAVATIEM KLAWI[I <ENTER>.

   pRI NAVATII <ENTER> STROKA, NABRANNAQ W NIVNEJ ^ASTI \KRANA LIBO WYPOL-
NQETSQ  KAK  KOMANDA, LIBO WWODITSQ KAK O^EREDNAQ STROKA W PROGRAMMU, LIBO
ISPOLXZUETSQ KAK SPISOK DANNYH DLQ INPUT-WWODA.  eSLI VE ONA SODERVIT SIN-
TAKSI^ESKIE O[IBKI, TO O[IBO^NOE MESTO UKAZYWAETSQ MERCA@]IM ZNAKOM WOPRO-
SA [?].

   kOGDA WWODQTSQ STROKI PROGRAMMY, TO LISTING OTOBRAVAETSQ W WERHNEJ  PO-
LOWINE \KRANA.  pOSLEDNQQ WWEDENNAQ STROKA NAZYWAETSQ TEKU]EJ I UKAZYWAET-
SQ SIMWOLOM [>], EGO MOVNO PEREME]ATX NIVE  ILI  WY[E,  ISPOLXZUQ  KLAWI[I
<CS>+6  ILI <CS>+7 SOOTWETSTWENNO.  eSLI WWEDENO EDIT (<CS>+1), TO TEKU]AQ
STROKA PERENOSITSQ W NIVN@@ ^ASTX \KRANA, GDE ONA  MOVET  REDAKTIROWATXSQ.
pRI  WYPOLNENII  KOMANDY I PROGRAMMY, WYWOD OSU]ESTWLQETSQ W WERHN@@ ^ASTX
\KRANA I SOHRANQETSQ DO  WWODA  STROKI  PROGRAMMY,  LIBO  NAVATIQ  KLAWI[I
w W E D E N I E                                                   Page 1-3



<ENTER> PRI NALI^II PUSTOJ STROKI, LIBO NAVATIQ KLAWI[ PEREME]ENIQ KURSORA
WWERH, WNIZ.

   w NIVN@@ ^ASTX \KRANA WYWODQTSQ TAKVE  SOOB]ENIQ  OB  O[IBKAH,  KOTORYE
SOHRANQ@TSQ  TAM  DO NAVATIQ L@BOJ IZ KLAWI[ (\TO INDICIRUETSQ PEREHODOM W
REVIM [K]).

   w OPREDELENNYH SOSTOQNIQH KLAWI[I <CS>+<SPACE> DEJSTWU@T KAK BREAK, OS-
TANAWLIWAQ KOMPX@TER S WYDA^EJ SOOB]ENIJ 'D' ILI 'L'.  |TO RASPOZNAETSQ:
        A) W KONCE WYPOLNQ@]EGOSQ OPERATORA PROGRAMMY;
        B) POSLE ZAWER[ENIQ OPERACII NA PRINTERE ILI MAGNITOFONE.



1.2  |KRAN TELEWIZORA


   |KRAN SODERVIT 24 STROKI PO 32 SIMWOLA W KAVDOJ I DELITSQ NA DWE ^ASTI.
wERHNQQ  ^ASTX \KRANA (22 STROKI) SLUVIT DLQ OTOBRAVENIQ LISTINGA I WYWODA
REZULXTATOW RABOTY PROGRAMMY.  kOGDA WERHNQQ ^ASTX \KRANA ZAPOLNITSQ  POL-
NOSTX@, ON SWORA^IWAETSQ NA ODNU STROKU, KOMPX@TER OSTANAWLIWAETSQ S WYDA-
^EJ SOOB]ENIQ 'SCROLL?'.  oTWET N,  <SPACE>  ILI  <STOP>  WYZOWET  OSTANOW
PROGRAMMY  S  WYDA^EJ  SOOB]ENIQ  'D BREAK - CONT REPEATS'.  nAVATIE L@BOJ
DRUGOJ IZ KLAWI[ RAZRE[AET SWERTKU.

   nIVNQQ ^ASTX \KRANA ISPOLXZUETSQ DLQ WWODA KOMAND,  STROK  PROGRAMMY  I
WWODIMYH  DANNYH,  A  TAKVE DLQ WYWODA SOOB]ENIJ SISTEMY (PODROBNEE SMOTRI
PRILOVENIE C)











                                CHAPTER 2

       o S N O W Y   P R O G R A M M I R O W A N I Q   N A   BASIC




   kRATKOE SODERVANIE:
                PROGRAMMY, NOMERA STROK, REDAKTIROWANIE PROGRAMM S ISPOLX-
                ZOWANIEM  KLAWI[:   <WWERH>,  <WNIZ>,  EDIT,  KOMANDY RUN,
                LIST, GOTO, CONTINUE,  INPUT,  NEW,  REM,  PRINT,  STOP  W
                INPUT-DANNYH, BREAK


   nABERITE \TI DWE STROKI PROGRAMMY WY^ISLENIQ SUMMY DWUH ^ISEL
        20 PRINT A
        10 LET A=10
TAK, ^TOBY NA \KRANE POQWILOSX:
        -----------------------------------------
        | 10[>]LET A=10                         |
        | 20   PRINT A                          |
                         . . . . .
        |                                       |
        | [K]                                   |
        -----------------------------------------

   sTROKA PROGRAMMY DOLVNA NA^INATXSQ S NOMERA, KOTORYJ NE ZAPISYWAETSQ  W
PAMQTX,  A  SLUVIT LI[X DLQ UKAZANIQ PORQDKA SLEDOWANIQ STROK W PROGRAMME,
^TO WAVNO PRI EE WYPOLNENII.

   tEPERX NABERITE:
        15 LET B=15
I WWEDITE.  |TOGO NELXZQ BYLO BY SDELATX, ESLI BY NUMERACIQ NA^INALASX S 1
I 2, A NE S 10 I 20, KAK W NA[EM SLU^AE (NOMER MOVET BYTX W INTERWOLE OT 1
DO 9999).

   dOPUSTIM, TEPERX WAM PONADOBILOSX IZMENITX STROKU 20 NA SLEDU@]U@:
        20 PRINT A+B
|TO MOVNO SDELATX, ISPOLXZUQ KOMANDU EDIT.

   sIMWOL [>] W STROKE 15 NAZYWAETSQ PROGRAMMNYM KURSOROM,  A  STROKA,  NA
KOTORU@  ON UKAZYWAET, NAZYWAETSQ TEKU]EJ.  |TO OBY^NO POSLEDNQQ WWEDENNAQ
STROKA, NO WY IMEETE WOZMOVNOSTX PEREMESTITX PROGRAMMNYJ KURSOR  WY[E  ILI
NIVE,  ISPOLXZUQ  SOOTWETSTWU@]IE KLAWI[I UPRAWLENIQ KURSOROM.  uSTANOWITE
EGO W STROKU 20.  kOGDA WY NAVMETE KLAWI[U EDIT, TO W NIVNEJ ^ASTI  \KRANA
POQWITSQ  KOPIQ TEKU]EJ STROKI, W NA[EM SLU^AE KOPIQ STROKI 20.  nAVMITE I
UDERVIWAJTE KLAWI[U PEREME]ENIQ KURSORA WPRAWO DO TEH POR, POKA KURSOR [L]
NE  PEREMESTITSQ  NA  KONEC  OPERATORA  I  ZATEM WWEDITE '+B' (BEZ NAVATIQ
<ENTER>).  sTROKA W NIVNEJ ^ASTI \KRANA PRIMET WID:
        20 PRINT A+B

   tEPERX NAVMITE <ENTER> I \TO WYZOWET ZAMENU STAROJ STROKI 20  NA  NOWU@
ZAPISANNU@ W NIVNEJ ^ASTI \KRANA.  nA \KRANE \TO BUDET WYGLQDETX TAK:
o S N O W Y   P R O G R A M M I R O W A N I Q   N A   BASIC       Page 2-2



        -----------------------------------------
        | 10   LET A=10                         |
        | 15   LET B=15                         |
        | 20[>]PRINT A+B                        |
                        . . . . .
        | [K]                                   |
        -----------------------------------------

   zAPUSTITE PROGRAMMU, NAVAW RUN<ENTER> I POLU^ITE NA \KRANE SUMMU.

   wYPOLNITE TEPERX KOMANDU PRINT A,B.  pEREMENNYE SOHRANQ@TSQ DAVE  POSLE
ZAWER[ENIQ PROGRAMMY.

   eSTX E]E ODNO PRIMENENIE KOMANDY EDIT.  dOPUSTIM WAM NADO  UDALITX  WS@
STROKU,  NABRANNU@  W  NIVNEJ  ^ASTI \KRANA.  dLQ \TOGO WY MOVETE NAVATX I
UDERVIWATX DO KONCA STROKI KLAWI[U DELETE, NO MOVNO SDELATX BYSTREE:   NA-
VATX  EDIT,  ^TO WYZOWET KOPIROWANIE TEKU]EJ STROKI W NIVN@@ ^ASTX \KRANA,
ZATEM NAVATX <ENTER>, STROKA ZAMENIT TAKU@ VE W PROGRAMME, A NIVNQQ  ^ASTX
\KRANA O^ISTITSQ.

   wWEDITE STROKU:
        12 LET B=B
tEPERX DLQ UDALENIQ \TOJ STROKI NABERITE:
        12<ENTER>
pROGRAMMNYJ KURSOR STANET MEVDU STROKAMI 10 I 15, NO KLAWI[AMI  UPRAWLENIQ
KURSOROM  WY  MOVETE  USTANOWITX  EGO  W L@BU@ STROKU.  e]E RAZ WYPOLNITE:
12<ENTER>.  kURSOR SNOWA USTANOWITSQ MEVDU STROKAMI 10 I 15.  tEPERX  NAV-
MITE  EDIT  I STROKA 15 BUDET SKOPIROWANA W NIVN@@ ^ASTX \KRANA.  oPERATOR
EDIT KOPIRUET WNIZ STROKU SLEDU@]U@ ZA STROKOJ S NOWYM  NOMEROM.   nAVMITE
<ENTER> DLQ O^ISTKI NIVNEJ ^ASTI \KRANA.

   tEPERX WWEDITE:
        30<ENTER>
pROGRAMMNYJ KURSOR USTANOWITSQ POSLE KONCA PROGRAMMY, ESLI WY TEPERX  NAV-
METE EDIT, WNIZ BUDET PERESLANA STROKA 20.

   i, NAKONEC, WYPOLNITE KOMANDU:
        LIST 15
tEPERX WY UWIDITE NA \KRANE:
        15 LET B=15
        20 PRINT A+B
sTROKA 10 NE OTOBRAVAETSQ NA \KRANE, NO ONA SOHRANQETSQ W WA[EJ PROGRAMME.
wY MOVETE UBEDITXSQ W \TOM, NAVAW <ENTER>.

   kOMANDA LIST 15 UKAZYWAET, ^TO NADO OTOBRAZITX LISTING SO STROKI S  NO-
MEROM  15  I  USTANAWLIWAET  W  \TU STROKU PROGRAMMNYJ KURSOR.  |TO BYWAET
UDOBNO PRI PROSMOTRE O^ENX BOLX[IH PROGRAMM.

   dRUGOE NAZNA^ENIE NOMEROW STROK - SLUVITX IMENEM OPERATORA PRI SSYLKE K
NEMU IZ DRUGOGO MESTA PROGRAMMY (W GOTO I GOSUB).

   kOMANDA LIST BEZ OPERANDOW WYDAET LISTING S PERWOJ STROKI.

   kOMANDA NEW O^I]AET PAMQTX KOMPX@TERA OT STARYH PROGRAMM I PEREMENNYH.

   tEPERX WYPOLNIM PROGRAMMU, PEREWODQ]U@ ZNA^ENIQ TEMPERATURY W  GRADUSAH
PO fERENGEJTU W TEMPERATURU PO cELXSI@:
        10 REM TEMPERATURE CONVERSION
        20 PRINT "DEG F", "DEG C"
        30 PRINT
        40 INPUT "ENTER DEG F", F
        50 PRINT F,(F-32)*5/9
        60 GOTO 40
o S N O W Y   P R O G R A M M I R O W A N I Q   N A   BASIC       Page 2-3



   wY UWIDETE, ^TO ZAGOLOWOK WYWODITSQ W STROKE 20, I U WAS WOZNIKNET WOP-
ROS, ^TO VE DELAET STROKA 10?  kOMPX@TER IGNORIRUET \TU STROKU, \TO KOMEN-
TARIJ (REMARK ILI REMINDER).  wSE, ^TO SLEDUET POSLE REM, KOMPX@TEROM  IG-
NORIRUETSQ DO KONCA STROKI.

   wY^ISLENIQ DOHODQT DO STROKI 40 I KOMPX@TER PEREHODIT W OVIDANIE  WWODA
WAMI  ZNA^ENIQ  PEREMENNOJ F.  wY MOVETE WWESTI \TO ZNA^ENIE W REVIME [L].
nABERITE ^ISLO I NAVMITE <ENTER>.  kOMPX@TER WYWEDIT REZULXTAT I SNOWA PE-
REJDET  W OVIDANIE SLEDU@]EGO ^ISLA.  |TOT PEREHOD OBESPE^IWAETSQ W STROKE
60 W OPERATORE GOTO 40.

   eSLI NA ZAPROS O^EREDNOGO ^ISLA OTWETITX <STOP>, TO  KOMPX@TER  OSTANO-
WITSQ  S WYDA^EJ SOOB]ENIQ:  'N STOP IN INPUT IN LINE 40:1', KOTOROE POQS-
NQET PRI^INU OSTANOWA I MESTO OSTANOWA (PERWYJ OPERATOR W STROKE 40).

   eSLI TEPERX WY VELAETE WNOWX PRODOLVITX WYPOLNENIE PROGRAMMY, TO WWEDI-
TE CONTINUE I KOMPX@TER ZAPROSIT O^EREDNOE ^ISLO.

   pRI ISPOLXZOWANII CONTINUE KOMPX@TER ZAPOMINAET (DO WYDA^I IM  '0  OK')
NOMER POSLEDNEJ WYPOLNQW[EJSQ STROKI I PRODOLVAET WYPOLNENIE IMENNO S \TOJ
STROKI.

   pROSMOTRITE WNIMATELXNO OPERATOR PRINT W STROKE 50, ZAPQTAQ W NEM O^ENX
WAVNA.   zAPQTYE W OPERATORE PRINT ISPOLXZU@TSQ DLQ UKAZANIQ TOGO, ^TO WY-
WOD SLEDU@]IJ POSLE ZAPQTOJ DOLVEN PRODOLVATXSQ LIBO S LEWOGO KRAQ  \KRANA
LIBO  S EGO SEREDINY, W ZAWISIMOSTI OT TOGO KAKAQ \TO PO PORQDKU ZAPQTAQ W
DANNOM OPERATORE.  tAK W STROKE 50 ZAPQTAQ PREDPISYWAET WYWODITX  ZNA^ENIQ
TEMPERATURY W GRADUSAH cELXSIQ S SEREDINY \KRANA.

   eSLI ISPOLXZOWATX W OPERATORE PRINT  WMESTO  ZAPQTOJ  TO^KU  S  ZAPQTOJ
(';'), TO O^EREDNYE DANNYE BUDUT WYWODITXSQ NEPOSREDSTWENNO POSLE PREDYDU-
]IH.  oPERATOR W STROKE 30 WYWODIT ^ISTU@ STROKU.

   oPERATOR PRINT WSEGDA NA^INAET WYWOD S NA^ALA SLEDU@]EJ STROKI, NO  \TO
MOVNO  IZMENITX, POSTAWIW W KONCE PREDYDU]EGO OPRERATORA PRINT ZAPQTU@ ILI
TO^KU S ZAPQTOJ:
        50 PRINT F,
        60 PRINT F;
nE PUTAJTE \TI ZNAKI S DWOETO^IEM (':'), KOTOROE ISPOLXZUETSQ  TOLXKO  DLQ
RAZDELENIQ RAZNYH OPERATOROW W ODNOJ STROKE.

        100 REM THIS POLITE PROGRAM REMEMBER YOUR NAME
        110 INPUT N$
        120 PRINT "HELLO";N$;"!"
        130 GOTO 110

   |TA PROGRAMMA NIKAK NE SWQZANA S NABRANNOJ NAMI RANEE PROGRAMMOJ, NO IH
OBE MOVNO DERVATX W PAMQTI KOMPX@TERA ODNOWREMENNO.

   dLQ TOGO, ^TO BY WYPOLNITX OTDELXNO  TOLXKO  POSLEDN@@  PROGRAMMU  NADO
WWESTI KOMANDU:
        RUN 100

   |TA PROGRAMMA WWODIT STROKU SIMWOLOW, ^TO DOLVNO UKAZYWATXSQ STROKOWYMI
KOWY^KAMI.   eSLI  IH OPUSTITX, TO KOMPX@TER POPYTAETSQ NAJTI PEREMENNU@ S
TAKIM IMENEM I ISPOLXZOWATX EE ZNA^ENIE W KA^ESTWE  INPUT-DANNYH.   nAPRI-
MER, OTWETXTE PROGRAMME
        N$<ENTER>
|TO SDELAET OPERATOR INPUT W STROKE 110 PODOBNYM OPERATORU
        LET N$=N$
o S N O W Y   P R O G R A M M I R O W A N I Q   N A   BASIC       Page 2-4



   eSLI WY RE[ILI WWESTI <STOP> PRI STROKOWOM WWODE, TO DOLVNY  USTANOWITX
KURSOR W NA^ALO STROKI, ISPOLXZUQ KLAWI[U UPRAWLENIQ KURSOROM <WLEWO>.

   dEJSTWIE KOMANDY 'RUN 100' PODOBNO DEJSTWI@ OPERATORA 'GOTO', NO IME@T-
SQ  I RAZLI^IQ.  RUN 100 O^I]AET WSE PEREMENNYE I \KRAN, I POSLE \TOGO WY-
POLNQET GOTO 100.  dRUGOE OTLI^IE W TOM, ^TO WY MOVETE UKAZATX RUN BEZ NO-
MERA  STROKI, I TOGDA WYPOLNENIE NA^NETSQ S PERWOJ STROKI, A OPERATOR GOTO
WSEGDA DOLVEN SODERVATX NOMER STROKI.

   oBE PRIWEDENNYE PROGRAMMY OSTANAWLIWALISX NAMI WWODOM  KOMANDY  <STOP>,
NO  MOGUT  BYTX PROGRAMMY, KOTORYE NEWOZMOVNO OSTANOWITX PODOBNYM OBRAZOM,
NAPRIMER:
        200 GO TO 200
        RUN 200
oSTANOWITX \TU PROGRAMMU MOVNO, ESLI NAVATX KLAWI[I <CS>+<SPACE>.  |TO WY-
ZOWET WWOD KOMANDY BREAK, KOTORAQ OSTANOWIT WY^ISLENIQ S WYDA^EJ SOOB]ENIQ
'L BREAK INTO PROGRAM'.  kOMANDA BREAK MOVET BYTX ISPOLXZOWANA I WO  WREMQ
WYPOLNENIQ  OPERACII  NA MAGNITOFONE ILI PRINTERE.  w \TOM SLU^AE WYDAETSQ
SOOB]ENIE 'D BREAK - CONT REPEATS'.  kOMANDA CONTINUE W \TOM SLU^AE (KAK I
W  BOLX[INSTWE  DRUGIH), WYZOWET POWTORENIE OPERATORA, W KOTOROM PROIZO[EL
OSTANOW.  wWOD KOMANDY CONTINUE POSLE SOOB]ENIQ  'L  BREAK  INTO  PROGRAM'
PRODOLVIT WYPOLNENIE SO SLEDU@]EGO OPERATORA.

   zAPUSTITE WTORU@ PROGRAMMU SNOWA I KOGDA ONA ZAPROSIT WWOD, WWEDITE:
        N$ (BEZ KAWY^EK)
pOSKOLXKU ZNA^ENIE N$ NE OPREDELENO, TO BUDET WYDANO SOOB]ENIE:  '2  VARI-
ABLE NOT FOUND'.  eSLI TEPERX WY WYPOLNITE:
        LET N$="SOMETHING DEFINITE"
NA ^TO KOMPX@TER OTWETIT '0 OK, 0:1', A ZATEM WWEDETE CONTINUE, TO  UWIDE-
TE, ^TO PROGRAMMA ZAWER[ITSQ NORMALXNO.

   kAK UVE OTME^ALOSX, SOOB]ENIE 'L BREAK INTO PROGRAM'  OSOBOE,  TAK  KAK
WYDA^A POSLE NEGO CONTINUE NE WYZYWAET POWTORENIE KOMANDY, WYZWYW[EJ OSTA-
NOW.

   wSE PRIWEDENNYE W \TOJ GLAWE UTWERVDENIQ PRINT, LET, INPUT, RUN,  LIST,
GOTO,  CONTINUE,  NEW  I  REM MOGUT BYTX ISPOLXZOWANY LIBO KAK OPERATORY W
PROGRAMME, LIBO KAK KAMANDY.  hOTQ RUN, LIST, CONTINUE I NEW ^A]E  ISPOLX-
ZU@TSQ KAK KOMANDY, NO MOGUT BYTX ISPOLXZOWANY I W PROGRAMME.











                                CHAPTER 3

                              u S L O W I Q




   kRATKOE SODERVANIE:
                IF, STOP, =, >, <, <=, >=, <>


   pOSLEDOWATELXNOSTX WYPOLNENIQ OPERATOROW PROGRAMMY NE WSEGDA PREDSKAZU-
EMA.   w OPREDELENNYH MESTAH PROGRAMMY KOMPX@TER MOVET PRINIMATX RE[ENIE O
DALXNEJ[EM HODE WY^ISLENIJ.  oPERATOR, REALIZU@]IJ \TO IMEET FORMU:
        IF <WYRAVENIE> THEN <NEKOTOROE DEJSTWIE>

   nAPRIMER, WYPOLNITE KOMANDU NEW, A ZATEM NABERITE I WYPOLNITE PROGRAMMU
(\TO IGRA DLQ DWUH ^ELOWEK):
        10 REM ugadywanie ~isla
        20 INPUT A:CLS
        30 INPUT "GUESS THE NUMBER", B
        40 IF A=B THEN PRINT "THIS IS CORRECT":STOP
        50 IF B<A THEN PRINT "THIS IS TOO SMALL, TRY AGAIN"
        60 IF B>A THEN PRINT "THIS IS TOO BIG, TRY AGAIN"
        70 GOTO 30

   zDESX IF-OPERATOR IMEET FORMU:
        IF USLOWIE THEN ...
GDE '...  ' - POSLEDOWATELXNOSTX OPERATOROW, RAZDELENNYH DWOETO^IEM  OBY^-
NYM  OBRAZOM.   eSLI 'USLOWIE' ISTINNO, TO WYPOLNQ@TSQ OPERATORY SLEDU@]IE
POSLE THEN, W PROTIWNOM SLU^AE ONI  PROPUSKA@TSQ  I  WYPOLNENIE  PROGRAMMY
PRODOLVAETSQ SO SLEDU@]EJ STROKI.

   pROSTEJ[IM USLOWIEM MOVET BYTX SRAWNENIE DWUH  ^ISEL  ILI  DWUH  STROK.
~ISLA  MOGUT BYTX LIBO RAWNY, LIBO ODNO BOLX[E DRUGOGO, A STROKI LIBO RAW-
NY, LIBO ODNA SLEDUET POSLE DRUGOJ W ALFAWITNOM PORQDKE.  dLQ ZADANIQ  US-
LOWIQ ISPOLXZU@TSQ OTNO[ENIQ:
        =, <, >, <=, >=, <>.

   nAPRIMER, WYRAVENIE 1<2, -2<1, -3<1 ISTINNY, A WYRAVENIQ 1<0, 0<2  LOV-
NY.

   w STROKE 40 SRAWNIWA@TSQ PEREMENNYE A I B, I, ESLI ONI RAWNY, ZAWER[AEM
RABOTU,  WYPOLNQQ  KOMANDU  STOP.  pRI \TOM BUDET WYDANO SOOB]ENIE '9 STOP
STATEMENT, 30:3', POKAZYWA@]EE, ^TO KOMANDA STOP BYLA WYDANA W 3-EM OPERA-
TORE W 30-J STROKE.

   zNAKI USLOWIQ NABIRA@T NA KLAWIATURE SLEDU@]IM OBRAZOM:
        >  - <SS>+T - BOLX[E
        <  - <SS>+R - MENX[E
        <= - <SS>+Q - MENX[E ILI RAWNO (NELXZQ NABIRATX < I =)
        >= - <SS>+E - BOLX[E ILI RAWNO
        <> - <SS>+W - NE RAWNO











                                CHAPTER 4

                                c I K L Y




   kRATKOE SODERVANIE:
                FOR, NEXT, TO, STEP


   dOPUSTIM, NAM NEOBHODIMO SOSTAWITX PROGRAMMU, PODS^ITYWA@]U@ SUMMU WWO-
DIMYH PQTI ^ISEL.  |TO MOVNO BYLO BY SDELATX TAK:
        10 LET TOTAL=0
        20 INPUT A
        30 LET TOTAL=TOTAL+A
        40 INPUT A
        50 LET TOTAL=TOTAL+A
        60 INPUT A
        70 LET TOTAL=TOTAL+A
        80 INPUT A
        90 LET TOTAL=TOTAL+A
        100 INPUT A
        110 LET TOTAL=TOTAL+A
        120 PRINT TOTAL

   pOLU^ILASX BOLX[AQ I NE O^ENX OPTIMALXNAQ PROGRAMMA.  mOVNO RE[ITX  \TU
ZADA^U BOLEE RACIONALXNO, ESLI WWESTI S^ET^IK I OPERATOR GOTO:
        10 LET TOTAL=0
        20 LET COUNT=1
        30 INPUT A
        40 REM COUNT=NUMBER OF TIME THAT A HAS BEEN INPUT SO FAR
        50 LET TOTAL=TOTAL+A
        60 LET COUNT=COUNT+1
        70 IF COUNT<=5 THEN GOTO 30
        80 PRINT TOTAL

   tEPERX, IZMENIW USLOWIE W STROKE 70, MOVNO WWESTI NE TOLXKO 5, NO I L@-
BOE KOLI^ESTWO ^ISEL.  dLQ ORGANIZACII W PROGRAMME TAKIH S^ET^IKOW SU]EST-
WU@T SPECIALXNYE OPERATORY FOR I NEXT, KOTORYE WSEGDA ISPOLXZU@TSQ WMESTE.

   nA[A PROGRAMMA PRI ISPOLXZOWANII \TIH OPERATOROW BUDET WYGLQDETX TAK:
        10 LET TOTAL=0
        20 FOR C=1 TO 5
        30 INPUT A
        40 REM C=NUMBER OF TIMES THAT A HAS BEEN INPUT SO FAR
        50 LET TOTAL=TOTAL+A
        60 NEXT C
        70 PRINT TOTAL

   zDESX C - UPRAWLQ@]AQ PEREMENNAQ CIKLA.  oNA DOLVNA IMETX IMQ TOLXKO IZ
ODNOJ  BUKWY.  C POSLEDOWATELXNO PRINIMAET ZNA^ENIQ 1, 2, 3, 4 I 5 (PREDEL
- KONE^NOE ZNA^ENIE UPRAWLQ@]EJ PEREMENNOJ CIKLA), I  PRI  KAVDOM  PROHODE
WYPOLNQ@TSQ  STROKI  30,  40  I 50.  zATEM, POSLE TOGO, KAK C PRIMET PQTOE
ZNA^ENIE, WYPOLNITSQ 70-Q STROKA.  pRIRA]ENIE ZNA^ENIQ  UPRAWLQ@]EJ  PERE-
MENNOJ  SOSTAWLQET  1,  NO \TO ZNA^ENIE MOVNO IZMENITX, ISPOLXZUQ UKAZANIE
c I K L Y                                                         Page 4-2



STEP KAK ^ASTX OPERATORA FOR.  tAKIM OBRAZOM  OB]AQ  FORMA  OPERATORA  FOR
WYGLQDIT SLEDU@]IM OBRAZOM:
        FOR 'UPR.PEREM.'='NA^.ZNA^.' TO 'PREDEL' STEP '[AG PRIRA].'

   zDESX 'NA^.ZNA^.', 'PREDEL', '[AG PRIRA].' ESTX WYRAVENIQ,  PRINIMA@]IE
^ISLOWOE ZNA^ENIE.  iTAK, ESLI WY ZAMENITE STROKU 20 PROGRAMMY NA
        20 FOR C=1 TO 5 STEP 3/2
TO C POSLEDOWATELXNO PRIMET ZNA^ENIQ 1, 2.5 I 4.

   wYPOLNITE PROGRAMMU, WYWODQ]U@ ^ISLA OT 1 DO 10 W UBYWA@]EJ  POSLEDOWA-
TELXNOSTI:
        10 FOR N=10 TO 1 STEP -1
        20 PRINT N
        30 NEXT N

   sLEDU@]AQ PROGRAMMA WYWODIT ^ISLA DOMINO:
        10 FOR M=0 TO 6
        20 FOR N=0 TO M
        30 PRINT M;":";N;" ";
        40 NEXT N
        50 PRINT
        60 NEXT M

   zNA^ENIE STEP, RAWNOE 0, WYZOWET BESKONE^NOE POWTORENIE  CIKLA.   |TOGO
NE REKOMENDUETSQ DELATX.











                                CHAPTER 5

                         p O D P R O G R A M M Y




   kRATKOE SODERVANIE:
                GOSUB, RETURN


   iNOGDA BYWAET UDOBNO NEKOTORYE FRAGMENTY PROGRAMMY PREDSTAWITX  W  WIDE
OTDELXNYH  ^ASTEJ,  PO NESKOLXKU RAZ ISPOLXZUEMYH W RAZLI^NYH MESTAH PROG-
RAMMY.  tAKIE ^ASTI OFORMLQ@TSQ KAK PODPROGRAMMY, KOTORYE MOGUT WYZYWATXSQ
W L@BOM MESTE PROGRAMMY.

   dLQ \TOGO ISPOLXZU@TSQ OPERATORY GOSUB (GO TO SUBROUTINE)  I  RETURN  W
FORME:
        GOSUB N
GDE N - NOMER PERWOJ STROKI W PODPROGRAMME.  |TOT OPERATOR PODOBEN  GOTO N
S TOJ RAZNICEJ, ^TO PRI ISPOLXZOWANII GOSUB KOMPX@TER ZAPOMINAET SLEDU@]IJ
POSLE GOSUB OPERATOR, KOTOROMU I PEREDAETSQ  UPRAWLENIE  POSLE  WYPOLNENIQ
PROGRAMMY.   dELAETSQ  \TO  POSREDSTWOM POME]ENIQ NOMERA OPERATORA (ADRESA
WOZWRATA) W SPECIALXNU@ OBLASTX PAMQTI, NAZYWAEMU@ GOSUB-STEK.

   RETURN WYBIRAET WERHNIJ ADRES WOZWRATA IZ GOSUB-STEKA I PRODOLVAET  WY-
POLNENIE PROGRAMMY S OPERATORA, SLEDU@]EGO POSLE OPERATORA GOSUB.

   pRIWEDEM PRIMER ISPOLXZOWANIQ PODPROGRAMMY:
        100 LET X=10
        110 GO SUB 500
        120 PRINT S
        130 LET X=X+4
        140 GO SUB 500
        150 PRINT S
        160 LET X=X+2
        170 GO SUB 500
        180 PRINT S
        190 STOP
        500 LET S=0
        510 FOR U=1 TO X
        520 LET S=S+U
        530 NEXT U
        540 RETURN

   w OB]EM SLU^AE, PODPROGRAMMA MOVET WYZYWATX DRUGIE PODPROGRAMMY I  DAVE
SAMU SEBQ (TAKAQ PODPROGRAMMA NAZYWAETSQ REKURSIWNOJ).











                                CHAPTER 6

              o P E R A T O R Y   READ,   DATA   I   RESTORE




   kRATKOE SODERVANIE:
                READ, DATA, RESTORE


   w NEKOTORYH PREDYDU]IH PROGRAMMAH MY WIDELI, ^TO INFORMACIQ ILI  DANNYE
MOGUT BYTX WWEDENY W KOMPX@TER PRI POMO]I OPERATORA INPUT.  iNOGDA \TO MO-
VET BYTX O^ENX UTOMITELXNO, OSOBENNO ESLI MNOGIE DANNYE POWTORQ@TSQ KAVDYJ
RAZ PRI WYPOLNENII PROGRAMMY.  wY MOVETE S\KONOMITX MNOGO WREMENI, ISPOLX-
ZUQ KOMANDY READ, DATA I RESTORE.

   nAPRIMER:
        10 READ A, B, C
        20 PRINT A, B, C
        30 DATA 10, 20, 30
        40 STOP

   oPERATOR READ SOSTOIT IZ SLOWA READ, ZA KOTORYM SLEDUET SPISOK IMEN PE-
REMENNYH,  RAZDELENNYH  ZAPQTYMI.   oN WYPOLNQETSQ ZNA^ITELXNO \FFEKTIWNEE
OPERATORA INPUT, OSOBENNO KOGDA WWODIMYE ZNA^ENIQ  PRISWAIWA@TSQ  PEREMEN-
NYM.  w \TOM SLU^AE KOMPX@TER I]ET WELI^INY PEREMENNYH W UTWERVDENII DATA.

   kAVDYJ OPERATOR DATA - \TO SPISOK ZNA^ENIJ, ^ISLOWYH ILI STRO^NYH, RAZ-
DELENNYH  ZAPQTYMI.   wY MOVETE WWODITX IH GDE WAM UGODNO W PROGRAMME, TAK
KAK KOMPX@TER IGNORIRUET IH, ZA ISKL@^ENIEM TEH SLU^AEW, KOGDA IH  ISPOLX-
ZUET OPERATOR READ.

   wY DOLVNY PREDSTAWLQTX SEBE WYRAVENIQ DLQ WSEH OPERATOROW DATA W  PROG-
RAMME, ^TO POZWOLIT WAM WWODITX SOWMESTNO FORMY ODNOJ DLINY SPISKA WYRAVE-
NIJ (SPISKA DATA).  sNA^ALA KOMPX@TER WYBIRAET PERWOE ZNA^ENIE  IZ  SPISKA
DATA  DLQ WELI^INY IZ OPERATORA READ, W SLEDU@]IJ RAZ ON BERET WTOROE ZNA-
^ENIE IZ SPISKA DATA, I, TAKIM OBRAZOM, WYBIRAEMYE POSLEDOWATELXNO  OPERA-
TORY READ OBRABATYWA@TSQ S ISPOLXZOWANIEM SPISKA DATA (ESLI OKAZALOSX, ^TO
SPISOK PROSMOTREN DO KONCA, TO WOZNIKAET O[IBKA ).  zAMETXTE DLQ SEBQ, ^TO
QWLQETSQ  BESPOLEZNYM  WWEDENIE OPERATORA DATA W WIDE UPRAWLQ@]EJ KOMANDY,
TAK KAK OPERATOR READ NE OBNARUVIT EGO.  oPERATOR DATA WYPOLNQETSQ  TOLXKO
W PROGRAMME.

   mOVNO POSMOTRETX, KAK \TI TREBOWANIQ  WYPOLNENY  W  WESXMA  HARAKTERNOJ
PROGRAMME:

   sTROKA 10 DAET UKAZANIE KOMPX@TERU ^ITATX TRI ZNA^ENIQ DANNYH I PRISWO-
ITX IH PEREMENNYM A, B I C;

   sTROKA 20 GOWORIT O TOM, ^TO NADO WYWESTI (PRINT) TRI ZNA^ENIQ, W STRO-
KE 30 OPERATOR DATA ZADAET ZNA^ENIQ DLQ A, B I C;

   sTROKA 40 ZAKAN^IWAET PROGRAMMU.
o P E R A T O R Y   READ,   DATA   I   RESTORE                    Page 6-2



   iNFORMACIQ W OPERATORE DATA MOVET BYTX ^ASTX@ FOR-NEXT  CIKLA.   nAPRI-
MER:
        10 FOR N=1 TO 6
        20 READ D
        30 DATA 2, 4, 6, 8, 10, 12
        40 PRINT D
        50 NEXT N
        60 STOP

   kOGDA WYPOLNQETSQ \TA PROGRAMMA, TO MOVNO UWIDETX,  KAK  READ  OPERATOR
PEREBIRAET WESX SPISOK DATA.

   oPERATOR DATA MOVET SODERVATX TAKVE I STRO^NYE PEREMENNYE.  nAPRIMER:
        10 READ D$
        20 PRINT "THE DATE IS", D$
        30 DATA "JUNE 1ST, 1982"
        40 STOP

   |TO PROSTOJ SPOSOB POLU^ENIQ WYRAVENIJ IZ DATA SPISKA:  START I  WYPOL-
NENIE  OT NA^ALA DO TEH POR, POKA NE BUDET DOSTIGNUT KONEC.  oDNAKO WY MO-
VETE ISPOLXZOWATX I PROGRAMMNYJ PEREHOD DLQ DATA SPISKOW, ISPOLXZUQ OPERA-
TOR RESTORE.  w \TOM SLU^AE ISPOLXZUETSQ OPERATOR RESTORE S UKAZANIEM POS-
LE NEGO NOMERA STROKI S OPERATOROM DATA, I WSE POSLEDOWATELXNO WSTRE^A@]I-
ESQ  W  PROGRAMME  OPERATORY  READ WWODQT DANNYE PODRQD, NA^INAQ S PERWOGO
OPERATORA DATA.  wOOB]E-TO WY MOVETE NE UKAZYWATX NOMER STROKI W OPERATORE
RESTORE,  I, W \TOM SLU^AE, UKAZATELX DANNYH STANOWITSQ NA PERWYJ OPERATOR
W PROGRAMME.

   pOPROBUJTE WYPOLNITX TAKU@ PROGRAMMU:
        10 READ A, B
        20 PRINT A, B
        30 RESTORE 10
        40 READ X, U, Z
        50 PRINT X, U, Z
        60 DATA 1, 2, 3
        70 STOP

   w \TOJ PROGRAMME PEREMENNYM WWODIMYM W STROKE 10 BUDUT PRISWOENY ZNA^E-
NIQ  A=1 I B=2.  oPERATOR RESTORE 10 SBRASYWAET UKAZATELX DANNYH W NA^ALX-
NOE POLOVENIE I STROKA 40 PRISWOIT ZNA^ENIQ PEREMENNYM X, U I Z, NA^INAQ S
PERWOGO ZNA^ENIQ W DATA.

   wYPOLNITE PROGRAMMU BEZ STROKI 30 I WY UWIDITE SAMI, ^TO IZ \TOGO POLU-
^ITSQ.











                                CHAPTER 7

              a R I F M E T I ^ E S K I E   O P E R A C I I




   kRATKOE SODERVANIE:
                OPERACII +, -, *, /, WYRAVENIQ, USLOWNYE OBOZNA^ENIQ, IME-
                NA PEREMENNYH.


   wY UVE WIDELI NESKOLXKO PRIMEROW, W KOTORYH ZX SPECTRUM MOVET  OPERIRO-
WATX  ^ISLAMI.  mOVNO WYPOLNQTX ^ETYRE ARIFMETI^ESKIH OPERACII:  +, -, * I
/, I PRI \TOM OPREDELQETSQ ZNA^ENIE PEREMENNOJ, ZADAWAEMOJ IMENEM.  nAPRI-
MER:
        LET TAX=SUM*15/100
oTS@DA WIDNO, ^TO WY^ISLENIQ MOGUT BYTX KOMBINIROWANNYMI.  kOMBINACII  TA-
KOGO TIPA, KAK
        SUM*15/100
NAZYWA@TSQ WYRAVENIQMI.  wYRAVENIE - \TO SAMYJ KOROTKIJ PUTX DLQ  UKAZANIQ
KOMPX@TERU NA TO, ^TO WY^ISLENIQ NADO DELATX ODNO ZA DRUGIM.  w NA[EM PRI-
MERE WYRAVENIE
        SUM*15/100
UKAZYWAET:  WOZXMI ZNA^ENIE PEREMENNOJ S IMENEM "SUM", UMNOVX EGO NA 15  I
ZATEM RAZDELI NA 100.

   pRIWEDEM NEKOTORYE PRAWILA, PO KOTORYM WY^ISLQ@TSQ ZAPISANNYE WAMI  WY-
RAVENIQ:

   1) uMNOVENIE I DELENIE WYPOLNQ@TSQ PERWYMI,  ONI  IME@T  BOLEE  WYSOKIJ
PRIORITET, ^EM SLOVENIE I WY^ITANIE.

   2) oTNOSITELXNO DRUG DRUGA UMNOVENIE I DELENIE IME@T RAWNYE PRIORITETY.
sU]ESTWUET PRAWILO, PO KOTOROMU UMNOVENIE I DELENIE WYPOLNQ@TSQ POSLEDOWA-
TELXNO SLEWA NAPRAWO.wKOGDA WSE ONI WYPOLNQTSQ, TO ZATEM BUDUT WYPOLNQTXSQ
SLOVENIE I WY^ITANIE PO PORQDKU.

   3) |TOT PORQDOK WY^ISLENIJ QWLQETSQ VESTKIM, NO EGO MOVNO IZMENITX  PRI
POMO]I SKOBOK.  wYRAVENIE W SKOBKAH WY^ISLQETSQ PERWYM, A ZATEM PODSTAWLQ-
ETSQ W OB]EE WYRAVENIE KAK ODNO ^ISLO.

   wY MOVETE ISPOLXZOWATX OPERACI@ SLOVENIE (+) DLQ SCEPLENIQ STROK  (KON-
KATENCII) W WYRAVENIQH.

   iMQ STROKOWOJ PEREMENNOJ SOSTOIT IZ BUKWY S POSLEDU@]IM ZNAKOM '$', IMQ
UPRAWLQ@]EJ  PEREMENNOJ W FOR-NEXT CIKLE DOLVNO SOSTOQTX IZ ODNOJ BUKWY, A
IMENA OBY^NYH ^ISLOWYH PEREMENNYH MOGUT WYBIRATXSQ PROIZWOLXNO.  oNI MOGUT
SODERVATX NESKOLXKO BUKW I CIFR, NO PERWOJ WSEGDA DOLVNA BYTX BUKWA.

   wY MOVETE WSTAWLQTX W IMENA  PROBELY  DLQ  UDOBSTWA  ^TENIQ,  POSKOLXKU
KOMPX@TER NE S^ITAET IH ^ASTX@ IMENI.  zAPISX IMENI PROPISNYMI ILI ZAGLAW-
NYMI BUKWAMI NE DELAET IH RAZLI^NYMI.
a R I F M E T I ^ E S K I E   O P E R A C I I                     Page 7-2



   pRIMERY DOPUSTIMYH IMEN PEREMENNYH:
        T42
        THIS NAME IS SO LONG THAT I SHALL NEVER BE ABLE TO TYPE
                IT OUT AGAIN WITHOUT
        MAKING A MISTAKE
        NOW WE ARE SIX  \ \TI   DWA  IMENI  UKAZYWA@T
        NOWWEARESIX     / NA ODNU I TU VE PEREMENNU@

   pRIMERY NEDOPUSTIMYH IMEN PEREMENNYH:
        2001            (NA^INAETSQ S CIFRY)
        3 BEARS         (NA^INAETSQ S CIFRY)
        M*A*S*H         (ZNAK * - NE BUKWA I NE CIFRA)
        FOTHERINGTON-THOMAS (SODERVIT ZNAK -)

   ~ISLA W WYRAVENIQH MOGUT ZADAWATXSQ W \KSPONENCIALXNOJ  FORME.   pOPRO-
BUJTE WYPOLNITX:
        PRINT 2.34E0
        PRINT 2.34E1
        PRINT 2.34E2
            ...
        PRINT 2.34E15

   pOMNITE, ^TO OPERATOR PRINT DAET LI[X 8 ZNA^A]IH CIFR ^ISLA.  pOPROBUJ-
TE WYPOLNITX E]E:
        PRINT 4294967295,4294967295-429E7
I WY UWIDETE, ^TO KOMPX@TER MOVET WOSPRINQTX TOLXKO CIFRY 4294967295.

   kOMPX@TER ZX SPECTRUM ISPOLXZUET ARIFMETIKU  S  PLAWA@]EJ  TO^KOJ,  PRI
\TOM  RAZLI^NYE ^ASTI ^ISLA (MANTISSA I PORQDOK) HRANQTSQ W OTDELXNYH BAJ-
TAH, ^TO PRIWODIT K NE WSEGDA TO^NYM REZULXTATAM  DAVE  DLQ  CELYH  ^ISEL.
wYPOLNITE:
        PRINT 1E10+1-1E10, 1E10-1E10+1

   1E10 I 1E10+1 NE RAZLI^A@TSQ KOMPX@TEROM KAK RAZNYE ^ISLA (1E10  USEKA-
ETSQ SPRAWA).

   e]E ODIN, BOLEE NAGLQDNYJ PRIMER:
        PRINT 5E9+1-5E9
POGRE[NOSTX W 5E9 SOSTAWLQET OKOLO 1, A S PRIBAWLENIEM EDINICY  FAKTI^ESKI
OKRUGLITSQ DO 2.

   ~ISLA 5E9+1 I 5E9+2 DLQ KOMPX@TERA RAWNY.   nAIBOLX[EE  CELOE,  KOTOROE
MOVET WOSPRINQTX KOMPX@TER, RAWNO 2^32-1 ILI 4294967295.

   sTROKA "" BEZ EDINOGO SIMWOLA NAZYWAETSQ PUSTOJ  ILI  NULEWOJ  STROKOJ.
nE PUTAJTE EE S PROBELOM.  nABERITE:
        PRINT "HAVE YOU FINISHED "FINNEGANS WAKE" YET?"

   kOGDA WY NAVMETE KLAWI[U <ENTER>, WY POLU^ITE MERCA@]IJ  ZNAK  WOPROSA,
UKAZYWA@]IJ O[IBO^NOE MESTO W STROKE.  kOGDA, PRI INTERPRITACII \TOJ STRO-
KI, KOMPX@TER NAJDET DWOJNU@ KAWY^KU,  OTKRYWA@]U@  "FINNEGANS  WAKE",  TO
SO^TET  EE  ZAKRYWA@]EJ KAWY^KOJ DLQ STROKI "HAVE YOU FINISHED" I ZATEM NE
SMOVET WYWESTI "FINNEGANS WAKE".  zDESX NADO POMNITX SPECIALXNOE  PRAWILO:
ESLI  WY  HOTITE  WYWESTI  KAWY^KI  WNUTRI STROKI, ONI DOLVNY UDWAIWATXSQ.
nAPRIMER:
        PRINT "HAVE YOU FINISHED "" FINNEGANS WAKE"" YET?"

   w DANNOM SLU^AE BUDET WYWEDENO TOLXKO FRAZA, W KOTOROJ SLOWA  FINNEGANS
WAKE BUDUT OBRAMLENY KAWY^KAMI.











                                CHAPTER 8

                      s T R O K I   S I M W O L O W




   kRATKOE SODERVANIE:
                SE^ENIQ, ISPOLXZOWANIE TO
                prime~anie:  NESTANDARTNYE OPERACII.


   pUSTX IMEETSQ STROKA SIMWOLOW, TOGDA EE PODSTROKOJ BUDET NEKOTORAQ POS-
LEDOWATELXNOSTX SIMWOLOW IZ \TOJ STROKI.  tAK "STRING" QWLQETSQ PODSTROKOJ
OT "BIGGER STRING", A "B STRING" I "BIG STRING" NE QWLQ@TSQ.

   sU]ESTWUET DEJSTWIE, NAZYWAEMOE SE^ENIEM, DLQ  OPREDELENIQ  PODSTROK  I
KOTOROE MOVET PRIMENQTXSQ K STROKOWYM WYRAVENIQM.  oB]AQ EGO FORMA:
        'STROKOWOE WYRAVENIE'('NA^ALO' TO 'KONEC')

   sLEDU@]EE WYRAVENIE ISTINNO:
        "ABCDEF"(2 TO 5) = "BCDE"       .

   eSLI OPU]ENO 'NA^ALO', TO PO UMOL^ANI@ PODRAZUMEWAETSQ 1, ESLI 'KONEC',
TO PODRAZUMEWAETSQ DLINA WSEJ STROKI.  tAK:
        "ABCDEF"(TO 5) = "ABCDEF"(1 TO 5) = "ABCDE"
        "ABCDEF"(2 TO) = "ABCDEF"(2 TO 6) = "BCDEF"
        "ABCDEF"( TO ) = "ABCDEF"(1 TO 6) = "ABCDEF"

   pOSLEDNEE WYRAVENIE MOVNO BYLO BY ZAPISATX I TAK
        "ABCDEF"()
^TO TOVE WERNO.  mOVNO OPUSKATX I SLOWO TO:
        "ABCDEF"(3) = "ABCDEF"(3 TO 3) = "C"

   'nA^ALO' I 'KONEC' DOLVNY NAHODITXSQ W PREDELAH STROKI, INA^E BUDET WY-
DANO SOOB]ENIE OB O[IBKE.  tAK, WYRAVENIE
        "ABCDEF"(5 TO 7)
WYZYWAET SOOB]ENIE '3 SUBSCRIPT WRONG', TAK KAK  'KONEC'  PREWY[AET  DLINU
STROKI (6).

   eSLI 'NA^ALO' BOLX[E, ^EM 'KONEC', LIBO OBE GRANICY LEVAT ZA  PREDELAMI
STROKI, TO REZULXTATOM BUDET PUSTAQ STROKA:
        "ABCDEF"(8 TO 7) = ""
        "ABCDEF"(1 TO 0) = ""

   'nA^ALO' I 'KONEC' NE MOGUT BYTX OTRICATELXNYMI, INA^E WYDAETSQ SOOB]E-
NIE 'B INTEGER OUT OF RANGE'.

   sLEDU@]AQ PROGRAMMA ILL@STRIRUET \TI PRAWILA:
        10 LET A$="ABCDEF"
        20 FOR N=1 TO 6
        30 PRINT A$(N TO 6)
        40 NEXT N
        50 STOP
s T R O K I   S I M W O L O W                                     Page 8-2



   mOVNO TAKVE PRISWAIWATX ZNA^ENIQ PODSTROKE.  pOPROBUJTE:
        10 LET A$="I AM THE ZX SPECTRUM"
        20 PRINT A$
        30 LET A$(5 TO 8)="******"
        40 PRINT A$

   pODSTROKA A$(5 TO 8) IMEET DLINU TOLXKO W 4 SIMWOLA, PO\TOMU BUDUT  IS-
POLXZOWANY  TOLXKO  PERWYE  ^ETYRE  ZWEZDO^KI.  |TO OSOBENNOSTX PRISWOENIQ
ZNA^ENIQ PODSTROKE:  DLINNYE DANNYE USEKA@TSQ SPRAWA, A KOROTKIE  DOPOLNQ-
@TSQ  PROBELAMI DO DLINY PODSTROKI.  |TO DEJSTWIE NAZYWA@T PROKRUSTIANOM W
^ESTX MIFI^ESKOGO TIRANA pROKRUSTA, KOTORYJ SWOIM GOSTQM LIBO OTRUBAL  NO-
GI, LIBO WYTQGIWAL IH, ESLI ONI NE PODHODILI PO DLINE K EGO KROWATI.

   eSLI WY TEPERX WYPOLNITE
        LET A$()="HELLO THERE"
        PRINT A$;"."
WY UWIDETE, ^TO BUDUT WYWEDENY DOPOLNITELXNYE PROBELY, TAK KAK A$() S^ITA-
ETSQ PODSTROKOJ.  dLQ PRAWILXNOGO WYPOLNENIQ SLEDUET PISATX:
        LET A$="HELLO THERE".

   mOVNO ISPOLXZOWATX SKOBKI, ^TO POZWOLQET WY^ISLQTX ZNA^ENIE  STROKOWOGO
WYRAVENIQ PERED TEM, KAK BRATX SE^ENIE.  nAPRIMER:
        "ABC"+"DEF"(1 TO 2) = "ABCDE"
        ("ABC"+"DEF")(1 TO 2) = "AB"











                                CHAPTER 9

                              f U N K C I I




   kRATKOE SODERVANIE:
                DEF, LEN, STR$, VAL, SGN, ABS, INT, SQR, FN


   fUNKCII - \TO ZA[ITYE W BASIC-SISTEMU PODPROGRAMMY, KOTORYE, POLU^AQ NA
WHODE  ODNI ZNA^ENIQ, NAZYWAEMYE ARGUMENTAMI, WOZWRA]A@T DRUGIE ZNA^ENIQ -
REZULXTATY.

   fUNKCII ISPOLXZU@TSQ W WYRAVENII PROSTYM WKL@^ENIEM W NEGO IMENI  FUNK-
CII S POSLEDU@]IMI ARGUMENTAMI.

   pRI WY^ISLENII WYRAVENIQ WY^ISLQETSQ  I  ZNA^ENIE  FUNKCII.   nAPRIMER,
FUNKCIQ LEN WOZWRA]AET DLINU ZADANNOGO W NEJ STROKOWOGO ARGUMENTA.  wY MO-
VETE ZAPISATX:
        PRINT LEN "SINCLAIR"
A KOMPX@TER WYWEDET OTWET '8', T.E.  KOLI^ESTWO BUKW  W  SLOWE  'SINCLAIR'
(DLQ  WWODA  S  KLAWIATURY IMENI FUNKCII LEN WY DOLVNY WOJTI W NEOBHODIMYJ
REVIM, NAVAW KLAWI[I <CS> I <SS>, KURSOR IZMENITSQ S [L] NA [E], I  NAVATX
KLAWI[U K).

   eSLI W ODNOM WYRAVENII ISPOLXZU@TSQ I FUNKCII I  OPERACII,  TO  FUNKCII
BUDUT WY^ISLENY PERED WYPOLNENIEM L@BYH OPERACIJ.  oDNAKO, WY MOVETE IZME-
NITX \TOT PORQDOK, PRIMENQQ SKOBKI.

   fUNKCIQ STR$ PREOBRAZUET ^ISLO W SIMWOLXNYJ WID, PODOBNYJ FORMATU WYWO-
DA ^ISEL OPERATOROM PRINT:
        LET A$=STR$ 100
ANALOGI^NO PO DEJSTWI@ KOMANDE
        LET A$="100"
iLI WYPOLNITE
        PRINT LEN STR$ 100.0000
I POLU^ITE OTWET 3, TAK KAK STR$ 100.0000="100".

   fUNKCIQ VAL OBRATNA K FUNKCII STR$ I PREOBRAZUET STROKU W ^ISLO.  tAK
        VAL "3.5" = 3.5, ILI
        VAL "2*3" = 6 ILI DAVE
        VAL ("2"+"*3") = 6

   w POSLEDNEM SLU^AE PROISHODIT WY^ISLENIE DWUH WYRAVENIJ, SNA^ALA  STRO-
KOWOGO S POLU^ENIEM STROKI "2*3", ZATEM ^ISLOWOGO S POLU^ENIEM ^ISLA 6.

   mOVNO POPASTX W ZATRUDNITELXNOE POLOVENIE, NAPRIMER:
        PRINT VAL "VAL""VAL""""2"""""""
POMNQ, ^TO WNUTRI STROKI KAWY^KI UDWAIWA@TSQ, MY WIDIM, ^TO W NA[EM SLU^AE
MOVET PONADOBITXSQ U^ETWERENIE ILI DAVE UWOSXMIRENIE.

   iMEETSQ E]E ODNA FUNKCIQ PODOBNAQ VAL - \TO VAL$.  i ARGUMENTOM  I  RE-
ZULXTATOM  \TOJ  FUNKCII  QWLQETSQ STROKA SIMWOLOW.  oNA RABOTAET KAK VAL,
PRIMENENNAQ DWAVDY, RASKRYWAQ WSE KAWY^KI W STROKAH:
f U N K C I I                                                     Page 9-2



        VAL$"""FRUIT PUNCH""" = "FRUIT PUNCH"
sDELAJTE
        LET A$="99"
I ZATEM WYWEDETE WSE SLEDU@]IE ZNA^ENIQ:
        VAL A$
        VAL "A$"
        VAL """A$"""
        VAL$ A$
        VAL$ "A$"
        VAL$ """A$"""

   nEKOTORYE IZ NIH SRABOTA@T, A NEKOTORYE NET, PROANALIZIRUJTE WSE  OTWE-
TY.

   fUNKCIQ SGN - \TO TAK NAZYWAEMAQ MATEMATI^ESKAQ FUNKCIQ SIGNUM  (ZNAK).
i ARGUMENT I REZULXTAT EE ^ISLOWYE.

   rEZULXTAT RAWEN:
         1, ESLI ARGUMENT POLOVITELEN;
         0, ESLI ARGUMENT RAWEN 0;
        -1, ESLI ARGUMENT OTRICATELEN.

   fUNKCIQ ABS PREOBRAZUET ARGUMENT W POLOVITELXNOE ^ISLO:
        ABS -3.2 = ABS 3.2 = 3.2

   fUNKCIQ INT (OT 'INTEGER PART' - CELAQ ^ASTX) PREOBRAZUET DROBNOE ^ISLO
K CELOMU, OTBRASYWANIEM DROBNOJ ^ASTI:
        INT 3.9 = 3

   sLOVNOSTI WOZNIKA@T PRI OTRICATELXNOM  ARGUMENTE,  TAK  KAK  OKRUGLENIE
PROISHODIT K BLIVAJ[EMU CELOMU, NE BOLX[EMU, ^EM ARGUMENT:
        INT -3.9 = - 4

   fUNKCIQ SQR WY^ISLQET KORENX KWADRATNYJ OT ^ISLA, NAPRIMER:
        SQR 4 = 2
        SQR 0.25 = 0.5
        SQR 2 = 1.4142136 (PRIBLIVENNO)

   eSLI  ARGUMENT  OTRICATELXNYJ,  TO  WYDAETSQ   SOOB]ENIE   'A   INVALID
ARGUMENT'.

   wY TAKVE MOVETE SAMI OPREDELITX DLQ SEBQ KAKU@-NIBUDX  FUNKCI@,  UKAZAW
FN  I IMQ \TOJ FUNKCII (BUKWU, ESLI REZULXTAT ^ISLOWOJ ILI BUKWU I $, ESLI
STROKOWYJ).  aRGUMENTY DOLVNY BYTX OBQZATELXNO ZAKL@^ENY W SKOBKI.

   wY MOVETE OPREDELITX FUNKCI@ WWODOM OPERATORA  DEF  W  NEKOTOROM  MESTE
PROGRAMMY.  nAPRIMER, ZADADIM FUNKCI@ WY^ISLQ@]U@ KWADRAT ^ISLA:
        10 DEF FN S(X)=X*X

   DEF WWODITSQ W SOOTWETSTWU@]EM REVIME (<SS>+1).  tEPERX  FUNKCIQ  MOVET
ISPOLXZOWATXSQ W PROGRAMME:
        PRINT FN S(2)
        PRINT FN S(3+4)
        PRINT 1 + INT FN S(LEN "CHICKEN"/2 + 3)

   fUNKCIQ INT WSEGDA OKRUGLQET DO CELOGO;  DLQ OKRUGLENIQ S TO^NOSTX@ 0.5
NADO DOBAWITX K REZULXTATU '.5'.  wY MOVETE ZADATX DLQ SEBQ TAKU@ FUNKCI@:
        20 DEF FN R(X)=INT(X+0.5) - OKRUGLENIE K BLIVAJ[EMU CELOMU
I MOVETE ZATEM POPROBOWATX WWESTI:
        FN R(2.9)  (= 3)
        FN R(2.4)  (= 2)
        FN R(-2.9) (= -3)
        FN R(-2.4) (= -2)
f U N K C I I                                                     Page 9-3



   wWEDITE I WYPOLNITE SLEDU@]EE:
        10 LET X=0:LET Y=0:LET A=10
        20 DEF FN R(X,Y)=A+X*Y
        30 DEF FN Q()=A+X*Y
        40 PRINT FN P(2,3),FN Q()

   eSTX ODNA TONKOSTX W \TOJ PROGRAMME.  wO-PERWYH, FUNKCIQ  FN Q  NE  IS-
POLXZUET ARGUMENTOW, NO SKOBKI PRI \TOM DOLVNY OBQZATELXNO ISPOLXZOWATXSQ.
wO-WTORYH, OPERATORY DEF - NE  WYPOLNQEMYE.   kOMPX@TER  POSLE  WYPOLNENIQ
STROKI 10 PROSTO PEREHODIT K WYPOLNENI@ STROKI 40.  pOMNITE, ^TO DEF MOVET
BYTX TOLXKO OPERATOROM, NO NE KOMANDOJ.  w TRETXIH, X I Y - IMENA PEREMEN-
NYH W PROGRAMME I W TO VE WREMQ IMENA ARGUMENTOW W FUNKCII FN P.

   fUNKCIQ FN P ISPOLXZUET W WY^ISLENII REZULXTATA ZNA^ENIQ ARGUMENTOW  X,
Y  I  PEREMENNOJ  A,  NE  QWLQ@]EJSQ  ARGUMENTOM.   tAK, KOGDA WY^ISLQETSQ
FN P(2,3), ZNA^ENIE A RAWNO 10, KAK I OPREDELENO W PROGRAMME, A ZNA^ENIQ X
I  Y  SOOTWETSTWENNO  2  I  3,  TAK  KAK  ONI  ARGUMENTY I REZULXTAT BUDET
10+2*3=16.

   pRI WY^ISLENII FN Q() U^ASTWU@T TOLXKO PEREMENNYE  PROGRAMMY,  TAK  KAK
ARGUMENTOW  NET,  I  OTWET  W \TOM SLU^AE BUDET 10+0*0=10.  tEPERX IZMENIM
STROKU 20 NA
        20 DEF FN R(X,Y)=FN Q()
w \TOM SLU^AE FN P(2,3) BUDET WOZWRA]ATX ZNA^ENIE 10.

   nEKOTORYE WERSII BASIC IME@T FUNKCII LEFT$, RIGHT$ I TL$:

   LEFT$ (A$,N) - WOZWRA]AET PODSTROKU, SODERVA]U@ N PERWYH SIMWOLOW STRO-
KI A$;

   RIGHT$(A$,N) - WOZWRA]AET PODSTROKU, SODERVA]U@  N  POSLEDNIH  SIMWOLOW
STROKI A$;

   TL$(A$) - WOZWRA]AET PODSTROKU, SODERVA]U@ WSE SIMWOLY STROKI A$, KROME
PERWOGO.

   wY MOVETE OPREDELITX TAKIE FUNKCII NA SWOEM KOMPX@TERE:
        10 DEF FN T$(A$)=A$(2 TO):REM TL$
        20 DEF FN L$(A$,N)=A$(TO N):REM LEFT$
pROWERTE IH RABOTU SO STROKAMI DLINOJ 0 I 1.

   prime~anie:  FUNKCIQ MOVET IMETX DO 26 ^ISLOWYH ARGUMENTOW I  W  TO  VE
WREMQ DO 26 STROKOWYH.











                                CHAPTER 10

               m A T E M A T I ^ E S K I E   F U N K C I I




   kRATKOE SODERVANIE:
                ^, PI, EXP, LN, SIN, COS, TAN, ASN, ACS, ATN


   w \TOJ GLAWE OPISYWA@TSQ MATEMATI^ESKIE FUNKCII, KOTORYE MOGUT BYTX WY-
POLNENY NA ZX SPECTRUM.  wPOLNE WOZMOVNO, ^TO WAM NIKOGDA NE PRIDETSQ WOS-
POLXZOWATXSQ IMI I, ESLI WY SO^TETE IH SLI[KOM SLOVNYMI, MOVETE PROPUSTITX
\TU GLAWU.  wSE SKAZANNOE OTNOSITSQ K FUNKCIQM:  ^ (WOZWEDENIE W STEPENX),
EXP, LN, TRIGONOMETRI^ESKIM FUNKCIQM SIN, COS,  TAN,  I  OBRATNYH  K  NIM:
ASN, ACS, ATN.

        ^ I EXP

   wY MOVETE WOZWESTI ^ISLO W NEKOTORU@ STEPENX PUTEM MNOGOKRATNOGO  UMNO-
VENIQ EGO SAMOGO NA SEBQ NEOBHODIMOE ^ISLO RAZ.  |TO, OBY^NO, IZOBRAVAETSQ
ZAPISX@ ^ISLA, OBOZNA^A@]EGO STEPENX, SPRAWA WWERHU OT ^ISLA OBOZNA^A@]EGO
OSNOWANIE.  nO TAKU@ FORMU ZAPISI TRUDNO REALIZOWATX W KOMPX@TERE, PO\TOMU
TAM ISPOLXZU@T SPECIALXNYJ SIMWOL '^'.   nAPRIMER,  STEPENI  DWOJKI  MOVNO
PREDSTAWITX TAK:
        2^1 = 2
        2^2 = 2 * 2 = 4     (DWA W KWADRATE)
        2^3 = 2 * 2 * 2 = 8 (DWA W KUBE)

   tAKIM OBRAZOM, ZAPISX A^B OZNA^AET:  'UMNOVX A SAMO NA SEBQ B RAZ'.  nO
\TO PREDPOLAGAET, ^TO B - POLOVITELXNOE CELOE ^ISLO.

   dLQ NAHOVDENIQ OPREDELENIQ DLQ \TOGO DEJSTWIQ PRI DRUGIH ZNA^ENIQH A  I
B, MY ZAPI[EM WYRAVENIE:
        A^(B+C) = A^B*A^C

   zDESX NADO POMNITX, ^TO OPERACIQ ^ IMEET BOLEE WYSOKIJ PRIORITET, ^EM *
I  /.   wY MOVETE BYTX UWERENY W PRAWILXNOSTI \TOGO WYRAVENIQ ESLI B I C -
CELYE POLOVITELXNYE ^ISLA, NO ESLI \TO NE TAK, A WY WSE-TAKI RE[ILI WYPOL-
NITX WOZWEDENIE W STEPENX, TO WY DOLVNY ZNATX, ^TO:
        A^0 = 1
        A^(-B) = 1/(A^B)
        A^(1/B) = KORN@ B-OJ STEPENI IZ A
        A^(B*C) = (A^B)^C

   pOLEZNO POMNITX, ^TO:
        A^(-1) = 1/A
        A^(1/2) = SQR A

   pO\KSPEREMENTIRUJTE S \TIM, POPROBOWAW WYPOLNITX TAKU@ PROGRAMMU:
        10 INPUT A,B,C
        20 PRINT A^(B+C),A^B*A^C
        30 GOTO 10
m A T E M A T I ^ E S K I E   F U N K C I I                      Page 10-2



   kOMPX@TER STANET WYWODITX DWA ^ISLA, ESLI WY PRAWILXNO NABRALI PROGRAM-
MU.  ~ISLO A, KSTATI, NE DOLVNO BYTX OTRICATELXNYM.

   dRUGOJ TIPI^NYJ PRIMER ISPOLXZOWANIQ \TOJ OPERACII, \TO WY^ISLENIE  DO-
HODA.  pREDPOLOVIM, ^TO WY WLOVILI ^ASTX SWOIH DENEG W OB]ESTWENNOE STROI-
TELXSTWO, KOTOROE PRINOSIT WAM 15% GODOWYH.  pOSLE GODA  WY  BUDETE  IMETX
UVE NE TO^NO 100% OT TOGO, ^TO IMELI W NA^ALE, A PL@S 15% DOHODA, ^TO SOS-
TAWIT 115%.  dLQ WY^ISLENIQ DRUGIM SPOSOBOM, WY UMNOVAETE WA[U SUMMU DENEG
NA  1.15  I  POLU^AETE TOT VE REZULXTAT.  w KONCE SLEDU@]EGO GODA WY SNOWA
POLU^ITE PRIBYLX, ^TO W SUMME SOSTAWIT
        1.15*1.15 = 1.15^2 = 1.3225
OT WA[EJ PERWONA^ALXNOJ SUMMY.  w ITOGE POSLE Y  LET  WY  BUDETE  IMETX  W
1.15^Y RAZ BOLX[E DENEG.

   wYPOLNIW OPERATORY:
        FOR Y=0 TO 100:PRINT Y,10*1.15^Y:NEXT Y
WY UWIDITE, ^TO NA^INAQ S 10 FUNTOW MOVNO POLU^ATX WSE BOLX[IJ  I  BOLX[IJ
DOHOD S KAPITALA.

   tAKOJ TIP POWEDENIQ FUNKCII, KOGDA, POSLE FIKSIROWANNOGO ^ISLA INTERWA-
LOW  WREMENI,  ZNA^ENIQ FUNKCII PROPORCIONALXNY KOLI^ESTWU UMNOVENIJ \TOGO
^ISLA SAMOGO NA SEBQ, NAZYWAETSQ \KSPONENCIALXNYM ZAKONOM.

   pREDPOLOVIM WY ZAPISALI:
        10 DEF FN A(X)=A^X
zDESX A OPREDELENO W OPERATORE LET, EGO ZNA^ENIE PEREDAETSQ DLQ WY^ISLENIQ
STEPENI.

   iMEETSQ OPREDELENNOE ZNA^ENIE A, KOTOROE DELAET FUNKCI@ FN A  ILL@STRI-
RU@]EJ SPECIALXNU@ MATEMATI^ESKU@ FUNKCI@.  |TO ZNA^ENIE NAZYWAETSQ 'E'.

   ZX SPECTUM IMEET SPECIALXNU@ FUNKCI@,  NAZYWAEMU@  EXP  I  OPREDELQEMU@
KAK:
        EXP X=E^X

   k SOVALENI@, 'E' NE MOVET BYTX PREDSTAWLENO TO^NYM ^ISLOM.   wY  MOVETE
UWIDETX PQTX EGO PERWYH DESQTI^NYH ZNAKOW, WYPOLNIW
        PRINT EXP 1
TAK KAK EXP 1=E^1=E.  kONE^NO, \TO LI[X PERWOE PRIBLIVENIE, WY NIKOGDA  NE
SMOVETE ZAPISATX 'E' ABSOL@TNO TO^NO.

        LN

   oBRATNOJ K \KSPONENCIALXNOJ QWLQETSQ LOGARIFMI^ESKAQ FUNKCIQ.  lOGARIFM
(PO  OSNOWANI@  A)  ^ISLA X ESTX STEPENX, W KOTORU@ NADO WOZWESTI A, ^TOBY
POLU^ITX X.  |TO ZAPISYWAETSQ TAK:  LOGA X.  (WYRAVENIE A^LOGA X=X TAK  VE
WERNO, KAK I LOGA(A^X)=X)

   wAM DOLVNO BYTX UVE IZWESTNO, KAK ISPOLXZUETSQ LOGARIFM PO OSNOWANI@ 10
DLQ  UMNOVENIQ.  tAKOJ LOGARIFM NAZYWAETSQ OB]IM.  ZX SPECTRUM IMEET FUNK-
CI@ LN, KOTORAQ WY^ISLQET LOGARIFM PO OSNOWANI@ 'E', NAZYWAEMYJ  NATURALX-
NYM.   dLQ  WY^ISLENIQ  LOGARIFMA S DRUGIM OSNOWANIEM NADO RAZDELITX NATU-
RALXNYJ LOGARIFM ISKOMOGO ^ISLA NA NATURALXNYJ LOGARIFM OSNOWANIQ:
        LOGA X = LN X/LN A

        PI

   dOPUSTIM, IMEETSQ NEKOTORYJ KRUG.  wY MOVETE NAJTI EGO PERIMETR  (DLINU
OKRUVNOSTI), UMNOVIW EGO DIAMETR NA ^ISLO, NAZYWAEMOE pi.  pODOBNO 'E', pi
PREDSTAWLQETSQ    BESKONE^NOJ    DESQTI^NOJ    DROBX@,     EGO     NA^ALO:
3.141592653589...
m A T E M A T I ^ E S K I E   F U N K C I I                      Page 10-3



   sLOWO PI W ZX SPECTRUM  OBOZNA^AET  \TO  ^ISLO.   wYPOLNITE,  NAPRIMER:
PRINT PI

        SIN, COS, TAN I ASN, ACS, ATN

   tRIGONOMETRI^ESKIE FUNKCII IZMERQ@T TE SLU^AI, KOGDA TO^KA PEREME]AETSQ
WOKRUG  OKRUVNOSTI EDINI^NOGO RADIUSA.  tO^KA STARTUET S POZICII 3-H ^ASOW
I PEREME]AETSQ PROTIW ^ASOWOJ STRELKI.  nA^ALO KOORDINAT NAHODITSQ W CENT-
RE \TOJ OKRUVNOSTI.  tOGDA SIN UGLA MEVDU RADIUSOM, SOEDINQ@]IM DWIVU]U@SQ
PO OKRUVNOSTI TO^KU S NA^ALOM KOORDINAT, BUDET ORDINATA \TOJ TO^KI, A  COS
-  ABSCISA.   nEOBHODIMO POMNITX, ^TO ESLI TO^KA NAHODITSQ SLEWA OT OSI Y,
TO KOSINUS OTRICATELXNYJ, A ESLI TO^KA NAHODITSQ POD OSX@  X,  TO  OTRICA-
CELXNYJ SINUS.  nEOBHODIMO TAK VE POMNITX, ^TO:
        SIN (A + 2*PI) = SIN A
        COS (A + 2*PI) = COS A

   iME@TSQ I DRUGIE TRIGONOMETRI^ESKIE FUNKCII:
        TAN - TANGENS;
        ASN - ARKSINUS;
        ACS - ARKKOSINUS;
        ATN - ARKTANGENS.

   pOMNITE, W ZX SPECTRUM TRIGONOMETRI^ESKIE FUNKCII WY^ISLQ@TSQ W  RADIA-
NAH.  dLQ PEREWODA IZ GRADUSOW W RADIANY NEOBHODIMO ^ISLO RAZDELITX NA 180
I UMNOVITX EGO NA PI, A DLQ OBRATNOGO PREOBRAZOWANIQ NEOBHODIMO  RAZDELITX
NA PI I UMNOVITX NA 180.











                                CHAPTER 11

                      s L U ^ A J N Y E   ^ I S L A




   kRATKOE SODERVANIE:
                RANDOMIZE, RND.


   w \TOJ GLAWE OPISYWAETSQ FUNKCIQ RND I KL@^EWOE SLOWO RANDOMIZE.  iH NE
NADO  PUTATX,  HOTQ ONI OBE RASPOLOVENY NA KLAWI[E 'T'.  dLQ RANDOMIZE DO-
PUSTIMO SOKRA]ENIE RAND.

   pRI OBRA]ENII K FUNKCII RND, ONA WOZWRA]AET SLU^AJNOE ^ISLO W INTERWALE
OT  0  DO 1 (MOVET PRINIMATX ZNA^ENIE 0, NO NIKOGDA 1).  pOPROBUJTE WYPOL-
NITX:
        10 PRINT RND
        20 GOTO 10
I WY UWIDETE KAK MENQETSQ REZULXTAT.

   fAKTI^ESKI RND NE ABSOL@TNO SLU^AJNOE ^ISLO, A WYBIRAETSQ IZ OPREDELEN-
NOJ  POSLEDOWATELXNOSTI  DLINOJ W 65536 ^ISEL, PO\TOMU OBY^NO GOWORQT, ^TO
RND - PSEWDOSLU^AJNOE ^ISLO.

   dLQ POLU^ENIQ SLU^AJNOGO ^ISLA W INTERWALE OTLI^NOM OT [0..1) MOVNO IS-
POLXZOWATX WYRAVENIQ, NAPRIMER:
        1.3+0.7*RND
DAST INTERWAL OT 1.3 DO 2.

   dLQ POLU^ENIQ SLU^AJNYH CELYH ^ISEL ISPOLXZUJTE FUNKCI@ INT  (OKRUGLQET
S OTBRASYWANIEM DROBNOJ ^ASTI).  nAPRIMER:
        1+INT(RND*6)
BUDET DAWATX ^ISLA 1, 2, 3, 4, 5, 6.

   pUSTX IMEETSQ PROGRAMMA:
        10 REM WYBRASYWANIE KOSTI
        20 CLS
        30 FOR N=1 TO 2
        40 PRINT 1+INT(RND*6);" ";
        50 NEXT N
        60 INPUT A$:GO TO 20
NAVIMAQ <ENTER>, WY KAVDYJ RAZ BUDETE POLU^ATX NOMER, WYPAW[IJ NA KOSTI.

   uTWERVDENIE RANDOMIZE ISPOLXZUETSQ DLQ USTANOWLENIQ  NA^ALA  POSLEDOWA-
TELXNOSTI  SLU^AJNYH ^ISEL DLQ FUNKCII RND.  kAK MOVNO UWIDETX IZ PROGRAM-
MY:
        10 RANDOMIZE 1
        20 FOR N=1 TO 5:PRINT RND,:NEXT N
        30 PRINT:GOTO 10
POSLE KAVDOGO WYPOLNENIQ RANDOMIZE 1  SLU^AJNAQ  POSLEDOWATELXNOSTX  BUDET
NA^INATXSQ  S  ^ISLA  0.0022735596.  w UTWERVDENII RANDOMIZE WY MOVETE IS-
POLXZOWATX L@BYE ^ISLA W INTERWALE OT 1  DO  65535.   nELXZQ  ISPOLXZOWATX
RANDOMIZE BEZ ^ISLA, A TAKVE RANDOMIZE 0.  nAPRIMER IMEETSQ PROGRAMMA:
        10 RANDOMIZE
s L U ^ A J N Y E   ^ I S L A                                    Page 11-2



        20 PRINT RND:GOTO 10
W KAVDOJ ITERACII BUDET PE^ATATXSQ NE SLU^AJNOE ^ISLO.  dLQ ULU^[ENIQ SLU-
^AJNOSTI RASPREDELENIQ MOVNO ZAMENITX GOTO 10 NA GOTO 20.

   w DOPOLNENIE, BOLX[INSTWO WERSIJ BASIC ISPOLXZU@T RND I  RANDOMIZE  DLQ
GENERACII SLU^AJNYH ^ISEL, NO \TO NE EDINSTWENNOE IH PRIMENENIE.

   nIVE PRIWODITSQ TEKST PROGRAMMY,  MODELIRU@]EJ  WYBRASYWANIE  MONETY  I
PODS^ETA  ^ISLA WYPADENIJ 'ORLA' I 'RE[KI' (PEREWOD IMEN PROGRAMMY:  HEADS
- ORLY, TAILS - RE[KI, COIN - MONETA)
        10 LET HEADS=0:LET TAILS=0
        20 LET COIN=INT(RND*2)
        30 IF COIN=0 THEN LET HEADS=HEADS+1
        40 IF COIN=1 THEN LET TAILS=TAILS+1
        50 PRINT HEADS;",";TAILS
        60 IF TAILS<>0 THEN PRINT HEADS/TAILS;
        70 PRINT:GOTO 20

   eSLI PROGRAMMA WYPOLNQETSQ DOSTATO^NO DOLGO,  TO  OTNO[ENIE  'ORLOW'  K
'RE[KAM' PRIBLIZITELXNO RAWNO 1.











                                CHAPTER 12

                              m A S S I W Y




   kRATKOE SODERVANIE:
                DIM


   dOPUSTIM, U WAS IMEETSQ SPISOK IZ ^ISEL, KAKIM-TO  OBRAZOM  OPISYWA@]IH
10  ^ELOWEK.   dLQ  ZAPISI IH W PAMQTX KOMPX@TERA WY DOLVNY BUDETE ZAWESTI
PEREMENNU@ NA KAVDOGO ^ELOWEKA.  |TO NE UDOBNO, TAK KAK  PRIHODITSQ  OBRA-
]ATXSQ  K  DANNYM,  NAZYWAQ KAVDYJ RAZ NOWU@ PEREMENNU@, NAPRIMER BLOGGS1,
BLOGGS2 I TAK DO BLOGGS10.  kAK WIDIM, \TO DOWOLXNO MARAZMATI^NOE ZANQTIE.

   iMEETSQ SPECIALXNYJ APPARAT DLQ PODOBNOGO SLU^AQ - PRIMENENIE MASSIWOW.
pEREMENNYE W MASSIWE QWLQ@TSQ EGO \LEMENTAMI, OBLADA@T OB]IM IMENEM I RAZ-
LI^A@TSQ TOLXKO NOMEROM ZAPISYWAEMYM POSLE IMENI (INDEKSOM).

   w NA[EM PRIMERE IMQ BUDET B (PODOBNO UPRAWLQ@]IM PEREMENNYM W  FOR-NEXT
OPERATORAH,  IMQ MASSIWA DOLVNO BYTX UNIKALXNYM W DANNOJ PROGRAMME), I DE-
SQTX@ PEREMENNYMI BUDUT B(1), B(2) I TAK DO B(10).

   |LEMENTY MASSIWOW NAZYWA@T INDEKSIRUEMYMI PEREMENNYMI.  pERED ISPOLXZO-
WANIEM MASSIWA NEOBHODIMO ZAREZERWIROWATX POD NEGO PAMQTX.  |TO DELAETSQ W
OPERATORE DIM (OT ANGLIJSKOGO DIMENSION).  w NA[EM SLU^AE \TO BUDET OPERA-
TOR  DIM B(10),  KOTORYJ  OPREDELQET  MASSIW  S IMENEM B I RAZMERNOSTX@ 10
(T.E.  10 INDEKSIRUEMYH PEREMENNYH B(1), B(2), ..., B(10))  I  PRISWAIWAET
WSEM \LEMENTAM MASSIWA ZNA^ENIE 0.

   iTAK, TEPERX MY MOVEM ZAPISATX:
        10 FOR N=1 TO 10
        20 READ B(N)
        30 NEXT N
        40 DATA 10,2,5,19,3,11,1,0,6

   mOVNO TAKVE OBXQWLQTX MASSIWY S BOLEE ^EM ODNOJ  RAZMERNOSTX@.   nAPRI-
MER, W DWUHMERNOM MASSIWE PERWYJ INDEKS MOVNO SRAWNITX S NOMEROM STROKI, A
WTOROJ S POZICIEJ W STROKE.  tAKOJ MASSIW KAK BY OPISYWAET STRANICU.  eSLI
WWESTI  TRETXE  IZMERENIE  DLQ  NOMERA STRANICY, TO MASSIW BUDET OPISYWATX
KNIGU W WIDE:
        (NOMER STRANICY, NOMER STROKI, NOMER STOLBCA)

   oBXQWIM DWUHMERNYJ MASSIW C S RAZMERNOSTX@ 3 I 6:
        DIM C(3,6)
^TO DAST 3*6=18 INDEKSIRUEMYH PEREMENNYH:
        C(1,1), C(1,2), ..., C(1,6)
        C(2,1), C(2,2), ..., C(2,6)
        C(3,1), C(3,2), ..., C(3,6)

   mOGUT BYTX TAKVE STROKOWYE MASSIWY.  sTROKI W TAKIH MASSIWAH OTLI^A@TSQ
OT  SKALQRNYH TEM, ^TO IME@T FIKSIROWANNU@ DLINU, A PRISWAIWANIE IM ZNA^E-
NIQ OSU]ESTWLQETSQ S USE^ENIEM SPRAWA ILI DOBAWLENIEM DO POLNOJ DLINY PRO-
BELAMI.  iMQ STROKOWOGO MASSIWA OBRAZUETSQ DOBAWLENIEM SPRAWA K IMENI SPE-
m A S S I W Y                                                    Page 12-2



CIALXNOGO SIMWOLA DOLLARA '$'.

   dOPUSTIM, WAM NEOBHODIMO OBXQWITX MASSIW A$ NA 5 STROK PO 10 SIMWOLOW W
KAVDOJ.  wY DOLVNY ZAPISATX:
        DIM A$(5,10)
tEPERX WY MOVETE OBRA]ATXSQ KAK CELIKOM K OTDELXNOJ STROKE, TAK I K KAVDO-
MU SIMWOLU W STROKE:
        A$(1)=A$(1,1)A$(1,2)...A$(1,10)
        A$(2)=A$(2,1)A$(2,2)...A$(2,10)
                ...
        A$(5)=A$(5,1)A$(5,2)...A$(5,10)
mOVNO TAKVE RASSMATRIWATX \LEMENT STROKOWOGO MASSIWA KAK MASSIW  SIMWOLOW.
pUSTX  OBXQWLEN MASSIW A$(2,7), ^TO MOVNO ZAPISATX I TAK A(2)(7).  sLEDU@-
]AQ PROGRAMMA:
        10 LET A$(2)='1234567890'
        20 PRINT A$(2),A$(2,7)
DAST '123456789 7'

   mOVNO ISPOLXZOWATX TAKVE SE^ENIQ MASSIWOW:
        A$(2,4 TO 8)=A$(2)(4 TO 8)="45678"

   pOMNITE, ^TO W STROKOWYH MASSIWAH WSE STROKI IME@T FIKSIROWANNU@ DLINU.
|TU  DLINU OPREDELQET POSLEDNEE ^ISLO RAZMERNOSTI MASSIWA W OPERATORE DIM.
eSLI OBXQWLEN ODNOMERNYJ MASSIW, TO ON OPREDELQET  STROKU  SIMWOLOW:   DIM
A$(10).











                                CHAPTER 13

                  l O G I ^ E S K I E   O P E R A C I I




   kRATKOE SODERVANIE:
                AND, OR, NOT.


   eSLI MY WZGLQNEM NA OPISANNU@ W GLAWE 3 FORMU OPERATORA IF:
        IF USLOWIE THEN ...
TO UWIDIM, ^TO 'USLOWIE' OPISYWAETSQ OTNO[ENIQMI (=, <, >,  >=,  <=,  <>),
SWQZYWA@]IMI  DWA  ^ISLA ILI STROKI.  zDESX MOVNO TAKVE ISPOLXZOWATX LOGI-
^ESKIE OPERACII AND (I), OR (ILI) I NOT (NE).

   nEKOTOROE WYRAVENIE 'I' NEKOTOROE DRUGOE WYRAVENIE ISTINY, ESLI  ISTINY
OBA \TIH WYRAVENIQ.  nAPRIMER W
        IF A$="YES" AND X>0 THEN PRINT X
X BUDET NAPE^ATANO TOLXKO TOGDA, KOGDA
        A$="YES" I X>0

   nEKOTOROE WYRAVENIE 'ILI' NEKOTOROE DRUGOE WYRAVENIE ISTINY, ESLI ISTI-
NO HOTQ BY ODNO IZ \TIH WYRAVENIJ.

   'nE' WYRAVENIE ISTINO, ESLI LOVNO SAMO WYRAVENIE I NAOBOROT.

   OR IMEET NIZ[IJ PRIORITET, ZATEM IDET AND, ZATEM NOT.

   uSLOWIE '<>' OBRATNO W LOGI^ESKOM SMYSLE USLOWI@ '=', TO ESTX:
        A<>B TO VE, ^TO I NOT A=B
        NOT A<>B TO VE, ^TO I A=B

   1) uSLOWIQ =, <, >, <=, >=, <> DA@T ^ISLOWOJ REZULXTAT 1 DLQ  ISTINY  I
0,  ESLI LOVX.  nAPRIMER, OPERATOR PRINT 1=2,1<>2 WYWEDET 0 DLQ '1=2', KO-
TOROE LOVNO I 1 DLQ '1<>2', KOTOROE ISTINO.

   2) w OPERATORE 'IF USLOWIE THEN ...', SAMO USLOWIE MOVET BYTX  ^ISLOWYM
WYRAVENIEM.  eSLI EGO ZNA^ENIE POSLE WY^ISLENIQ RAWNO 0, TO S^ITAETSQ, ^TO
\TO LOVX, ESLI DRUGOE ZNA^ENIE (WKL@^AQ I 1), TO S^ITAETSQ ^TO \TO ISTINA.
tAKIM OBRAZIM IF-OPERATOR MOVNO PREDSTAWITX KAK:
        IF USLOWIE<>0 THEN ...

   oPERACII AND, OR, NOT MOGUT TAKVE ISPOLXZOWATXSQ I W ^ISLOWYH WYRAVENI-
QH:
        X AND Y IMEET ZNA^ENIE X, ESLI Y^=0 I 0, ESLI Y=0
        X OR Y IMEET ZNA^ENIE 1, ESLI Y^=0 I X, ESLI Y=0
        NOT Y IMEET ZNA^ENIE 0, ESLI Y^=0 I 1, ESLI Y=0

   nAPRIMER:
        10 INPUT A
        20 INPUT B
        30 PRINT(A AND A>B)+(B AND A<B)
        40 GO TO 10
w KAVDOJ ITERACII BUDET WYWODITXSQ BOLX[EE IZ DWUH ^ISEL A ILI B.
l O G I ^ E S K I E   O P E R A C I I                            Page 13-2



   pRIMER ISPOLXZOWANIQ OR:
        LET TOTAL PRICE=PRICE LESS TAX*(1.15 OR V$="ZERO RATED")

   w USLOWNOM WYRAVENII MOVNO TAKVE  ISPOLXZOWATX  SIMWOLXNYE  STROKI,  NO
TOLXKO S OPERACIEJ AND:
        X$ AND Y IMEET ZNA^ENIE X$, ESLI Y<>0, I "", ESLI Y=0
GDE "" - PUSTAQ STROKA.

   wYPOLNITE SLEDU@]U@ PROGRAMMU, KOTORAQ WWODIT DWE STROKI, A ZATEM WYWO-
DIT IH W ALFAWITNOM PORQDKE:
        10 INPUT "TYPE IN TWO STRINGS",A$,B$
        20 IF A$>B$ THEN LET C$=A$:LET A$=B$:LET B$=C$
        30 PRINT A$;" ";("<" AND A$<B$)+("=" AND A$=B$)
        40 PRINT " ";B$
        50 GOTO 10











                                CHAPTER 14

                       n A B O R   S I M W O L O W




   kRATKOE SODERVANIE:
                CODE, CHR$, POKE, PEEK, USR, BIN.


   bUKWY, CIFRY, ZNAKI PUNKTUACII OBOZNA^A@TSQ SIMWOLAMI I OBRAZU@T  ALFA-
WIT  ILI NABOR SIMWOLOW, ISPOLXZUEMYJ KOMPX@TEROM.  oTDELXNYE SIMWOLY, NA-
ZYWAEMYE ZNAKAMI, OBRAZU@T CELYE SLOWA, NAPRIMER PRINT, STOP I T.D.

   kOMPX@TER ZX SPECTRUM ISPOLXZUET 256 SIMWOLOW S KODAMI  OT  0  DO  255.
wSE  ONI PRIWEDENY W PRILOVENII A.  dLQ PREOBRAZOWANIQ IZ SIMWOLXNOJ FORMY
WO WNUTRENN@@ KODOWU@ I NAOBOROT SLUVAT DWE FUNKCII:  CODE I CHR$.

   CODE PRIMENQETSQ K STROKE SIMWOLOW I WOZWRA]AET KOD WNUTRENNEGO  PREDS-
TAWLENIQ PERWOGO SIMWOLA W STROKE ILI 0, ESLI STROKA PUSTAQ.

   CHR$ PRIMENQETSQ K ^ISLU I WOZWRA]AET ODIN SIMWOL, KOD KOTOROGO  PREDS-
TAWLEN \TIM ^ISLOM.

   sLEDU@]AQ PROGRAMMA WYWODIT WESX OTOBRAVAEMYJ SIMWOLXNYJ NABOR:
        10 FOR A=32 TO 255:PRINT CHR$ A;:NEXT A

   wSE SIMWOLY OT 32 DO 127 (KROME ZNAKA FUNTA I (c)) OBRAZU@T  KOD  ASCII
(American Standart Codes for Information Interchange).

   sLEDU@]IE SIMWOLY NE WHODQT W ASCII, NO  ISPOLXZU@TSQ  W  ZX  SPECTRUM.
pERWYE IZ NIH \TO 15 ^ERNO-BELYH ZNA^KOW, NAZYWAEMYH GRAFI^ESKIMI SIMWOLA-
MI I ISPOLXZUEMYH DLQ IZOBRAVENIQ RISUNKOW.  iH MOVNO WWESTI S KLAWIATURY,
ISPOLXZUQ  TAK  NAZYWAEMYJ  GRAFI^ESKIJ  REVIM.   eSLI WY NAVMETE GRAPHICS
(<CS>+9), TO KURSOR IZMENITSQ NA <G>.  tEPERX CIFROWYE KLAWI[I S  1  PO  8
WYDA@T  GRAFI^ESKIE  SIMWOLY,  OBOZNA^ENNYE  NA  KLAWI[AH, A ESLI PRI \TOM
UDERVIWATX SHIFT, TO ONI BUDUT WYDAWATX INWERSNYE  SIMWOLY,  T.E.   ^ERNOE
STANOWITSQ BELYM, A BELOE ^ERNYM.

   nEZAWISIMO OT <SHIFT>, KLAWI[A S CIFROJ '9' OBESPE^IWAET WAM WOZWRAT  K
OBY^NOMU (<L>-KURSOR) REVIMU, A KLAWI[A '0' - FUNKCI@ DELETE.

   pOSLE GRAFI^ESKIH SIMWOLOW NA KLAWIATURE RASPOLAGA@TSQ SIMWOLY ALFAWITA
OT  A  DO  U.   gRAFI^ESKIE  ZNA^ENIQ \TIH KLAWI[ MOGUT OPREDELQTXSQ SAMIM
POLXZOWATELEM, A ZATEM ISPOLXZOWATXSQ W GRAFI^ESKOM  REVIME.   oPREDELENIE
GRAFIKI  \TIH  KLAWI[ PROILL@STRIRUEM NA PRIMERE OPREDELENIQ SIMWOLA BUKWY
GRE^ESKOGO ALFAWITA pi.

   1) kAVDYJ SIMWOL PREDSTAWLQETSQ TO^KAMI W MATRICE 8*8, PO\TOMU MY  WNA-
^ALE  NA^ERTIM  DIAGRAMMU,  PRIWEDENNU@  NA  RISUNKE.  mY OSTAWIM PO ODNOJ
KLETKE PO PERIMETRU SIMWOLA DLQ OTDE LENIQ EGO OT SOSEDNIH ZNAKOW.

   2) zAKREPIM DANNYJ SIMWOL ZA KLAWI[EJ 'P', TAK, ^TOBY PRI NA VATII KLA-
WI[I W GRAFI^ESKOM REVIME WYDAWALSQ SIMWOL pi.
n A B O R   S I M W O L O W                                      Page 14-2



        ---------------------------------
        |   |   |   |   |   |   |   |   |
        ---------------------------------
        |   |   |   |   |   |   |   |   |
        ---------------------------------
        |   |   |   |   |   |   |***|   |
        ---------------------------------
        |   |   |***|***|***|***|   |   |
        ---------------------------------
        |   |***|   |***|   |***|   |   |
        ---------------------------------
        |   |   |   |***|   |***|   |   |
        ---------------------------------
        |   |   |   |***|   |***|   |   |
        ---------------------------------
        |   |   |   |   |   |   |   |   |
        ---------------------------------

   3) zAPROGRAMMIRUEM \TO IZOBRAVENIE.  kAVDYJ OPREDELQEMYJ  POLXZOWATELEM
SIMWOL ZAPOMINAETSQ W PAMQTI WOSEMX@ ZNAKAMI, PO ODNOMU NA KAVDYJ RQD.  wY
MOVETE ZAPISATX IH ISPOLXZUQ FUNKCI@ BIN S OBOZNA^ENIEM  CIFROJ  0  ^ISTOJ
TO^KI I 1 ZAKRA[ENNOJ TO^KI:
        BIN 00000000
        BIN 00000000
        BIN 00000010
        BIN 00111100
        BIN 01010100
        BIN 00010100
        BIN 00010100
        BIN 00000000

   \TI WOSEMX DWOI^NYH ^ISEL ZAPOMINA@TSQ W PAMQTI W WOSXMI Q^EJKAH,  KAV-
DAQ  IZ  KOTORYH  IMEET  SWOJ  ADRES.  dLQ NA[EGO SIMWOLA ADRES PERWOGO IZ
WOSXMI BAJTOW W GRUPPE BUDET USR"P".  WTOROJ BAJT IMEET ADRES  USR"P"+1  I
TAK DO USR"P"+7.

   USR - FUNKCIQ PREOBRAZOWANIQ STROKI SIMWOLOW W ADRES  PERWOGO  BAJTA  W
STROKE.   sTROKOWYJ  ARGUMENT MOVET SODERVATX EDINSTWENNYJ SIMWOL, KOTORYJ
BUDET OBOZNA^ATX SIMWOL, OPREDELQEMYJ  POLXZOWATELEM.   iME@TSQ  I  DRUGIE
PRIMENENIQ  FUNKCII  USR S ^ISLOWYM ARGUMENTOM, NO OB \TOM POZVE.  pOQSNIM
WSE SKAZANNOE PROGRAMMOJ:
        10 FOR N=0 TO 7
        20 INPUT ROW:POKE USR"P"+N,ROW
        30 NEXT N
dANNAQ PROGRAMMA WWODIT 8 DWOI^NYH ^ISEL,  OPREDELQ@]IH  GRAFIKU  SIMWOLA,
ZAKREPLQEMOGO ZA KLAWI[EJ 'P'.

   oPERATOR POKE ZAPISYWAET DANNYE NEPOSREDSTWENNO W PAMQTX, MINUQ OBY^NYJ
APPARAT  BASIC.   oBRATNYM  OPERATORU POKE QWLQETSQ OPERATOR PEEK, KOTORYJ
SLUVIT DLQ OTOBRAVENIQ SODERVIMOGO OBLASTI PAMQTI, NO  OB  \TOM  PODROBNEE
BUDEM GOWORITX W GLAWE 24.
n A B O R   S I M W O L O W                                      Page 14-3



                  g R A F I ^ E S K I E   S I M W O L Y

        s I M W O L    kOD  nABOR        s I M W O L    kOD  nABOR
        ------------                     ------------
        |          |                     |**********|
        |          |   128  [G] 8        |**********|   143  [G] <S>+8
        |          |                     |**********|
        |          |                     |**********|
        ------------                     ------------
        ------------                     ------------
        |     *****|                     |*****     |
        |     *****|   129  [G] 1        |*****     |   142  [G] <S>+1
        |          |                     |**********|
        |          |                     |**********|
        ------------                     ------------
        ------------                     ------------
        |*****     |                     |     *****|
        |*****     |   130  [G] 2        |     *****|   141  [G] <S>+2
        |          |                     |**********|
        |          |                     |**********|
        ------------                     ------------
        ------------                     ------------
        |**********|                     |          |
        |**********|   131  [G] 3        |          |   140  [G] <S>+3
        |          |                     |**********|
        |          |                     |**********|
        ------------                     ------------
        ------------                     ------------
        |          |                     |**********|
        |          |   132  [G] 4        |**********|   139  [G] <S>+4
        |     *****|                     |*****     |
        |     *****|                     |*****     |
        ------------                     ------------
        ------------                     ------------
        |     *****|                     |*****     |
        |     *****|   133  [G] 5        |*****     |   138  [G] <S>+5
        |     *****|                     |*****     |
        |     *****|                     |*****     |
        ------------                     ------------
        ------------                     ------------
        |*****     |                     |     *****|
        |*****     |   134  [G] 6        |     *****|   137  [G] <S>+6
        |     *****|                     |*****     |
        |     *****|                     |*****     |
        ------------                     ------------
        ------------                     ------------
        |**********|                     |          |
        |**********|   135  [G] 7        |          |   136  [G] <S>+7
        |     *****|                     |*****     |
        |     *****|                     |*****     |
        ------------                     ------------

n A B O R   S I M W O L O W                                      Page 14-4



   wERNEMSQ K ZNAKAM.  mY E]E NE POGOWORILI O NE  NAPE^ATANNYH  PERWYH  32
ZNAKAH  S KODAMI OT 0 DO 32.  |TO UPRAWLQ@]IE SIMWOLY.  oNI NE OTOBRAVA@T-
SQ, WMESTO NIH NA TELEWIZORE OTOBRAVAETSQ ZNAK '7'.  nAZNA^ENIE \TIH  SIM-
WOLOW OPISANNO W PRILOVENII A.

   tRI SIMWOLA S KODAMI 6, 8 I 13 IME@T SPECIALXNOE NAZNA^ENIE PRI  RABOTE
S TELEWIZOROM.

   CHR$ 6 PE^ATAET PROBEL, ISPOLXZUEMYJ KAK ZAPQTAQ W OPRERATORE PRINT.
        PRINT 1;CHR$ 6;2
DAST TOT VE REZULXTAT, ^TO I OPERATOR:
        PRINT 1,2
NO \TO NE SOWSEM KORREKTNOE ISPOLXZOWANIE, WERNEE BUDET SDELATX
        10 LET A$="1"+CHR$ 6+"2"
        20 PRINT A$

   CHR$ 8 - SIMWOL ZABOQ, OBESPE^IWAET  WOZWRAT  NA  ODNU  POZICI@  NAZAD.
oPERATOR
        PRINT "1234";CHR$ 8;"5"
DAST STROKU '1235'.

   CHR$ 13 - PEREWOD STROKI, PRODOLVAET WYWOD S NOWOJ STROKI.  tELEWIZOROM
TAKVE ISPOLXZU@TSQ SIMWOLY S KODAMI 16 I 23, NO OB \TOM POGOWORIM W GLAWAH
15, 16.

   wSE SIMWOLY RASPOLOVENY W KODOWOJ TABLICE W ALFAWITNOM PORQDKE PO  WOZ-
RASTANI@  KODOW.   pRI^EM WSE PROPISNYE BUKWY RASPOLOVENY POSLE ZAGLAWNYH,
TAK ^TO 'A' SLEDUET POSLE 'Z'.
        CHR$ 3+"ZOOLOGICAL GARDENS"
        CHR$ 8+"AARDVARK HUNTING"
        "(PARENTHETICAL REMARK)"
        "100"
        "129.95 INC.VAT"
        "AASVOGEL"
        "AARDVARK"
        "PRINT"
        "ZOO"
        "[INTERPOLATION]"
        "AARDVARK"
        "AASVOGEL"
        "ZOO"
        "ZOOLOGU"

   sU]ESTWUET PRAWILO, PO KOTOROMU SORTIRU@TSQ DWE STROKI.  sNA^ALA  SRAW-
NIWA@TSQ PERWYE SIMWOLY.  eSLI ONI RAZLI^A@TSQ, TO STROKA, SODERVA]AQ SIM-
WOL S MENX[IM KODOM QWLQETSQ 'MENX[EJ', A ESLI RAWNY,  TO  WYBIRAETSQ  DLQ
SRAWNENIQ SLEDU@]AQ PARA SIMWOLOW.  tAK DO TEH POR, POKA NE WSTRETQTSQ NE-
SOWPADA@]IE SIMWOLY, LIBO POKA ODNA IZ STROK  NE  KON^ITSQ,  ONA  I  BUDET
MENX[EJ.  w PROTIWNOM SLU^AE STROKI S^ITA@TSQ RAWNYMI.

   oTNO[ENIQ =, <, >, <=, >=, <> PRIMENQ@TSQ K STROKAM  SIMWOLOW  TAK  VE,
KAK  I K ^ISLAM:  ZNAK '<' OZNA^AET 'NAHODITSQ WPEREDI W KODOWOJ TABLICE',
A '>' - 'NAHODITSQ POZADI'.  tAK ^TO, WYRAVENIQ
        "AAMAN" < "AARDVARK"
        "AARDVARK" > "AAMAN"
OBA ISTINNY.

   dLQ ILL@STRACII WSEGO SKAZANNOGO PRIWEDEM PROGRAMMU, KOTORAQ WWODIT DWE
STROKI, A ZATEM WYWODIT IH W UPORQDO^ENNOM WIDE.
        10 INPUT "TYPE IN TWO STRING",A$,B$
        20 IF A$>B$ THEN LET C$=A$:LET A$=B$:LET B$=C$
        30 PRINT A$;" ";
        40 IF A$<B$ THEN PRINT "<";:GOTO 60
n A B O R   S I M W O L O W                                      Page 14-5



        50 PRINT "="
        60 PRINT " ";B$
        70 GOTO 10

   sLEDU@]AQ PROGRAMMA ZAKREPLQET OPREDELENNYE POLXZOWATELEM  SIMWOLY  DLQ
IGRY W [AHMATY ZA KLAWI[AMI:
        P - ZA PE[KOJ;    (POWN)
        R - ZA LADXEJ;    (ROOK)
        N - ZA KONEM;     (KNIGHT)
        W - ZA SLONOM;    (BISHOP)
        K - ZA KOROLEM;   (KING)
        Q - ZA KOROLEWOJ. (QUEEN)
 
        5 LET B=BIN 01111100:LET S=BIN 00111000:
        LET D=BIN 00010000
        10 FOR N=1 TO 6:READ P$:REM 6 PIECES
        20 FOR F=0 TO 7:REM READ PIECE INTO 8 BYTES
        30 READ A:POKE USR P$+1,A
        40 NEXT F
        50 NEXT N
        100 REM BISHOP
        110 DATA "B",0,D,BIN 00101000,BIN 01000100
        120 DATA BIN 01101100,C,B,0
        130 REM KING
        140 DATA "K",0,D,C,D
        150 DATA C,BIN 01000100,C,0
        160 REM ROOK
        170 DATA "R",0,BIN 01010100,B,C
        180 DATA C,B,B,0
        190 REM QUEEN
        200 DATA "Q",0,BIN 01010100,BIN 00101000,D
        210 DATA BIN 01101100,B,B,0
        220 REM PAWN
        230 DATA "P",0,0,D,C
        240 DATA C,D,B,0
        250 REM KNIGHT
        260 DATA "N",0,D,C,BIN 01111000
        270 DATA BIN 00011000,C,B,0











                                CHAPTER 15

    d O P O L N I T E L X N Y E   S W E D E N I Q  O  PRINT  I  INPUT




   kRATKOE SODERVANIE:
                CLS, PRINT-PARAMETRY:   IH  OTSUTSTWIE  WOOB]E,  WYRAVENIE
                (^ISLOWOE ILI STROKOWOE):  TAB ^ISLOWOE WYRAVENIE, AT ^IS-
                LOWOE WYRAVENIE, PRINT-RAZDELITELI:  ",", ";", "'", INPUT-
                PARAMETRY, LINE <STRO^NAQ PEREMENNAQ>, SWERTKA, SCREEN$.

   wYRAVENIQ, ZNA^ENIE KOTORYH ISPOLXZU@TSQ W OPERATORE PRINT,  NAZYWA@TSQ
PRINT-PARAMETRAMI, ONI RAZDELQ@TSQ ZAPQTYMI ILI TO^KOJ S ZAPQTOJ, NAZYWAE-
MYMI PRINT-RAZDELITELQMI.

   w OPERATORE PRINT WOZMOVNO OTSUTSTWIE NEKOTORYH PARAMETROW, W \TOM SLU-
^AE STAWQTSQ DWE ZAPQTYE PODRQD.
        PRINT AT 11,16;"*"
WYWEDET '*' W SEREDINE \KRANA.

        AT STROKA,STOLBEC

   |TOT PARAMETR PEREME]AET POZICI@ WYWODA W MESTO,  OPREDELQEMOE  NOMEROM
STOKI  I  STOLBCA.   nOMER  STROKI  MENQETSQ OT 0 (WERHNQQ) DO 21, A NOMER
STOLBCA OT 0 (LEWYJ) DO 31.

   dEJSTWIE OPERATORA SCREEN$ PROTIWOPOLOVNO DEJSTWI@ OPERATORA  PRINT AT.
oN ISPOLXZUET TE VE PARAMETRY, NOMER STROKI I STOLBCA, NO IH ZNA^ENIQ ZAK-
L@^A@TSQ W SKOBKI.  oPERATOR SCREEN$ SOOB]AET WAM, KAKOJ SIMWOL  NAHODITSQ
NA \KRANE w UKAZANNOJ POZICII.  wYPOLNIW:
        PRINT SCREEN$(11,16)
MY POLU^IM '*', WYWEDENNU@ PREDYDU]IM OPERATOROM.

   w KA^ESTWE WOZWRA]AEMOGO ZNA^ENIQ MOGUT ISPOLXZOWATXSQ:  ALFAWITNO-CIF-
ROWYE  SIMWOLY,  SPECIALXNYE  SIMWOLY, PROBELY.  lINII, NARISOWANNYE S PO-
MO]X@ OPERATOROW:  PLOT, DRAW, CIRCLE, OPREDELQEMYE POLXZOWATELEM  SIMWOLY
I  GRAFI^ESKIE SIMWOLY WOZWRA]A@TSQ KAK PUSTAQ STROKA.  tO VE, KOGDA FUNK-
CIQ OVER ISPOLXZUETSQ DLQ POLU^ENIQ KOMBINIROWANNYH ZNAKOW.

        TAB STOLBEC

   |TOT PARAMETR PEREME]AET POZICI@ WYWODA W UKAZANNYJ STOLBEC NA  TOJ  VE
STROKE, ILI PEREHODIT NA NOWU@ STROKU, ESLI STOLBEC BYL POSLEDNIM.

   pOMNITE, ^TO KOMPX@TER OBRABATYWAET NOMER POZICII PO  MODUL@  32  (T.E.
DELIT  NA  32 I ISPOLXZUET OSTATOK).  tAK 'TAB 33' RAWNOZNA^NO 'TAB 1'.  k
PRIMERU:
        PRINT TAB 30,1;TAB 12;"CONTENTS";AT 3,1;
        "CHAPTER";TAB 24;"PAGE"
WYWEDET NA \KRAN OGLAWLENIE DLQ PERWOJ STRANICY KNIGI.

   rASSMOTRIM PRIMER, ILL@STRIRU@]IJ UMENX[ENIE PO MOD 32:
        10 FOR N=0 TO 20
        20 PRINT TAB 8*N;N
d O P O L N I T E L X N Y E   S W E D E N I Q  O  PRINT  I  INPUTPage 15-2



        30 NEXT N

   bOLEE NAGLQDNYJ PRIMER POLU^ITSQ PRI ZAMENE W 20 STROKE 8 NA 6.

   nESKOLXKO ZAME^ANIJ:

   1) w RASSMOTRENNYH PRIMERAH  W  KA^ESTWE  OGRANI^ITELEJ  ISPOLXZOWALASX
';'.  mOVNO ISPOLXZOWATX ',' (ILI WOOB]E NI^EGO), PRI \TOM NEOBHODIMO SLE-
DITX ZA USTANOWKOJ TEKU]EJ POZICII WYWODA.

   2) nELXZQ ISPOLXZOWATX DLQ WYWODA DWE NIVNIE STROKI \KRANA (22  I  23),
T.K.   ONI  ISPOLXZU@TSQ DLQ POLU^ENIQ DANNYH OPERATOROM INPUT.  pOSLEDNQQ
ISPOLXZUEMAQ STROKA - 21.

   3) mOVNO ISPOLXZOWATX PARAMETR AT DLQ USTANOWKI  POZICII  WYWODA  W  TO
MESTO, GDE UVE IMEETSQ WYWEDENNAQ INFORMACIQ, PRI \TOM KAVDYJ NOWYJ SIMWOL
UNI^TOVAET STARYJ.

   e]E ODNIM OPERATOROM, ISPOLXZUEMYM SOWMESTNO S PRINT, QWLQETSQ CLS,  ON
PROIZWODIT O^ISTKU \KRANA PODOBNO OPERATORAM CLEAR I RUN.

   pRI ZAPOLNENII WSEGO \KRANA PROISHODIT EGO SWERTKA, W \TOM  MOVNO  UBE-
DITSQ, PRODELAW:
        CLS:FOR N=1 TO 22:PRINT N:NEXT N
I DALEE WYPOLNITX PRINT 99 NEKOTOROE KOLI^ESTWO RAZ.  iLI WARIANT S  OSTA-
NOWOM WYWODA DLQ PROSMOTRA TEKSTA.  wYPOLNIM:
        CLS:FOR N=1 TO 100:PRINT N:NEXT N
kOGDA \KRAN ZAPOLNITSQ, WYWOD OSTANOWITSQ, I W NIVNEJ ^ASTI \KRANA POQWIT-
SQ  ZAPROS:  'SCROLL?'.  pOSLE PROSMOTRA NAVMITE Y (DA) I WYWOD PRODOLVIT-
SQ.  wOZMOVEN OTRICATELXNYJ OTWET N (NET),  <STOP>  (<SS>+A)  ILI  <SPACE>
(BREAK).   w POSLEDNEM SLU^AE KOMPX@TER OSTANOWIT PROGRAMMU I WYDAST SOOB-
]ENIE:  'D BREAK - CONT REPEATS'

   oPERATOR INPUT ISPOLXZUETSQ DLQ WWODA RAZLI^NYH ZNA^ENIJ.  nAPRIMER:
        INPUT "HOW OLD ARE YOU?",AGE
kOMPX@TER WYWEDET NA \KRAN (W NIVNEJ ^ASTI) WOPROS, W OTWET NA KOTORYJ  WY
DOLVNY  WWESTI  SWOJ  WOZRAST.  fAKTI^ESKI INPUT SODERVIT TE VE PARAMETRY,
^TO I PRINT, TAK "HOW OLD ARE YOU?" I AGE OBA QWLQ@TSQ PARAMETRAMI  INPUT.
oDNAKO, SU]ESTWU@T I NEKOTORYE OTLI^IQ.

   1) dOPOLNITELXNYJ PARAMETR - PEREMENNAQ,  ZNA^ENIE  KOTOROJ  WY  DOLVNY
WWESTI (W NA[EM PRIMERE AGE).

   2) wY MOVETE WYWODITX ZNA^ENIE PEREMENNOJ, KAK ^ASTX ZAPROSA,  ZAKL@^IW
EE DLQ \TOGO W SKOBKI.  pRIMER:
        INPUT("I AM";MY AGE;".  ");"HOW OLD ARE YOU?",YOUR AGE
zNA^ENIE MY AGE WYDAET KOMPX@TER, ZNA^ENIE YOUR AGE WWODITE WY  SAMI.   pO
MERE WYDA^I OPERATOROW INPUT PROISHODIT SWERTKA \KRANA.  rASSMOTRIM PRIMER
ISPOLXZOWANIQ AT W INPUT OPERATORE:
        10 INPUT "THIS IS LINE 1",A$;AT 0,0;"THIS LINE IS 0",A$;
        AT 2,0;"THIS IS LINE 2",A$;AT 1,0;
        "THIS IS STILL LINE 1";A$
kOGDA "THIS IS LINE 2" BUDET WYWEDENO,  NIVNIE  STROKI  STANUT  SDWIGATXSQ
WWERH, OSWOBOVDAQ MESTO, NO NUMERACIQ OSTANETSQ PREVNEJ.  wYPOLNIM:
        10 FOR N=0 TO 19:PRINT AT N, 0;N;NEXT N
        20 INPUT AT 0,0;A$;AT 1,0;A$;AT 2,0;A$;AT 3,0;A$;
        AT 4,0;A$;AT 5,0;A$;
kOGDA INFORMACIQ NA^NET SME]ATXSQ W  OBLASTX  DEJSTWIQ  OPERATOROW  PRINT,
PROIZOJDET  SWERTKA \KRANA.  e]E ODNIM PARAMETROM OPERATORA INPUT QWLQETSQ
LINE, ON PREDNAZNA^EN DLQ WWODA STRO^NYH PEREMENNYH.  rASSMOTRIM PRIMER:
        INPUT LINE A$
eSLI WWESTI KAKU@-LIBO STRO^NU@ PEREMENNU@ BEZ STROKOWYH  KOWY^EK,  TO  EE
ZNA^ENIE  BUDET PRISWOENO A$.  zAMETIM, ^TO MY NE MOVEM ISPOLXZOWATX PARA-
d O P O L N I T E L X N Y E   S W E D E N I Q  O  PRINT  I  INPUTPage 15-3



METR LINE DLQ ^ISLOWYH PEREMENNYH.

   uPRAWLQ@]IE SIMWOLY CHR$22 I CHR$23 WYPOLNQ@T FUNKCII,  PODOBNYE  PARA-
METRAM  TAB  I  AT.  iH PREIMU]ESTWO SOSTOIT W TOM, ^TO MOVNO ISPOLXZOWATX
IMENA PEREMENNYH, A DLQ TAB I AT \TO NEWOZMOVNO.  |TI UPRAWLQ@]IE  SIMWOLY
OBRABATYWA@TSQ KAK ^ISLA.  aNALOGOM AT QWLQETSQ UPRAWLQ@]IJ SIMWOL CHR$22,
PERWOE ZNA^ENIE OPREDELQET STROKU, WTOROE STOLBEC.
        PRINT CHR$22+CHR$1+CHR$C;
TO VE, ^TO I
        PRINT AT 1,C;
kAK ZNA^ENIQ PARAMETROW RASSMATRIWA@TSQ TOLXKO CHR$1 I  CHR$C  (CHR$22  NE
U^ITYWAETSQ).

   aNALOGOM TAB QWLQETSQ UPRAWLQ@]IJ SIMWOL CHR$23.   zNA^ENIQ  ZADAWAEMYH
IM PARAMETROW NAHODQTSQ W PREDELAH OT 0 DO 65535
        PRINT CHR$23+CHR$A+CHR$B
TO VE, ^TO I
        PRINT TAB A+256*B

   wY MOVETE ISPOLXZOWATX POKE DLQ PREKRA]ENIQ ZAPROSA O SWERTKU, WYPOLNIW
:
        POKE 23692,255
kOMPX@TER STANET SWORA^IWATX \KRAN BEZ ZAPROSA 255 RAZ, PREVDE ^EM  ZAPRO-
SIT SWERTKU.  tAK, NAPRIMER, ZAPUSTITE:
        10 FOR N=0 TO 10000
        20 PRINT N:POKE 23692,255
        30 NEXT N
I SLEDITE, SKOLXKO SWERTOK SDELAET KOMPX@TER.

   sTARTUEM SLEDU@]U@ PROGRAMMU, PROWERQ@]U@ ZNANIE TABLICY UMNOVENIQ:
        10 LET M$=" "
        20 LET A=INT(RND*12)+1:LET B=INT(RND*12)+1
        30 INPUT(M$)'' "WHAT IS";(A);"*";(B);"?";C
        100 IF C=A*B THEN LET M$="RIGHT": GOTO 20
        111 LET M$="WRONG. TRY AGAIN.": GOTO 30

   mOVNO NESKOLXKO IZMENITX PROGRAMMU, TAK, ^TOBY NE ZNAQ PRAWILXNOGO  OT-
WETA,  MOVNO BYLO UZNATX EGO.  k PRIMERU, KOMPX@TER SPRA[IWAET SKOLXKO BU-
DET 2*3, NE ZNAQ OTWETA WY WWODITE 2*3 I POLU^AETE EGO.  dLQ \TOGO ZAMENI-
TE  W  30  STROKE  C NA C$, W 100 STROKE NA VAL C$ I DOPOLNITELXNO WWEDITE
STROKU:
        40 IF C$<>STR$ VAL C$ THEN
        LET M$="TYPE IT PROPERLY":GOTO 30

   dLQ ISKL@^ENIQ PODSKAZKI POMENQJTE C$ W STROKE 30 NA LINE C$.











                                CHAPTER 16

                                c W E T A




   kRATKOE SODERVANIE:
                INK, PAPER, FLASH, BRIGHT, INVERSE, OVER, BORDER


   wYPOLNIM SLEDU@]U@ PROGRAMMU:
        10 FOR M=0 TO 1:BRIGHT M
        20 FOR N=1 TO 10
        30 FOR C=0 TO 7
        40 PAPER C:PRINT"   ";:REM 4 COLOURED SPACES
        50 NEXT C:NEXT N:NEXT M
        60 FOR M=0 TO 1:BRIGHT M:PAPER 7
        70 FOR C=0 TO 3
        80 INK C:PRINT C;"   ";
        90 NEXT C:PAPER 0
        100 FOR C=4 TO 7
        110 INK C:PRINT C;"   ";
        120 NEXT C:NEXT M
        130 PAPER 7:INK 0:BRIGHT 0

   oNA PRODEMONSTRIRUET WAM WOZMOVNOSTI WYWODA KOMPX@TEROM ZX SPECTRUM  NA
CWETNOJ  TELEWIZOR  WOSXMI  CWETOW (WKL@^AQ ^ERNYJ I BELYJ) I DWUH UROWNEJ
QRKOSTI.  eSLI TELEWIZOR ^ERNO-BELYJ, WY UWIDITE RAZLI^NYE GRADACII SEROGO
CWETA.

   nIVE DANA KODIROWKA CWETOW:
        0 - ^ERNYJ
        1 - SINIJ
        2 - KRASNYJ
        3 - FIOLETOWYJ
        4 - ZELENYJ
        5 - GOLUBOJ
        6 - VELTYJ
        7 - BELYJ
dLQ ^ERNO - BELOGO TELEWIZORA \TOT RQD PREDSTAWLQET  SOBOJ  POSLEDOWATELX-
NOSTX  PEREHODA  SERYH  POLUTONOW OT ^ERNOGO DO BELOGO.  dLQ ISPOLXZOWANIQ
CWETOW UQSNIM STROENIE GRAFI^ESKOGO \KRANA.  oN SOSTOIT IZ 768 POZICIJ (24
STROKI PO 32 ZNAKOMESTA), KAVDAQ IZ KOTORYH PREDSTAWLQET IZ SEBQ MATRICU 8
NA 8 PIKSELEJ.  wSPOMNIM:
        0 - BELAQ TO^KA
        1 - ^ERNAQ TO^KA
pOZICIQ SIMWOLA (ZNAKOMESTO) TAKVE RASSMATRIWAETSQ S \TIH POZICIJ:  INK  -
CWET  TONA,  PAPER  - CWET FONA.  T.O.  ZNAKOMESTO SOSTOIT IZ INK I PAPER.
MOVNO TAK VE GOWORITX O INK I PAPER OBY^NOJ I POWY[ENNOJ QRKOSTI, A TAK VE
MERCA@]IH I NEMERCA@]IH.  wSE \TO IMEET SLEDU@]U@ KODIROWKU:

   1) dLQ ZNAKOMESTA (8 NA 8 PIKSELEJ) FORMU SIMWOLA OPREDELQ@T  ^ISTYE  I
ZAKRA[ENNYE TO^KI (0 I 1), CWETA FONA I TONA OPREDELQ@TSQ PAPER I INK;
c W E T A                                                        Page 16-2



   2) cWETA FONA I TONA KODIRU@TSQ OT 0 DO 7 KAVDYJ;

   3) qRKOSTX:  0 - OBY^NAQ;  1 - POWY[ENNAQ;

   4) mERCANIE:0 - POSTOQNNO, 1 - MERCANIE;

   zAMETIM, ^TO DLQ ODNOGO ZNAKOMESTA W 64 PIKSELQ MY NE MOVEM  USTANOWITX
BOLEE ODNOGO CWETA DLQ FONA I ODNOGO CWETA DLQ TONA.  \TO VE OTNOSITSQ I K
QRKOSTI, I K MERCANI@.  cWET, QRKOSTX I MERCANIE ZADA@TSQ  DLQ  ZNAKOMESTA
(A  NE  DLQ  OTDELXNOGO PIKSELQ) I QWLQ@TSQ EGO ATRIBUTAMI.  dLQ IZMENENIQ
\TIH ATRIBUTOW PREDNAZNA^ENY OPERATORY:  INK, PAPER, BRIGHT,  FLASH.   wY-
POLNIM:
        PAPER 5
tEPERX WYWOD BUDET OSU]ESTWLQTXSQ NA GOLUBOJ FON (T.K.  5 -  KOD  GOLUBOGO
CWETA).

   fORMAT OPERATOROW:
        PAPER ^ISLO 0..7
        INK ^ISLO 0..7
        BRIGHT 0/1 - 0 - WYKL@^ENO, 1 - WKL@^ENO
        FLASH 0/1 - 0 - WYKL@^ENO, 1 - WKL@^ENO

   oTMETIM, ^TO ISPOLXZOWANIE ^ISEL BOLX[IH, ^EM UKAZYWALOSX WY[E DOPUSTI-
MO, NO DAET DRUGOJ \FFEKT.  k PRIMERU 8 MOVET ISPOLXZOWATXSQ WO WSEH ^ETY-
REH OPERATORAH KAK SREDSTWO, POZWOLQ@]EE OPREDELITX ZNA^ENIE  RANEE  USTA-
NOWLENNYH ATRIBUTOW.  tAK,
        PAPER 8
NE IZMENIT CWETA FONA (T.K.  TAKOGO CWETA NET), A POMOVET WYQSNITX  ZNA^E-
NIE  PREDYDU]EGO PAPER.  oPERATORY:  INK 8, BRIGHT 8, FLASH 8 WYDADUT ZNA-
^ENIQ \TIH ATRIBUTOW.  9 MOVET ISPOLXZOWATXSQ TOLXKO DLQ INK I PAPER,  KAK
SREDSTWO  'KONTRASTA'.   cWETA  INK I PAPER KOTORYE WY ISPOLXZUETE, DOLVNY
BYTX KONTRASTNY DRUG DRUGU, TAK, K  BELOMU  CWETU  PODHODQT  TEMNYE  TONA:
^ERNYJ,  SINIJ, KRASNYJ, FIOLETOWYJ;  K ^ERNOMU CWETU PODHODQT SWETLYE TO-
NA:  ZELENYJ, GOLUBOJ, VELTYJ, BELYJ.

   wYPOLNIM:
        INK 9:FOR C=0 TO 7:PAPER C:PRINT C:NEXT C

   mOVNO ZAPUSTITX PROGRAMMU WYDA@]U@ NA \KRAN DISPLEQ CWETNYE POLOSY:
        INK 9:PAPER 8:PRINT AT 0, 0;:
        FOR N=1 TO 1000:PRINT N;:NEXT N

   cWET FONA BUDET KONTRASTEN  CWETU  TONA  W  KAVDOJ  WYWODIMOJ  POZICII.
CWETNOJ TELEWIZOR POSTROEN NA SPOSOBNOSTI ^ELOWE^ESKOGO GLAZA WOSPRINIMATX
TOLXKO TRI PERWI^NYH CWETA - SINIJ, KRASNYJ I ZELENYJ.  dRUGIE CWETA OBRA-
ZU@TSQ IZ IH SO^ETANIJ.  k PRIMERU, FIOLETOWYJ CWET OBRAZUESQ KAK KOMBINA-
CIQ SINEGO S KRASNYM (KOD FIOLETOWOGO CWETA 3, ON  QWLQETSQ  SUMMOJ  KODOW
SINEGO (1) I KRASNOGO (2))

   wIDETX WSE WOSEMX CWETOW NA ODNOM U^ASTKE \KRANA NEWOZMOVNO, T.K.   \TO
BUDET TEMNOE PQTNO.  nO TAM, GDE CWETA ^ASTI^NO NAKLADYWA@TSQ DRUG NA DRU-
GA, MY UWIDIM CWETOWU@ GAMMU.  w KA^ESTWE PRIMERA WYPONIM PROGRAMMU (OTME-
TIM, ^TO INK POLU^ENA S ISPOLXZOWANIEM <SHIFT>+8 W [G]-REVIME).
        10 BORDER 0:PAPER 0:INK 7:CLS
        20 FOR A=1 TO 6
        30 PRINT TAB 6;INK 1;"[][]...[][]":REM 18 INK SQUARES
        40 NEXT A
        50 LET DATALINE=200
        60 GOSUB 1000
        70 LET DATALINE=210
        80 GOSUB 1000
        90 STOP
        200 DATA 2,3,7,5,4
c W E T A                                                        Page 16-3



        210 DATA 2,2,6,4,4
        1000 FOR A=1 TO 6
        1010 RESTORE DATALINE
        1020 FOR B=1 TO 5
        1030 READ C:PRINT INK C;"[]...[]";:REM 6 INK SQUARES
        1040 NEXT B:PRINT :NEXT A
        1050 RETURN

   sU]ESTWUET FUNKCIQ ATTR, POZWOLQ@]AQ OPREDELITX,  KAKIE  ATRIBUTY  BYLI
ZADANY DLQ POZICII \KRANA.  |TO SLOVNAQ FYNKCIQ, I ONA BUDET RASSMOTRENA W
KONCE GLAWY.

   oPERATORY INVERSE I OVER NE UPRAWLQ@T ATRIBUTAMI, NO TEM NE MENEE OPRE-
DELQ@T  SPOSOB  WYWODA  NA \KRAN.  w \TIH OPERATORAH ISPOLXZU@TSQ ZNA^ENIQ
PARAMETROW 0 I 1.  eSLI WY DADITE INVERSE 1, TO WYWODIMYJ  SIMWOL  IZMENIT
SWO@ OBY^NU@ FORMU (WYWOD BUDET OSU]ESTWLQTXSQ W NEGATIWNOM IZOBRAVENII).

   w OBY^NOM WIDE MY PI[EM ^ERNYM PO BELOMU, W INWERSNOM BELYM PO ^ERNOMU.
oPERATOR OVER 1 USTANAWLIWAET REVIM RAS[IRENNOGO WYWODA.  w OBY^NOM REVIME
PRI WYWODE SIMWOLA NA ZNAKOMESTO, TAM STIRAETSQ WSE WYWEDENNOE RANEE,  PRI
RAS[IRENNOM WYWODE MOVNO NAKLADYWATX SIMWOLY DRUG NA DRUGA.  |TO POZWOLQET
WYWODITX SOSTAWNYE SIMWOLY, NAPRIMER STILIZOWANNYE [RIFTY.  pROGRAMMA  DLQ
WYWODA GOTI^ESKOGO [RIFTA:
        10 OVER 1
        20 FOR N=1 TO 32
        30 PRINT "O";CHR$8;"""";
        40 NEXT N

   oTMETIM, ^TO UPRAWLQ@]IJ SIMWOL CHR$8 WOZWRA]AET NA ODNU POZICI@.

   wOZMOVEN E]E ODIN SPOSOB ISPOLXZOWANIQ INK I PAPER.  iH  MOVNO  WWODITX
KAK  PARAMETRY PRINT.  tO^NO TAK VE MOVNO ISPOLXZOWATX I DRUGIE OPERATORY,
RASSMOTRENNYE W \TOJ GLAWE, OTMETIW PRI \TOM ^TO IH DEJSTWIE RASPROSTRANQ-
ETSQ TOLXKO DO KONCA PRINT.  w PRIMERE:

   PRINT PAPER 6;"X";:PRINT "Y"
TOLXKO 'X' BUDET WYWEDEN NA VELTYJ FON.
c W E T A                                                        Page 16-4



      t a B L I C A   S I M W O L O W   U P R A W L E N I Q   C W E T O M
 
        ---------------------------------------------------------------
        :                    :                 :                      :
rEVIM   :  [K], [L], [C]     :       [G]       :          [E]         :
        :                    :                 :                      :
        :--------------------:-----------------:----------------------:
        :      :      :      :        :        :       :       :      :
rEGISTR : NET  :SYMBOL: CAPS :  NET   : L@BOJ  :  NET  : CAPS  :SYMBOL:
        :      :      :      :        :        :       :       :      :
        :-------------------------------------------------------------:
        :      :      :      :    ****:****    :       :       :      :
        :  1   :  !   : EDIT :    ****:****    :  FON  :  TON  :DEF FN:
        :      :      :      :        :********:GOLUBOJ:GOLUBOJ:      :
        :      :      :      :        :********:       :       :      :
        :------:------:------:--------:--------:-------:-------:------:
        :      :      : CAPS :****    :    ****:       :       :      :
        :  2   :  @   : LOCK :****    :    ****:  FON  :  TON  :  FN  :
        :      :      :      :        :********:KRASNYJ:KRASNYJ:      :
        :      :      :      :        :********:       :       :      :
        :------:------:------:--------:--------:-------:-------:------:
        :      :      : TRUE :********:        :  FON  :  TON  :      :
        :  3   :  #   : VIDEO:********:        :FIOLETO:FIOLETO: LINE :
        :      :      :      :        :********:  WYJ  :  WYJ  :      :
        :      :      :      :        :********:       :       :      :
        :------:------:------:--------:--------:-------:-------:------:
        :      :      :INVERS:        :********:       :       :      :
        :  4   :  $   : VIDEO:        :********:  FON  :  TON  : OPEN :
        :      :      :      :    ****:****    :ZELENYJ:ZELENYJ:      :
        :      :      :      :    ****:****    :       :       :      :
        :------:------:------:--------:--------:-------:-------:------:
        :      :      :KURSOR:    ****:****    :       :       :      :
        :  5   :  %   :WLEWO :    ****:****    :  FON  :  TON  :CLOSE :
        :      :      :      :    ****:****    : SINIJ : SINIJ :      :
        :      :      :      :    ****:****    :       :       :      :
        :------:------:------:--------:--------:-------:-------:------:
        :      :      :KURSOR:****    :    ****:       :       :      :
        :  6   :  &   :WNIZ  :****    :    ****:  FON   :  TON  : MOVE :
        :      :      :      :    ****:****    :VELTYJ :VELTYJ :      :
        :      :      :      :    ****:****    :       :       :      :
        :------:------:------:--------:--------:-------:-------:------:
        :      :      :KURSOR:********:        :       :       :      :
        :  7   :  '   :WWERH :********:        :  FON  :  TON  :ERASE :
        :      :      :      :    ****:****    : BELYJ : BELYJ :      :
        :      :      :      :    ****:****    :       :       :      :
        ---------------------------------------------------------------
        :      :      :KURSOR:        :********:       :       :      :
        :  8   :  (   :WPRAWO:        :********:NORMAL.:NORMAL.:POINT :
        :      :      :      :        :********:QRKOSTX:MERCAN.:      :
        :      :      :      :        :********:       :       :      :
        :------:------:------:--------:--------:-------:-------:------:
        :      :      :GRAFI-: GRAFI^.: GRAFI^.: POWY[.:   S   :      :
        :  9   :  )   :^ESKIJ: WYHOD  : WYHOD  :QRKOSTX:MERCAN.: CAT  :
        :      :      :REVIM :        :        :       :       :      :
        :------:------:------:--------:--------:-------:-------:------:
        :      :      :      :        :        :  FON  :ZAKRA[.:      :
        :  10  :  _   :DELETE: DELETE : DELETE :^ERNYJ :^ERNYJ :FORMAT:
        :      :      :      :        :        :       :       :      :
        ---------------------------------------------------------------

c W E T A                                                        Page 16-5



   INK I DRUGIE OPERATORY NE DEJSTWU@T W NIVNEJ ^ASTI  \KRANA,  PREDNAZNA-
^ENNOJ DLQ WWODA KOMAND I INPUT-DANNYH.  dLQ IZMENENIQ CWETOW W \TOJ ^ASTI
\KRANA SLUVIT OPERATOR:
        BORDER CWET
kODIROWKA CWETOW PREVNQQ.  wOZMOVNY MERCANIE  I  POWY[ENNAQ  QRKOSTX,  DLQ
\TOGO  ISPOLXZUJTE  SOOTWETSTWU@]IE  PARAMETRY  W INPUT (NAPODOBIE PRINT).
|TI PARAMETRY DEJSTWU@T DO KONCA OPERATORA ILI DO TEH POR, POKA ZAPRA[IWA-
EMYE DANNYE NE BUDUT WWEDENY.  wYPOLNIM:
        INPUT FLASH 1;INK 1;"WHAT IS YOUR NUMBER ?";N

   wOZMOVNO IZMENENIE CWETOW I S POMO]X@  UPRAWLQ@]IH  SIMWOLOW,  PODOBNYH
UPRAWLQ@]IM SIMWOLAM DLQ AT I TAB W GLAWE 15.

        CHR$16 SOOTWETSTWUET INK
        CHR$17  -//-    PAPER
        CHR$18  -//-    FLASH
        CHR$19  -//-    BRIGHT
        CHR$20  -//-    INVERSE
        CHR$21  -//-    OVER

   tAK,
        PRINT CHR$16+CHR$9;
TO VE, ^TO I PRINT INK 9;

   mOVNO POLXZOWATXSQ LIBO UPRAWLQ@]IMI SIMBOLAMI, LIBO  OPERATORAMI.   iH
MOVNO STAWITX KAK POSLE NOMERA STROKI, TAK I W KONCE STROKI.  dLQ UDOBSTWA
MOVNO POLXZOWATXSQ W RAS[IRENNOM [E]-REVIME CIFRAMI.  cIFRY OT 0 DO 7  US-
TANAWLIWA@T CWET INK, ESLI <CS> NAVATA, I CWET PAPER, ESLI NE NAVATA.  eS-
LI NAVATX CIFRU W [E]-REVIME, TO BUDUT WYWEDENY CHR$17 I CHR$  KOD  CWETA.
eSLI  W  \TO  WREMQ  BYLA  NAVATA  <CS>,  TO  BUDUT  WYWEDENY:   CHR$16  I
CHR$ KOD CWETA.

   eSLI WY ZAHOTITE UNI^TOVITX WWODIMOE, NAVMITE DELETE  DWA  RAZA,  POSLE
PERWOGO RAZA NA \KRANE WYSWETITSQ ZNAK WOPROSA, ILI ^TO-NIBUDX E]E, NE PU-
GAJTESX I NAVMITE DELETE E]E RAZ.  uPRAWLENIE KURSOROM  TOVE  NE  RABOTAET
OBY^NYM  OBRAZOM DO TEH POR, POKA KURSOR NE WYJDET K PREDYDU]EMU UPRAWLQ@-
]EMU SIMWOLU.

   dEJSTWIQ W RAS[IRENNOM [E]-REVIME:
        8 DAET CHR$19 I CHR$0 - NORMALXNAQ QRKOSTX
        9 DAET CHR$19 I CHR$1 - POWY[ENNAQ QRKOSTX
        <CS>+8 DAET CHR$18 I CHR$0 - NE MERCA@]EE
        <CS>+9 DAET CHR$18 I CHR$1 - MERCA@]EE

   w [L]-REVIME:
        <CS>+3 DAET CHR$20 I CHR$0 - OBY^NYJ WYWOD
        <CS>+4 DAET CHR$20 I CHR$1 - INWERSNYJ (NEGATIWNYJ) WYWOD

   fUNKCIQ ATTR IMEET SLEDU@]IJ FORMAT:   ATTR(STROKA,STOLBEC).   zNA^ENIQ
DWUH  PARAMETROW  FUNKCII  PODOBNO ZNA^ENI@ PARAMETROW W AT.  w REZULXTATE
WYPOLNENIQ BUDUT WYWEDENY ZNA^ENIQ ATRIBUTOW DLQ  SOOTWETSTWU@]EJ  POZICII
\KRANA.  wYWODIMYJ REZULXTAT - \TO ^ISLO, PREDSTAWLQ@]EE SUMMU ^ETYREH ^I-
SEL:
        1) 128 - ESLI ZNAKOMESTO MERCA@]EE, 0 - ESLI OBY^NOE;
        2) 64 - ESLI POWY[ENNAQ QRKOSTX, 0 - ESLI OBY^NAQ;
        3) 8*KOD CWETA FONA;
        4) KOD CWETA TONA;

   pRIMER:  ZNAKOMESTO MERCA@]EE, OBY^NOJ QRKOSTI, VELTYJ FON, SINIJ  TON:
128+0+(8*6)+1=177
c W E T A                                                        Page 16-6



   pROWERIM \TO, WYPOLNIW:
        PRINT AT 0,0;FLASH 1;PAPER 6;INK 1;" ";ATTR(0,0)



   uPRAVNENIQ:

   1) PRINT "B";CHR$8;OVER 1;"/";

   zDESX '/' PERE^ERKNET 'B'.  |TIM SPOSOBOM MOVNO WYWODITX SLOWA IZ  KOM-
BINIROWANNYH  ZNAKOW NA ZX SPECTRUM:  DWA FONA ILI DWA TONA DA@T FON, ODIN
IZ NIH DAET TON.  |TO INTERESNOE SWOJSTWO, ESLI WY POWTORITE WYWOD  ODNOGO
SIMWOLA DWAVDY, TO ON NE BUDET OTOBRAVEN.  tAK, ESLI DATX:
        PRINT CHR$8;OVER 1;"/"
DOPOLNITELXNO K OPISANNOMU WY[E UTWERVDENI@, TO MY W REZULXTATE UWIDIM 'B'
NE PERE^ERKNUTOE '/'.  tAK LI \TO?

   2) PAPER 0:INK 0

   dEJSTWU@T LI \TI OPERATORY W NIVNEJ ^ASTI \KRANA?  ~TO MY UWIDIM,  ESLI
DOBAWITX BORDER 0?

   3) wYPOLNIM PROGRAMMU:
        10 POKE 22527+RND*704,RND*127
        20 GOTO 10

   rEZULXTATOM PROGRAMMY QWITSQ SMENA CWETOW ZNAKOMEST, RASPREDELENNYH  PO
\KRANU  SLU^AJNYM OBRAZOM.  wOZMOVNO WY UWIDITE SMENU CWETOW NA DIAGONALX-
NYH STUPENQH, \TO QWLQETSQ SLEDSTWIEM TOGO ^TO MY POLXZUEMSQ  KWAZISLU^AJ-
NYM RASPREDELENIEM, KOTOROE LI[X PRIBLIVENNO WOSPROIZWODIT SLU^AJNOE RASP-
REDELENIE.

   4) wWEDEM WRU^NU@, ILI S POMO]X@ OPERATORA  LOAD  PROGRAMMU  DLQ  WWODA
[AHMATNYH  FIGUR  IZ GLAWY 14, I WWEDEM PROGRAMMU RAZBIWKI \KRANA POD [AH-
MATNU@ DOSKU:
        5 REM DRAW BLANKBOARD
        10 LET BB=1:LET BW=2:REM RED AND BLUE FOR BOARD
        15 PAPER BW:INK BB:CLS
        20 PLOT 79,128:REM BORDER
        30 DRAW 65,0:DRAW 0,-65
        40 DRAW -65,0:DRAW 0,65
        50 PAPER BB
        60 REM BOARD
        70 FOR N=0 TO 3:FOR M=0 TO 3
        80 PRINT AT 6+2*N,11+2*M;" "
        90 PRINT AT 7+2*N,10+2*M;" "
        100 NEXT M:NEXT N
        110 PAPER 8
        120 LET PW=6:LET PB=5:REM COLOURS OF WHITE AND BLACK
        PIECES
        200 DIM B$(8,8):REM POSITIONS OF PIECES
        205 REM SET AP INITIAL POSITION
        210 LET B$(1)="RNBQKBNR":REM LITTLE LINE 240
        220 LET B$(2)="PPPPPPPP":REM LITTLE LINE 230
        230 LET B$(7)="PPPPPPPP":REM BIG LINE 220
        240 LET B$(8)="RNBQKBNR":REM BIG LINE 210
        300 REM DISPLAY BOARD
        310 FOR N=1 TO 8:FOR M=1 TO 8
        320 LET BC=CODE B$(N,M): INK PW
        325 IF BC=CODE " " THEN GOTO 350:REM SPACE
        330 IF BC>CODE "Z" THEN INK PB:LET BC=BC-32:REM LOWER
        CASE FOR BLACK
        340 LET BC=BC+79:REM CONVERT TO GRAPHICS
c W E T A                                                        Page 16-7



        350 PRINT AT 5+N,9+M;CHR$BC
        360 NEXT M:NEXT N
        400 PAPER 7:INK 0











                                CHAPTER 17

                              g R A F I K A




   kRATKOE SODERVANIE:
                PLOT, DRAW, CIRCLE, POINT


   |TA GLAWA OPISYWAET WOZMOVNOSTI KOMPX@TERA ZX SPECTRUM  PO  OTOBRAVENI@
GRAFI^ESKOJ INFORMACII.  |KRAN KOMPX@TERA SODERVIT 22 STROKI PO 32 SIMWOLA
W KAVDOJ, ^TO SOSTAWLQET 22*32=704 SIMWOLXNYE POZICII.  kAK WY UVE  PONQLI
IZ 16 GLAWY, KAVDAQ SIMWOLXNAQ POZICIQ PREDSTAWLQETSQ KWADRATOM 8*8 TO^EK,
NAZYWAEMYH PIKSELQMI.  pIKSELX ZADAETSQ DWUMQ ^ISLAMI,  EGO  KOORDINATAMI.
pERWOE ZADAET KOORDINATU X, TO ESTX UDALENIE (W PIKSELQH) OT LEWOJ GRANICY
\KRANA, WTOROE ZADAET KOORDINATU Y - UDALENIE OT  NIVNEJ  GRANICY  \KRANA.
kOORDINATY ZAPISYWA@TSQ W SKOBKAH, TAK (0,0), (255,0), (0,175) I (255,175)
ZADA@T SOOTWETSTWENNO NIVNIJ LEWYJ, NIVNIJ PRAWYJ, WERHNIJ PRAWYJ I  WERH-
NIJ LEWYJ UGLY \KRANA.

   oPERATOR PLOT X,Y WYZYWAET WYSWE^IWANIE ZAKRA[IWA@]IM CWETOM (INK) PIK-
SELQ S UKAZANNYMI KOORDINATAMI.

   nAPRIMER, PROGRAMMA:
        10 PLOT INT(RND*256),INT(RND*176)
        20 INPUT A$
        30 GOTO 10
BUDET WYSWE^IWATX NEKOTORYJ SLU^AJNYJ PIKSELX PRI KAVDOM NAVATII <ENTER>.

   eSTX I BOLEE INTERESNYE PROGRAMMY.  nAPRIMER, SLEDU@]AQ  PROGRAMMA  WY-
^ER^IWAET GRAFIK FUNKCII SIN X, DLQ X W INTERWALE OT 0 DO 2pi:
        10 FOR N=0 TO 255
        20 PLOT N,88+80*SIN(N/128*PI)
        30 NEXT N

   iLI PROGRAMMA:
        10 FOR N=0 TO 255
        20 PLOT N,80*SQR(N/64)
        30 NEXT N
KOTORAQ ^ERTIT GRAFIK SQR X (^ASTX PARABOLY) W INTERWALE OT 0 DO 4.

   pOMNITE, ^TO KOORDINATY PIKSELEJ OTLI^A@TSQ OT ADRESACII STROK I  POZI-
CIJ W PODKOMANDE AT.

   pOLXZUJTESX DIAGRAMMOJ IZ GLAWY 15.

   pOMO]X PRI POSTROENII IZOBRAVENIJ WAM MOGUT OKAZATX  OPERATORY  DRAW  I
CIRCLE.

   oPERATOR DRAW ^ERTIT LINI@, ZADANNU@ W FORME
        DRAW H,Y
nA^ALOM LINII QWLQETSQ PIKSELX, NA KOTOROM ZAWER[ILSQ ODIN  IZ  PREDYDU]IH
OPERATOROW PLOT, DRAW ILI CIRCLE (\TOT PIKSELX NAZYWAETSQ TEKU]EJ PLOT-PO-
ZICIEJ, OPERATORY RUN, CLEAR, CLS I NEW USTANAWLIWA@T EE  W  LEWYJ  NIVNIJ
g R A F I K A                                                    Page 17-2



UGOL \KRANA).  tAKIM OBRAZOM, OPERATOR DRAW ZADAET DLINU I NAPRAWLENIE WY-
^ER^IWANIQ LINII, NO NE NA^ALXNU@ TO^KU.

   pO\KSPEREMENTIRUJTE S TAKIMI KOMANDAMI:
        PLOT 0,100:DRAW 80,-35
        PLOT 90,150:DRAW 80,-35

   ~ERTITX MOVNO TAKVE W CWETE, NO PRI \TOM NADO IMETX WWIDU, ^TO CWET US-
TANAWLIWAETSQ  DLQ  CELOJ SIMWOLXNOJ POZICII I NE MOVET BYTX ZADAN DLQ OT-
DELXNOGO PIKSELQ.  sLEDU@]AQ PROGRAMMA DEMONSTRIRUET \TO:
        10 BORDER 0:PAPER 0:INK 7:CLS:REM BLACK OUT SCREEN
        20 LET X1=0:LET U1=0:REM START OF LINE
        30 LET C=1:REM FOR INK COLOUR,STARTING BLUE
        40 LET X2=INT(RND*256):LET U2=INT(RND*176):REM RANDOM EOL
        50 DRAW INK C;X2-X1,Y2-Y1
        60 LET X1=X2:LET U1=U2:REM NEXT LINE START
        70 LET C=C+1:IF C=8 THEN LET C=1:REM NEW COLOUR
        80 GOTO 40

   wY MOVETE ISPOLXZOWATX W OPERATORAH PLOT  I  DRAW  UPRAWLQ@]IE  SIMWOLY
PAPER, INK, FLASH, BRIGHT, INVERSE I OVER TAK VE, KAK I W OPERATORAH PRINT
I INPUT.  uPRAWLQ@]IE SIMWOLY ZAPISYWA@TSQ MEVDU KL@^EWYM SLOWOM I KOORDI-
NATAMI I OKAN^IWA@TSQ ZAPQTOJ ILI TO^KOJ S ZAPQTOJ (SMOTRI STROKU 50).

   pRI POMO]I DRAW MOVNO TAKVE WY^ERTITX OTREZOK DUGI, ISPOLXZUQ DLQ \TOGO
DOPOLNITELXNOE ^ISLO, ZADA@]EE UGOL (W RADIANAH) \TOJ DUGI:  DRAW X,U,A

   eSLI A POLOVITELXNO, TO DUGA WY^ER^IWAETSQ WLEWO, A ESLI  OTRICATELXNO,
TO WPRAWO.  pRI A RAWNOM 2pi WY^ER^IWAETSQ POLNAQ OKRUVNOSTX.  nAPRIMER:
        10 PLOT 100,100:DRAW 50,50,PI
WY^ERTIT POLUOKRUVNOSTX S NA^ALXNOJ TO^KOJ (100, 100)  I  KONE^NOJ  TO^KOJ
(150,150).  wY^ER^IWANIE NA^NETSQ W NAPRAWLENII @GO-WOSTOK, A ZAKON^ITSQ W
NAPRAWLENII NA SEWERO-ZAPAD.

   oPERATOR CIRCLE WY^ER^IWAET POLNYJ KRUG,  ZADAWAEMYJ  KOORDINATAMI  EGO
CENTRA I RADIUSOM:
        CIRCLE X,Y,RADIUS

   kAK I W OPERATORAH PLOT I DRAW, WY MOVETE UKAZATX W \TOM OPERATORE RAZ-
LI^NYE CWETA.

   fUNKCIQ POINT WOZWRA[AET HARAKTERISTIKI CWETA ZADANNOGO PIKSELQ.   nAP-
RIMER, STROKA PROGRAMMY:
        CLS:PRINT POINT(0,0):PLOT(0,0):PRINT POINT(0,0)
WYWEDET:  PAPER 7:INK 0

   dOPUSKAETSQ TAKVE ZADAWATX UPRAWLQ@]IE SIMWOLY INVERSE I OVER W  OPERA-
TORE  PLOT.   pO UMOL^ANI@ ONI PREDPOLAGA@TSQ RAWNYMI 0 (OTKL@^ENO), NO WY
MOVETE ZADATX I 1, PRI \TOM:

   PLOT INVERSE 1 - USTANAWLIWAET DLQ ZADANNOGO PIKSELQ CWET FONA,

   PLOT OVER 1 - IZMENQET CWET PIKSELQ NA PROTIWOPOLOVNYJ, ESLI  BYL  CWET
TONA, TO STANOWITSQ CWET FONA I NAOBOROT.

   PLOT INVERSE 1;OVER 1;  - SOHRANQET CWET PIKSELQ BEZ IZMENENIQ, NO  ME-
NQET TEKU]U@ PLOT-POZICI@.

   dRUGOJ PRIMER ISPOLXZOWANIQ OVER S ZAPISX@ ^ERNYM PO BELOMU:
        PLOT 0,0:DRAW OVER 1;255,175
WY^ER^IWAET LINI@ PO DIAGONALI.
g R A F I K A                                                    Page 17-3



   tEPERX POPROBUJTE:
        PLOT 0,0:DRAW INVERSE 1;255,175
I PERE^ERTITE EE KOMANDOJ
        DRAW OVER 1;-250,-175
|TO NE IZMENIT KARTINKU, TAK KAK PRI ^ER^ENII KAK WPERED, TAK I NAZAD  IS-
POLXZU@TSQ ODNI I TE VE PIKSELI.

   iMEETSQ SPOSOB POLU^ENIQ NEOBY^NYH CWETOW W ODNOM KWADRATE, S ISPOLXZO-
WANIEM OPREDELQEMYH POLXZOWATELEM SIMWOLOW.  wYPOLNITE \TU PROGRAMMU:
        1000 FOR N=0 TO 6 STEP 2
        1010 POKE USR"A"+N, BIN 01010101:POKE USR"A"+N+1,BIN 10101010
        1020 NEXT N
oNA ZADAET OPREDELQEMYJ POLXZOWATELEM SIMWOL DLQ [AHMATNOJ DOSKI,  KOTORYJ
ZAKREPLQETSQ ZA KLAWI[EJ 'A'.  dLQ SIMWOLA ISPOLXZUETSQ KRASNYJ ZAKRA[IWA-
@]IJ CWET I VELTYJ CWET FONA, NO NA  \KRANE  \TOT  SIMWOL  BUDET  KAZATXSQ
ORANVEWYM.

   e]E ODIN PRIMER:  PROGRAMMA, KOTORAQ STROIT GRAFIK  NEKOTOROJ  FUNKCII.
nA PERWYJ EE ZAPROS WY OTWE^AETE ^ISLOM N, ZADA@]IM OBLASTX ZNA^ENIJ ARGU-
MENTA (T.E.  GRAFIK BUDET STROITSQ DLQ ZNA^ENIJ ARGUMENTA W  DIAPOZONE  OT
-N  DO +N).  wTOROJ OTWET \TO WYRAVENIE W WIDE SIMWOLXNOJ STROKI, ZADA@]EJ
FUNKCI@, ISPOLXZU@]U@ X W KA^ESTWE ARGUMENTA:
        10 PLOT 0,87:DRAW 255,0
        20 PLOT 127,0:DRAW 0,175
        30 INPUT S,E$
        40 FOR F=0 TO 255
        50 LET X=(F-128)*S/128:LET Y=VAL E$
        60 IF ABS U>87 THEN LET T=0:GOTO 100
        70 IF NOT T THEN PLOT F,U+88:LET T=1:GOTO 100
        80 DRAW 1,U-OLDU
        100 LET OLDU=INT(U+5)
        110 NEXT F
wYPOLNITE EE, WWEDQ 10 DLQ ^ISLA N I "10*TAN X" DLQ FUNKCII.  bUDET WY^ER-
^EN GRAFIK FUNKCII TG X PRI X IZMENQ@]EMSQ OT -10 DO +10











                                CHAPTER 18

                             u K A Z A N I Q




   kRATKOE SODERVANIE:
                PAUSE, INKEY$, PEEK


   eSLI WY RE[ILI ZADERVATX WYPOLNENIE PROGRAMMY NA  NEKOTOROE  WREMQ,  TO
WAM SLEDUET ISPOLXZOWATX OPERATOR
        PAUSE N
KOTORYJ OSTANAWLIWAET WYPOLNENIE PROGRAMMY I OTOBRAVAET KARTINU W  TE^ENIE
N TELEWIZIONNYH KADROW (50 KADROW/SEK).  N MOVET BYTX WPLOTX DO 65535, ^TO
SOSTAWLQET 22 MINUTY.  eSLI N=0, TO \TO OZNA^AET, ^TO  OPERATOR  PAUSE  NE
IMEET OGRANI^ENIJ PO WREMENI.

   wYPOLNENIE PROGRAMMY WSEGDA MOVET BYTX WOZOBNOWLENO DO OKON^ANIQ WREME-
NI, OPREDELENNOGO W OPERATORE PAUSE, NAVATIEM L@BOJ KLAWI[I (NADO POMNITX,
^TO <CS> BUDET WYZYWATX PRERYWANIE).

   pRIMER PROGRAMMY MODELIROWANIQ SEKUNDNOJ STRELKI ^ASOW:
        10 REM FIST WE DRAW THE CLOCK FACE
        20 FOR N=1 TO 12
        30 PRINT AT 10-10*COS(N/6*PI),16+10*SIN(N/6*PI);N
        40 NEXT N
        50 REM NOW WE START THE CLOCK
        60 FOR T=0 TO 200000:REM TIME IN SECONDS
        70 LET A=T/30*PI:REM ANGLE OF THE SECOND HAND IN RADS
        80 LET SX=80*SIN A:LET SY=80*COS A
        200 PLOT 128,88:DRAW OVER 1;SX,SY:REM DRAW SECOND HAND
        210 PAUSE 42
        220 PLOT 128,88:DRAW OVER 1;SX,SY:REM ERASE SECOND HAND
        400 NEXT T

   |TI ^ASY OSTANOWQTXSQ, PRORABOTAW PRIBLIZITELXNO 55.5 ^ASOW, ^TO  ZADA-
ETSQ  W  OPERATORE  S NOMEROM 60.  oPERATOR 210 PROIZWODIT OTS^ET WREMENI.
kAZALOSX BY ZDESX DOLVEN BYTX OPERATOR PAUSE 50, DLQ TO^NOGO OTS^ETA ODNOJ
SEKUNDY, NO TOGDA BY MY NE U^LI WREMQ, ZATRA^IWAEMOE NA WYPOLNENIE OSTALX-
NYH OPERATOROW PROGRAMMY.  rASSMATRIWAEMYJ WARIANT ^ASOW OBESPE^IWAET 2%-@
TO^NOSTX ILI, INYMI SLOWAMI, UHOD NA POL^ASA W DENX.

   wOZMOVNY I BOLEE TO^NYE SPOSOBY IZMERENIQ WREMENI.  dLQ \TOGO MOVNO IS-
POLXZOWATX  SODERVIMOE  SPECIALXNYH OBLASTEJ PAMQTI.  w \TOM SLU^AE DANNYE
IZ PAMQTI MOGUT BYTX WYZWANY S POMO]X@ FUNKCII PEEK.  pODROBNO  \TO  RASS-
MOTRENO W GLAWE 25, ZDESX VE W KA^ESTWE PRIMERA RASSMOTRIM WYRAVENIE:
        (65536*PEEK 23674 + 256*PEEK 23673 + PEEK 26672)/50
oNO DAET KOLI^ESTWO SEKUND, PRO[ED[IH S TEH POR, KAK KOMPX@TER BYL WKL@^EN
(WPLOTX  DO  3-H  SUTOK  I  21-GO ^ASA).  nIVE PRIWODITSQ MODIFICIROWANNAQ
PROGRAMMA MODELIROWANIQ ^ASOW:
        10 REM FIRST WE DRAW THE CLOCK FACE
        20 FOR N=1 TO 12
        30 PRINT AT 10-10*COS(N/6*PI),16+10*SIN(N/6*PI);N
        40 NEXT N
u K A Z A N I Q                                                  Page 18-2



        50 DEF FN T()=INT((65536*PEEK 23674+256*PEEK 23673+
        PEEK 23672)/50):REM NUMBER OF SECOND SINCE START
        100 REM NOW WE START THE CLOCK
        110 LET T1=FN T()
        120 LET A=T1/30*PI:REM A IS THE ANGLE OF THE SECOND
        HAND IN RADIANS
        130 LET SX=72*SIN A:LET SY=72*COS A
        140 PLOT 131,91:DRAW OVER 1; SH,SY:REM DRAW HAND
        200 LET T=FN T()
        210 IF T<=T1 THEN GOTO 200:REM WAIT UNTIL TIME FOR
        NEXT HAND
        220 PLOT 131,91:DRAW OVER 1; SH,SY:REM RUB OUT OLD HAND
        230 LET T1=T:GOTO 120

   |TI ^ASY OBESPE^IWA@T TO^NOSTX 0.01% ILI UHOD NA 10 SEKUND W DENX.  oD-
NAKO,  \TO  WOZMOVNO  PRI  USLOWII,  ^TO WY NE ISPOLXZOWALI OPERATOR BEEP,
WWOD/WYWOD NA MAGNITOFON I PRINTER.  wSE \TI OPERACII UWELI^IWA@T  POGRE[-
NOSTX.

   ~ISLA PEEK 23674, PEEK 23673 I PEEK 23672 WYDELQ@T ADRESA Q^EEK  PAMQTI
KOMPX@TERA  I  ISPOLXZUEMYH  DLQ PODS^ETA 1/50 DOLEJ SEKUNDY.  w KAVDOJ IZ
Q^EEK PODS^ITYWAETSQ SUMMA OT 0 DO 255, POSLE DOSTIVENIQ  WELI^INY  255  W
L@BOJ  IZ Q^EEK, ONA SBRASYWAETSQ W 0.  pERWOJ NA^INAET OTS^ITYWATX Q^EJKA
23672.  kAVDYE 1/50 SEK EE SODERVIMOE UWELI^IWAETSQ NA 1.  kOGDA W  Q^EJKE
NAKOPITSQ WELI^INA, RAWNAQ 255, TO ONA SBRASYWAETSQ W 0, A ZNA^ENIE Q^EJKI
23673 UWELI^ITSQ NA 1.  ~EREZ KAVDYE 256/50 SEK SODERVIMOE \TOJ Q^EJKI PE-
REHODIT  IZ  SOSTOQNIQ 255 W 0, A SODERVIMOE Q^EJKI 23674 UWELI^IWAETSQ NA
1.

   pRI ZNA^ENIQH 0 DLQ Q^EJKI 23674 I 255 DLQ Q^EEK 23673  I  23672  (\TOT
MOMENT NASTUPIT ^EREZ 21 MINUTU) NA[E WYRAVENIE PRIMET ZNA^ENIE:
        (65536*0 + 256*255 + 255)/50=1310.7
NO ZDESX IMEETSQ SKRYTAQ OPASNOSTX.  ~EREZ SLEDU@]U@ 1/50 SEK Q^EJKI BUDUT
SODERVATX SOOTWETSTWENNO SLEDU@]IE ZNA^ENIQ:  1, 0, 0.

   pOKA PROIZWODITSQ WY^ISLENIE WYRAVENIQ, KOMPX@TER MOVET OCENITX  ZNA^E-
NIE  Q^EJKI 23674 KAK 0 DO ZAWER[ENIQ CIKLI^ESKOGO PERENOSA.  w REZULXTATE
POLU^IM:
        (65536*0 + 256*0 + 0)/50=0,
^TO BEZNADEVNO NEWERNO.

   pROSTOE PRAWILO POZWOLQET RE[ITX \TU PROBLEMU:  "SLEDUET WY^ISLQTX  WY-
RAVENIE  DWAVDY  W NEKOTOROJ POSLEDOWATELXNOSTI I ISPOLXZOWATX SOHRANENNYJ
OTWET".  pRIMER:
        10 DEF FN M(X,U)=(H+U+ABS(H-U))/2:REM THE LARGER OF X AND U
        20 DEF FN U()=(65536*REEK 23674 + 256*PEEK 23673 +
        PEEK 23672)/50:REM TIME, MAY BE WRONG
        30 DEF FN T()=FN M(FN U(),FN U()):REM TIME RIGHT

   wY MOVETE IZMENQTX ZNA^ENIQ ^ISLOWYH S^ET^IKOW TAK, ^TOBY POLU^ATX  RE-
ALXNOE  WREMQ  TOGO  MOMENTA, KOGDA KOMPX@TER BYL WKL@^EN.  nAPRIMER, NADO
USTANOWITX 10 ^ASOW WE^ERA.  wY POS^ITALI, ^TO \TO
        10*60*60*50=1800000
50-H DOLEJ SEKUNDY I ZNA^IT
        1800000=65536*27 + 256*119 + 64.

   dLQ PRISWOENIQ TREM Q^EJKAM ZNA^ENIJ 27, 119 I 64 NEOBHODIMO WYPOLNITX:
        POKE 23674,27:POKE 23673,119:POKE 23672,64

   fUNKCIQ INKEY$ (BEZ ARGUMENTOW) S^ITYWAET S KLAWIATURY.  eSLI WY NAVALI
NEKOTORU@ KLAWI[U (ILI <SHIFT>+<KLAWI[U>), REZULXTATOM BUDET SIMWOL, KOTO-
RYJ DAET \TA KLAWI[A W REVIME MARKERA [L], ILI PUSTAQ STROKA.
u K A Z A N I Q                                                  Page 18-3



   wYPOLNITE PROGRAMMU, KOTORAQ ISPOLXZUET \TU FUNKCI@:
        10 IF INKEY$ <>" " THEN GOTO 10
        20 IF INKEY$=" " THEN GOTO 20
        30 PRINT INKEY$;
        40 GOTO 10

   pOMNITE, ^TO FUNKCIQ INKEY$ NE BUDET PODOBNO INPUT VDATX WAS.  eSLI  WY
NE WYPOLNITE WWOD, TO S^ITAJTE, ^TO WA[ [ANS UPU]EN.











                                CHAPTER 19

              p R O G R A M M I R O W A N I E   Z W U K O W




   kRATKOE SODERVANIE:
                BEEP.


   ZX SPECTRUM MOVET WOSPROIZWODITX ZWUKI PRI POMO]I OPERATORA
        BEEP PRODOLVITELXNOSTX,WYSOTA ZWUKA.
GDE 'PRODOLVITELXNOSTX' I 'WYSOTA ZWUKA' - NEKOTORYE  ^ISLOWYE  WYRAVENIQ.
pRODOLVITELXNOSTX  ZADAETSQ  W SEKUNDAH, A WYSOTA W POLUTONAH OT OSNOWNOGO
TONA do:  PRI POLOVITELXNYH ^ISLAH - WY[E NOTY do, A PRI  OTRICACELXNYH  -
NIVE NOTY do.  NA DIAGRAMME PRIWEDENY WSE ZNA^ENIQ NOT ODNOJ OKTAWY:

        ||   |  |  |     ||   |  |  |   ||   ||   |  |  |   ||   |
        ||   |  |  | C || D |  |  | F || G || A |  |    |   ||   |
        ||   |  |  | DB|| EB|  |  | GB|| AB|| BB|  |    |   ||   |
        ||-2 |  |  | 1 || 3 |  |  | 5 || 6 || 10|  |    | 13|| 15|
        --------  |  ----------  |  ---------------  |  ----------
        |    |    |    |    |    |    |    |    |    |    |
        |    |    |    |    |    |    |    |    |    |    |
        | LQ | SI | DO | RE | MI | FA |SOLX| LQ | SI | DO | RE | MI
        | -3 | -1 |  0 |  2 |  4 |  5 |  7 |  9 | 11 | 12 | 14 | 16
        ------------------------------------------------------------
        C        D    E    F    G    A    B    C

   dLQ POLU^ENIQ BOLEE WYSOKIH ILI BOLEE NIZKIH NOT, WY  DOLVNY  PRIBAWITX
ILI OTNQTX 12 DLQ KAVDOJ OKTAWY WWERH ILI WNIZ.  nAPRIMER:
        10 PRINT "FRERE GUSTAV"
        20 BEEP 1,0:BEEP 1,2:BEEP .5,3:BEEP .5,2:BEEP 1,0
        30 BEEP 1,0:BEEP 1,2:BEEP .5,3:BEEP .5,2:BEEP 1,0
        40 BEEP 1,3:BEEP 1,5:BEEP 2,7
        50 BEEP 1,3:BEEP 1,5:BEEP 2,7
        60 BEEP .75,7:BEEP .25,8:BEEP .5,7:BEEP .5,5:BEEP .5,3:
        BEEP .5,2:BEEP 1,0
        70 BEEP .75,7:BEEP .25,8:BEEP .5,7:BEEP .5,5:BEEP .5,3:
        BEEP .5,2:BEEP 1,0
        80 BEEP 1,0:BEEP 1,-5:BEEP 2,0:
        90 BEEP 1,0:BEEP 1,-5:BEEP 2,0

   kOGDA WY ZAPUSTITE \TU PROGRAMMU, WY USLY[ITE POHORONNYJ MAR[ IZ PERWOJ
SIMFONII  mOLXERA, TU EGO ^ASTX, W KOTOROJ GOBLINY HORONQT RYCARQ.  zAPISX
NA^ALA \TOJ MELODII W KL@^E do-MINOR S UKAZANIEM ZNA^ENIJ NOT PRIWEDENA NA
RISUNKE:

p R O G R A M M I R O W A N I E   Z W U K O W                    Page 19-2



        20
        19
        17 ------------------|-----------------|-----------|----------|
        15                   |                 |        |  |        | |
        14 ---------|\-------|--------|\-------|-----|--|--|-----|--|-|
        12          | \      |        | \        |  |  |  |  |  |  |  | |
        10 ------|--|--|-----|-----|--|--|-----|--|--|--|--|--|--|--|-|
        8        |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |
        7 ---|--|--|--|--|--|--|--|--|--|--|--|--|--|--O--|--|--|--O-|
        5    |  |  |  |  |  |   |  |  |  |  |  |  |  *     |  |  *    |
        3 ---|--|--*--|--|--|--|--|--*--|--|--|--*--------|--*-------|
        2    |  *     *  |      |  *     *  |
        0   -*-  -*-   -*-         -*-
             0  2  3  2  0   0  2  3  2  0     3  5  7     3  5  7

   eSLI WY VELAETE ISPOLNITX MELODI@ W DRUGOM KL@^E, WY DOLVNY WSTAWITX  W
WYRAVENIE  NEKOTORU@ PEREMENNU@ KEY.  nAPRIMER, DLQ WTOROJ STROKI PROGRAM-
MY:
        20 BEEP 1,KEY+0:BEEP 1,KEY+2:BEEP .5,KEY+3:
        BEEP .5,KEY+2:BEEP 1,KEY+0

   tEPERX, PRI WYPOLNENII PROGRAMMY WY  MOVETE  PRISWOITX  PEREMENNOJ  KEY
ZNA^ENIQ:   0  - DLQ do-MINOR, 2 - DLQ re-MINOR, 12 - DLQ do-MINOR WERHNEJ
OKTAWY I T.D.  pEREMENNAQ KEY MOVET TAKVE PRINIMATX ZNA^ENIQ KRATNYE  1/2,
1/4 I T.D.

   tAKIM VE OBRAZOM MOVNO IZMENQTX I DLITELXNOSTX ZWU^ANIQ NOT.  nO POMNI-
TE  - KOMPX@TER MOVET ODNOWREMENNO ISPOLNQTX TOLXKO ODNU NOTU, ^TO NE POZ-
WOLQET WOSPROIZWODITX SLOVNYE MELODII.

   pOPROBUJTE ZAPROGRAMMIROWATX  SOBSTWENNU@  MELODI@.   nA^NITE  S  SAMOJ
PRSTOJ.   eSLI  WY  NE  ZNAETE NOTNOJ GRAMMOTY, MOVETE IZU^ITX EE PRQMO NA
KOMPX@TERE.  nAPRIMER, FRAGMENT PROGRAMMY:
        FOR N=0 TO 1000:BEEP .5,N:NEXT N
BUDET ISPOLNQTX POSLEDOWATELXNO NOTY DO PREDELXNO WYSOKOJ I  ZAWER[ITSQ  S
SOOB]ENIEM  OB  O[IBKE 'B'.  wY MOVETE TAKVE PARALLELXNO WYWODITX ZNA^ENIQ
N, ^TOBY ZNATX ZNA^ENIE ISPOLNQEMOJ NOTY.

   fRAGMENT PROGRAMMY:
        10 BEEP .5,0:BEEP .5,2,BEEP .5,4:BEEP .5,5:BEEP .5,7:
        BEEP .5,9:BEEP .5,11:BEEP .5,12:STOP
ISPOLNQET GAMMU do-MINOR, W KOTOROJ ISPOLXZU@TSQ ^ISTYE NOTY  OT  SREDNEGO
do  DO WERHNEGO do.  oDNAKO W \TOJ GAMME NEESTESTWENNYE INTERWALY, SKRIPA^
BY ISPOLNIL EE TAK:
        20 BEEP .5,0:BEEP .5,2.039:BEEP .5,3.86:BEEP .5,4.98:
        BEEP .5,7.02:BEEP .5,8.84:BEEP .5,10.88:BEEP .5,10.88
        BEEP .5,12:STOP

   |TI VE INTERWALY BUDUT ESTESTWENNYMI DLQ  GAMMY,  ISPOLNQEMOJ  W  L@BOM
KL@^E, OTLI^NOM OT do.

   nEKOTORAQ MUZYKA, NAPRIMER INDIJSKAQ, ISPOLXZUET INTERWALY MENX[IE  ^EM
POLUTON.   wY  MOVETE  BEZ OSOBOGO TRUDA ZAPROGRAMMIROWATX \TO W OPERATORE
BEEP.  nAPRIMER DLQ ZWUKA, NA ^ETWERTX TONA WY[E SREDNEGO do, NADO UKAZATX
ZNA^ENIE WYSOTY ZWUKA RAWNOE .5.

   wY MOVETE SDELATX KLAWIATURU KOMPX@TERA KLAWI[AMI MUZYKALXNOGO  INSTRU-
MENTA, WYPOLNIW PEREKL@^ENIE:
        POKE 23609,255
WTOROE ^ISLO ZDESX OPREDELQET PRODOLVITELXNOSTX NAHOVDENIQ W \TOM  SOSTOQ-
NII (POPROBUJTE IZMENQTX EGO OT 0 DO 255).
p R O G R A M M I R O W A N I E   Z W U K O W                    Page 19-3



   mOVNO TAKVE WYWESTI MUZYKU NA WNE[NIE USTROJSTWA, PODKL@^AEMYE K WYHOD-
NYM RAZXEMAM 'MIC' I 'EAR'.











                                CHAPTER 20

    w N E [ N Q Q   P A M Q T X   N A   M A G N I T N O J   L E N T E




   kRATKOE SODERVANIE:
                LOAD, SAVE, VERIFY, MERGE


   oSNOWNYE KOMANDY RABOTY S MAGNITOFONOM SAVE, LOAD I VERIFY UVE RASSMAT-
RIWALISX  WO  WWODNOM OPISANII.  wY MOGLI WIDETX, ^TO LOAD ZATIRAET STARU@
PROGRAMMU W PAMQTI KOMPX@TERA PRI ZAGRUZKE NOWOJ PROGRAMMY S LENTY.   eSTX
DRUGAQ  KOMANDA  MERGE,  NE  DELA@]AQ  \TOGO.  |TA KOMANDA STIRAET LI[X TE
STROKI STAROJ PROGRAMMY ILI PEREMENNYE, KOTORYE SOWPADA@T S NOMERAMI STROK
NOWOJ  PROGRAMMY ILI IMENAMI NOWYH PEREMENNYH.  pROGRAMMU DICE ("IGRALXNAQ
KOSTX") IZ GLAWY 11 ZAPI[EM NA LENTU POD IMENEM "DICE".  a TEPERX WWEDEM I
WYPOLNIM SLEDU@]U@ PROGRAMMU:
        1 PRINT 1
        2 PRINT 2
        10 PRINT 10
        20 LET X=20
A ZATEM OSU]ESTWIM EE PROWERKU, ZAMENIW KOMANDU VERIFY "DICE"  NA  KOMANDU
MERGE  "DICE".  wY UWIDETE, ^TO STROKI 1 I 2 SOHRANQ@TSQ, A STROKI 10 I 20
ZAMENQ@TSQ NA STROKI S \TIMI NOMERAMI IZ PROGRAMMY  "DICE",  PEREMENNAQ  X
TOVE SOHRANQETSQ (PROWERXTE PRINT X).

   tEPERX WY ZNAETE ^ETYRE OPERATORA DLQ RABOTY S KASSETNYM MAGNITOFONOM:

   SAVE - ZAPISYWAET PROGRAMMU I PEREMENNYE NA MAGNTOFON;

   VERIFY - PROWERQET PROGRAMMU I PEREMENNYE W PAMQTI KOMPX@TERA PO IH KO-
PII NA LENTE;

   LOAD - O^I]AET PAMQTX KOMPX@TERA OT WSEH PROGRAMM I ZAGRUVAET W NEE NO-
WYE, S^ITANNYE S MAGNITOFONA;

   MERGE - PODOBNA LOAD, TOLXKO NE O^I]AET WS@ PAMQTX, A LI[X ZAMENQET  TE
STROKI  PROGRAMMY  ILI  PEREMENNYE, U KOTORYH SOWPADA@T NOMERA ILI IMENA S
TAKIMI VE NA MAGNITNOJ LENTE.

   zA KAVDOJ IZ \TIH KOMAND SLEDUET KL@^EWOE SLOWO - IMQ PROGRAMMY,  OPRE-
DELENNOE  PERWONA^ALXNO  W  KOMANDE  SAVE.   pOKA KOMPX@TER I]ET UKAZANNU@
PROGRAMMU, ON WYWODIT IMENA WSEH PROGRAMM, UVE PRO^ITANNYH S LENTY.   iME-
@TSQ DWE DOPOLNITELXNYE WOZMOVNOSTI DLQ ^TENIQ FAJLA S LENTY:

   1) w OPERATORAH VERIFY, LOAD I MERGE WMESTO IMENI MOVNO UKAZATX  PUSTU@
STROKU.  tOGDA BUDET WZQT PERWYJ WSTRETIW[IJSQ FAJL.

   2) s ISPOLXZOWANIEM OPERATORA
        SAVE IMQ LINE STROKA
pROGRAMMA ZAPI[ETSQ NA LENTU TAK, ^TO KOGDA ONA BUDET WNOWX S^ITANA PO KO-
MANDE  LOAD  (NO NE MERGE), ONA AWTOMATI^ESKI USTANOWITSQ NA STROKU S UKA-
ZANNYM NOMEROM I SAMA INICIIRUET SWOE WYPOLNENIE.  kROME TEKSTOW  PROGRAMM
NA LENTU MOVNO ZAPISYWATX TAKVE MASSIWY ILI DANNYE.
w N E [ N Q Q   P A M Q T X   N A   M A G N I T N O J   L E N T EPage 20-2



   zAPISATX NA LENTU MASSIW WY MOVETE, ISPOLXZUQ KOMANDU SAVE  DATA  TAKIM
OBRAZOM:
        SAVE IMQ DATA <IMQ MASSIWA>()
ZDESX 'IMQ' - IMQ, PRISWAIWAEMOE FAJLU DANNYH, KOTOROE MOVET  SOSTOQTX  IZ
BUKW ILI BUKW I SIMWOLA "$".  dLQ STROKOWYH DANNYH \TO TREBOWANIE ZDESX NE
WAVNO.  zAGRUVA@TSQ TAKIE DANNYE PO KOMANDE:
        LOAD IMQ DATA <IMQ MASSIWA>()

   nELXZQ ISPOLXZOWATX OPERATOR MERGE.

   eSLI ZAGRUVAETSQ STROKOWYJ MASSIW, TO, POSLE OBNARUVENIQ EGO NA  LENTE,
KOMPX@TER WYDAET:  "CHARACTER ARRAY:" I DALEE IMQ \TOGO MASSIWA.

   sU]ESTWUET WOZMOVNOSTX ZAPISI NA MAGNITNU@ LENTU I OTDELXNYH BAJTOW IN-
FORMACII.   tAK, NAPRIMER, \TO MOVET BYTX TELEWIZIONNAQ KARTINKA ILI OPRE-
DELQEMYE POLXZOWATELEM GRAFI^ESKIE SIMWOLY I T.D.  dLQ \TOGO  ISPOLXZUETSQ
KL@^EWOE SLOWO CODE, NAPRIMER:
        SAVE "PICTURE" CODE 16384,6912
zDESX PERWOE ^ISLO - ADRES PERWOGO BAJTA W OBLASTI PAMQTI, GDE RASPOLOVENY
DANNYE, A WTOROE ^ISLO - KOLI^ESTWO BAJTOW, KOTOROE NUVNO ZAPISATX NA LEN-
TU (6912 - OB'EM W BAJTAH ODNOGO \KRANA, A 16384 - ADRES \KRANA W PAMQTI).
zAGRUVA@TSQ \TI DANNYE PO KOMANDE:
        LOAD "PICTURE" CODE
pOSLE CODE MOVNO UKAZATX ^ISLA:
        LOAD "PICTURE" CODE NA^ALO,DLINA

   'dLINA' - OPREDELQET SKOLXKO DANNYH (W BAJTAH) NADO ZAGRUZITX S  LENTY.
eSLI  DLINA  BOLX[E,  ^EM ZAPISANO NA LENTU, TO WYDAETSQ SOOB]ENIE 'R TAPE
LOADING ERROR' (O[IBKA ZAGRUZKI S LENTY).  |TOT PARAMETR MOVNO OPUSTITX  I
TOGDA KOMPX@TER S^ITAET WSE DANNYE, KOTORYE ZAPISANY NA LENTE

   'nA^ALO' - UKAZYWAET ADRES, S KOTOROGO DOLVNY ZAGRUVATXSQ DANNYE I  MO-
VET  BYTX  OTLI^NYM OT ADRESA, UKAZANNOGO W SAVE.  wY MOVETE OPUSKATX \TOT
PARAMETR W KOMANDE LOAD.

   wYRAVENIE CODE 16384,6912 MOVNO ZAMENITX NA SCREEN$:
        SAVE "PICTURE" SCREEN$  I ZATEM
        LOAD "PICTURE" SCREEN$

   |TO TOT SLU^AJ, KOGDA VERIFY NE RABOTAET.  w OSTALXNYH  SLU^AQH  VERIFY
MOVNO ISPOLXZOWATX WEZDE, GDE ISPOLXZUETSQ SAVE.

   w ZAKL@^ENIE SKAVEM, ^TO WEZDE, GDE UKAZYWAETSQ IMQ FAJLA NA LENTE, IS-
POLXZU@TSQ  TOLXKO PERWYE 10 SIMWOLOW.  sU]ESTWUET ^ETYRE TIPA INFORMACII,
KOTORYE MOGUT BYTX ZAPISANY NA LENTU:
        - PROGRAMMY I PEREMENNYE (SOWMESTNO);
        - ^ISLOWYE MASSIWY;
        - STROKOWYE MASSIWY;
        - NEPOSREDSTWENNO BAJTY.

   kOGDA KOMANDY VERIFY, LOAD I MERGE OSU]ESTWLQ@T POISK DANNYH NA  LENTE,
ONI WYWODQT NA \KRAN WSE S^ITANNYE IMI S LENTY IMENA S UKAZANIEM TIPA DAN-
NYH W WIDE "PROGRAM:", "NUMBER ARRAY:", "CHARACTER ARRAY:" ILI "BYTES:".

   eSLI IMQ - PUSTAQ STROKA, \TI KOMANDY BERUT PERWYJ WSTRETIW[IJSQ FAJL S
UKAZANNYM TIPOM.

   kOMANDA SAVE SLUVIT DLQ ZAPISI INFORMACII NA LENTU POD ZADANNYM IMENEM.
sOOB]ENIE  OB O[IBKE 'F' WYDAETSQ, ESLI WMESTO IMENI UKAZANA PUSTAQ STROKA
ILI ^ISLO SIMWOLOW W IMENI 11  I  BOLEE.   SAVE  WSEGDA  WYDAET  SOOB]ENIE
"START TAPE, THEN PRESS ANY KEY" ("ZAPUSTI MAGNITOFON I NAVMI L@BU@ KLAWI-
[U"), I VDET NAVATIQ, POSLE ^EGO ZAPISYWAET DANNYE NA LENTU.
w N E [ N Q Q   P A M Q T X   N A   M A G N I T N O J   L E N T EPage 20-3



   1) pROGRAMMA I PEREMENNYE.
        SAVE IMQ LINE STROKA
ZAPISYWAET PROGRAMMU NA LENTU TAKIM OBRAZOM, ^TO POSLEDU@]AQ KOMANDA  LOAD
AWTOMATI^ESKI WSTAWLQET W PROGRAMMU
        GOTO STROKA
I NA^INAET EE WYPOLNQTX.

   2) bAJTY.
        SAVE IMQ CODE NA^ALO,DLINA
ZAPISYWAET NA LENTU 'DLINU' BAJT, NA^INAQ S ADRESA 'NA^ALO'.
        SAVE NAME SCREEN$       \KWIWALENTNO
        SAVE NAME CODE 16384,6912
I ZAPISYWAET ODIN TELEWIZIONNYJ \KRAN.

   3) mASSIWY.
        SAVE IMQ DATA BUKWA()   ILI
        SAVE IMQ DATA BUKWA$()
ZAPISYWA@T ^ISLOWOJ ILI STROKOWYJ MASSIW.

   kOMANDA VERIFY PROWERQET (SRAWNIWAET) INFORMACI@ W PAMQTI I  NA  LENTE.
mOVET WYDAWATX SOOB]ENIE
        'R TAPE LOADING ERROR'

   1) pROGRAMMA I PEREMENNYE.
        VERIFY IMQ

   2) bAJTY.
        VERIFY IMQ CODE NA^ALO,DLINA

   eSLI DANNYH W FAJLE 'IMQ' BOLEE, ^EM UKAZANO W 'DLINA', TO WYDAETSQ SO-
OB]ENIE OB O[IBKE 'R'.

        VERIFY IMQ CODE NA^ALO
zDESX OSU]ESTWLQETSQ SRAWNENIE BAJTOW W FAJLE 'IMQ' S  DANNYMI  W  PAMQTI,
NA^INAQ S ADRESA 'NA^ALO'.

        VERIFY IMQ CODE
|TOT OPERATOR OSU]ESTWLQET SRAWNENIE DANNYH NA LENTE S DANNYMI  W  PAMQTI,
NA^INAQ S ADRESA, S KOTOROGO ZAPISYWALSQ NA LENTU PERWYJ BAJT DANNYH.

        VERIFY NAME SCREEN$     ILI \KWIWALENTNO
        VERIFY NAME CODE 16384,6912
ODNAKO, \TO BUDET PROWERKA UVE PROWERENNOGO FAJLA.

   3) mASSIWY.
        VERIFY IMQ DATA BUKWA()
        VERIFY IMQ DATA BUKWA$()

   kOMANDA LOAD ZAGRUVAET NOWYE DANNYE S LENTY, STIRAQ STARYE DANNYE W PA-
MQTI.

   1) pROGRAMMA I PEREMENNYE.
        LOAD IMQ
MOVET WYDAWATX SOOB]ENIE '4 OUT OF MEMORY', ESLI NET MESTA DLQ NOWOJ PROG-
RAMMY.  w \TOM SLU^AE STARAQ PROGRAMMA NE UNI^TOVAETSQ.

   2) bAJTY.
        LOAD IMQ CODE NA^ALO,DLINA
eSLI DANNYH W FAJLE 'IMQ' BOLX[E, ^EM UKAZANO W 'DLINA', TO WYDAETSQ SOOB-
]ENIE 'R'.

        LOAD IMQ CODE NA^ALO
PROIZWODIT ZAGRUZKU DANNYH IZ 'IMQ' W PAMQTX, NA^INAQ S ADRESA 'NA^ALO'.
w N E [ N Q Q   P A M Q T X   N A   M A G N I T N O J   L E N T EPage 20-4



        LOAD IMQ CODE
ZAGRUVAET DANNYE PO ADRESU, S KOTOROGO ZAPISYWALISX DANNYE NA LENTU W FAJL
"NAME".

   3) mASSIWY.
        LOAD IMQ DATE BUKWA()   ILI
        LOAD IMQ DATE BUKWA$()
UNI^TOVAET W PAMQTI MASSIW S IMENEM 'BUKWA' ILI 'BUKWA$', FORMIRUET  NOWYJ
MASSIW  I PEREPISYWAET TUDA DANNYE IZ FAJLA 'IMQ'.  mOVET WYDATX SOOB]ENIE
'4 OUT OF MEMORY' PRI NEHWATKE PAMQTI POD MASSIW.  w  \TOM  SLU^AE  STARYJ
MASSIW NE UNI^TOVAETSQ.

   kOMANDA MERGE ZAGRUVAET NOWYE DANNYE S LENTY, NE UNI^TOVAQ STARYE.

   1) pROGRAMMA I PEREMENNYE.
        MERGE IMQ
DOPISYWAET PROGRAMMU 'IMQ' K NEKOTOROJ PROGRAMME,  NAHODQ]EJSQ  W  PAMQTI.
mOVET WYDATX SOOB]ENIE:  '4 OUT OF MEMORY'.

   2) bAJTY.

   nE PODDERVIWAETSQ.

   3) mASSIWY.

   nE PODDERVIWAETSQ.


   primer:  ZAPISATX NA LENTU INFORMACI@ O 21-M OPREDELENNOM POLXZOWATELEM
SIMWOLE.
        SAVE "CHESS" CODE USR"A",21*8

   oBRATNAQ ZAGRUZKA
        LOAD "CHESS" CODE ILI
        LOAD "CHESS" CODE USR"A"











                                CHAPTER 21

                    u S T R O J S T W O   P E ^ A T I




   kRATKOE SODERVANIE:
                LPRINT, LLIST, COPY.


   |TA GLAWA OPISYWAET OPERATORY BASIC, NEOBHODIMYE DLQ RABOTY S PRINTEROM
ZX.

   dWA OPERATORA LPRINT I LLIST PODOBNY OPERATORAM PRINT I LIST, NO S  TOJ
LI[X  RAZNICEJ,  ^TO ONI RABOTA@T NE S TELEWIZOROM, A S PRINTEROM.  pOPRO-
BUJTE DLQ PRIMERA WYPOLNITX SLEDU@]U@ PROGRAMMU:
        10 LPRINT "THIS PROGRAM"
        20 LLIST
        30 LPRINT "PRINTS OUT THE CHARACTER SET."
        40 FOR N=32 TO 255
        50 LPRINT CHR$ N
        60 NEXT N

   oPERATOR COPY POZWOLQET RASPE^ATATX  \KRAN  TELEWIZORA.   nAPRIMER,  PO
LIST  TEKST  PROGRAMMY  BUDET  WYWEDEN NA \KRAN, A ZATEM PO COPY EGO MOVNO
RASPE^ATATX NA PRINTERE.

   wY WSEGDA MOVETE PREKRATITX WYWOD NA PE^ATX WYDAW BREAK (<CS>+<SPACE>).

   eSLI WY ZADALI OPERATORY UPRAWLENIQ PRINTEROM BEZ PODKL@^ENNOGO  REALX-
NOGO  USTROJSTWA, TO WYWODA PROSTO NE BUDET I WYPOLNENIE PROGRAMMY PRODOL-
VITXSQ SO SLEDU@]EGO OPERATORA.

   tEPERX POPROBUJTE WYPOLNITX TAKU@ PROGRAMMU:
        10 FOR N=31 TO 0 STEP -1
        20 PRINT AT 31-N,N; CHR$(CODE"0"+N);
        30 NEXT N
wY POLU^ITE POSLEDOWATELXNOSTX SIMWOLOW, RASPOLOVENNYH PO DIAGONALI  \KRA-
NA,  NA^INAQ  S PRAWOGO WERHNEGO UGLA.  tEPERX ZAMENIM W STROKE 20 'AT 31-
N,N' NA 'TAB N', PROGRAMMA BUDET RABOTATX TAKVE, KAK I PREVDE.  tEPERX ZA-
MENIM W STROKE 20 PRINT NA LPRINT I ZAMETIM, ^TO RAZWERTKI PO DIAGONALI NE
POLU^AETSQ.  a ZAMENIW TEPERX 'TAB N' NA 'AT 31-N,N' I SOHRANIW LPRINT PO-
LU^IM PO ODNOMU SIMWOLU NA STROKU, ^TO I TREBOWALOSX POLU^ITX.

   wOOB]E, PRI PE^ATI PEREWOD STROKI OSU]ESTWLQETSQ W SLEDU@]IH SLU^AQH:
        A) pRI ZAPOLNENII BUFERA STROKI;
        B) pOSLE LPRINT, ESLI \TO NE KONEC OPERATORA I W NEM
           WSTRETILASX ZAPQTAQ ILI TO^KA S ZAPQTOJ;
        W) eSLI ZAPQTAQ, APOSTROF ILI TAB TREBU@T NOWOJ STROKI;
        G) pRI OKON^ANII PROGRAMMY, ESLI OSTALISX NEWYWEDENNYE DANNYE.
                                                                                                                                                                                                                                                               