EFTON

Zmeny v BASIC52/RD2 v1.4beta4

  1. Rozšírenia boli presunuté späť do oblasti 2000h-3FFFh (čím sa zrušil bod 5. z prvého zoznamu). Toto dovoľuje použiť rozšírenia publikované na webe pre pôvodný BASIC52.
    "Prebytočná" časť kódu interpretera bola presunutá do oblasti 6000h-7FFFh.
  2. Rozšírenia môžu teraz vrátiť návratovú hodnotu cez novú funkciu 43h, kompatibilnú s BASIC52 version 1.3 publikovaným v časopise Elektor. Týmto sa umožní použitie rozšírení určených pre túto verziu.
  3. Riadkový editor bol ďalej vylepšený (viď tiež bod 10. na prvom zozname). Ak sa použije terminál kompatibilný s VT100 (napr. Hyperterminal, Tera Term), dajú sa použiť nasledujúce vlastnosti:
    • kurzor sa dá posúvať doprava a doľava použitím príslušných šípok
    • je možné vkladať text doprostred editovaného riadka
    • stlačenie ESC dvakrát za sebou spôsovbí vymazanie riadku (rovnako ako pôvodný Ctrl-D)
    • backspace a delete (ak sú nastavené v terminálovom programe správne ako rozdielne znaky) fungujú ako obvykle, t.j. "žerú" znaky sprava/doľava.

  4. Dajú sa editovať už zadané riadky. Zadaním čísla riadku nasledovaného bodkou (napr. "30.") sa zobrazí príslušný riadok a je možné ho editovať.
  5. Príkaz CALL sa dá teraz použiť s premennou ako parametrom.
  6. Portované pre P89V51RD2 so všetkými vlastnosťami (editovanie vo FLASH, simulovaná EEPROM) - momentálne však nie je verejne stiahnuteľná.
  7. Verzia pre AT89C51RD2/ED2 je naďalej voľne stiahnuteľná z týchto stránok, ale uvedomte si prosím, že ide o reportware - správa o použití, úspechoch či neúspechoch; postrehy a námety by mali doraziť na adresu [basic zavináč efton bodka sk].

