C=Foorumi

Commodore => Bitin Nypläys => Aiheen aloitti: Kuuslankkumies - huhtikuu 15, 2012, 17:08

Otsikko: LIST-komennosta
Kirjoitti: Kuuslankkumies - huhtikuu 15, 2012, 17:08
Eli siis, jos teen ohjelman BASICilla ja haluan julkaista sen, mutta en halua ohjelman käyttäjien lueskelevan miten ohjelma on tehty, niin miten saan sen niin, että LIST-komento ei näytä koodia? Esim. joissakin indie-peleissä kun tekee list komennon niin ruutuun tulee vain jotakin tyyliin "10 SYS 20660" tjsp.
Otsikko: Vs: LIST-komennosta
Kirjoitti: Jarskimo - huhtikuu 15, 2012, 17:39
Itse en osaa sanoa tähän oikein mitään. Mutta tiettääkseni BASIC ohjelmissa tuota ei saa pois näkyvistä. Ja tuo "10 SYS 20660" tarkoittaa varmaan sitä, että peli on koodattu jollain konekielellä, eikä BASICillä
Otsikko: Vs: LIST-komennosta
Kirjoitti: Kuuslankkumies - huhtikuu 15, 2012, 19:40
Aa ok, aattelin vaan että jotenkin saisi tuon BASIC-ohjelman laitettua konekieliseksi aliohjelmaksi tai jotain?
Otsikko: Vs: LIST-komennosta
Kirjoitti: virgo - huhtikuu 15, 2012, 20:52
periaatteessa Basic ohjelma voi sijaita muualakin kuin $0801 osoitteessa
tämä vaatii kuitenkin muutamien nollasivun osoiteiden nybläämistä
ja tallentaminen hankaloituu ;( ja muutenkin vaikea aloittelijalle toteuttaa

on olemassa yksi konsti jolla saa list komennon suorittamaan basic käskyjä listauksessa
tämä on siitä näppärä jekku ettei sitä voi kiertää ja se on aina toiminnassa
poistaminenkin onnistuu vain jos tietää millä rivillä jekku on ja poistaa kyseisen rivin
valitettavasti ei nyt voi neuvoa miten se tapahtuu koska siihen vaadittaisiin aito C64 kone
emullakin toki jekku onnistuu mutta näppis sijoittelu vaikeuttaa asiaa erikois näppäinten muodossa
suomeksi niitä on vaikea löytää ja vielä vaikeampi kirjoittaa normaaliin textiin
mutta huomenna kun pääsen alkuperäisen raudan ääreen voin tehdä ruutu kaappauksen ja selittää tarkemmin miten
systeemi toimii ;)
Otsikko: Vs: LIST-komennosta
Kirjoitti: Kuuslankkumies - huhtikuu 15, 2012, 21:37
Odotan innolla. Aitoa kuusnepaa käytänkin, joten tuo jekku tulee olemaan varmasti käyttökelpoinen.
Otsikko: Vs: LIST-komennosta
Kirjoitti: rams - huhtikuu 15, 2012, 23:27
Lainaus käyttäjältä: virgo - huhtikuu 15, 2012, 20:52
periaatteessa Basic ohjelma voi sijaita muualakin kuin $0801 osoitteessa
tämä vaatii kuitenkin muutamien nollasivun osoiteiden nybläämistä
ja tallentaminen hankaloituu ;( ja muutenkin vaikea aloittelijalle toteuttaa

No mähän en tästä mitään tiedä, mutta eikö kyseessä kuitenkin vain ole Basic:n alkuosoitteen muutos ja Basic koodin tallentaminen ",8,1":llä? Tai jotain muuta sinne päin.
Otsikko: Vs: LIST-komennosta
Kirjoitti: virgo - huhtikuu 16, 2012, 08:32
ok yritän tässä nyt muistella miten homma tehtiin... tuo basicin siirtäminen meinaan
ensin pitää kirjoittaa basic ohjelma jonka meinaa salata
tämän jälkeen pitää kirjoittaa konekieli ohjelma joka muokkaa
basicin alkuosoitteita ja loppu osoitetta
tämän jälkeen ladataan konekielimonitorilla basic oikeaan osoitteeseen muistiin
kun tiedetään kuinka pitkälle basic ylttää mujistissa voidaan monitorilla korjata basic loppuosoitteen
paikalleen
tämän jälkeen tallennetaan ohjelma $0801-xxxx
basicin loppu osoitteeseen asti

homma ei onnistu ilman konekieli monitoria :(

mutta hei... tuli juurikin mieleen yksi toinen ja melkein parempikin konsti
omistan Basic kääntäjän joka ruuvaa ohjelmasta konekielisen version
ja siitä jää jäljelle vain tuo sys xxxx ja ohjelmakoodia ei sen jälkeen pystys basic koodina näkemään ;)
niin ja nopeus tietenkin tietyissä operaatioissa nopeutuu samalla melko huomattavasti....
Otsikko: Vs: LIST-komennosta
Kirjoitti: Jake64 - huhtikuu 16, 2012, 10:34
Itsekkin aikoinani käänsin erään basic-kielisen ohjelman petspeedillä konekieliseksi. Ainut tarve oli nopeuttaa ohjelman suoritusta, kysessä kun oli eräs arkistointiohjelma, jolla sai laitettua pelit ylös ja sitten haettua sieltä, kun halus jotain peliä pelata sadan disketin joukosta.

Pitää vain huomioida, etää kaikki kääntäjät eivät huoli kaikkia käskyjä, mutta kokeilemallahan se selviää toimiiko ohjelma. Ohjelmassa ei myöskään saa olla virheitä, kääntäjä yleensä kaatuu siihen. 
Otsikko: Vs: LIST-komennosta
Kirjoitti: virgo - huhtikuu 16, 2012, 12:47
pitääkö järjestää kisa kumman kääntäjä on tehokkaampi :p

Commodore tapahtumassa vois kehitellä jotain kisaa tietyn näköisten basic ruutiinien
nopeus enkaksi kuka tekee tehokaimman rutiinin basicilla xD
Otsikko: Vs: LIST-komennosta
Kirjoitti: Kuuslankkumies - huhtikuu 16, 2012, 19:32
Kun itseltäni löytyy pelkkä kasettiasema, niin löytyykö mitään kasettiohjelmaa jolla saa tuon basic-ohjelmakoodin näkymättömiin?
Otsikko: Vs: LIST-komennosta
Kirjoitti: Jake64 - huhtikuu 16, 2012, 19:37
Lainaus käyttäjältä: virgo - huhtikuu 16, 2012, 12:47
pitääkö järjestää kisa kumman kääntäjä on tehokkaampi :p

Ei ainakaan tolla petspeedilla kannatta nopeuskilpailuja kokeilla muihin verrattuna. Esitteessä sanottiin 40x nopeus basiciin verrattuna, mutta lieneekö totta.

Äsken yritin käännellä tuota arkistointiohjelmaa muilla kääntäjillä, nin eipä nuo kääntyneetkään. Johtunee siitä, että ohjelma lataa konekielisen levyhakenistorutiinin 828- eteenpäin. Samoin saattaa olla, että kaikilla muuttujilla ei ole aloitusarvoja, kun basicissa ne oletuksena on nollia tai merkkijonoilla tyhjiä.
Otsikko: Vs: LIST-komennosta
Kirjoitti: Jake64 - huhtikuu 16, 2012, 20:10
Lainaus käyttäjältä: Kuuslankkumies - huhtikuu 16, 2012, 19:32
Kun itseltäni löytyy pelkkä kasettiasema, niin löytyykö mitään kasettiohjelmaa jolla saa tuon basic-ohjelmakoodin näkymättömiin?

Tuossapa eräs sivusto, joka osui silmään:
http://www.atarimagazines.com/compute/issue38/087_1_COMMODORE_REM_REVEALED.php (http://www.atarimagazines.com/compute/issue38/087_1_COMMODORE_REM_REVEALED.php)

REM lauseeseen kun laittaa esim
10 REM shift+L
niin tulee syntax error listatessa

parempi vielä, kun laittaa
10 REM "tttttttt"shift+L         tttttttt on käänteisiä  pikku t-kirjaimia ja shift+L grafiikamerkki shiftattu-L

tällöin rivinumerokin jää näkyvistä pois ja listatessa tulee syntax error tuon rivin kohdalla. Tuolle rivinumerolle kannattaisi laitella ennen remiä jotain toimintoja, eli jos poistaa tuon rivin, niin eipä suoritus aivan ole oikeanmukainbn. tällöin täytyy noita käänteisiä t-merkkejä lisätä tarpeen mukaan.
Näitä rem-lauseita sitten pitkin ohjelmaa, nini onpahan ainakin selvittäjällä iso homma ratkaista ohjelman juoni.

Pitää  vain muistaa jättää itselle kopio, missä ei ole noita rem lauseita.  On muuten hankala korjata ohjelmaa noitten lisäyksien jälkeen
Otsikko: Vs: LIST-komennosta
Kirjoitti: virgo - huhtikuu 16, 2012, 22:33
jake jo ehtikin näköjään kertoilla miten hommeli toimii ;-)

