Giter Club home page Giter Club logo

Comments (11)

GSoftwareDevelopment avatar GSoftwareDevelopment commented on June 4, 2024

Moje rozwiązanie

Zacznę może od tego, jak odpowiedź znalazłem.
Podczas kompilacji pliku A65 przez MADSA, może on generować listę wszystkich etykiet, jakie są wykorzystane w pliku źródłowym A65.
Właśnie tam udało mi się znaleźć odwołania do etykiet z pliku zasobu data.asm. Wygląda to tak:

...
00	209E	RESOURCE.RESOURCE.RCASM12.RESOURCE.DATA
00	C000	RESOURCE.RESOURCE.RCASM12.RESOURCE._SFX_API.SFX_DATA_ADDR
00	C000	RESOURCE.RESOURCE.RCASM12.RESOURCE._SFX_API.SFX_DATA_ADDR.DATA
00	C000	RESOURCE.RESOURCE.RCASM12.RESOURCE._SFX_API.SFX_DATA_ADDR.DATA_SFX_0
00	C014	RESOURCE.RESOURCE.RCASM12.RESOURCE._SFX_API.SFX_DATA_ADDR.DATA_SFX_1
...

Wprowadziłem te etykiety do pliku mole.asm:

sfxptr
	dta a(RESOURCE.RESOURCE.RCASM12.RESOURCE._SFX_API.SFX_DATA_ADDR.data_sfx_0) ; offset in data 0000 optimized 1=>0
	dta a(RESOURCE.RESOURCE.RCASM12.RESOURCE._SFX_API.SFX_DATA_ADDR.data_sfx_1) ; offset in data 0014 optimized 2=>1

I to pozwoliło, skompilować kod do końca i prawidłowo.

Co mnie w tym gryzie?

Uzależnienie od czynników kompilacji źródeł MP.

Zakładam, że, jeżeli zmieniona zostanie kolejność "wywołania" zasobów, zmieni się również liczba porządkowa dla RESOURCE.RESOURCE.RCASMxx. Więc nie można "ufac" takiemu rozwiązaniu problemu.

Poza tym. Ścieżka przestrzeni nazw do zasobu jest niesamowicie długa w dodatku przekombinowana.

from mad-pascal.

GSoftwareDevelopment avatar GSoftwareDevelopment commented on June 4, 2024

Jak bym to widział ja.

Skoro i tak, każdy zasób rcasm ma dedykowaną przestrzeń nazw, tj. w powyższym przypadku jest to _SFX_API.SFX_DATA_ADDR to po co numerować RCASMxx.
Ok. Zauważyłem, że dla każdego RCASMxx deklarowana są jeszcze dodatkowe etykiety:

RCASM12.RESOURCE.LEN
RCASM12.RESOURCE.MCPY
RCASM12.RESOURCE.DATA

Nie dałoby się tego jakoś związać z etykietą _SFX_API.SFX_DATA_ADDR, i ogólnie uprościć ścieżkę? Np:

RESOURCE.RCASM._SFX_API.SFX_DATA_ADDR_LEN
RESOURCE.RCASM._SFX_API.SFX_DATA_ADDR_MCPY
RESOURCE.RCASM._SFX_API.SFX_DATA_ADDR_DATA

Serio. To wygląda znacznie lepiej i jest bardziej intuicyjne dla programisty.
Nawet w trakcie debugowania (pod Altirrą), będzie wygodniejsze, bo krótsze i czytelniejsze.

from mad-pascal.

zbyti avatar zbyti commented on June 4, 2024

Drogi użytkowniku.

W imieniu autora i kontrybutorów projektu pragnę Cię poinformować, że przyjrzeliśmy się zgłoszeniu i jesteśmy na etapie dyskusji nad możliwością zrealizowania Twojej propozycji.

Niestety w naszej grupie nie zapadł jeszcze konsensus w tej sprawie.

