From 8fa0389da175af88db7b8698d9d33a54772bdb98 Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Mon, 22 Nov 2021 10:49:16 -0600 Subject: [PATCH] cpc: started investigation, cpcrslib, aspect --- presets/cpc/hello.asm | 31 ++++ presets/cpc/keyboard_redefine.c | 63 ++++++++ presets/cpc/sprite_demo.c | 262 ++++++++++++++++++++++++++++++++ res/cpc.bios | Bin 0 -> 114688 bytes res/cpc.wasm | Bin 0 -> 81407 bytes src/common/baseplatform.ts | 5 +- src/common/devices.ts | 1 + src/common/emu.ts | 6 +- src/common/wasmplatform.ts | 2 +- src/machine/cpc.ts | 146 ++++++++++++++++++ src/platform/_index.ts | 1 + src/platform/cpc.ts | 31 ++++ src/platform/vcs.ts | 2 +- src/worker/lib/cpc/cpcrslib.h | 120 +++++++++++++++ src/worker/lib/cpc/cpcrslib.lib | Bin 0 -> 89604 bytes src/worker/lib/cpc/cpcrslib.lst | 1 + src/worker/lib/cpc/crt0-cpc.lst | 75 +++++++++ src/worker/lib/cpc/crt0-cpc.rel | 42 +++++ src/worker/lib/cpc/crt0-cpc.s | 65 ++++++++ src/worker/lib/cpc/crt0-cpc.sym | 27 ++++ src/worker/workermain.ts | 22 ++- 21 files changed, 893 insertions(+), 9 deletions(-) create mode 100644 presets/cpc/hello.asm create mode 100644 presets/cpc/keyboard_redefine.c create mode 100644 presets/cpc/sprite_demo.c create mode 100644 res/cpc.bios create mode 100755 res/cpc.wasm create mode 100644 src/machine/cpc.ts create mode 100644 src/platform/cpc.ts create mode 100644 src/worker/lib/cpc/cpcrslib.h create mode 100644 src/worker/lib/cpc/cpcrslib.lib create mode 100644 src/worker/lib/cpc/cpcrslib.lst create mode 100644 src/worker/lib/cpc/crt0-cpc.lst create mode 100644 src/worker/lib/cpc/crt0-cpc.rel create mode 100644 src/worker/lib/cpc/crt0-cpc.s create mode 100644 src/worker/lib/cpc/crt0-cpc.sym diff --git a/presets/cpc/hello.asm b/presets/cpc/hello.asm new file mode 100644 index 00000000..156c0bed --- /dev/null +++ b/presets/cpc/hello.asm @@ -0,0 +1,31 @@ + +; from https://www.chibiakumas.com/z80/helloworld.php#LessonH1 + +PrintChar = 0xbb5a +WaitChar = 0xbb06 + + org 0x4000 + +Start: + ld hl,Message ;Address of string + call PrintString ;Show String to screen + call WaitChar + ret ;Finished Hello World + +PrintString: + ld a,(hl) ;Print a '255' terminated string + cp 255 + ret z + inc hl + call PrintChar + jr PrintString + +Message: + db 'Hello World! Press a key...',255 + +NewLine: + ld a,13 ;Carriage return + call PrintChar + ld a,10 ;Line Feed + call PrintChar + ret diff --git a/presets/cpc/keyboard_redefine.c b/presets/cpc/keyboard_redefine.c new file mode 100644 index 00000000..fd1f6682 --- /dev/null +++ b/presets/cpc/keyboard_redefine.c @@ -0,0 +1,63 @@ + +// from https://github.com/cpcitor/cpcrslib/tree/master/examples + +#include "cpcrslib.h" + +void wait(void){ + __asm + + _kkk: + ld b,#100 + llll: + halt + djnz llll + __endasm; +} + +main() +{ + cpc_SetModo(1); + + cpc_AssignKey(4,0x4804); // key "ESC" + + cpc_PrintStr("Welcome to cpcrslib keyboard utilities."); + cpc_PrintStr("Press a Key to redefine as #1"); + cpc_RedefineKey(0); //redefine key. There are 12 available keys (0..11) + cpc_PrintStr("Done!"); + + + cpc_PrintStr("Now, press any key to continue"); + while(!(cpc_AnyKeyPressed())){} + + cpc_PrintStr("Well done! Let's do it again"); + + cpc_PrintStr("Press any key to continue"); + while(!(cpc_AnyKeyPressed())){} + + + cpc_PrintStr("Press a Key to redefine as #3"); + cpc_RedefineKey(3); //redefine key. There are 12 available keys (0..11) + cpc_PrintStr("Done!"); + + + wait(); + cpc_SetModo(1); + + cpc_SetBorder(3); + + cpc_PrintStr("Now let's test the selected keys. Press ESC to EXIT"); + + cpc_PrintStr("Press a Key to test it.."); + while (!cpc_TestKey(4)) { // IF NOT ESC is pressed + + if (cpc_TestKey(0)) { //test if the key has been pressed. + cpc_PrintStr("OK Key #1"); + } + if (cpc_TestKey(3)) { //test if the key has been pressed. + cpc_PrintStr("OK Key #2"); + } + //else cpc_PrintStr(no); + } + return 0; + +} diff --git a/presets/cpc/sprite_demo.c b/presets/cpc/sprite_demo.c new file mode 100644 index 00000000..963a0e0d --- /dev/null +++ b/presets/cpc/sprite_demo.c @@ -0,0 +1,262 @@ + +// from https://github.com/cpcitor/cpcrslib/tree/master/examples + +#include "cpcrslib.h" + +extern unsigned char sp_1[]; //masked sprite data +extern unsigned char sp_2[]; //masked sprite data +extern unsigned char tintas[]; //inks +extern unsigned char buffer[]; //inks + +struct sprite // minimun sprite structure +{ + char *sp0; //2 bytes 01 + char *sp1; //2 bytes 23 + int coord0; //2 bytes 45 current superbuffer address + int coord1; //2 bytes 67 old superbuffer address + unsigned char cx, cy; //2 bytes 89 current coordinates + unsigned char ox, oy; //2 bytes 1011 old coordinates + unsigned char move1; // los bits 4,3,2 definen el tipo de dibujo!! + unsigned char move; // in this example, to know the movement direction of the sprite +}; + +struct sprite sprite00,sprite01,sprite02; + +void data(void) +{ + __asm +_buffer: + .db #30 +_sp_1: + .db #4,#15 //sprite dimensions in bytes withd, height + .db #0xFF,#0x00,#0x00,#0xCF,#0x00,#0xCF,#0xFF,#0x00 //data: mask, sprite, mask, sprite... + .db #0xAA,#0x45,#0x00,#0x3C,#0x00,#0x3C,#0x55,#0x8A + .db #0x00,#0x8A,#0x00,#0x55,#0x00,#0xAA,#0x00,#0x45 + .db #0x00,#0x8A,#0x00,#0x20,#0x00,#0x00,#0x00,#0x65 + .db #0x00,#0x28,#0x00,#0x55,#0x00,#0xAA,#0x00,#0x14 + .db #0x00,#0x7D,#0x00,#0xBE,#0x00,#0xFF,#0x00,#0xBE + .db #0xAA,#0x14,#0x00,#0xFF,#0x00,#0xBE,#0x55,#0x28 + .db #0xAA,#0x00,#0x00,#0x3C,#0x00,#0x79,#0x55,#0x00 + .db #0x00,#0x51,#0x00,#0x51,#0x00,#0xA2,#0x55,#0xA2 + .db #0x00,#0xF3,#0x00,#0x10,#0x00,#0x20,#0x00,#0xF3 + .db #0x00,#0xF3,#0x00,#0x51,#0x00,#0xA2,#0x00,#0xF3 + .db #0x55,#0x28,#0x00,#0x0F,#0x00,#0x0F,#0xAA,#0x14 + .db #0xFF,#0x00,#0x55,#0x0A,#0xAA,#0x05,#0xFF,#0x00 + .db #0x55,#0x02,#0x55,#0x28,#0xAA,#0x14,#0xAA,#0x01 + .db #0x00,#0x03,#0x55,#0x02,#0xAA,#0x01,#0x00,#0x03 + +_sp_2: + .db #4,#21 + .db #0xFF,#0x00,#0x00,#0xCC,#0x00,#0xCC,#0xFF,#0x00 + .db #0xFF,#0x00,#0xAA,#0x44,#0x55,#0x88,#0xFF,#0x00 + .db #0xFF,#0x00,#0xAA,#0x44,#0x55,#0x88,#0xFF,#0x00 + .db #0xFF,#0x00,#0xAA,#0x44,#0x55,#0x88,#0xFF,#0x00 + .db #0xFF,#0x00,#0x00,#0xCF,#0x00,#0xCF,#0xFF,#0x00 + .db #0xAA,#0x45,#0x00,#0xCF,#0x00,#0xCF,#0x55,#0x8A + .db #0xAA,#0x45,#0x00,#0xE5,#0x00,#0xDA,#0x55,#0x8A + .db #0xAA,#0x45,#0x00,#0xCF,#0x00,#0xCF,#0x55,#0x8A + .db #0xAA,#0x45,#0x00,#0xCF,#0x00,#0xCF,#0x55,#0x8A + .db #0xAA,#0x45,#0x00,#0xCF,#0x00,#0xCF,#0x55,#0x8A + .db #0xAA,#0x45,#0x00,#0xCF,#0x00,#0xCF,#0x55,#0x8A + .db #0xFF,#0x00,#0x00,#0xCF,#0x00,#0xCF,#0xFF,#0x00 + .db #0xAA,#0x01,#0x00,#0x03,#0x00,#0x03,#0x55,#0x02 + .db #0x00,#0xA9,#0x00,#0x03,#0x00,#0x03,#0x00,#0x56 + .db #0x00,#0xA9,#0x00,#0x03,#0x00,#0x03,#0x00,#0x56 + .db #0xAA,#0x01,#0x00,#0x03,#0x00,#0x03,#0x55,#0x02 + .db #0xAA,#0x01,#0x00,#0x03,#0x00,#0x03,#0x55,#0x02 + .db #0xAA,#0x01,#0x00,#0x06,#0x00,#0x09,#0x55,#0x02 + .db #0xFF,#0x00,#0x00,#0x0C,#0x00,#0x0C,#0xFF,#0x00 + .db #0xFF,#0x00,#0x00,#0x0C,#0x00,#0x0C,#0xFF,#0x00 + .db #0xFF,#0x00,#0x00,#0x0C,#0x00,#0x0C,#0xFF,#0x00 + +// There is a tool called Sprot that allows to generate masked sprites for z88dk. +// ask for it: www.amstrad.es/forum/ + +_tintas: //firmware inks + .db #0,#13,#1,#6,#26,#24,#15,#8,#10,#22,#14,#3,#18,#4,#11,#25 + __endasm; +} + + +void *p_sprites[7]; + +void initPointers() +{ + + p_sprites[0] = &sprite00; + p_sprites[1] = &sprite01; + p_sprites[2] = &sprite02; + +} + +void set_colours(void) +{ + unsigned char x; + for (x=0; x<16; x++) + { + cpc_SetInk(x,tintas[x]); + } + cpc_SetBorder(0); +} +void pause(void) +{ + __asm + ld b,#80 +pause_loop: + halt + djnz pause_loop + __endasm; +} +void collide(void) +{ + cpc_SetColour(16,1); + pause(); + cpc_SetColour(16,9); +} + +void draw_tilemap(void) +{ + unsigned char x,y; + //set the tiles of the map. In this example, the tile map is 32x16 tile + //Tile Map configuration file: TileMapConf.asm + + y=0; + for(x=0; x<32; x++) + { + cpc_SetTile(x,y,1); + } + for(y=1; y<15; y++) + { + for (x=0; x<32; x++) + { + cpc_SetTile(x,y,0); + } + } + y=15; + for (x=0; x<32; x++) + { + cpc_SetTile(x,y,2); + } +} + +void print_credits(void) +{ + cpc_PrintGphStrXY("SMALL;SPRITE;DEMO",9*2+3,20*8); + cpc_PrintGphStrXY("SDCC;;;CPCRSLIB",10*2+3,21*8); + cpc_PrintGphStrXY("BY;ARTABURU;2015",10*2+2,22*8); + cpc_PrintGphStrXY("ESPSOFT0) sprite00.cx--; + if (cpc_TestKey(2)==1 && sprite00.cy>0) sprite00.cy-=2; + if (cpc_TestKey(3)==1 && sprite00.cy<112) sprite00.cy+=2; + + // The other sprites are automatically moved + if (sprite01.move==0) //0 = left, 1 = right + { + if (sprite01.cx>0) sprite01.cx--; + else sprite01.move=1; + } + if (sprite01.move==1) //0 = left, 1 = right + { + if (sprite01.cx<60) sprite01.cx++; + else sprite01.move=0; + } + + if (sprite02.move==2) //2 = up, 3 = down + { + if (sprite02.cy>0) sprite02.cy-=2; + else sprite02.move=3; + } + if (sprite02.move==3) //2 = up, 3 = down + { + if (sprite02.cy<106) sprite02.cy+=2; + else sprite02.move=2; + } + + cpc_ResetTouchedTiles(); //clear touched tile table + + //Sprite phase 1 + cpc_PutSpTileMap(p_sprites[0]); //search the tiles where is and was the sprite + cpc_PutSpTileMap(p_sprites[1]); + cpc_PutSpTileMap(p_sprites[2]); + + cpc_UpdScr(); //Update the screen to new situatio (show the touched tiles) + + //Sprite phase 2 + cpc_PutMaskSpTileMap2b(p_sprites[0]); //Requires to move sprite with cpc_SpUpdX or cpc_SpUpdY + cpc_PutMaskSpTileMap2b(p_sprites[1]); + cpc_PutMaskSpTileMap2b(p_sprites[2]); + + cpc_ShowTileMap2(); //Show the touched tiles-> show the new sprite situatuion + + if (cpc_CollSp(p_sprites[0],p_sprites[1])) collide(); //test if there is collision between sprite00 and sprite01 + if (cpc_CollSp(p_sprites[0],p_sprites[2])) collide(); + + } +} diff --git a/res/cpc.bios b/res/cpc.bios new file mode 100644 index 0000000000000000000000000000000000000000..048d6a76228622917c01bac6e7ae0961e64ac980 GIT binary patch literal 114688 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 t$bEL(U{QWZP<(*|7Ce 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