itse jumiuduin leikkimään cameleonilla sori...

Otsikko: Vs: LIST-komennosta
Kirjoitti: Jake64 - huhtikuu 17, 2012, 02:36
Lainaus käyttäjältä: virgo - huhtikuu 16, 2012, 22:33
itse jumiuduin leikkimään cameleonilla sori...

Laitteleppa testituloksia ja kokemuksia laitteesta. Ehkäpä laitan sitten tilauslistalle jossain vaiheessa, vaikka mielellään odottelen tuon beta-version jälkeistä laitetta...
Otsikko: Vs: LIST-komennosta
Kirjoitti: Kuuslankkumies - huhtikuu 17, 2012, 07:40
Lainaus käyttäjältä: Jake64 - huhtikuu 16, 2012, 20:10
Lainaus käyttäjältä: Kuuslankkumies - huhtikuu 16, 2012, 19:32
Kun itseltäni löytyy pelkkä kasettiasema, niin löytyykö mitään kasettiohjelmaa jolla saa tuon basic-ohjelmakoodin näkymättömiin?

Tuossapa eräs sivusto, joka osui silmään:
http://www.atarimagazines.com/compute/issue38/087_1_COMMODORE_REM_REVEALED.php (http://www.atarimagazines.com/compute/issue38/087_1_COMMODORE_REM_REVEALED.php)

