Turboassembler, Monitor a nic víc .... teda trochu začátku
stahněte
si turboassembler v7.0
V prvním díle naašeho programování v assembleru (dále jen ass.) jste mohli
číst o nekolika vhodných a méné vhodných nástrojích pro programování na Commodore
64.
Možná i tento díl pro assembleruchtivé nebude to pravé ořechové, ale určité
má své nezastupitelné místo v programování.
Tento díl věnuji popisu funkcí turboassembleru a srovnání s klasickým monitorem.
1. Turboassembler a funkcí, že hlava prechází ....
Nutno na začátek napsat, že turboassembler se standartně nahrává do paměti
C64 od adresy $9000, což znamená, že jakmile program nahrajete z diskety,
sám se nespustí. Spustit ho musíte vy příkazem
SYS 4096 * 9
Po spuštění turboassembleru se následný start může provádět klávesou
RESTORE. Budete-li mít problém se spuštěním v basicu, zkuste
před SYSem zadat ještě příkaz NEW odešlete jej Returnem.
®ádné klikání , pouze klávesové zkratky. Programování bez adres. Nastavuje
se pouze zacátek programu. Vše je rešeno pomocí labelu. tj. textovych ukazatelů.
Nejdříve by se hodil malý seznam funkcí pro práci s textovým editorem.Takže
po pořádku.
Většina funkcí se vyvolává klávesou "šipkavlevo" a následné zmáčknutí
funkční klávesy.
Následující funkce se vyvolávají přímo .. bez použití šipky.
DEL |
smaže znak |
+ DEL |
smaže celý rádek |
INS |
prepíná mezi prepisováním a vkládaní textu. (z PC známé INSERT). |
RETURN |
skáče dolů s posunem řádků (char line) a bez posunu |
Režim pro přepisování znaků je znázorněn pomocí ukazatele ve status řádku
dole na obrazovce.Char line je posun textu při vkládání jiného.
I funkční klávesy jsou zavaleny funkcemi. A to jak samotné bez šipky, tak
i s funkční šipkou. Následující funkce nepotřebují ke své činnosti šipku.
F1 |
skok o 20 řádků nahoru |
F2 |
skok na samotný začátek programu |
F3 |
programovatelná klávesa ... standartně nastaveno vkládání textu .text
" " |
F4 |
programovatelná klávesa ... stadartně nastaveno debugování a spuštění
programu |
F5 |
programovatelná klávesa ... stadartně nastaveno vložení textu .byte
$ |
F6 |
programovatelná klávesa ... stadartně nastaveno umazání a posun řádku |
F7 |
skok o 20 řádků dolů |
F8 |
skok na samotný konec programu |
Tady se musím zmínit o možnosti nastavit si vlastní funkce pro klávesy F3
- F6. Toto se nastavuje pomocí kombinace + K.
Funkce vám nabídne výběr funkční klávesy a poté si zadáte svůj příkaz nebo
kus textu ... to je na Vás.
!! TIP !! |
Existuje i možnost, že po provedení vašeho příkazu se provede
posun o řádek níže, posun kurzoru zpět a podobné vychytávky. Tyto "skryte"
vlastnosti těží ze systému Commodore. Vše se provádí následovným způsobem:
příklad : Potřebujete , aby se po zmáčknutí klávesy F6 napsal text
.byte $00, a aby kurzor skočil na další řádek automaticky.
Napíšeme tedy požadovaný text .byte $00 napíšeme uvozovky a zmáčkneme
CTRL + RETURN. |
* |
Znak * nastavuje počátek programu v paměti
kam se bude zdrojový text překládat.
Příklad: * = $1000 -- Program se bude překládat od adresy
1000 v paměti. |
; |
Za znak (středník) se píše komentář k programu.Za středníkem se text
nepřekládá.
Příklad : LDA #$ 00 ; načteme do akumulátoru |
Seznam funkcí pro práci s turboassemblerem
Následující funkce jsou po zmáčknutí šipky vlevo (některé funkce mohou
být v různých verzích jinde nebo jiné )
A |
Použití všech znaků pro editaci, včetně systémových (tj.
znaky funkční jako plné M = return a pod.) |
B |
Operace s bloky , kopírování, mazání a zapsání bloku. (blok musí
být nastaven !) |
C |
Studený start Turboassembleru |
D |
Diskové příkazy |
E |
Načíst a vložit sekvenční data ze zařízení |
F |
Najít data |
F + Shift |
Vyplnit oblast v paměti zadanou hodnotou |
G |
Skok na značku do paměti. (značka musí být nastavena. Možno skákat i
na začátek nebo konec bloku, jeli nastaven) |
H |
Pokračování hledání po funkci + F |
I |
Inicializace paměti. Program smaže vše zadanou hodnotou |
J |
Dump paměti, neboli pouze výpis dat z paměti ve formátu $adresa >
$hex > $char. Výpis je na obrazovku. |
K |
Změna funkčních kláves |
K + Shift |
Keyklick on/off neboli zapínání a vypínání zvuku na stisk klávesy. |
L |
Nahrát zdrojový soubor |
L + Shift |
Nahrát normální soubor (hudba, znaky) od zadané adresy |
M |
Nastavit značku 0 - 9 nebo S (start bloku) a E (konec bloku) |
N |
Skok na řádek číslo .. |
O |
Změna barev prostředí |
P |
Nastavit EOR kód |
Q |
Kurzor skočí na X-ovou souřadnici na řádku obrazovky. |
R |
Nahradit text |
S |
Uložit zdrojový text |
S + Shift |
Uložit jakoukoliv část paměti od adresy po adresu |
U |
Uloží / zobrazí textové LABELY na obrazovku nebo na disk |
V |
Zobrazí volné bloky paměti |
W |
Uloží SEQ sekvenční data |
tyto příkazy však nejsou vše. Existují i příkazy upravující editor pro pohodlnější
práci.Opět se šipkou doleva.
1 |
Výskok z turboassembleru. Neztrácí se data. |
2 |
Vloží komentář přes celou textovou řádku ve formě minusek ;---------------------------- |
3 |
Zassembluje zdrojový text, zkontroluje chybovost a automaticky spustí |
4 |
Vytiskne soubor |
5 |
Vytvoří Objektový soubor. Uloží pouze přeložená data v bloku. |
6 |
Vloží do vašeho zdrojového textu data od adresy $start do adresy $end
v podobě $byte $xx, a dále... |
7 |
Změní tabulátor na aktuální pozici kurzoru. (tato funkce funguje jen
v některých verzích tass.) |
- (minus) |
Vypočítá vám 16-ti bitový rozdíl. |
+ (plus) |
Vypočítá 16-ti bitový součet. |
= |
Vymaže celý aktuální řádek |
/ |
Vymaže jen data na aktuální řádce, label ponechá |
: |
Zobrazí všechny značky včetně start a end. |
; |
Smaže následně vybranou značku. 0-9, S, E |
* |
Zobrazí adresář disketové mechaniky |
libra |
Zkopíruje aktuální řádek do bafru |
šipka nahoru |
Vloží řádek z bafru |
F1 |
Resetuje nastaveni F kláves |
|
|
Formát dat, texty, proměnné ....
Každý program v turboassembleru (dále tass.) musí začínat znakem hvězdičky.
Jak bylo již výše napsáno.např: * = $1000
Na rozdíl od klasického monitoru (jednoduchý program pro práci s assemblerem)
umí tass. pracovat s několika formáty dat a hodnot.
Zadávání hodnot BYTE
Tass umí nejen pracovat s hexadecimální soustavou, ale i s desítkovou a binární
!! Což je extrémně usnadnující práci hlavně s bitovými operacemi.
Hodnota 10 (decimálně) se dá zapsat takto :
Zadávání hodnot WORD
Další způsob zadávání hodnot v tass je používání 16-ti bitových hodnot, či
adres. Hodnota .word $A234 se v paměti C64 uloží následovně.
Dejme tomu, že hodnotu WORD ukládáme od adresy $2000.
.d 2000 : 34 ; lo-byte
.d 2001 : A2 ; hi-byte
to znamená, že 16-ti bitové číslo se vždy !! uchovává do paměti ve formátu
nejdříve LO-BYTE a následně HI-BYTE čísla
Zadávání textu
psaní textu je velice jednoduché. Text se ukládá pomocí kódu .text
"nejaky text". Použití je velice jednoduché. Názorný příklad
hovoří za vše.
POZOR !! Text se neukládá do paměti tak jak ho vidíte na obrazovce, ale v
kódech ASCII
První část obrazovky je zdroj .. text od adresy 2000 hexa ... spodni cast
je vypis prelozených dat v monitoru.
OFFSETY později
Offset je příkaz, který dělá jednu věc. Posunuje disassemblovaný zdroják
v paměti o zadanou hodnotu. Využití se ukážeme později, obvykle není potřeba
tento příkaz hodně dlouho. Nemám jej rád, což ovšem neznamená, že se k němu
nedostaneme později.
LABELY neboli proměnné v textu
Labely se rozumí ukazatel ve zdrojovém kodu, na který můžeme ukazovat, číst
ho, přiřazovat mu hodnotu, adresy a to vše spolu kombinovat.
Na obrazovce je názorně ukázáno, jak se dají labely používat. Nejen jako
ukazatele hodnot, ale labely se daji scitat nebo odcitat.
Závěr
Myslím, že tento článek docela podrobně popisuje možnosti Turboassembleru,
kterýžto se stane Vašim denním chlebem, myslíte-li to s programováním vážně.
Výhoda oproti jiným platformám .. teď mám na mysli i PC je ta, že zde jste
opravdu schopni vyhrát nejen softwarově, ale vaše schopnosti vám dovolí proniknout
do tajů hardware ... programování grafiky, zvuku do takových hloubek, do kterých
Vám PC ani nedovolí přistoupit.