Disa shënime tepër të shkurtra për të më kujtuar se si të "përziej C dhe ASM së bashku" në të njëjtin projekt duke përdorur Z88DK për RC2014 tim. Unë ende nuk kam gjetur se si të kaloj parametrat ose të kthej të dhëna.

Disa nga këto informacione erdhën nga faqja wiki RC2014 Z88DK.

Skedari C

Ju duhet ky kod në krye për të vendosur ORG në 0x8000

#pragma output CRT_ORG_CODE = 0x8000
#pragma output CRT_REGISTER_SP = 0xFC00

Dhe funksioni Asm që dëshironi të telefononi ka nevojë për një të jashtme si kjo

extern void oled_init();

Skedari ASM

Pjesa e sipërme e skedarit ASM duhet të duket kështu. E gjeta këtë të përmendur në këtë skedar shembulli.

SECTION code_user
PUBLIC _oled_init

E ndjekur nga funksioni

_oled_init:
    call reset
    ld HL, SEQUENCE
    ... etc ...

Ata kanë nevojë për nënvizimet kryesore, nuk e di ende pse.

Përpilimi

Përpilimi është i tillë

zcc +rc2014 -subtype=basic -clib=sdcc_iy -v -m -SO3 --max-allocs-per-node200000 --c-code-in-asm --list @sources.lst -o whatever -create-app
  • +rc2014 për RC2014
  • -subtype=basic për ROM BASIC ose SCM
  • -clib=sdcc_iy për stdio
  • -SO3 –max-allocs-per-node200000 është diçka optimizimi
  • –c-code-in-asm bën diçka që mund të hiqet
  • @sources.lst është një skedar që përmban çdo skedar burimi që do të përpilohet
  • -create-app krijon një deponim të Intel HEX, ngjite atë në terminalin RC2014

Këtu është RC2014 ime që mundëson ndërfaqen Quazar OLED duke përdorur rutinat ASM, por thirrur nga një program C