Uutiset:

C=Foorumi suosittelee: Skrolli
http://www.skrolli.fi

Main Menu

Pakkohan se oli kokeilla

Aloittaja rams, kesäkuu 02, 2011, 23:17

« edellinen - seuraava »

rams

Lueskelin tuossa hyvää C64 kirjaa: http://www.atariarchives.org/ecp/index.php ja rupesin miettimään, notta oisko se kovinkin hankala homma (näin niinkuin ilman mitään elektroniikkakoulutusta) käyttää joystickin porttia tiedonvälitykseen. Tyyppailin aluksi emulaattorilla ja sen vuoksi erheellisesti luulin että portti on tyypattu niin, että aktiivisina (ts. alhaalla) voi olla vain kaksi suuntapinniä kerralla.

Tämän erheen takia päädyin tekemään kahden pinnin sarjaliitännän siten, että tulitusnappi on "kello" ja joystick ylös on "data". Rakensin proton, missä on mikrokontrolleri ja pari transistoria. Itse siirrettävä data poltetaan mikrokontrollerin muistiin muun ohjelman mukana. Toimintaperiaate on se, että aina kun tulitusnappi menee alas (l. yhdistyy maahan), luetaan toisen pinnin tila. Kun tämä on tehty kahdeksan kertaa, saadaan tavu dataa siirrettyä.

Ensimmäinen versio siirsi ja tulosti lyhyitä viestejä. Viimeinen versio (alla) siirtää ohjelman annettuun muistiosoitteeseen ja käynnistää sen. Viimeisimmässä versiossa lähetetään ohjelman koko (max. 256 tavua vielä, täytyy muuttaa se 16 bittiseksi) ja sen jälkeen prg tiedosto tavu tavulta.

Ohjelma on vielä basicilla tehty. Ehkä teen sen assemblerilla jossain vaiheessa, niin tiedonsiirtonopeuskin saattaa kasvaa. (Ohjelmassa saattaa olla virheitä, kun kirjoittelin sen sokkona kuusnepan ruudulta).


1 goto 200
9 rem ***** GETCHAR *****
10 a = 56320
11 count = 0
12 pin = 0
13 b = 0
15 res = 0
20 if (peek(a)and(2^4)) = 0 then 60
30 goto 20
60 pin = peek(a)and(2^0)
80 if (peek(a)and(2^4)) then 100
90 goto 60
100 if pin then 120
110 res = res + 1
120 count = count +1
130 if count = 8 then 160
140 res = res * 2
150 goto 20
155 rem ***** END GETCHAR *****
160 b = res
170 return
200 b = 0
210 gosub 10
220 prl = b
225 print "program length:"; prl
230 gosub 10
240 ada = b * 256
250 gosub 10
260 ada = ada + b
265 prl = prl - 2
275 oad = ada
278 print "address:"; ada
280 for x = prl to 0 step -1
285 print "bytes to go:"; x
290 gosub 10
300 poke ada, b
310 ada = ada +1
320 next
330 sys oad


Ensimmäinen siirrettävä laadukas ohjelma:  ;)


    processor 6502
    .org $c000
ldx #$0
LOOP
stx $d020
stx $d021
inx
jmp LOOP



Täytyy hommata lisää transistoreita ja muuttaa toi ohjelma niin, että siinä siirretään neljää bittiä kerralla yhden sijasta.


virgo

kuulostaa mielenkiintoiselta projektilta :)
jos ymmärsin oikein ajattelit siirtää dataa kahden C64 välillä ?
tähän tietysti oikea ja nopein vastaus on serial väylä tai kytkeä kaksi konetta yhteen levariin xD

mutta palataksemme sinun versioosi

neljän bitin siirtäminen kerralla kuulostaa näppärältä
digitaali hemmona neuvonkin jättämään trankut pois ja käyttämään
74xx245 TTL (LS,F,L) piiriä vaikka se onkin 8 bittinen voi ylimääräiset jättää käyttämättä
nerous piirissä on se että se avulla voit suojata molemmat koneet
ja se huolehtii keskusteluista molempiin suuntiin DIR ja G pinnien avulla valitaan kuka puhuu ja mihin suuntaan

