Uutiset:

Genetic PET BBS Powered by Commodore 64
g-pet.tunk.org port:1025

Main Menu
Menu

Näytä viestit

Tämä jakso sallii sinun katsoa tämän jäsenen kaikkia viestejä. Huomaa, että näet vain niiden alueiden viestit, joihin sinulla on nyt pääsy.

Näytä viestit Menu

Viestit - virgo

#781
koodaamisen ohessa jouduin muuttamaan kyseistä rutiinia melkorankasti ja ajattelin nyt näyttää
miten se tapahtuu ja miksi.
tämä jekku on helpoimmasta päästä eikä sen ajoitus ole kovin tarkka
ja siksi sen toteutus on melko helppo toisin kuin
vasemman ja oikean reunuksen poisto joka vie prosessoriaikaa tajuttomasti
enemmän kuin tämä

yksinkertaisesti efekti koostuu kahdesta käskystä jotka muuttavat
ruudun reunuksia $D011 rekisterissä reunuksia hoitaa bitti 8 %00001000
4,2,1 ovat vieritys rekiteriä joilla tehdään pysty vieritys 0-7 arvoilla
reunukset supistavat ruutua kahdella rivillä 24 => 22 miksi ?
vieritys näyttäisi melko tönköltä jos alempi ja ylenmpi rivi pomppisivat
vieritys rekisterin tahdissa mutta jos tämän piilottaa reunusten alla sitä ei huomaa
vaan tasainen virta kirjaimia valuu reunusten alta esiin.

mutta jos reunukset ovat pois päältä ja rasteri linja on $FA
Vic piiri valmistautuu viimeiseen Badline tehtäväänsä noin 9 kellosykliä vasemmasta laidasta lähtönsä jälkeen
jos silloin muutamme reunukset takaisin päälle...
reunuksien asetusta on muutettu juurioikealla hetkellä ennen tämä tapahtuman alkua
VIC piiri unohtaa tehdä tämän koska se olettaa että reunukset on jo laitettu päälle
8 rasteri linjaa aikaisemmin eikä normaalisti tapahtuvaa Badline päivitystä koskaan tapahdu
eikä se enään sen jälkee koskaa palaa tutkimaan onko asian tila oikeasti näin

tässä vielä malli koodi ja liitteenä itse ohjelma

;--------------------------------------
; miten poistetaan ylä ja ala borderit
;    coodattu 7.9.2013 by Virgo
; reunusten avauduttua ainoa grafiikka
;    mitä sinne voidaan laittaa
;       on Sprite grafiikkaa

;  koodi Turbo Assembler yhteensopiva
;--------------------------------------
*=$0801

.WORD endbasic
.WORD 2013 ;Line Num & year
         .BYTE $9E ;SYS
         .TEXT "2078 laitojen poisto "
.byte 0,0
endbasic .byte 0
;--------------------------------------
sei ;keskeytykset pois
jsr setup ;alustemma $3fff osoitteen
loop
;-----------------
lda #$1b  ; %00011011
sta $d011 ;ruudun kavennus pois päältä

lda #$fa
lo1 cmp $d012 ;odotetaan Rasteririviä $FA
bne lo1

lda #$13  ; %00010011 kytkemme kavennuksen oikealla
sta $d011 ; kohtaa ja vic unohtaa piirtää reunuksen
;-----------------
ldx #0   ; 0-255 looppi pitää huolen ettei
lo2 dex   ; ettei loop ehdi kiertää rutiinia uudelleen
bne lo2   ; samalla rasteririvillä
lda #$fb
cmp $dc01 ;jos painat CTRS nappia muutamme
bne loop  ;muistipaikan $3fff sisältöä
inc $3fff ;ja muutamme reunusten alle jäävää dataa
jmp loop
;--------------------------------------
; jostain syystä VIC täyttää reunusten alle jäävän
; tilan näyttömuistin viimeisellä tavulla mikä normaalisti on
; osoitteessa $3fff jos nollaamme tämän reunusten kohdalla näkyy
; ruudun taustaväri $d021
;--------------------------------------
setup lda #$00 ;puhdistetaan reunusten alla oleva tila
sta $3fff
rts
;--------------------------------------
#782
tunne mennään 7o7
#783
kuten olen asian ilmaissut monet kerrat en osaa ohjelmoida muita koneita xD
joten valinta ja metodit olivat helppo päättää tähän rautaan
tosin kenttä editorin teko oli ulkoistettu jo ainakin kaksi kertaa muttei siitä tullut mitään joten
vuoden tuota editori probleemaa ja kentän mallia miettittyäni se Heureka hetki tuli
ja editori ilmaantui kuin tyhjästä ;)
voin sanoa että tämä projekti oli helpoin ja hienoin projekti pitkään aikaan
varsinkin kun päätin heti alussa etten käytä keskeytyksiä oikeastaan lainkaan vaan kernaali rutiineita ;)

