Turbo BASIC XL
From Atariki
| Wersja z dnia 22:48, 30 cze 2006 KMK (Dyskusja | wkład) ← Previous diff | Wersja z dnia 14:19, 8 lip 2006 KMK (Dyskusja | wkład) Next diff → | ||
| Linia 5: | Linia 5: | ||
| 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 matematyczny|pakiet procedur zmiennoprzecinkowych]], który sprawdza się świetnie w większości zastosowań. | 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 matematyczny|pakiet procedur zmiennoprzecinkowych]], który sprawdza się świetnie w większości zastosowań. | ||
| + | |||
| + | == 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 [[Atari BASIC#Tokeny instrukcji|Tokeny instrukcji Atari BASIC]]. | ||
| + | |||
| + | <table border = 1 cellpadding = 5> | ||
| + | <tr><td><b>Hex</b></td><td><b>Dec</b></td><td><b>Instrukcja</b></td></tr> | ||
| + | <tr><td>$38</td><td>56</td><td>DPOKE</td></tr> | ||
| + | <tr><td>$39</td><td>57</td><td>MOVE</td></tr> | ||
| + | <tr><td>$3a</td><td>58</td><td>-MOVE</td></tr> | ||
| + | <tr><td>$3b</td><td>59</td><td>*F</td></tr> | ||
| + | <tr><td>$3c</td><td>60</td><td>REPEAT</td></tr> | ||
| + | <tr><td>$3d</td><td>61</td><td>UNTIL</td></tr> | ||
| + | <tr><td>$3e</td><td>62</td><td>WHILE</td></tr> | ||
| + | <tr><td>$3f</td><td>63</td><td>WEND</td></tr> | ||
| + | <tr><td>$40</td><td>64</td><td>ELSE</td></tr> | ||
| + | <tr><td>$41</td><td>65</td><td>ENDIF</td></tr> | ||
| + | <tr><td>$42</td><td>66</td><td>BPUT</td></tr> | ||
| + | <tr><td>$43</td><td>67</td><td>BGET</td></tr> | ||
| + | <tr><td>$44</td><td>68</td><td>FILLTO</td></tr> | ||
| + | <tr><td>$45</td><td>69</td><td>DO</td></tr> | ||
| + | <tr><td>$46</td><td>70</td><td>LOOP</td></tr> | ||
| + | <tr><td>$47</td><td>71</td><td>EXIT</td></tr> | ||
| + | <tr><td>$48</td><td>72</td><td>DIR</td></tr> | ||
| + | <tr><td>$49</td><td>73</td><td>LOCK</td></tr> | ||
| + | <tr><td>$4a</td><td>74</td><td>UNLOCK</td></tr> | ||
| + | <tr><td>$4b</td><td>75</td><td>RENAME</td></tr> | ||
| + | <tr><td>$4c</td><td>76</td><td>DELETE</td></tr> | ||
| + | <tr><td>$4d</td><td>77</td><td>PAUSE</td></tr> | ||
| + | <tr><td>$4e</td><td>78</td><td>TIME$=</td></tr> | ||
| + | <tr><td>$4f</td><td>79</td><td>PROC</td></tr> | ||
| + | <tr><td>$50</td><td>80</td><td>EXEC</td></tr> | ||
| + | <tr><td>$51</td><td>81</td><td>ENDPROC</td></tr> | ||
| + | <tr><td>$52</td><td>82</td><td>FCOLOR</td></tr> | ||
| + | <tr><td>$53</td><td>83</td><td>*L</td></tr> | ||
| + | <tr><td>$54</td><td>84</td><td>--</td></tr> | ||
| + | <tr><td>$55</td><td>85</td><td>RENUM</td></tr> | ||
| + | <tr><td>$56</td><td>86</td><td>DEL</td></tr> | ||
| + | <tr><td>$57</td><td>87</td><td>DUMP</td></tr> | ||
| + | <tr><td>$58</td><td>88</td><td>TRACE</td></tr> | ||
| + | <tr><td>$59</td><td>89</td><td>TEXT</td></tr> | ||
| + | <tr><td>$5a</td><td>90</td><td>BLOAD</td></tr> | ||
| + | <tr><td>$5b</td><td>91</td><td>BRUN</td></tr> | ||
| + | <tr><td>$5c</td><td>92</td><td>GO#</td></tr> | ||
| + | <tr><td>$5d</td><td>93</td><td># (etykieta)</td></tr> | ||
| + | <tr><td>$5e</td><td>94</td><td>*B</td></tr> | ||
| + | <tr><td>$5f</td><td>95</td><td>PAINT</td></tr> | ||
| + | <tr><td>$60</td><td>96</td><td>CLS</td></tr> | ||
| + | <tr><td>$61</td><td>97</td><td>DSOUND</td></tr> | ||
| + | <tr><td>$62</td><td>98</td><td>CIRCLE</td></tr> | ||
| + | <tr><td>$63</td><td>99</td><td>%PUT</td></tr> | ||
| + | <tr><td>$64</td><td>100</td><td>%GET</td></tr> | ||
| + | </table> | ||
| + | |||
| + | Tokeny o kodach powyżej 100 sa niezdefiniowane. | ||
| + | |||
| + | === Tokeny operatorów i funkcji === | ||
| + | |||
| + | === Tokeny zmiennych === | ||
| == Błędy w Turbo BASIC-u == | == Błędy w Turbo BASIC-u == | ||
Wersja z dnia 14:19, 8 lip 2006
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.
| Hex | Dec | Instrukcja | 
| $38 | 56 | DPOKE | 
| $39 | 57 | MOVE | 
| $3a | 58 | -MOVE | 
| $3b | 59 | *F | 
| $3c | 60 | REPEAT | 
| $3d | 61 | UNTIL | 
| $3e | 62 | WHILE | 
| $3f | 63 | WEND | 
| $40 | 64 | ELSE | 
| $41 | 65 | ENDIF | 
| $42 | 66 | BPUT | 
| $43 | 67 | BGET | 
| $44 | 68 | FILLTO | 
| $45 | 69 | DO | 
| $46 | 70 | LOOP | 
| $47 | 71 | EXIT | 
| $48 | 72 | DIR | 
| $49 | 73 | LOCK | 
| $4a | 74 | UNLOCK | 
| $4b | 75 | RENAME | 
| $4c | 76 | DELETE | 
| $4d | 77 | PAUSE | 
| $4e | 78 | TIME$= | 
| $4f | 79 | PROC | 
| $50 | 80 | EXEC | 
| $51 | 81 | ENDPROC | 
| $52 | 82 | FCOLOR | 
| $53 | 83 | *L | 
| $54 | 84 | -- | 
| $55 | 85 | RENUM | 
| $56 | 86 | DEL | 
| $57 | 87 | DUMP | 
| $58 | 88 | TRACE | 
| $59 | 89 | TEXT | 
| $5a | 90 | BLOAD | 
| $5b | 91 | BRUN | 
| $5c | 92 | GO# | 
| $5d | 93 | # (etykieta) | 
| $5e | 94 | *B | 
| $5f | 95 | PAINT | 
| $60 | 96 | CLS | 
| $61 | 97 | DSOUND | 
| $62 | 98 | CIRCLE | 
| $63 | 99 | %PUT | 
| $64 | 100 | %GET | 
Tokeny o kodach powyżej 100 sa niezdefiniowane.
Tokeny operatorów i funkcji
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.

