(c)  騭, ᪢

ZXNet : 500:95/462.53
E-mail: bestview@mtu-net.ru
WWW   : http://www.ivr.da.ru

    ணࠬ-  ࠡ  BIN, DEC, HEX-᫠
    

(".  " 1/2002)
 ᫥ ।஢: 22.02.2003.




     ॡ ஢ ᫥,   
 ⮫쪮  ᫠,     ⭠,
  㦭 ॢ ᫮   ⥬ ᫥ 
.   ᤥ?
     ᨪ  ࠡ ⮫쪮  묨 ᫠ 
 楫묨 묨 ᫠   0-65535 ( 
㭪樨 BIN).  ᥬ ZX ASM (   㣨
ᥬ)  ஥ , ন騩 
 ⥬ ᫥,    ࠡ   楫묨
᫠   0-65535.   , ᫨ ᫠ ஡
 室  । ⮣ ?
    諮  ᢮ ணࠬ-, 
᫥騬 ﬨ:
 - ࠡ  ᫠  筮, 筮  ⭠筮
   ⥬ ᫥   뢮 १  
     ⥬;
 -  ।⠢ ᥫ -   ⠭⭮ ᨪ:
    -1.7014118*10^38  +1.7014118*10^38;
 - 㯭  㭪樨 ᨪ  ⠭ PI;
 -  ᯮ짮 㭪権, ।
   짮⥫;
 - ᫥ ᫥ १ ࠭  ᯥ樠쭮
   ६,   ᯮ짮  ᫥ ᫥饣
   ࠦ;
 -  9 祥   ࠭ १⮢ ᫥ 
   ᯮ짮   쭥 ᫥.


 짮⥫


    ᫥ ᪠  塞 ࠦ 筮 ⠪ ,
 ᫨   﫨   ᨪ.   ᥫ 
ᯮ짮   ⥬ ᫥.  ᫠
। ᨬ "%", ⭠ - ᨬ "#".
㪢 A-F, ᯮ㥬   ⭠ ᥫ,
   ய묨, ⠪  묨. 
ᯮ㥬 㭪権,  ⠪  ⠭ PI 室
 易⥫쭮 ⮪,    㪢.

    ਬ:

>>> (8.15-%1101.0111)/#ab5.07
    -.0019290213

