- Komenda WHO wyświetla informację o autorze
programu.
- Wykrzyknik pozwala wprowadzać komentarze do
programu.
Wszystkie znaki po wykrzykniku aż do końca wiersza są ignorowane.
Wiersze zawierające tylko komentarz (tzn. zaczynające się
wykrzyknikiem) nie są dozwolone.
Przykład:
10 A=1!To jest komentarz
- Komenda SET akceptuje składnię
SET N, która kasuje ograniczenie precyzji wyświetlania
liczb.
- Kod błędu ERR! sygnalizuje błędy w
argumentach funkcji w nawiasach.
Przykład:
SIN (0/0)
TAN (1>0)
- Komenda DEFM po której następuje
przecinek i nazwa zmiennej przypisuje tej zmiennej maksymalną ilość
możliwych do zarezerwowania dodatkowych zmiennych.
Ta opcja działa tylko w programach.
Przykład:
10 DEFM ,A
20 PRINT "Max=";A
- Niektóre komendy akceptujące zmienną jako
argument zezwalają na użycie zarówno samej nazwy zmiennej, jak i
zmiennej z przypisaną wartością.
Na przykład, poniższy dziwny program jest wykonywany bez zgłaszania
błędów:
10 PRINT A=123;B$="ABC"
20 INPUT C=5,D$="DEF"
30 SET K=2
40 DEFM ,M=3
50 I=3
60 FOR I TO 5
70 NEXT I=10
80 GOTO X=10
- Komputer MK-85 nie ma nic przeciwko porównywaniu
liczby z łańcuchem.
Wybiera pomiędzy procedurą porównywania łańcuchów lub liczb testując
tylko wyrażenie po prawej stronie operatora relacji.
Bez problemów wykonuje poniższy przykładowy program:
10 A=1: $="ABC"
20 IF A=$ THEN 30
30 IF $>5 THEN 40
40 END
- Procedura łączenia łańcuchów nie spodziewa się
wyniku połączenia łańcuchów jako drugiego argumentu.
Poniższe przykładowe wyrażenie jest obliczane źle:
"12"+("34"+"56")
- Ten sam obszar pamięci został zarezerwowany dla
bufora łączonych łańcuchów i dla stosu przetwarzania wyrażeń.
Czasem ten stos może zostać przepisany przez łańcuch, co prowadzi do
różnych komunikatów o błędach.
Taki przypadek zachodzi w poniższym przykładzie:
$="123456789012345"
LEN($+$)
- INPUT nie sprawdza, czy wartość
wpisywana do zmiennej numerycznej jest rzeczywiście liczbą, co powoduje
zamazanie zmiennej śmieciami.
Spróbuj wpisać jakiś łańcuch (w cudzysłowach) lub zmienną łańcuchową
(np. $) w odpowiedzi na INPUT w poniższym
programie:
10 VAC
20 INPUT A
30 PRINT A$
- INPUT nie potrafi wpisać pustego
łańcucha do zmiennej łańcuchowej.
Problem spowodowany jest brakiem testu długości łańcucha przed
przekopiowaniem go do zmiennej.
Przykład:
10 INPUT $
Gdy pojawi się znak zapytania, wciśnij kolejno klawisze [SPC], strzałka
w lewo, [DEL] i [EXE].
Spowoduje to zawieszenie systemu i utratę zawartości pamięci RAM.
Ten błąd zgłosił Sergei Gaidukov na forum
iXBT Hardware
BBS, data wpisu 22.11.2005 09:45.
- Z powodu niepełnego sprawdzania typów danych,
komenda INPUT akceptuje jako argument liczbę zamiast zmiennej
łańcuchowej.
Wpisany łańcuch zostanie zapamiętany pod adresem utworzonym z
pierwszych czterech cyfr mantysy.
W poniższym przykładzie zmienna $ zostanie przepisana
znakami wpisanymi w odpowiedzi na INPUT:
10 $="0123456789"
20 INPUT 8150
30 PRINT $
- Kolejny błąd komendy INPUT, który
zgłosił Denis Gorbunov w
księdze gości
witryny mk85.narod.ru (data wpisu 09.01.2003 00:20), ilustruje
poniższy program umieszczony w obszarze P0:
1 INPUT A$:HH
Wciśnięcie klawisza [AC] a następnie [EXE] w odpowiedzi na znak
zapytania wyświetlony przez INPUT spowoduje zawieszenie systemu.
Znaki różne od HH mogą powodować inne awarie, np. restart systemu lub
uszkodzenie zawartości pamięci.
Autor wpisu trafnie wywnioskował, że dalsza część programu BASIC
rozpoczynająca się od dwukropka jest wykonywana przez procesor jako
program maszynowy!
- Instrukcja LETC nie może być używana
wewnątrz podprogramu, ponieważ przepisuje pierwszy bajt stosu
GOSUB.
Na przykład, próba wykonania RETURN w poniższym programie kończy
się błędem:
10 GOSUB 30
20 END
30 LETC "2222222"
40 RETURN
Ten błąd znalazł Aleksei Akatov.
- Operacje mnożenia i dzielenia mogą zwracać
małe liczby nie mieszczące się w dozwolonym zakresie, w przedziale
1E-4097..9.999999999E-4097 (wykładnik=0x0000) lub
-1E-4097..-9.999999999E-4097 (wykładnik=0x8000), bez sygnalizacji
niedomiaru.
Przykład:
A=1E-4096/2
B=-1E-4096*0.1
System nie radzi sobie z takimi liczbami.
Na przykład zmienna A (a także A+A lub A-A) jest wyświetlana
jako 5, ale większość operacji arytmetycznych traktuje ją
jako 0.
- Obliczenie tangensa (lub innej funkcji
pochodzącej od tangensa, tzn. SIN, COS) z liczby o wykładniku równym
4094 zajmuje bardzo dużo czasu.
Dla tak dużych argumentów wynik jest oczywiście bez sensu.
Przykład:
TAN 1E4094
SIN -9E4094