@tebe6502 jako główny programista jest oczywiście bardzo chętny popracować nad tym, niestety jest przeze mnie powstrzymywany bo mam pewne zastrzeżenia.

Niestety to nie miejsce na upublicznianie naszych wewnętrznych przepychanek.

Jeżeli chciałbyś przekonać nas do swojego rozwiązania to proponuję do zgłoszenia dołączyć PR z kodem, wtedy nasza dyskusja nad rozwiązaniem problemu może się uprościć od strony technicznej.

z wyrazami szacunku
Bartek

from mad-pascal.

tebe6502 avatar tebe6502 commented on June 4, 2024

.def :label
tworzy etykietę w głównej przestrzeni nazw, dzięki czemu będzie widziana z każdego miejsca

.def :data_sfx_0 ; KEY CLEAN LONG

.by $7C $A6 $00 $A5 $00 $A4 $01 $A3 $00 $A3 $00 $A3 $3F $A3 $00 $A3 
.by $00 $A3 $83 $00 

; address: $C014 (offset: $0014)
.def :data_sfx_1 ; KEY CLEAN ECHO
.by $7C $A6 $00 $A5 $00 $A4 $00 $A3 $00 $A2 $00 $A1 $80 $00

from mad-pascal.

tebe6502 avatar tebe6502 commented on June 4, 2024

http://mads.atari8.info/pl/skladnia/

rodział: Globalne

from mad-pascal.

GSoftwareDevelopment avatar GSoftwareDevelopment commented on June 4, 2024

@Tebe - to zła praktyka, by biblioteka lokowała etykiety w głównej przestrzeni nazw, a tym bardziej zasób. Ma od tego lokalna przestrzeń, by tam były i z niej korzystać.

@zbyti Nie wiem co to jest PR z kodem 🥺

from mad-pascal.

GSoftwareDevelopment avatar GSoftwareDevelopment commented on June 4, 2024

wszystko o czym pisze nie jest przymusem. To propozycje, które wcale nie muszą być jakkolwiek rozpatrzane - ja się dostosuje, najwyżej... zwalę trochę obowiązków na użytkownika końcowego. 😉

from mad-pascal.

zbyti avatar zbyti commented on June 4, 2024

@GSoftwareDevelopment https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests

from mad-pascal.

tebe6502 avatar tebe6502 commented on June 4, 2024

każdy typ zasobu ma dedykowane makro, które jest wywoływane, w przypadku RCASM (plik BASE\ATARI\RESOURCE.ASM)

/* ----------------------------------------------------------------------- /
/
RCASM
/* ----------------------------------------------------------------------- */
.macro RCASM (nam, lab)

org RESORIGIN

len = .sizeof(_%%2)

mcpy ift main.%%lab+len >= $bc20
mva #0 sdmctl
sta dmactl
eif

jsr sys.off

memcpy #data #main.%%lab #len

jmp sys.on

data

.local _%%2, main.%%lab

icl %%1

.endl
.print '$R RCASM ',main.%%lab,'..',main.%%lab+len-1," %%1"

ini mcpy

.endm

from mad-pascal.

GSoftwareDevelopment avatar GSoftwareDevelopment commented on June 4, 2024

@zbyti Dzięki za możliwość (samodzielnego) rozwoju projektu, ale nie skorzystam. Powód jest prosty: Nie mam czasu "studiować" kodu kompilatora i zasad jego działania. I może na tym poprzestanę, gdyż (jak to napisałeś) "...to nie miejsce na upublicznianie naszych wewnętrznych przepychanek." - na szczęście.
Nie mam zamiaru psuć dobrego imienia Waszego, ani Projektu.

Pozrawiam i... zamykam wątek.

from mad-pascal.

zbyti avatar zbyti commented on June 4, 2024

Pozrawiam i... zamykam wątek.

Dziękuję w imieniu swoim i zespołu!

from mad-pascal.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.