voisi sanoa että editorikin syntyi täysin takaperoisesti ensin tuli pelin runko sinne kenttä paketointi ja lopuksi vasta editori...
oikea järjestys olisi ollut nimenomaan toisin päin
#784
Bitin Nypläys / 6502 konekieli Indirect
elokuu 25, 2013, 03:51
tuossa jo sivusin aihetta mutta avataampa tälle oma alueensa

keskitytään ensin Indirect osoitus muotoon

selkein aluksi
muistipaikka
$1000    00 20 80 80

A. 2000 4C 00 10  JMP $1000
B. 2000 6C 00 10 JMP ($1000)

kaksi melkein saman näköistä hyppykäskyä (Basic Goto)
eroa näissä käskyissä on suoritus ajassa sekä toiminnassa

A hyppää muistipaikkaan $1000 ja törmää siellä ensimmäiseen Tavuun joka on nolla konekielessä käsky BRK eli tapahtuu ohjemallinen keskeytys yleensä kaataa koneen
B. lukee ensin Tavut $1000 muisti paikasta ja saatujen tavujen kanssa muodostaa hypyn $2000 osoitteeseen huomaa kone kielen osoite muoto Alempi tavu ylempitavu

tämä sama osoite muoto näkyy deassemblerin tulostamassa koodissa missä tapauksessa A. ensimmäinen tavu on itse konekieli komento 4C = JMP
seuraavat tavut 00 ja 10 ovat hyppy osoite $1000

B. 6C = JMP ( ja 00 10 = $1000)

ongelma tulee tapauksessa B. jos
2000 6C FF 10  JMP ($10FF) hyppy on tämän näköinen
6510 tai 6502 eivät osaa suorittaa tätä komentoa oikein
koska prosessori noukkii hypyn ylemmän tavun väärästä paikkaa tässä tapauksessa osoiteesta $1000 ja alemman $10FF
osa kääntäjistä osaa tulkita tämän virheeksi ja varoittavat tästä mutta ohjelmoijan on silti hyvä tietää että on mahdollista että näin saattaa käydä

sama ongelma koskee melkein kaikkia kyseistä Indirect osoitusta käyttävistä käskyistä
A. LDA ($FF),y
B. LDA ($FF,X)
näillä komennoilla saattaisi olla sama ongema mutta tähän liittyy toinekin juttu osoiteesta 0$100-01FF on prosessorin Stak pino alue joka
taatusti sekoittaa ylemmän tavun osoituksen samoin pinon lukeminen tuntuu sekoittavan koneen
samon miten X. ja Y. rekisterin käyttö tässä yhteydessä poikkeaan toisistaan

LDA ($F0.x) / LDA ($F0),y    kohdistaisi käskyn hakemaan dataa soitteesta $1000

nollasivu
00F0   00 10 00 20 00 30 00 40
muisti
1000    10 11 12 13 14 15 16 17 18
2000     20 21 22 23 24 25 26 27 28
3000     30 31 32 33 34 35 36 37 38
4000      40 41 42 43 44 45 46 47 48
5000       50 51 52 53 54 55 56 57 58
Y. toiminta

Y = nolla LDA käsky hakee osoitteesta $F0 = $1000 Akkuun tallentuu luku $10
Y= yksi --""-- $11 ($1000+1)
Y=seitsemän --""-- $17 ($1000+7)
eli $F0 nollasivulla annettuun osoitteeseen $1000 +Y

X. toiminta
(tätä muotoa käytetään yleensä parillisilla numeroilla)
X= nolla LDA käsky hakee osoitteesta $F0 00 10 =$1000 Akkuun tallentuu Arvo $10
X= yksi käsky hakee osoitteesta $F1  10 00 =$0010 --""-- tallentuu nollasivun arvo osoitteesta $10
X= kaksi --""-- $F2  00 20 =$2000 akkuun tallentuu $20
X= neljä --""-- $F4  00 30 =$3000 --""-- $30
X= viisi --""-- $F5    30 00 =$0030 Akkuun latautuu niollasivun $30 arvo

