<< Zpět

 

  Česky: , English:

WCH80

BabyPC

Klon počítače ZX80 s procesorem CH32V002

Verze 1.0; poslední aktualizace: 20.9.2025

WCH80 na GitHub: github.com/Panda381/WCH80

WCH80 součástí knihovny CH32LibSDK

Knihovna CH32LibSDK na GitHub: github.com/Panda381/CH32LibSDK

Obsah

 

Popis

WCH80 BabyPC je levný mini-počítač se 2 procesory CH32V002, vytvořený po vzoru počítače ZX80. Nejedná se o emulátor, počítač neemuluje ROM počítače ZX80 a ani neemuluje strojové instrukce Z80. Byl vytvořen jako zcela nezávislý počítač s programovacím jazykem BASIC80 a výstupem na VGA monitor, funkci ZX80 pouze co nejvíce napodobuje. Používá procesor CH32V002A4M6, který je díky velké rozteči pinů 1.27mm vhodný ke snadnému letování i konstruktérům začátečníkům. Spolu s ostatními THT součástkami je WCH80 vhodný především jako stavebnice pro začínající konstruktéry. Vestavěný programovací jazyk BASIC80 slouží k seznámení se s programováním počítačů a k vyzkoušení, jak se programovalo programátorům v letech 1980.

Počítač neobsahuje paměťové médium k ukládání programů. Vlastní programy lze ukládat přímo do flash paměti procesoru. K dispozici je 14 paměťových slotů, tedy 14 míst k uložení vlastních programů, číslovaných 0 až 13. Slot 0 se nachází v hlavním procesoru CPU1. Spolu s programem se při uložení do slotu 0 uloží i datové proměnné (přesněji pouze první polovina paměti s proměnnými). Slot 0 se automaticky nahraje do programové paměti po zapnutí počítače. Paměťové sloty 1 až 13 se nachází v druhém procesoru, CPU2. Všechny sloty umožňují uložení celé paměti s programem, kromě posledního slotu 13, který má pouze poloviční velikost.

Po prvním naprogramování procesorů obsahují sloty 28 ukázkových programů a her, vytvořených v jazyku BASIC80. Po naprogramování procesorů již programátor není potřeba - ale může být užitečný v případě, kdy si chcete obsahy procesorů zálohovat do PC, nebo když chcete měnit verze programů. S využitím slotu 0 lze programy přenášet i mezi různými zálohami paměti procesoru, kopírováním mezi procesory CPU1 a CPU2.

Kromě firmware s BASIC80 je možné do počítače programátorem nahrát i hry a programy, vytvořené v jazyku C. Je připraveno 25 ukázkových her. Hry naleznete v knihovně CH32LibSDK. Je třeba ovšem pamatovat na to, že přeprogramováním procesoru CPU1 se přepíše i obsah slotu 0. Obsahy slotů 1 až 13 v CPU2 se nahráním her nemění. U her v C kódu se obvykle používají k ovládání klávesy: 8,F=vpravo, 7,E=nahoru, 5,S=vlevo, 6,D=dolů, A,mezera=akce, B,NEW LINE=alternativní akce, X,P=info, Y,0=zpět.

Rozdíly WCH80 oproti ZX80:

Znaková sada WCH80:

 

Schéma zapojení

WCH80 obsahuje dva procesory CH32V002A4M6. První procesor, CPU1, je hlavní procesor. Obsahuje BASIC80 nebo programy a hry. Obsahuje-li BASIC80, je posledních 1.5 KB flash paměti rezervováno pro uložení programu a dat, jako paměťový slot 0. Procesor je řízen krystalem o frekvenci 25 MHz. Krystal (ani příslušné kondenzátory) nemusí být nutné použít - v tom případě procesor použije interní HSI oscilátor, který ovšem nemusí mít dostatečnou stabilitu - projeví se mírným roztřesením videolinek v obraze.

Druhý procesor, CPU2, slouží jednak k řízení matice kláves, a jednak k ukládání programů, jako paměťové sloty 1 až 13. Procesory spolu komunikují pomocí USART interface. Po naprogramování procesoru CPU2 je nutné provést reset počítače odpojením napájení, aby procesory navázaly spolu spojení. Procesor CPU1 se programuje přes konektor SWIO1, procesor CPU2 přes konektor SWIO2. Po prvním naprogramování procesorů lze využít ukázkový program ve slotu 0 ke kontrole funkčnosti. Po zapnutí napájení stiskněte tlačítka R (=RUN) a NEW LINE. To lze provést i bez připojeného monitoru. Ze zvukového výstupu by se mělo ozývat pípání v 1-sekundových intervalech.

 

Konstrukce

V prototypu jsem použil jednostranný plošný spoj vyrobený fotocestou o rozměru 10x7.5 cm (omezení free verze Eagle), proto není jisté, zda je návrh připravený i pro zakázkovou výrobu plošných spojů. Použil jsem THT součástky, aby bylo sestavení snazší - včetně rozměrného USB-B konektoru. Namísto horní strany plošného spoje jsem použil drátové propojky. Při programování procesorů pozor na správné přiřazení pinů. Pro krystal jsem použil objímku - jen z důvodu, abych mohl testovat funkčnost bez krystalu. Jako tlačítka jsou použité mikrospínače s malou silou stisku.