fire nappi aktivoijana on hyvä valinta koska sille on oma keskeytys rekisterinsä jolla voidaan IRQ keskeytys
käynnistää ilman odottelu looppeja vähän samaan tapaa kuin kasetti asemassa Fläg keskeytys


Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500

rams

Joo, voisihan tuota kahden koneenkin väliseen liikennöintiin käyttää. Oma lähtökohta on se, että minulla ei ole levyasemaa ja haluaisin siirtää kehittelemääni koodia PC:ltä (linux) kuusnepaan mahdollisimman vaivattomalla tavalla (koodaus kun on pari astetta mukavempaa PC:n puolella).

Aloitin tuon tiedonsiirtoprotoilun joikkariporteista, kun ne on yksinkertaisimmat ja minulla sattui olemaan vanha joikkarijohto käsillä. Tässä protossa siis oli kiinni mikrokontrolleri (attiny2313), joka syötti kovakoodatun binääridatan kuusnepaan ajettavaksi. Tarkoitus olisi laatia se 4-bittinen versio, tehdä kuusnepan lukuohjelma assemblerilla ja sitten siirtyä rom-laajennusten ja käyttäjäportin kiusaamisen pariin.

Kehittyneemmässä versiossa tulisi sitten varmaan olemaan sekä luku eepromilta että pc:ltä. Täytyykin etsiskellä tuollainen 74xx245 jostain.

Joikkariporteissa kiinnostaa myös noi analogiainputit. Niihin kun kytkisi jotkut paineanturit tms... Ihan ensimmäisenä tulee mieleen tankkipeli jossa on kummallekin telaketjulle oma ohjain ja yhden analoginapin autopeli (ohjaus) jne. jne. Tai sitten jotain tähän tapaan http://video.google.com/videoplay?docid=7458010617518035494 :D


virgo

74LS245 tai 74F245
löytyy melkein mistä prossa ohjatusta systeemistä se on yksi perus komponentteja

suosittelen
64hdd linux kopiota itse en ole testannut vielä Linuxia tuohon vasta löysin tuon projektin

http://vc1541.sourceforge.net/vc1541/about.html

homma toimii
koodaan softan ja käännän sen (tass). käynnistän 64hdd
(tässä tapauksessa vc1541 tai jos se on viisaampi pyörii se taustalla koko ajan en ole vielä testannut tuota)
ja luen tehdyn ohjelman C64 seen
sys xxxx dadaa !
itse asiassa kyseistä konstia olen käyttänyt vain kerran
aika sujuvasti sekin toimi muutaman scriptin kirjoittaminen saattaisi helpottaa kylläkin näpelöinnin määrää

mutta oikeasti käytän TurboAssempler ohjelmaa c64sessa

http://turbo.style64.org/

olisi tietysti mukavaa jos näyttö olisi suurempi
voi kirjoittaa coodia ja palata testailun jälkeen takaisin
hyvin kätevää
oma versioni on jotain 1.0 tai 2.0

tosin rakentelun ja löytämisen innostushan tuossa katoaa kun
kaikki tuodaan valmiina :]
oikea tai feikki Levyasema helppaa ohjelmoinnissa ja testauksessa paljon ;)

mielenkiintoisia peli ideoita ;)
itse en ole mikään graaffikko mutta koodia kyllä syntyy...
Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500

rams

Joo, kyselit toisessa keskustelussa peli-idean perään, niin tossahan sitä olisi hyvä perusajatus: tehdään yksinkertainen peliohjain, opetellään käsittelemään sen syötteitä ja rakennetaan peli siihen ympärille. Minun mielestä toi kuusnepan laajennettavuus / helpot liitäntämahdollisuudet on sen mielenkiintoisimmat ominaisuudet vaikka usein jäävätkin vähemmälle huomiolle.

Tuollaisessa projektissa tulisi esiteltyä oikeastaan koko kuusnepa kaikessa kauneudessaan.

