Serwis Edukacyjny w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2023 mgr Jerzy Wałaszek |
Zanim rozpoczniesz czytanie tego rozdziału:
pobierz plik instalacyjny emulatora VB81Zwykły ZX81 BASIC jest bardzo wolny. Dlatego powstały różne rozszerzenia i ulepszenia, które z jednej strony podnosiły komfort programowania, a z drugiej ulepszały sam BASIC. Poniżej przedstawiamy instrukcję do interpretera CBI. W przeciwieństwie do kompilatora (np. MCODER 2) interpreter nie tłumaczy programu na procedury w języku maszynowym, lecz odczytuje go, rozpoznaje zawarte w nim polecenia i wykonuje odpowiednie procedury w ROM lub w swoim kodzie. Dlatego ten sposób wykonywania programu nazywamy interpretacją - interpreter czyta i interpretuje polecenia języka BASIC.
Chociaż interpreter CBI zawiera wiele interesujących rozszerzeń języka ZX81 BASIC, to jednak jego zastosowanie jest ograniczone. Spowodowane to jest koniecznością załadowania samego interpretera przed załadowaniem programu napisanego w CBI. Jeśli chcesz, możesz się tym bawić. Jednak inni użytkownicy (o ile jeszcze takowi się znajdą) zapewne wolą prostszą metodę uruchamiania programów, dlatego MCODER2 wydaje się mi lepszą alternatywą.
ZX81 CORAL BASIC INTERPRETERversion 7.0 ZX81 Coral Basic Interpreter was first marketed by Terminal Software, Baarle Nassau, Netherlands. The original Dutch manual is ISBN 90-6883-041-4, first printed November 1987. |
INTERPRETER ZX81 CORAL BASICwersja 7.0 Interpreter języka ZX81 Coral Basic był pierwotnie sprzedawany przez Terminal Software, Baarle Nassau, w Holandii. Oryginalna, holenderska instrukcja otrzymała numer ISBN 90-6883-041-4 i wydrukowano ją po raz pierwszy w październiku 1987 roku. |
INTRODUCTIONCBI is an acronym for Coral Basic Interpreter. It combines the efficiency of a new and fast Pseudo Screen Editor with the ease of a powerful extension of the ZX81 BASIC. CBI provides you with a new Full Entry Editor which can be used in Line Mode or Pseudo-Screen Mode. All the disadvantages of the (rather slow) regular ZX81 editor have vanished, e.g. as a result of the Auto Repeat on all keys, yet all its useful features, such as Direct Syntax Check and Pull Down Edit, are still available! Moreover, the Full Entry Editor is completely space-insensitive, so any computer freak can easily use a ZX81 now without actually having to know which keys to press to obtain the various keywords. Additionally, the ZX81 BASIC has been extended with 43 new commands and many `old' commands have been revised for faster or better operation. The new possibilities include:
Even though CBI offers so many advanced features, the actual code is only some 5k in length and is stored above RAMTOP (by default). CBI is suited to be used with all existing ZX81 BASIC and machine code programs. Programs written in CBI can also be used on a `normal' ZX81, provided that you don't use the new commands in your program. |
WPROWADZENIECBI jest skrótem nazwy Coral Basic Interpreter. Łączy on wydajność nowego i szybkiego edytora pseudo ekranowego z prostym i potężnym rozszerzeniem ZX81 BASIC. CBI udostępnia ci nowy Edytor, który możesz używać w trybie wierszowym lub pseudo ekranowym. Wszystkie wady (raczej wolnego) zwykłego edytora ZX81 zniknęły, np. w wyniku samopowtarzania na wszystkich klawiszach, jednocześnie wszystkie użyteczne cechy, takie jak bezpośrednie sprawdzanie składni poleceń oraz edycja ze ściąganiem w dół wiersza programu, wciąż są dostępne! Co więcej, nowy edytor jest całkowicie nieczuły na separatory, zatem każdy maniak komputerowy może teraz z łatwością używać ZX81 bez potrzeby uczenia się funkcji poszczególnych klawiszy. Dodatkowo ZX81 BASIC został rozszerzony o 43 nowe rozkazy, a wiele 'starych' rozkazów zostało przyspieszonych i ulepszonych. W nowych możliwościach mamy:
Pomimo tych wszystkich zaawansowanych funkcji CBI, rzeczywisty kod zajmuje tylko około 5K i jest umieszczany ponad RAMTOP (standardowo). CBI można stosować ze wszystkimi istniejącymi programami w ZX81 BASIC oraz w kodzie maszynowym. Programy napisane w CBI można również używać na 'normalnym' ZX81 pod warunkiem, iż nie używają one nowych rozkazów. |
STARTING CBIBy default, the code of CBI is stored above RAMTOP. Before loading the program, you must reserve space for the code. Type the following commands to achieve this: POKE 16388,8 Now you can load the program: LOAD "CBI" After loading, press any key to clear the ZX81. CBI can now be activated by a call to address 27400: RAND USR 27400 If all goes well, the normal message 0/0 should appear (yet one line higher than usual) and just below it a black block: the cursor. CBI is now ready to be used. NOTE 1: In some cases the ZX81 may switch from CBI to its `normal' operating system (i.e. the K-cursor reappears). This happens for example after the NEW command. In such cases, CBI can be restarted by typing the command RAND USR 27400 again. If this doesn't bring you back to the CBI cursor, type POKE 16393,0 first, and then try again. If this still doesn't work, reset the ZX81 and reload CBI. NOTE 2: If you wish to restart CBI without leaving it, the command POKE 16393,0 must be typed. This will refresh all the system variables held by CBI. NOTE 3: As CBI is quite an extensive and advanced piece of software, it may still contain bugs. If you have problems with CBI or discover bugs, please contact me at the address at the bottom of this document. |
URUCHAMIANIE CBIStandardowo kod CBI jest umieszczany ponad RAMTOP. Zanim załadujesz ten program, musisz zarezerwować miejsce na jego kod. Aby to osiągnąć, wpisz następujące rozkazy: POKE 16388,8 Teraz możesz załadować program: LOAD "CBI" Po załadowaniu, naciśnij dowolny klawisz w celu wyczyszczenia ZX81. Teraz CBI można aktywować poleceniem: RAND USR 27400 Jeśli wszystko poszło dobrze, to powinien pojawić się normalny komunikat 0/0 (jednak o jeden wiersz wyżej niż zwykle), a poniżej niego jest czarny kwadrat: kursor. CBI jest gotowy do użycia. UWAGA 1: Niekiedy ZX81 może przełączyć się z CBI do swojego "zwykłego" systemu (pojawi się kursor K). Dzieje się tak np. po rozkazie NEW. W takim wypadku CBI można uruchomić ponownie wpisując jeszcze raz RAND USR 27400. Jeśli nie pojawi się kursor CBI, to wpisz najpierw POKE 16393,0 i spróbuj jeszcze raz. Jeśli wciąż nie będzie rezultatu, zresetuj ZX81 i przeładuj CBI. UWAGA 2: Jeśli chcesz zresetować CBI bez wychodzenia z niego, to wpisz polecenie POKE 16393,0. Odświeży ono wszystkie zmienne systemowe utrzymywane przez CBI. UWAGA 3: CBI jest dosyć zaawansowanym oprogramowaniem, które wciąż może zawierać błędy. Jeśli będziesz miał problemy z CBI lub odkryjesz błąd, to skontaktuj się ze mną przy pomocy adresu umieszczonego na końcu tej instrukcji. |
THE NEW COMMANDSIn the following section, all new commands offered by CBI are summed up alphabetically with required syntax, brief explanation of usage and - where needed - one or more examples. The required syntax is written down with special symbols. These are:
|
NOWE ROZKAZYW następnym rozdziale podsumowane są alfabetycznie wszystkie nowe rozkazy oferowane przez CBI wraz z wymaganą składnią, z krótkim wyjaśnieniem użycia oraz, tam gdzie potrzeba, z jednym lub kilkoma przykładami. Wymagana składnia zapisywana jest przy pomocy specjalnych symboli. Oto one:
|
AUTO x STEP yEach time the cursor appears on the screen, a line number will be printed automatically. The line number starts with value x and is incremented in steps y. The auto-function ends when an empty line is entered (i.e. by pressing NEWLINE immediately after the line number) or when the line number exceeds 9999. AUTO also works with numerical INPUT statements (may be used to show a default value which may be altered by the user). Example: AUTO 50 STEP 10 generates 50,60,70,... AUTO 92 STEP 9999 generates 92 only. |
AUTO x STEP yZa każdym razem gdy kursor pojawi się na ekranie, zostanie wydrukowany
automatycznie numer wiersza. Numeracja rozpoczyna się od x i zwiększa się z
krokiem y. Autonumeracja wierszy zostaje przerwana po wprowadzeniu pustego
wiersza (tj. po naciśnięciu
NEWLINE bezpośrednio za numerem wiersza) lub przy przekroczeniu
9999. AUTO pracuje również z poleceniami INPUT
(można go użyć do pokazania standardowej wartości, którą
może zmienić użytkownik). AUTO 50 STEP 10 generuje 50,60,70,... AUTO 92 STEP 9999 generuje tylko 92. |
BREAK swEnables the user to enable/disable the break key function. When the edit mode is entered (e.g. after an error message), break is automatically enabled again. When the break key is disabled, a program can also not be halted by typing STOP for an INPUT value. Example: 10 BREAK OFF This program can only be stopped by pressing "S". Note that the break key always remains enabled during LOAD and SAVE. |
BREAK swPozwala użytkownikowi włączyć/wyłączyć funkcję klawisza przerywającego
(spacja). Przy wejściu w tryb edycji
(np. po komunikacie błędu) przerywanie jest
automatycznie włączane. Gdy klawisz przerywający jest wyłączony, to również
nie można zatrzymać programu wpisując STOP jako wartość dla INPUT. 10 BREAK OFF Ten program można zatrzymać tylko klawiszem "S". Uwaga: klawisz przerywający zawsze pozostaje włączony podczas wykonywania rozkazów LOAD i SAVE. |
CALL xCalls the machine code program at address x. CALL replaces RAND USR and similar commands. Example: CALL 2602 wipes the screen (ROM routine for CLS). |
CALL xWywołuje program maszynowy pod adresem x. CALL zastępuje RAND USR i podobne polecenia. Przykład: CALL 2602 czyści ekran (procedura w ROM dla CLS). |
CHAR xEquivalent to PRINT CHR$ x; but takes care of automatic scrolling when the screen gets filled in CBI-mode and is suited for all characters (including the new CBI keywords). Example: 10 FOR K=0 TO 255 prints the entire character set. |
CHAR xZastępuje PRINT CHR$; lecz w trybie CBI automatycznie przewija
ekran, gdy ten się zapełni. Dodatkowo obsługuje nowe nazwy poleceń w CBI. 10 FOR K=0 TO 255 drukuje cały zestaw znaków. |
CLR STACKClears the entire stack. CLR STACK should be used after having interrupted a subroutine or a procedure by BREAK and you don't want to resume its execution. This prevents unwanted `stack growth'. Example: 10 GOSUB 30 You'll get error 7/40 because CLR STACK deleted the return line number. |
CLR STACKCzyści cały stos. CLR STACK powinno być stosowane po przerwaniu podprogramu za pomocą klawisza BREAK, gdy nie chcesz wznowić wykonania. Pozwala zapobiec niechcianemu "wzrostowi stosu". Przykład: 10 GOSUB 30 Otrzymasz błąd 7/40, ponieważ CLR STACK usunął ze stosu adres powrotny. |
CURSOR xLets CHR$(x) act as a cursor in the CBI line editor. Use only single-position characters (no keywords) and also no control codes (like NEWLINE). Example: CURSOR 131 gives 'half' a cursor. |
CURSOR xJako kursor będzie stosowany znak CHR$(x) w edytorze wierszowym CBI. Używaj tylko pojedynczych znaków (nie słów kluczowych lub kodów sterujących - np. NEWLINE). Przykład: CURSOR 131 daje kursor "połówkowy". |
DATA data_listProvides the data for a READ statement. It is necessary to issue a RESTORE command at least once in the program in order that the data-pointer has a proper value. Example: 10 RESTORE |
DATA data_listUdostępnia dane dla polecenia READ. W programie należy wydać przynajmniej jedno polecenie RESTORE, aby wskaźnik danych przyjął właściwą wartość. Przykład: 10 RESTORE |
DEF PROC nameStarts the definition of a procedure named 'name'. This definition must be ended by an END PROC statement. The procedure may be called by the command name{:data_list} and in case the data_list is added, the data-pointer will be set to point to it, so that the parameters in the list may be read by READ commands. When a DEF PROC is encountered during execution of a program, its entire definition block will be skipped (i.e. not executed). Procedure definitions may be nested, but this is not advised. DEF PROC should not be used as a direct command. Example: 10 DEF PROC ENIGMA |
DEF PROC nameRozpoczyna definicję procedury o nazwie "name". Definicja musi kończyć się poleceniem END PROC. Procedurę można wywołać poleceniem: name{:data_list} a w przypadku, gdy dodano listę danych, wskaźnik danych zostanie na nią ustawiony, aby można było odczytać parametry rozkazami READ. Gdy podczas wykonywania programu zostanie napotkane DEF PROC, to cały blok będzie pominięty (tj. nie zostanie wykonany). Definicje procedur można zagnieżdżać, lecz nie polecam tego rozwiązania. DEF PROC nie należy używać w trybie bezpośrednim. Przykład: 10 DEF PROC ENIGMA |
DELETE x TO yRemoves all the lines with number x through y from the program. Neither line x nor line y need actually exist. DELETE may only be used as a direct command. Example: DELETE 0 TO 9999 deletes entire program. |
DELETE x TO yUsuwa z programu wszystkie wiersze od numeru x do y. Wiersze x i y nie muszą być obecne w programie. DELETE można używać tylko w trybie bezpośrednim. Przykład: DELETE 0 TO 9999 usuwa cały program. |
DO { [UNTIL|WHILE] bln }The DO command indicates the beginning of a (conditional) loop structure, which has to be ended by a matching LOOP command. The three possible structures are: DO ... LOOP : unconditional
(infinite) loop It is possible to leap out of each of these three structures by way of an EXIT command within the loop. The DO...LOOP structures may be nested at will. Example: 10 INPUT X |
DO {[UNTIL|WHILE] bln }Polecenie DO oznacza początek (warunkowej) pętli, która musi się kończyć pasującym do niej poleceniem LOOP. Istnieją trzy możliwe rodzaje pętli: DO ... LOOP : pętla bezwarunkowa
(nieskończona) Z każdej pętli można wyjść przed czasem przy pomocy rozkazu EXIT. Pętle DO...LOOP mogą być do woli zagnieżdżane. Przykład: 10 INPUT X |
DPEEK var,xDouble peek (word value), equivalent to the more cumbersome command: LET var=PEEK x+256*PEEK (x+1) Example: DPEEK DF,16396 lets DF point to the display file. |
DPEEK var,xPodwójne pobranie z pamięci (wartość słowa), równoważne niewygodnej konstrukcji: LET var=PEEK x+256*PEEK (x+1) Przykład: DPEEK DF,16396 DF wskazuje bufor wyświetlania. |
DPOKE x,yDouble poke (word value), equivalent to the more cumbersome set of commands: POKE x,y-256*INT (y/256) Example: DPOKE 32734,DF+1 has the effect of HOME (also see example at DPEEK for definition of DF). A number that has been stored by DPOKE can be read by DPEEK and vice versa. |
DPOKE x,yPodwójne wstawienie do pamięci (wartości słowa), równoważne niewygodnej konstrukcji: POKE x,y-256*INT (y/256) Przykład: DPOKE 32734,DF+1 posiada taki sam efekt jak HOME (zobacz również na przykład przy DPEEK, gdzie jest definicja DF). Liczba umieszczona w pamięci przez DPOKE może być odczytana przez DPEEK i na odwrót. |
DRAW TO x,yDraws the best possible line from the last plot position to position (x,y). Note that a line drawn from (a,b) to (c,d) is not exactly the same as a line drawn from (c,d) to (a,b). For wiping a line drawn by DRAW, UNDRAW must be applied in the same direction. Example: PLOT 0,0 draws a line across the screen. |
DRAW TO x,yRysuje najlepszą możliwą linię od ostatniej pozycji graficznej do pozycji (x,y). Uwaga: linia narysowana od punktu (a,b) do (c,d) nie jest taka sama jak linia od punktu (c,d) do (a,b). Do wymazywania linii narysowanej przez DRAW należy zastosować UNDRAW w tym samym kierunku. Przykład: PLOT 0,0 rysuje przekątną ekranu. |
DUP varCopies the value of the top element of the stack into variable var. The stack itself remains unaltered. Example: 10 DEF PROC WHERE |
DUP varKopiuje wartość szczytowego elementu stosu do zmiennej var. Sam stos pozostaje niezmieniony. Przykład: 10 DEF PROC WHERE |
EDIT xMoves line x (or the first line with a number higher than x) into the editor. May only be used as a direct command. |
EDIT xPrzekazuje wiersz x (lub, w przypadku braku wiersza x, pierwszy wiersz o numerze większym od x) do edytora. Może być używane tylko jako polecenie bezpośrednie. |
ELSETo be used in combination with WHEN - see there. |
ELSEUżywane razem z WHEN - doczytaj dalej tam. |
END PROC {data_list}Indicates the end of a procedure definition. When the procedure is executed and the data_list after the END PROC is present, the data pointer will be set to point to this data_list, so READ commands can be used to read the data. For an example of a procedure with two-way data exchange see DEF PROC. |
END PROC {data_list}Oznacza koniec definicji procedury. Gdy procedura jest wykonywana i za END PROC umieszczono data_list, to wskaźnik danych zostanie ustawiony na data_list, aby polecenie READ mogły zostać użyte do odczytu danych wyjściowych. Przykład użycia procedury z obustronną wymianą danych znajdziesz w opisie DEF PROC. |
END WHENIndicates the end of a WHEN structure - see WHEN for more details. |
END WHENOznacza koniec struktury WHEN - więcej szczegółów w opisie WHEN. |
ERR MSGS swWhen ERRor MeSsaGeS are on, all error messages will be briefly explained in plain English. Unknown error messages will be commented as 'ERROR?'. Example: ERR MSGS ON enable error messages PLOT 100,100 ... B/0 INTEGER OUT OF RANGE |
ERR MSGS swGdy jest włączone opisywanie błędów (ERR MSGS ON), to wszystkie błędy będą krótko opisane w języku angielskim. Nieznany rodzaj błędu zostanie opisany jako "ERROR?". Przykład: ERR MSGS ON włącza opisywanie błędów PLOT 100,100 ... B/0 INTEGER OUT OF RANGE |
ERROR xWhen CHR$(x) is a printable, non-control, single-position character, an error message with this character will be forced. Note that ERROR 28 has no effect. Example: ERROR 63 ... Z/0 |
ERROR xWymusza komunikat błędu ze znakiem CHR$(x), który powinien być drukowalny, nie sterujący i pojedynczy (czyli np. nie nazwa funkcji czy rozkazu języka ZX81 BASIC lub CBI). Uwaga - ERROR 28 nie działa. Przykład: ERROR 63 ... Z/0 |
EXITHas two different applications:
For an example of case (2), see the DO command. |
EXITPosiada dwa różne zastosowania:
Przykład dla przypadku 2 znajdziesz w opisie rozkazu DO. |
HOMEA fast and economic alternative for PRINT AT 0,0; |
HOMESzybka i ekonomiczna alternatywa dla PRINT AT 0,0; |
INDENTGives your program a proper, professionally looking lay-out. Use INDENT to improve the legibility and survivability of your program; the structure of your program is much clearer after using this command. When INDENT comes across a structural error in your program, it will stop its task. Note that INDENT may only be used as a direct command and sometimes results in undefined (and unimportant) error messages. |
INDENTNadaje twojemu programowi właściwy układ o profesjonalnym wyglądzie. Używaj INDENT do poprawy czytelności swojego programu, gdyż po zastosowaniu tego rozkazu struktura programu staje się dużo bardziej przejrzysta. Jeśli INDENT napotka w twoim programie błąd strukturalny, to przestanie działać. Uwaga - INDENT można używać tylko jako polecenie bezpośrednie, które czasami daje w wyniku nieokreślone (i nieistotne) komunikaty błędów. |
LINE var,xPuts into variable var the address where Basic line x or the first line with a number larger than x starts. The actual command of that line is then located at address var+4 (e.g. PRINT). Example: LINE FIRST,0 always FIRST=16509, start of basic area |
LINE var,xUmieszcza w zmiennej var adres wiersza x lub, w przypadku braku wiersza x w programie, adres pierwszego wiersza o numerze większym od x. Polecenie umieszczone w tym wierszu (np. PRINT) rozpoczyna się od adresu var+4. Przykład: LINE FIRST,0 zawsze FIRTS=16509, początek obszaru programów w języku ZX81 BASIC. |
LOOPIndicates the end of a DO...LOOP structure - see DO for an example. |
LOOPOznacza koniec struktury DO...LOOP - przykład użycia w opisie polecenia DO. |
NOSTALGIC swSwitches between the two possible edit modes:
|
NOSTALGIC swPrzełącza pomiędzy dwoma dostępnymi trybami edycji:
|
ON/OFFThese two reserved CBI keywords can only be used in combination with other CBI commands, viz. those that need 'sw' as parameter. Example: NOSTALGIC ON |
ON/OFFTe dwa zarezerwowane słówka kluczowe CBI mogą być używane tylko w połączeniu z innymi rozkazami CBI, które wymagają "sw" jako parametru. Przykład: NOSTALGIC ON |
POP varTakes the top element off the stack and stores its value in variable 'var'. Example: 1000 DEF PROC ALTER This procedure needs to be called just before the end of another procedure as to make sure that the latter does not cause error B when it was called by way of a direct command. |
POP varPobiera szczytowy element ze stosu i umieszcza go w zmiennej var. Przykład: 1000 DEF PROC ALTER Ta procedura musi być wywołana tuż przed końcem innej procedury, aby upewnić się, że ta druga procedura nie wywoła błędu B w przypadku wywołania za pomocą polecenia bezpośredniego. |
PROTECT swCan be used to disable the commands CLEAR, RUN and NEW in order to protect programs and variables against accidental loss. Example: PROTECT ON |
PROTECT swMożna używać do blokowania poleceń CLEAR, RUN i NEW w celu ochrony programów i zmiennych przed przypadkową utratą. Przykład: PROTECT ON |
PUSH xStores the number x on top of the stack - see example at POP. |
PUSH xUmieszcza liczbę x na szczycie stosu - zobacz na przykład w opisie POP. |
READ [var|$var]The READ command is an important tool for data exchange between various parts of a program. The three different ways in which the READ command can be used are summed up below. In general, READ takes a data item from the data list that is specified by the current value of the data pointer. In case no data item can be found, error G results.
10 RAND PI |
READ {var|$var}Rozkaz READ jest ważnym narzędziem do wymiany danych pomiędzy różnymi częściami programu. Poniżej podsumowujemy trzy różne sposoby stosowania rozkazu READ. Ogólnie READ pobiera element danych z listy danych określonej bieżącą wartością wskaźnika danych. Jeśli nie można pobrać takiego elementu z listy, powstaje błąd G.
10 RAND PI |
RESEQ x:y,zResequences the program from line x onwards by renumbering this one to line y and proceeding with steps z. The RESEQ command does not change line numbers after GOTO and GOSUB statements (the VB81 renumber function does this, but it causes the CBI to exit so you must restore it again with RND USR 27400); taking into account the numerous possibilities for structured programming offered by CBI, this seems no restriction (unfortunately it is). Example: RESEQ 0:100,10 renumbers program as 100,110,120,... |
RESEQ x:y,zZmienia numerację wierszy programu poczynając od wiersza x w górę. Wiersz x zostanie przenumerowany na y, a kolejne wiersze otrzymają numery z krokiem z. Rozkaz RESEQ nie zmienia numerów wierszy za GOTO i GOSUB (renumeracja w VB81 robi to!, ale powoduje wyjście z CBI, który należy ponownie uruchomić poleceniem RAND USR 27400); lecz biorąc pod uwagę liczne możliwości programowania strukturalnego oferowane przez CBI, nie wydaje się to być ograniczeniem (a jednak jest - uwaga od tłum.). Przykład: RESEQ 0:100,10 przenumerowuje program jako 100, 110, 120, ... |
RESTORE {x}Positions the data pointer on the first data element found in or after line x. Note that RESTORE without number looks for the first data element in the program. See DATA for an example. |
RESTORE {x}Ustala pozycję wskaźnika danych na pierwszym elemencie znalezionym w wierszu x lub w wierszach następnych za x. RESTORE bez numeru wiersza szuka pierwszego elementu danych w programie. Przykład użycia znajdziesz w opisie DATA. |
TRACE swv;{x}In case swv=1 a program will be traced during running: before executing subsequent lines of Basic, the line number will be displayed in the top right hand corner and a small pause (in length proportional to x) will be held. On a normal ZX81, use x=2750 for 1 second. Example: TRACE 1;2000 waits approx. 0.72 second. |
TRACE swv;{x}W przypadku swv=1 program będzie śledzony podczas jego działania: przed wykonaniem kolejnych wierszy BASIC'u, w prawym górnym narożniku ekranu pojawi się numer wiersza oraz nastąpi małe opóźnienie {o długości proporcjonalnej do x). Na typowym ZX81 używaj x=2750 dla opóźnienia równego 1 sekundzie. Przykład: TRACE 1;2000 czaka około 0,72 sekundy. |
UNDRAW TO x,yWorks just like DRAW TO, but uses UNPLOT instead of PLOT. |
UNDRAW TO x,yDziała tak jak DRAW TO, lecz do rysowania punktów używa UNPLOT zamiast PLOT. |
UNTIL/WHILEThese reserved CBI keywords can only be used in combination with a DO...LOOP structure. See DO for an example. |
UNTIL/WHILETe zarezerwowane słowa kluczowe CBI mogą być użyte tylko w połączeniu ze strukturą DO...LOOP. Przykład użycia znajdziesz w opisie DO. |
USER xProbably the most interesting command for machine code programmers. The USER command has the effect that subsequent '*' commands are redirected to the user-definable machine code routine at address x. This allows the user to easily expand the Basic with self-written routines. For a more detailed explanation, please refer to the section "Brief Explanation of the USER Command" |
USER xZapewne jest to najbardziej interesujące polecenie dla programujących w kodzie maszynowym. Rozkaz USER powoduje, iż następne rozkazy "*" zostaną przekierowane do procedury użytkownika w kodzie maszynowym, która znajduje się pod adresem x. Pozwala to użytkownikowi z łatwością rozszerzyć BASIC swoimi samodzielnie napisanymi procedurami. |
WHEN bln DOThis command is an extension of the IF command and allows for conditional execution of program blocks (instead of just a single command). The structure of a WHEN block within a program is as follows: WHEN
bln DO The ELSE with subsequent program lines is optional. WHEN...END WHEN structures may be nested at will .Example :100 INPUT L$ 120 FOR N=1 TO 6 130 WHEN L$=V$(N) AND T<6 DO 140 PRINT L$;" IS A VOWEL" 150 LET N=6 160 ELSE 170 WHEN N=6 DO 180 PRINT L$;" IS A CONSONANT" 190 END WHEN 200 END WHEN Also note that the '*' command (see USER) cannot be used after the THEN in an IF statement. Apply a WHEN construction instead. |
WHEN bln DOTo polecenie jest rozszerzeniem rozkazu IF i pozwala na warunkowe wykonanie bloku programu (zamiast tylko jednej instrukcji). Struktura bloku WHEN w programie jest następująca: WHEN bln DO ELSE wraz z następującymi po nim wierszami programu jest opcjonalne. Struktury WHEN...END WHEN mogą być do woli zagnieżdżane. Przykład: 100 INPUT L$ Uwaga - rozkaz * (zobacz na polecenie USER) nie może być użyty po THEN w instrukcji warunkowej IF. Zamiast niej stosuj WHEN. |
For all questions or suggestions regarding CBI, please write
to Carlo Delhez, |
Jeśli będziesz miał pytania lub propozycje odnośnie CBI, proszę, napisz pod
adres: Carlo Delhez, |
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2023 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.