Zmeny v BASIC52/RD2 v1.4 oproti BASIC52 v1.1

  1. Ako RAM sa využíva interná XRAM (1 kB u T89C51RD2 a 1.75kB u AT89C51xD2), takže nie je potrebné (avšak je možné v rozsahu 32kB) pripájať vonkajšie pamäte. Ako ROM sa využíva oblasť FLASH od adresy 8000h, a v tejto oblasti nie je možné použiť; externú EPROM.
    Pozn.: Na rozdiel od pôvodného BASIC52 bol znížený minimálny limit na RAM na 768 byte, takže je možné použiť v tejto konfigurácii aj mcu rady RD2 ostatných výrobcov (Philips, SST, Winbond). U týchto však na užívateľské dáta ostane púhych 256 byte (BASIC potrebuje pre seba 512 byte), a najmä tu nie je možné využiť rozšírenia týkajúce sa programovania FLASH, popisované v nasledujúcich bodoch.

  2. Boli upravené rutiny programovania ROM na programovanie FLASH (príkazy PROG, FPROG a PGM).
    Na programovanie sa používa bootloader, takže musí byť prítomný (viď upozornenie).

    Príkaz FPROG má zmenený význam:

    • FPROG parameter prepíše program na pozícii danej číslom v parametri, pričom sa zrušia všetky programy na vyšších pozíciách;
    • FPROG 0 zruší všetky programy vo FLASH;
    • ak sa zadá FPROG bez parametra, alebo parameter je väčší ako najvyššia pozícia, FPROG sa správa ako PROG bez parametra (t.j. program sa uloží na prvú voľnú pozíciu).

    Príkazy FPROG aj PROG vypíšu okrem programovanej pozície po ukončení programovania aj adresu posledného programovaného byte.
    Pozor, nie je kontrolované dosiahnutie najvyššej adresy vo FLASH, t.j. 0F800h resp. 0FC00h (tam začína u AT89C51xD2 resp. T89C51RD2 bootloader).
    Pozor, nie je možné programovať ak je nastavený program v ROM, t.j. programovať sa dá len program z RAM.
    Príkaz PROG0 má význam zrušenia PROG1 až PROG6 (t.j. sa prestane spúšťať automaticky program na prvej pozícii v ROM).

  3. Je možné editovať program priamo vo FLASH.
    Toto umožňuje písať programy väčšie než je dostupná RAM (aj bez použitia rozšírenej syntaxe - viď bod 4).
    Editovať je možné len program v ROM s najvyšším číslom (posledný). Je možné voľne pridávať riadky aj na začiatok či doprostred programu, len si treba uvedomiť, že to znamená presunutie zvyšku programu a tým preprogramovanie pomerne veľkej časti FLASH (aj keď je nepravdepodobné, že sa pri bežnom používaní prekročí 10000 programovacých cyklov stanovených výrobcom). Je možné použiť aj príkaz NEW.
    Nový program je najjednoduchšie začať tak, že príkazom RAM sa prepneme do RAM, zadáme NEW, potom PROG, čím sa naprogramuje do FLASH "prázdny" program, potom sa prepneme do tohoto programu príkazom ROM n (kde n je číslo tohoto programu) a môže sa začať programovať.
    Pri posielaní programu zo súboru si treba uvedomiť, že k času analyzovania jednotlivých príkazov v riadku je potrebné pripočítať aj trvanie zápisu do FLASH. Výrobca uvádza typický čas zápisu stránky asi 10ms, pričom jeden riadok programu typicky vychádza do dvoch stránok. V terminálovom programe je preto potrebné nastaviť adekvátny "line delay" okolo 100-300ms (podľa zložitosti a dĺžky riadkov v programe).

  4. Bola rozšírená syntax príkazu GOSUB (a rovnako aj GOTO, i keď v jeho prípade to nie je ktovieako užitočné), takže okrem GOSUB xxxx, kde xxxx je číslo riadku, je možné použiť aj príkaz GOSUB xxxx,yy, kde xxxx je znova čislo riadku a yy je pozícia programu v ROM (yy=0 znamená RAM). Je teda možné si do ROM pripraviť knižničné rutiny a potom ich volať z iných programov.

  5. Keďže sa interpreter zväčšil z pôvodných 8kB na cca. 10kB, rozšírenia, ktoré majú byť na adresách 20xxh sú teraz kontrolované a vykonávané na adresách 60xxh.

  6. Je možné použiť aj rýchlejší kryštál než 12MHz (resp. zadať jeho skutočnú hodnotu priradením do premennej XTAL).

  7. Je možné prepnúť mcu do režimu 2x (t.j. 6-clock) pridaním písmena X za hodnotu priraďovanú do premennej XTAL.

    Príklad: XTAL = 18432000X alebo XTAL= XTALX

  8. Je možné zapisovať a čítať do/z iternej EEPROM (samozrejme len u mcu, ktoré ju obsahujú) zápisom/čítaním do/z premennej DBY(n), kde n je v rozsahu od 100h do 8FFh.
    Upozornenie: V rozsahu adries 100h až 7FFh sa skutočne pristupuje k EEPROM s adresami 100h až 7FFh; v rozsaju adries 800h až 8FFh sa pristupuje k EEPROM s adresami 000h až 0FFh.
    Upozornenie 2: Pre správnu funkciu je potrebné nastaviť skutočnú frekvenciu kryštálu priradením do premennej XTAL.

  9. Je možné pre zápis/čítaie použiť všetky IO porty (s výnimkou P3.0 a P3.1, t.j. RxD a TxD), keďže už nie je potrebné ich využívať pre externú zbernicu. Zapisuje/číta sa do/z premenných PORT0, PORT2 a PORT3 (podobne ako u PORT1); spodné 2 bity zapísané do PORT3 sú ignorované.

  10. V riadkovom editore (pri editácii programu aj pri zadávaní do príkazu INPUT) je možné ako BACKSPACE (vymazanie posledného znaku) použiť okrem znaku 7Fh aj (o niečo štandardnejší) znak 08h (BS).
    Upozornenie: Pre funkciu programovania FLASH (vrátane možnosti písať program priamo vo FLASH) je nevyhnutné, aby bol v mcu prítomný bootloader (týka sa to T89C51RD2 kde je možné bootloader zmazať, v obvodoch AT89C51xD2 je bootloader fixný) a musí byť povolené IAP programovanie (t.j. nesmie byť nastavený security bit).