jAsm

Diskussioner om programmering

Moderatorer: Fanta_gbg, e5frog, stonan, Zlasher, hollowman

Re: jAsm

Inläggav bjonte » 26 januari 2017, 06:41

Ett alternativ är att införa en bankspecifikation i sektioner. Då skulle man kunna fråga vilken bank en sektion befinner sig i eller en label till exempel, men det blir inte lika transparent. Om jag anger en naken adresskonstant så skulle jag behöva klämma in vilken bank den tillhör på något sätt så jag föredrar nog att använda adressrymden för att hålla den informationen.
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1687
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav TBC » 8 februari 2017, 16:56

Nu har jag börjat programmera Intellivision också, så snart kräver jag väl en version för CP1610 också :)
Användarvisningsbild
TBC
Erfaren mästare
Erfaren mästare
 
Inlägg: 305
Blev medlem: 4 september 2008, 16:44

Re: jAsm

Inläggav bjonte » 8 februari 2017, 18:31

TBC skrev:Nu har jag börjat programmera Intellivision också, så snart kräver jag väl en version för CP1610 också :)

Argh!
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1687
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav bjonte » 8 februari 2017, 18:40

Det här påminner mig att skriva en uppdatering. Jag har lagt till en flagga för att få assemblern att tyst trunkera allt som ska producera 16-bits adresser nu. Inte optimalt kanske, men hyfsat i alla fall. Jag upptäckte också att jag inte har något inbyggt sätt att beräkna modulo eller rest vid division så det har jag nu lagt till som två nya funktioner.

En annan sak som jag upptäckte var mycket irriterande var att jag saknade ternary-if-operatorn från C så att det går att välja mellan två värden med ett boolskt uttryck. Det hjälper till i fallen där det inte går att ha en if-sats. Ett bra exempel är i en uppräkning av något slag.

Kod: Markera allt
define byte[] värden = {
  1, 2, 3, 4
}


Om ett värde beror på en variabel var man tvungen att definiera om hela listan.

Kod: Markera allt
if (MODIFY) {
  define byte[] värden = {
    1, 2, 5, 4
  }
} else {
  define byte[] värden = {
    1, 2, 3, 4
  }
}


Det blir väldigt knöligt. Nu går det att ändra lite smidigare med select-funktionen.

Kod: Markera allt
define byte[] värden = {
  1, 2, select(MODIFY, 5, 3), 4
}
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1687
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav carlsson » 9 februari 2017, 13:56

Vänta bara tills jag återupptar min satsning på RCA 1802 och förväntar mig att jAsm ska generera sådan kod också. 8)
Användarvisningsbild
carlsson
VIC-20 Guru
VIC-20 Guru
 
Inlägg: 2313
Blev medlem: 10 oktober 2007, 16:24
Ort: Västerås

Re: jAsm

Inläggav bjonte » 9 februari 2017, 16:09

Var hittar ni alla konstiga processorer? 1802:an kan jag komma undan genom att hävda att den inte är barnvänlig. Den har ju en sex-instruktion.
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1687
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav TBC » 9 februari 2017, 16:20

Jag ska ju porta mitt spel till TI99 också, så du får fixa TMS9900-stöd också :)
Användarvisningsbild
TBC
Erfaren mästare
Erfaren mästare
 
Inlägg: 305
Blev medlem: 4 september 2008, 16:44

Re: jAsm

Inläggav carlsson » 9 februari 2017, 23:59

Rätt som det är vaknar e5frog och börjar efterfråga stöd för Fairchild F8. Sedan är det väl någon som vill programmera Videopac G7000 och då behövs Intel 8048.

Stöd för Motorola-proppar som 6800/01/02, 6803, 6809 är kanske trivialt i och med assemblatorn är byggd för 6502.
Användarvisningsbild
carlsson
VIC-20 Guru
VIC-20 Guru
 
Inlägg: 2313
Blev medlem: 10 oktober 2007, 16:24
Ort: Västerås

Re: jAsm

Inläggav bjonte » 10 februari 2017, 05:50

carlsson skrev:Stöd för Motorola-proppar som 6800/01/02, 6803, 6809 är kanske trivialt i och med assemblatorn är byggd för 6502.

Ja, så lär det väl vara. Egentligen är det svåra att lösa parsningen så är det krångligt så tar det tid. 6502 är ganska krånglig med sina parenteser även om den har väldigt konsekventa instruktioner och adresseringsmoder.
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1687
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav herdware » 10 februari 2017, 17:11

6809 har väl, om jag minns rätt, ganska mycket mer funktioner än 6502.
Användarvisningsbild
herdware
Stormästare
Stormästare
 
Inlägg: 1362
Blev medlem: 6 mars 2008, 21:07
Ort: Nordvästra Småland

Re: jAsm

Inläggav bjonte » 15 februari 2017, 11:08

6809 verkar vara enklare att parsa än 6502, vid en snabb titt. Det skulle nog inte vara så knöligt att ha stöd för den.
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1687
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav TBC » 20 februari 2017, 15:24

CP1610 assembler är ju kul:

"Oh, and best of all, just like all the other Branch opcodes, NOPP will even let you NOT branch in either direction."

:)
Användarvisningsbild
TBC
Erfaren mästare
Erfaren mästare
 
Inlägg: 305
Blev medlem: 4 september 2008, 16:44

Re: jAsm

Inläggav bjonte » 17 mars 2017, 13:40

Det har varit stilla på den här fronten ett tag medan jag jobbar på annat. Jag fick en gnagande idé om att unifiera syntaxen för macroanrop och subrutinanrop. Det vore ganska trevligt om det gick att specificera vilka register som skulle användas som inparametrar till en subrutin och så laddades dessa automatiskt vid anrop.

Kod: Markera allt
subroutine play(a, yx)
{
  sta .size
  ...
}

play(5, .addr)


Detta skulle alltså generera kod för subrutin plus detta:

Kod: Markera allt
lda #5
ldy #>.addr
ldx #<.addr
jsr play
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1687
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav bjonte » 17 mars 2017, 20:42

Jag har också funderat på att det vore trevligt med någon form av automatisk check för kod som inte får överlappa en 256-bytes-sidkant. Jag har sett ett exempel i en annan assembler, jag tror att det var TASS, som hade ett nyckelord innan och efter koden. Jag tycker inte att det blev jättefint. Det går ju alltid att göra en assert typ såhär:

Kod: Markera allt
.boundary_check_start:
   beq .add_one_cycle
.add_one_cycle:
   static_assert(>* == >.boundary_check_start, "Branch crosses boundary")


Det är inte jättesnyggt men funkar såklart.
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1687
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav TBC » 18 mars 2017, 02:13

Har suttit och hacka en del nu och har ett litet önskemål...
Kan du fixa en varning om man har en subrutin som inte slutar med rts?
Vet inte hur många gånger jag gjort det misstaget, jag är för van att programmera C...
Användarvisningsbild
TBC
Erfaren mästare
Erfaren mästare
 
Inlägg: 305
Blev medlem: 4 september 2008, 16:44

FöregåendeNästa

Återgå till Programmering/prog.-verktyg

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 1 gäst

Banners

BOA Japon Mediapalatset Nostalgibutiken
Quartex Retro Overlays Retroplay Spel och sånt
Super Motaro Söders Serie & Skivhandel vintagegames.se RG 2016
cron