kuten esimerkistä huomaamme X. rekisteri lisää luettavan paikan kohtaa $F0+X
varmin konsti käyttää tätä on kertoa X annettava luku aina x2 ettei exytä parittomille osoitteille
esim.
LDA #1
ASL
TAX
LDA ($F0,x)

saman lainalaisuudet koskevat muistakin tämän osoitus muodon hallitsevat käskyt
niitä ovat
ORA =OR whit A
EOR = EXOR whit A
AND = AND whit A
SBC = minus whit A
ADC = Plus whit A
CMP = Vertailu whit A


#785
Bitin Nypläys / Vs: Rom rutiinit
elokuu 25, 2013, 01:00

jos haluamme käyttää Load rutiinia kuten Basic sitä käyttää
voimme kutsua LOAD ohjelmaa suoraan JMP ($0330) komennolla
tällöin x. y. rekistereiden arvoilla ei silloin ole mitään merkitystä
ainoastaan SETLFS aliohjelmalle annetun secondary address
arvolla on merkitystä sijoitetaanko ohjelma samaan osoitteeseen mistä se on levylle
tallennettukin vai ladataanko se def osoitteeseen $0801
$C3-C4 rekistereissä sijaitsee tämä def latauspaikka
joita siis muutetaan jos käytämme hyppytaulukon antamaa kutsua LOAD rutiiniin
#786
Bitin Nypläys / Rom rutiinit
elokuu 25, 2013, 00:32
silloin kauvan sitten kun aloitin ohjelmoinnin C64lla
ja pitkään sen jälkeenkin yksi asia oli mystiikkaa ja on edelleen
commodoren "käyttiksen" omat rutiinit niitä on paljon noin 16kiloa
osotteissa
1. $A000-BFFF ja
2. $E000-FFFF

1. sijaitsee koneen Basic kielen kriittiset osat
2. sisältää erinäisen läjän alirutiineita jotka hoitavat kriittisemmät
     tehtävät kuten resetin toimenpiteet ja muistien alustamisen
     muutaman mainitakseni

harvemin tarvitaan konekieltä ohjelmoitaessa 1. rommia
mutta jos aikoo lisätä Basic käskyjä koneeseen
sen on kohtalaisen helppoa
koskaan en ole tutustunut aiheeseen mutta tiedän että se on helppoa
siksi siitä en hirveästi ala höpisemään koska se menee kuitenkin metsää joku muu
joka tietää enemmän C64 Basic hommeleistä voi paneutua tähän aiheeseen

koska kone kielessä yleensä tuo muisti on turhaa ja hyvin vähän käytettyä se yleensä poistetaan ensimmäisenä
että päästään käsiksi muistiin sen alla
ja käytetään suoraan kutsuja ylempään rommin
tarkoitus olisi tässä ketjussa keskittyäkin pelkästään ylemmän Rommin kutsuihin
ja miten niitä hyötykäytetään ja vähennetään siten tarvittavaa koodin vääntöä
kun osa rutiineista on siellä jo valmiiksi.

viimeisin puristus itselläni oli tuo BH stage editori joka on ensimmäinen ever ohjelma joka toimii täysin ilman keskeytyksiä
ja hyödyntää suurelta osin käyttiksen omia rutiineita mikä oli minulle täysin uusi kokemus

ohjelmien tekijöille ehkä tärkeimmät rutiinit ovat Load & Save
tutustutaan ensin Load rutiiniin ja miten sitä käytetään kone kielessä
se on itse asiassa melko helppoa kun sen vain haltsaa