REM lauseeseen kun laittaa esim
10 REM shift+L
niin tulee syntax error listatessa

parempi vielä, kun laittaa
10 REM "tttttttt"shift+L         tttttttt on käänteisiä  pikku t-kirjaimia ja shift+L grafiikamerkki shiftattu-L

tällöin rivinumerokin jää näkyvistä pois ja listatessa tulee syntax error tuon rivin kohdalla. Tuolle rivinumerolle kannattaisi laitella ennen remiä jotain toimintoja, eli jos poistaa tuon rivin, niin eipä suoritus aivan ole oikeanmukainbn. tällöin täytyy noita käänteisiä t-merkkejä lisätä tarpeen mukaan.
Näitä rem-lauseita sitten pitkin ohjelmaa, nini onpahan ainakin selvittäjällä iso homma ratkaista ohjelman juoni.

Pitää  vain muistaa jättää itselle kopio, missä ei ole noita rem lauseita.  On muuten hankala korjata ohjelmaa noitten lisäyksien jälkeen
Joo, kiitos tästä! Pitää sitten vaan laitella noita REMeja ohjelmaan.
Otsikko: Vs: LIST-komennosta
Kirjoitti: Jake64 - huhtikuu 17, 2012, 16:32
Lainaus käyttäjältä: Kuuslankkumies - huhtikuu 17, 2012, 07:40
Joo, kiitos tästä! Pitää sitten vaan laitella noita REMeja ohjelmaan.

Valitettavasti nuo REM-lauseet ei nykyaikana paljon pidättele. Tuossa kokeilin parilla eri ohjelmalla, niin koodi näkyi ihan hyvin. Tuolloin 80-luvun alussa ei ollut windowsia eikä internettiä apuna.

Ainut mahdollisuus siis on käyttää kääntäjää. Näihinkin on olemassa ns. recompiler-ohjelmia, joilla ohjelman voisi palauttaa takaisin. Tuota en onnistunut tekemään omalla käännökselläni, joten ainakin se on huomattavasti hankalampi.

