GILHAD: Jak jsem zmínil tady, tak to je grafická karta k budoucímu počítači, tak už jsem se zase dostal k práci na tom počítači samotném a začíná to mít i hmatatelnou podobu
Navrhuju si naprosto úžasný počítač (už asi dva roky) a teď jsem se dostal k tomu, že na základní desce jako GLUE logiku budu mít dvě ATF1504 (protože jedno nemá dost nožiček) a to první (ATF1) bude bude více méně adresový dekódér. Napsal jsem si na to ATF1.pld a cvičmo ho nahrál do
breakboardu k otestování.
Testoval jsem klasicky - drátkama navolil adresu, řídíci signály, podíval se, zda vypadají rozumně, zkusil jinou adresu ... a jako vždy strašně zápasil s malými rozestupy, tlustými prsty, vypadávajícími drátky a tak podobně.

Prostě nožiček moc, chce to nějakou automatizaci, že si zadám adresu a budu cvičit s řídícími signály a koukat, jak se to dekóduje.
Takže jsem vytáhnul
Božské Arduino (tm), nahrál do něj univerzální
FORTH, napsal a odladil prográmek pro sériovou komunikaci, kde zadám adresu a písmenko x (vyvolani prislusne funkce) a on vypíše adresu hexa, binárně a pošle ji na příslušné piny. Pak jsem zapojil drátky na vstup toho ATF1, a otestoval to. Celé mi to zabralo necelou hodinu práce od rozhodnutí se do toho pustit, přez psaní a vylepšování výstupu a hledání chyb, přez zapojení drátků (a odhalení, že potřebuju společnou zem opravdu propojit) až do finální funkčnosti, kdy jsem rutinně testoval tu logiku (nikoli ladil přípravek k testování).

Ukazka kusu skutečné komunikace (tlustě uživatelský vstup - číslo a funkce)
Addr: a103; bin: 1010 0001 0000 0011 ; -»a104 [A104]-»x
Addr: a104; bin: 1010 0001 0000 0100 ; -»A103 [A103]-»x
Addr: a103; bin: 1010 0001 0000 0011 ; -»8000 [8000]-»x
Addr: 8000; bin: 1000 0000 0000 0000 ; -»7fff [7FFF]-»x
Addr: 7fff; bin: 0111 1111 1111 1111 ; -»8000 [8000]-»x
Addr: 8000; bin: 1000 0000 0000 0000 ; -»7fff [7FFF]-»x
Addr: 7fff; bin: 0111 1111 1111 1111 ; -»9000 [9000]-»x
Addr: 9000; bin: 1001 0000 0000 0000 ; -»a000 [A000]-»x
Addr: a000; bin: 1010 0000 0000 0000 ; -»a001 [A001]-»x
Addr: a001; bin: 1010 0000 0000 0001 ; -»
Výsledný prográmek "z jedné vody na plot"
hex
: CRLF A EMIT D EMIT ;
: binnum ( x -- ) ( print as 0000 )
DUP 8 AND IF 1 ELSE 0 THEN .
DUP 4 AND IF 1 ELSE 0 THEN .
DUP 2 AND IF 1 ELSE 0 THEN .
DUP 1 AND IF 1 ELSE 0 THEN .
DROP
;
: SP 20 EMIT ;
: 2bin ( x -- ) ( print as 0000.0000.0000.0000 )
DUP 1000 / binnum SP
DUP 100 / binnum SP
DUP 10 / binnum SP
DUP 1 / binnum SP
DROP
;
: x ( addr -- ) ( send addr to ports F K (A0..15) and print it)
BASE C@ SWAP
CRLF ." Addr: " DUP hex . ." ; bin: " DUP 2bin ." ; "
ff DDRF C! ff DDRK C!
DUP 100 / PORTK C! ff AND PORTF C!
BASE C!
;
Výhoda interaktivního programovatelného shellu je zejména v tom, že když za chvíli zjistíte, že testujete několik málo kombinací, tak prostě bez restarů, překladů a vypalování jen připíšete další funkci/slovo a pak už jen mačkáte klávesu :)
: y
7000 x KEY DROP
8000 x KEY DROP
9000 x KEY DROP
A000 BEGIN
DUP x KEY DROP 1+
DUP A022 = UNTIL
DROP
A040 x KEY DROP
A060 x KEY DROP
A100 x KEY DROP
;
(Ano, umělák, co mi radil se syntaxí PLD a rovnicema to samozřejmě zvoral a měl tam několik chyb. To jsem čekal, proto taky to důkladné testování :) )