Tässä lainaus Commodore Reference guidesta

  B-15. Function Name: LOAD

    Purpose: Load RAM from device
    Call address: $FFD5 (hex) 65493 (decimal)
    Communication registers: A, X, Y
    Preparatory routines: SETLFS, SETNAM
    Error returns: 0,4,5,8,9, READST
    Stack requirements: None
    Registers affected: A, X, Y

    Description: This routine LOADs data bytes from any input device di-
  rectly into the memory of the Commodore 64. It can also be used for a
  verify operation, comparing data from a device with the data already in
  memory, while leaving the data stored in RAM unchanged.
    The accumulator (.A) must be set to 0 for a LOAD operation, or 1 for a
  verify, If the input device is OPENed with a secondary address (SA) of 0
  the header information from the device is ignored. In this case, the X
  and Y registers must contain the starting address for the load. If the
  device is addressed with a secondary address of 1, then the data is
  loaded into memory starting at the location specified by the header. This
  routine returns the address of the highest RAM location loaded.
    Before this routine can be called, the KERNAL SETLFS, and SETNAM
  routines must be called.

  +-----------------------------------------------------------------------+
  | NOTE: You can NOT LOAD from the keyboard (0), RS-232 (2), or the      |
  | screen (3).                                                           |
  +-----------------------------------------------------------------------+

  How to Use:

    0) Call the SETLFS, and SETNAM routines. If a relocated load is de-
       sired, use the SETLFS routine to send a secondary address of 0.
    1) Set the A register to 0 for load, 1 for verify.
    2) If a relocated load is desired, the X and Y registers must be set
       to the start address for the load.
    3) Call the routine using the JSR instruction.

  286   BASIC TO MACHINE LANGUAGE

  EXAMPLE:

          ;LOAD   A FILE FROM TAPE

           LDA #DEVICE1        ;SET DEVICE NUMBER
           LDX #FILENO         ;SET LOGICAL FILE NUMBER
           LDY CMD1            ;SET SECONDARY ADDRESS
           JSR SETLFS
           LDA #NAME1-NAME     ;LOAD A WITH NUMBER OF
                               ;CHARACTERS IN FILE NAME
           LDX #<NAME          ;LOAD X AND Y WITH ADDRESS OF
           LDY #>NAME          ;FILE NAME
           JSR SETNAM
           LDA #0              ;SET FLAG FOR A LOAD
           LDX #$FF            ;ALTERNATE START
           LDY #$FF
           JSR LOAD
           STX VARTAB          ;END OF LOAD
           STY VARTA B+1
           JMP START
   NAME    .BYT 'FILE NAME'
   NAME1   .BYT 9     


kuten yllä ohjeistetaan pitää kutsua kahta alirutiinia ennen itse load rutiiniin menoa
SETLFS ja SETNAM

SETLFS ohjelma määrittelee laitteen minkä kanssa keskustellaan
Basic kielellä tarkoitetaan Load lauseen lopussa sijaitsevia numeroita
esim. ",8,1"

usein näkee porukan oikaisevan tämän ja sijoittavan tarvittavat arvot suoraan
oikeisiin nollasivun osoitteisiin
lda #8
sta $B8 ; Current Logical File Number
lda #1
sta $B9 ;Current Secondary Address

käytts kutsulla rimpsu on hieman lyhyempi kirjoittaa

LDA #8
LDX #1
LDY #0
JSR SETLFS

Seuraava kutsuttava rutiini on SETNAM
jolla määritellään File nimi joka levyltä haetaan

LDA #6  ;nimen pituus
LDX #<NAME  ;missä osoitteessa nimi sijaitsee alatavu       
LDY #>NAME  ; --""-- Ylätavu
JSR SETNAM

vasta näiden rutiini toimenpiteiden jälkeen voimme kutsua load rutiinia

LDA #0 ; 0=Load 1=Verify
TAX
TAY
JSR LOAD

tämä on normaali load rutiini joka sijoittaa ladatun ohjelman ensimmäisten 2 tavun osoittamaan paikkaan
nämä kaksi tavua tallennetaan levylle Save yhteydessä
mutta jos haluamme sijoittaa ohjelman mielivaltaisesti muualle pitää muistaa kaksi asiaa
ensimmäinen
LDA #8
LDX #0
LDY #0
JSR SETLFS
"esimerkki",8 <-- vastaa Basic komentoa
secindary address pitää olla nolla
muuten ohjelma luetaan edellä kuvatulla tavalla
sitten haemme ohjelman nimen kuten aikaisemminkin
tämän jälkeen kutsumme Load rutiinia seuraavasti

lataus-osoite = $1000
LDA #0
LDX #<lataus-osoite
LDY #>lataus-osoite
JMP LOAD

nyt hieman tietoa mitä sitten tapahtuu kun Load komento on annettu
itse LOAD kutsu on Rom piirillä osoitteessa $FFD5
tuolla alueella sijaitsee niin sanottu JUMP TABLE hyppytaulukko
jossan on peräkkäin JMP $xxxx komentoja osa on muodossa JMP ($xxxx)
seuratkaamme nyt mitä tapahtuu osoitteessa $FFD5