2ySDB0YQz*#xM!91KVkQNxm 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 P@9SH!YSoJV{tN# extends BaseDebugPl var videoFrequency; if (hasVideo(m)) { var vp = m.getVideoParams(); - this.video = new RasterVideo(this.mainElement, vp.width, vp.height, {overscan:!!vp.overscan,rotate:vp.rotate|0}); + this.video = new RasterVideo(this.mainElement, vp.width, vp.height, + {overscan: !!vp.overscan, + rotate: vp.rotate|0, + aspect: vp.aspect}); this.video.create(); m.connectVideo(this.video.getFrameData()); // TODO: support keyboard w/o video? diff --git a/src/common/devices.ts b/src/common/devices.ts index 93bd4593..4d8068ca 100644 --- a/src/common/devices.ts +++ b/src/common/devices.ts @@ -40,6 +40,7 @@ export interface VideoParams { overscan? : boolean; rotate? : number; videoFrequency? : number; // default = 60 + aspect? : number; } // TODO: frame buffer optimization (apple2, etc) diff --git a/src/common/emu.ts b/src/common/emu.ts index 5b5ebe86..0f439758 100644 --- a/src/common/emu.ts +++ b/src/common/emu.ts @@ -65,7 +65,7 @@ export function _setKeyboardEvents(canvas:HTMLElement, callback:KeyboardCallback }; }; -type VideoCanvasOptions = {rotate?:number, overscan?:boolean}; +type VideoCanvasOptions = {rotate?:number, overscan?:boolean, aspect?:number}; export class RasterVideo { @@ -113,6 +113,10 @@ export class RasterVideo { if (this.options && this.options.overscan) { this.vcanvas.css('padding','0px'); } + if (this.options && this.options.aspect) { + console.log(this.options); + this.vcanvas.css('aspect-ratio', this.options.aspect+""); + } this.ctx = canvas.getContext('2d'); this.imageData = this.ctx.createImageData(this.width, this.height); this.datau32 = new Uint32Array(this.imageData.data.buffer); diff --git a/src/common/wasmplatform.ts b/src/common/wasmplatform.ts index c7b1afb6..b7e93eeb 100644 --- a/src/common/wasmplatform.ts +++ b/src/common/wasmplatform.ts @@ -99,7 +99,7 @@ export abstract class BaseWASMMachine { } async loadWASM() { await this.fetchWASM(); - this.exports.memory.grow(64); // TODO: need more when probing? + this.exports.memory.grow(96); // TODO: need more when probing? await this.fetchBIOS(); await this.initWASM(); } diff --git a/src/machine/cpc.ts b/src/machine/cpc.ts new file mode 100644 index 00000000..a83a926c --- /dev/null +++ b/src/machine/cpc.ts @@ -0,0 +1,146 @@ + +//// WASM Machine + +import { KeyFlags } from "../common/emu"; +import { Machine } from "../common/baseplatform"; +import { TrapCondition } from "../common/devices"; +import { BaseWASMMachine } from "../common/wasmplatform"; + +const BIN_HEADER = [ + 0, + 0,0,0,0,0,0,0,0, + 0,0,0, + 0,0,0,0,0,0, + 1, + 0,0, + 0x0, 0x40, // load addr + 0, + 0x0, 0x0, // length + 0x0, 0x40, // start addr + 0,0,0,0, + 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, +]; + +export class CPC_WASMMachine extends BaseWASMMachine implements Machine { + + numTotalScanlines = 312; + cpuCyclesPerLine = 224; + + joymask0 = 0; + + loadROM(rom: Uint8Array) { + let runaddr = 0x4000; //0x5de9; + let combined = new Uint8Array(rom.length + BIN_HEADER.length); + combined.set(BIN_HEADER, 0); + combined[24] = rom.length & 0xff; + combined[25] = rom.length >> 8; + combined[26] = runaddr & 0xff; + combined[27] = runaddr >> 8; + combined.set(rom, BIN_HEADER.length); + super.loadROM(combined); + } + reset() { + super.reset(); + // advance bios + this.exports.machine_exec(this.sys, 1000000); // TODO? + // load rom (SNA or BIN) + if (this.romptr && this.romlen) { + this.exports.machine_load_rom(this.sys, this.romptr, this.romlen); + } + } + advanceFrame(trap: TrapCondition) : number { + //var scanline = this.exports.machine_get_raster_line(this.sys); + var probing = this.probe != null; + if (probing) this.exports.machine_reset_probe_buffer(); + var clocks = super.advanceFrameClock(trap, Math.floor(1000000 / 50)); // TODO: use ticks, not msec + if (probing) this.copyProbeData(); + return clocks; + } + /* + z80_tick_t tick_cb; // 0 + uint64_t bc_de_hl_fa; // 8 + uint64_t bc_de_hl_fa_; // 16 + uint64_t wz_ix_iy_sp; // 24 + uint64_t im_ir_pc_bits; // 32 + uint64_t pins; // 48 + void* user_data; + z80_trap_t trap_cb; + void* trap_user_data; + int trap_id; + */ + getCPUState() { + this.exports.machine_save_cpu_state(this.sys, this.cpustateptr); + var s = this.cpustatearr; + var af = s[9] + (s[8]<<8); // not FA + var hl = s[10] + (s[11]<<8); + var de = s[12] + (s[13]<<8); + var bc = s[14] + (s[15]<<8); + var sp = s[24] + (s[25]<<8); + var iy = s[26] + (s[27]<<8); + var ix = s[28] + (s[29]<<8); + var pc = s[34] + (s[35]<<8); + var ir = s[36] + (s[37]<<8); + return { + PC:pc, + SP:sp, + AF:af, + BC:bc, + DE:de, + HL:hl, + IX:ix, + IY:iy, + IR:ir, + o:this.readConst(pc), + } + } + saveState() { + this.exports.machine_save_state(this.sys, this.stateptr); + return { + c:this.getCPUState(), + state:this.statearr.slice(0), + }; + } + loadState(state) : void { + this.statearr.set(state.state); + this.exports.machine_load_state(this.sys, this.stateptr); + } + getVideoParams() { + return {width:768, height:272, overscan:true, videoFrequency:50, aspect:1.3}; + } + setKeyInput(key: number, code: number, flags: number): void { + // TODO: handle shifted keys + if (key == 16 || key == 17 || key == 18 || key == 224) return; // meta keys + //console.log(key, code, flags); + //if (flags & KeyFlags.Shift) { key += 64; } + // convert to c64 (TODO: zx) + var mask = 0; + var mask2 = 0; + if (key == 37) { key = 0x8; mask = 0x4; } // LEFT + if (key == 38) { key = 0xb; mask = 0x1; } // UP + if (key == 39) { key = 0x9; mask = 0x8; } // RIGHT + if (key == 40) { key = 0xa; mask = 0x2; } // DOWN + if (key == 32) { mask = 0x10; } // FIRE + if (key == 65) { key = 65; mask2 = 0x4; } // LEFT + if (key == 87) { key = 87; mask2 = 0x1; } // UP + if (key == 68) { key = 68; mask2 = 0x8; } // RIGHT + if (key == 83) { key = 83; mask2 = 0x2; } // DOWN + if (key == 69) { mask2 = 0x10; } // FIRE + if (key == 113) { key = 0xf1; } // F2 + if (key == 115) { key = 0xf3; } // F4 + if (key == 119) { key = 0xf5; } // F8 + if (key == 121) { key = 0xf7; } // F10 + if (flags & KeyFlags.KeyDown) { + this.exports.machine_key_down(this.sys, key); + this.joymask0 |= mask; + } else if (flags & KeyFlags.KeyUp) { + this.exports.machine_key_up(this.sys, key); + this.joymask0 &= ~mask; + } + this.exports.cpc_joystick(this.sys, this.joymask0, 0); + } +} diff --git a/src/platform/_index.ts b/src/platform/_index.ts index 9669305f..3c7b32bb 100644 --- a/src/platform/_index.ts +++ b/src/platform/_index.ts @@ -10,6 +10,7 @@ export function importPlatform(name: string) : Promise { case "basic": return import("../platform/basic"); case "c64": return import("../platform/c64"); case "coleco": return import("../platform/coleco"); + case "cpc": return import("../platform/cpc"); case "devel": return import("../platform/devel"); case "galaxian": return import("../platform/galaxian"); case "kim1": return import("../platform/kim1"); diff --git a/src/platform/cpc.ts b/src/platform/cpc.ts new file mode 100644 index 00000000..3efff025 --- /dev/null +++ b/src/platform/cpc.ts @@ -0,0 +1,31 @@ + +import { CPC_WASMMachine } from "../machine/cpc"; +import { Platform, BaseZ80MachinePlatform } from "../common/baseplatform"; +import { PLATFORMS } from "../common/emu"; + +const CPC_PRESETS = [ + {id:'hello.asm', name:'Hello World (ASM)'}, + {id:'sprite_demo.c', name:'Sprite Demo (C)'}, + {id:'keyboard_redefine.c', name:'Keyboard Redefine (C)'}, +]; + +const CPC_MEMORY_MAP = { main:[ + {name:'BIOS', start:0x0000, size:0x4000, type:'rom'}, + {name:'Screen RAM', start:0xc000, size:0x4000, type:'ram'}, +] } + +// WASM CPC platform +class CPCWASMPlatform extends BaseZ80MachinePlatform implements Platform { + + newMachine() { return new CPC_WASMMachine('cpc'); } + + getPresets() { return CPC_PRESETS; } + getDefaultExtension() { return ".asm"; }; + readAddress(a) { return this.machine.readConst(a); } + getMemoryMap() { return CPC_MEMORY_MAP; } + showHelp() { + window.open("https://worldofspectrum.org/faq/reference/reference.htm", "_help"); + } +} + +PLATFORMS['cpc.464'] = CPCWASMPlatform; diff --git a/src/platform/vcs.ts b/src/platform/vcs.ts index f2fc2207..1a697807 100644 --- a/src/platform/vcs.ts +++ b/src/platform/vcs.ts @@ -486,7 +486,7 @@ class VCSStellaPlatform implements Platform { gamma: 0.8, scalingMode: this.Stellerator.ScalingMode.qis, tvEmulation: this.Stellerator.TvEmulation.composite, - phosphorLevel: 0.5, + phosphorLevel: 0.25, scanlineLevel: 0.2, keyboardTarget: this.mainElement } diff --git a/src/worker/lib/cpc/cpcrslib.h b/src/worker/lib/cpc/cpcrslib.h new file mode 100644 index 00000000..de4719ed --- /dev/null +++ b/src/worker/lib/cpc/cpcrslib.h @@ -0,0 +1,120 @@ + +#ifndef __cpcrslib_h__ +#define __cpcrslib_h__ + + +void cpc_SetMode( char color) __z88dk_fastcall; +void cpc_SetModo( char x) __z88dk_fastcall; +void cpc_SetColour(unsigned char num, char color) __z88dk_callee; +void cpc_SetInk(unsigned char num, unsigned char color) __z88dk_callee; +void cpc_SetBorder( char color) __z88dk_fastcall; +int cpc_GetScrAddress(char x, char y) __z88dk_callee; +void cpc_ClrScr(void); + + +void cpc_EnableFirmware(void); +void cpc_DisableFirmware(void); +unsigned char cpc_Random(void); +void cpc_PrintStr(char *text) __z88dk_fastcall; +void cpc_RRI(unsigned int pos, unsigned char w, unsigned char h) __z88dk_callee; +void cpc_RLI(unsigned int pos, unsigned char w, unsigned char h) __z88dk_callee; + + + + +void cpc_PutSprite(char *sprite, int posicion) __z88dk_callee; +void cpc_PutSp(char *sprite, char height, char width, int address) __z88dk_callee; +void cpc_PutSp4x14(char *sprite, int address) __z88dk_callee; +void cpc_PutSpriteXOR(char *sprite, int posicion) __z88dk_callee; +void cpc_PutSpXOR(char *sprite, char height, char width, int address) __z88dk_callee; +//void cpc_PutSpriteTr(char *sprite, int *posicion) __z88dk_callee; +void cpc_PutSpTr(char *sprite, char height, char width, int address) __z88dk_callee; +void cpc_GetSp(char *sprite, char alto, char ancho, int posicion) __z88dk_callee; +void cpc_PutMaskSprite(char *sprite,unsigned int addr) __z88dk_callee; +void cpc_PutMaskSp(char *sprite, char alto, char ancho, int posicion) __z88dk_callee; +void cpc_PutMaskSp4x16(char *sprite,unsigned int addr) __z88dk_callee; +void cpc_PutMaskSp2x8(char *sprite,unsigned int addr) __z88dk_callee; +unsigned char cpc_CollSp(char *sprite, char *sprite2) __z88dk_callee; + +void cpc_PutTile2x8(char *sprite, unsigned char x, unsigned char y); +void cpc_PutTile2x8b(char *sprite, int posicion) __z88dk_callee; + + +void cpc_PrintGphStr(char *text, int destino) __z88dk_callee; +void cpc_PrintGphStrM1(char *text, int destino) __z88dk_callee; +void cpc_PrintGphStr2X(char *text, int destino) __z88dk_callee; +void cpc_PrintGphStrM12X(char *text, int destino) __z88dk_callee; + +void cpc_PrintGphStrXY(char *text, char a, char b) __z88dk_callee; +void cpc_PrintGphStrXYM1(char *text, char a, char b) __z88dk_callee; +void cpc_PrintGphStrXY2X(char *text, char a, char b) __z88dk_callee; +void cpc_PrintGphStrXYM12X(char *text, char a, char b) __z88dk_callee; +void cpc_SetInkGphStr(char a, char b) __z88dk_callee; +void cpc_SetInkGphStrM1(char a, char b) __z88dk_callee; + + +void cpc_PrintGphStrStd(char color, char *cadena, int destino); +void cpc_PrintGphStrStdXY(char color, char *cadena, char x, char y); + + +int cpc_AnyKeyPressed(void); +void cpc_ScanKeyboard(void); +char cpc_TestKeyF(char number) __z88dk_fastcall; +void cpc_DeleteKeys(void); +void cpc_AssignKey(unsigned char tecla, int valor); +unsigned char cpc_TestKey(unsigned char tecla) __z88dk_fastcall; +void cpc_RedefineKey(unsigned char tecla) __z88dk_fastcall; + + +// Uncompression tools +void cpc_UnExo(char *origen, int destino) __z88dk_callee; +void cpc_Uncrunch(char *origen, int destino) __z88dk_callee; + + + + + + +// TILE MAP: +void cpc_InitTileMap(void); +void cpc_SetTile(unsigned char x, unsigned char y, unsigned char b); +void cpc_ShowTileMap(); +void cpc_ShowTileMap2(void); +void cpc_ResetTouchedTiles(void); + +void cpc_PutSpTileMap(char *sprite) __z88dk_fastcall; +void cpc_PutSpTileMapF(char *sprite); +void cpc_UpdScr(void); +void cpc_PutSpTileMap2b(char *sprite); +void cpc_PutMaskSpTileMap2b(char *sprite) __z88dk_fastcall; +void cpc_PutMaskInkSpTileMap2b(char *sprite); +void cpc_PutTrSpTileMap2b(char *sprite); +void cpc_PutTrSpriteTileMap2b(char *sprite); + +void cpc_SetTouchTileXY(unsigned char x, unsigned char y, unsigned char t); +unsigned char cpc_ReadTile(unsigned char x, unsigned char y) __z88dk_callee; + +//void cpc_SpUpdY(char *sprite, char valor); +//void cpc_SpUpdX(char *sprite, char valor); + +// Superbufer: +void cpc_SuperbufferAddress(char *sprite); +void cpc_ScrollRight00(void); +void cpc_ScrollRight01(void); +void cpc_ScrollLeft00(void); +void cpc_ScrollLeft01(void); + + +// Doble buffer: + +void cpc_SetSolidSprite(void); +void cpc_SetMaskedSprite(void); + +void cpc_ScrollRight(char z) __z88dk_fastcall; +void cpc_ScrollLeft(char z) __z88dk_fastcall; +void cpc_ScrollUp(char z) __z88dk_fastcall; +void cpc_ScrollDown(char z) __z88dk_fastcall; + + + +#endif /* __cpcrslib_h__ */ diff --git a/src/worker/lib/cpc/cpcrslib.lib b/src/worker/lib/cpc/cpcrslib.lib new file mode 100644 index 0000000000000000000000000000000000000000..15f77afb2626d9f3c0b8e57fa600d94bc41909dc GIT binary patch literal 89604 zcmeI5U5I5%me_1Bxgp_#h~Q2!i-9jN_XRgC8IwIQaYj*Zznd5&N7| znRUCnZs*~gojYU4TCrlqiWMtXtcd-`f9mY|`6oa9=<#&;neA*YHW#za&AsV#!;jMI zbh%}$t3;#)a%J4{ry=;)bIGm;`h~mIhmxtpZVrwlK#H=OOr|Z z`}WafqThFZHhw?%+mnfYr~ha5?-zdeWRm_qhZpJZFM=ce{iXjlndtXR@H74WWq6eS z{@Pb26aD`BJbr)US0)qv{w8Vq{qnEI?{EM5WTM}%Ku7KOcYbj)(eLjq;`jIe@MMzy zeib_O`v)J!?;rj6WTM|c{^|Jr+W(zQ^!q3OCVu}6-le~P@$V)R{r(jVpx?iy9rXJ* zpACQimNrg*|NhTUCi?vcVDD!Zue*gI&#_u<%tA79G>;3Py{?=ro-+%q> z`2F|aJDKSBKYliT|LfUgqTm0c4*LBLb>sKmo+Iw>Gym7Y5acQlgWGfJ^G*h z?+^U*$$R?!p|8a6Cw_hMo_>Gg?=JuSso$8qr{7NktKXlQm%rT~o4lvr-Y>`Rr+#ko zo_;_5v+;ZX#pFHxzA4%rs5ZGsaeRXs3{Nn1>>BTGl zo?V{aeERzQ`q`%+eFVz0SIci>h|pN^6d24=eOrgrM~&;?fYjp-+lV}gNw`a z_s?F>pS=x~ZwcM=>+`dl=Vz}Vc38cnF28VbbMfr*e7-Wr>CLlf$ETlMeXp(UN~pKQ zjrZ@3hsM6TynJ%;@h7(%vmTp;l}7A1o;`YUesg~N!PTeFKRJJ)O5gO)hb&!NVuFyb zpMNx<{nHlm z{3d$nY12j12W>~4oEqr#_UifBiz|BUEfk)eettUa&y&7q|AkM_KTb4DTi6>a1(cci z(X-;Nc>11pZ(L8#&)i5oBDc@iUR{`0R9FAxuH^O_vsL_^lD{j;rt^uNAAYB&(6oPW zeslXX=bvY(Pf>WJKD#=*evv&oI=?)>J?CN4i&IQBnEh9u1Mp1^W9K=(hJcg4nD3r{ z{t`}JUc5R#o7|p1N7^#GmH z@njb}a&&Pcy?%0W{qlQf*9i{;#Wl#D z-X;y~nX71uB?9@vE;t zDQWwrNRB5Te&_wd7U-WYe>VRxqdLL60qAqAPPE49%Oxc&!7%>l!|$X;qtaf|=dW%~ zDez48Slry6U%$L~b#{Gv@$xlfVA)P|ckvPpf$@BKetv!0!cNX!yy*V{+cj`PmjGuH z-*ZVkObK#prR*=*c=*ZL^$iqI%;}5s=T|Q-KDuClK0CdA`MP7FtXZkJGN9navQmr|6@L>l?Zibz4l7&$V1kCXaK+#?Z}C{5RX&>--wUOzJDw z=a-KkDH#sOd}ok^u4by!Cv~b#{oK=&!L!6@?9)^GK1ogO=RP^~dm!&q3#++*l$epT zKDD89Xvg-C6QGSgH8nf?)X3XdoPBb`fN%FHNj>|-)=cVC5(}wMd|H?~$+LmYlB6ew zNuS!=Bz;|>mVt{+*{=&tJ^Q%Ws zr|n2OJv#pgoEwk!r>BSCI69u*T>Rqsbmw^b(dF64H~736m9M88KzK+Uc+@)B+QW_J z>DHqUrqE0YPvUR$Uz0jLnN5#p)06G#?opXzs|u&o>E?X8In&MV;q>rex_L6VZtv>f zxvoR3E`8J24JezE3i>Hr*^~F_z;F*Ic!nZtP9B zj;Hg@DXp@zH$C2-&H~F!DP)-KO?Qu}bA_&h9+%NBwx&C~!+g-ZS>>ivr!&J*#Nl2E zSJpt-%uVPz+?a0ry6@|WuUlMa(>-60buF-NnS+#mIG-+jJ@OT99Bxi`eFZi5Gp<_& zJY`b&j-E{qd=)L*re%97TDGU6WqT@Gc1n2HSQPF|Md6P4bGU0-O5V8%3LMcel)JGI zm9xbZ>gNk#+FWG08?#4#Vt3b7y>qtM9_gL)yY|lgkYv#7ba`La&&O5tryT)7NH5OTGR+)CDjvL37IzC2CrJt3py4y?&ruj&7XIb7J zuVc(C)~w|g`eEV5T$B}kjFL(}tLizY@5kq@)f2T+A5rPFF<)AFIlsf&Ec`5E#Sx~yYnLcSOE)rUYbheH# zlBHcyNFN(zyS6ZRP+et6bEwtR*=zEwU$aXR3zPBbw57kcG~qU5Y*58p%1^ztk>DI6 zsH_OSL0;Ad-ynCAb+`}{3#%bt$jVxFZzDK95RRR=&UKHm2>>_S-0U?Sq%dnRg>9W~Qw%p)KzlYcXR=pOUMKsq ziFNM|wow{_a~qQ6P?=!a@(qdGZQ-uoHrPSBU(nAe3i^4 zpX(6JEa|QJP1sm6#;LAV<=IIULaCyxmBsz z{*LAh2RoXPP*?7SjG-HTIFJ6_9>R;r4Tb<&(3G%kMjS3ET@B5kU!m2x-O|83UJ%xl zd{*kc*b|;K z=S{b>9t8Ysx9t+EbsqY!D1YAe&NXx%+O2@!3~l#@I?uY&z5ZR*c??TSRo%2zWJ8X* zu`DyG&Kp;C?cng}@eH+^d{*hY&0Si?pD(Gd`y$M_^)0D6+$|qlB(w6|#;lo$ z&U+|BbCo$M6EPf~$1+Rp%jv^gFqb;hd=;i9>wz?o$KSe>g;D#hns=B^xYRZ)YEZtz zVOJ4p_9(`jsPdEmP{{Px!U z%HQ!2bNBKQ(|grl)0X@24}a#p;P>v?{`-0R7ZS2xm0PEJmSqGLivtfvMc$n{#TsD7 z5M70~+dXJ{;>iJ%N--pdbecuQ51VPIyWv5VKBsze(sb@&y;6MiLiu0HzUkCX!+2_T zJVYZ?kO?#OzY8cN1tx28kF62<&Iw>D(j#p20+y)UorQgj~ObKM$27fq< zb>Rk&wTFsBeWU8^cd8Xi%qNM!Ina`dqJ+S`z@-s9$R>_R5PES zdDQ#goV%z;;Akwv+KS_BvkeQek7<=RYSC^pE>_+j`tFyz?=D9AZW>`cTeAnZjv!4T zX4!njgAg5AlFeMfu9-rt!(oHyGRM#yg>^xq?C3Qfz?BGi+-EZwF;ejE~ITof9UTW+w1bPwL>gT$n1ga)2PMApWP zu9zG>o^7`wA8Yl;*_>6mFSBNu*Re5Q7(r$(4o@yy<)da9#GRC9Ft z6#EAUVECrwSE2#nr%B0`o>eF9<%SdM!eTO}#*Er{#JU+8H2JKuRCW-g_RLVF1Fi2b5px>Tno;y_=5&BHYa^)i)SQmRU88`(Pxf+a`l_rYCjWRmZWpA+qV3Q) zH+mcxvZg_gcY)hVHJt-h?0ii`K10!(`!Kec9X)8xJnn0F3YK-om&~J&kF0LR#GzR~ zAT_C;YHKC${hnzuH?^&fZ?QUGj!1TJ$k*VIF|7Ur;#NAp19q9iGkhI(H@cXe_x052 z*1ntwA`bTj_6iQnhERDkI=9G97PfD??L2fR#ih=4aDIVY;C8}q6Pbm~~qJxaVb zMn9}fJ6)HXgX)F?#>(oxow0|%GY^w9aIcOWTsA~69q2mYFzG|)(24}AIGv4SR9CAh zO@;zKLe2zype-B2+(tS`FW@8OEG>K~mIA&BIqNAb%S@|Q!dvjFWoidyDYX&@++DiL zQ!-~4bMjeb^X@))N_6nR3hmu`Vc*SNWG(drPYDYib?u$ZLGju)vB>C4%UAASbZVkZ zzVIcTss{#@X!A4Jz=raF23ZmzvFjjKjnj8u@_|%M!>myDVXhI#^jfCL%50-&Q|hOwCtFc@`NQ% zdkcDEGOSv~DH}fhiD8A~M`DuAaHnE0xF{xDU@FX%Mvw+RnC0tptj>T-Q zj@6r0T!xwlJ2w+}^4SVyFMzNdE1mEk(zSv@8RcR-K>=&0YR`vG5h<8(r1|lhsfv>? zo7Jg`P=Lya)>z0a8RFE#L5#5L?s~P%mP>$`Npf+L08fx3uAJv~S6sBpT&F&OMKKI` z0l=8mRS(yo3zbPOyewehR5h*(VZ2ivIk7->6fM&OV|3%(4HrHN>gd|Z7Mt7AoVC%K zb=)J0f;v*Wxr1%i#6qiaq(Vh5oI2e{zQP`4ZnZPrrct~YUR;Ou2kX9Np~<&78@bFr|AGkhgzM{;OmI7X8EG!M0xhEFKbxAQM_XYfsdP_rR&>Zwr1?mDW z)rgjZdAgSHZrdbBn!ABdxLd&E8BPuW&9Gn^7T}4^@ldw}4kT*JhI`U;^DpEed!om5kFL zxZ+9`HnPPRJq^N*|epIiYT#b8SJw z;~JIlZJUqtJY{eJuM?TpYPrBtz{@gd**?ParR{%w&-OpLXZveubStH>uTG6GMg3Vb z&ES_xQ30>@nXODnmi$}7)Bg8?*Ye7J;I*E7A9zk01HKcX8qd?#DeBKQ7vO{EYhWqh z<20MJ^DMc2tz-v?g1%GZPU7*+63yUMqvuns(IQV{~?#;a4nYgf79K>;M!r6>w`?J95SH-$@- zCyxqv?J94}5BP&4SEsn*K&ZfLS2^YD+2G2*c)N>hQNHHIF26)U3SY=ct|ff5f1590 zva1#Y4!tChZ3n=9)UI;QB=2)5>-e`QU%Sd(|8bZUT>-CM<-nt-*7_Fk+Ew1cFM2Hd z_W6u*RFCLO)ezK*OZxI*)R80XjeHTxJ<4Q z6VjA#DpI61c(;E;ycbTS(Lv{Xt|ys~+c$Y~gU;e5e_XqL@(hhxb2s+E!19^pIw z!#=!B&VKr zhEQkJ)sFD!FpO+%GF}2so#)>s_HO2$YaHs4MF9}NS3S>P4{$~rdzItNI5{mDmN6aa z;9xJETgz5t8ck5ypovA2k9lm{RI0e%Z8f2I=@gyV*H%lsGQkEFPm) zWWQSdgihns=a|t)VpkY$-ZI<*6krs`<;XKP0LzJYQDoI~PfVS)Fiqz zh|RJZ8SSlV3YkQvL}oz(Q!LbUZ-?n3Fbxi*nm9kP!X@B5bwvmWw>1*d&bcfkOF;Ed zP14CIYkYX(53|#{93*lOMeO-o< z+ixeeq|nYyJ>;ik1oPh7=xBI;_~QSsFwtNs;SEw)ULm1PRbS}(F+A1^8Er}J9FN)- z1@d8&6{VTyZs6c_RL%zu3?V7mY^$e=nZ$v>^q=ei9TJjtT8*@sv|h!C8Qug{yIINd$CT3WhUi?|mr`_=mR$ ze@Z^9bmsP#Mh0qcE{Ru(B=1&VQxI4t@2o?4HVAq2TMD=6XlMtPA9)wCPAwd^js*cf zO5?7I#t#_cpNVMY05E)AO7Tp;xhL9O1q^X@Dj+h&8zceS%A8K*liRM86Q@pj#U==F z2l4tgZivvuDRjX41WRpLwtd}-(&cR=R-33)y`&&}jGTcp`K*$&P0Ei??xA?sbj{dF zgGc9==eOrSbN>0wnnKn|nDmT9M%TvU?9f))tMXdRR_AxxhGz7bLz}ekfeTKrY!j@x zdYe?<7nEehRUrwPN1r|s z9nAfz?Q*=F!aYH8!+xPSCntl>ox3PMhTo>lfTVE#|AUEJSwzQ1dI z0fyA4I{U9arzd>#`uyhR{KcC60pm)CuCqy^xIz1|n`q#}wS**VKCwI#Vq<$qQiUAI z**=79Q|0dJ3_6`j!y8(xmT`umB=N%Qe2QYn0Lm5>Z}HSs>l;xNyD@cZ?|#>}bIs{2 z($@`)3M|O$$PgN9h8&HwzA9gUI(1476zT6mO0G5J3rE$$h*p5-C*|v3@B`LLRjT+Y z*3o+0SNjR?_D(*l`pI_ZaCz6q3|gh$Pa2(gvThfNLrz8vR1Q#QYZa6GatRfQLpldj z6HA9zgTlk*Xa@lk7N6RywGIF}i6s&gdNM|>F^jercjqf*R&wf1K2?i$yNzH7(OD@q zJFQ`oOU>?`XEiHEyowfV=0P#c&6zaCJg6P^o=)3&P^9RMdV@(%BH7jc-XS+AGq3cc$K8(N^`ve#<2}FrFxSU((5RoPU5)Y;J1vX&Q2%u3}9-M#kNJt@W~A9y*NWR^e)6K?c(9 zEXbx+jNCemR3Xk>kxtQupoU0+s4~#H%tDBQ5>LyDXUo(agQT`>nx5495Das&-t-t^ zHPzH3bTtTUDVcV;0#KifxkPp_DJ`RBUEmNObq+E*Vq`NAMeJCJqrkM}T?DQ{PlLhA z5+bkynhzc3U{eNKaXxF?Y1ZjnMe;VyzU+dL^HvGH|CfFu+2N0}wnQqqW@wuKO`F-CxP z=avLGRX_#Fj~?%!`I677F>?#)iO;*Py+(sT_it`4K7O^n?vm;4e%g6~i8`k-34D^9 zkXCh9%uOu>qZ!`Z!&w(El%2x5P+y_7%J;8QDBq?NgkCBd`0)+|B%f97yI@jYZ{N!K z7&ou4FK*9oWV2jdy*@p=yuCV|e|GxS^V_GdQ@^d9Yenjf^V`~adD@&7JA_NHj^rrJ zt;XjZFLSsqh^Q8m5K<%l;?-^YvLyuv&p+dAf_}N&Z%n>T5^g?yd3K5feR^^J>h}E9 z_3NJx9Ux;TE1CQczwx9$MC|F*1%1}0Y{B$eNo@vBOGUmUS%t23>XbO69RwHAEZvEy zgc{sHAbLL1|-y4*0w@>J0% zLl2b?sOlnP5nr~?Qq>@hY`B%&VgU{)rdRef$})U#fRy#Av5 zTr28NUt9iqLH|B=##YSxf=9$W$%8(JY3TP#;8(=XM|RH{E)q6 zJBZmjH+axCvw4&CKcb5vqb|{`CK)D-Lr4MJ=+3rJkm|Jnak*UT#dsifL&aJ z*HhW%C0>?46!b~4C=7LBn5ct=^C`9}xMbTa1}4~q8F=ihXcrJF^-W|(Lxc>U=G19w znyrMnBJD~5Q+^5T5G5o9G*yDOp8wptq;;mHy4|W*(Ni3MjB+GzwT&dYDW+J$@SxdmGeVw;!|CYV9wa`P6p_k|xwsiWph_5TVUD#JHyZ0E| z@h#T*>Y31e_!=YXk|_`z?Z@Ak0(t4VH#{SXZj7(M*VX*8pgN7muphludQW_kWu{>8 zS7?Z=r;d0}bb?6*!j>dvXy!U`?#{d%7G%xW557xwpAO+r*v>m}owy=4Mc&AD!aIl2 zqZKZgxTXanGSxEkLA*j|r6y+H@}P+sqI5vRJLNlBsxdyezK_mW({18O=2Bf8bBWyS zX?3xCqLc@^*mjL|arn8{n`iCPiR;q4)Z3motVjIf@1PftZE0VapM9eoof3Cu=QIrG zhFt6Eibd=4z~NqTH2NtA1t3Qr+n>bW=D#LYdUNRNk!ZCM{v>vZ78MWha>tV1zvQynsCk05VJr(ZMO-N|ApEYZC?MW@+SkQs;E zDPc?6NyOBW6uF8NmLOLGL(F03DuR;6)g+~(e7J;~8z7lKv}F&pL_2bY!Ayt4DD^1# z==A%278aD|vHfh#!>Ioqp9RNI z!4=EPE+XWYMSWA6dE$1IpL+ea1FQ^!iI&s%%|u^1Tpc{qiHK@mR#ry0N@ z4pbqfTn|JW^iJOhFNyO@7$VUm^Xw=hp=xKpQYl{Z8)%H>sfr>a`kl=W{Y(Gq_k|)2 zxAhv3fxU#c?z}sExU%mKA1|f7JA4F%-5ovx!R`(pF50`p>wIAEQCrpWBkia2fd}wK z3+n{)a?EsU_`cNlwT$Kkw0+}a5T6#rt0V%uvn%W51M+HJPNF<7TR~rT#s4X4kLBK*?~cy%>}#B5o2qu z_d4EZ##en+b_{g6a&~HcRl1q|X?$Gf7wpH2nT_B4+%t^;_HN`wM_A)qh^k_2(l}(J zU{HvY=e`nEwY$@XmUx_BV}x%aS8_l1TkmOOQr1r!NBiQK`1PPmdTZEg>16Kv+g}IE z`%DOm?$=lQ17b1Tj?*|QZ<_?|d8ti8o9FXwBvA5Ejs;E)-%6p&ZPvU=YU9Hj2%t(X z#j;IRw>#dMa(Wf0H(qd+jNJt-Vz}U@J2V4)kX{ZhTs#>eS6u3bn+?u2HxG8WA z+@9CvwFyiS^}<|NFPT#Pmg$F{T)k4JY=kAL8m1L;i3*CS%jnDf80~4Q5{C^XibApJ zhHvhPQzFZD-8Tv4U6{B7##fofYgAy!~R4wiAJTr2N1pz0=MVVtTPk?`(H! zD%U#?Gvkq-PSA3%?-FI&IcEE(U!a$GY&R1_f8%X>)~T=+8Yu~X!!?tx?&{x>c`bse zv6z!N7Iezwvr6LnaN`Gw`x32zy;1BizJj~CV(jHaobT$2>0F5@dFf`Pm%zE?vr>9F zS~xxr()(^n?~>^EuuK&JzrM=sJYIHGy+KTkEwrHs-!1$-hJ3C>+1Rc4c=2Yl`)#5e z>au(fuj1&@8IF@6Dtl{v9)H16*)r6y7c;9@maa^#p)s~RHDY4q-WhdKd2a)=gD1A) z!ceqTZO`Cgb_xi^v30RRgi{^ig2h~k#ddg+DuuB+EX(C4=5a*klr?p})|^B?zS)k7 z1^eCWGWB3j{!rVKqsNSOz9hC1{_u2N41qW8x^H7c1%9%@h6prBr4v>DE$c4gbb8!oNR>JW3Wp;t9r+r{R8#hu~~-Se0qC97|zpa;no~BYi&2$ zv$N;l{q*(eN8f9d<_T!*VLZCHIeT__esXdB@_T33Ynz@hB$$kvY7XZ#PESs zN{L4&#hD|R5q7F$Odw76P3diq73<>h9xJxVXC)^)S5rP0s@RWfa&oKELEN{m=_XHa z*9^2A%9ZMEg9}rg^UxF|j2Dg|6g-o0FxLFZrzE>*fY$EBLdLuPY@JbF9=jV(7PCJ-`0+)$>o*9ny#5rwaS+Lm^6UCVt80 z;fz(7-m*OFsna9gtHWr^P6lq!NbJ^h3Y18p(8SG~%?kLinvrf?vFbnGN7+r>^zukf zDQP#*ZDkVzV~#~1OOam{uW zeZKGQg*dq;Fz&nicNq27>kUU*aKH@*qK+8zTP?BXkoXi|$j}Y6b08qM9o}OrjNlTH zTD0zgGmuhQTr-wX@qxFeowH=Y%V8nt9rnS|K`J}24BxALhlUj`7y)D2Q|1=jUeZR? zhm+MRQsh*N%3L8S^j?LNaWYXW7rV7hdTFb)dXo}FMnR=hU4j)%phspS#`UPy=ndl_ zy26?^6>^KRmTpdiXocZL1&5$!cT%doxVe$gY*Dp@ufv z=%F;H_PCET&xHBVC_UvCx?!E#)c!>2SYl`YB^{nPE0iu8MSe1dMz!@2-X-)Z=+HVx za)<1)d2?KLdsR`v3RO7)^d;Cza&MNZ=$IbW^5Tqmo_Mw0sa zS=x(|qYpr_JJ#^Ak@Zb*Y+apqRHusDytSFNSG;dhXj%NNG4)-Z1>Xu2oNDf)sK>dV zpi##gk_<1S10$qrM+%B{ z%ne~dhjSP^%00}{rs^5;Rw>#zs8us`R|H2m;6PYK75p^rNUBYfY-klWNmWUwWlf?Y z9{Vkh2*;M*BT28Rz?kMnpnc!;6iUz@$g%{dnkMQ(UmWL0FEj1|1+CF9G*;0}?RuyF z4YQVRiZ#1*4%O4DSj?)N*eEWF4pTXrYuI~bhCexb_2TN~di$^D#1E`FFL-~t-h8Wa z!mH<~LDrgc1FW)`SJJ!boeThrI1JL-kHqE;5jFFtE)GUla54%x$xR{eV|()TuQfZ0 z+5Ns^Kl~O)tG{JFa=37Pngv~Jaxs||O*se@qcno2%eQjS^Lvv-j>J+6JC%bjN*+p% z>#3SeF|$H5Gi-D41n&&h>sqUW#gf=-$$};$sA*oW2QtE5aZ_ki@{1xhNpS@-agY}9 zGX=*)Z%aHz>iZ?>MpY9b=G;5&Vf1e5RWdQ(VixGn{pZ}+opoXO)~n;suI?ZXXep^# zGo^9>dCSmdM5yoy-Zs#*sRt_B0L8?djP~7RNv<{!CxeW5Tu4ns93zXIDWEOy1cGv< zyMr~n+G@`dOlqN?D%nv$S?O!EXcRypF!1KUv%(m`dBF#U1D<-lL4lxcM4FqD6g_kh zfXG4k7|s-#RTSbEhSXC%ZoyJY za@lK))el~-wwQQB7$`U~D7qed5$Ss1<>;HO zYWy0lVX+yO)24>1prqn4VXR}RQ=-u|4`};KXd+!LoF_H)+Rvn{y~^S&>FlFoh7zth z-gsS^o?vWO$a1Rrg=DS%7Nv94)EZ!2o)W%krY^_wn*#pWwO^Zr0v`3UHZVC0c=ckB zAM0T$;N=Xt4?HIu-wPfS>|XHk4ukb7U*n&2{(b5%J>S4*yv4SAv-R*fGrPKNw`9fd zv|qn#mvUDvw(O0VeaElvyxtf5PiCft0&qllI|_M5`Q(RmCiLXqGoj3iatEiIN>ib| z-~LSKAejjd9`!PSrZ}JCYoZdv?*CpI@K0#U@$LUc9I!+aq%L$=P-K&Q4y6 zcYSvH;{5s5i;Isgo}axqJH37RIzdKdt|0OBSsIPfCcaFWQ=&@Hz?p06E7nvhJqSY> z+Y<2f{Pt_Fz8lT5{_GQD4~GC#yO?CDm)T0An<2=#9bz@a48ca~qsOxi#-IMPO6GRD z$$CEf#x#DAxsRF?vr0i(N9HWPI_If+pvo62kvOsIo{&UQeE1zS#d`5hIFY)LU?y!G z(Tl+yLnP^1Pw+IQJgF922sfE5N{th?Of{WpftfxqqltN6Rj}Lf6}j%tBb0Qnlxw<7 zdGVkNg0($xhbg)Y65+$K`$DfK`Ght`F4YBLS$NwPCQ(-A09g~4yR#~ z8^MJ6kq#c=Q!izhp&rV$mOd0r38PZwV8^9Tzzn`Ky#?1%d96!9vfVCB4&kkI@f~Si z39dM0f`#b#Vn$#!#Hr^jdj{o1Ux4>8^Wd9oQxXU5NdHShvtYt(NjGG7&$78#ZMY+1NptIG^nnZPm>(tn!pke}F?w~d% z8p*4XV6v?>ART5#C?gDHX%S3a)mbI%TOVII%U!jpenkdc@5a+d0eS;HoGPWl$qnC> zuj)&W)~pDWTWZ)4LK5xQI=L87gW;McWeZp>cf!989b{=ZwLg?8uY8+loPq{tt%m#lxSPLy)%wqpViZ3hj#xM}&c zR6kBtbTT?detWPQmRU1}L~l}Es8RM3GFPCl=t8YGWChiCYBM(Tau_f%>{0^yF0Qy~ z6c-(bF=p^Cp`FcqFx@j@Faz2^B(4x(6+JLkCM&PIX7xnH7K8;cvLT4=;>90OW$mPZ zK-0-`C|+S5K+iHs7G-3@`l=t8MgrOnN**|CqYK~%y1hb-Q_T?GROs`uD*5t4%d&*u zeTesmz)@bq1DnKJ^Q+PiUFCu`OHze!vG7WK*+D%rl-NScRfW%@RzkR)XJuEd$U9Yb zs+m(M151vvu>Y)@X>79~7oXgcd+;YFR#|DXt>fEC%&le9>7<;u;7?49zs~Z*>Z-^} zlREN-Edfa9NPlG`nw2hME*-78!(ao=Dv6uVu=@PTCGL&p4%oFlPg`$s;gNoDQsex8 z6QLU0kd#OjDt4_?>oj+;(TnvMreAK2SSl-aBTBAfCAO*kl!36O2pzR_r?ZBb5DYb~ zr51uj6S%s$Lo;iz-%)11X>Ml?Q%+z4`@FXIq+;E>Mjnz}2IDorQTYtDMq<48gdsIs zj78PJBsZ?cVDf!e9*IEP7{Y9KFC0KpJEv+k)J)%~m&YX;^S0-k7I|}fzOl4ahGViS zEtOJEKA(*>tXrEZ8-Sy^JL{ZT&~Z)KQ1!+lck`6U+-NxmRf@rK?nLD+H6S3`*_+{QfsDOiS3LFuVqlhn%d5?P&#r3AZ5XzZ`2=G11YLDVUoanC(Q7Cj7TE&4V+FM$ELF}d9q zmKsW7USO?~VM*r&#{}G!qqZPb{;-@jwV4G#%)XmQrm8oo_5aEjG6XhZomzt6e)eUs zVQz}*k>N$41OkwmvrsU9_VFn@3lKkB&Vz7c{X2+oLzf&d)uoq1Cy|~#VZjVKfuMCK?nwJxMFc8 zn>yIE-8#f-?xqfrbWBnuzNIyVpH9>G7N>3t%P^S5>GM6(2f-|XL?=ksP4#%b!dE|( zGxTGK6f2q-;t`jfD@SM9ii`rNj$#o%o`Wj8MyIk=k6G-Azz>59Im{CIWIRmhh625u zPdNTYE#$cwPbeX_*a(K6D)$97mhO6LK??eFPB?%6S*1UBkkj}) z*aPuuz_+N*jp_#!{j?|tgM3_5^wV3l2Em-XH|3RVR|}*1cw-T_xSyJEPX_ zLkv`J)VxFf-!z^yS^Q_bF7+~6H`HuwyuL$3sqI+r@pTC9n(qxpM&CyK$iN4j_uVwG zH#743cI}M3KB;2l^$$}cuTQO*yhFRM&pNRC`sC_LLERW^fd-cCY;P>QI3lBML2l}8 zlp~Vt41^8zF(O1p2b2;^s5PCy6Hpep9Z zSYiP`x8o#1QRG;*SrxYib_t93^KzvTv$axRr+Qk*%+QW)LO3YGrD%^h)}aK}ZeQk$g}kJE^nXWXL95{qdp$|qHgos=1E zPiYu zW=lz{w7;opTDZ#!El^>GsVzEMw#)WEOxiyv?}}}(v^8>i!M`I*3nh1DHdtB~Dm~-^ z7jPB;hWs77{Rd@sxdBMAP@__Qi1ndx1g4WY{_Xl)q%W(#CeYqn+%-~4O9+1=T}Ayh zJ+{*{$}HQTU4qm4PFs@C<3wnYngZDeli-*K_c-S8#B zQot(&%J9JgP;``cEeb7djS6`DdQtzb%#3pQLd{7;1S;*nm$pC77(7KMddH5|_4sO) zAuE&FMRz)jrWY$`7dU(3Q_P(oW*4m?SF^5u;L#;xhomG<-#bl=6UTTyz0F;Wc9pY6 zWVbhx$LR(AXO-mbY>)1scv!``ujKt8y*6v?ulVpgYfeslU#Xqyjw!8kbN{+WiPmA9fTa3K9eZh?Fql@dC+tcUli(MpvQk9wN^2W?( z)lY9>Wod*y<&vdCNK0q}}IQ!_Q)rG4`^R zHo!Ff@Ir(f?>TigSvTD*I|x!QeIi*GI{$)9}8 z+2Vpt(ZGa>Xgu}IIyInQ)^dDuI5^3;f7$IQfi>Yxf=3f zvKXW`A_Sdu5S~{eiIr@T<3{-`eNUVkIJ#7k=M!MPk!HU+*jiB~s&qYGKPAlTPYsct z5k-MkY?Wej!m1%9vBib8N63g(A&!Wvu-M4b)@+EO#>=+5NG_N#tbw~}V3*UhfN+;` z)u!s1%;h`du811Aood|op?le~8>_smx1!M$cj=iC0XCTO{HtIhG+l?$Qy(oXyT~@ZQh?;P{njPT8&W*!FzuWQpDB_p0+K z>BPx4&1MIt0wcT$Gmbbe!=}L%->7I~Jwq?JAT5Sd0_`MAXn`Xc)ufk*fNxkjB$o7^ z*kkvCK-xtRwM3Uy`>A z)%Fj{`p7n@Lf(?pe*fU=U4&vo1$lVnlCWeKr>11FKps`(gO0v(7olECf%+?J;O1x= zp4wQ<3J!(vi9@X*snE=UX-vKPCu^lbPE`mm0|`So;~X30WVX_3xK4NQ@(oKj)?NUe zZJeGx$oDuGn~nj$oUcT0XdyGLa&{Wo3NAWdfh?dw z#{L2*+iu%;1s9#KL}q9qGi7?Si78vbMdvG!HPAyY!bnblVtt3G=iIJ=VOkk08`r58 zgHowj-MDhwRM(P!ds9J|S^j@q;oKbm8 zeIe1&7v`m?Th7bujr2Dx&w7&h%UI#Bd0oP5cHLSu7;mlpmLlRTQXDp1=cP0tm1OO5 zaF5PlhO31l3I{SspbS#75d$V@q~ZY*$VN5B6hzKh0}-qI+SRtDtJ4emHJ-RkitQk~ z8xk1-QQzoEuDc~yu~P$HFz^YPrYOXdEBDPntBEiCo0Utv+a9AdFHXxh!^4Nrp>T$R z{@5PX0K+Q2DI)VSNh#pt*y$uk6XnpeBUnoti3=rsw7<(#voXg{zN!L`+>p`|W&6i* z1b)`&k-!2Abwjbf0gL`E;o}Gb;3b}tFy$k+Ao<3>DmnbC1^xSO|E8$mmgx^HX}arG zz{f!WeeNi#yP6hZX^Kj47uN)VTxkJ!2 zka6fsP*G`rovXn_DO&zeHyU+ZV3XJ~-?b>{Z|rzp;dZQWBMRiItQujgwi0p9Z7t~^ z`v0uuP>TfDMp#Eb7m|2fR9ubxvHRHZ4UMWZd(m{fxbYr~R431kYWIs0+32xyU;mn33pPz{@uV z{WyhbNS7&AxjDOQgIx_&z-tpFdnahQ_N!u(mJ_<3y9K-ss(1S}@Vp@qc$jBJDqy$2 zZbVc8&rT=7x6&dkE}T~6UbrYcbQwCn?7#bN|6qHR>2@BlAh0;SDF2{s|KL{F`C(_v z^XA4ns({BxhyJci-~&16@>!Jc)o&#Ri68bNOkX8{jjW^Im1-!OkL%-P`JVy%D_P(SNv|#6Rn~EO$*873Is<4E-J+!iws!)O1k+j}Jrep+7u? zE!9N@JTGwrzSB^6mH0O3tU1ylG(WYD{;zl4T7Kzs)=&bLGf$(n)n2Q7q(Vyl$&Lo# VQzaGc&$1P-EacisQAYWr{|{moEAs#V literal 0 HcmV?d00001 diff --git a/src/worker/lib/cpc/cpcrslib.lst b/src/worker/lib/cpc/cpcrslib.lst new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/src/worker/lib/cpc/cpcrslib.lst @@ -0,0 +1 @@ + diff --git a/src/worker/lib/cpc/crt0-cpc.lst b/src/worker/lib/cpc/crt0-cpc.lst new file mode 100644 index 00000000..211140d5 --- /dev/null +++ b/src/worker/lib/cpc/crt0-cpc.lst @@ -0,0 +1,75 @@ + ASxxxx Assembler V02.00 + NoICE + SDCC mods (Zilog Z80 / Hitachi HD64180), page 1. +Hexadecimal [16-Bits] + + + + 1 ; crt0.s for ZX Spectrum + 2 + 3 .module crt0 + 4 .globl _main + 5 .globl ___sdcc_call_hl + 6 + 7 ; Ordering of segments for the linker - copied from sdcc crt0.s + 8 .area _CODE + 9 .area _INITIALIZER + 10 .area _HOME + 11 .area _GSINIT + 12 .area _GSFINAL + 13 .area _DATA + 14 .area _INITIALIZED + 15 .area _BSEG + 16 .area _BSS + 17 .area _HEAP + 18 + 19 .area _CODE + 20 + 0000 21 _Start: + 0000 F3 [ 4] 22 di + 0001 ED 56 [ 8] 23 im 1 + 24 ; stack pointer already set by BIOS + 0003 CD 00 00 [17] 25 call gsinit ; Initialize global and static variables. + 0006 CD 00 00 [17] 26 call _main + 0009 C7 [11] 27 rst 0x0 ; Restart when main() returns. + 28 + 29 .area _GSINIT + 0000 30 gsinit:: + 31 + 32 ; Implicitly zeroed global and static variables. + 0000 01 00 00 [10] 33 ld bc, #l__DATA + 0003 78 [ 4] 34 ld a, b + 0004 B1 [ 4] 35 or a, c + 0005 28 0F [12] 36 jr Z, zeroed_data + 0007 21 00 00 [10] 37 ld hl, #s__DATA + 000A 36 00 [10] 38 ld (hl), #0x00 + 000C 0B [ 6] 39 dec bc + 000D 78 [ 4] 40 ld a, b + 000E B1 [ 4] 41 or a, c + 000F 28 05 [12] 42 jr Z, zeroed_data + 0011 5D [ 4] 43 ld e, l + 0012 54 [ 4] 44 ld d, h + 0013 13 [ 6] 45 inc de + 0014 ED B0 [21] 46 ldir + 0016 47 zeroed_data: + 48 + 49 ; Explicitly initialized global variables. + 0016 01 00 00 [10] 50 ld bc, #l__INITIALIZER + 0019 78 [ 4] 51 ld a, b + 001A B1 [ 4] 52 or a, c + 001B 28 08 [12] 53 jr Z, gsinit_static + 001D 11 00 00 [10] 54 ld de, #s__INITIALIZED + 0020 21 00 00 [10] 55 ld hl, #s__INITIALIZER + ASxxxx Assembler V02.00 + NoICE + SDCC mods (Zilog Z80 / Hitachi HD64180), page 2. +Hexadecimal [16-Bits] + + + + 0023 ED B0 [21] 56 ldir + 57 + 0025 58 gsinit_static: + 59 ; Explicitly initialized static variables inserted by compiler here. + 60 + 61 .area _GSFINAL + 0000 C9 [10] 62 ret + 63 + 64 .area _HOME + 65 diff --git a/src/worker/lib/cpc/crt0-cpc.rel b/src/worker/lib/cpc/crt0-cpc.rel new file mode 100644 index 00000000..bbedd953 --- /dev/null +++ b/src/worker/lib/cpc/crt0-cpc.rel @@ -0,0 +1,42 @@ +XL2 +H A areas 9 global symbols +M crt0 +S l__DATA Ref0000 +S _main Ref0000 +S s__DATA Ref0000 +S .__.ABS. Def0000 +S s__INITIALIZED Ref0000 +S ___sdcc_call_hl Ref0000 +S l__INITIALIZER Ref0000 +S s__INITIALIZER Ref0000 +A _CODE size A flags 0 addr 0 +A _INITIALIZER size 0 flags 0 addr 0 +A _HOME size 0 flags 0 addr 0 +A _GSINIT size 25 flags 0 addr 0 +S gsinit Def0000 +A _GSFINAL size 1 flags 0 addr 0 +A _DATA size 0 flags 0 addr 0 +A _INITIALIZED size 0 flags 0 addr 0 +A _BSEG size 0 flags 0 addr 0 +A _BSS size 0 flags 0 addr 0 +A _HEAP size 0 flags 0 addr 0 +T 00 00 +R 00 00 00 00 +T 00 00 F3 ED 56 CD 00 00 CD 00 00 C7 +R 00 00 00 00 00 06 03 00 02 09 01 00 +T 00 00 +R 00 00 03 00 +T 00 00 01 00 00 78 B1 28 0F 21 00 00 36 00 0B 78 +R 00 00 03 00 02 03 00 00 02 0A 02 00 +T 0E 00 B1 28 05 5D 54 13 ED B0 +R 00 00 03 00 +T 16 00 +R 00 00 03 00 +T 16 00 01 00 00 78 B1 28 08 11 00 00 21 00 00 ED +R 00 00 03 00 02 03 06 00 02 0A 04 00 02 0D 07 00 +T 24 00 B0 +R 00 00 03 00 +T 25 00 +R 00 00 03 00 +T 00 00 C9 +R 00 00 04 00 diff --git a/src/worker/lib/cpc/crt0-cpc.s b/src/worker/lib/cpc/crt0-cpc.s new file mode 100644 index 00000000..0e508867 --- /dev/null +++ b/src/worker/lib/cpc/crt0-cpc.s @@ -0,0 +1,65 @@ +; crt0.s for ZX Spectrum + + .module crt0 + .globl _main + .globl ___sdcc_call_hl + + ; Ordering of segments for the linker - copied from sdcc crt0.s + .area _CODE + .area _INITIALIZER + .area _HOME + .area _GSINIT + .area _GSFINAL + .area _DATA + .area _INITIALIZED + .area _BSEG + .area _BSS + .area _HEAP + + .area _CODE + +_Start: + di + im 1 + ; stack pointer already set by BIOS + call gsinit ; Initialize global and static variables. + call _main + rst 0x0 ; Restart when main() returns. + + .area _GSINIT +gsinit:: + + ; Implicitly zeroed global and static variables. + ld bc, #l__DATA + ld a, b + or a, c + jr Z, zeroed_data + ld hl, #s__DATA + ld (hl), #0x00 + dec bc + ld a, b + or a, c + jr Z, zeroed_data + ld e, l + ld d, h + inc de + ldir +zeroed_data: + + ; Explicitly initialized global variables. + ld bc, #l__INITIALIZER + ld a, b + or a, c + jr Z, gsinit_static + ld de, #s__INITIALIZED + ld hl, #s__INITIALIZER + ldir + +gsinit_static: + ; Explicitly initialized static variables inserted by compiler here. + + .area _GSFINAL + ret + + .area _HOME + diff --git a/src/worker/lib/cpc/crt0-cpc.sym b/src/worker/lib/cpc/crt0-cpc.sym new file mode 100644 index 00000000..aecdcbbb --- /dev/null +++ b/src/worker/lib/cpc/crt0-cpc.sym @@ -0,0 +1,27 @@ + ASxxxx Assembler V02.00 + NoICE + SDCC mods (Zilog Z80 / Hitachi HD64180), page 1. +Hexadecimal [16-Bits] + +Symbol Table + + .__.$$$.= 2710 L | .__.ABS.= 0000 G | .__.CPU.= 0000 L + .__.H$L.= 0000 L | 0 _Start 0000 R | ___sdcc_ **** GX + _main **** GX | 3 gsinit 0000 GR | 3 gsinit_s 0025 R + l__DATA **** GX | l__INITI **** GX | s__DATA **** GX + s__INITI **** GX | s__INITI **** GX | 3 zeroed_d 0016 R + + ASxxxx Assembler V02.00 + NoICE + SDCC mods (Zilog Z80 / Hitachi HD64180), page 2. +Hexadecimal [16-Bits] + +Area Table + + 0 _CODE size A flags 0 + 1 _INITIAL size 0 flags 0 + 2 _HOME size 0 flags 0 + 3 _GSINIT size 25 flags 0 + 4 _GSFINAL size 1 flags 0 + 5 _DATA size 0 flags 0 + 6 _INITIAL size 0 flags 0 + 7 _BSEG size 0 flags 0 + 8 _BSS size 0 flags 0 + 9 _HEAP size 0 flags 0 + diff --git a/src/worker/workermain.ts b/src/worker/workermain.ts index 7fca1166..a21df23b 100644 --- a/src/worker/workermain.ts +++ b/src/worker/workermain.ts @@ -331,12 +331,12 @@ var PLATFORM_PARAMS = { 'zx': { arch: 'z80', code_start: 0x5ccb, - rom_size: 0xff58-0x5ccb, + rom_size: 0xff58-0x5ccb, data_start: 0xf000, - data_size: 0xfe00-0xf000, - stack_end: 0xff58, - extra_link_args: ['crt0-zx.rel'], - extra_link_files: ['crt0-zx.rel', 'crt0-zx.lst'], + data_size: 0xfe00-0xf000, + stack_end: 0xff58, + extra_link_args: ['crt0-zx.rel'], + extra_link_files: ['crt0-zx.rel', 'crt0-zx.lst'], }, 'devel-6502': { arch: '6502', @@ -344,6 +344,18 @@ var PLATFORM_PARAMS = { libargs: ['crt0.o', 'sim6502.lib'], extra_link_files: ['crt0.o', 'devel-6502.cfg'], }, + // https://github.com/cpcitor/cpc-dev-tool-chain + 'cpc': { + arch: 'z80', + code_start: 0x4000, + rom_size: 0xb100-0x4000, + data_start: 0xb100, + data_size: 0xb100-0xc000, + stack_end: 0xc000, + extra_compile_files: ['cpcrslib.h'], + extra_link_args: ['crt0-cpc.rel', 'cpcrslib.lib'], + extra_link_files: ['crt0-cpc.rel', 'crt0-cpc.lst', 'cpcrslib.lib', 'cpcrslib.lst'], + }, }; PLATFORM_PARAMS['sms-sms-libcv'] = PLATFORM_PARAMS['sms-sg1000-libcv'];