>>> %.1011^2*SIN(#3c/180*PI)
    0.40933232

(   ">>>" । ப 砥,   ப
 짮⥫).

     㬮砭 १ ⠥  筮 , 
ଠ 뢮  .  ⮣ । 塞
ࠦ   ᯥ樠 ,  
ᨬ "=", ᫥ ண ᫥ ᨬ "#", "%"  "d".
 "#" 㪠뢠,  १   ⠭ 
⭠筮 , "%" -  筮,  "d" ( "D",
ॣ  ) -  筮.  ⤥ 
塞 ࠦ ஡.
     㪠 ᫥ "=" ࠧ ᪮쪮 ᮮ⢥
ᨬ (  浪), ⮡ १ ⠫ ࠧ 
᪮쪨 ⥬ ᫥.

    ਬ:

>>> =% 16/2.5
    %1.10011001100110011001100110011*2^2

>>> =%#d 17*#.5E
    %1.100011111*2^2
    6.2421875
    #6.3E

      塞 ࠦ  ⭮ 砥  
 ᫮,   ⮩   ८ࠧ뢠
᫠   ⥬ ᫥  .

    ਬ:

>>> =# PI
    #3.243F6A88

>>> =%d #4C5A
    %100110001011010
    19546

    ⢨  "=" ⭮   ⥪饬 塞
ࠦ.  㣠, 宦    - "==",  ⠪
 ࠬࠬ.  ⠭ ० 뢮 " 㬮砭".
 ० ᯮ   १⮢ ᫥ 
᫥ ࠦ (஬ ,    "=" 
 㣮 ଠ 뢮). ਬ, ᫨  , ⮡
१ ᥣ ⠫  ⭠筮 , 
  "==#",  ⮣ 㦥  㦭 㤥 । 
ࠦ ⠢  "=#".  "=="   
 । ࠦ, ⠪  ᠬ  ᥡ.

    ਬ:

>>> ==%

>>> ==%# 1+2
    %11
    #3

    ᫥ ᫥ १ 頥  ६ L,
  ᯮ짮   ᫥饣 ࠦ.
  ॣ 㪢   ६ ᨪ  ࠧ砥,
   "L", ⠪  "l".

    ਬ:

>>> 13+#A
    23
>>> L+10
    33

      㯭  祥 , 砥
M(1)-M(9).    ࠭ १ ᫥, ⮡
ᯮ짮   ᫥ ᫥. ⮡ 
祭  祩, 㦭  "M(x)=" ( x -  祩)
। 塞 ࠦ ( ᫥  "=", "==", ᫨ 
). M(1)-M(9) ⠪  ६묨 ᨪ, ⠪ 
㪢 "M"       ய᭮, ⠪  筮.

    ਬ:

>>> (1)=4
    4
>>> =# (2)=3*(1)
    #C
>>> (2)+3
    15

      । ᢮ 㭪樨  ᯮ짮  
᫥. , ਬ,  㦭 ᫨ 祭
㭪樨 f(x,y)=2x^2-4xy+y^2  ᪮쪨 窠. ᫥ 㧪
ணࠬ    ⠪ ப:

    5 DEF FN F(X,Y)=2*X*X-4*X*Y+Y*Y

    ⨢ ணࠬ,   ᯮ짮  㭪 
᫥ 筮 ⠪ ,    ⠭ 㭪
ᨪ. ।  㭪樨 㪠뢠 "FN" - ਧ ⮣,
  । 짮⥫.  祢 ᫮ 室
 ⮪,    㪢.

    ਬ:

>>> FN F(3,4)
    -14
>>> =# FN F(%1101.0011,-12)
    #4.64D2*16^2

    ᥣ  । 26 ࠧ 㭪権 (   A
 Z),       26 ࠬ஢ (⠪  A
 Z). ப  ।ﬨ 㭪権  室  
 ணࠬ,  易⥫쭮  砫.
    ᫨  । 㭪,  ணࠬ 㦥
饭,   ७  訡  
ࠦ (ਬ,   ப,  
⢥ ஡), ᫥ 祣 믮 ணࠬ
,   ᬮ  ப  । 㦭
㭪樨.

    ⮡  ࠭  । ᫥, 
 "Enter"   ࠦ.
       "Q" ( "q")    TR-DOS.
 ⭮    "RETURN".

     ᪠  ࠡ⪥ 訡 権. 訡,
易  ࠢ 㪠 ࠬ஢   "=" 
"==",  ⠪ 訡     ⭠
ᥫ ࠡ뢠  ணࠬ.   ⠪ 訡
ࠧ 㪮 ᨣ  뢮 ᮮ饭 "Error in
expression".
    ⠫ 訡 ࠡ뢠 ।⢥
஬ ᨪ.    믮
ணࠬ ⠭  뢮 ᮮ⢥饣 ᮮ饭
("Number too big", "Invalid argument"  ..). ᫥ ⮣ 
த ࠡ  ணࠬ   १ 
"RUN".

    ! - 訡   ᨪ, ᫨  ᫥
ࠦ  㤥 ᫨, 祬 ࠢ -65535-1, १
 ࠢ!


⨭ ணࠬ


    10 LET L=0: LET AdrL=( PEEK 23627)+( PEEK 23628)*256+1:
       REM L is first variable in program!
    20 DIM R(5): DIM M(9)
    30 LET AutoBin=0: LET AutoDec=1: LET AutoHex=0
    40 REM -= CLS, PRINT HEADER =-
    50 BORDER 0: INK 6: PAPER 0: CLS
    60 PRINT AT 0,5;"Bin,Dec,Hex Calculator": PRINT AT 1,2;"by
       Ivan Roshin, Moscow, 2001": PRINT
    70 REM -----= MAIN LOOP =-----
    80 INPUT a$
    90 IF a$="" THEN GO TO 40
   100 IF (a$ <> "Q" AND a$ <> "q") THEN GO TO 130
   110 CLS : INK 7: PRINT "Press <RETURN> to continue...":
       RANDOMIZE USR 15616
   120 GO TO 40
   130 INK 5: PRINT a$
   140 IF a$(1) <> "=" THEN GO TO 350
   150 LET a$=a$(2 TO LEN (a$))
   160 IF a$="" THEN GO TO 1420
   170 IF a$(1)="=" THEN LET a$=a$(2 TO LEN (a$)): GO TO 270
   180 REM ----= COMMAND "=" =----
   190 LET OutBin=0: LET OutDec=0: LET OutHex=0
   200 IF a$="" THEN GO TO 1420
   210 LET c$=a$(1): LET a$=a$(2 TO LEN (a$))
   220 IF c$="%" THEN LET OutBin=1: GO TO 200
   230 IF (c$="D" OR c$="d") THEN LET OutDec=1: GO TO 200
   240 IF c$="#" THEN LET OutHex=1: GO TO 200
   250 IF c$=" " THEN GO TO 370
   260 GO TO 1420
   270 REM ---= COMMAND "==" =---
   280 LET AutoBin=0: LET AutoDec=0: LET AutoHex=0
   290 IF a$="" THEN GO TO 70
   300 LET c$=a$(1): LET a$=a$(2 TO LEN (a$))
   310 IF c$="%" THEN LET AutoBin=1: GO TO 290
   320 IF (c$="D" OR c$="d") THEN LET AutoDec=1: GO TO 290
   330 IF c$="#" THEN LET AutoHex=1: GO TO 290
   340 IF c$ <> " " THEN GO TO 1420
   350 REM -= SET OUTPUT FORMAT =-
   360 LET OutBin=AutoBin: LET OutDec=AutoDec: LET
       OutHex=AutoHex
   370 REM ------= Memory =------
   380 LET Memory=0
   390 IF (a$(1) <> "M" AND a$(1) <> "m") THEN GO TO 420
   400 IF LEN (a$)<6 THEN GO TO 420
   410 IF (a$(2)="(" AND a$(4)=")" AND a$(5)="=") THEN LET
       Memory= VAL (a$(3)): LET a$=a$(6 TO LEN (a$))
   420 REM --= BIN,HEX -> DEC =--
   430 LET Begin=1
   440 IF LEN (a$)<Begin THEN GO TO 660
   450 IF a$(Begin)="%" THEN LET N=2: GO TO 480
   460 IF a$(Begin)="#" THEN LET N=16: GO TO 480
   470 LET Begin=Begin+1: GO TO 440
   480 LET Digit=0: LET End=Begin: LET PointD=0: LET K=1/N
   490 LET End=End+1
   500 IF LEN (a$)<End THEN GO TO 620
   510 GO SUB 1440: IF D=-1 THEN GO TO 540
   520 IF PointD=0 THEN LET Digit=Digit*N+D: GO TO 490
   530 LET Digit=Digit+D*K: LET K=K/N: GO TO 490
   540 IF a$(End) <> "." THEN GO TO 570
   550 IF PointD=1 THEN GO TO 1420
   560 LET PointD=1: GO TO 490
   570 IF End=Begin+1 THEN GO TO 1420
   580 LET b$= STR$ (Digit)
   590 IF Begin=1 THEN LET a$= b$+a$(End TO LEN (a$)): GO TO
       610
   600 LET a$=a$(1 TO Begin-1)+b$+a$(End TO LEN (a$))
   610 LET Begin=Begin+ LEN (b$): GO TO 450
   620 IF End=Begin+1 THEN GO TO 1420
   630 LET b$= STR$ (Digit)
   640 IF Begin=1 THEN LET a$=b$: GO TO 660
   650 LET a$=a$(1 TO Begin-1)+b$
   660 REM -----= CALCULATE =-----
   670 LET L= VAL (a$)
   680 IF Memory <> 0 THEN LET M(Memory)=L
   690 REM ---= PRINT RESULT =---
   700 INK 7
   710 REM ------= BINARY =------
   720 IF OutBin=0 THEN GO TO 970
   730 IF PEEK AdrL <> 0 THEN GO TO 830
   740 LET Result= PEEK (AdrL+2)+ PEEK (AdrL+3)*256: LET b$=""
   750 IF PEEK (AdrL+1)=255 THEN LET Result=65536-Result:
       PRINT "-";
   760 PRINT "%";
   770 LET j=32768
   780 IF Result >= j THEN LET Result=Result-j: LET b$=b$+"1":
       GO TO 800
   790 LET b$=b$+"0"
   800 IF j>1 THEN LET j= INT (j/2+0.5): GO TO 780
   810 IF ( LEN (b$)>1 AND b$(1)="0") THEN LET b$=b$(2 TO LEN
       (b$)): GO TO 810
   820 PRINT b$: GO TO 970
   830 IF PEEK (AdrL+1)>128 THEN PRINT "-";
   840 PRINT "%1.";
   850 LET E= ( PEEK AdrL)-128: LET b$=""
   860 FOR i=1 TO 4
   870 LET byte= PEEK (Adrl+i): IF (i=1 AND byte >= 128) THEN
       LET byte=byte-128
   880 LET j=128: IF i=1 THEN LET j=64
   890 IF byte >= j THEN LET byte=byte-j: LET b$=b$+"1": GO TO
       910
   900 LET b$=b$+"0"
   910 IF j>1 THEN LET j= INT (j/2+0.5): GO TO 890
   920 NEXT i
   930 IF ( LEN (b$)>1 AND b$( LEN (b$))="0") THEN LET b$=b$(1
       TO ( LEN (b$)-1)): GO TO 930
   940 PRINT b$;
   950 IF E=1 THEN PRINT : GO TO 970
   960 PRINT "*2^";E-1
   970 REM ------= DECIMAL =------
   980 IF OutDec=0 THEN GO TO 1000
   990 PRINT L
  1000 REM ----= HEXADECIMAL =----
  1010 IF OutHex=0 THEN GO TO 70
  1020 IF PEEK AdrL <> 0 THEN GO TO 1130
  1030 LET Result= PEEK (AdrL+2)+ PEEK (AdrL+3)*256: LET b$=""
  1040 IF PEEK (AdrL+1)=255 THEN LET Result=65536-Result:
       PRINT "-";
  1050 PRINT "#";
  1060 LET j=4096
  1070 LET Digit= INT (Result/j): LET Result=Result-Digit*j
  1080 IF Digit <10 THEN LET c$= STR$ (Digit): LET b$=b$+c$:
       GO TO 1100
  1090 LET c$= CHR$ (Digit-10+ CODE "A"): LET b$=b$+c$
  1100 IF j>1 THEN LET j= INT (j/16+0.5): GO TO 1070
  1110 IF ( LEN (b$)>1 AND b$(1)="0") THEN LET b$=b$(2 TO LEN
       (b$)): GO TO 1110
  1120 PRINT b$: GO TO 70
  1130 IF PEEK (AdrL+1)>128 THEN PRINT "-";
  1140 PRINT "#";
  1150 LET E= ( PEEK AdrL)-128: LET b$=""
  1160 LET Ost= ABS E - INT ( ABS E/4)*4
  1170 LET Shift=0: IF Ost=0 THEN GO TO 1200
  1180 IF E<0 THEN LET Shift=Ost: GO TO 1200
  1190 LET Shift=4-Ost
  1200 FOR i=1 TO 4: LET R(i)= PEEK (AdrL+i): NEXT i: LET
       R(5)=0: IF R(1)<128 THEN LET R(1)=R(1)+128
  1210 FOR i=1 TO Shift
  1220 LET Carry=0
  1230 FOR j=1 TO 5
  1240 LET Temp=0: IF R(j)/2 <> INT (R(j)/2) THEN LET Temp=128
  1250 LET R(j)=Carry+ INT (R(j)/2)
  1260 LET Carry=Temp
  1270 NEXT j: NEXT i
  1280 FOR i=1 TO 5
  1290 LET byte= R(i)
  1300 LET j=16
  1310 LET Digit= INT (byte/j): LET byte=byte-Digit*j
  1320 IF Digit <10 THEN LET c$= STR$ (Digit): GO TO 1340
  1330 LET c$= CHR$ (Digit-10+ CODE "A")
  1340 LET b$=b$+c$: IF LEN b$=1 THEN LET b$=b$+"."
  1350 IF j>1 THEN LET j= INT (j/16+0.5): GO TO 1310
  1360 NEXT i
  1370 IF ( LEN (b$)>3 AND b$( LEN (b$))="0") THEN LET b$=b$(1
       TO ( LEN (b$)-1)): GO TO 1370
  1380 PRINT b$;
  1390 IF E-4+Shift=0 THEN PRINT : GO TO 70
  1400 PRINT "*16^";(E-4+Shift)/4
  1410 GO TO 70
  1420 REM -------= ERROR =-------
  1430 INK 7: PRINT "Error in expression": BEEP .1,0: GO TO 70
  1440 REM -= CONVERT ONE DIGIT =-
  1450 LET D=-1
  1460 IF N=16 THEN GO TO 1490
  1470 IF (a$(End)="0" OR a$(End)="1") THEN LET D= VAL
       (a$(End)): RETURN
  1480 RETURN : REM WITH D=-1
  1490 IF (a$(End) >= "0" AND a$(End) <= "9") THEN LET D= VAL
       (a$(End)): RETURN
  1500 IF (a$(End) >= "a" AND a$(End) <= "f") THEN LET D= CODE
       (a$(End))- CODE "a"+10: RETURN
  1510 IF (a$(End) >= "A" AND a$(End) <= "F") THEN LET D= CODE
       (a$(End))- CODE "A"+10: RETURN
  1520 RETURN : REM WITH D=-1


   ࠡ⠥?


    ᬮਬ  ਬ,  ࠡ⠥  ணࠬ. 
짮⥫  ⠪ ப:

=%# m(2)=m(1)+SIN (%.011101+#1.7ac-2)

    砫 ஢:  ,   ப ( ⮣
  ࠭),    "Q" (⮣   
TR-DOS).   砥   ⠪.  室 ப
⠥,  ஢,     砫  
㪠 ଠ 뢮 ("="  "==").   砥 ⠪
 ,  ⠭ 뢮 १  筮 
⭠筮 .  ࠡ뢠  㤠 
ப, ᫥ 祣    ᫥饥:

m(2)=m(1)+SIN (%.011101+#1.7ac-2)

     ஢,    砫 ப 
饭 १ ᫥  祩 .   砥
⠪  , १     
祩.  䠪 ,  㤠  ப,
᫥ 祣    ᫥饥:

m(1)+SIN (%.011101+#1.7ac-2)

    ⥬   ⭠ ᫠  ப 
 :

m(1)+SIN (0.453125+1.4794922-2)

    , , ந室 ᫥ ⮣ ࠦ  
㭪樨 VAL.  頥  ६ L , 
室,  㪠 祩  (  砥 - 
M(2)).  뢥     ᪮쪨 ⥬
᫥,  짮⥫ (  砥 -  筮
 ⭠筮).
    ᫨ १ 㦭 뢥  筮 , 
ᯥ樠쭮 ८ࠧ  ॡ -   ⠥
 PRINT L.   뢮  筮  ⭠筮
 室 ८ࠧ १   . 室
  ⮣ - ७ 5-⭮ ।⠢
१.     ?   ६ L, 
ன ࠭ १,  ࢮ ६
ணࠬ,   祭 ࠭  ᠬ 砫 
६ (筥,  ᬥ饭 1:   室  
६).   砫 ⮩  㪠  ⥬
६ VARS, ᯮ   23627.
    ᫥ ८ࠧ १ ⠥,  ணࠬ
⮢  ᫥  ࠦ.