FFD5  JMP $F49E hyppäämme siis seuraavaksi tähän ositteeseen

F49E STX $C3 ; load rutiinia kutsuttaessa annetut X. Y. rekisterit tallennetaan nollasivulle
F4A0 STY $C4
F4A2 JMP ($0330) kutsumme varsinaista Load rutiinia

JMP ($xxxx) käsky on siitä hauska että se hakee hypättävän osoitteen itselleen annetusta paikasta
kyseisellä tavalla on helppoa muutella hyppy osoitteita ilman koodiin kajoamista
tähän käskyyn liittyy myös yksi 6502 sarjan prosessorien bugeista
joka sattaa joissain tapauksissa aiheuttaa paljonkin harmaita hiuksia koodareille ellei tätä tiedä

jos muitipakka seuraavanlainen sisältö
033F  FF FE

ja hyppy olisi sinne seuraava
JMP ($033F) oletus olisi että prosessori tekisi seuraavanlaisen hypyn JMP $FEFF
mutta koska logiikassa on Bugi tapahtuu seuraavaa
0330       00 00 00 00
........
033F        FF FE FF FF
prosessori muodostaa hyppy osoitteen viimeisen ositteen ja ensimmäisen kesken seuraavasti
JMP $FF00 seurauksena on luultavasti ohjelman kaatuminen ja erittäin ärsyttävä ohjelma bugin metsästys

mitä siis tapahtuu kun load Rutini kutsuu osoitetta JMP ($0330)
0330  A5 F4
Prosessori hakee hyppy osoitteen 0330 muistipaikasta ja muodostaa seuraavanlaisen hypyn
JMP $F4A5 josta löytyy varsinainen load ohjelma
tämän toimintaa on syvällisemmin selvitetty lataus osoite keskustelussa

http://www.com64.net/foorumi/index.php?topic=707.0




#787
Bitin Nypläys / Vs: 2013 ohjelmointi kisa
elokuu 24, 2013, 22:51
heh muutettu kisan otsikko pyydetyyn muotoon xD
eli loppu vuosi aikaa
#788
kenttä suunnittelioita ei ole ilmaantunut ???
#789
tuossa sinulle sitten heti testattava ohjelma xD
tublasidi musiikilla Ala Slimex  :worship:

http://www.com64.net/foorumi/index.php?action=dlattach;topic=537.0;attach=248
#790
tarkoitat varmaan tätä xD

Commodore OS Vision
#791
C64 ohjelmille kannattaa antaa oletus softaksi tuo vice x64 niin lähtevät klikkaamalla käyntiin

ainakin Linukassa toimii tiedä sitten Raspereistä tms. ikkunasoftista

ohjelma on todellakin pieni kooltaan olisi varmaan aikanaan mennyt hienosti yhdensivun MB data listauksena
enkä olisi lainkaan yllättynyt vaikka tuollainen softa siellä olisi jo ollutkin ;)
#792
sattuipa tänään että ilmeisesti palvelin oli alhaalla noin tunnin eikä sivulle siis päässyt tuona aikana lainkaan :-/
#793
ensimmäinen fet testi !
nyt jäähdytys ripaa fetille ja rasitus koe paljon kestää ja paljonko tuottaa ;)
#794
en sitten malttanut jättää tätä ongelmaa ratkaisematta :(
no en olisi kuitenkaan saanut unta miettiessäni tätä asiaa
joten tekaisin sitten valmiin rutiinin ja vielä auto käynnistyksellä
...tai siis auto linkkauksella jos tarkkoja ollaan
olkaa hyvät ja kiitoksia haasteesta  :old:

ohjelma on poikkeuksellisesti Turbo Assembler yhteensopiva

ohjelma lähtee toimimaan heti latauksensa jälkeen
kunhan muistaa lisätä sen ,8,1 ykkösen
seuraavan latauksen yhteydessä kerrotaan lataus osoitteet
vaikka lataisit vain hakemiston
ohjelma sijaitsee kasettipuskurin alueella joka pyyhkiintyy resetin aikana
siksi se on mainio paikka kopiointi suojauksille

ohjelman käynnistymisen kikka on siinä että
lataus osoite on $0330 osoitteesta alas päin tämä on Load käskyn vectori
josta normaalisti siirrytään varsinaiseen lataus rutiiniin joka ylempänä on ollut esilläkin
samoin uusi rutiini on suurelta osin alkuperäisen kopio muutamalla lisä ominaisuudella
load vectorin alla on vielä Save ohjelman oma vectori joka luonnollisesti edelleen osoittaa
alkuperäiseen rutiiniin
koska ohjelman alku osoite alkaa Load wectorin kohdalta pystymme saman tien muuttamaan
vectorin osoitetta haluamaamme paikkaan tällä kertaa omaan load rutiiniimme "start"

tämän jälkeen alkaa oma ohjelmamme joka melkein täyttää koko vapaan tilan
jos ohjelmaan vielä lisäileen paljon ominaisuuksia se pukkaa latauksessa
$0400 osoiteesta eteenpäin näyttö muistiin mikä ei ole hyvä asia ;)

