Programátoři z pekel zde za šat a stravu programují čipová pseuda. Nyní s favicon!

Všechno je jednou poprvé

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 1

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.