Yamaha CDX-820 CD-levysoittimen tuunaaminen
Tietokoneohjattu joulukuusi kytkentä
LCD paneelin ohjausta Z80 prosessorilla
Hulvaton lamppujen väläyttely homma, tämä jos mikä on taidetta.

Sivut on päivitetty viimmeksi
23, heinäkuuta 2010
Aikasi kuluksi voit ruokkia kultakalojani
Aloitin
siitä kun sain
käsiini kasan Zilog yhtiön valmistamia
8-bittisiä
Z80-mikroprosessoreja.
Aluksi
minulla ei tosiaan ollut muuta kuin
nämä
mustaan muoviin pakatut 40-nastaiset prosessorit. Halusin kuitenkin
saada tämän prosessorin toimimaan haluamallani tavalla.
Tunsin ennestään 8085 mikroprosessorin-, kone koodit. Z80-prosessori oli varsin helppo omaksua. Uutta opeteltavaa oli indeksi-rekisterien IX ja IY käyttäminen, sekä laajemmat tiedon siirto käskyt prosessorin sisältä ulkoisiin muistiosoitteisiin. Toistakin kautta kuin vain pelkästään A-rekisterin välityksellä. Tämän lisäksi suhteelliset (relative) hyppykäskyt olivat uutta. Kuten myöskin Z80-prosessorin kahdennettavat rekisterit. Puutteena 8085 prosessoriin verrattuna Z80:een puuttuvat SID ja SOD linjat sarjamuotoisen datan siirtoon, jonka omassa projektissani olenkin korvannut erillisellä (8251) uart-piirillä. Nyt sarjaportti toimii nopeuksilla 38400 / 19200 / 9600 / 4800 / 2400 / 1200 / 600 / 300 bit/s. Nopeuden voi ohjelmallisesti valita. Toteutus on vaatinut UART (8251)-piirin lisäksi kymmenen muuta piiriä yhden kiteen sekä transistorin. Toistaiseksi kokoonpano on toteutettu kahdelle kookkaalle reikälevyn palalle ja käyttämälla pitkäjalkaisia mikropiirikantoja, kytkentä on sitten erillisillä johtimilla kierretyökalulla johdotettu. Nuo pitkäjalkaiset mikropiirikannat muuten ovat montakertaa kalliimpia kuin niihin laitettavat mikropiirit.
Ensimmäisenä työnäni oli kasata laite ja ohjelmoida käyttöjärjestelmää, apunani oli Vesa Parkkarin kirja mikrotietokoneet josta löysin ensimmäiseen käyttöjärjestelmääni soveltuvan pohjan se täytyi vain soveltaa Zilog Z80-prosessorille. Alussa haastavaa oli saada hexanäppäimistö toimimaan. Saatuani koneeni vihdoin toimimaan siten että sain syötettyä RAM-muistiin koodeja jotka kone sitten suoritti, aloin lisäämään uusia ominaisuuksia ja lisää hardwarea. Kaikki apuohjelmat joita tarvitsin ovat omaa tekoani, ne on ohjelmoitu QBasicilla. Ohjelma joka muuttaa kirjoitetun konekielisen koodin binääriseksi tiedostoksi ja jonka voi polttaa Eprom muistille, sekä muita tarpeellisiksi katsoamiani apuohjelmia.
Näyttää vähän taskulaskimelta eikö vain. Samanlaisen työn teki aikoinaan Sir Clive Sinclair, tehdessään nelikko taskulaskimensa. Ja taisipa herra tienata samalla ensimmäiset miljoonansa. Tässä nyt sentään toimivat kaikki aritmeettiset laskusuorituksetkin. Käyttöliittymä on tosin hiukan kankea hex-näppäimistöltä mutta kaikkia toimintoja voidaan käyttää RS232-sarjaportin välityksellä, tämä mahdollista kaiken toiminnan etäkäyttöisesti normaalin tietokoneen kautta.
Lyhyt johdatus eri lukujärjestelmiin.
Kaikkien laskutoimituksien tarkkuus esitetään hexadesimaalisina 64-bittisinä liukulukuina jos 8-bittistä exponenttia ei lasketa mukaan. Yksi merkki (n) on neljä bittiä ja tavussa (nn) on kahdeksan bittiä, näin koko yhden luvun tarvitsema muistin määrä exponentti mukaan laskettuna on 64b + 8b.
nn nn nn nn nn nn nn nn - nn ( 9 - tavuinen luku )
jossa n voi saada jonkin hexadesimaalisen arvon 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F (hex).
0h=0000b=0d,1h=0001b=1d, 2h=0010b=2d ja Fh=1111b=15d
Kirjain luvun perässähän tarkoittaa seuraavasti käytettävää
lukujärjestelmää h = hexadesimaali, b = binääri ja d = desimaalinumeroinen esitystapaYhteen-, vähennys-, kerto- ja jakolaskut
Triconometriset funktiot sin-, cos-, tan- ja cotangentti sekä arctusin-, cos-, tan- ja arctuscotangentti mille tahansa radiaanikulmalle.
Neliöjuuri ja toiseen potenssiin korotus.
Kokonaisluvun ottaminen desimaaliosan sisältävästä luvusta.
Absoluuttisen luvun ottaminen.
Kertomat 2! - 140!, jotka on laskemisen nopeuttamiseksi valmiiksi laskettu taulukkoon.
Vertailun kahden luvun välillä, kumpi näistä on suurempi vai ovatko ne yhtäsuuria
Koneeni osaa laskea auringon nousu ja laskuajat halutussa paikassa maapallolla.