Replicu I už mám skoro tři roky. Poté, co mi ji Dex věnoval kvůli „neopravitelné“ závadě, která šla opravit výměnou jednoho stabilizátoru, jsem si o ní něco málo nastudoval, ukázal jsem ji na pár akcích, zkusil si trochu toho BASICového programování a nic moc víc. Pak se objevila další závada, kterou ale vyřešil Sillicon svými mysteriózními postupy (stále mu za to dlužím láhev, vedu to v patrnosti) a tak jsem se rozhodl, že je na čase se do toho trochu ponořit.

Replica I není tak krásná jako jiné existující repliky, které originální stroj napodobují do nejmenších detailů, je však perfektně funkční a pokud se o Apple I zajímáte jako o počítač a nikoliv o sběratelský či investiční artikl, pak poslouží dokonce lépe. Obsahuje totiž od adresy $F000
assembler Krusader a tak je možné přímo na ní psát v assembleru.
Aby člověk mohl něco napsat v assembleru, musí ten assembler nejprve umět. Osobně neumím assemblery hned několika procesorů, například Z80 či 8086, je tedy na čase neumět ještě jeden. Ano, je to tak: začal jsem zkoumat assembler tříregistrového zázraku zvaného MOS 6502. Prozatím píšu jen na PC, assembluju pomocí ASu a zkouším to v emulátoru. Jako studijní materiály mi slouží originální manuál k Apple I (zejména listing Wozova monitoru), popis jednotlivých instrukcí a ukázkové zdrojáky od autora Krusaderu.
Ten procesor je až neuvěřitelně jednoduchý, instrukcí má doslova pár, celkem dobře se v tom orientuje, jen mi to občas přijde celé takové naruby – periferie jsou mapované do paměti, co bych čekal že půjde dělat s akumulátorem jde jen s pamětí atd. Posuďte sami, tady je můj první „Hello world“:
cpu 65c02
relaxed on
dsp equ $D012 ; tady je znakovy generator
start org $300 ; startovaci adresa
tout ldx tsize ; do X hod delku textu
tloop lda text-1,x ; do A nacti znak z polohy text-1+x
; (tj. zacina se na konci a jde se zpet)
tloop2 bit dsp ; zjisti zda je znakovy generator pripraven
bmi tloop2 ; pokud neni zkus to znovu
sta dsp ; jinak do nej nacpi nacteny znak
dex ; X=X-1 (posun na predchozi znak)
bne tloop ; pokud X>0 nejsme na konci textu
; a tudiz jedeme smycku znovu s novym znakem
jmp tout ; jinak skok na zacatek programu
;(program vypisuje hello world porad dokola)
text byt 10, "DLROW OLLEH"
tsize equ 12
Zcela určitě to jde i nějak normálně, nezbývá než se učit, se učit, se učit! Do ByteFestu času zatím dost a snad se mi podaří něco pěkného vytvořit. Prozatím má doufám Dex radost z toho, že jsem použil instrukci, jejímž je jmenovcem.
Hezké.
Zvlášť když uložení textu pozpátku umožní použít jen jeden ukazatel pro počet znaků k vytištění i na právě tisknutý znak společně.
Tříregistroví děkují.
Neslo by ten zdrojak okomentovat? Vubec nevim ktera bije 🙁
[2] Okomentováno. Stačí to takhle?