From 78fe0e37bbb0fcfb02e81687f4f6f9afad235687 Mon Sep 17 00:00:00 2001 From: Karol Stasiak Date: Mon, 27 Apr 2020 12:40:49 +0200 Subject: [PATCH] Allow importing modules from subdirectories. Move platform definitions --- docs/api/custom-platform.md | 1 + docs/lang/syntax.md | 6 ++- include/{ => i80}/i80_math.mfk | 0 include/{ => i80}/random_i80.mfk | 0 include/{ => i80}/stdlib_i80.mfk | 2 +- .../{ => internal}/scrstring_fastindices.mfk | 0 .../{ => internal}/scrstring_fastpointers.mfk | 0 include/{ => internal}/string_fastindices.mfk | 0 .../{ => internal}/string_fastpointers.mfk | 0 include/{ => m6502}/bcd_6502.mfk | 0 include/{ => m6502}/random_6502.mfk | 0 include/{ => m6502}/stdlib_6502.mfk | 0 include/{ => m6502}/zp_reg.mfk | 0 include/m6809/random_6809.mfk | 27 ++++++++++ include/m6809/stdlib_6809.mfk | 51 +++++++++++++++++++ include/{ => platform}/a8.ini | 0 include/{ => platform}/apple2.ini | 0 include/{ => platform}/atari_lynx.ini | 0 include/{ => platform}/bbcmicro.ini | 0 include/{ => platform}/c128.ini | 0 include/{ => platform}/c16.ini | 0 include/{ => platform}/c64.ini | 0 include/{ => platform}/c64_crt16k.ini | 0 include/{ => platform}/c64_crt8k.ini | 0 include/{ => platform}/c64_ef_small.ini | 0 include/{ => platform}/c64_scpu.ini | 0 include/{ => platform}/c64_scpu16.ini | 0 include/{ => platform}/c64jp.ini | 0 include/{ => platform}/cpc464.ini | 0 include/{ => platform}/cpm.ini | 0 include/{ => platform}/cpm_z80.ini | 0 include/{ => platform}/dos_com.ini | 0 include/{ => platform}/gb_small.ini | 0 include/{ => platform}/lunix.ini | 0 include/{ => platform}/msx_crt.ini | 0 include/{ => platform}/nes_mmc4.ini | 0 include/{ => platform}/nes_small.ini | 0 include/{ => platform}/pc88.ini | 0 include/{ => platform}/pet.ini | 0 include/{ => platform}/plus4.ini | 0 include/{ => platform}/vcs.ini | 0 include/{ => platform}/vic20.ini | 0 include/{ => platform}/vic20_3k.ini | 0 include/{ => platform}/vic20_8k.ini | 0 include/{ => platform}/vic20_a000.ini | 0 include/{ => platform}/x16_experimental.ini | 0 include/{ => platform}/zxspectrum.ini | 0 include/{ => platform}/zxspectrum_8080.ini | 0 include/random.mfk | 8 +-- include/scrstring.mfk | 4 +- include/stdlib.mfk | 8 +-- include/string.mfk | 4 +- src/main/scala/millfork/Main.scala | 2 +- src/main/scala/millfork/Platform.scala | 7 ++- src/main/scala/millfork/parser/MfParser.scala | 2 +- .../parser/MosSourceLoadingQueue.scala | 6 +-- .../scala/millfork/test/emu/EmuI86Run.scala | 2 +- src/test/scala/millfork/test/emu/EmuRun.scala | 2 +- .../scala/millfork/test/emu/EmuZ80Run.scala | 2 +- .../millfork/test/emu/ShouldNotCompile.scala | 4 +- 60 files changed, 115 insertions(+), 23 deletions(-) rename include/{ => i80}/i80_math.mfk (100%) rename include/{ => i80}/random_i80.mfk (100%) rename include/{ => i80}/stdlib_i80.mfk (97%) rename include/{ => internal}/scrstring_fastindices.mfk (100%) rename include/{ => internal}/scrstring_fastpointers.mfk (100%) rename include/{ => internal}/string_fastindices.mfk (100%) rename include/{ => internal}/string_fastpointers.mfk (100%) rename include/{ => m6502}/bcd_6502.mfk (100%) rename include/{ => m6502}/random_6502.mfk (100%) rename include/{ => m6502}/stdlib_6502.mfk (100%) rename include/{ => m6502}/zp_reg.mfk (100%) create mode 100644 include/m6809/random_6809.mfk create mode 100644 include/m6809/stdlib_6809.mfk rename include/{ => platform}/a8.ini (100%) rename include/{ => platform}/apple2.ini (100%) rename include/{ => platform}/atari_lynx.ini (100%) rename include/{ => platform}/bbcmicro.ini (100%) rename include/{ => platform}/c128.ini (100%) rename include/{ => platform}/c16.ini (100%) rename include/{ => platform}/c64.ini (100%) rename include/{ => platform}/c64_crt16k.ini (100%) rename include/{ => platform}/c64_crt8k.ini (100%) rename include/{ => platform}/c64_ef_small.ini (100%) rename include/{ => platform}/c64_scpu.ini (100%) rename include/{ => platform}/c64_scpu16.ini (100%) rename include/{ => platform}/c64jp.ini (100%) rename include/{ => platform}/cpc464.ini (100%) rename include/{ => platform}/cpm.ini (100%) rename include/{ => platform}/cpm_z80.ini (100%) rename include/{ => platform}/dos_com.ini (100%) rename include/{ => platform}/gb_small.ini (100%) rename include/{ => platform}/lunix.ini (100%) rename include/{ => platform}/msx_crt.ini (100%) rename include/{ => platform}/nes_mmc4.ini (100%) rename include/{ => platform}/nes_small.ini (100%) rename include/{ => platform}/pc88.ini (100%) rename include/{ => platform}/pet.ini (100%) rename include/{ => platform}/plus4.ini (100%) rename include/{ => platform}/vcs.ini (100%) rename include/{ => platform}/vic20.ini (100%) rename include/{ => platform}/vic20_3k.ini (100%) rename include/{ => platform}/vic20_8k.ini (100%) rename include/{ => platform}/vic20_a000.ini (100%) rename include/{ => platform}/x16_experimental.ini (100%) rename include/{ => platform}/zxspectrum.ini (100%) rename include/{ => platform}/zxspectrum_8080.ini (100%) diff --git a/docs/api/custom-platform.md b/docs/api/custom-platform.md index 2a9cc5b4..4a0ce838 100644 --- a/docs/api/custom-platform.md +++ b/docs/api/custom-platform.md @@ -3,6 +3,7 @@ ## Adding a custom platform Every platform is defined in an `.ini` file with an appropriate name. +The file is looked up in the directories on the include path, first directly, then in the `platform` subdirectory. As an extension, multiline entries are supported: if a line ends with a backslash character, the value continues to the next line. diff --git a/docs/lang/syntax.md b/docs/lang/syntax.md index b08dff4d..1c1a6a3d 100644 --- a/docs/lang/syntax.md +++ b/docs/lang/syntax.md @@ -218,7 +218,11 @@ is equivalent to: import -Adds a module to the program. +Adds a module to the program. The module name can be a valid identifier +or a sequence of identifiers separated by forward slashes: + + import module1 + import library1/module2 The module is looked up first in the current working directory, and then in the include directories. diff --git a/include/i80_math.mfk b/include/i80/i80_math.mfk similarity index 100% rename from include/i80_math.mfk rename to include/i80/i80_math.mfk diff --git a/include/random_i80.mfk b/include/i80/random_i80.mfk similarity index 100% rename from include/random_i80.mfk rename to include/i80/random_i80.mfk diff --git a/include/stdlib_i80.mfk b/include/i80/stdlib_i80.mfk similarity index 97% rename from include/stdlib_i80.mfk rename to include/i80/stdlib_i80.mfk index d78a80c0..8b5dd50f 100644 --- a/include/stdlib_i80.mfk +++ b/include/i80/stdlib_i80.mfk @@ -6,7 +6,7 @@ #pragma zilog_syntax -import i80_math +import i80/i80_math macro asm void poke(word const addr, byte register(a) value) { ! LD (addr), A diff --git a/include/scrstring_fastindices.mfk b/include/internal/scrstring_fastindices.mfk similarity index 100% rename from include/scrstring_fastindices.mfk rename to include/internal/scrstring_fastindices.mfk diff --git a/include/scrstring_fastpointers.mfk b/include/internal/scrstring_fastpointers.mfk similarity index 100% rename from include/scrstring_fastpointers.mfk rename to include/internal/scrstring_fastpointers.mfk diff --git a/include/string_fastindices.mfk b/include/internal/string_fastindices.mfk similarity index 100% rename from include/string_fastindices.mfk rename to include/internal/string_fastindices.mfk diff --git a/include/string_fastpointers.mfk b/include/internal/string_fastpointers.mfk similarity index 100% rename from include/string_fastpointers.mfk rename to include/internal/string_fastpointers.mfk diff --git a/include/bcd_6502.mfk b/include/m6502/bcd_6502.mfk similarity index 100% rename from include/bcd_6502.mfk rename to include/m6502/bcd_6502.mfk diff --git a/include/random_6502.mfk b/include/m6502/random_6502.mfk similarity index 100% rename from include/random_6502.mfk rename to include/m6502/random_6502.mfk diff --git a/include/stdlib_6502.mfk b/include/m6502/stdlib_6502.mfk similarity index 100% rename from include/stdlib_6502.mfk rename to include/m6502/stdlib_6502.mfk diff --git a/include/zp_reg.mfk b/include/m6502/zp_reg.mfk similarity index 100% rename from include/zp_reg.mfk rename to include/m6502/zp_reg.mfk diff --git a/include/m6809/random_6809.mfk b/include/m6809/random_6809.mfk new file mode 100644 index 00000000..2cc4b295 --- /dev/null +++ b/include/m6809/random_6809.mfk @@ -0,0 +1,27 @@ + +import random + +#if not(ARCH_6809) +#warn random_6809 module should be only used on 6809-compatible targets +#endif + +asm byte rand() { + ? lda #8 + ? ldb rand_seed+0 +__rand_loop: + aslb + ? rolb rand_seed+1 + bcc __no_eor + eorb #$2D +__no_eor: + deca + bne __rand_loop + ? sta rand_seed+0 + ? rts +} + +inline void init_rand_seed() { + // TODO: find a better source of randomness + rand_seed = 1 +} + diff --git a/include/m6809/stdlib_6809.mfk b/include/m6809/stdlib_6809.mfk new file mode 100644 index 00000000..a55a3e3c --- /dev/null +++ b/include/m6809/stdlib_6809.mfk @@ -0,0 +1,51 @@ +// target-independent things + +#if not(ARCH_6809) +#warn stdlib_6809 module should be only used on 6809-compatible targets +#endif + +word nmi_routine_addr @$FFFC +word reset_routine_addr @$FFFE +word irq_routine_addr @$FFF8 +word swi_routine_addr @$FFFA +word firq_routine_addr @$FFF6 +word swi2_routine_addr @$FFF4 +word swi3_routine_addr @$FFF2 + +macro asm void poke(word const addr, byte register(b) value) { + ! STB addr +} + +macro asm byte peek(word const addr) { + ! LDB addr +} + +macro asm void disable_irq() { + ORCC #$30 +} + +macro asm void enable_irq() { + ANDCC #$CF +} + +asm byte hi_nibble_to_hex(byte register(a) value) { + LSRB + LSRB + LSRB + LSRB + ? JMP lo_nibble_to_hex +} + +asm byte lo_nibble_to_hex(byte register(a) value) { + ! ANDB #$F + ADDB #$30 + CMPB #$3A + BCC _lo_nibble_to_hex_lbl + ADDB #$7 // carry is set +_lo_nibble_to_hex_lbl: + ? RTS +} + +macro asm void panic() { + ? JSR _panic +} \ No newline at end of file diff --git a/include/a8.ini b/include/platform/a8.ini similarity index 100% rename from include/a8.ini rename to include/platform/a8.ini diff --git a/include/apple2.ini b/include/platform/apple2.ini similarity index 100% rename from include/apple2.ini rename to include/platform/apple2.ini diff --git a/include/atari_lynx.ini b/include/platform/atari_lynx.ini similarity index 100% rename from include/atari_lynx.ini rename to include/platform/atari_lynx.ini diff --git a/include/bbcmicro.ini b/include/platform/bbcmicro.ini similarity index 100% rename from include/bbcmicro.ini rename to include/platform/bbcmicro.ini diff --git a/include/c128.ini b/include/platform/c128.ini similarity index 100% rename from include/c128.ini rename to include/platform/c128.ini diff --git a/include/c16.ini b/include/platform/c16.ini similarity index 100% rename from include/c16.ini rename to include/platform/c16.ini diff --git a/include/c64.ini b/include/platform/c64.ini similarity index 100% rename from include/c64.ini rename to include/platform/c64.ini diff --git a/include/c64_crt16k.ini b/include/platform/c64_crt16k.ini similarity index 100% rename from include/c64_crt16k.ini rename to include/platform/c64_crt16k.ini diff --git a/include/c64_crt8k.ini b/include/platform/c64_crt8k.ini similarity index 100% rename from include/c64_crt8k.ini rename to include/platform/c64_crt8k.ini diff --git a/include/c64_ef_small.ini b/include/platform/c64_ef_small.ini similarity index 100% rename from include/c64_ef_small.ini rename to include/platform/c64_ef_small.ini diff --git a/include/c64_scpu.ini b/include/platform/c64_scpu.ini similarity index 100% rename from include/c64_scpu.ini rename to include/platform/c64_scpu.ini diff --git a/include/c64_scpu16.ini b/include/platform/c64_scpu16.ini similarity index 100% rename from include/c64_scpu16.ini rename to include/platform/c64_scpu16.ini diff --git a/include/c64jp.ini b/include/platform/c64jp.ini similarity index 100% rename from include/c64jp.ini rename to include/platform/c64jp.ini diff --git a/include/cpc464.ini b/include/platform/cpc464.ini similarity index 100% rename from include/cpc464.ini rename to include/platform/cpc464.ini diff --git a/include/cpm.ini b/include/platform/cpm.ini similarity index 100% rename from include/cpm.ini rename to include/platform/cpm.ini diff --git a/include/cpm_z80.ini b/include/platform/cpm_z80.ini similarity index 100% rename from include/cpm_z80.ini rename to include/platform/cpm_z80.ini diff --git a/include/dos_com.ini b/include/platform/dos_com.ini similarity index 100% rename from include/dos_com.ini rename to include/platform/dos_com.ini diff --git a/include/gb_small.ini b/include/platform/gb_small.ini similarity index 100% rename from include/gb_small.ini rename to include/platform/gb_small.ini diff --git a/include/lunix.ini b/include/platform/lunix.ini similarity index 100% rename from include/lunix.ini rename to include/platform/lunix.ini diff --git a/include/msx_crt.ini b/include/platform/msx_crt.ini similarity index 100% rename from include/msx_crt.ini rename to include/platform/msx_crt.ini diff --git a/include/nes_mmc4.ini b/include/platform/nes_mmc4.ini similarity index 100% rename from include/nes_mmc4.ini rename to include/platform/nes_mmc4.ini diff --git a/include/nes_small.ini b/include/platform/nes_small.ini similarity index 100% rename from include/nes_small.ini rename to include/platform/nes_small.ini diff --git a/include/pc88.ini b/include/platform/pc88.ini similarity index 100% rename from include/pc88.ini rename to include/platform/pc88.ini diff --git a/include/pet.ini b/include/platform/pet.ini similarity index 100% rename from include/pet.ini rename to include/platform/pet.ini diff --git a/include/plus4.ini b/include/platform/plus4.ini similarity index 100% rename from include/plus4.ini rename to include/platform/plus4.ini diff --git a/include/vcs.ini b/include/platform/vcs.ini similarity index 100% rename from include/vcs.ini rename to include/platform/vcs.ini diff --git a/include/vic20.ini b/include/platform/vic20.ini similarity index 100% rename from include/vic20.ini rename to include/platform/vic20.ini diff --git a/include/vic20_3k.ini b/include/platform/vic20_3k.ini similarity index 100% rename from include/vic20_3k.ini rename to include/platform/vic20_3k.ini diff --git a/include/vic20_8k.ini b/include/platform/vic20_8k.ini similarity index 100% rename from include/vic20_8k.ini rename to include/platform/vic20_8k.ini diff --git a/include/vic20_a000.ini b/include/platform/vic20_a000.ini similarity index 100% rename from include/vic20_a000.ini rename to include/platform/vic20_a000.ini diff --git a/include/x16_experimental.ini b/include/platform/x16_experimental.ini similarity index 100% rename from include/x16_experimental.ini rename to include/platform/x16_experimental.ini diff --git a/include/zxspectrum.ini b/include/platform/zxspectrum.ini similarity index 100% rename from include/zxspectrum.ini rename to include/platform/zxspectrum.ini diff --git a/include/zxspectrum_8080.ini b/include/platform/zxspectrum_8080.ini similarity index 100% rename from include/zxspectrum_8080.ini rename to include/platform/zxspectrum_8080.ini diff --git a/include/random.mfk b/include/random.mfk index 4711aff9..90941414 100644 --- a/include/random.mfk +++ b/include/random.mfk @@ -2,12 +2,14 @@ word rand_seed #if ARCH_6502 -import random_6502 +import m6502/random_6502 #elseif ARCH_I80 -import random_i80 +import i80/random_i80 #elseif ARCH_X86 #warn 8086 is a partially supported architecture -import random_i80 +import m6502/random_i80 +#elseif ARCH_6809 +import m6809/random_6809 #else #warn Unsupported architecture #endif diff --git a/include/scrstring.mfk b/include/scrstring.mfk index 4eee62f2..4daa64b9 100644 --- a/include/scrstring.mfk +++ b/include/scrstring.mfk @@ -12,9 +12,9 @@ alias scrstrzappend = strzappend #else #if ARCH_I80 -import scrstring_fastpointers +import internal/scrstring_fastpointers #else -import scrstring_fastindices +import internal/scrstring_fastindices #endif void scrstrzappend(pointer buffer, pointer str) { diff --git a/include/stdlib.mfk b/include/stdlib.mfk index 90a82ba5..58b2989e 100644 --- a/include/stdlib.mfk +++ b/include/stdlib.mfk @@ -1,12 +1,14 @@ // target-independent things #if ARCH_6502 -import stdlib_6502 +import m6502/stdlib_6502 #elseif ARCH_I80 -import stdlib_i80 +import i80/stdlib_i80 #elseif ARCH_X86 #warn 8086 is a partially supported architecture -import stdlib_i80 +import i80/stdlib_i80 +#elseif ARCH_6809 +import m6809/stdlib_6809 #endif #if PAL && NTSC diff --git a/include/string.mfk b/include/string.mfk index bc9f302f..3c83fa5b 100644 --- a/include/string.mfk +++ b/include/string.mfk @@ -1,9 +1,9 @@ import err #if ARCH_I80 -import string_fastpointers +import internal/string_fastpointers #else -import string_fastindices +import internal/string_fastindices #endif void strzappend(pointer buffer, pointer str) { diff --git a/src/main/scala/millfork/Main.scala b/src/main/scala/millfork/Main.scala index 1a9ee620..673b2c3b 100644 --- a/src/main/scala/millfork/Main.scala +++ b/src/main/scala/millfork/Main.scala @@ -211,7 +211,7 @@ object Main { "zxspectrum", "zxspectrum_8080", "pc88", "cpc464", "msx_crt", "cpm", "cpm_z80", "dos_com") case Right(path) => - Seq(new File(".").list(), new File(path).list()) + Seq(new File(".").list(), new File(".", "platform").list(), new File(path).list(), new File(path, "platform").list()) .filter(_ ne null) .flatMap(_.toSeq) .filter(_.endsWith(".ini")) diff --git a/src/main/scala/millfork/Platform.scala b/src/main/scala/millfork/Platform.scala index b3d457d0..38cff762 100644 --- a/src/main/scala/millfork/Platform.scala +++ b/src/main/scala/millfork/Platform.scala @@ -71,8 +71,13 @@ object Platform { if (file.exists()) { return load(file) } + val file2 = Paths.get(dir, "platform", platformName + ".ini").toFile + log.debug("Checking " + file2) + if (file2.exists()) { + return load(file2) + } } - log.fatal(s"Platfom definition `$platformName` not found", None) + log.fatal(s"Platform definition `$platformName` not found", None) } def load(file: File)(implicit log: Logger): Platform = { diff --git a/src/main/scala/millfork/parser/MfParser.scala b/src/main/scala/millfork/parser/MfParser.scala index d8018ad9..1c5c2de2 100644 --- a/src/main/scala/millfork/parser/MfParser.scala +++ b/src/main/scala/millfork/parser/MfParser.scala @@ -83,7 +83,7 @@ abstract class MfParser[T](fileId: String, input: String, currentDirectory: Stri val continueStatement: P[Seq[ExecutableStatement]] = ("continue" ~ !letterOrDigit ~/ HWS ~ identifier.?).map(l => Seq(ContinueStatement(l.getOrElse("")))) - val importStatement: P[Seq[ImportStatement]] = ("import" ~ !letterOrDigit ~/ SWS ~/ identifier).map(x => Seq(ImportStatement(x))) + val importStatement: P[Seq[ImportStatement]] = ("import" ~ !letterOrDigit ~/ SWS ~/ identifier.rep(min = 1, sep = "/")).map(x => Seq(ImportStatement(x.mkString("/")))) val forDirection: P[ForDirection.Value] = ("parallel" ~ HWS ~ "to").!.map(_ => ForDirection.ParallelTo) | diff --git a/src/main/scala/millfork/parser/MosSourceLoadingQueue.scala b/src/main/scala/millfork/parser/MosSourceLoadingQueue.scala index 5248b373..e946fcc3 100644 --- a/src/main/scala/millfork/parser/MosSourceLoadingQueue.scala +++ b/src/main/scala/millfork/parser/MosSourceLoadingQueue.scala @@ -13,14 +13,14 @@ class MosSourceLoadingQueue(initialFilenames: List[String], override def createParser(filename: String, src: String, parentDir: String, featureConstants: Map[String, Long], pragmas: Set[String]): MfParser[AssemblyLine] = MosParser(filename, src, parentDir, options, featureConstants) - override def standardModules: IndexedSeq[String] = IndexedSeq("zp_reg", "bcd_6502") + override def standardModules: IndexedSeq[String] = IndexedSeq("m6502/zp_reg", "m6502/bcd_6502") def enqueueStandardModules(): Unit = { if (options.zpRegisterSize > 0) { - moduleQueue.enqueue(() => parseModule("zp_reg", includePath, Left(None))) + moduleQueue.enqueue(() => parseModule("m6502/zp_reg", includePath, Left(None))) } if (options.zpRegisterSize >= 4 && !options.flag(CompilationFlag.DecimalMode)) { - moduleQueue.enqueue(() => parseModule("bcd_6502", includePath, Left(None))) + moduleQueue.enqueue(() => parseModule("m6502/bcd_6502", includePath, Left(None))) } } diff --git a/src/test/scala/millfork/test/emu/EmuI86Run.scala b/src/test/scala/millfork/test/emu/EmuI86Run.scala index dfc53dae..f2160f2b 100644 --- a/src/test/scala/millfork/test/emu/EmuI86Run.scala +++ b/src/test/scala/millfork/test/emu/EmuI86Run.scala @@ -54,7 +54,7 @@ object EmuI86Run { private def get(path: String): Program = synchronized { cache.getOrElseUpdate(path, preload(path)).getOrElse(throw new IllegalStateException()) } - def cachedMath(): Program = get("include/i80_math.mfk") // TODO + def cachedMath(): Program = get("include/i80/i80_math.mfk") // TODO def cachedStdio(): Program = get("src/test/resources/include/dummy_stdio.mfk") val leakSaverCpu = new Intel8086() diff --git a/src/test/scala/millfork/test/emu/EmuRun.scala b/src/test/scala/millfork/test/emu/EmuRun.scala index afecdc96..4105a9d9 100644 --- a/src/test/scala/millfork/test/emu/EmuRun.scala +++ b/src/test/scala/millfork/test/emu/EmuRun.scala @@ -187,7 +187,7 @@ class EmuRun(cpu: millfork.Cpu.Value, nodeOptimizations: List[NodeOptimization], // prepare val withLibraries = { var tmp = unoptimized - if(source.contains("import zp_reg")) + if(source.contains("import zp_reg") || source.contains("import m6502/zp_reg")) tmp += EmuRun.cachedZpreg if(source.contains("import stdio")) tmp += EmuRun.cachedStdio diff --git a/src/test/scala/millfork/test/emu/EmuZ80Run.scala b/src/test/scala/millfork/test/emu/EmuZ80Run.scala index 7e22c29f..63ce1595 100644 --- a/src/test/scala/millfork/test/emu/EmuZ80Run.scala +++ b/src/test/scala/millfork/test/emu/EmuZ80Run.scala @@ -56,7 +56,7 @@ object EmuZ80Run { private def get(cpu: millfork.Cpu.Value, path: String): Program = synchronized { cache.getOrElseUpdate(cpu->path, preload(cpu, path)).getOrElse(throw new IllegalStateException()) } - def cachedMath(cpu: millfork.Cpu.Value): Program = get(cpu, "include/i80_math.mfk") + def cachedMath(cpu: millfork.Cpu.Value): Program = get(cpu, "include/i80/i80_math.mfk") def cachedStdio(cpu: millfork.Cpu.Value): Program = get(cpu, "src/test/resources/include/dummy_stdio.mfk") } diff --git a/src/test/scala/millfork/test/emu/ShouldNotCompile.scala b/src/test/scala/millfork/test/emu/ShouldNotCompile.scala index 99731a27..1a74b75f 100644 --- a/src/test/scala/millfork/test/emu/ShouldNotCompile.scala +++ b/src/test/scala/millfork/test/emu/ShouldNotCompile.scala @@ -49,8 +49,8 @@ object ShouldNotCompile extends Matchers { else effectiveSource += "\nnoinline asm word call(word de) {\npush de\nret\n}\n" } } - if (source.contains("import zp_reg")) - effectiveSource += Files.readAllLines(Paths.get("include/zp_reg.mfk"), StandardCharsets.US_ASCII).asScala.mkString("\n", "\n", "") + if (source.contains("import zp_reg") || source.contains("import m6502/zp_reg")) + effectiveSource += Files.readAllLines(Paths.get("include/m6502/zp_reg.mfk"), StandardCharsets.US_ASCII).asScala.mkString("\n", "\n", "") log.setSource(Some(effectiveSource.linesIterator.toIndexedSeq)) val PreprocessingResult(preprocessedSource, features, _) = Preprocessor.preprocessForTest(options, effectiveSource) val parserF =