Turbo BASIC XL

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 14:19, 8 lip 2006
KMK (Dyskusja | wkład)

← Previous diff
Wersja z dnia 14:29, 8 lip 2006
KMK (Dyskusja | wkład)
(Tokeny operatorów i funkcji)
Next diff →
Linia 66: Linia 66:
=== Tokeny operatorów i funkcji === === Tokeny operatorów i funkcji ===
 +
 +Tokeny o kodach od 14 do 84 są takie same jak w Atari BASIC, patrz [[Atari BASIC#Tokeny operatorów, funkcji i zmiennych|Tokeny operatorów, funkcji i zmiennych Atari BASIC]].
 +
 +<table border = 1 cellpadding = 5>
 +<tr><td><b>Hex</b></td><td><b>Dec</b></td><td><b>Operator lub funkcja</b></td></tr>
 +<tr><td>$00</td><td>14</td><td>prefiks tokenu zmiennej</td></tr>
 +<tr><td>$01-$0C</td><td>1-12</td><td>niezdefiniowane</td></tr>
 +<tr><td>$0d</td><td>13</td><td>stała szesnastkowa</td></tr>
 +<tr><td>$0e</td><td>14</td><td>stała dziesiętna</td></tr>
 +<tr><td>$0f</td><td>15</td><td>stała tekstowa</td></tr>
 +<tr><td>$10</td><td>16</td><td>niewykorzystany</td></tr>
 +<tr><td>$11</td><td>17</td><td>niewykorzystany</td></tr>
 +<tr><td>$12</td><td>18</td><td>przecinek</td></tr>
 +<tr><td>$13</td><td>19</td><td>znak $</td></tr>
 +<tr><td>$14</td><td>20</td><td>koniec instrukcji</td></tr>
 +<tr><td>$15</td><td>21</td><td>średnik</td></tr>
 +<tr><td>$16</td><td>22</td><td>koniec linii</td></tr>
 +<tr><td>$17</td><td>23</td><td>GOTO w instrukcji ON</td></tr>
 +<tr><td>$18</td><td>24</td><td>GOSUB w instrukcji ON</td></tr>
 +<tr><td>$19</td><td>25</td><td>TO</td></tr>
 +<tr><td>$1a</td><td>26</td><td>STEP</td></tr>
 +<tr><td>$1b</td><td>27</td><td>THEN</td></tr>
 +<tr><td>$1c</td><td>28</td><td>znak #</td></tr>
 +<tr><td>$1d</td><td>29</td><td>liczbowe "mniejszy lub równy"</td></tr>
 +<tr><td>$1e</td><td>30</td><td>liczbowe "różny"</td></tr>
 +<tr><td>$1f</td><td>31</td><td>liczbowe "większy lub równy"</td></tr>
 +<tr><td>$20</td><td>32</td><td>liczbowe "mniejszy"</td></tr>
 +<tr><td>$21</td><td>33</td><td>liczbowe "większy"</td></tr>
 +<tr><td>$22</td><td>34</td><td>liczbowe "równy"</td></tr>
 +<tr><td>$23</td><td>35</td><td>operator potęgowania ^</td></tr>
 +<tr><td>$24</td><td>36</td><td>operator mnożenia *</td></tr>
 +<tr><td>$25</td><td>37</td><td>operator dodawania +</td></tr>
 +<tr><td>$26</td><td>38</td><td>operator odejmowania -</td></tr>
 +<tr><td>$27</td><td>39</td><td>operator dzielenia</td></tr>
 +<tr><td>$28</td><td>40</td><td>NOT</td></tr>
 +<tr><td>$29</td><td>41</td><td>OR</td></tr>
 +<tr><td>$2a</td><td>42</td><td>AND</td></tr>
 +<tr><td>$2b</td><td>43</td><td>nawias otwierający wyrażenie liczbowe</td></tr>
 +<tr><td>$2c</td><td>44</td><td>nawias zamykający wyrażenie liczbowe</td></tr>
 +<tr><td>$2d</td><td>45</td><td>operator przypisania wartości liczbowej =</td></tr>
 +<tr><td>$2e</td><td>46</td><td>operator przypisania wartości tekstowej =</td></tr>
 +<tr><td>$2f</td><td>47</td><td>tekstowe "mniejszy lub równy"</td></tr>
 +<tr><td>$30</td><td>48</td><td>tekstowe "różny"</td></tr>
 +<tr><td>$31</td><td>49</td><td>tekstowe "większy lub równy"</td></tr>
 +<tr><td>$32</td><td>50</td><td>tekstowe "mniejszy"</td></tr>
 +<tr><td>$33</td><td>51</td><td>tekstowe "większy"</td></tr>
 +<tr><td>$34</td><td>52</td><td>tekstowe "równy"</td></tr>
 +<tr><td>$35</td><td>53</td><td>+ znak liczby</td></tr>
 +<tr><td>$36</td><td>54</td><td>- znak liczby</td></tr>
 +<tr><td>$37</td><td>55</td><td>nawias otwierający indeks w zmiennej tekstowej</td></tr>
 +<tr><td>$38</td><td>56</td><td>nawias otwierający indeks w zmiennej tablicowej</td></tr>
 +<tr><td>$39</td><td>57</td><td>nawias otwierający wymiar zmiennej tablicowej</td></tr>
 +<tr><td>$3a</td><td>58</td><td>nawias otwierający argumenty funkcji</td></tr>
 +<tr><td>$3b</td><td>59</td><td>nawiast otwierający wymiar zmiennej tekstowej</td></tr>
 +<tr><td>$3c</td><td>60</td><td>przecinek w zmiennej tablicowej</td></tr>
 +<tr><td>$3d</td><td>61</td><td>STR$</td></tr>
 +<tr><td>$3e</td><td>62</td><td>CHR$</td></tr>
 +<tr><td>$3f</td><td>63</td><td>USR</td></tr>
 +<tr><td>$40</td><td>64</td><td>ASC</td></tr>
 +<tr><td>$41</td><td>65</td><td>VAL</td></tr>
 +<tr><td>$42</td><td>66</td><td>LEN</td></tr>
 +<tr><td>$43</td><td>67</td><td>ADR</td></tr>
 +<tr><td>$44</td><td>68</td><td>ATN</td></tr>
 +<tr><td>$45</td><td>69</td><td>COS</td></tr>
 +<tr><td>$46</td><td>70</td><td>PEEK</td></tr>
 +<tr><td>$47</td><td>71</td><td>SIN</td></tr>
 +<tr><td>$48</td><td>72</td><td>RND</td></tr>
 +<tr><td>$49</td><td>73</td><td>FRE</td></tr>
 +<tr><td>$4a</td><td>74</td><td>EXP</td></tr>
 +<tr><td>$4b</td><td>75</td><td>LOG</td></tr>
 +<tr><td>$4c</td><td>76</td><td>CLOG</td></tr>
 +<tr><td>$4d</td><td>77</td><td>SQR</td></tr>
 +<tr><td>$4e</td><td>78</td><td>SGN</td></tr>
 +<tr><td>$4f</td><td>79</td><td>ABS</td></tr>
 +<tr><td>$50</td><td>80</td><td>INT</td></tr>
 +<tr><td>$51</td><td>81</td><td>PADDLE</td></tr>
 +<tr><td>$52</td><td>82</td><td>STICK</td></tr>
 +<tr><td>$53</td><td>83</td><td>PTRIG</td></tr>
 +<tr><td>$54</td><td>84</td><td>STRIG</td></tr>
 +<tr><td>$55</td><td>85</td><td>DPEEK</td></tr>
 +<tr><td>$56</td><td>86</td><td>binarne AND</td></tr>
 +<tr><td>$57</td><td>87</td><td>binarne OR</td></tr>
 +<tr><td>$58</td><td>88</td><td>INSTR</td></tr>
 +<tr><td>$59</td><td>89</td><td>INKEY$</td></tr>
 +<tr><td>$5a</td><td>90</td><td>EXOR</td></tr>
 +<tr><td>$5b</td><td>91</td><td>HEX$</td></tr>
 +<tr><td>$5c</td><td>92</td><td>DEC</td></tr>
 +<tr><td>$5d</td><td>93</td><td>DIV</td></tr>
 +<tr><td>$5e</td><td>94</td><td>FRAC</td></tr>
 +<tr><td>$5f</td><td>95</td><td>TIME$</td></tr>
 +<tr><td>$60</td><td>96</td><td>TIME</td></tr>
 +<tr><td>$61</td><td>97</td><td>MOD</td></tr>
 +<tr><td>$62</td><td>98</td><td>EXEC w ON</td></tr>
 +<tr><td>$63</td><td>99</td><td>RND</td></tr>
 +<tr><td>$64</td><td>100</td><td>RAND</td></tr>
 +<tr><td>$65</td><td>101</td><td>TRUNC</td></tr>
 +<tr><td>$66</td><td>102</td><td>%0</td></tr>
 +<tr><td>$67</td><td>103</td><td>%1</td></tr>
 +<tr><td>$68</td><td>104</td><td>%2</td></tr>
 +<tr><td>$69</td><td>105</td><td>%3</td></tr>
 +<tr><td>$6a</td><td>106</td><td>GO# w ON</td></tr>
 +<tr><td>$6b</td><td>107</td><td>UINSTR</td></tr>
 +<tr><td>$6c</td><td>108</td><td>ERR</td></tr>
 +<tr><td>$6d</td><td>109</td><td>ERL</td></tr>
 +</table>
 +
 +Tokeny po kodach ponad 109 są neizdefiniowane.
=== Tokeny zmiennych === === Tokeny zmiennych ===

Wersja z dnia 14:29, 8 lip 2006

Grafika:tbxl.png

Odmiana języka BASIC dla komputera Atari XL/XE, stworzona w 1985 roku przez niemieckiego programistę Franka Ostrowskiego i rozpowszechniona jako program public domain przez czasopismo "Happy Computer". Oprócz wersji XL istnieje też odmiana przeznaczona dla komputerów serii 400/800.

Turbo BASIC wgrywa się do pamięci RAM komputera z dysku lub taśmy. Interpreter charakteryzuje się dużą ilością rozszerzeń w stosunku do oryginalnego Atari BASIC-a, istnieje też kompilator Turbo BASIC XL Compiler.

Pierwszorzędną zaletą Turbo BASIC-a XL jest jego szybkość, programy wykonywane są od trzech do pięciu razy szybciej niż w interpreterze Atari BASIC, co jest w sporej mierze wynikiem tego, iż Turbo BASIC ma własny, bardzo szybki pakiet procedur zmiennoprzecinkowych, który sprawdza się świetnie w większości zastosowań.

Spis treści

Tokeny Turbo BASIC-a

Zasadnicza struktura programu w Turbo BASIC-u XL jest taka sama, jak w Atari BASIC - zmiany polegają wyłącznie na dodaniu nowych instrukcji, funkcji i operatorów do listy tychże znanych interpreterowi Atari BASIC.

Tokeny instrukcji

Tokeny o kodach poniżej 56 są takie same jak w Atari BASIC, patrz Tokeny instrukcji Atari BASIC.

HexDecInstrukcja
$3856DPOKE
$3957MOVE
$3a58-MOVE
$3b59*F
$3c60REPEAT
$3d61UNTIL
$3e62WHILE
$3f63WEND
$4064ELSE
$4165ENDIF
$4266BPUT
$4367BGET
$4468FILLTO
$4569DO
$4670LOOP
$4771EXIT
$4872DIR
$4973LOCK
$4a74UNLOCK
$4b75RENAME
$4c76DELETE
$4d77PAUSE
$4e78TIME$=
$4f79PROC
$5080EXEC
$5181ENDPROC
$5282FCOLOR
$5383*L
$5484--
$5585RENUM
$5686DEL
$5787DUMP
$5888TRACE
$5989TEXT
$5a90BLOAD
$5b91BRUN
$5c92GO#
$5d93# (etykieta)
$5e94*B
$5f95PAINT
$6096CLS
$6197DSOUND
$6298CIRCLE
$6399%PUT
$64100%GET

Tokeny o kodach powyżej 100 sa niezdefiniowane.

Tokeny operatorów i funkcji

Tokeny o kodach od 14 do 84 są takie same jak w Atari BASIC, patrz Tokeny operatorów, funkcji i zmiennych Atari BASIC.

HexDecOperator lub funkcja
$0014prefiks tokenu zmiennej
$01-$0C1-12niezdefiniowane
$0d13stała szesnastkowa
$0e14stała dziesiętna
$0f15stała tekstowa
$1016niewykorzystany
$1117niewykorzystany
$1218przecinek
$1319znak $
$1420koniec instrukcji
$1521średnik
$1622koniec linii
$1723GOTO w instrukcji ON
$1824GOSUB w instrukcji ON
$1925TO
$1a26STEP
$1b27THEN
$1c28znak #
$1d29liczbowe "mniejszy lub równy"
$1e30liczbowe "różny"
$1f31liczbowe "większy lub równy"
$2032liczbowe "mniejszy"
$2133liczbowe "większy"
$2234liczbowe "równy"
$2335operator potęgowania ^
$2436operator mnożenia *
$2537operator dodawania +
$2638operator odejmowania -
$2739operator dzielenia
$2840NOT
$2941OR
$2a42AND
$2b43nawias otwierający wyrażenie liczbowe
$2c44nawias zamykający wyrażenie liczbowe
$2d45operator przypisania wartości liczbowej =
$2e46operator przypisania wartości tekstowej =
$2f47tekstowe "mniejszy lub równy"
$3048tekstowe "różny"
$3149tekstowe "większy lub równy"
$3250tekstowe "mniejszy"
$3351tekstowe "większy"
$3452tekstowe "równy"
$3553+ znak liczby
$3654- znak liczby
$3755nawias otwierający indeks w zmiennej tekstowej
$3856nawias otwierający indeks w zmiennej tablicowej
$3957nawias otwierający wymiar zmiennej tablicowej
$3a58nawias otwierający argumenty funkcji
$3b59nawiast otwierający wymiar zmiennej tekstowej
$3c60przecinek w zmiennej tablicowej
$3d61STR$
$3e62CHR$
$3f63USR
$4064ASC
$4165VAL
$4266LEN
$4367ADR
$4468ATN
$4569COS
$4670PEEK
$4771SIN
$4872RND
$4973FRE
$4a74EXP
$4b75LOG
$4c76CLOG
$4d77SQR
$4e78SGN
$4f79ABS
$5080INT
$5181PADDLE
$5282STICK
$5383PTRIG
$5484STRIG
$5585DPEEK
$5686binarne AND
$5787binarne OR
$5888INSTR
$5989INKEY$
$5a90EXOR
$5b91HEX$
$5c92DEC
$5d93DIV
$5e94FRAC
$5f95TIME$
$6096TIME
$6197MOD
$6298EXEC w ON
$6399RND
$64100RAND
$65101TRUNC
$66102%0
$67103%1
$68104%2
$69105%3
$6a106GO# w ON
$6b107UINSTR
$6c108ERR
$6d109ERL

Tokeny po kodach ponad 109 są neizdefiniowane.

Tokeny zmiennych

Błędy w Turbo BASIC-u

  • uruchomienie programu: 10 TRAP 10:GET #1,A powoduje całkowite zapełnienie i "zawinięcie" się stosu procesora; instrukcja TRAP wprawdzie zdejmuje ze stosu pewną ilość danych, ale rzadko bywa to ilość właściwa. Ten sam błąd ma też Atari BASIC.
  • porównanie dwóch funkcji CHR$ w jednym wyrażeniu jest zawsze prawdziwe, np. IF CHR$(1)=CHR$(2) THEN STOP spowoduje zatrzymanie programu. Ten sam błąd ma też Atari BASIC.
  • kontrola składni nie przyjmuje słów kluczowych %GET, %PUT i -MOVE jeśli są wpisane małymi literami.
  • kontrola składni przyjmuje zmienne tekstowe jako argumenty instrukcji GET, chociaż ta może zapisywać wartości tylko do zmiennych numerycznych.
  • funkcja DEC źle działa, jeśli przekazana jej liczba szesnastkowa zawiera małe litery.

Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.

Personal tools