PS. ainoastaan Tosimies käyttää 64:n näppäimistöä koodaamiseen itkemättä. Minä itkin. ;)

virgo

totta jos itse olisin aloittanut ohjelmoinnin täysiverisellä PC näppiksellä
niin itkisin myöskin kursori näppis systeemi nelkussa on hermoja raastavaa
ellei siihen olisi tottunut.  ehkä siksi en edelleenkään meinaa osata kirjoitaa Pc näppiksellä
vielä kun väliin osui tuo Amigan näppiskin jollain tavalla nekin eroavat toistaan
hyppääminen 3 eri näppiksen välillä on joskus raastavaa
onneksi D128 on tällä hetkellä poissa pöydältä sotkemasta entisestään tätä palettia xD

aikoinaan c64 näppis oli pakko opetella koska muuta ei ollut
muistan itsekin miten kirosin tuota aikanaan
joten päätin väkisin opetella sen ja aloin kirjoitaa Basic illa texti pelejä
puolivuotta tai vuosi siinä meni ennen kuin alkoi luistamaan

siihen oppi eikä pois osaa enään
on syöpynyt niin korteksiin tuo C64 näppis ;)

nykyisin koitan opetella käyttämään noita kääntäjiä (Tass)
on jokseenkin vaikeaa tottua siihen ettei ihan heti pääse testaamaan ohjelmaan tehtyä
muutosta kuten nelkulla ohjelmoitaessa se on siinä niin helppoa
kääntäjän kanssa pitää siirrellä ohjelmia koneiden välillä käynnistellä ohjelmia...
ennen kun pääsee näkemään muutoksen

sitä alkaa oppimaan ohjelmoimaan ilman että tarvitsee koko ajan tarkastaa miten muutos
vaikutti ja lukemaan kirjoja siinä välissä tarkastamaan miten se oikeasti tehtäisiin
pakko myöntää että koodia syntyy ihan eri tavalla kuin nököttämällä nelkun edessä

varsinkin nykyään kun on niin liikkuvaa sorttia ettei aito nelkku yksinkertaisesti voi olla mukana
on ollut pakko siirtyä emulaattoreihin ja Pc kääntäjiin ja ohjelmiin

ohjelmointi nelkulla ilman levari olisi sinun tapauksessasi kyllä tuskaa eli ymmärrän hyvin
jos olis Eprom piiri jossa olisi vain koneeseen serial / tms. lataustavalla
tehty ohjelma joka siirtäisi valmiin koodin suoraan nelkun muistiin ja käynnistäisi
sen siirron loputtua. se olisi taivas Tapanimäen jukalla olen tälläisen systeemin aikanaan nähnyt
mutta siinäkin lataus ohjelma oli 1541 uumenissa ja ladattiin joka kerta uudelleen tai ainakin sys xxxx
komentoa joutui käyttämään sen aktivoinniksi...
eikun hetkinen sehän oli $8000 alueella joten jos sitä ei mikään ohjelma sotkenut
pelkkä reset käynnisti sen uudelleen hmm...

systeemi oli rakennettu PC koneeseen josta meni johto user porttiin
ohjelman kirjoitus ja siirto olivat samaa ohjelmaa
saman lailla pystyi nelkusta imemään binääri tietoja pc kovikselle "spritet tms."
taisi siinä olla jonkin laiset grafiikka työ kalut piirto ja sprite tiedostoillekin

samanlaisia yritelmiä on olemassa harrastaja voimin rakennettuna
en ole vielä tutustunut TurboAss kevereiden PC ohjelma puoleen
jos vaikka siellä sellainenkin olisi ainakin tuosta ohjelmasta on tehty
montaa eri versiota yksi esimerkiksi on C128 jolla voi hoitaa ohjelmointi puolen
ja kaapelilla ohjelma siirtyy toiseen koneeseen c128/64 ja käynnistyy

mutta kuten sanoin C128 näppis ei ole koskaan sopinut C64 ohjelmointiin
ainakaan minulla tuskastun todella nopeasti sen kanssa

