Difference between revisions of "Commodore 64"

m
 
(10 intermediate revisions by 3 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 ASEMBLY 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.  
+
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 hur man skriver assembly till datorn.
För att skriva asembly har vi använt cc65 compilatorn! Här är ett expempel ett shell script som compilerar ASEMBLY och sedan startar VICE
 
  
```bash
+
Skapa en fil source.s med innehållet
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 &
 
```
 
  
Skapa en fil source.s
+
<pre class="code">
 +
lda #$00 
 +
sta $d020
 +
loop: jmp loop
 +
</pre>
  
<syntaxhighlight>
+
Koden sparar värdet 00000000 00000000 på platsen i hexadecimal d020 i ram. Detta gör skärmens ram svart.
lda #$00
+
Sedan fastnar programmet i en oändlig loop.
sta $d020
+
[[File:VICE emulator image.img.png|thumb]]
 +
 
 +
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>
 +
 
 +
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!
  
loop:
+
cc65 kompilatorns assembler [https://cc65.github.io/doc/ca65.html#ss4.1]
        jmp loop
 
</syntaxhighlight>
 
  
Koden sparar värdet 00000000 00000000 på platsen i hexadecimal d020 i ram. Detta gör ramen svart!
+
Commodore 64 Wiki [https://www.c64-wiki.com/wiki/Memory_Map]
Sedan fastnar programmet i än oändlig loop sådant att BASIC inte kan ta över och ändra tillbaka färgen!
+
 
[[File:VICE emulator image.img.png|thumb]]
+
6502 CPU instruction set:
 +
good (expansive)[https://www.masswerk.at/6502/6502_instruction_set.html#CLD]
 +
wikipedia (minimalistic) [https://en.wikibooks.org/wiki/6502_Assembly]
 +
 
 +
 
 +
sprites [https://www.c64-wiki.com/wiki/Sprite#Sprite_priority]
  
 +
sprite multiplex [https://www.c64-wiki.com/wiki/Raster_interruptg]
  
 +
sprite multiplex x2 [http://selmiak.bplaced.net/games/c64/index.php?lang=eng&game=Tutorials&page=Sprite-Multiplexing]
  
 +
Documentation of the VIC-II videochippet:
 +
text [https://www.zimmers.net/cbmpics/cbm/c64/vic-ii.txt]
 +
VIC-II [https://csdb.dk/release/?id=154952]
  
 +
Holding hand instructions :
 +
codeburst hard asembly code [https://codeburst.io/lets-write-some-harder-assembly-language-code-c7860dcceba]
 +
flag intro [http://www.6502.org/tutorials/vflag.html]
 +
peek and poke [https://en.wikipedia.org/wiki/PEEK_and_POKE]
  
Du kan debuga VICE genom att klicka 'File --> Activate monitor'
+
Cool unexplored tools
 +
(text)[https://style64.org/cbmdisk/documentation/]

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]