Kääntäjät taitavat tarvita kyllä levyaseman tai jonkin uudemmista laitteista, esim. ultimate.
Tai sitten teet käännöksen Windowsilla ja VICEllä + jokin basic compiler.
www.bombjack.org (http://www.bombjack.org) löytyy manuaali Basic 64 compiler ohjelmaan. Manuaali on hurjan hyvänä apuna, sieltä saa tietoja, jos kääntäjä ei käännä ohjelmaa.

Lainaus käyttäjältä: virgo - huhtikuu 15, 2012, 20:52
periaatteessa Basic ohjelma voi sijaita muualakin kuin $0801 osoitteessa
Nämäkin on helposti  saatu selville, on ohjelmia, joilla näkee aloitus ja lopetuskohdat ja sitten vain  tallettaa basic-koodin takas oikealle paikalle ja se on näkyvillä.
Otsikko: Vs: LIST-komennosta
Kirjoitti: exSyntaxError - huhtikuu 17, 2012, 19:24
Yksi on tietysti sekin, että mikäli nykypäivänäkin basic-ohjelmalistaus sisältää kerran niin "hys hys top secrect" asiaa ettei sitä voi muille näyttää, niin tekee ohjelmansa sitten jollain muulla, kuin kuusnepan basicilla. Vanha kunnon Quick Basic pc:lle on netistä saatavissa ja jos omantunnontuskia tulee siitä, että se ei itseasiassa vieläkään ole freewarea, niin esim Asic on hyvin lähellä Quick Basicia, mutta ilmainen. http://en.wikipedia.org/wiki/ASIC_programming_language (http://en.wikipedia.org/wiki/ASIC_programming_language) (vastaavia on paljon muitakin..)
Otsikko: Vs: LIST-komennosta
Kirjoitti: Kuuslankkumies - huhtikuu 17, 2012, 21:54
No eipä nyt kauheammin sisällä mitään erityistä, ihan tekstipeliä vaan teen.
Otsikko: Vs: LIST-komennosta
Kirjoitti: exSyntaxError - huhtikuu 17, 2012, 22:05
Lainaus käyttäjältä: Kuuslankkumies - huhtikuu 17, 2012, 21:54
No eipä nyt kauheammin sisällä mitään erityistä, ihan tekstipeliä vaan teen.
Eikös tekstipelin pelaamisen idea ole ratkaista ne ongelmat. Jos joutuu ohjelmalistauksesta katsomaan, on se musta itsensä huijaamista eikä pelaamista.

Tästä tulikin mieleen, että tekstiseikkailun parseriin kannattaa kiinnittää paljon huomiota. Mitä joustavampi se on sitä pidempään pysyy mielenkiinto yllä. Pelin hyvä juonikaan ei musta ole ihan niin tärkeässä roolissa kuin hyvä parseri.
Otsikko: Vs: LIST-komennosta
Kirjoitti: Kuuslankkumies - huhtikuu 18, 2012, 07:59
En ole kylläkään tekemässä sellaista parseripeliä, vaan sellaista ns. "interaktiivinen novelli" tyylistä, jossa tulee numeroidut vaihtoehdot jne.
Otsikko: Vs: LIST-komennosta
Kirjoitti: exSyntaxError - huhtikuu 18, 2012, 11:35
Ahaa.. :)
No juu.. onhan sekin hyvä tapa opetella basic ohjelmointia. Kannattaisi joka tapauksessa opiskella indeksoidut muuttujat ja datalauseiden käyttö. Niillä on käyttöä tuollaisessakin ohjelmassa ja samalla tulee opittua jotain uuttakin, jos ei ole jo ennestään tuttuja.
Otsikko: Vs: LIST-komennosta
Kirjoitti: Kuuslankkumies - huhtikuu 18, 2012, 16:00
Tällä hetkellä teen tuota peliä ihan tällä tyylillä(esimerkki)=
10 PRINT "HALUATKO KALJAA?"
20 PRINT ""
30 PRINT "1. JOO":PRINT "2.EN"
40 GET C$:IF C$="" THEN GOTO 40
50 IF C$="1" THEN PRINT "ET SAA!"
60 IF C$="2" THEN PRINT "NO HYVA"

Ei tullut mieleen, että noilla indeksoiduilla muuttujilla ja DATA-lauseilla saisi kai paljon sujuvammin tehtyä, mutta en enää jaksa ruveta muuttamaankaan kun olen tehnyt jo niin pitkälle.
Otsikko: Vs: LIST-komennosta
Kirjoitti: virgo - huhtikuu 18, 2012, 20:15
kipen tapa suojata basic ohjelma on tallentaa ohjelma auto käynnistyväksi
eli lataus osoite on jossain näyttö muistin yläpuolella tarkkaa osoitetta en heti muista
konekieli monitorilla tallennus sujui nätisti samoin sen oikean rekisterin arvojen muuttaminen
ja pienen 3 Jsr käsky rimpsu kirjoittaminen ohjelman käynnistyessä vain poketaan ohjelman ensimmäiset tavut
poistoon ja avot huono puoli tässä on ettei ohjelmaa pysty käynnistämään toista kertaa
ja ei toimi ihan suoraan kasetin kanssa ;-/

ainakin final cardridge ymmärtää noiden rem jekkujen päälle ja tulostaa rimpsut ja ohjelman
ilman ongelmia tuota jekkua pystyy muuten käyttämään myös levyjen hakemiston näkyvyyden estoon...
Otsikko: Vs: LIST-komennosta
Kirjoitti: Jake64 - huhtikuu 19, 2012, 00:16
Lainaus käyttäjältä: virgo - huhtikuu 18, 2012, 20:15
ainakin final cardridge ymmärtää noiden rem jekkujen päälle ja tulostaa rimpsut ja ohjelman
ilman ongelmia tuota jekkua pystyy muuten käyttämään myös levyjen hakemiston näkyvyyden estoon...

Periaatteessa kaikki windowsissa toimivat ohjelmat, jotka osaavat näyttää commodoren basic ohjelmaa, näyttää ihan hyvin nuo listaukset.