muistelisin että Amigallekin oli jokun moinen saman tapainen ohjelma...
Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500

rams

Joo onhan noita kaapeleita yms. virityksiä olemassa. Sitten on erikseen nämä sd / MMC kortilta lukevat laitteet.. Mutta en jotenkaan saa itselleni perusteltua 100 € hankintaa, joka kuitenkaan ei ole kovinkaan aktiivisessa käytössä. Ja itse tehty on aina itse tehty. ;)

Tuli myös 80-luvulla aloitettua harrastelu 64:n näppäimistön äärellä eikä se silloin tuntunut huonolta. Myöhemmin hankin Amigan ja viimeiset 15 vuotta olen koodaillut PC puolella. Siirtyminen takaisin 64:n näppikseen olikin astetta haastavampi rupeama kuin osasin odottaa.

Itse olen tykästynyt dasm->vice kombinaatioon ja aiemmin laajensin JuffEd editoria sisältämään Basic-ohjelmointia helpottavia toiminnallisuuksia kuten rivinumerot pois ja labelit tilalle (tyyliin "goto %(LOOPPI) ... LOOPPI: print "hei hei"... ") ja mahdollisuus testata ohjelmaa vicessä suoraan valikosta jne.

virgo

tuollainen Basic ohjelma olisikin kätsy... siis jos sellaisella ohjelmoisin xD

itse olen yrittänyt tuota vice saada koneeseeni mutta se itsepintaisesti kieltäytyy toimimasta
viimeksi eilen yritin sitä asentaa tuloksetta ohjelma ei vain käynnisty ei tapahdy yhtään mitään Logeihin
ei oikeastaan myöskään jää mitään tapahtumia
syynä saattaa olla ubuntun oma installointi mikä on osotautunut hieman puutteeliseksi joidenkin ohjelmien kanssa
esim. helpit eivät useinkaan toimi

edelleen etsiskelen sitä ultimatum ohjelmaa jolla homma luistaisi yhtä makeasti kuin aidolla ;)

Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500

rams

Lainaus käyttäjältä: virgo - heinäkuu 14, 2011, 15:54
tuollainen Basic ohjelma olisikin kätsy... siis jos sellaisella ohjelmoisin xD

itse olen yrittänyt tuota vice saada koneeseeni mutta se itsepintaisesti kieltäytyy toimimasta
viimeksi eilen yritin sitä asentaa tuloksetta ohjelma ei vain käynnisty ei tapahdy yhtään mitään Logeihin
ei oikeastaan myöskään jää mitään tapahtumia
syynä saattaa olla ubuntun oma installointi mikä on osotautunut hieman puutteeliseksi joidenkin ohjelmien kanssa
esim. helpit eivät useinkaan toimi

edelleen etsiskelen sitä ultimatum ohjelmaa jolla homma luistaisi yhtä makeasti kuin aidolla ;)

Oletko katsonut että kuusnepan rommit on paikoillaan? Ne muistaakseni tulee Vicen mukana, mutta ne joutuu käsin kopsaamaan oikeaan hakemistoon. Ja vicen 64 emulaattorihan on nimeltään "x64".

virgo

kiitos !

sain sellaisen itse myrkytyksen että väänsin tuon vicen sitten väkisin toimimaan xD
ehkä multa puuttuikin vain oikea motivaatio suorittaa asia

olihan se tiedossa että Rom imaget ne puuttuivat
mutta missän ei kerrottu ettei niissä pitänyt olla mitään loppu tunnistetta (.rom)
ja toinen ainakin ubuntussa kiusaava asia on tiedostojen ja hakemistojen
lupa asiat ja komento kehotteella sudoilla en vielä ainakaan ole keksinyt miten
tietoja kopioidaan pitkien hakemisto ripsujen takaa toiseen samanlaiseen
no kierto tie keksittiin eli vapautin nuo C64,C128... hakemiston oikeudet kaikille niin johan
alkoi rommit siirtymään xD
kiitos vielä kerran nyt rullaa
Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500