ja sitten ohjelman sorsa koodi itse ohjelma on linkki fileenä

;----------------------
; UUSI Load rutiini  --
; tallentaa ladattava--
; ohjelman sijainnin --
; $FE-FF tavuihin    --
; ---------------------

    *=$0330 ; LOAD vectori MUUTETAAN LATAUKSEN AIKANA

; Set new Load address
.WORD  start ;LOAD ADDRESS
.WORD  $F5ED ;SAVE

start           jsr F4A5 ; käydään ensin lataamassa haluttu ohjelma
                jmp show ; tulostamme osoitteet ja poistumme
               
F4A5         STA $93
F4A7         LDA #$00
F4A9          STA $90
F4AB          LDA $BA
F4AD          BNE F4B2
F4AF          JMP $F713

F4B2          CMP #$03
F4B4          BEQ F4AF
F4B6          BCC F533
F4B8          LDY $B7
F4BA          BNE F4BF
F4BC          JMP $F710

F4BF          LDX $B9
F4C1          JSR $F5AF ; Loading message
F4C4          LDA #$60
F4C6    STA $B9
F4C8    JSR $F3D5 ; open io
F4CB    LDA $BA
F4CD    JSR $ED09 ; send talk
F4D0    LDA $B9
F4D2    JSR $EDC7 ;send secondary address
F4D5    JSR $EE13 ;input low address
F4D8    STA $AE
                STA $FE   ;tallennetaan oma low pointteri
F4DA    LDA $90
F4DC    LSR
F4DD    LSR
F4DE    BCS F530
F4E0    JSR $EE13 ;input Hi address
F4E3    STA $AF
                STA $FF   ;tallennetaan oma hi pointteri
F4E5    TXA
F4E6    BNE F4F0
F4E8            LDA $C3
STA $AE
STA $FE
LDA $C4
STA $AF
STA $FF
JMP $F4F0

F4F0    JMP $F4F0
F530 JMP $F530
F533 JMP $F533
;-----------------------
hex            .text "0123456789abcdef"
print
               pha
               lsr
               lsr
               lsr
               lsr
               tax
               lda hex,x
               jsr $ffd2
               pla
               and #$0f
               tax
               lda hex,x
               jsr $ffd2
               rts
;-------------------------
show           lda #" "
               jsr $ffd2
               lda #"$"
               jsr $ffd2
               lda $ff
               jsr print
               lda $fe
               jsr print
               lda #"-"
               jsr $ffd2
               lda #"$"
               jsr $ffd2
               lda $af
               jsr print
               lda $ae
               jsr print
               rts                                     
#795
Slimex
action reblayssa on tosiaankin ehkä paras konekieli monitori ewer
itse myös käyttelen tuota moduli imagea helpottamaan vicellä koodausta
sen omalla monitorilla ei oikeasti tee muuta kuin tarkistaa
mitä muistissa tapahtuu

(Action reblay ei muuten näytä lataus osoitteita jos ei emulaatori ole realdrive moodissa ?)

varsinkin kun ei ole aitoa nyt käsillä.
uusi poweri edelleen vasta suunnittelu pöydällä

SyyPori6510
jos se on toimivana komeroon laitettu ei siinä pitäisi kovin isoja vikoja olla
ilmoittelet vaikka mulle jos haluut sen korjattavaksi käyn poris noin 3viikon välein
oletus et asut siellä xD

toki hajonneet emot huolitaan myös varaosa varastoon jos olet hukkaamassa sitä

suosittelen alkuun C64 ohjelmointi ympäristöksi pieneen kokeiluun Turbo Assembleria
http://www.com64.net/foorumi/index.php?topic=656.0