jAsm

Diskussioner om programmering

Moderatorer: Fanta_gbg, e5frog, stonan, Zlasher, hollowman

Re: jAsm

Inläggav TBC » 24 oktober 2016, 17:52

Kod: Markera allt
section bss, "variables", $7100, $8000
{
   reserve byte vdp_reg[8]
}


Jag får ett felmeddelande: Expected expression value but got operator [
Användarvisningsbild
TBC
Erfaren mästare
Erfaren mästare
 
Inlägg: 306
Blev medlem: 4 september 2008, 16:44

Re: jAsm

Inläggav bjonte » 24 oktober 2016, 18:05

Ja, det ska ju vara reserve byte[8] vdp_reg
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1690
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav TBC » 24 oktober 2016, 18:43

Ah, naturligtvis.
Användarvisningsbild
TBC
Erfaren mästare
Erfaren mästare
 
Inlägg: 306
Blev medlem: 4 september 2008, 16:44

jAsm

Inläggav bjonte » 19 november 2016, 07:33

Jag missade din fråga om skriptet, TBC. Det ska ligga i källkoden under jasm_z80-katalogen.
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1690
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav bjonte » 19 november 2016, 07:35

Jag håller nu på att städa lite i källkoden. Därför händer det inte så mycket just nu. Jag har designat hur listor ska fungera i huvudet så det ska förhoppningsvis gå snabbt att implementera när jag väl börjar.
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1690
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav bjonte » 31 december 2016, 10:05

Nu börjar det närma sig en release. Jag har implementerat stöd för listor i språket och jag håller på att dokumentera detta.
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1690
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav Redreamer » 31 december 2016, 10:52

Har du inte redan haft en release? Fast det var väl innan du implementerade allt det nya. Kan du lägga detta projekt till handlingarna sen då? För nu är du väl klar, vad skulle liksom gå att göra bättre? :)
It always return one day!
Användarvisningsbild
Redreamer
Stormästare
Stormästare
 
Inlägg: 1260
Blev medlem: 1 maj 2005, 10:07
Ort: Borås

Re: jAsm

Inläggav bjonte » 31 december 2016, 11:44

Nej, klart blir det aldrig. Jag har saker planerade för en 2.0 och en 3.0. Jag är någonstans på 1.5 nu skulle man kunna säga. Jag vill närmast lägga till listor och mappar (dictionaries) samt att kunna returnera värden från macros så att de kan användas som funktioner. Då känns det rätt så användbart och jag skulle kunna ta en paus från det.
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1690
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav bjonte » 8 januari 2017, 22:37

Nu finns det basalt stöd för listor i språket. Jag har också lagt till stödet för funktioner genom nyckelordet 'return' i macron. Nu ska jag pyssla med annat ett tag om inga oväntade buggar dyker upp.
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1690
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav bjonte » 8 januari 2017, 23:17

En annan nyhet är att det nu finns en ny typ av for-loop för att iterera över listor. Den är enklare för att den alltid itererar över hela listan och kan därför enklare uttryckas.

Kod: Markera allt
const .element = list(1, 2, 3, 5, 7, 11)
for(var .p in .element) {
  print("{}\n", .p)
}


Detta skriver ut listans element. @i definieras också automatiskt till det index som .p har i listan. Det kan vara praktiskt när element i en lista ska användas för att påverka element i en annan lista.
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1690
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav bjonte » 25 januari 2017, 12:41

Jag sitter och kodar på C128 nu och sprang in i problemet att jag skulle vilja hantera adresser som är större än $ffff för att indikera vilken rambank kod och data tillhör. Som det är nu så får man ett felmeddelande om man använder en instruktion som tar en 16-bitsadress och skickar in något större. Ingen trunkering alltså. Det här skulle behöva luckras upp om man faktiskt har mer minne som dessutom är bankswitchat. Det går förstås att maska bort de övre bitarna vid varje access men det blir för bökigt i längden.

En lösning är att ha en commandline-flagga som slår på "bankhantering". Om den är på så trunkeras adresser automatiskt. Då återstår bara att bestämma om det ska generera en varning när trunkering sker eller inte. Jag lutar åt att inte ha en varning eftersom jag redan har sagt att det ska vara tillåtet och det är ingen idé att varna för det som är okej att göra.

Det skulle också gå att bygga något system för assembleringsflaggor som kan sättas i källkoden för att markera när det är aktuellt att trunkera utan att klaga.

Har ni några åsikter eller idéer om detta?
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1690
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav carlsson » 25 januari 2017, 16:55

Hur byter man bank i hårdvaran, skriver till en viss I/O-mappad adress? Vill man ha en virtuell minneskarta som expanderar över flera banker, och kommer assemblatorn då att automagiskt slänga in kod för bankbyte? Jag tror mig förstå problemet, men inte vad resultatet skulle bli då varken 8502 eller Z80 av sig självt kan hantera större minnesmängder än 64K åt gången.
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 » 25 januari 2017, 17:46

carlsson skrev:Hur byter man bank i hårdvaran, skriver till en viss I/O-mappad adress?


Ja, precis.

carlsson skrev:Vill man ha en virtuell minneskarta som expanderar över flera banker, och kommer assemblatorn då att automagiskt slänga in kod för bankbyte?


Jag tror inte att det går att göra detta per automatik utan att vara i vägen för den som vet vad den gör. Jag vill snarare bidra med verktyg för att göra det lite enklare. Om adresserna går från $00000 till $1ffff så är det möjligt att skriva ett macro för att göra hopp mellan banker automatiskt till exempel eller detektera när kod ligger i fel bank för att utföra saker.

Kod: Markera allt
macro longjmp(.target)
{
  if ((* >> 16) == (.target >> 16)) {
    jsr .target
  } else {
    lda #.target >> 16
    sta jump_target + 2
    lda #(.target >> 8) & $ff
    sta jump_target + 1
    lda #.target & $ff
    sta jump_target
    jsr long_jump_to_target
  }
}
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1690
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav bjonte » 25 januari 2017, 17:49

Det är dessutom så att på 128:an kan vissa delar av minnet ställas in att vara från bank 0 även om bank 1 är aktiv. Det är alltså kontextberoende vad en adress betyder. Det är möjligt eller omöjligt att från $18000 skriva till $01000 till exempel, beroende på hur MMU:n har konfigurerats. Per automatik kommer inte att funka.
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1690
Blev medlem: 17 april 2006, 23:12

Re: jAsm

Inläggav bjonte » 25 januari 2017, 22:24

På z80 blev det aningen surare för där finns instruktioner som flyttar ett 16-bitarstal till två register. Det är inte möjligt att veta om det är en adress eller ett tal som flyttas. Där måste jag trunkera om den här bankflaggan är satt.

Än värre är det med data som definieras som word. Där måste trunkering också ske, vilket försämrar skyddet mot fel i programmet en del. Alternativet är att användaren explicit får trunkera men problemet med det är att moduler som är skrivna för c64 helt plötsligt måste anpassas för att fungera i en 128-miljö "i onödan".
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1690
Blev medlem: 17 april 2006, 23:12

FöregåendeNästa

Återgå till Programmering/prog.-verktyg

Vilka är online

Användare som besöker denna kategori: MSN [Bot] 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