Difference between revisions of "Commodore 64"

 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Comodore64 är kort och gott en dator från 80-talet. Just nu har den en diskemulator för BASIC och .prg program.  
+
Commodore 64 är en legendarisk hemdator från 1982 [https://en.wikipedia.org/wiki/Commodore_64]. På Stacken finns ett exemplar av den första modellen som kallas breadbin. Vår C64 har flera olika rombankar med alternativa rommar att använda,  och en diskemulator.  
I katalogen /Dickander så finns några basic program och inom /duuvik samt /hugova så finns program skrivna i ASSEMBLY!
+
I katalogen /dicander så finns några basic program och inom /duuqnd samt /hugova så finns program skrivna i assembler.
  
= Emulering och compilering=
+
= Emulering och kompilering=
Vi har främst använt emulatorn VICE den finns som flatpack (finns även på windows och mac) för emulering, och compilatorn cc65. Här är ett exempel på hur man skriver assembly till datorn.  
+
Vi har främst använt emulatorn VICE den finns som flatpak (finns även binärer för Windows och macOS) för emulering, och assemblern som kommer med cc65 kompilatorpaketet. Här är ett exempel på hur man skriver assembly till datorn.
  
 
Skapa en fil source.s med innehållet
 
Skapa en fil source.s med innehållet
Line 13: Line 13:
 
</pre>
 
</pre>
  
Koden sparar värdet 00000000 00000000 på platsen i hexadecimal d020 i ram. Detta gör ramen svart!
+
Koden sparar värdet 00000000 00000000 på platsen i hexadecimal d020 i ram. Detta gör skärmens ram svart.
Sedan fastnar programmet i än oändlig loop sådant att BASIC inte kan ta över och ändra tillbaka färgen!
+
Sedan fastnar programmet i en oändlig loop.
 
[[File:VICE emulator image.img.png|thumb]]
 
[[File:VICE emulator image.img.png|thumb]]
  
Sedan kan du compilera programmet med cc65 compilatorn och köra programmet i VICE med bash comandot
+
Sedan kan du assembla och länka programmet med cc65 kompilatorn och köra programmet i VICE med bash kommandot
  
 
<pre class="code"> killall x64sc ; cl65 -o file.prg -u __EXEHDR__ -t c64 -C c64-asm.cfg source.s && nohup flatpak run net.sf.VICE -windowypos 0 -windowxpos 960 -windowwidth 945 -windowheight 720 file.prg  </dev/null &>/dev/null &</pre>
 
<pre class="code"> killall x64sc ; cl65 -o file.prg -u __EXEHDR__ -t c64 -C c64-asm.cfg source.s && nohup flatpak run net.sf.VICE -windowypos 0 -windowxpos 960 -windowwidth 945 -windowheight 720 file.prg  </dev/null &>/dev/null &</pre>
  
Du kan debuga VICE genom att klicka 'File --> Activate monitor'
+
Du kan debugga program i VICE genom att klicka 'File --> Activate monitor'
  
Om du vill köra din kod på den faktiska burken, flytta över file.prg till en katalog med ditt stackenanvändarnamn på comadoren sd-kort.
+
Om du vill köra din kod på den faktiska burken, flytta över file.prg till en katalog med ditt stackenanvändarnamn på det SD-kort som sitter i Commodore 64:an.
  
 
Här är en mängd resurser för hur hårdvaran fungerar!
 
Här är en mängd resurser för hur hårdvaran fungerar!
  
cc65 kompilatorn [https://cc65.github.io/doc/ca65.html#ss4.1]
+
cc65 kompilatorns assembler [https://cc65.github.io/doc/ca65.html#ss4.1]
  
Comodore 64 Wiki [https://www.c64-wiki.com/wiki/Memory_Map]
+
Commodore 64 Wiki [https://www.c64-wiki.com/wiki/Memory_Map]
  
ASEMBLY 6502 instruction set:
+
6502 CPU instruction set:
 
good (expansive)[https://www.masswerk.at/6502/6502_instruction_set.html#CLD]
 
good (expansive)[https://www.masswerk.at/6502/6502_instruction_set.html#CLD]
 
wikipedia (minimalistic) [https://en.wikibooks.org/wiki/6502_Assembly]
 
wikipedia (minimalistic) [https://en.wikibooks.org/wiki/6502_Assembly]
Line 42: Line 42:
 
sprite multiplex x2 [http://selmiak.bplaced.net/games/c64/index.php?lang=eng&game=Tutorials&page=Sprite-Multiplexing]
 
sprite multiplex x2 [http://selmiak.bplaced.net/games/c64/index.php?lang=eng&game=Tutorials&page=Sprite-Multiplexing]
  
Documentation of the vic chip:
+
Documentation of the VIC-II videochippet:
 
text [https://www.zimmers.net/cbmpics/cbm/c64/vic-ii.txt]
 
text [https://www.zimmers.net/cbmpics/cbm/c64/vic-ii.txt]
vic [https://csdb.dk/release/?id=154952]
+
VIC-II [https://csdb.dk/release/?id=154952]
  
 
Holding hand instructions :
 
Holding hand instructions :

Latest revision as of 19:09, 30 January 2025

Commodore 64 är en legendarisk hemdator från 1982 [1]. På Stacken finns ett exemplar av den första modellen som kallas breadbin. Vår C64 har flera olika rombankar med alternativa rommar att använda, och en diskemulator. I katalogen /dicander så finns några basic program och inom /duuqnd samt /hugova så finns program skrivna i assembler.

Emulering och kompilering

Vi har främst använt emulatorn VICE den finns som flatpak (finns även binärer för Windows och macOS) för emulering, och assemblern som kommer med cc65 kompilatorpaketet. Här är ett exempel på hur man skriver assembly till datorn.

Skapa en fil source.s med innehållet

lda #$00  
sta $d020 
loop: jmp loop 

Koden sparar värdet 00000000 00000000 på platsen i hexadecimal d020 i ram. Detta gör skärmens ram svart. Sedan fastnar programmet i en oändlig loop.

VICE emulator image.img.png

Sedan kan du assembla och länka programmet med cc65 kompilatorn och köra programmet i VICE med bash kommandot

 killall x64sc ; cl65 -o file.prg -u __EXEHDR__ -t c64 -C c64-asm.cfg source.s && nohup flatpak run net.sf.VICE -windowypos 0 -windowxpos 960 -windowwidth 945 -windowheight 720 file.prg  </dev/null &>/dev/null &

Du kan debugga program i VICE genom att klicka 'File --> Activate monitor'

Om du vill köra din kod på den faktiska burken, flytta över file.prg till en katalog med ditt stackenanvändarnamn på det SD-kort som sitter i Commodore 64:an.

Här är en mängd resurser för hur hårdvaran fungerar!

cc65 kompilatorns assembler [2]

Commodore 64 Wiki [3]

6502 CPU instruction set: good (expansive)[4] wikipedia (minimalistic) [5]


sprites [6]

sprite multiplex [7]

sprite multiplex x2 [8]

Documentation of the VIC-II videochippet: text [9] VIC-II [10]

Holding hand instructions : codeburst hard asembly code [11] flag intro [12] peek and poke [13]

Cool unexplored tools (text)[14]