Popisku tlačítek jsem vytiskl na inkoustové tiskárně na běžný papír, ten z obou stran polepil průhlednou lepící páskou a vysekl otvory pro tlačítka výsečníkem na kůži 4mm. U koncové konstrukce zřejmě použijete jako horní kryt plošný spoj s otvory a popisy tlačítek.

 

Popis jazyku WCH80 BASIC80

WCH80 BASIC80 je téměř shodný s jazykem ZX80 BASIC, až na pár odchylek. Editace programu probíhá v RAM paměti. Maximální velikost programu je 1 KB. Datové proměnné se ukládají do samostatného bufferu v RAM paměti, také o velikosti 1 KB. Buffer obrazovky má pevnou velikost 768 bajtů (24 řádků textu po 32 znacích).

Číslo programového řádku může být v rozsahu 1 až 65534. Výpočty probíhají s celými 32-bitovými čísly, v rozsahu -2147483648 až +2147483647 (poznámka: konstantu -2147483648 nelze číselně zadat, ale při výpočtech se používá). Názvy proměnných všech typů mohou mít délku 1 až 63 znaků. Prvním znakem musí být písmeno. Další znaky mohou být písmena, číslice a tečka. Tečku lze použít jako oddělovač slov. Proměnné mohou být typu:

Výsledkem porovnávacích operátorů je číslo 0 (=podmínka nesplněna) nebo -1 (=podmínka splněna, v HEX kódu je to číslo 0xFFFFFFFF). Operátory AND, OR a NOT lze použít jako logické operátory i jako bitové operátory.

Klávesy pro editaci programu:

Operace, setříděno od nejvyšší priority:

Pozor na to, že operace násobení má vyšší prioritu než operace dělení.

Příkazy - mohou být jen na začátku řádku nebo za příkazem THEN, vyvolají se stiskem písmene:

Speciální povely:

Funkce - funkce je nutné napsat textově, nemají klávesovou zkratku:

Tabulka grafických symbolů a jejich kódů, jak je lze zadat ve funkci CHR$(n):

 

Ukázkové programy

Ukázkové programy jsou uložené ve flash paměti v paměťových slotech 0 až 13, dokud nejsou přepsány uživatelským programem. Obsahy programů naleznete v souboru Programs.txt, spolu s jejich podrobnějšími popisy, nebo klikněte na titulek pod obrázkem.


1)
WCH80 demo (212 B)
To use: LOAD, RUN

2)
PRINT CHARSET (57 B)
To use: LOAD 1, RUN

3)
PRECISE DIVISION (197 B)
To use: LOAD 1, RUN 100

4)
SQUARE ROOT (188 B)
To use: LOAD 1, RUN 300

5)
DIE THROWING (440 B)
To use: LOAD 1, RUN 500

6)
SNOWFALL (117 B)
To use: LOAD 1, RUN 1100
Break with SPACE

7)
REACTION TIMER (153 B)
To use: LOAD 2, RUN

8)
RND HISTOGRAM (230 B)
To use: LOAD 2, RUN 200

9)
LEAP FROGS (487 B)
To use: LOAD 2, RUN 500
The goal is to swap the frogs between the left
and right sides.

10)
ENCODING MESSAGE (375 B)
To use: LOAD 3, RUN
Encode with number 1.., decode with negative
number. Message can contain only alphabetic
characters or digits or space.

11)
HORSE RACE (602 B)
To use: LOAD 3, RUN 400

12)
LUNAR LANDER (617 B)
To use: LOAD 4, RUN

13)
MAZE GENERATOR (360 B)
To use: LOAD 4, RUN 600

14)
TIC-TAC-TOE (618 B)
To use: LOAD 5, RUN

15)
DRAWING (403 B)
To use: LOAD 5, RUN 700

16)
MASTERMIND (442 B)
To use: LOAD 6, RUN

17)
DAY OF WEEK (457 B)
To use: LOAD 6, RUN 500

18)
SQUARE ROOT (425 B)
To use: LOAD 7, RUN

19)
SIMPLE SIMON (443 B)
To use: LOAD 7, RUN 400

20)
KING HAMMURABI (831 B)
To use: LOAD 8, RUN

21)
PRIME NUMBERS (169 B)
To use: LOAD 8, RUN 700

22)
CASTLE DOORS (1018 B)
To use: LOAD 9, RUN

23)
ACEY DEUCEY (In-Between) (644 B)
Player wins if third card lies between two cards.
To use: LOAD 10, RUN

24)
CHEESE NIBBLER (312 B)
To use: LOAD 10, RUN 600

25)
RPN CALCULATOR (734 B)
To use: LOAD 11, RUN

26)
HEX MANDELBROT (285 B)
To use: LOAD 11, RUN 700

27)
FLAPPY'S SONG (922 B)
To use: LOAD 12, RUN

28)
MATCHES (499 B)
To use: LOAD 13, RUN

 

Ke stažení

Download podkladů k WCH80 BabyPC. Podklady jsou též součástí knihovny CH32LibSDK.

Ve složkách naleznete:

Miroslav Němeček

<< Zpět