From 0e47e7d035b0fa29aa799db75c47c47c3952b9af Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Wed, 24 Apr 2019 16:56:53 -0400 Subject: [PATCH] started on vector-ataricolor target (for 6502) --- doc/notes.txt | 1 + index.html | 1 + presets/vector-ataricolor/font.c | 38 + presets/vector-ataricolor/game.c | 397 + presets/vector-ataricolor/skeleton.cc65 | 21 + presets/vector-ataricolor/threed.c | 33 + presets/vector-ataricolor/vec3d.c | 112 + presets/vector-ataricolor/vec3d.h | 36 + presets/vector-ataricolor/vecfont.c | 79 + presets/vector-ataricolor/vecfont.h | 12 + presets/vector-ataricolor/vecops.c | 69 + presets/vector-ataricolor/vecops.h | 49 + presets/vector-z80color/game.c | 2 +- presets/vector-z80color/threed.c | 2 +- src/platform/vector.ts | 11 +- src/views.ts | 2 +- src/worker/fs/fs65-sim6502.data | 26184 ++++++++++++++++ src/worker/fs/fs65-sim6502.js | 209 + src/worker/fs/fs65-sim6502.js.metadata | 1 + src/worker/lib/nes/nesbanked.cfg | 4 +- src/worker/lib/vector-ataricolor/crt0.o | Bin 0 -> 977 bytes src/worker/lib/vector-ataricolor/crt0.s | 43 + .../lib/vector-ataricolor/vector-color.cfg | 49 + src/worker/workermain.ts | 21 +- tools/vector/dvgfonts.c | 118 + 25 files changed, 27482 insertions(+), 12 deletions(-) create mode 100644 presets/vector-ataricolor/font.c create mode 100644 presets/vector-ataricolor/game.c create mode 100644 presets/vector-ataricolor/skeleton.cc65 create mode 100644 presets/vector-ataricolor/threed.c create mode 100644 presets/vector-ataricolor/vec3d.c create mode 100644 presets/vector-ataricolor/vec3d.h create mode 100644 presets/vector-ataricolor/vecfont.c create mode 100644 presets/vector-ataricolor/vecfont.h create mode 100644 presets/vector-ataricolor/vecops.c create mode 100644 presets/vector-ataricolor/vecops.h create mode 100644 src/worker/fs/fs65-sim6502.data create mode 100644 src/worker/fs/fs65-sim6502.js create mode 100644 src/worker/fs/fs65-sim6502.js.metadata create mode 100644 src/worker/lib/vector-ataricolor/crt0.o create mode 100644 src/worker/lib/vector-ataricolor/crt0.s create mode 100644 src/worker/lib/vector-ataricolor/vector-color.cfg create mode 100644 tools/vector/dvgfonts.c diff --git a/doc/notes.txt b/doc/notes.txt index ad8c3ff6..f5e03eae 100644 --- a/doc/notes.txt +++ b/doc/notes.txt @@ -123,6 +123,7 @@ TODO: - toolbar overlaps scope - CPU debugging - disassemble more code around breakpoint +- single-stepping vector games makes screen fade WEB WORKER FORMAT diff --git a/index.html b/index.html index dead9a37..88f025c1 100644 --- a/index.html +++ b/index.html @@ -125,6 +125,7 @@ if (window.location.host.endsWith('8bitworkshop.com')) { diff --git a/presets/vector-ataricolor/font.c b/presets/vector-ataricolor/font.c new file mode 100644 index 00000000..556ff030 --- /dev/null +++ b/presets/vector-ataricolor/font.c @@ -0,0 +1,38 @@ + +#include + +#include "vecops.h" +//#link "vecops.c" + +#include "vecfont.h" +//#link "vecfont.c" + +//// + +static int frame = 0; + +void main(void) { + int r = 512; + dvgclear(); + dvgwrofs = 0x200; + draw_string("HELLO, WORLD!", 0); + RTSL(); + while (1) { + dvgreset(); + CNTR(); + SCAL(0x7f); + STAT(RED, 0); + VCTR(r, r, 1); + VCTR(-r*2, 0, 3); + VCTR(0, -r*2, 5); + VCTR(r*2, 0, 7); + VCTR(0, r*2, 7); + CNTR(); + STAT(GREEN, 0); + VCTR(100, -100, 0); + JSRL(0x200); + HALT(); + dvgstart(); + frame++; + } +} diff --git a/presets/vector-ataricolor/game.c b/presets/vector-ataricolor/game.c new file mode 100644 index 00000000..c1aa0781 --- /dev/null +++ b/presets/vector-ataricolor/game.c @@ -0,0 +1,397 @@ + +#include +#include +#include + +#include "vecops.h" +//#link "vecops.c" + +#include "vecfont.h" +//#link "vecfont.c" + +#include "vec3d.h" +//#link "vec3d.c" + +#define input0 (*(byte*)0x7800) +#define input1 (*(byte*)0x8000) +#define watchdog (*(byte*)0x8980) +#define vidframe (*(byte*)0x0) + +#define LEFT1 !(input1 & 0x8) +#define RIGHT1 !(input1 & 0x4) +#define UP1 !(input1 & 0x10) +#define DOWN1 !(input1 & 0x20) +#define FIRE1 !(input1 & 0x2) +#define BOMB1 !(input1 & 0x1) +#define COIN1 (input0 & 0x2) +#define COIN2 (input0 & 0x1) +#define START1 (input2 & 0x20) +#define START2 (input2 & 0x40) + +// SHAPE CACHE + +const Vector8 tetra_v[] = { {0,-86,86},{86,86,86},{-86,86,86},{0,0,-86} }; +const sbyte tetra_e[] = { 0, 1, 2, 0, 3, 1, -1, 3, 2, -2 }; +const Wireframe tetra_wf = { 4, tetra_v, tetra_e }; + +const Vector8 octa_v[] = { {86,0,0},{0,86,0},{-86,0,0},{0,-86,0},{0,0,86},{0,0,-86} }; +const sbyte octa_e[] = { 0, 1, 2, 3, 0, 4, 1, 5, 0, -1, 2, 4, 3, 5, 2, -2 }; +const Wireframe octa_wf = { 6, octa_v, octa_e }; + +const Vector8 ship_v[] = { {0,86,0},{-30,-30,0},{-50,0,0},{50,0,0},{30,-30,0} }; +const sbyte ship_e[] = { 0, 1, 2, 3, 4, 0, -2 }; +const Wireframe ship_wf = { 5, ship_v, ship_e }; + +const Vector8 thrust_v[] = { {-20,-30,0},{-30,-50,0},{0,-86,0},{30,-50,0},{20,-30,0} }; +const sbyte thrust_e[] = { 0, 1, 2, 3, 4, -2 }; +const Wireframe thrust_wf = { 5, thrust_v, thrust_e }; + +const Vector8 torpedo_v[] = { {-86,0,0},{86,0,0},{-40,-40,0},{40,40,0},{0,-20,0},{0,20,0} }; +const sbyte torpedo_e[] = { 0, 1, -1, 2, 3, -1, 4, 5, -2 }; +const Wireframe torpedo_wf = { 6, torpedo_v, torpedo_e }; + +word ship_shapes[32]; +word thrust_shapes[32]; +word tetra_shapes[32]; +word torpedo_shapes[16]; +word explosion_shape[1]; + +void draw_explosion() { + byte i; + for (i=0; i<30; i++) { + byte angle = rand(); + sbyte xd = isin(angle) >> 4; + sbyte yd = icos(angle) >> 4; + SVEC(xd, yd, 2); + SVEC(-xd, -yd, 2); + } +} + +void make_cached_shapes() { + Matrix mat; + byte i; + for (i=0; i<32; i++) { + //watchdog = 0; + ship_shapes[i] = dvgwrofs; + mat_rotate(&mat, 2, i<<3); + draw_wireframe_ortho(&ship_wf, &mat); + RTSL(); + thrust_shapes[i] = dvgwrofs; + draw_wireframe_ortho(&thrust_wf, &mat); + RTSL(); + tetra_shapes[i] = dvgwrofs; + mat_rotate(&mat, 0, i<<3); + draw_wireframe_ortho(&octa_wf, &mat); + RTSL(); + } + for (i=0; i<16; i++) { + torpedo_shapes[i] = dvgwrofs; + mat_rotate(&mat, 2, i<<4); + draw_wireframe_ortho(&torpedo_wf, &mat); + RTSL(); + } + explosion_shape[0] = dvgwrofs; + STAT_sparkle(15); + draw_explosion(); + RTSL(); +} + +// MAIN PROGRAM + +struct Actor; + +typedef void ActorUpdateFn(struct Actor*); + +typedef struct Actor { + word* shapes; + ActorUpdateFn* update_fn; + byte angshift; + byte scale; + byte color; + byte intens; + byte collision_flags; + byte angle; + word xx; + word yy; + int velx; + int vely; + struct Actor* next; + byte removed; +} Actor; + +#define WORLD_SCALE 0x2c0 + +void draw_actor(const Actor* a) { + CNTR(); // center beam (0,0) + SCAL(WORLD_SCALE); // world scale + VCTR(a->xx>>3, a->yy>>3, 0); // go to object center + SCAL(a->scale); // object scale + STAT(a->color, a->intens); // set color/intensity + JSRL(a->shapes[a->angle >> a->angshift]); // draw +} + +void move_actor(Actor* a) { + a->xx += a->velx; + a->yy += a->vely; +} + +static Actor* first_actor = NULL; + +Actor* new_actor(const Actor* base) { + Actor* a = (Actor*) malloc(sizeof(Actor)); + memcpy(a, base, sizeof(Actor)); + a->next = first_actor; + first_actor = a; + return a; +} + +void draw_and_update_actors() { + Actor* a = first_actor; + while (a) { + draw_actor(a); + move_actor(a); + if (a->update_fn) a->update_fn(a); + a = a->next; + } +} + +void remove_expired_actors() { + Actor* a; + // get address of first pointer + Actor** prev = &first_actor; + while ((a = *prev)) { + // was actor removed? + if (a->removed) { + // set previous pointer to skip this actor + *prev = a->next; + // free memory + free(a); + } else { + // get address of next pointer + prev = &a->next; + } + } +} + +void draw_actor_rect(Actor* a) { + CNTR(); // center beam (0,0) + SCAL(WORLD_SCALE); // world scale + VCTR(a->xx>>3, a->yy>>3, 0); // go to object center + SCAL(a->scale); // object scale + STAT(RED, 7); // set color/intensity + VCTR(-86,-86,0); + VCTR(86*2,0,2); + VCTR(0,86*2,2); + VCTR(-86*2,0,2); + VCTR(0,-86*2,2); +} + +word get_distance_squared(byte dx, byte dy) { + return cc65_imul8x8r16(dx,dx) + cc65_imul8x8r16(dy,dy); +} + +typedef void ActorCollisionFn(struct Actor*, struct Actor*); + +byte test_actor_distance(ActorCollisionFn* fn, Actor* act1, byte mindist, byte flags) { + Actor* a = first_actor; + byte xx1 = act1->xx >> 8; + byte yy1 = act1->yy >> 8; + byte count = 0; + word mindist2 = mindist * mindist; + // go through list of actors + while (a) { + // only compare against actors with certain flags + // (that haven't been removed) + if ((a->collision_flags & flags) && !a->removed) { + byte dx = abs(xx1 - (a->xx >> 8)); + byte dy = abs(yy1 - (a->yy >> 8)); + if (dx+dy < mindist) { + word dist2 = get_distance_squared(dx, dy); + if (dist2 < mindist2) { + if (fn) fn(act1, a); + count++; + } + } + } + a = a->next; + } + return count; +} + +void explode_at(Actor* base); + +void explode_actor(Actor* a, Actor* b) { + a->removed = 1; + explode_at(b); + b->removed = 1; +} + +void obstacle_update_fn(struct Actor* a) { + a->angle += 1; +} + +void torpedo_update_fn(struct Actor* a) { + // expire? + if ((a->angle += 60) == 0) { + a->removed = 1; + } else { + // check for torpedo hits + test_actor_distance(explode_actor, a, 12, 0x2); + } +} + +void explosion_update_fn(struct Actor* a) { + a->scale -= 2; + if (a->scale < 8) { + a->removed = 1; + } +} + +const Actor ship_actor = { + ship_shapes, NULL, 3, 0xb0, WHITE, 7, 0x1, +}; +const Actor tetra_actor = { + tetra_shapes, obstacle_update_fn, 3, 0x80, CYAN, 7, 0x2, +}; +const Actor torpedo_actor = { + torpedo_shapes, torpedo_update_fn, 4, 0xe0, YELLOW, 15, 0x4, +}; +const Actor explosion_actor = { + explosion_shape, explosion_update_fn, 8, 0xa0, WHITE, 15, 0, +}; + +void create_obstacle() { + Actor* a = new_actor(&tetra_actor); + a->xx = rand() | 0x8000; + a->yy = rand(); + a->velx = (int)rand()<<8>>8; + a->vely = (int)rand()<<8>>8; +} + +void create_obstacles(byte count) { + while (count--) { + create_obstacle(); + } +} + +static int frame = 0; + +static Actor* curship = NULL; + +void draw_thrust() { + word rnd = rand(); + // save old values in actor + byte oldcolor = curship->color; + byte oldintens = curship->intens; + // temporarily give new thrust values + curship->shapes = thrust_shapes; + curship->scale ^= rnd; // random thrust scale + curship->intens = 15; + curship->color = (rnd&1) ? RED : YELLOW; + // draw thrust using player's ship actor + draw_actor(curship); + // restore previous values + curship->shapes = ship_shapes; + curship->scale ^= rnd; + curship->color = oldcolor; + curship->intens = oldintens; +} + +void thrust_ship() { + sbyte sin = isin(curship->angle); + sbyte cos = icos(curship->angle); + curship->velx += sin>>3; + curship->vely += cos>>3; +} + +int apply_friction(int vel) { + int delta = vel >> 8; + if (delta == 0 && vel > 0) delta++; + return vel - delta; +} + +void shoot_torpedo() { + sbyte sin = isin(curship->angle); + sbyte cos = icos(curship->angle); + Actor* torp = new_actor(&torpedo_actor); + torp->velx = sin << 2; + torp->vely = cos << 2; + torp->xx = curship->xx + torp->velx*4; + torp->yy = curship->yy + torp->vely*4; +} + +static byte can_fire; +static byte newship_timer; + +void new_player_ship() { + if (curship == NULL) { + curship = new_actor(&ship_actor); + } +} + +void explode_at(Actor* base) { + Actor* a = new_actor(&explosion_actor); + a->xx = base->xx; + a->yy = base->yy; +} + +void control_player() { + if (newship_timer && --newship_timer == 0) { + new_player_ship(); + } + if (!curship) return; + + if (LEFT1) curship->angle -= 2; + if (RIGHT1) curship->angle += 2; + if ((frame&1)==1) { + curship->velx = apply_friction(curship->velx); + curship->vely = apply_friction(curship->vely); + } + if (UP1) { + // draw flame + draw_thrust(); + // thrust every 4 frames, to avoid precision issues + if (!(frame&3)) thrust_ship(); + } + if (FIRE1) { + // must release fire button before firing again + if (can_fire) { + shoot_torpedo(); + can_fire = 0; + } + } else { + can_fire = 1; + } + // ship ran into something? + if (test_actor_distance(NULL, curship, 16, 0x2)) { + explode_at(curship); + curship->removed = 1; + curship = NULL; + newship_timer = 255; + } +} + +byte just_one_actor_left() { + return first_actor != NULL && first_actor->next == NULL; +} + +void main() { + dvgclear(); + dvgwrofs = 0x800; //write into the middle of VEC ROM (TODO) + make_cached_shapes(); + create_obstacles(5); + new_player_ship(); + while (!just_one_actor_left()) { + dvgreset(); + control_player(); + draw_and_update_actors(); + CNTR(); + HALT(); + dvgstart(); + remove_expired_actors(); + frame++; + watchdog=0; +// while (vidframe == (frame & 0x3)) {} + } + main(); +} diff --git a/presets/vector-ataricolor/skeleton.cc65 b/presets/vector-ataricolor/skeleton.cc65 new file mode 100644 index 00000000..5d8bf07b --- /dev/null +++ b/presets/vector-ataricolor/skeleton.cc65 @@ -0,0 +1,21 @@ + + +#include + +#include "vecops.h" +//#link "vecops.c" + +void main() { + while (1) { + dvgreset(); + CNTR(); + VCTR(100,0,1); + VCTR(0,100,2); + VCTR(-100,0,3); + VCTR(0,-100,4); + CNTR(); + HALT(); + dvgstart(); + } + main(); +} diff --git a/presets/vector-ataricolor/threed.c b/presets/vector-ataricolor/threed.c new file mode 100644 index 00000000..d97c7cd0 --- /dev/null +++ b/presets/vector-ataricolor/threed.c @@ -0,0 +1,33 @@ + +#include "vecops.h" +//#link "vecops.c" + +#include "vec3d.h" +//#link "vec3d.c" + +const Vector8 tetra_v[] = { {0,-86,86},{86,86,86},{-86,86,86},{0,0,-86} }; +const sbyte tetra_e[] = { 0, 1, 2, 0, 3, 1, -1, 3, 2, -2 }; +const Wireframe tetra = { 4, tetra_v, tetra_e }; + +word frame; + +void main() { + int x,y; + Matrix m; + mat_identity(&m); + while (1) { + dvgreset(); + CNTR(); + SCAL(0x1f); + STAT(RED, 5); + x = isin(frame/8); + y = icos(frame/8); + VCTR(x, y, 2); + STAT(GREEN, 15); + mat_rotate(&m, (frame>>8)&3, frame); + draw_wireframe_ortho(&tetra, &m); + HALT(); + dvgstart(); + frame++; + } +} diff --git a/presets/vector-ataricolor/vec3d.c b/presets/vector-ataricolor/vec3d.c new file mode 100644 index 00000000..90fad7e7 --- /dev/null +++ b/presets/vector-ataricolor/vec3d.c @@ -0,0 +1,112 @@ + +#include +#include + +#include "vec3d.h" + +const Matrix IDENTITY = {{{127,0,0},{0,127,0},{0,0,127}}}; + +void mat_identity(Matrix* m) { + *m = IDENTITY; +} + +void vec_mat_transform(Vector16* dest, const Vector8* v, const Matrix* m) { + byte i; + int* result = &dest->x; + const sbyte* mval = &m->m[0][0]; + for (i=0; i<3; i++) { + *result++ = cc65_imul8x8r16(*mval++, v->x) + + cc65_imul8x8r16(*mval++, v->y) + + cc65_imul8x8r16(*mval++, v->z); + } +} + +/* +void vec_mat_transform2(Vector16* dest, const Vector8* v, const Matrix* m) { + dest->x = v->x*m->m[0][0] + v->y*m->m[0][1] + v->z*m->m[0][2]; + dest->y = v->x*m->m[1][0] + v->y*m->m[1][1] + v->z*m->m[1][2]; + dest->z = v->x*m->m[2][0] + v->y*m->m[2][1] + v->z*m->m[2][2]; +} +*/ + +const sbyte sintbl[64] = { +0, 3, 6, 9, 12, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, +49, 51, 54, 57, 60, 63, 65, 68, 71, 73, 76, 78, 81, 83, 85, 88, +90, 92, 94, 96, 98, 100, 102, 104, 106, 107, 109, 111, 112, 113, 115, 116, +117, 118, 120, 121, 122, 122, 123, 124, 125, 125, 126, 126, 126, 127, 127, 127, +}; + +sbyte isin(byte x0) { + byte x = x0; + if (x0 & 0x40) x = 127-x; + if (x0 & 0x80) { + return -sintbl[x-128]; + } else { + return sintbl[x]; + } +} + +sbyte icos(byte x) { + return isin(x+64); +} + +void mat_rotate(Matrix* m, byte axis, byte angle) { + sbyte sin = isin(angle); + sbyte cos = icos(angle); + mat_identity(m); + switch (axis) { + case 0: + m->m[1][1] = cos; + m->m[2][1] = sin; + m->m[1][2] = -sin; + m->m[2][2] = cos; + break; + case 1: + m->m[2][2] = cos; + m->m[0][2] = sin; + m->m[2][0] = -sin; + m->m[0][0] = cos; + break; + case 2: + m->m[0][0] = cos; + m->m[1][0] = sin; + m->m[0][1] = -sin; + m->m[1][1] = cos; + break; + } +} + +void xform_vertices(Vector16* dest, const Vector8* src, const Matrix* m, byte nv) { + byte i; + for (i=0; iedges; + byte bright = 0; + int x1 = 0; + int y1 = 0; + do { + sbyte i = *e++; + if (i == -1) + bright = 0; + else if (i == -2) + break; + else { + int x2 = scrnverts[i].x>>8; + int y2 = scrnverts[i].y>>8; + VCTR(x2-x1, y2-y1, bright); + x1 = x2; + y1 = y2; + } + bright = 2; + } while (1); +} + +void draw_wireframe_ortho(const Wireframe* wf, const Matrix* m) { + Vector16 scrnverts[16]; + xform_vertices(scrnverts, wf->verts, m, wf->numverts); + draw_wireframe(wf, scrnverts); +} diff --git a/presets/vector-ataricolor/vec3d.h b/presets/vector-ataricolor/vec3d.h new file mode 100644 index 00000000..d969aebd --- /dev/null +++ b/presets/vector-ataricolor/vec3d.h @@ -0,0 +1,36 @@ + +#ifndef _VEC3D_H +#define _VEC3D_H + +#include "vecops.h" + +typedef struct { + sbyte m[3][3]; +} Matrix; + +typedef struct { + sbyte x,y,z; +} Vector8; + +typedef struct { + int x,y,z; +} Vector16; + +typedef struct { + byte numverts; + const Vector8* verts; // array of vertices + const sbyte* edges; // array of vertex indices (edges) +} Wireframe; + +extern const Matrix IDENTITY; + +void mat_identity(Matrix* m); +void vec_mat_transform(Vector16* dest, const Vector8* v, const Matrix* m); +sbyte isin(byte x0); +sbyte icos(byte x); +void mat_rotate(Matrix* m, byte axis, byte angle); +void xform_vertices(Vector16* dest, const Vector8* src, const Matrix* m, byte nv); +void draw_wireframe(const Wireframe* wf, Vector16* scrnverts); +void draw_wireframe_ortho(const Wireframe* wf, const Matrix* m); + +#endif diff --git a/presets/vector-ataricolor/vecfont.c b/presets/vector-ataricolor/vecfont.c new file mode 100644 index 00000000..0f1f6ec3 --- /dev/null +++ b/presets/vector-ataricolor/vecfont.c @@ -0,0 +1,79 @@ + +#include "vecops.h" + +#pragma rodata-name(push,"DVGROM") +const word VECFONT_32[] = { _SVEC(12,0,0), _RTSL() }; +const word VECFONT_33[] = { _SVEC(4,0,0), _SVEC(-1,2,4), _SVEC(2,0,4), _SVEC(-1,-2,4), _SVEC(0,4,0), _SVEC(0,8,4), _SVEC(8,-12,0), _RTSL() }; +const word VECFONT_34[] = { _SVEC(2,10,0), _SVEC(0,-4,4), _SVEC(4,4,0), _SVEC(0,-4,4), _SVEC(6,-6,0), _RTSL() }; +const word VECFONT_35[] = { _SVEC(0,4,0), _SVEC(8,0,4), _SVEC(-2,-2,4), _SVEC(0,8,4), _SVEC(2,-2,4), _SVEC(-8,0,4), _SVEC(2,2,4), _SVEC(0,-8,4), _SVEC(10,-2,0), _RTSL() }; +const word VECFONT_36[] = { _SVEC(6,2,0), _SVEC(-4,4,4), _SVEC(4,4,4), _SVEC(-2,2,0), _SVEC(0,-12,4), _SVEC(8,0,0), _RTSL() }; +const word VECFONT_37[] = { _SVEC(0,0,0), _SVEC(8,12,4), _SVEC(-6,-2,0), _SVEC(0,-2,4), _SVEC(4,-4,0), _SVEC(0,-2,4), _SVEC(6,-2,0), _RTSL() }; +const word VECFONT_38[] = { _SVEC(8,0,0), _SVEC(-4,12,4), _SVEC(4,-4,4), _SVEC(-8,-4,4), _SVEC(4,-4,4), _SVEC(4,4,4), _SVEC(4,-4,0), _RTSL() }; +const word VECFONT_39[] = { _SVEC(0,12,0), _SVEC(8,-12,4), _SVEC(4,0,0), _RTSL() }; +const word VECFONT_40[] = { _SVEC(6,0,0), _SVEC(-4,4,4), _SVEC(0,4,4), _SVEC(4,4,4), _SVEC(6,-12,0), _RTSL() }; +const word VECFONT_41[] = { _SVEC(2,0,0), _SVEC(4,4,4), _SVEC(0,4,4), _SVEC(-4,4,4), _SVEC(10,-12,0), _RTSL() }; +const word VECFONT_42[] = { _SVEC(0,0,0), _SVEC(4,12,4), _SVEC(4,-12,4), _SVEC(-8,8,4), _SVEC(8,0,4), _SVEC(-8,-8,4), _SVEC(12,0,0), _RTSL() }; +const word VECFONT_43[] = { _SVEC(1,6,0), _SVEC(6,0,4), _SVEC(-3,3,0), _SVEC(0,-6,4), _SVEC(8,-3,0), _RTSL() }; +const word VECFONT_44[] = { _SVEC(2,0,0), _SVEC(2,2,4), _SVEC(8,-2,0), _RTSL() }; +const word VECFONT_45[] = { _SVEC(2,6,0), _SVEC(4,0,4), _SVEC(6,-6,0), _RTSL() }; +const word VECFONT_46[] = { _SVEC(3,0,0), _SVEC(1,0,4), _SVEC(8,0,0), _RTSL() }; +const word VECFONT_47[] = { _SVEC(0,0,0), _SVEC(8,12,4), _SVEC(4,-12,0), _RTSL() }; +const word VECFONT_48[] = { _SVEC(0,0,0), _SVEC(8,0,4), _SVEC(0,12,4), _SVEC(-8,0,4), _SVEC(0,-12,4), _SVEC(8,12,4), _SVEC(4,-12,0), _RTSL() }; +const word VECFONT_49[] = { _SVEC(4,0,0), _SVEC(0,12,4), _SVEC(-1,-2,4), _SVEC(9,-10,0), _RTSL() }; +const word VECFONT_50[] = { _SVEC(0,12,0), _SVEC(8,0,4), _SVEC(0,-5,4), _SVEC(-8,-2,4), _SVEC(0,-5,4), _SVEC(8,0,4), _SVEC(4,0,0), _RTSL() }; +const word VECFONT_51[] = { _SVEC(0,12,0), _SVEC(8,0,4), _SVEC(0,-12,4), _SVEC(-8,0,4), _SVEC(0,6,0), _SVEC(8,0,4), _SVEC(4,-6,0), _RTSL() }; +const word VECFONT_52[] = { _SVEC(0,12,0), _SVEC(0,-6,4), _SVEC(8,0,4), _SVEC(0,6,0), _SVEC(0,-12,4), _SVEC(4,0,0), _RTSL() }; +const word VECFONT_53[] = { _SVEC(0,0,0), _SVEC(8,0,4), _SVEC(0,6,4), _SVEC(-8,1,4), _SVEC(0,5,4), _SVEC(8,0,4), _SVEC(4,-12,0), _RTSL() }; +const word VECFONT_54[] = { _SVEC(0,12,0), _SVEC(0,-12,4), _SVEC(8,0,4), _SVEC(0,5,4), _SVEC(-8,2,4), _SVEC(12,-7,0), _RTSL() }; +const word VECFONT_55[] = { _SVEC(0,12,0), _SVEC(8,0,4), _SVEC(0,-6,4), _SVEC(-4,-6,4), _SVEC(8,0,0), _RTSL() }; +const word VECFONT_56[] = { _SVEC(0,0,0), _SVEC(8,0,4), _SVEC(0,12,4), _SVEC(-8,0,4), _SVEC(0,-12,4), _SVEC(0,6,0), _SVEC(8,0,4), _SVEC(4,-6,0), _RTSL() }; +const word VECFONT_57[] = { _SVEC(8,0,0), _SVEC(0,12,4), _SVEC(-8,0,4), _SVEC(0,-5,4), _SVEC(8,-2,4), _SVEC(4,-5,0), _RTSL() }; +const word VECFONT_58[] = { _SVEC(4,9,0), _SVEC(0,-2,4), _SVEC(0,-2,0), _SVEC(0,-2,4), _SVEC(8,-3,0), _RTSL() }; +const word VECFONT_59[] = { _SVEC(4,9,0), _SVEC(0,-2,4), _SVEC(0,-2,0), _SVEC(-3,-3,4), _SVEC(11,-2,0), _RTSL() }; +const word VECFONT_60[] = { _SVEC(6,0,0), _SVEC(-4,6,4), _SVEC(4,6,4), _SVEC(6,-12,0), _RTSL() }; +const word VECFONT_61[] = { _SVEC(1,4,0), _SVEC(6,0,4), _SVEC(-6,4,0), _SVEC(6,0,4), _SVEC(5,-8,0), _RTSL() }; +const word VECFONT_62[] = { _SVEC(2,0,0), _SVEC(4,6,4), _SVEC(-4,6,4), _SVEC(10,-12,0), _RTSL() }; +const word VECFONT_63[] = { _SVEC(0,8,0), _SVEC(4,4,4), _SVEC(4,-4,4), _SVEC(-4,-4,4), _SVEC(0,-3,0), _SVEC(0,-1,4), _SVEC(8,0,0), _RTSL() }; +const word VECFONT_64[] = { _SVEC(8,4,0), _SVEC(-4,-4,4), _SVEC(-4,4,4), _SVEC(0,4,4), _SVEC(4,4,4), _SVEC(4,-4,4), _SVEC(-4,-4,4), _SVEC(-1,2,4), _SVEC(9,-6,0), _RTSL() }; +const word VECFONT_65[] = { _SVEC(0,0,0), _SVEC(0,8,4), _SVEC(4,4,4), _SVEC(4,-4,4), _SVEC(0,-8,4), _SVEC(-8,4,0), _SVEC(8,0,4), _SVEC(4,-4,0), _RTSL() }; +const word VECFONT_66[] = { _SVEC(0,0,0), _SVEC(0,12,4), _SVEC(4,0,4), _SVEC(4,-2,4), _SVEC(-4,-4,4), _SVEC(4,-4,4), _SVEC(-4,-2,4), _SVEC(-4,0,4), _SVEC(12,0,0), _RTSL() }; +const word VECFONT_67[] = { _SVEC(8,0,0), _SVEC(-8,0,4), _SVEC(0,12,4), _SVEC(8,0,4), _SVEC(4,-12,0), _RTSL() }; +const word VECFONT_68[] = { _SVEC(0,0,0), _SVEC(0,12,4), _SVEC(4,0,4), _SVEC(4,-4,4), _SVEC(0,-4,4), _SVEC(-4,-4,4), _SVEC(-4,0,4), _SVEC(12,0,0), _RTSL() }; +const word VECFONT_69[] = { _SVEC(8,0,0), _SVEC(-8,0,4), _SVEC(0,12,4), _SVEC(8,0,4), _SVEC(-8,-6,0), _SVEC(6,0,4), _SVEC(6,-6,0), _RTSL() }; +const word VECFONT_70[] = { _SVEC(0,0,0), _SVEC(0,12,4), _SVEC(8,0,4), _SVEC(-8,-6,0), _SVEC(6,0,4), _SVEC(6,-6,0), _RTSL() }; +const word VECFONT_71[] = { _SVEC(6,6,0), _SVEC(2,-2,4), _SVEC(0,-4,4), _SVEC(-8,0,4), _SVEC(0,12,4), _SVEC(8,0,4), _SVEC(4,-12,0), _RTSL() }; +const word VECFONT_72[] = { _SVEC(0,0,0), _SVEC(0,12,4), _SVEC(0,-6,0), _SVEC(8,0,4), _SVEC(0,6,0), _SVEC(0,-12,4), _SVEC(4,0,0), _RTSL() }; +const word VECFONT_73[] = { _SVEC(0,0,0), _SVEC(8,0,4), _SVEC(-4,0,0), _SVEC(0,12,4), _SVEC(-4,0,0), _SVEC(8,0,4), _SVEC(4,-12,0), _RTSL() }; +const word VECFONT_74[] = { _SVEC(0,4,0), _SVEC(4,-4,4), _SVEC(4,0,4), _SVEC(0,12,4), _SVEC(4,-12,0), _RTSL() }; +const word VECFONT_75[] = { _SVEC(0,0,0), _SVEC(0,12,4), _SVEC(8,0,0), _SVEC(-8,-6,4), _SVEC(6,-6,4), _SVEC(6,0,0), _RTSL() }; +const word VECFONT_76[] = { _SVEC(8,0,0), _SVEC(-8,0,4), _SVEC(0,12,4), _SVEC(12,-12,0), _RTSL() }; +const word VECFONT_77[] = { _SVEC(0,0,0), _SVEC(0,12,4), _SVEC(4,-4,4), _SVEC(4,4,4), _SVEC(0,-12,4), _SVEC(4,0,0), _RTSL() }; +const word VECFONT_78[] = { _SVEC(0,0,0), _SVEC(0,12,4), _SVEC(8,-12,4), _SVEC(0,12,4), _SVEC(4,-12,0), _RTSL() }; +const word VECFONT_79[] = { _SVEC(0,0,0), _SVEC(0,12,4), _SVEC(8,0,4), _SVEC(0,-12,4), _SVEC(-8,0,4), _SVEC(12,0,0), _RTSL() }; +const word VECFONT_80[] = { _SVEC(0,0,0), _SVEC(0,12,4), _SVEC(8,0,4), _SVEC(0,-6,4), _SVEC(-8,-1,4), _SVEC(12,-5,0), _RTSL() }; +const word VECFONT_81[] = { _SVEC(0,0,0), _SVEC(0,12,4), _SVEC(8,0,4), _SVEC(0,-8,4), _SVEC(-8,-4,4), _SVEC(4,4,0), _SVEC(4,-4,4), _SVEC(4,0,0), _RTSL() }; +const word VECFONT_82[] = { _SVEC(0,0,0), _SVEC(0,12,4), _SVEC(8,0,4), _SVEC(0,-6,4), _SVEC(-8,-1,4), _SVEC(4,0,0), _SVEC(4,-5,4), _SVEC(4,0,0), _RTSL() }; +const word VECFONT_83[] = { _SVEC(0,2,0), _SVEC(2,-2,4), _SVEC(6,0,4), _SVEC(0,5,4), _SVEC(-8,2,4), _SVEC(0,5,4), _SVEC(6,0,4), _SVEC(2,-2,4), _SVEC(4,-10,0), _RTSL() }; +const word VECFONT_84[] = { _SVEC(0,12,0), _SVEC(8,0,4), _SVEC(-4,0,0), _SVEC(0,-12,4), _SVEC(8,0,0), _RTSL() }; +const word VECFONT_85[] = { _SVEC(0,12,0), _SVEC(0,-10,4), _SVEC(4,-2,4), _SVEC(4,2,4), _SVEC(0,10,4), _SVEC(4,-12,0), _RTSL() }; +const word VECFONT_86[] = { _SVEC(0,12,0), _SVEC(4,-12,4), _SVEC(4,12,4), _SVEC(4,-12,0), _RTSL() }; +const word VECFONT_87[] = { _SVEC(0,12,0), _SVEC(2,-12,4), _SVEC(2,4,4), _SVEC(2,-4,4), _SVEC(2,12,4), _SVEC(4,-12,0), _RTSL() }; +const word VECFONT_88[] = { _SVEC(0,0,0), _SVEC(8,12,4), _SVEC(-8,0,0), _SVEC(8,-12,4), _SVEC(4,0,0), _RTSL() }; +const word VECFONT_89[] = { _SVEC(0,12,0), _SVEC(4,-6,4), _SVEC(4,6,4), _SVEC(-4,-6,0), _SVEC(0,-6,4), _SVEC(8,0,0), _RTSL() }; +const word VECFONT_90[] = { _SVEC(0,12,0), _SVEC(8,0,4), _SVEC(-8,-12,4), _SVEC(8,0,4), _SVEC(-6,6,0), _SVEC(4,0,4), _SVEC(6,-6,0), _RTSL() }; +const word* const VECFONT[] = { VECFONT_32,VECFONT_33,VECFONT_34,VECFONT_35,VECFONT_36,VECFONT_37,VECFONT_38,VECFONT_39,VECFONT_40,VECFONT_41,VECFONT_42,VECFONT_43,VECFONT_44,VECFONT_45,VECFONT_46,VECFONT_47,VECFONT_48,VECFONT_49,VECFONT_50,VECFONT_51,VECFONT_52,VECFONT_53,VECFONT_54,VECFONT_55,VECFONT_56,VECFONT_57,VECFONT_58,VECFONT_59,VECFONT_60,VECFONT_61,VECFONT_62,VECFONT_63,VECFONT_64,VECFONT_65,VECFONT_66,VECFONT_67,VECFONT_68,VECFONT_69,VECFONT_70,VECFONT_71,VECFONT_72,VECFONT_73,VECFONT_74,VECFONT_75,VECFONT_76,VECFONT_77,VECFONT_78,VECFONT_79,VECFONT_80,VECFONT_81,VECFONT_82,VECFONT_83,VECFONT_84,VECFONT_85,VECFONT_86,VECFONT_87,VECFONT_88,VECFONT_89,VECFONT_90, }; +#pragma rodata-name(pop) + +void draw_char(char ch) { + const word* vec = VECFONT[ch - ' ']; + if (ch < ' ' || ch > 'Z') return; + JSRPTR(vec); +} + +void draw_string(const char* str, byte spacing) { + while (*str) { + draw_char(*str++); + if (spacing) SVEC(spacing, 0, 0); + } +} + diff --git a/presets/vector-ataricolor/vecfont.h b/presets/vector-ataricolor/vecfont.h new file mode 100644 index 00000000..e75f91f9 --- /dev/null +++ b/presets/vector-ataricolor/vecfont.h @@ -0,0 +1,12 @@ + +#ifndef _VECFONT_H +#define _VECFONT_H + +#include "vecops.h" + +const word* const VECFONT[]; + +void draw_char(char ch); +void draw_string(const char* str, byte spacing); + +#endif diff --git a/presets/vector-ataricolor/vecops.c b/presets/vector-ataricolor/vecops.c new file mode 100644 index 00000000..94a4b784 --- /dev/null +++ b/presets/vector-ataricolor/vecops.c @@ -0,0 +1,69 @@ + +#include +#include "vecops.h" + +word dvgwrofs; // write offset for DVG buffer + +#define dvgram ((word*)0x2000) + +void dvgclear(void) { + memset(dvgram, 0x20, 0x800); // HALTs +} + +void dvgreset(void) { + dvgwrofs = 0; +} + +void dvgstart(void) { + asm("sta $8840"); // strobe DVGSTART +} + +void dvgwrite(word w) { + dvgram[dvgwrofs] = w; + ++dvgwrofs; +} + +void VCTR(int dx, int dy, byte bright) { + dvgwrite((dy & 0x1fff)); + dvgwrite(((bright & 7) << 13) | (dx & 0x1fff)); +} + +void SVEC(signed char dx, signed char dy, byte bright) { + dvgwrite(0x4000 | (dx & 0x1f) | ((bright&7)<<5) | ((dy & 0x1f)<<8)); +} + +void JSRL(word offset) { + dvgwrite(0xa000 | offset); +} + +void JMPL(word offset) { + dvgwrite(0xe000 | offset); +} + +void RTSL(void) { + dvgwrite(0xc000); +} + +void CNTR(void) { + dvgwrite(0x8000); +} + +void HALT(void) { + dvgwrite(0x2000); +} + +void STAT(byte rgb, byte intens) { + dvgwrite(0x6000 | ((intens & 0xf)<<4) | (rgb & 7)); +} + +void STAT_sparkle(byte intens) { + dvgwrite(0x6800 | ((intens & 0xf)<<4)); +} + +void SCAL(word scale) { + dvgwrite(0x7000 | scale); +} + +void JSRPTR(const word* dvgrom) { + JSRL(((word)dvgrom - 0x2000) >> 1); +} diff --git a/presets/vector-ataricolor/vecops.h b/presets/vector-ataricolor/vecops.h new file mode 100644 index 00000000..14c65009 --- /dev/null +++ b/presets/vector-ataricolor/vecops.h @@ -0,0 +1,49 @@ + +#ifndef _VECOPS_H +#define _VECOPS_H + +typedef unsigned char byte; +typedef signed char sbyte; +typedef unsigned short word; + +extern word dvgwrofs; // write offset for DVG buffer + +// DVG operation functions + +typedef enum { + BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, YELLOW, WHITE +} Color; + +void dvgclear(void); +void dvgreset(void); +void dvgstart(void); +void dvgwrite(word w); +void VCTR(int dx, int dy, byte bright); +void SVEC(signed char dx, signed char dy, byte bright); +void JSRL(word offset); +void JMPL(word offset); +void RTSL(void); +void CNTR(void); +void HALT(void); +void STAT(byte rgb, byte intens); +void STAT_sparkle(byte intens); +void SCAL(word scale); + +// jump to pointer in DVG ROM +void JSRPTR(const word* dvgrom); + +// macro versions for DVG ROM constants + +#define _VCTR(dx,dy,bright) \ + (dy & 0x1fff), \ + (((bright & 7) << 13) | (dx & 0x1fff)) +#define _SVEC(dx,dy,bright) (0x4000 | (dx & 0x1f) | ((bright&7)<<5) | ((dy & 0x1f)<<8)) +#define _JSRL(offset) (0xa000 | offset) +#define _JMPL(offset) (0xe000 | offset) +#define _RTSL() (0xc000) +#define _CNTR() (0x8000) +#define _HALT() (0x2000) +#define _STAT(rgb,intens) (0x6000 | ((intens & 0xf)<<4) | (rgb & 7)) +#define _SCAL(scale) (0x7000 | scale) + +#endif /* _VECOPS_H */ diff --git a/presets/vector-z80color/game.c b/presets/vector-z80color/game.c index 2ddf77c9..fade2046 100644 --- a/presets/vector-z80color/game.c +++ b/presets/vector-z80color/game.c @@ -294,7 +294,7 @@ sbyte isin(byte x0) { byte x = x0; if (x0 & 0x40) x = 127-x; if (x0 & 0x80) { - return -sintbl[x+128]; + return -sintbl[x-128]; } else { return sintbl[x]; } diff --git a/presets/vector-z80color/threed.c b/presets/vector-z80color/threed.c index ec395244..0cf436a4 100644 --- a/presets/vector-z80color/threed.c +++ b/presets/vector-z80color/threed.c @@ -155,7 +155,7 @@ sbyte isin(byte x0) { byte x = x0; if (x0 & 0x40) x = 127-x; if (x0 & 0x80) { - return -sintbl[x+128]; + return -sintbl[x-128]; } else { return sintbl[x]; } diff --git a/src/platform/vector.ts b/src/platform/vector.ts index 85b12178..42f3889b 100644 --- a/src/platform/vector.ts +++ b/src/platform/vector.ts @@ -199,6 +199,7 @@ var AtariColorVectorPlatform = function(mainElement) { var earom_offset, earom_data; this.__proto__ = new (Base6502Platform as any)(); + //this.debugPCDelta = 0; this.getPresets = function() { return VECTOR_PRESETS; @@ -235,6 +236,7 @@ var AtariColorVectorPlatform = function(mainElement) { write: newAddressDecoder([ [0x0, 0x7ff, 0x7ff, function(a,v) { cpuram.mem[a] = v; }], [0x2000, 0x27ff, 0x7ff, function(a,v) { dvgram.mem[a] = v; }], + [0x2800, 0x5fff, 0x7fff, function(a,v) { vecrom[a - 0x2800] = v; }], // TODO: remove (it's ROM!) [0x6000, 0x67ff, 0xf, function(a,v) { audio.pokey1.setRegister(a, v); }], [0x6800, 0x6fff, 0xf, function(a,v) { audio.pokey2.setRegister(a, v); }], [0x8800, 0x8800, 0, function(a,v) { /* LEDs, etc */ }], @@ -286,7 +288,8 @@ var AtariColorVectorPlatform = function(mainElement) { } this.loadROM = function(title, data) { - rom = padBytes(data, 0x7000); + rom = data.slice(0, 0x7000); + vecrom = padBytes(data.slice(0x7000), 0x3800); this.reset(); } @@ -307,7 +310,9 @@ var AtariColorVectorPlatform = function(mainElement) { } this.loadState = function(state) { + this.unfixPC(state.c); cpu.loadState(state.c); + this.fixPC(state.c); cpuram.mem.set(state.b); dvgram.mem.set(state.db); switches.set(state.sw); @@ -315,7 +320,7 @@ var AtariColorVectorPlatform = function(mainElement) { } this.saveState = function() { return { - c:cpu.saveState(), + c:this.getCPUState(), b:cpuram.mem.slice(0), db:dvgram.mem.slice(0), sw:switches.slice(0), @@ -331,7 +336,7 @@ var AtariColorVectorPlatform = function(mainElement) { } } this.getCPUState = function() { - return cpu.saveState(); + return this.fixPC(cpu.saveState()); } } diff --git a/src/views.ts b/src/views.ts index e2050ea8..a11c7ede 100644 --- a/src/views.ts +++ b/src/views.ts @@ -375,7 +375,7 @@ export class SourceEditor implements ProjectView { /// -const disasmWindow = 512; // disassemble this many bytes around cursor +const disasmWindow = 1024; // disassemble this many bytes around cursor export class DisassemblerView implements ProjectView { disasmview; diff --git a/src/worker/fs/fs65-sim6502.data b/src/worker/fs/fs65-sim6502.data new file mode 100644 index 00000000..1b6a69b9 --- /dev/null +++ b/src/worker/fs/fs65-sim6502.data @@ -0,0 +1,26184 @@ +/*****************************************************************************/ +/* */ +/* cbm.h */ +/* */ +/* CBM system-specific definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-2015, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _CBM_H +#define _CBM_H + + + +/* Check for errors */ +#if !defined(__CBM__) +# error This module may be used only when compiling for CBM machines! +#endif + + + +/* We need NULL. */ + +#if !defined(_STDDEF_H) +# include +#endif + +/* Load the system-specific files here, if needed. */ +#if defined(__C64__) && !defined(_C64_H) +# include +#elif defined(__VIC20__) && !defined(_VIC20_H) +# include +#elif defined(__C128__) && !defined(_C128_H) +# include +#elif defined(__PLUS4__) && !defined(_PLUS4_H) +# include +#elif defined(__C16__) && !defined(_C16_H) +# include +#elif defined(__CBM510__) && !defined(_CBM510_H) +# include +#elif defined(__CBM610__) && !defined(_CBM610_H) +# include +#elif defined(__PET__) && !defined(_PET_H) +# include +#endif + +/* Include definitions for CBM file types */ +#include + + + +/*****************************************************************************/ +/* Variables */ +/*****************************************************************************/ + + + +/* The file stream implementation and the POSIX I/O functions will +** use the following variable to determine the file type to use. +*/ +extern char _filetype; /* Defaults to 's' */ + + + +/*****************************************************************************/ +/* Character-codes (CBM charset) */ +/*****************************************************************************/ + + + +#define CH_HLINE 192 +#define CH_VLINE 221 +#define CH_ULCORNER 176 +#define CH_URCORNER 174 +#define CH_LLCORNER 173 +#define CH_LRCORNER 189 +#define CH_TTEE 178 +#define CH_BTEE 177 +#define CH_LTEE 171 +#define CH_RTEE 179 +#define CH_CROSS 219 +#define CH_CURS_UP 145 +#define CH_CURS_DOWN 17 +#define CH_CURS_LEFT 157 +#define CH_CURS_RIGHT 29 +#define CH_PI 222 +#define CH_HOME 19 +#define CH_DEL 20 +#define CH_INS 148 +#define CH_ENTER 13 +#define CH_STOP 3 +#define CH_LIRA 92 +#define CH_ESC 27 + + + +/*****************************************************************************/ +/* Definitions for directory reading functions */ +/*****************************************************************************/ + + + +/* CBM FILE ACCESS */ +#define CBM_A_RO 1 /* Read only */ +#define CBM_A_WO 2 /* Write only */ +#define CBM_A_RW 3 /* Read, Write */ + +struct cbm_dirent { + char name[17]; /* File name in PetSCII, limited to 16 chars */ + unsigned int size; /* Size, in 254-/256-byte blocks */ + unsigned char type; + unsigned char access; +}; + + + +/*****************************************************************************/ +/* Machine info */ +/*****************************************************************************/ + + + +#define TV_NTSC 0 +#define TV_PAL 1 +#define TV_OTHER 2 + +unsigned char get_tv (void); +/* Return the video mode the machine is using. */ + + + +/*****************************************************************************/ +/* CBM kernal functions */ +/*****************************************************************************/ + + + +/* Constants to use with cbm_open() for openning a file for reading or +** writing without the need to append ",r" or ",w" to the filename. +** +** e.g., cbm_open(2, 8, CBM_READ, "0:data,s"); +*/ +#define CBM_READ 0 /* default is ",p" */ +#define CBM_WRITE 1 /* ditto */ +#define CBM_SEQ 2 /* default is ",r" -- or ",s" when writing */ + +/* Kernal-level functions */ +unsigned char cbm_k_acptr (void); +unsigned char cbm_k_basin (void); +void __fastcall__ cbm_k_bsout (unsigned char C); +unsigned char __fastcall__ cbm_k_chkin (unsigned char FN); +void __fastcall__ cbm_k_ciout (unsigned char C); +unsigned char __fastcall__ cbm_k_ckout (unsigned char FN); +void cbm_k_clall (void); +void __fastcall__ cbm_k_close (unsigned char FN); +void cbm_k_clrch (void); +unsigned char cbm_k_getin (void); +unsigned cbm_k_iobase (void); +void __fastcall__ cbm_k_listen (unsigned char dev); +unsigned int __fastcall__ cbm_k_load(unsigned char flag, unsigned addr); +unsigned char cbm_k_open (void); +unsigned char cbm_k_readst (void); +unsigned char __fastcall__ cbm_k_save(unsigned int start, unsigned int end); +void cbm_k_scnkey (void); +void __fastcall__ cbm_k_setlfs (unsigned char LFN, unsigned char DEV, + unsigned char SA); +void __fastcall__ cbm_k_setnam (const char* Name); +void __fastcall__ cbm_k_talk (unsigned char dev); +void cbm_k_udtim (void); +void cbm_k_unlsn (void); + + + +/*****************************************************************************/ +/* BASIC-like file I/O functions */ +/*****************************************************************************/ + + + +/* The cbm_* I/O functions below set _oserror (see errno.h), +** in case of an error. +** +** error-code BASIC error +** ---------- ----------- +** 1 = too many files +** 2 = file open +** 3 = file not open +** 4 = file not found +** 5 = device not present +** 6 = not input-file +** 7 = not output-file +** 8 = missing file-name +** 9 = illegal device-number +** +** 10 = STOP-key pushed +** 11 = general I/O-error +*/ + + + +unsigned int __fastcall__ cbm_load (const char* name, unsigned char device, void* data); +/* Loads file "name", from given device, to given address -- or, to the load +** address of the file if "data" is the null pointer (like load"name",8,1 +** in BASIC). +** Returns number of bytes that were loaded if loading was successful; +** otherwise 0, "_oserror" contains an error-code, then (see table above). +*/ + +unsigned char __fastcall__ cbm_save (const char* name, unsigned char device, + const void* addr, unsigned int size); +/* Saves "size" bytes, starting at "addr", to a file. +** Returns 0 if saving was successful, otherwise an error-code (see table +** above). +*/ + +unsigned char __fastcall__ cbm_open (unsigned char lfn, unsigned char device, + unsigned char sec_addr, const char* name); +/* Opens a file. Works just like the BASIC command. +** Returns 0 if openning was successful, otherwise an error-code (see table +** above). +*/ + +void __fastcall__ cbm_close (unsigned char lfn); +/* Closes a file */ + +int __fastcall__ cbm_read (unsigned char lfn, void* buffer, unsigned int size); +/* Reads up to "size" bytes from a file into "buffer". +** Returns the number of actually-read bytes, 0 if there are no bytes left. +** -1 in case of an error; then, _oserror contains an error-code (see table +** above). (Remember: 0 means end-of-file; -1 means error.) +*/ + +int __fastcall__ cbm_write (unsigned char lfn, const void* buffer, + unsigned int size); +/* Writes up to "size" bytes from "buffer" to a file. +** Returns the number of actually-written bytes, or -1 in case of an error; +** _oserror contains an error-code, then (see above table). +*/ + +unsigned char cbm_opendir (unsigned char lfn, unsigned char device, ...); +/* Opens directory listing. Returns 0 if opening directory was successful; +** otherwise, an error-code corresponding to cbm_open(). As an optional +** argument, the name of the directory may be passed to the function. If +** no explicit name is specified, "$" is used. +*/ + +unsigned char __fastcall__ cbm_readdir (unsigned char lfn, + struct cbm_dirent* l_dirent); +/* Reads one directory line into cbm_dirent structure. +** Returns 0 if reading directory-line was successful. +** Returns non-zero if reading directory failed, or no more file-names to read. +** Returns 2 on last line. Then, l_dirent->size = the number of "blocks free." +*/ + +void __fastcall__ cbm_closedir (unsigned char lfn); +/* Closes directory by cbm_close(lfn) */ + + + +/* End of cbm.h */ +#endif + + +/*****************************************************************************/ +/* */ +/* _6525.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 1998-2000 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __6525_H +#define __6525_H + + + +/* Define a structure with the 6525 register offsets. The shadow registers +** (if port C is unused) are currently not implemented, we would need a +** union to do that, however that would introduce an additional name. +*/ +struct __6525 { + unsigned char pra; /* Port register A */ + unsigned char prb; /* Port register B */ + unsigned char prc; /* Port register C */ + unsigned char ddra; /* Data direction register A */ + unsigned char ddrb; /* Data direction register B */ + unsigned char ddrc; /* Data direction register C */ + unsigned char cr; /* Control register */ + unsigned char air; /* Active interrupt register */ +}; + + + +/* End of _6525.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* _pia.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 2000 Freddy Offenga */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __PIA_H +#define __PIA_H + + +/* Define a structure with the pia register offsets */ +struct __pia { + unsigned char porta; /* port A data r/w */ + unsigned char portb; /* port B data r/w */ + unsigned char pactl; /* port A control */ + unsigned char pbctl; /* port B control */ +}; + + + +/* End of _pia.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* limits.h */ +/* */ +/* Sizes of integer types */ +/* */ +/* */ +/* */ +/* (C) 1998-2002 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _LIMITS_H +#define _LIMITS_H + + + +#define CHAR_BIT 8 + +#define SCHAR_MIN ((signed char) 0x80) +#define SCHAR_MAX 127 + +#define UCHAR_MAX 255 + +#define CHAR_MIN 0 +#define CHAR_MAX 255 + +#define SHRT_MIN ((short) 0x8000) +#define SHRT_MAX 32767 + +#define USHRT_MAX 65535U + +#define INT_MIN ((int) 0x8000) +#define INT_MAX 32767 + +#define UINT_MAX 65535U + +#define LONG_MAX 2147483647L +#define LONG_MIN ((long) 0x80000000) + +#define ULONG_MAX 4294967295UL + + + +/* End of limits.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* plus4.h */ +/* */ +/* Plus/4 system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-2006, Ullrich von Bassewitz */ +/* Römerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _PLUS4_H +#define _PLUS4_H + + + +/* Check for errors */ +#if !defined(__PLUS4__) +# error This module may only be used when compiling for the Plus/4! +#endif + + + +/* Include the base header file for the 264 series. include file. + */ +#ifndef _CBM264_H +#include +#endif + +/* Define hardware */ +#include <_6551.h> +#define ACIA (*(struct __6551*)0xFD00) + + + +/* The addresses of the static drivers */ +extern void plus4_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ +extern void plus4_stdser_ser[]; + + + +/* End of plus4.h */ +#endif +/*****************************************************************************/ +/* */ +/* serial.h */ +/* */ +/* Serial communication API */ +/* */ +/* */ +/* */ +/* (C) 2003-2012, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _SERIAL_H +#define _SERIAL_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Baudrate settings */ +#define SER_BAUD_45_5 0x00 +#define SER_BAUD_50 0x01 +#define SER_BAUD_75 0x02 +#define SER_BAUD_110 0x03 +#define SER_BAUD_134_5 0x04 +#define SER_BAUD_150 0x05 +#define SER_BAUD_300 0x06 +#define SER_BAUD_600 0x07 +#define SER_BAUD_1200 0x08 +#define SER_BAUD_1800 0x09 +#define SER_BAUD_2400 0x0A +#define SER_BAUD_3600 0x0B +#define SER_BAUD_4800 0x0C +#define SER_BAUD_7200 0x0D +#define SER_BAUD_9600 0x0E +#define SER_BAUD_19200 0x0F +#define SER_BAUD_38400 0x10 +#define SER_BAUD_57600 0x11 +#define SER_BAUD_115200 0x12 +#define SER_BAUD_230400 0x13 +#define SER_BAUD_31250 0x14 +#define SER_BAUD_62500 0x15 +#define SER_BAUD_56_875 0x16 + +/* Data bit settings */ +#define SER_BITS_5 0x00 +#define SER_BITS_6 0x01 +#define SER_BITS_7 0x02 +#define SER_BITS_8 0x03 + +/* Stop bit settings */ +#define SER_STOP_1 0x00 /* One stop bit */ +#define SER_STOP_2 0x01 /* Two stop bits */ + +/* Parity settings */ +#define SER_PAR_NONE 0x00 +#define SER_PAR_ODD 0x01 +#define SER_PAR_EVEN 0x02 +#define SER_PAR_MARK 0x03 +#define SER_PAR_SPACE 0x04 + +/* Handshake settings. The latter two may be combined. */ +#define SER_HS_NONE 0x00 /* No handshake */ +#define SER_HS_HW 0x01 /* Hardware (RTS/CTS) handshake */ +#define SER_HS_SW 0x02 /* Software handshake */ + +/* Bit masks to mask out things from the status returned by ser_status. +** These are 6551 specific and must be mapped by drivers for other chips. +*/ +#define SER_STATUS_PE 0x01 /* Parity error */ +#define SER_STATUS_FE 0x02 /* Framing error */ +#define SER_STATUS_OE 0x04 /* Overrun error */ +#define SER_STATUS_DCD 0x20 /* NOT data carrier detect */ +#define SER_STATUS_DSR 0x40 /* NOT data set ready */ + +/* Error codes returned by all functions */ +#define SER_ERR_OK 0x00 /* Not an error - relax */ +#define SER_ERR_NO_DRIVER 0x01 /* No driver available */ +#define SER_ERR_CANNOT_LOAD 0x02 /* Error loading driver */ +#define SER_ERR_INV_DRIVER 0x03 /* Invalid driver */ +#define SER_ERR_NO_DEVICE 0x04 /* Device (hardware) not found */ +#define SER_ERR_BAUD_UNAVAIL 0x05 /* Baud rate not available */ +#define SER_ERR_NO_DATA 0x06 /* Nothing to read */ +#define SER_ERR_OVERFLOW 0x07 /* No room in send buffer */ +#define SER_ERR_INIT_FAILED 0x08 /* Initialization failed */ +#define SER_ERR_INV_IOCTL 0x09 /* IOCTL not supported */ +#define SER_ERR_INSTALLED 0x0A /* A driver is already installed */ +#define SER_ERR_NOT_OPEN 0x0B /* Driver is not open */ + +/* Struct containing parameters for the serial port */ +struct ser_params { + unsigned char baudrate; /* Baudrate */ + unsigned char databits; /* Number of data bits */ + unsigned char stopbits; /* Number of stop bits */ + unsigned char parity; /* Parity setting */ + unsigned char handshake; /* Type of handshake to use */ +}; + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +unsigned char __fastcall__ ser_load_driver (const char* driver); +/* Load and install a serial driver. Return an error code. */ + +unsigned char ser_unload (void); +/* Uninstall, then unload the currently loaded driver. */ + +unsigned char __fastcall__ ser_install (void* driver); +/* Install an already loaded driver. Return an error code. */ + +unsigned char ser_uninstall (void); +/* Uninstall the currently loaded driver and return an error code. +** Note: This call does not free allocated memory. +*/ + +unsigned char __fastcall__ ser_open (const struct ser_params* params); +/* "Open" the port by setting the port parameters and enable interrupts. */ + +unsigned char ser_close (void); +/* "Close" the port. Clear buffers and and disable interrupts. */ + +unsigned char __fastcall__ ser_get (char* b); +/* Get a character from the serial port. If no characters are available, the +** function will return SER_ERR_NO_DATA, so this is not a fatal error. +*/ + +unsigned char __fastcall__ ser_put (char b); +/* Send a character via the serial port. There is a transmit buffer, but +** transmitting is not done via interrupt. The function returns +** SER_ERR_OVERFLOW if there is no space left in the transmit buffer. +*/ + +unsigned char __fastcall__ ser_status (unsigned char* status); +/* Return the serial port status. */ + +unsigned char __fastcall__ ser_ioctl (unsigned char code, void* data); +/* Driver specific entry. */ + + + +/* End of serial.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* _pbi.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 2000 Freddy Offenga */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +#ifndef __PBI_H +#define __PBI_H + +/* parallel bus interface area */ +#define PBI ((unsigned char*)0xD100) + +/* parallel device IRQ status */ +#define PDVI ((unsigned char*)0xD1FF) + +/* parallel device select */ +#define PDVS ((unsigned char*)0xD1FF) + +/* parallel bus interface RAM area */ +#define PBIRAM ((unsigned char*)0xD600) + +/* parallel device ID 1 */ +#define PDID1 ((unsigned char*)0xD803) + +/* parallel device I/O vector */ +#define PDIDV ((unsigned char*)0xD805) + +/* parallel device IRQ vector */ +#define PDIRQV ((unsigned char*)0xD808) + +/* parallel device ID 2 */ +#define PDID2 ((unsigned char*)0xD80B) + +/* parallel device vector table */ +#define PDVV ((unsigned char*)0xD80D) + +/* End of _pbi.h */ +#endif /* #ifndef __PBI_H */ + +/*****************************************************************************/ +/* */ +/* _6526.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 1998-2000 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __6526_H +#define __6526_H + + + +/* Define a structure with the 6526 register offsets. +** NOTE: The timer registers are not declared as 16 bit registers, because +** the order in which the two 8 bit halves are written is important, and +** the compiler doesn't guarantee any order when writing 16 bit values. +*/ +struct __6526 { + unsigned char pra; /* Port register A */ + unsigned char prb; /* Port register B */ + unsigned char ddra; /* Data direction register A */ + unsigned char ddrb; /* Data direction register B */ + unsigned char ta_lo; /* Timer A, low byte */ + unsigned char ta_hi; /* Timer A, high byte */ + unsigned char tb_lo; /* Timer B, low byte */ + unsigned char tb_hi; /* Timer B, high byte */ + unsigned char tod_10; /* TOD, 1/10 sec. */ + unsigned char tod_sec; /* TOD, seconds */ + unsigned char tod_min; /* TOD, minutes */ + unsigned char tod_hour; /* TOD, hours */ + unsigned char sdr; /* Serial data register */ + unsigned char icr; /* Interrupt control register */ + unsigned char cra; /* Control register A */ + unsigned char crb; /* Control register B */ +}; + + + +/* End of _6526.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* apple2enh.h */ +/* */ +/* enhanced Apple //e system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2004 Oliver Schmidt, */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _APPLE2ENH_H +#define _APPLE2ENH_H + + + +/* Check for errors */ +#if !defined(__APPLE2ENH__) +# error This module may only be used when compiling for the enhanced Apple //e! +#endif + + + +/* If not already done, include the apple2.h header file */ +#if !defined(_APPLE2_H) +# include +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Characters codes */ +#define CH_DEL 0x7F +#define CH_CURS_UP 0x0B +#define CH_CURS_DOWN 0x0A + +/* These are defined to be OpenApple + NumberKey */ +#define CH_F1 0xB1 +#define CH_F2 0xB2 +#define CH_F3 0xB3 +#define CH_F4 0xB4 +#define CH_F5 0xB5 +#define CH_F6 0xB6 +#define CH_F7 0xB7 +#define CH_F8 0xB8 +#define CH_F9 0xB9 +#define CH_F10 0xB0 + +/* Styles for textframe */ +#define TEXTFRAME_WIDE 0x00 +#define TEXTFRAME_TALL 0x04 + +/* Video modes */ +#define VIDEOMODE_40x24 0x0011 +#define VIDEOMODE_80x24 0x0012 +#define VIDEOMODE_40COL VIDEOMODE_40x24 +#define VIDEOMODE_80COL VIDEOMODE_80x24 + + + +/*****************************************************************************/ +/* Variables */ +/*****************************************************************************/ + + + +/* The addresses of the static drivers */ +extern void a2e_auxmem_emd[]; +extern void a2e_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ +extern void a2e_stdmou_mou[]; /* Referred to by mouse_static_stddrv[] */ +extern void a2e_ssc_ser[]; +extern void a2e_hi_tgi[]; /* Referred to by tgi_static_stddrv[] */ +extern void a2e_lo_tgi[]; + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +void __fastcall__ textframe (unsigned char width, unsigned char height, + unsigned char style); +/* Output a frame on the text screen with the given width and height +** starting at the current cursor position and using the given style. +*/ + +void __fastcall__ textframexy (unsigned char x, unsigned char y, + unsigned char width, unsigned char height, + unsigned char style); +/* Same as "gotoxy (x, y); textframe (width, height, style);" */ + +unsigned __fastcall__ videomode (unsigned mode); +/* Set the video mode, return the old mode. Call with one of the VIDEOMODE_xx +** constants. +*/ + + + +/* End of apple2enh.h */ +#endif +/*****************************************************************************/ +/* */ +/* fcntl.h */ +/* */ +/* File control operations */ +/* */ +/* */ +/* */ +/* (C) 1998-2004 Ullrich von Bassewitz */ +/* Römerstraße 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _FCNTL_H +#define _FCNTL_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Flag values for the open() call */ +#define O_RDONLY 0x01 +#define O_WRONLY 0x02 +#define O_RDWR 0x03 +#define O_CREAT 0x10 +#define O_TRUNC 0x20 +#define O_APPEND 0x40 +#define O_EXCL 0x80 + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +/* Functions */ +int open (const char* name, int flags, ...); /* May take a mode argument */ +int __fastcall__ close (int fd); +int __fastcall__ creat (const char* name, unsigned mode); + + + +/* End of fcntl.h */ +#endif + + + +/* +** _heap.h +** +** Ullrich von Bassewitz, 1998-06-03, 2004-12-19 +** +*/ + + + +#ifndef __HEAP_H +#define __HEAP_H + + + +/* Structure that preceeds a user block in most cases. +** The aligned_malloc function may generate blocks where the start pointer +** and size are splitted to handle a memory hole that is needed for +** alignment. +*/ +struct usedblock { + unsigned size; + struct usedblock* start; +}; + +/* Space needed for administering used blocks */ +#define HEAP_ADMIN_SPACE sizeof (struct usedblock) + +/* The data type used to implement the free list. +** Beware: Field order is significant! +*/ +struct freeblock { + unsigned size; + struct freeblock* next; + struct freeblock* prev; +}; + + + +/* Variables that describe the heap */ +extern unsigned* _heaporg; /* Bottom of heap */ +extern unsigned* _heapptr; /* Current top */ +extern unsigned* _heapend; /* Upper limit */ +extern struct freeblock* _heapfirst; /* First free block in list */ +extern struct freeblock* _heaplast; /* Last free block in list */ + + + +/* End of _heap.h */ + +#endif + + + +/*****************************************************************************/ +/* */ +/* stdio.h */ +/* */ +/* Input/output */ +/* */ +/* */ +/* */ +/* (C) 1998-2011, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _STDIO_H +#define _STDIO_H + + + +#ifndef _STDDEF_H +# include +#endif +#ifndef _STDARG_H +# include +#endif + + + +/* Types */ +typedef struct _FILE FILE; +typedef unsigned long fpos_t; + +/* Standard file descriptors */ +extern FILE* stdin; +extern FILE* stdout; +extern FILE* stderr; + +/* Standard defines */ +#define _IOFBF 0 +#define _IOLBF 1 +#define _IONBF 2 +#define BUFSIZ 256 +#define EOF -1 +#define FOPEN_MAX 8 +#define SEEK_CUR 0 +#define SEEK_END 1 +#define SEEK_SET 2 +#define TMP_MAX 256 + +/* Standard defines that are platform dependent */ +#if defined(__APPLE2__) +# define FILENAME_MAX (64+1) +#elif defined(__ATARI__) +# define FILENAME_MAX (12+1) +#elif defined(__LUNIX__) +# define FILENAME_MAX (80+1) +#else +# define FILENAME_MAX (16+1) +#endif +#define L_tmpnam FILENAME_MAX + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +/* Functions */ +void __fastcall__ clearerr (FILE* f); +int __fastcall__ fclose (FILE* f); +int __fastcall__ feof (FILE* f); +int __fastcall__ ferror (FILE* f); +int __fastcall__ fflush (FILE* f); +int __fastcall__ fgetc (FILE* f); +char* __fastcall__ fgets (char* buf, size_t size, FILE* f); +FILE* __fastcall__ fopen (const char* name, const char* mode); +int fprintf (FILE* f, const char* format, ...); +int __fastcall__ fputc (int c, FILE* f); +int __fastcall__ fputs (const char* s, FILE* f); +size_t __fastcall__ fread (void* buf, size_t size, size_t count, FILE* f); +FILE* __fastcall__ freopen (const char* name, const char* mode, FILE* f); +size_t __fastcall__ fwrite (const void* buf, size_t size, size_t count, FILE* f); +int __fastcall__ fgetpos (FILE* f, fpos_t *pos); +int __fastcall__ fsetpos (FILE* f, const fpos_t* pos); +long __fastcall__ ftell (FILE* f); +int __fastcall__ fseek (FILE* f, long offset, int whence); +void __fastcall__ rewind (FILE *f); +int getchar (void); +char* __fastcall__ gets (char* s); +void __fastcall__ perror (const char* s); +int printf (const char* format, ...); +int __fastcall__ putchar (int c); +int __fastcall__ puts (const char* s); +int __fastcall__ remove (const char* name); +int __fastcall__ rename (const char* oldname, const char* newname); +int snprintf (char* buf, size_t size, const char* format, ...); +int sprintf (char* buf, const char* format, ...); +int __fastcall__ ungetc (int c, FILE* f); +int __fastcall__ vfprintf (FILE* f, const char* format, va_list ap); +int __fastcall__ vprintf (const char* format, va_list ap); +int __fastcall__ vsnprintf (char* buf, size_t size, const char* format, va_list ap); +int __fastcall__ vsprintf (char* buf, const char* format, va_list ap); + +int scanf (const char* format, ...); +int fscanf (FILE* f, const char* format, ...); +int sscanf (const char* s, const char* format, ...); +int __fastcall__ vscanf (const char* format, va_list ap); +int __fastcall__ vsscanf (const char* s, const char* format, va_list ap); +int __fastcall__ vfscanf (FILE* f, const char* format, va_list ap); + +#if __CC65_STD__ == __CC65_STD_CC65__ +FILE* __fastcall__ fdopen (int fd, const char* mode); /* Unix */ +int __fastcall__ fileno (FILE* f); /* Unix */ +#endif +void __fastcall__ _poserror (const char* msg); /* cc65 */ + +/* Masking macros for some functions */ +#define getc(f) fgetc (f) /* ANSI */ +#define putc(c, f) fputc (c, f) /* ANSI */ + + + +/* End of stdio.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* iso646.h */ +/* */ +/* Alternative spellings */ +/* */ +/* */ +/* */ +/* (C) 1998-2000 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ISO646_H +#define _ISO646_H + + + +/* Operator tokens */ +#define and && +#define and_eq &= +#define bitand & +#define bitor | +#define compl ~ +#define not ! +#define not_eq != +#define or || +#define or_eq |= +#define xor ^ +#define xor_eq ^= + + + +/* End of iso646.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* _6551.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 1998-2000 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __6551_H +#define __6551_H + + + +/* Define a structure with the 6551 register offsets */ +struct __6551 { + unsigned char data; /* Data register */ + unsigned char status; /* Status register */ + unsigned char cmd; /* Command register */ + unsigned char ctrl; /* Control register */ +}; + + + +/* End of _6551.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* c128.h */ +/* */ +/* C128 system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-2013, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _C128_H +#define _C128_H + + + +/* Check for errors */ +#if !defined(__C128__) +# error This module may only be used when compiling for the C128! +#endif + + + +/* Additional key defines */ +#define CH_F1 133 +#define CH_F2 137 +#define CH_F3 134 +#define CH_F4 138 +#define CH_F5 135 +#define CH_F6 139 +#define CH_F7 136 +#define CH_F8 140 + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 +#define COLOR_RED 0x02 +#define COLOR_CYAN 0x03 +#define COLOR_VIOLET 0x04 +#define COLOR_GREEN 0x05 +#define COLOR_BLUE 0x06 +#define COLOR_YELLOW 0x07 +#define COLOR_ORANGE 0x08 +#define COLOR_BROWN 0x09 +#define COLOR_LIGHTRED 0x0A +#define COLOR_GRAY1 0x0B +#define COLOR_GRAY2 0x0C +#define COLOR_LIGHTGREEN 0x0D +#define COLOR_LIGHTBLUE 0x0E +#define COLOR_GRAY3 0x0F + +/* TGI color defines */ +#define TGI_COLOR_BLACK COLOR_BLACK +#define TGI_COLOR_WHITE COLOR_WHITE +#define TGI_COLOR_RED COLOR_RED +#define TGI_COLOR_CYAN COLOR_CYAN +#define TGI_COLOR_VIOLET COLOR_VIOLET +#define TGI_COLOR_GREEN COLOR_GREEN +#define TGI_COLOR_BLUE COLOR_BLUE +#define TGI_COLOR_YELLOW COLOR_YELLOW +#define TGI_COLOR_ORANGE COLOR_ORANGE +#define TGI_COLOR_BROWN COLOR_BROWN +#define TGI_COLOR_LIGHTRED COLOR_LIGHTRED +#define TGI_COLOR_GRAY1 COLOR_GRAY1 +#define TGI_COLOR_GRAY2 COLOR_GRAY2 +#define TGI_COLOR_LIGHTGREEN COLOR_LIGHTGREEN +#define TGI_COLOR_LIGHTBLUE COLOR_LIGHTBLUE +#define TGI_COLOR_GRAY3 COLOR_GRAY3 + +/* Video mode defines */ +#define VIDEOMODE_40x25 0x00 +#define VIDEOMODE_80x25 0x80 +#define VIDEOMODE_40COL VIDEOMODE_40x25 +#define VIDEOMODE_80COL VIDEOMODE_80x25 + + + +/* Define hardware */ +#include <_vic2.h> +#define VIC (*(struct __vic2*)0xD000) + +#include <_sid.h> +#define SID (*(struct __sid*)0xD400) + +#include <_vdc.h> +#define VDC (*(struct __vdc*)0xD600) + +#include <_6526.h> +#define CIA1 (*(struct __6526*)0xDC00) +#define CIA2 (*(struct __6526*)0xDD00) + + + +/* Define special memory areas */ +#define COLOR_RAM ((unsigned char*)0xD800) + + + +/* The addresses of the static drivers */ +extern void c128_georam_emd[]; +extern void c128_ram_emd[]; +extern void c128_ram2_emd[]; +extern void c128_ramcart_emd[]; +extern void c128_reu_emd[]; +extern void c128_vdc_emd[]; +extern void c128_ptvjoy_joy[]; +extern void c128_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ +extern void c128_1351_mou[]; /* Referred to by mouse_static_stddrv[] */ +extern void c128_joy_mou[]; +extern void c128_inkwell_mou[]; +extern void c128_pot_mou[]; +extern void c128_swlink_ser[]; +extern void c128_vdc_tgi[]; /* Referred to by tgi_static_stddrv[] */ +extern void c128_vdc2_tgi[]; + + + +unsigned __fastcall__ videomode (unsigned Mode); +/* Set the video mode, return the old mode. Call with one of the VIDEOMODE_xx +** constants. +*/ + +void toggle_videomode (void); +/* Toggle the video mode between 40 and 80 chars (calls SWAPPER). +** THIS FUNCTION IS DEPRECATED, please use videomode instead! +*/ + +void c64mode (void); +/* Switch the C128 into C64 mode. Note: This function will not return! */ + +void fast (void); +/* Switch the CPU into 2MHz mode. Note: This will disable video when in +** 40 column mode. +*/ + +void slow (void); +/* Switch the CPU into 1MHz mode. */ + + + +/* End of c128.h */ +#endif +/*****************************************************************************/ +/* */ +/* conio.h */ +/* */ +/* Direct console I/O */ +/* */ +/* */ +/* */ +/* (C) 1998-2007 Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +/* +** This is the direct console interface for cc65. I do not like the function +** names very much, but the first version started as a rewrite of Borland's +** conio, and, even if the interface has changed, the names did not. +** +** The interface does direct screen I/O, so it is fast enough for most +** programs. I did not implement text windows, since many applications do +** not need them and should not pay for the additional overhead. It should +** be easy to add text windows on a higher level if needed, +** +** Most routines do not check the parameters. This may be unfortunate but is +** also related to speed. The coordinates are always 0/0 based. +*/ + + + +#ifndef _CONIO_H +#define _CONIO_H + + + +#if !defined(_STDARG_H) +# include +#endif + +/* Include the correct machine-specific file */ +#if defined(__APPLE2ENH__) +# include +#elif defined(__APPLE2__) +# include +#elif defined(__ATARI__) +# include +#elif defined(__ATMOS__) +# include +#elif defined(__CBM__) +# include +#elif defined(__GAMATE__) +# include +#elif defined(__GEOS__) +# include +#elif defined(__LUNIX__) +# include +#elif defined(__LYNX__) +# include +#elif defined(__NES__) +# include +#elif defined(__OSIC1P__) +# include +#elif defined(__PCE__) +# include +#endif + + + +/*****************************************************************************/ +/* Functions */ +/*****************************************************************************/ + + + +void clrscr (void); +/* Clear the whole screen and put the cursor into the top left corner */ + +unsigned char kbhit (void); +/* Return true if there's a key waiting, return false if not */ + +void __fastcall__ gotox (unsigned char x); +/* Set the cursor to the specified X position, leave the Y position untouched */ + +void __fastcall__ gotoy (unsigned char y); +/* Set the cursor to the specified Y position, leave the X position untouched */ + +void __fastcall__ gotoxy (unsigned char x, unsigned char y); +/* Set the cursor to the specified position */ + +unsigned char wherex (void); +/* Return the X position of the cursor */ + +unsigned char wherey (void); +/* Return the Y position of the cursor */ + +void __fastcall__ cputc (char c); +/* Output one character at the current cursor position */ + +void __fastcall__ cputcxy (unsigned char x, unsigned char y, char c); +/* Same as "gotoxy (x, y); cputc (c);" */ + +void __fastcall__ cputs (const char* s); +/* Output a NUL-terminated string at the current cursor position */ + +void __fastcall__ cputsxy (unsigned char x, unsigned char y, const char* s); +/* Same as "gotoxy (x, y); puts (s);" */ + +int cprintf (const char* format, ...); +/* Like printf(), but uses direct screen output */ + +int __fastcall__ vcprintf (const char* format, va_list ap); +/* Like vprintf(), but uses direct screen output */ + +char cgetc (void); +/* Return a character from the keyboard. If there is no character available, +** the function waits until the user does press a key. If cursor is set to +** 1 (see below), a blinking cursor is displayed while waiting. +*/ + +int cscanf (const char* format, ...); +/* Like scanf(), but uses direct keyboard input */ + +int __fastcall__ vcscanf (const char* format, va_list ap); +/* Like vscanf(), but uses direct keyboard input */ + +unsigned char __fastcall__ cursor (unsigned char onoff); +/* If onoff is 1, a cursor is displayed when waiting for keyboard input. If +** onoff is 0, the cursor is hidden when waiting for keyboard input. The +** function returns the old cursor setting. +*/ + +unsigned char __fastcall__ revers (unsigned char onoff); +/* Enable/disable reverse character display. This may not be supported by +** the output device. Return the old setting. +*/ + +unsigned char __fastcall__ textcolor (unsigned char color); +/* Set the color for text output. The old color setting is returned. */ + +unsigned char __fastcall__ bgcolor (unsigned char color); +/* Set the color for the background. The old color setting is returned. */ + +unsigned char __fastcall__ bordercolor (unsigned char color); +/* Set the color for the border. The old color setting is returned. */ + +void __fastcall__ chline (unsigned char length); +/* Output a horizontal line with the given length starting at the current +** cursor position. +*/ + +void __fastcall__ chlinexy (unsigned char x, unsigned char y, unsigned char length); +/* Same as "gotoxy (x, y); chline (length);" */ + +void __fastcall__ cvline (unsigned char length); +/* Output a vertical line with the given length at the current cursor +** position. +*/ + +void __fastcall__ cvlinexy (unsigned char x, unsigned char y, unsigned char length); +/* Same as "gotoxy (x, y); cvline (length);" */ + +void __fastcall__ cclear (unsigned char length); +/* Clear part of a line (write length spaces). */ + +void __fastcall__ cclearxy (unsigned char x, unsigned char y, unsigned char length); +/* Same as "gotoxy (x, y); cclear (length);" */ + +void __fastcall__ screensize (unsigned char* x, unsigned char* y); +/* Return the current screen size. */ + +void __fastcall__ cputhex8 (unsigned char val); +void __fastcall__ cputhex16 (unsigned val); +/* These shouldn't be here... */ + + + +/*****************************************************************************/ +/* Macros */ +/*****************************************************************************/ + + + +/* On some platforms, functions are not available or are dummys. To suppress +** the call to these functions completely, the platform header files may +** define macros for these functions that start with an underline. If such a +** macro exists, a new macro is defined here, that expands to the one with the +** underline. The reason for this two stepped approach is that it is sometimes +** necessary to take the address of the function, which is not possible when +** using a macro. Since the function prototype is still present, #undefining +** the macro will give access to the actual function. +*/ + +#if defined(_textcolor) +# define textcolor(x) _textcolor(x) +#endif +#if defined(_bgcolor) +# define bgcolor(x) _bgcolor(x) +#endif +#if defined(_bordercolor) +# define bordercolor(x) _bordercolor(x) +#endif + + + +/* End of conio.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* 6502.h */ +/* */ +/* 6502 specific declarations */ +/* */ +/* */ +/* */ +/* (C) 1998-2012, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _6502_H +#define _6502_H + + + +/* We need size_t */ +#ifndef _HAVE_size_t +#define _HAVE_size_t +typedef unsigned size_t; +#endif + + + +/* Possible returns of getcpu() */ +#define CPU_6502 0 +#define CPU_65C02 1 +#define CPU_65816 2 +#define CPU_4510 3 + +unsigned char getcpu (void); +/* Detect the CPU the program is running on */ + + + +/* Macros for CPU instructions */ +#define BRK() __asm__ ("brk") +#define CLI() __asm__ ("cli") +#define SEI() __asm__ ("sei") + + + +/* Struct that holds the registers for the sys function */ +struct regs { + unsigned char a; /* A register value */ + unsigned char x; /* X register value */ + unsigned char y; /* Y register value */ + unsigned char flags; /* Flags value */ + unsigned pc; /* Program counter */ +}; + +/* Defines for the flags in the regs structure */ +#define F6502_N 0x80 /* N flag */ +#define F6502_V 0x40 /* V flag */ +#define F6502_B 0x10 /* B flag */ +#define F6502_D 0x08 /* D flag */ +#define F6502_I 0x04 /* I flag */ +#define F6502_Z 0x02 /* Z flag */ +#define F6502_C 0x01 /* C flag */ + +/* Function to call any machine language subroutine. All registers in the +** regs structure are passed into the routine and the results are passed +** out. The B flag is ignored on input. The called routine must end with +** an RTS. +*/ +void __fastcall__ _sys (struct regs* r); + + + +/* Set and reset the break vector. The given user function is called if +** a break occurs. The values of the registers may be read from the brk_... +** variables. The value in brk_pc will point to the address that contains +** the brk instruction. +** The set_brk function will install an exit handler that will reset the +** vector if the program ends. +*/ + +extern unsigned char brk_a; /* A register value */ +extern unsigned char brk_x; /* X register value */ +extern unsigned char brk_y; /* Y register value */ +extern unsigned char brk_sr; /* Status register */ +extern unsigned brk_pc; /* PC value */ + +typedef void (*brk_handler) (void); +/* Type of the break handler */ + +void __fastcall__ set_brk (brk_handler f); +/* Set the break vector to the given address */ + +void reset_brk (void); +/* Reset the break vector to the original value */ + + + +/* Possible returns for irq_handler() */ +#define IRQ_NOT_HANDLED 0 +#define IRQ_HANDLED 1 + +typedef unsigned char (*irq_handler) (void); +/* Type of the C level interrupt request handler */ + +void __fastcall__ set_irq (irq_handler f, void *stack_addr, size_t stack_size); +/* Set the C level interrupt request vector to the given address */ + +void reset_irq (void); +/* Reset the C level interrupt request vector */ + + + +/* End of 6502.h */ +#endif +/*****************************************************************************/ +/* */ +/* mouse.h */ +/* */ +/* Mouse API */ +/* */ +/* */ +/* */ +/* (C) 2003-2013, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _MOUSE_H +#define _MOUSE_H + + + +/*****************************************************************************/ +/* Definitions */ +/*****************************************************************************/ + + + +/* Error codes */ +#define MOUSE_ERR_OK 0 /* No error */ +#define MOUSE_ERR_NO_DRIVER 1 /* No driver available */ +#define MOUSE_ERR_CANNOT_LOAD 2 /* Error loading driver */ +#define MOUSE_ERR_INV_DRIVER 3 /* Invalid driver */ +#define MOUSE_ERR_NO_DEVICE 4 /* Mouse hardware not found */ +#define MOUSE_ERR_INV_IOCTL 5 /* Invalid ioctl code */ + +/* Mouse button masks */ +#define MOUSE_BTN_LEFT 0x10 +#define MOUSE_BTN_RIGHT 0x01 + +/* Structure containing the mouse coordinates */ +struct mouse_pos { + int x; + int y; +}; + +/* Structure containing information about the mouse */ +struct mouse_info { + struct mouse_pos pos; /* Mouse position */ + unsigned char buttons; /* Mouse button mask */ +}; + +/* Structure used for getbox/setbox */ +struct mouse_box { + int minx; + int miny; + int maxx; + int maxy; +}; + +/* Structure containing mouse callback functions. These functions are declared +** in C notation here, but they cannot be C functions (at least not easily), +** since they may be called from within an interrupt. +*/ +struct mouse_callbacks { + + void (*hide) (void); + /* Hide the mouse cursor. */ + + void (*show) (void); + /* Show the mouse cursor. */ + + void (*prep) (void); + /* Prepare to move the mouse cursor. This function is called, + ** even when the cursor is currently invisible. + */ + + void (*draw) (void); + /* Draw the mouse cursor. This function is called, + ** even when the cursor is currently invisible. + */ + + void __fastcall__ (*movex) (int x); + /* Move the mouse cursor to the new X coordinate. This function is called, + ** even when the cursor is currently invisible. + */ + + void __fastcall__ (*movey) (int y); + /* Move the mouse cursor to the new Y coordinate. This function is called, + ** even when the cursor is currently invisible. + */ +}; + + + +/*****************************************************************************/ +/* Declarations */ +/*****************************************************************************/ + + + +/* The default mouse callbacks */ +extern const struct mouse_callbacks mouse_def_callbacks; + +#if defined(__CBM__) + +/* The default mouse pointer shape used by the default mouse callbacks */ +extern const unsigned char mouse_def_pointershape[63]; + +/* The default mouse pointer color used by the default mouse callbacks */ +extern const unsigned char mouse_def_pointercolor; + +#endif + +/* The name of the standard mouse driver for a platform */ +extern const char mouse_stddrv[]; + +/* The address of the static standard mouse driver for a platform */ +extern const void mouse_static_stddrv[]; + + + +/*****************************************************************************/ +/* Functions */ +/*****************************************************************************/ + + + +unsigned char __fastcall__ mouse_load_driver (const struct mouse_callbacks* c, + const char* driver); +/* Load and install a mouse driver, return an error code. */ + +unsigned char mouse_unload (void); +/* Uninstall, then unload the currently loaded driver. */ + +unsigned char __fastcall__ mouse_install (const struct mouse_callbacks* c, + void* driver); +/* Install an already loaded driver. Return an error code. */ + +unsigned char mouse_uninstall (void); +/* Uninstall the currently loaded driver. Return an error code. */ + +const char* __fastcall__ mouse_geterrormsg (unsigned char code); +/* Get an error message describing the error in code. */ + +void mouse_hide (void); +/* Hide the mouse. The function manages a counter and may be called more than +** once. For each call to mouse_hide there must be a call to mouse_show to make +** the mouse visible again. +*/ + +void mouse_show (void); +/* Show the mouse. See mouse_hide() for more information. */ + +void __fastcall__ mouse_setbox (const struct mouse_box* box); +/* Set the bounding box for the mouse pointer movement. The mouse X and Y +** coordinates will never go outside the given box. +** NOTE: The function does *not* check if the mouse is currently inside the +** given margins. The proper way to use this function therefore is: +** +** - Hide the mouse +** - Set the bounding box +** - Place the mouse at the desired position +** - Show the mouse again. +** +** NOTE2: When setting the box to something that is larger than the actual +** screen, the positioning of the mouse cursor can fail. If such margins +** are really what you want, you have to use your own cursor routines. +*/ + +void __fastcall__ mouse_getbox (struct mouse_box* box); +/* Get the current bounding box for the mouse pointer movement. */ + +void __fastcall__ mouse_move (int x, int y); +/* Set the mouse cursor to the given position. If a mouse cursor is defined +** and currently visible, the mouse cursor is also moved. +** NOTE: This function does not check if the given position is valid and +** inside the bounding box. +*/ + +unsigned char mouse_buttons (void); +/* Return a bit mask encoding the states of the mouse buttons. Use the +** MOUSE_BTN_XXX flags to decode a specific button. +*/ + +void __fastcall__ mouse_pos (struct mouse_pos* pos); +/* Return the current mouse position. */ + +void __fastcall__ mouse_info (struct mouse_info* info); +/* Return the state of the mouse buttons and the position of the mouse. */ + +unsigned char __fastcall__ mouse_ioctl (unsigned char code, void* data); +/* Call the driver-specific ioctl function. Return an error code. +** NON-PORTABLE! +*/ + + + +/* End of mouse.h */ +#endif +/*****************************************************************************/ +/* */ +/* lynx.h */ +/* */ +/* Lynx system-specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2003 Shawn Jefferson */ +/* */ +/* Adapted with many changes Ullrich von Bassewitz, 2004-10-09 */ +/* */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _LYNX_H +#define _LYNX_H + + + +/* Check for errors */ +#if !defined(__LYNX__) +# error This module may only be used when compiling for the Lynx game console! +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_RED 0x01 +#define COLOR_PINK 0x02 +#define COLOR_LIGHTGREY 0x03 +#define COLOR_GREY 0x04 +#define COLOR_DARKGREY 0x05 +#define COLOR_BROWN 0x06 +#define COLOR_PEACH 0x07 +#define COLOR_YELLOW 0x08 +#define COLOR_LIGHTGREEN 0x09 +#define COLOR_GREEN 0x0A +#define COLOR_DARKBROWN 0x0B +#define COLOR_VIOLET 0x0C +#define COLOR_BLUE 0x0D +#define COLOR_LIGHTBLUE 0x0E +#define COLOR_WHITE 0x0F + +/* TGI color defines (default palette) */ +#define TGI_COLOR_BLACK COLOR_BLACK +#define TGI_COLOR_RED COLOR_RED +#define TGI_COLOR_PINK COLOR_PINK +#define TGI_COLOR_LIGHTGREY COLOR_LIGHTGREY +#define TGI_COLOR_GREY COLOR_GREY +#define TGI_COLOR_DARKGREY COLOR_DARKGREY +#define TGI_COLOR_BROWN COLOR_BROWN +#define TGI_COLOR_PEACH COLOR_PEACH +#define TGI_COLOR_YELLOW COLOR_YELLOW +#define TGI_COLOR_LIGHTGREEN COLOR_LIGHTGREEN +#define TGI_COLOR_GREEN COLOR_GREEN +#define TGI_COLOR_DARKBROWN COLOR_DARKBROWN +#define TGI_COLOR_VIOLET COLOR_VIOLET +#define TGI_COLOR_BLUE COLOR_BLUE +#define TGI_COLOR_LIGHTBLUE COLOR_LIGHTBLUE +#define TGI_COLOR_WHITE COLOR_WHITE + +/* No support for dynamically loadable drivers */ +#define DYN_DRV 0 + + + +/*****************************************************************************/ +/* Variables */ +/*****************************************************************************/ + + + +/* The addresses of the static drivers */ +extern void lynx_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ +extern void lynx_comlynx_ser[]; +extern void lynx_160_102_16_tgi[]; /* Referred to by tgi_static_stddrv[] */ + + + +/*****************************************************************************/ +/* Sound support */ +/*****************************************************************************/ + +void lynx_snd_init (void); +/* Initialize the sound driver */ + +void lynx_snd_pause (void); +/* Pause sound */ + +void lynx_snd_continue (void); +/* Continue sound after pause */ + +void __fastcall__ lynx_snd_play (unsigned char channel, unsigned char *music); +/* Play tune on channel */ + +void lynx_snd_stop (void); +/* Stop sound on all channels */ + +void __fastcall__ lynx_snd_stop_channel (unsigned char channel); +/* Stop sound on all channels */ + +unsigned char lynx_snd_active(void); +/* Show which channels are active */ + +/*****************************************************************************/ +/* Accessing the cart */ +/*****************************************************************************/ + + + +void __fastcall__ lynx_load (int fileno); +/* Load a file into ram. The first entry is fileno=0. */ + +void __fastcall__ lynx_exec (int fileno); +/* Load a file into ram and execute it. */ + + + +/*****************************************************************************/ +/* Accessing the EEPROM */ +/*****************************************************************************/ + + + +unsigned __fastcall__ lynx_eeprom_read (unsigned char cell); +/* Read a 16 bit word from the given address */ + +unsigned __fastcall__ lynx_eeprom_write (unsigned char cell, unsigned val); +/* Write the word at the given address */ + +void __fastcall__ lynx_eeprom_erase (unsigned char cell); +/* Clear the word at the given address */ + +unsigned __fastcall__ lynx_eeread (unsigned cell); +/* Read a 16 bit word from the given address 93C46 93C66 or 93C86*/ + +unsigned __fastcall__ lynx_eewrite (unsigned cell, unsigned val); +/* Write the word at the given address 93C46 93C66 or 93C86*/ + + + +/*****************************************************************************/ +/* TGI extras */ +/*****************************************************************************/ + + + +#define tgi_sprite(spr) tgi_ioctl(0, spr) +#define tgi_flip() tgi_ioctl(1, (void*)0) +#define tgi_setbgcolor(bgcol) tgi_ioctl(2, (void*)(bgcol)) +#define tgi_setframerate(rate) tgi_ioctl(3, (void*)(rate)) +#define tgi_busy() tgi_ioctl(4, (void*)0) +#define tgi_updatedisplay() tgi_ioctl(4, (void*)1) +#define tgi_setcollisiondetection(active) tgi_ioctl(5, (void*)(active)) + +/* Define Hardware */ +#include <_mikey.h> +#define MIKEY (*(struct __mikey *)0xFD00) + +#define _MIKEY_TIMERS (*(struct _mikey_all_timers *) 0xFD00) // mikey_timers[8] +#define _HBL_TIMER (*(struct _mikey_timer *) 0xFD00) // timer0 (HBL) +#define _VBL_TIMER (*(struct _mikey_timer *) 0xFD08) // timer2 (VBL) +#define _UART_TIMER (*(struct _mikey_timer *) 0xFD14) // timer4 (UART) +#define _VIDDMA (*(unsigned int *) 0xFD92) // dispctl/viddma + +#include <_suzy.h> +#define SUZY (*(struct __suzy*)0xFC00) + + +/* End of lynx.h */ +#endif +/*****************************************************************************/ +/* */ +/* atari.h */ +/* */ +/* Atari system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2000-2006 Mark Keates */ +/* Freddy Offenga */ +/* Christian Groessler */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ATARI_H +#define _ATARI_H + + + +/* Check for errors */ +#if !defined(__ATARI__) +# error This module may only be used when compiling for the Atari! +#endif + + + +/* Character codes */ +#define CH_DELCHR 0xFE /* delete char under the cursor */ +#define CH_ENTER 0x9B +#define CH_ESC 0x1B +#define CH_CURS_UP 28 +#define CH_CURS_DOWN 29 +#define CH_CURS_LEFT 30 +#define CH_CURS_RIGHT 31 + +#define CH_TAB 0x7F /* tabulator */ +#define CH_EOL 0x9B /* end-of-line marker */ +#define CH_CLR 0x7D /* clear screen */ +#define CH_BEL 0xFD /* bell */ +#define CH_DEL 0x7E /* back space (delete char to the left) */ +#define CH_RUBOUT 0x7E /* back space (old, deprecated) */ +#define CH_DELLINE 0x9C /* delete line */ +#define CH_INSLINE 0x9D /* insert line */ + +/* These are defined to be Atari + NumberKey */ +#define CH_F1 177 +#define CH_F2 178 +#define CH_F3 179 +#define CH_F4 180 +#define CH_F5 181 +#define CH_F6 182 +#define CH_F7 183 +#define CH_F8 184 +#define CH_F9 185 +#define CH_F10 176 + +#define CH_ULCORNER 0x11 +#define CH_URCORNER 0x05 +#define CH_LLCORNER 0x1A +#define CH_LRCORNER 0x03 +#define CH_TTEE 0x17 +#define CH_BTEE 0x18 +#define CH_LTEE 0x01 +#define CH_RTEE 0x04 +#define CH_CROSS 0x13 +#define CH_HLINE 0x12 +#define CH_VLINE 0x7C + +/* color defines */ + +/* make GTIA color value */ +#define _gtia_mkcolor(hue,lum) (((hue) << 4) | ((lum) << 1)) + +/* luminance values go from 0 (black) to 7 (white) */ + +/* hue values */ +#define HUE_GREY 0 +#define HUE_GOLD 1 +#define HUE_GOLDORANGE 2 +#define HUE_REDORANGE 3 +#define HUE_ORANGE 4 +#define HUE_MAGENTA 5 +#define HUE_PURPLE 6 +#define HUE_BLUE 7 +#define HUE_BLUE2 8 +#define HUE_CYAN 9 +#define HUE_BLUEGREEN 10 +#define HUE_BLUEGREEN2 11 +#define HUE_GREEN 12 +#define HUE_YELLOWGREEN 13 +#define HUE_YELLOW 14 +#define HUE_YELLOWRED 15 + +/* Color defines, similar to c64 colors (untested) */ +/* Note that the conio color implementation is monochrome (bgcolor and textcolor are only placeholders) */ +/* Use the defines with the setcolor() or _atari_xxxcolor() functions */ +#define COLOR_BLACK _gtia_mkcolor(HUE_GREY,0) +#define COLOR_WHITE _gtia_mkcolor(HUE_GREY,7) +#define COLOR_RED _gtia_mkcolor(HUE_REDORANGE,1) +#define COLOR_CYAN _gtia_mkcolor(HUE_CYAN,3) +#define COLOR_VIOLET _gtia_mkcolor(HUE_PURPLE,4) +#define COLOR_GREEN _gtia_mkcolor(HUE_GREEN,2) +#define COLOR_BLUE _gtia_mkcolor(HUE_BLUE,2) +#define COLOR_YELLOW _gtia_mkcolor(HUE_YELLOW,7) +#define COLOR_ORANGE _gtia_mkcolor(HUE_ORANGE,5) +#define COLOR_BROWN _gtia_mkcolor(HUE_YELLOW,2) +#define COLOR_LIGHTRED _gtia_mkcolor(HUE_REDORANGE,6) +#define COLOR_GRAY1 _gtia_mkcolor(HUE_GREY,2) +#define COLOR_GRAY2 _gtia_mkcolor(HUE_GREY,3) +#define COLOR_LIGHTGREEN _gtia_mkcolor(HUE_GREEN,6) +#define COLOR_LIGHTBLUE _gtia_mkcolor(HUE_BLUE,6) +#define COLOR_GRAY3 _gtia_mkcolor(HUE_GREY,5) + +/* TGI color defines */ +#define TGI_COLOR_BLACK COLOR_BLACK +#define TGI_COLOR_WHITE COLOR_WHITE +#define TGI_COLOR_RED COLOR_RED +#define TGI_COLOR_CYAN COLOR_CYAN +#define TGI_COLOR_VIOLET COLOR_VIOLET +#define TGI_COLOR_GREEN COLOR_GREEN +#define TGI_COLOR_BLUE COLOR_BLUE +#define TGI_COLOR_YELLOW COLOR_YELLOW +#define TGI_COLOR_ORANGE COLOR_ORANGE +#define TGI_COLOR_BROWN COLOR_BROWN +#define TGI_COLOR_LIGHTRED COLOR_LIGHTRED +#define TGI_COLOR_GRAY1 COLOR_GRAY1 +#define TGI_COLOR_GRAY2 COLOR_GRAY2 +#define TGI_COLOR_LIGHTGREEN COLOR_LIGHTGREEN +#define TGI_COLOR_LIGHTBLUE COLOR_LIGHTBLUE +#define TGI_COLOR_GRAY3 COLOR_GRAY3 + +/* color register functions */ +extern void __fastcall__ _setcolor (unsigned char color_reg, unsigned char hue, unsigned char luminace); +extern void __fastcall__ _setcolor_low (unsigned char color_reg, unsigned char color_value); +extern unsigned char __fastcall__ _getcolor (unsigned char color_reg); + +/* other screen functions */ +extern int __fastcall__ _graphics (unsigned char mode); /* mode value same as in BASIC */ +extern void __fastcall__ _scroll (signed char numlines); + /* numlines > 0 scrolls up */ + /* numlines < 0 scrolls down */ + +/* misc. functions */ +extern unsigned char get_ostype(void); /* get ROM version */ +extern unsigned char get_tv(void); /* get TV system */ +extern void _save_vecs(void); /* save system vectors */ +extern void _rest_vecs(void); /* restore system vectors */ +extern char *_getdefdev(void); /* get default floppy device */ +extern unsigned char _is_cmdline_dos(void); /* does DOS support command lines */ + +/* global variables */ +extern unsigned char _dos_type; /* the DOS flavour */ +#ifndef __ATARIXL__ +extern void atr130_emd[]; +extern void atrstd_joy[]; /* referred to by joy_static_stddrv[] */ +extern void atrmj8_joy[]; +extern void atrjoy_mou[]; +extern void atrst_mou[]; /* referred to by mouse_static_stddrv[] */ +extern void atrami_mou[]; +extern void atrtrk_mou[]; +extern void atrtt_mou[]; +extern void atrrdev_ser[]; +extern void atr3_tgi[]; +extern void atr4_tgi[]; +extern void atr5_tgi[]; +extern void atr6_tgi[]; +extern void atr7_tgi[]; +extern void atr8_tgi[]; /* referred to by tgi_static_stddrv[] */ +extern void atr8p2_tgi[]; +extern void atr9_tgi[]; +extern void atr9p2_tgi[]; +extern void atr10_tgi[]; +extern void atr10p2_tgi[]; +extern void atr11_tgi[]; +extern void atr14_tgi[]; +extern void atr15_tgi[]; +extern void atr15p2_tgi[]; +#else +extern void atrx130_emd[]; +extern void atrxstd_joy[]; /* referred to by joy_static_stddrv[] */ +extern void atrxmj8_joy[]; +extern void atrxjoy_mou[]; +extern void atrxst_mou[]; /* referred to by mouse_static_stddrv[] */ +extern void atrxami_mou[]; +extern void atrxtrk_mou[]; +extern void atrxtt_mou[]; +extern void atrxrdev_ser[]; +extern void atrx3_tgi[]; +extern void atrx4_tgi[]; +extern void atrx5_tgi[]; +extern void atrx6_tgi[]; +extern void atrx7_tgi[]; +extern void atrx8_tgi[]; /* referred to by tgi_static_stddrv[] */ +extern void atrx8p2_tgi[]; +extern void atrx9_tgi[]; +extern void atrx9p2_tgi[]; +extern void atrx10_tgi[]; +extern void atrx10p2_tgi[]; +extern void atrx11_tgi[]; +extern void atrx14_tgi[]; +extern void atrx15_tgi[]; +extern void atrx15p2_tgi[]; +#endif + +/* provide old names for backwards compatibility */ +#ifdef ATARI_COMPAT_PRE_2_11 +#define setcolor _setcolor +#define setcolor_low _setcolor_low +#define getcolor _getcolor +#define graphics _graphics +#define scroll _scroll +#define save_vecs _save_vecs +#define rest_vecs _rest_vecs +#define getdefdev _getdefdev +#endif /* #ifdef ATARI_COMPAT_PRE_2_11 */ + +/* get_ostype return value defines (for explanation, see ostype.s) */ +/* masks */ +#define AT_OS_TYPE_MAIN 7 +#define AT_OS_TYPE_MINOR (7 << 3) +/* AT_OS_TYPE_MAIN values */ +#define AT_OS_UNKNOWN 0 +#define AT_OS_400800 1 +#define AT_OS_1200XL 2 +#define AT_OS_XLXE 3 +/* AS_OS_TYPE_MINOR values */ +/* for 400/800 remember this are the ROM versions */ +/* to check whether the hw is PAL or NTSC, use get_tv() */ +#define AT_OS_400800PAL_A 1 +#define AT_OS_400800PAL_B 2 +#define AT_OS_400800NTSC_A 1 +#define AT_OS_400800NTSC_B 2 +#define AT_OS_1200_10 1 +#define AT_OS_1200_11 2 +#define AT_OS_XLXE_1 1 +#define AT_OS_XLXE_2 2 +#define AT_OS_XLXE_3 3 +#define AT_OS_XLXE_4 4 + +/* get_tv return values */ +#define AT_NTSC 0 +#define AT_PAL 1 + +/* valid _dos_type values */ +#define SPARTADOS 0 +#define OSADOS 1 +#define XDOS 2 +#define ATARIDOS 3 +#define MYDOS 4 +#define NODOS 255 + +/* Define hardware */ +#include <_gtia.h> +#define GTIA_READ (*(struct __gtia_read*)0xD000) +#define GTIA_WRITE (*(struct __gtia_write*)0xD000) + +#include <_pbi.h> + +#include <_pokey.h> +#define POKEY_READ (*(struct __pokey_read*)0xD200) +#define POKEY_WRITE (*(struct __pokey_write*)0xD200) + +#include <_pia.h> +#define PIA (*(struct __pia*)0xD300) + +#include <_antic.h> +#define ANTIC (*(struct __antic*)0xD400) + +/* device control block */ +struct __dcb { + unsigned char device; /* device id */ + unsigned char unit; /* unit number */ + unsigned char command; /* command */ + unsigned char status; /* command type / status return */ + void *buffer; /* pointer to buffer */ + unsigned char timeout; /* device timeout in seconds */ + unsigned char unused; + unsigned int xfersize; /* # of bytes to transfer */ + unsigned char aux1; /* 1st command auxiliary byte */ + unsigned char aux2; /* 2nd command auxiliary byte */ +}; +#define DCB (*(struct __dcb *)0x300) + +/* I/O control block */ +struct __iocb { + unsigned char handler; /* handler index number (0xff free) */ + unsigned char drive; /* device number (drive) */ + unsigned char command; /* command */ + unsigned char status; /* status of last operation */ + void *buffer; /* pointer to buffer */ + void *put_byte; /* pointer to device's PUT BYTE routine */ + unsigned int buflen; /* length of buffer */ + unsigned char aux1; /* 1st auxiliary byte */ + unsigned char aux2; /* 2nd auxiliary byte */ + unsigned char aux3; /* 3rd auxiliary byte */ + unsigned char aux4; /* 4th auxiliary byte */ + unsigned char aux5; /* 5th auxiliary byte */ + unsigned char spare; /* spare byte */ +}; +#define ZIOCB (*(struct __iocb *)0x20) /* zero page IOCB */ +#define IOCB (*(struct __iocb *)0x340) /* system IOCB buffers */ + +/* IOCB Command Codes */ +#define IOCB_OPEN 0x03 /* open */ +#define IOCB_GETREC 0x05 /* get record */ +#define IOCB_GETCHR 0x07 /* get character(s) */ +#define IOCB_PUTREC 0x09 /* put record */ +#define IOCB_PUTCHR 0x0B /* put character(s) */ +#define IOCB_CLOSE 0x0C /* close */ +#define IOCB_STATIS 0x0D /* status */ +#define IOCB_SPECIL 0x0E /* special */ +#define IOCB_DRAWLN 0x11 /* draw line */ +#define IOCB_FILLIN 0x12 /* draw line with right fill */ +#define IOCB_RENAME 0x20 /* rename disk file */ +#define IOCB_DELETE 0x21 /* delete disk file */ +#define IOCB_LOCKFL 0x23 /* lock file (set to read-only) */ +#define IOCB_UNLOCK 0x24 /* unlock file */ +#define IOCB_POINT 0x25 /* point sector */ +#define IOCB_NOTE 0x26 /* note sector */ +#define IOCB_GETFL 0x27 /* get file length */ +#define IOCB_CHDIR_MYDOS 0x29 /* change directory (MyDOS) */ +#define IOCB_MKDIR 0x2A /* make directory (MyDOS/SpartaDOS) */ +#define IOCB_RMDIR 0x2B /* remove directory (SpartaDOS) */ +#define IOCB_CHDIR_SPDOS 0x2C /* change directory (SpartaDOS) */ +#define IOCB_GETCWD 0x30 /* get current directory (MyDOS/SpartaDOS) */ +#define IOCB_FORMAT 0xFE /* format */ + +/* End of atari.h */ +#endif /* #ifndef _ATARI_H */ +/*****************************************************************************/ +/* */ +/* atari_screen_charmap.h */ +/* */ +/* Atari system internal string mapping (ISO-8859-1 -> Internal/Screen-Code) */ +/* */ +/* */ +/* */ +/* (C) 2016 Christian Krueger */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +/* No include guard here! Multiple use in one file may be intentional. */ + +#pragma warn (remap-zero, push, off) +#pragma charmap (0x00, 0x40) +#pragma warn (remap-zero, pop) + +#pragma charmap (0x01, 0x41) +#pragma charmap (0x02, 0x42) +#pragma charmap (0x03, 0x43) +#pragma charmap (0x04, 0x44) +#pragma charmap (0x05, 0x45) +#pragma charmap (0x06, 0x46) +#pragma charmap (0x07, 0xFD) +#pragma charmap (0x08, 0x48) +#pragma charmap (0x09, 0x7F) +#pragma charmap (0x0A, 0xDB) +#pragma charmap (0x0B, 0x4B) +#pragma charmap (0x0C, 0x7D) +#pragma charmap (0x0D, 0x4D) +#pragma charmap (0x0E, 0x4E) +#pragma charmap (0x0F, 0x4F) + +#pragma charmap (0x10, 0x50) +#pragma charmap (0x11, 0x51) +#pragma charmap (0x12, 0x52) +#pragma charmap (0x13, 0x53) +#pragma charmap (0x14, 0x54) +#pragma charmap (0x15, 0x55) +#pragma charmap (0x16, 0x56) +#pragma charmap (0x17, 0x57) +#pragma charmap (0x18, 0x58) +#pragma charmap (0x19, 0x59) +#pragma charmap (0x1A, 0x5A) +#pragma charmap (0x1B, 0x5B) +#pragma charmap (0x1C, 0x5C) +#pragma charmap (0x1D, 0x5D) +#pragma charmap (0x1E, 0x5E) +#pragma charmap (0x1F, 0x5F) + +#pragma warn (remap-zero, push, off) +#pragma charmap (0x20, 0x00) +#pragma warn (remap-zero, pop) + +#pragma charmap (0x21, 0x01) +#pragma charmap (0x22, 0x02) +#pragma charmap (0x23, 0x03) +#pragma charmap (0x24, 0x04) +#pragma charmap (0x25, 0x05) +#pragma charmap (0x26, 0x06) +#pragma charmap (0x27, 0x07) +#pragma charmap (0x28, 0x08) +#pragma charmap (0x29, 0x09) +#pragma charmap (0x2A, 0x0A) +#pragma charmap (0x2B, 0x0B) +#pragma charmap (0x2C, 0x0C) +#pragma charmap (0x2D, 0x0D) +#pragma charmap (0x2E, 0x0E) +#pragma charmap (0x2F, 0x0F) + +#pragma charmap (0x30, 0x10) +#pragma charmap (0x31, 0x11) +#pragma charmap (0x32, 0x12) +#pragma charmap (0x33, 0x13) +#pragma charmap (0x34, 0x14) +#pragma charmap (0x35, 0x15) +#pragma charmap (0x36, 0x16) +#pragma charmap (0x37, 0x17) +#pragma charmap (0x38, 0x18) +#pragma charmap (0x39, 0x19) +#pragma charmap (0x3A, 0x1A) +#pragma charmap (0x3B, 0x1B) +#pragma charmap (0x3C, 0x1C) +#pragma charmap (0x3D, 0x1D) +#pragma charmap (0x3E, 0x1E) +#pragma charmap (0x3F, 0x1F) + +#pragma charmap (0x40, 0x20) +#pragma charmap (0x41, 0x21) +#pragma charmap (0x42, 0x22) +#pragma charmap (0x43, 0x23) +#pragma charmap (0x44, 0x24) +#pragma charmap (0x45, 0x25) +#pragma charmap (0x46, 0x26) +#pragma charmap (0x47, 0x27) +#pragma charmap (0x48, 0x28) +#pragma charmap (0x49, 0x29) +#pragma charmap (0x4A, 0x2A) +#pragma charmap (0x4B, 0x2B) +#pragma charmap (0x4C, 0x2C) +#pragma charmap (0x4D, 0x2D) +#pragma charmap (0x4E, 0x2E) +#pragma charmap (0x4F, 0x2F) + +#pragma charmap (0x50, 0x30) +#pragma charmap (0x51, 0x31) +#pragma charmap (0x52, 0x32) +#pragma charmap (0x53, 0x33) +#pragma charmap (0x54, 0x34) +#pragma charmap (0x55, 0x35) +#pragma charmap (0x56, 0x36) +#pragma charmap (0x57, 0x37) +#pragma charmap (0x58, 0x38) +#pragma charmap (0x59, 0x39) +#pragma charmap (0x5A, 0x3A) +#pragma charmap (0x5B, 0x3B) +#pragma charmap (0x5C, 0x3C) +#pragma charmap (0x5D, 0x3D) +#pragma charmap (0x5E, 0x3E) +#pragma charmap (0x5F, 0x3F) + +#pragma charmap (0x60, 0x60) +#pragma charmap (0x61, 0x61) +#pragma charmap (0x62, 0x62) +#pragma charmap (0x63, 0x63) +#pragma charmap (0x64, 0x64) +#pragma charmap (0x65, 0x65) +#pragma charmap (0x66, 0x66) +#pragma charmap (0x67, 0x67) +#pragma charmap (0x68, 0x68) +#pragma charmap (0x69, 0x69) +#pragma charmap (0x6A, 0x6A) +#pragma charmap (0x6B, 0x6B) +#pragma charmap (0x6C, 0x6C) +#pragma charmap (0x6D, 0x6D) +#pragma charmap (0x6E, 0x6E) +#pragma charmap (0x6F, 0x6F) + +#pragma charmap (0x70, 0x70) +#pragma charmap (0x71, 0x71) +#pragma charmap (0x72, 0x72) +#pragma charmap (0x73, 0x73) +#pragma charmap (0x74, 0x74) +#pragma charmap (0x75, 0x75) +#pragma charmap (0x76, 0x76) +#pragma charmap (0x77, 0x77) +#pragma charmap (0x78, 0x78) +#pragma charmap (0x79, 0x79) +#pragma charmap (0x7A, 0x7A) +#pragma charmap (0x7B, 0x7B) +#pragma charmap (0x7C, 0x7C) +#pragma charmap (0x7D, 0x7D) +#pragma charmap (0x7E, 0x7E) +#pragma charmap (0x7F, 0x7F) + +#pragma charmap (0x80, 0xC0) +#pragma charmap (0x81, 0xC1) +#pragma charmap (0x82, 0xC2) +#pragma charmap (0x83, 0xC3) +#pragma charmap (0x84, 0xC4) +#pragma charmap (0x85, 0xC5) +#pragma charmap (0x86, 0xC6) +#pragma charmap (0x87, 0xC7) +#pragma charmap (0x88, 0xC8) +#pragma charmap (0x89, 0xC9) +#pragma charmap (0x8A, 0xCA) +#pragma charmap (0x8B, 0xCB) +#pragma charmap (0x8C, 0xCC) +#pragma charmap (0x8D, 0xCD) +#pragma charmap (0x8E, 0xCE) +#pragma charmap (0x8F, 0xCF) + +#pragma charmap (0x90, 0xD0) +#pragma charmap (0x91, 0xD1) +#pragma charmap (0x92, 0xD2) +#pragma charmap (0x93, 0xD3) +#pragma charmap (0x94, 0xD4) +#pragma charmap (0x95, 0xD5) +#pragma charmap (0x96, 0xD6) +#pragma charmap (0x97, 0xD7) +#pragma charmap (0x98, 0xD8) +#pragma charmap (0x99, 0xD9) +#pragma charmap (0x9A, 0xDA) +#pragma charmap (0x9B, 0xDB) +#pragma charmap (0x9C, 0xDC) +#pragma charmap (0x9D, 0xDD) +#pragma charmap (0x9E, 0xDE) +#pragma charmap (0x9F, 0xDF) + +#pragma charmap (0xA0, 0x80) +#pragma charmap (0xA1, 0x81) +#pragma charmap (0xA2, 0x82) +#pragma charmap (0xA3, 0x83) +#pragma charmap (0xA4, 0x84) +#pragma charmap (0xA5, 0x85) +#pragma charmap (0xA6, 0x86) +#pragma charmap (0xA7, 0x87) +#pragma charmap (0xA8, 0x88) +#pragma charmap (0xA9, 0x89) +#pragma charmap (0xAA, 0x8A) +#pragma charmap (0xAB, 0x8B) +#pragma charmap (0xAC, 0x8C) +#pragma charmap (0xAD, 0x8D) +#pragma charmap (0xAE, 0x8E) +#pragma charmap (0xAF, 0x8F) + +#pragma charmap (0xB0, 0x90) +#pragma charmap (0xB1, 0x91) +#pragma charmap (0xB2, 0x92) +#pragma charmap (0xB3, 0x93) +#pragma charmap (0xB4, 0x94) +#pragma charmap (0xB5, 0x95) +#pragma charmap (0xB6, 0x96) +#pragma charmap (0xB7, 0x97) +#pragma charmap (0xB8, 0x98) +#pragma charmap (0xB9, 0x99) +#pragma charmap (0xBA, 0x9A) +#pragma charmap (0xBB, 0x9B) +#pragma charmap (0xBC, 0x9C) +#pragma charmap (0xBD, 0x9D) +#pragma charmap (0xBE, 0x9E) +#pragma charmap (0xBF, 0x9F) + +#pragma charmap (0xC0, 0xA0) +#pragma charmap (0xC1, 0xA1) +#pragma charmap (0xC2, 0xA2) +#pragma charmap (0xC3, 0xA3) +#pragma charmap (0xC4, 0xA4) +#pragma charmap (0xC5, 0xA5) +#pragma charmap (0xC6, 0xA6) +#pragma charmap (0xC7, 0xA7) +#pragma charmap (0xC8, 0xA8) +#pragma charmap (0xC9, 0xA9) +#pragma charmap (0xCA, 0xAA) +#pragma charmap (0xCB, 0xAB) +#pragma charmap (0xCC, 0xAC) +#pragma charmap (0xCD, 0xAD) +#pragma charmap (0xCE, 0xAE) +#pragma charmap (0xCF, 0xAF) + +#pragma charmap (0xD0, 0xB0) +#pragma charmap (0xD1, 0xB1) +#pragma charmap (0xD2, 0xB2) +#pragma charmap (0xD3, 0xB3) +#pragma charmap (0xD4, 0xB4) +#pragma charmap (0xD5, 0xB5) +#pragma charmap (0xD6, 0xB6) +#pragma charmap (0xD7, 0xB7) +#pragma charmap (0xD8, 0xB8) +#pragma charmap (0xD9, 0xB9) +#pragma charmap (0xDA, 0xBA) +#pragma charmap (0xDB, 0xBB) +#pragma charmap (0xDC, 0xBC) +#pragma charmap (0xDD, 0xBD) +#pragma charmap (0xDE, 0xBE) +#pragma charmap (0xDF, 0xBF) + +#pragma charmap (0xE0, 0xE0) +#pragma charmap (0xE1, 0xE1) +#pragma charmap (0xE2, 0xE2) +#pragma charmap (0xE3, 0xE3) +#pragma charmap (0xE4, 0xE4) +#pragma charmap (0xE5, 0xE5) +#pragma charmap (0xE6, 0xE6) +#pragma charmap (0xE7, 0xE7) +#pragma charmap (0xE8, 0xE8) +#pragma charmap (0xE9, 0xE9) +#pragma charmap (0xEA, 0xEA) +#pragma charmap (0xEB, 0xEB) +#pragma charmap (0xEC, 0xEC) +#pragma charmap (0xED, 0xED) +#pragma charmap (0xEE, 0xEE) +#pragma charmap (0xEF, 0xEF) + +#pragma charmap (0xF0, 0xF0) +#pragma charmap (0xF1, 0xF1) +#pragma charmap (0xF2, 0xF2) +#pragma charmap (0xF3, 0xF3) +#pragma charmap (0xF4, 0xF4) +#pragma charmap (0xF5, 0xF5) +#pragma charmap (0xF6, 0xF6) +#pragma charmap (0xF7, 0xF7) +#pragma charmap (0xF8, 0xF8) +#pragma charmap (0xF9, 0xF9) +#pragma charmap (0xFA, 0xFA) +#pragma charmap (0xFB, 0xFB) +#pragma charmap (0xFC, 0xFC) +#pragma charmap (0xFD, 0xFD) +#pragma charmap (0xFE, 0xFE) +#pragma charmap (0xFF, 0xFF) + +/*****************************************************************************/ +/* */ +/* stdlib.h */ +/* */ +/* General utilities */ +/* */ +/* */ +/* */ +/* (C) 1998-2011, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _STDLIB_H +#define _STDLIB_H + + + +/* size_t is needed */ +#ifndef _HAVE_size_t +typedef unsigned size_t; +#define _HAVE_size_t +#endif + +/* Standard exit codes */ +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 + +/* Return type of the div function */ +typedef struct { + int rem; + int quot; +} div_t; + +/* Return type of the ldiv function (which currently doesn't exist) */ +typedef struct { + long rem; + long quot; +} ldiv_t; + +/* Memory management */ +void* __fastcall__ malloc (size_t size); +void* __fastcall__ calloc (size_t count, size_t size); +void* __fastcall__ realloc (void* block, size_t size); +void __fastcall__ free (void* block); + +/* Non standard memory management functions */ + +#if __CC65_STD__ == __CC65_STD_CC65__ +int __fastcall__ posix_memalign (void** memptr, size_t alignment, size_t size); +/* Allocate a block of memory with the given "size", which is aligned to a +** memory address that is a multiple of "alignment". "alignment" MUST NOT be +** zero, and MUST be a power of two; otherwise, this function will return +** EINVAL. The function returns ENOMEM if not enough memory is available +** to satisfy the request. "memptr" must point to a variable; that variable +** will return the address of the allocated memory. Use free() to release that +** allocated block. +*/ +#endif + +void __fastcall__ _heapadd (void* mem, size_t size); +/* Add a block to the heap */ + +size_t __fastcall__ _heapblocksize (const void* block); +/* Return the size of an allocated block */ + +size_t _heapmemavail (void); +/* Return the total free heap space */ + +size_t _heapmaxavail (void); +/* Return the size of the largest free block on the heap */ + + +/* Random numbers */ +#define RAND_MAX 0x7FFF +int rand (void); +void __fastcall__ srand (unsigned seed); +void _randomize (void); /* Non-standard */ + +/* Other standard stuff */ +void abort (void) __attribute__ ((noreturn)); +int __fastcall__ abs (int val); +long __fastcall__ labs (long val); +int __fastcall__ atoi (const char* s); +long __fastcall__ atol (const char* s); +int __fastcall__ atexit (void (*exitfunc) (void)); +void* __fastcall__ bsearch (const void* key, const void* base, size_t n, + size_t size, int __fastcall__ (* cmp) (const void*, const void*)); +div_t __fastcall__ div (int numer, int denom); +void __fastcall__ exit (int ret) __attribute__ ((noreturn)); +char* __fastcall__ getenv (const char* name); +void __fastcall__ qsort (void* base, size_t count, size_t size, + int __fastcall__ (* compare) (const void*, const void*)); +long __fastcall__ strtol (const char* nptr, char** endptr, int base); +unsigned long __fastcall__ strtoul (const char* nptr, char** endptr, int base); +int __fastcall__ system (const char* s); + +/* Non-ANSI functions */ +void __fastcall__ _swap (void* p, void* q, size_t size); +#if __CC65_STD__ == __CC65_STD_CC65__ +char* __fastcall__ itoa (int val, char* buf, int radix); +char* __fastcall__ utoa (unsigned val, char* buf, int radix); +char* __fastcall__ ltoa (long val, char* buf, int radix); +char* __fastcall__ ultoa (unsigned long val, char* buf, int radix); +int __fastcall__ putenv (char* s); +#endif + + + +/* End of stdlib.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* pen.h */ +/* */ +/* Lightpen API */ +/* */ +/* */ +/* This software is provided "as-is", without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated, but is not required. */ +/* 2. Altered source versions must be marked plainly as such; and, must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _PEN_H +#define _PEN_H + + + +/*****************************************************************************/ +/* Declarations */ +/*****************************************************************************/ + + + +/* A program optionally can set this pointer to a function that gives +** a calibration value to a driver. If this pointer isn't NULL, +** then a driver that wants a value can call that function. +** pen_adjuster must be set before the driver is installed. +*/ +extern void __fastcall__ (*pen_adjuster) (unsigned char *pValue); + + + +/*****************************************************************************/ +/* Functions */ +/*****************************************************************************/ + + + +void __fastcall__ pen_calibrate (unsigned char *XOffset); +/* Ask the user to help to calibrate a lightpen. Changes the screen! +** A pointer to this function can be put into pen_adjuster. +*/ + +void __fastcall__ pen_adjust (const char *filename); +/* Get a lightpen calibration value from a file if it exists. Otherwise, call +** pen_calibrate() to create a value; then, write it into a file, so that it +** will be available at the next time that the lightpen is used. +** Might change the screen. +** pen_adjust() is optional; if you want to use its feature, +** then it must be called before a driver is installed. +** Note: This function merely saves the file-name pointer, and sets +** the pen_adjuster pointer. The file will be read only when a driver +** is installed, and only if that driver wants to be calibrated. +*/ + + + +/* End of pen.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* stdbool.h */ +/* */ +/* C99 Boolean definitions */ +/* */ +/* */ +/* */ +/* (C) 2002 Greg King */ +/* */ +/* */ +/* This software is provided "as-is," without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment, in the product's documentation, */ +/* would be appreciated, but is not required. */ +/* 2. Alterred source versions must be marked plainly as such, */ +/* and must not be misrepresented as being the original software. */ +/* 3. This notice may not be removed or alterred */ +/* from any source distribution. */ +/*****************************************************************************/ + + + +#ifndef _STDBOOL_H +#define _STDBOOL_H + + + +#define bool _Bool +typedef unsigned char _Bool; + +/* Standard test-results. */ +#define false 0 +#define true 1 + +/* All three names are macroes. */ +#define __bool_true_false_are_defined 1 + + + +/* End of stdbool.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* cc65.h */ +/* */ +/* Target independent but cc65 specific utility functions */ +/* */ +/* */ +/* */ +/* (C) 2009-2011, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _CC65_H +#define _CC65_H + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +long __fastcall__ cc65_idiv32by16r16 (long rhs, int lhs); +/* Divide a 32 bit signed value by a 16 bit signed value yielding a 16 +** bit result and a 16 bit remainder. The former is returned in the lower 16 +** bit of the result, the latter in the upper. If you don't need the +** remainder, just assign (or cast) to an int. +*/ + +unsigned long __fastcall__ cc65_udiv32by16r16 (unsigned long rhs, unsigned lhs); +/* Divide a 32 bit unsigned value by a 16 bit unsigned value yielding a 16 +** bit result and a 16 bit remainder. The former is returned in the lower 16 +** bit of the result, the latter in the upper. If you don't need the +** remainder, just assign (or cast) to an unsigned. +*/ + +int __fastcall__ cc65_imul8x8r16 (signed char lhs, signed char rhs); +/* Multiplicate two signed 8 bit to yield an signed 16 bit result */ + +long __fastcall__ cc65_imul16x16r32 (int lhs, int rhs); +/* Multiplicate two signed 16 bit to yield a signed 32 bit result */ + +unsigned __fastcall__ cc65_umul8x8r16 (unsigned char lhs, unsigned char rhs); +/* Multiplicate two unsigned 8 bit to yield an unsigned 16 bit result */ + +unsigned long __fastcall__ cc65_umul16x8r32 (unsigned lhs, unsigned char rhs); +/* Multiplicate an unsigned 16 bit by an unsigned 8 bit number yielding a 24 +** bit unsigned result that is extended to 32 bits for easier handling from C. +*/ + +unsigned long __fastcall__ cc65_umul16x16r32 (unsigned lhs, unsigned rhs); +/* Multiplicate two unsigned 16 bit to yield an unsigned 32 bit result */ + +int __fastcall__ cc65_sin (unsigned x); +/* Return the sine of the argument, which must be in range 0..360. The result +** is in 8.8 fixed point format, which means that 1.0 = $100 and -1.0 = $FF00. +*/ + +int __fastcall__ cc65_cos (unsigned x); +/* Return the cosine of the argument, which must be in range 0..360. The result +** is in 8.8 fixed point format, which means that 1.0 = $100 and -1.0 = $FF00. +*/ + +unsigned char doesclrscrafterexit (void); +/* Indicates whether the screen automatically be cleared after program +** termination. +*/ + + + +/* End of cc65.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* signal.h */ +/* */ +/* Signal handling definitions */ +/* */ +/* */ +/* */ +/* (C) 2002-2005, Ullrich von Bassewitz */ +/* Römerstraße 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _SIGNAL_H +#define _SIGNAL_H + + + +/* sig_atomic_t */ +typedef unsigned char sig_atomic_t; + +/* Type of a signal handler */ +typedef void __fastcall__ (*__sigfunc) (int); + +/* Functions that implement SIG_IGN and SIG_DFL */ +void __fastcall__ _sig_ign (int); +void __fastcall__ _sig_dfl (int); + +/* Standard signal handling functions */ +#define SIG_DFL _sig_dfl +#define SIG_IGN _sig_ign +#define SIG_ERR ((__sigfunc) 0x0000) + +/* Signal numbers */ +#define SIGABRT 0 +#define SIGFPE 1 +#define SIGILL 2 +#define SIGINT 3 +#define SIGSEGV 4 +#define SIGTERM 5 + +/* Function declarations */ +__sigfunc __fastcall__ signal (int sig, __sigfunc func); +int __fastcall__ raise (int sig); + + + +/* End of signal.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* _sid.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 1998-2000 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __SID_H +#define __SID_H + + + +/* Define a structure with the sid register offsets */ +struct __sid_voice { + unsigned freq; /* Frequency */ + unsigned pw; /* Pulse width */ + unsigned char ctrl; /* Control register */ + unsigned char ad; /* Attack/decay */ + unsigned char sr; /* Sustain/release */ +}; +struct __sid { + struct __sid_voice v1; /* Voice 1 */ + struct __sid_voice v2; /* Voice 2 */ + struct __sid_voice v3; /* Voice 3 */ + unsigned flt_freq; /* Filter frequency */ + unsigned char flt_ctrl; /* Filter control register */ + unsigned char amp; /* Amplitude */ + unsigned char ad1; /* A/D converter 1 */ + unsigned char ad2; /* A/D converter 2 */ + unsigned char noise; /* Noise generator */ + unsigned char read3; /* Value of voice 3 */ +}; + + + +/* End of _sid.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* _vic2.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 1998-2012, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __VIC2_H +#define __VIC2_H + + + +/* Define a structure with the vic register offsets. In cc65 mode, there +** are aliases for the field accessible as arrays. +*/ +#if __CC65_STD__ == __CC65_STD_CC65__ +struct __vic2 { + union { + struct { + unsigned char spr0_x; /* Sprite 0, X coordinate */ + unsigned char spr0_y; /* Sprite 0, Y coordinate */ + unsigned char spr1_x; /* Sprite 1, X coordinate */ + unsigned char spr1_y; /* Sprite 1, Y coordinate */ + unsigned char spr2_x; /* Sprite 2, X coordinate */ + unsigned char spr2_y; /* Sprite 2, Y coordinate */ + unsigned char spr3_x; /* Sprite 3, X coordinate */ + unsigned char spr3_y; /* Sprite 3, Y coordinate */ + unsigned char spr4_x; /* Sprite 4, X coordinate */ + unsigned char spr4_y; /* Sprite 4, Y coordinate */ + unsigned char spr5_x; /* Sprite 5, X coordinate */ + unsigned char spr5_y; /* Sprite 5, Y coordinate */ + unsigned char spr6_x; /* Sprite 6, X coordinate */ + unsigned char spr6_y; /* Sprite 6, Y coordinate */ + unsigned char spr7_x; /* Sprite 7, X coordinate */ + unsigned char spr7_y; /* Sprite 7, Y coordinate */ + }; + struct { + unsigned char x; /* X coordinate */ + unsigned char y; /* Y coordinate */ + } spr_pos[8]; + }; + unsigned char spr_hi_x; /* High bits of X coordinate */ + unsigned char ctrl1; /* Control register 1 */ + unsigned char rasterline; /* Current raster line */ + union { + struct { + unsigned char strobe_x; /* Light pen, X position */ + unsigned char strobe_y; /* Light pen, Y position */ + }; + struct { + unsigned char x; /* Light pen, X position */ + unsigned char y; /* Light pen, Y position */ + } strobe; + }; + unsigned char spr_ena; /* Enable sprites */ + unsigned char ctrl2; /* Control register 2 */ + unsigned char spr_exp_y; /* Expand sprites in Y dir */ + unsigned char addr; /* Address of chargen and video ram */ + unsigned char irr; /* Interrupt request register */ + unsigned char imr; /* Interrupt mask register */ + unsigned char spr_bg_prio; /* Priority to background */ + unsigned char spr_mcolor; /* Sprite multicolor bits */ + unsigned char spr_exp_x; /* Expand sprites in X dir */ + unsigned char spr_coll; /* Sprite/sprite collision reg */ + unsigned char spr_bg_coll; /* Sprite/background collision reg */ + unsigned char bordercolor; /* Border color */ + union { + struct { + unsigned char bgcolor0; /* Background color 0 */ + unsigned char bgcolor1; /* Background color 1 */ + unsigned char bgcolor2; /* Background color 2 */ + unsigned char bgcolor3; /* Background color 3 */ + }; + unsigned char bgcolor[4]; /* Background colors */ + }; + union { + struct { + unsigned char spr_mcolor0; /* Color 0 for multicolor sprites */ + unsigned char spr_mcolor1; /* Color 1 for multicolor sprites */ + }; + /* spr_color is already used ... */ + unsigned char spr_mcolors[2]; /* Color for multicolor sprites */ + }; + union { + struct { + unsigned char spr0_color; /* Color sprite 0 */ + unsigned char spr1_color; /* Color sprite 1 */ + unsigned char spr2_color; /* Color sprite 2 */ + unsigned char spr3_color; /* Color sprite 3 */ + unsigned char spr4_color; /* Color sprite 4 */ + unsigned char spr5_color; /* Color sprite 5 */ + unsigned char spr6_color; /* Color sprite 6 */ + unsigned char spr7_color; /* Color sprite 7 */ + }; + unsigned char spr_color[8]; /* Colors for the sprites */ + }; + + /* The following ones are only valid in the C128: */ + unsigned char x_kbd; /* Additional keyboard lines */ + unsigned char clock; /* Clock switch bit */ +}; +#else +struct __vic2 { + unsigned char spr0_x; /* Sprite 0, X coordinate */ + unsigned char spr0_y; /* Sprite 0, Y coordinate */ + unsigned char spr1_x; /* Sprite 1, X coordinate */ + unsigned char spr1_y; /* Sprite 1, Y coordinate */ + unsigned char spr2_x; /* Sprite 2, X coordinate */ + unsigned char spr2_y; /* Sprite 2, Y coordinate */ + unsigned char spr3_x; /* Sprite 3, X coordinate */ + unsigned char spr3_y; /* Sprite 3, Y coordinate */ + unsigned char spr4_x; /* Sprite 4, X coordinate */ + unsigned char spr4_y; /* Sprite 4, Y coordinate */ + unsigned char spr5_x; /* Sprite 5, X coordinate */ + unsigned char spr5_y; /* Sprite 5, Y coordinate */ + unsigned char spr6_x; /* Sprite 6, X coordinate */ + unsigned char spr6_y; /* Sprite 6, Y coordinate */ + unsigned char spr7_x; /* Sprite 7, X coordinate */ + unsigned char spr7_y; /* Sprite 7, Y coordinate */ + unsigned char spr_hi_x; /* High bits of X coordinate */ + unsigned char ctrl1; /* Control register 1 */ + unsigned char rasterline; /* Current raster line */ + unsigned char strobe_x; /* Light pen, X position */ + unsigned char strobe_y; /* Light pen, Y position */ + unsigned char spr_ena; /* Enable sprites */ + unsigned char ctrl2; /* Control register 2 */ + unsigned char spr_exp_y; /* Expand sprites in Y dir */ + unsigned char addr; /* Address of chargen and video ram */ + unsigned char irr; /* Interrupt request register */ + unsigned char imr; /* Interrupt mask register */ + unsigned char spr_bg_prio; /* Priority to background */ + unsigned char spr_mcolor; /* Sprite multicolor bits */ + unsigned char spr_exp_x; /* Expand sprites in X dir */ + unsigned char spr_coll; /* Sprite/sprite collision reg */ + unsigned char spr_bg_coll; /* Sprite/background collision reg */ + unsigned char bordercolor; /* Border color */ + unsigned char bgcolor0; /* Background color 0 */ + unsigned char bgcolor1; /* Background color 1 */ + unsigned char bgcolor2; /* Background color 2 */ + unsigned char bgcolor3; /* Background color 3 */ + unsigned char spr_mcolor0; /* Color 0 for multicolor sprites */ + unsigned char spr_mcolor1; /* Color 1 for multicolor sprites */ + unsigned char spr0_color; /* Color sprite 0 */ + unsigned char spr1_color; /* Color sprite 1 */ + unsigned char spr2_color; /* Color sprite 2 */ + unsigned char spr3_color; /* Color sprite 3 */ + unsigned char spr4_color; /* Color sprite 4 */ + unsigned char spr5_color; /* Color sprite 5 */ + unsigned char spr6_color; /* Color sprite 6 */ + unsigned char spr7_color; /* Color sprite 7 */ + + /* The following ones are only valid in the C128: */ + unsigned char x_kbd; /* Additional keyboard lines */ + unsigned char clock; /* Clock switch bit */ +}; +#endif + + + +/* End of _vic2.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* unistd.h */ +/* */ +/* Unix compatibility header file for cc65 */ +/* */ +/* */ +/* */ +/* (C) 2003-2011, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _UNISTD_H +#define _UNISTD_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Predefined file handles */ +#define STDIN_FILENO 0 +#define STDOUT_FILENO 1 +#define STDERR_FILENO 2 + +/* WE need size_t */ +#ifndef _HAVE_size_t +#define _HAVE_size_t +typedef unsigned size_t; +#endif + +/* We need off_t if sys/types is not included */ +#ifndef _HAVE_off_t +#define _HAVE_off_t +typedef long int off_t; +#endif + +/* Stuff for getopt */ +extern char *optarg; +extern int optind, opterr, optopt; + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +/* Files */ +int __fastcall__ write (int fd, const void* buf, unsigned count); +int __fastcall__ read (int fd, void* buf, unsigned count); +off_t __fastcall__ lseek (int fd, off_t offset, int whence); +int __fastcall__ unlink (const char* name); /* Same as remove() */ + +/* Directories */ +int __fastcall__ chdir (const char* name); +char* __fastcall__ getcwd (char* buf, size_t size); +int mkdir (const char* name, ...); /* May take a mode argument */ +int __fastcall__ rmdir (const char* name); + +/* Others */ +unsigned __fastcall__ sleep (unsigned seconds); +int __fastcall__ getopt (int argc, char* const* argv, const char* optstring); + +/* Non standard: */ +#if __CC65_STD__ == __CC65_STD_CC65__ +int __fastcall__ exec (const char* progname, const char* cmdline); +#endif + + + +/* End of unistd.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* ctype.h */ +/* */ +/* Character handling */ +/* */ +/* */ +/* */ +/* (C) 1998-2013, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _CTYPE_H +#define _CTYPE_H + + +/* The array containing character classification data */ +extern unsigned char _ctype[256]; + +/* Bits used to specify character classes */ +#define _CT_LOWER 0x01 /* 0 - Lower case char */ +#define _CT_UPPER 0x02 /* 1 - Upper case char */ +#define _CT_DIGIT 0x04 /* 2 - Numeric digit */ +#define _CT_XDIGIT 0x08 /* 3 - Hex digit (both lower and upper) */ +#define _CT_CNTRL 0x10 /* 4 - Control character */ +#define _CT_SPACE 0x20 /* 5 - The space character itself */ +#define _CT_OTHER_WS 0x40 /* 6 - Other whitespace ('\f', '\n', '\r', '\t', and '\v') */ +#define _CT_SPACE_TAB 0x80 /* 7 - Space or tab character */ + +/* Bit combinations */ +#define _CT_ALNUM (_CT_LOWER | _CT_UPPER | _CT_DIGIT) +#define _CT_ALPHA (_CT_LOWER | _CT_UPPER) +#define _CT_NOT_GRAPH (_CT_CNTRL | _CT_SPACE) +#define _CT_NOT_PRINT (_CT_CNTRL) +#define _CT_NOT_PUNCT (_CT_SPACE | _CT_CNTRL | _CT_DIGIT | _CT_UPPER | _CT_LOWER) +#define _CT_WS (_CT_SPACE | _CT_OTHER_WS) + +/* Character classification functions */ +int __fastcall__ isalnum (int c); +int __fastcall__ isalpha (int c); +int __fastcall__ iscntrl (int c); +int __fastcall__ isdigit (int c); +int __fastcall__ isgraph (int c); +int __fastcall__ islower (int c); +int __fastcall__ isprint (int c); +int __fastcall__ ispunct (int c); +int __fastcall__ isspace (int c); +int __fastcall__ isupper (int c); +int __fastcall__ isxdigit (int c); +#if __CC65_STD__ >= __CC65_STD_C99__ +int __fastcall__ isblank (int c); /* New in C99 */ +#endif + +int __fastcall__ toupper (int c); /* Always external */ +int __fastcall__ tolower (int c); /* Always external */ + +#if __CC65_STD__ >= __CC65_STD_CC65__ +unsigned char __fastcall__ toascii (unsigned char c); +/* Convert a target-specific character to ASCII. */ +#endif + + + +/* When inlining-of-known-functions is enabled, overload most of the above +** functions by macroes. The function prototypes are available again after +** #undef'ing the macroes. +** Please note that the following macroes do NOT handle EOF correctly, as +** stated in the manual. If you need correct behaviour for EOF, don't +** use -Os, or #undefine the following macroes. +*/ +#ifdef __OPT_s__ + +#define isalnum(c) (__AX__ = (c), \ + __asm__ ("tay"), \ + __asm__ ("lda %v,y", _ctype), \ + __asm__ ("and #%b", _CT_ALNUM), \ + __AX__) + +#define isalpha(c) (__AX__ = (c), \ + __asm__ ("tay"), \ + __asm__ ("lda %v,y", _ctype), \ + __asm__ ("and #%b", _CT_ALPHA), \ + __AX__) + +#if __CC65_STD__ >= __CC65_STD_C99__ +#define isblank(c) (__AX__ = (c), \ + __asm__ ("tay"), \ + __asm__ ("lda %v,y", _ctype), \ + __asm__ ("and #%b", _CT_SPACE_TAB), \ + __AX__) +#endif + +#define iscntrl(c) (__AX__ = (c), \ + __asm__ ("tay"), \ + __asm__ ("lda %v,y", _ctype), \ + __asm__ ("and #%b", _CT_CNTRL), \ + __AX__) + +#define isdigit(c) (__AX__ = (c), \ + __asm__ ("tay"), \ + __asm__ ("lda %v,y", _ctype), \ + __asm__ ("and #%b", _CT_DIGIT), \ + __AX__) + +#define isgraph(c) (__AX__ = (c), \ + __asm__ ("tay"), \ + __asm__ ("lda %v,y", _ctype), \ + __asm__ ("and #%b", _CT_NOT_GRAPH), \ + __asm__ ("cmp #1"), \ + __asm__ ("lda #1"), \ + __asm__ ("sbc #1"), \ + __AX__) + +#define islower(c) (__AX__ = (c), \ + __asm__ ("tay"), \ + __asm__ ("lda %v,y", _ctype), \ + __asm__ ("and #%b", _CT_LOWER), \ + __AX__) + +#define isprint(c) (__AX__ = (c), \ + __asm__ ("tay"), \ + __asm__ ("lda %v,y", _ctype), \ + __asm__ ("and #%b", _CT_NOT_PRINT), \ + __asm__ ("eor #%b", _CT_NOT_PRINT), \ + __AX__) + +#define ispunct(c) (__AX__ = (c), \ + __asm__ ("tay"), \ + __asm__ ("lda %v,y", _ctype), \ + __asm__ ("and #%b", _CT_NOT_PUNCT), \ + __asm__ ("cmp #1"), \ + __asm__ ("lda #1"), \ + __asm__ ("sbc #1"), \ + __AX__) + +#define isspace(c) (__AX__ = (c), \ + __asm__ ("tay"), \ + __asm__ ("lda %v,y", _ctype), \ + __asm__ ("and #%b", _CT_WS), \ + __AX__) + +#define isupper(c) (__AX__ = (c), \ + __asm__ ("tay"), \ + __asm__ ("lda %v,y", _ctype), \ + __asm__ ("and #%b", _CT_UPPER), \ + __AX__) + +#define isxdigit(c) (__AX__ = (c), \ + __asm__ ("tay"), \ + __asm__ ("lda %v,y", _ctype), \ + __asm__ ("and #%b", _CT_XDIGIT), \ + __AX__) + +#endif + + + +/* End of ctype.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* _suzy.h */ +/* */ +/* Atari Lynx, Suzy chip register hardware structures */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + +#ifndef __SUZY_H +#define __SUZY_H + +/* Joypad $FCB0 */ +#define JOYPAD_RIGHT 0x10 +#define JOYPAD_LEFT 0x20 +#define JOYPAD_DOWN 0x40 +#define JOYPAD_UP 0x80 +#define BUTTON_OPTION1 0x08 +#define BUTTON_OPTION2 0x04 +#define BUTTON_INNER 0x02 +#define BUTTON_OUTER 0x01 + +/* Switches $FCB1 */ +#define BUTTON_PAUSE 0x01 + + +/* Hardware Math */ +#define FACTOR_A *(unsigned int *) 0xFC54 +#define FACTOR_B *(unsigned int *) 0xFC52 +#define PRODUCT0 *(unsigned int *) 0xFC60 +#define PRODUCT1 *(unsigned int *) 0xFC62 +#define PRODUCT *(long *) 0xFC60 + +#define DIVIDEND0 *(unsigned int *) 0xFC60 +#define DIVIDEND1 *(unsigned int *) 0xFC62 +#define DIVIDEND *(long *) 0xFC60 +#define DIVISOR *(unsigned int *) 0xFC56 +#define QUOTIENT0 *(unsigned int *) 0xFC52 +#define QUOTIENT1 *(unsigned int *) 0xFC54 +#define QUOTIENT *(long *) 0xFC52 +#define REMAINDER0 *(unsigned int *) 0xFC6C +#define REMAINDER1 *(unsigned int *) 0xFC6E +#define REMAINDER *(long *) 0xFC6C + + +/* Sprite control block (SCB) defines */ + +/* SPRCTL0 $FC80 */ +#define BPP_4 0xC0 +#define BPP_3 0x80 +#define BPP_2 0x40 +#define BPP_1 0x00 +#define HFLIP 0x20 +#define VFLIP 0x10 +#define TYPE_SHADOW 0x07 +#define TYPE_XOR 0x06 +#define TYPE_NONCOLL 0x05 +#define TYPE_NORMAL 0x04 +#define TYPE_BOUNDARY 0x03 +#define TYPE_BSHADOW 0x02 +#define TYPE_BACKNONCOLL 0x01 +#define TYPE_BACKGROUND 0x00 + +/* SPRCTL1 $FC81 */ +#define LITERAL 0x80 +#define PACKED 0x00 +#define ALGO3 0x40 +#define RENONE 0x00 +#define REHV 0x10 +#define REHVS 0x20 +#define REHVST 0x30 +#define REUSEPAL 0x08 +#define SKIP 0x04 +#define DRAWUP 0x02 +#define DRAWLEFT 0x01 + +typedef struct SCB_REHVST_PAL { // SCB with all attributes + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; + unsigned int hsize; + unsigned int vsize; + unsigned int stretch; + unsigned int tilt; + unsigned char penpal[8]; +} SCB_REHVST_PAL; + +typedef struct SCB_REHVST { // SCB without pallette + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; + unsigned int hsize; + unsigned int vsize; + unsigned int stretch; + unsigned int tilt; +} SCB_REHVST; + +typedef struct SCB_REHV { // SCB without stretch/tilt + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; + unsigned int hsize; + unsigned int vsize; +} SCB_REHV; + +typedef struct SCB_REHV_PAL { // SCB without str/tilt, w/ penpal + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; + unsigned int hsize; + unsigned int vsize; + unsigned char penpal[8]; +} SCB_REHV_PAL; + +typedef struct SCB_REHVS { // SCB w/o tilt & penpal + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; + unsigned int hsize; + unsigned int vsize; + unsigned int stretch; +} SCB_REHVS; + +typedef struct SCB_REHVS_PAL { // SCB w/o tilt w/penpal + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; + unsigned int hsize; + unsigned int vsize; + unsigned int stretch; + unsigned char penpal[8]; +} SCB_REHVS_PAL; + +typedef struct SCB_RENONE { // SCB w/o size/stretch/tilt/pal + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; +} SCB_RENONE; + +typedef struct SCB_RENONE_PAL { // SCB w/o size/str/tilt w/penpal + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; + unsigned char penpal[8]; +} SCB_RENONE_PAL; + +typedef struct PENPAL_4 { + unsigned char penpal[8]; +} PENPAL_4; + +typedef struct PENPAL_3 { + unsigned char penpal[4]; +} PENPAL_3; + +typedef struct PENPAL_2 { + unsigned char penpal[2]; +} PENPAL_2; + +typedef struct PENPAL_1 { + unsigned char penpal[1]; +} PENPAL_1; + +/* Misc system defines */ + +/* SPRGO $FC91 */ +#define EVER_ON 0x04 +#define SPRITE_GO 0x01 + +/* SPRSYS (write) $FC92 */ +#define SIGNMATH 0x80 +#define ACCUMULATE 0x40 +#define NO_COLLIDE 0x20 +#define VSTRETCH 0x10 +#define LEFTHAND 0x08 +#define CLR_UNSAFE 0x04 +#define SPRITESTOP 0x02 + +/* SPRSYS (read) $FC92 */ +#define MATHWORKING 0x80 +#define MATHWARNING 0x40 +#define MATHCARRY 0x20 +#define VSTRETCHING 0x10 +#define LEFTHANDED 0x08 +#define UNSAFE_ACCESS 0x04 +#define SPRITETOSTOP 0x02 +#define SPRITEWORKING 0x01 + +/* MAPCTL $FFF9 */ +#define HIGHSPEED 0x80 +#define VECTORSPACE 0x08 +#define ROMSPACE 0x04 +#define MIKEYSPACE 0x02 +#define SUZYSPACE 0x01 + + +/* Suzy Hardware Registers */ +struct __suzy { + unsigned int tmpadr; // 0xFC00 Temporary address + unsigned int tiltacc; // 0xFC02 Tilt accumulator + unsigned int hoff; // 0xFC04 Offset to H edge of screen + unsigned int voff; // 0xFC06 Offset to V edge of screen + unsigned char *sprbase; // 0xFC08 Base address of sprite + unsigned char *colbase; // 0xFC0A Base address of collision buffer + unsigned char *vidadr; // 0xFC0C Current vid buffer address + unsigned char *coladr; // 0xFC0E Current col buffer address + unsigned char *scbnext; // 0xFC10 Address of next SCB + unsigned char *sprdline; // 0xFC12 start of sprite data line address + unsigned char *hposstrt; // 0xFC14 start hpos + unsigned char *vposstrt; // 0xFC16 start vpos + unsigned char *sprhsize; // 0xFC18 sprite h size + unsigned char *sprvsize; // 0xFC1A sprite v size + unsigned int stretchl; // 0xFC1C H size adder + unsigned int tilt; // 0xFC1E H pos adder + unsigned int sprdoff; // 0xFC20 offset to next sprite data line + unsigned int sprvpos; // 0xFC22 current vpos + unsigned int colloff; // 0xFC24 offset to collision depository + unsigned int vsizeacc; // 0xFC26 vertical size accumulator + unsigned int hsizeoff; // 0xFC28 horizontal size offset + unsigned int vsizeoff; // 0xFC2A vertical size offset + unsigned char *scbaddr; // 0xFC2C address of current SCB + unsigned char *procaddr; // 0xFC2E address of current spr data proc + unsigned char unused0[32]; // 0xFC30 - 0xFC4F reserved/unused + unsigned char unused1[2]; // 0xFC50 - 0xFC51 do not use + unsigned char mathd; // 0xFC52 + unsigned char mathc; // 0xFC53 + unsigned char mathb; // 0xFC54 + unsigned char matha; // 0xFC55 + unsigned char mathp; // 0xFC56 + unsigned char mathn; // 0xFC57 + unsigned char unused2[8]; // 0xFC58 - 0xFC5F do not use + unsigned char mathh; // 0xFC60 + unsigned char mathg; // 0xFC61 + unsigned char mathf; // 0xFC62 + unsigned char mathe; // 0xFC63 + unsigned char unused3[8]; // 0xFC64 - 0xFC6B do not use + unsigned char mathm; // 0xFC6C + unsigned char mathl; // 0xFC6D + unsigned char mathk; // 0xFC6E + unsigned char mathj; // 0xFC6F + unsigned char unused4[16]; // 0xFC70 - 0xFC7F do not use + unsigned char sprctl0; // 0xFC80 sprite control bits 0 + unsigned char sprctl1; // 0xFC81 sprite control bits 1 + unsigned char sprcoll; // 0xFC82 sprite collision number + unsigned char sprinit; // 0xFC83 sprite initialization bits + unsigned char unused5[4]; // 0xFC84 - 0xFC87 unused + unsigned char suzyhrev; // 0xFC88 suzy hardware rev + unsigned char suzysrev; // 0xFC89 suzy software rev + unsigned char unused6[6]; // 0xFC8A - 0xFC8F unused + unsigned char suzybusen; // 0xFC90 suzy bus enable + unsigned char sprgo; // 0xFC91 sprite process start bit + unsigned char sprsys; // 0xFC92 sprite system control bits + unsigned char unused7[29]; // 0xFC93 - 0xFCAF unused + unsigned char joystick; // 0xFCB0 joystick and buttons + unsigned char switches; // 0xFCB1 other switches + unsigned char cart0; // 0xFCB2 cart0 r/w + unsigned char cart1; // 0xFCB3 cart1 r/w + unsigned char unused8[8]; // 0xFCB4 - 0xFCBF unused + unsigned char leds; // 0xFCC0 leds + unsigned char unused9; // 0xFCC1 unused + unsigned char parstat; // 0xFCC2 parallel port status + unsigned char pardata; // 0xFCC3 parallel port data + unsigned char howie; // 0xFCC4 howie (?) + // 0xFCC5 - 0xFCFF unused +}; + + +#endif + +/*****************************************************************************/ +/* */ +/* zlib.h */ +/* */ +/* Decompression routines for the 'deflate' format */ +/* */ +/* */ +/* */ +/* (C) 2000-2015 Piotr Fusik */ +/* */ +/* This file is based on the zlib.h from 'zlib' general purpose compression */ +/* library, version 1.1.3, (C) 1995-1998 Jean-loup Gailly and Mark Adler. */ +/* */ +/* Jean-loup Gailly Mark Adler */ +/* jloup@gzip.org madler@alumni.caltech.edu */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ZLIB_H +#define _ZLIB_H + +#define Z_OK 0 +#define Z_DATA_ERROR (-3) +/* Return codes for uncompress() */ + +#define Z_DEFLATED 8 +/* The deflate compression method (the only one supported) */ + +#define Z_NULL 0 + + +unsigned __fastcall__ inflatemem (char* dest, const char* source); +/* + Decompresses the source buffer into the destination buffer. + Returns the size of the uncompressed data (number of bytes written starting + from dest). + + This function expects data in the DEFLATE format, described in RFC + (Request for Comments) 1951 in the file + ftp://ds.internic.net/rfc/rfc1951.txt. + + This function does not exist in the original zlib. Its implementation + using original zlib might be following: + + unsigned inflatemem (char* dest, const char* source) + { + z_stream stream; + + stream.next_in = (Bytef*) source; + stream.avail_in = 65535; + + stream.next_out = dest; + stream.avail_out = 65535; + + stream.zalloc = (alloc_func) 0; + stream.zfree = (free_func) 0; + + inflateInit2(&stream, -MAX_WBITS); + inflate(&stream, Z_FINISH); + inflateEnd(&stream); + + return stream.total_out; + } +*/ + + +int __fastcall__ uncompress (char* dest, unsigned* destLen, + const char* source, unsigned sourceLen); +/* + Original zlib description: + + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total + size of the destination buffer, which must be large enough to hold the + entire uncompressed data. (The size of the uncompressed data must have + been saved previously by the compressor and transmitted to the decompressor + by some mechanism outside the scope of this compression library.) + Upon exit, destLen is the actual size of the compressed buffer. + This function can be used to decompress a whole file at once if the + input file is mmap'ed. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted. + + Implementation notes: + + This function expects data in the ZLIB format, described in RFC 1950 + in the file ftp://ds.internic.net/rfc/rfc1950.txt. The ZLIB format is + essentially the DEFLATE format plus a very small header and Adler-32 + checksum. + + Z_MEM_ERROR and Z_BUF_ERROR are never returned in this implementation. +*/ + + +unsigned long __fastcall__ adler32 (unsigned long adler, const char* buf, + unsigned len); + +/* + Original zlib description: + + Update a running Adler-32 checksum with the bytes buf[0..len-1] and + return the updated checksum. If buf is NULL, this function returns + the required initial value for the checksum. + An Adler-32 checksum is almost as reliable as a CRC32 but can be computed + much faster. Usage example: + + unsigned long adler = adler32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + adler = adler32(adler, buffer, length); + } + if (adler != original_adler) error(); + + Implementation notes: + + This function isn't actually much faster than crc32(), but it is smaller + and does not use any lookup tables. +*/ + + +unsigned long __fastcall__ crc32 (unsigned long crc, const char* buf, + unsigned len); +/* + Original zlib description: + + Update a running crc with the bytes buf[0..len-1] and return the updated + crc. If buf is NULL, this function returns the required initial value + for the crc. Pre- and post-conditioning (one's complement) is performed + within this function so it shouldn't be done by the application. + Usage example: + + unsigned long crc = crc32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + crc = crc32(crc, buffer, length); + } + if (crc != original_crc) error(); + + Implementation notes: + + This function uses statically allocated 1 KB lookup table. The table is + initialised before it is used for the first time (that is, if buffer is + NULL or length is zero, then the lookup table isn't initialised). +*/ + + +/* end of zlib.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* dbg.h */ +/* */ +/* Debugger module interface */ +/* */ +/* */ +/* */ +/* (C) 1998-2000, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +/* +** This is the interface to the cc65 debugger. Since many of the functions +** used for the debugger are quite usable even in another context, they +** are declared here. +** +** To use the debugger, just call DbgInit in your application. Once it has +** been called, the debugger will catch any BRK opcode. Use the BREAK macro +** defined below to insert breakpoints into your code. +** +** There are currently a lot of things that cannot be debugged, graphical +** applications are an example. The debugger does not save your screen +** contents, so even your text screen gets destroyed. However, you can +** debug the C and runtime library, even if the debugger is using this +** stuff itself. +** +** Note: When using the debugger, there are some other identifiers with +** external linkage, that start with Dbg. Avoid those names if you use the +** module. +*/ + + + +#ifndef _DBG_H +#define _DBG_H + + + +/*****************************************************************************/ +/* Utility functions */ +/*****************************************************************************/ + + + +unsigned __fastcall__ DbgDisAsm (unsigned Addr, char* Buf, unsigned char Len); +/* Disassemble one instruction at address addr into the given buffer. +** The resulting line has the format, "AAAA__BB_BB_BB___OPC_OPERAND", +** where AAAA is the hexadecimal representation of addr, BB are the +** bytes (in hex) that make the instruction, OPC is the mnemonic, and +** OPERAND is an operand for the instruction. +** The buffer is filled with spaces up to the given length and terminated as +** a usual C string. NOTE: Buf must be able to hold Len+1 characters. +** The function returns the length of the disassembled instruction, so, +** to disassemble the next instruction, add the return value to addr +** and call the function again. +*/ + +unsigned __fastcall__ DbgDisAsmLen (unsigned Addr); +/* Disassemble one instruction, but do only return the length, do not +** create a visible representation. This function is useful when +** disassembling backwards, it is much faster than DbgDisAsm. +*/ + +int __fastcall__ DbgIsRAM (unsigned Addr); +/* Return true if we can read and write the given address */ + +char* __cdecl__ DbgMemDump (unsigned Addr, char* Buf, unsigned char Len); +/* Create a line of a memory dump in the given buffer. The buffer contains +** the starting address (4 digits hex), then Len bytes in this format: +** "AAAA__XX_YY_ZZ_...". The passed char buffer must hold Len*3+5 bytes +** plus a terminator byte. +** The function does not work correctly if the created string is longer +** than 255 bytes. +** The return value is Buf. +*/ + + + +/*****************************************************************************/ +/* High level user interface */ +/*****************************************************************************/ + + + +void __fastcall__ DbgInit (unsigned unused); +/* Initialize the debugger. Use 0 as parameter. The debugger will popup on +** next brk encountered. +*/ + +#define BREAK() __asm__ ("brk") +/* Use this to insert breakpoints into your code */ + + + +/* End of dbg.h */ +#endif + + + + +/*****************************************************************************/ +/* */ +/* _gtia.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 2000 Freddy Offenga */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + +#ifndef __GTIA_H +#define __GTIA_H + +/* Define a structure with the gtia register offsets */ +struct __gtia_write { + unsigned char hposp0; /* horizontal position player 0 */ + unsigned char hposp1; /* horizontal position player 1 */ + unsigned char hposp2; /* horizontal position player 2 */ + unsigned char hposp3; /* horizontal position player 3 */ + unsigned char hposm0; /* horizontal position missile 0 */ + unsigned char hposm1; /* horizontal position missile 1 */ + unsigned char hposm2; /* horizontal position missile 2 */ + unsigned char hposm3; /* horizontal position missile 3 */ + unsigned char sizep0; /* size of player 0 */ + unsigned char sizep1; /* size of player 1 */ + unsigned char sizep2; /* size of player 2 */ + unsigned char sizep3; /* size of player 3 */ + unsigned char sizem; /* size of missiles */ + unsigned char grafp0; /* graphics shape player 0 */ + unsigned char grafp1; /* graphics shape player 1 */ + unsigned char grafp2; /* graphics shape player 2 */ + unsigned char grafp3; /* graphics shape player 3 */ + unsigned char grafm; /* graphics shape missiles */ + unsigned char colpm0; /* color player and missile 0 */ + unsigned char colpm1; /* color player and missile 1 */ + unsigned char colpm2; /* color player and missile 2 */ + unsigned char colpm3; /* color player and missile 3 */ + unsigned char colpf0; /* color playfield 0 */ + unsigned char colpf1; /* color playfield 1 */ + unsigned char colpf2; /* color playfield 2 */ + unsigned char colpf3; /* color playfield 3 */ + unsigned char colbk; /* color background */ + unsigned char prior; /* priority selection */ + unsigned char vdelay; /* vertical delay */ + unsigned char gractl; /* stick/paddle latch, p/m control */ + unsigned char hitclr; /* clear p/m collision */ + unsigned char consol; /* console buttons */ +}; + +/* Define a structure with the gtia register offsets */ +struct __gtia_read { + unsigned char m0pf; /* missile 0 to playfield collision */ + unsigned char m1pf; /* missile 1 to playfield collision */ + unsigned char m2pf; /* missile 2 to playfield collision */ + unsigned char m3pf; /* missile 3 to playfield collision */ + unsigned char p0pf; /* player 0 to playfield collision */ + unsigned char p1pf; /* player 1 to playfield collision */ + unsigned char p2pf; /* player 2 to playfield collision */ + unsigned char p3pf; /* player 3 to playfield collision */ + unsigned char m0pl; /* missile 0 to player collision */ + unsigned char m1pl; /* missile 1 to player collision */ + unsigned char m2pl; /* missile 2 to player collision */ + unsigned char m3pl; /* missile 3 to player collision */ + unsigned char p0pl; /* player 0 to player collision */ + unsigned char p1pl; /* player 1 to player collision */ + unsigned char p2pl; /* player 2 to player collision */ + unsigned char p3pl; /* player 3 to player collision */ + unsigned char trig0; /* joystick trigger 0 */ + unsigned char trig1; /* joystick trigger 1 */ + unsigned char trig2; /* joystick trigger 2 */ + unsigned char trig3; /* joystick trigger 3 */ + unsigned char pal; /* pal/ntsc flag */ +}; + +/* End of _gtia.h */ +#endif /* #ifndef __GTIA_H */ + +/*****************************************************************************/ +/* */ +/* errno.h */ +/* */ +/* Error codes */ +/* */ +/* */ +/* */ +/* (C) 1998-2010, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ERRNO_H +#define _ERRNO_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Operating system specific error code */ +extern unsigned char _oserror; + +extern int _errno; +/* System errors go here */ + +#define errno _errno +/* errno must be a macro */ + + + +/* Possible error codes */ +#define ENOENT 1 /* No such file or directory */ +#define ENOMEM 2 /* Out of memory */ +#define EACCES 3 /* Permission denied */ +#define ENODEV 4 /* No such device */ +#define EMFILE 5 /* Too many open files */ +#define EBUSY 6 /* Device or resource busy */ +#define EINVAL 7 /* Invalid argument */ +#define ENOSPC 8 /* No space left on device */ +#define EEXIST 9 /* File exists */ +#define EAGAIN 10 /* Try again */ +#define EIO 11 /* I/O error */ +#define EINTR 12 /* Interrupted system call */ +#define ENOSYS 13 /* Function not implemented */ +#define ESPIPE 14 /* Illegal seek */ +#define ERANGE 15 /* Range error */ +#define EBADF 16 /* Bad file number */ +#define ENOEXEC 17 /* Exec format error */ +#define EUNKNOWN 18 /* Unknown OS specific error */ + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +int __fastcall__ _osmaperrno (unsigned char oserror); +/* Map an operating system specific error code (for example from _oserror) +** into one of the E... codes above. It is user callable. +*/ + +unsigned char __fastcall__ _seterrno (unsigned char code); +/* Set errno to a specific error code and return zero. Used by the library */ + +int __fastcall__ _directerrno (unsigned char code); +/* Set errno to a specific error code, clear _oserror and return -1. Used +** by the library. +*/ + +int __fastcall__ _mappederrno (unsigned char code); +/* Set _oserror to the given platform specific error code. If it is a real +** error code (not zero) set errno to the corresponding system error code +** and return -1. Otherwise return zero. +** Used by the library. +*/ + + + +/* End of errno.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* _ted.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 2003 Ullrich von Bassewitz */ +/* Römerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __TED_H +#define __TED_H + + + +/* Define a structure with the ted register offsets */ +struct __ted { + unsigned char t1_lo; /* Timer #1 low */ + unsigned char t1_hi; /* Timer #1 high */ + unsigned char t2_lo; /* Timer #2 low */ + unsigned char t2_hi; /* Timer #2 high */ + unsigned char t3_lo; /* Timer #3 low */ + unsigned char t3_hi; /* Timer #3 high */ + unsigned char vscroll; /* Vertical scroll control */ + unsigned char hscroll; /* Horizontal scroll control */ + unsigned char kbdlatch; /* Keyboard latch */ + unsigned char irr; /* Interrupt request register */ + unsigned char imr; /* Interrupt mask register */ + unsigned char irq_rasterline; /* Interrupt rasterline */ + unsigned char cursor_hi; /* Cursor position high */ + unsigned char cursor_lo; /* Cursor position low */ + unsigned char snd1_freq_lo; /* Channel #1 frequency */ + unsigned char snd2_freq_lo; /* Channel #2 frequency low */ + unsigned char snd2_freq_hi; /* Channel #2 frequency high */ + unsigned char snd_ctrl; /* Sound control */ + unsigned char misc; /* Channel #1 frequency high and more */ + unsigned char char_addr; /* Character data base address */ + unsigned char video_addr; /* Video memory base address */ + unsigned char bgcolor; /* Background color */ + unsigned char color1; /* Color register #1 */ + unsigned char color2; /* Color register #2 */ + unsigned char color3; /* Color register #3 */ + unsigned char bordercolor; /* Border color */ + unsigned char bmap_reload_hi; /* Bitmap reload bits 8+9 */ + unsigned char bmap_reload_lo; /* Bitmap reload bits 0-7 */ + unsigned char rasterline_hi; /* Current rasterline bit 8 */ + unsigned char rasterline_lo; /* Current rasterline bits 0-7 */ + unsigned char rastercolumn; /* Current rastercolumn */ + unsigned char cursor_blink; /* Cursor blink attribute */ + unsigned char unused[30]; /* Unused */ + unsigned char enable_rom; /* Write enables ROM */ + unsigned char enable_ram; /* Write enables RAM */ +}; + + + +/* End of _ted.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* ace.h */ +/* */ +/* ACE system-specific definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-2015, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ACE_H +#define _ACE_H + + + +/* Check for errors */ +#if !defined(__ACE__) +# error This module may only be used when compiling for the ACE os! +#endif + + + +#ifndef _STDDEF_H +#include +#endif + + + +struct aceDirentBuf { + unsigned long ad_size; /* Size in bytes */ + unsigned char ad_date [8]; /* YY:YY:MM:DD:HH:MM:SS:TW */ + char ad_type [4]; /* File type as ASCIIZ string */ + unsigned char ad_flags; /* File flags */ + unsigned char ad_usage; /* More flags */ + unsigned char ad_namelen; /* Length of name */ + char ad_name [17]; /* Name itself, ASCIIZ */ +}; + +int __cdecl__ aceDirOpen (char* dir); +int __cdecl__ aceDirClose (int handle); +int __cdecl__ aceDirRead (int handle, struct aceDirentBuf* buf); + +/* Type of an ACE key. Key in low byte, shift mask in high byte */ +typedef unsigned int aceKey; + +/* #defines for the shift mask returned by aceConGetKey */ +#define aceSH_KEY 0x00FF /* Mask key itself */ +#define aceSH_MASK 0xFF00 /* Mask shift mask */ +#define aceSH_EXT 0x2000 /* Extended key */ +#define aceSH_CAPS 0x1000 /* Caps lock key */ +#define aceSH_ALT 0x0800 /* Alternate key */ +#define aceSH_CTRL 0x0400 /* Ctrl key */ +#define aceSH_CBM 0x0200 /* Commodore key */ +#define aceSH_SHIFT 0x0100 /* Shift key */ + +/* #defines for the options in aceConSetOpt/aceConGetOpt */ +#define aceOP_PUTMASK 1 /* Console put mask */ +#define aceOP_CHARCOLOR 2 /* Character color */ +#define aceOP_CHARATTR 3 /* Character attribute */ +#define aceOP_FILLCOLOR 4 /* Fill color */ +#define aceOP_FILLATTR 5 /* Fill attribute */ +#define aceOP_CRSCOLOR 6 /* Cursor color */ +#define aceOP_CRSWRAP 7 /* Force cursor wrap */ +#define aceOP_SHSCROLL 8 /* Shift keys for scrolling */ +#define aceOP_MOUSCALE 9 /* Mouse scaling */ +#define aceOP_RPTDELAY 10 /* Key repeat delay */ +#define aceOP_RPTRATE 11 /* Key repeat rate */ + +/* Console functions */ +void __cdecl__ aceConWrite (char* buf, size_t count); +void __cdecl__ aceConPutLit (int c); +void __cdecl__ aceConPos (unsigned x, unsigned y); +void __cdecl__ aceConGetPos (unsigned* x, unsigned* y); +unsigned aceConGetX (void); +unsigned aceConGetY (void); +char __cdecl__* aceConInput (char* buf, unsigned initial); +int aceConStopKey (void); +aceKey aceConGetKey (void); +int __cdecl__ aceConKeyAvail (aceKey* key); +void __cdecl__ aceConKeyMat (char* matrix); +void __cdecl__ aceConSetOpt (unsigned char opt, unsigned char val); +int __cdecl__ aceConGetOpt (unsigned char opt); + +/* Misc stuff */ +int __cdecl__ aceMiscIoPeek (unsigned addr); +void __cdecl__ aceMiscIoPoke (unsigned addr, unsigned char val); + + + +/* End of ace.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* joystick.h */ +/* */ +/* Read the joystick on systems that support it */ +/* */ +/* */ +/* */ +/* (C) 1998-2011, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _JOYSTICK_H +#define _JOYSTICK_H + + + +/*****************************************************************************/ +/* Definitions */ +/*****************************************************************************/ + + + +/* Error codes */ +#define JOY_ERR_OK 0 /* No error */ +#define JOY_ERR_NO_DRIVER 1 /* No driver available */ +#define JOY_ERR_CANNOT_LOAD 2 /* Error loading driver */ +#define JOY_ERR_INV_DRIVER 3 /* Invalid driver */ +#define JOY_ERR_NO_DEVICE 4 /* Device (hardware) not found */ + +/* Argument for the joy_read function */ +#define JOY_1 0 +#define JOY_2 1 + +/* The following codes are *indices* into the joy_masks array */ +#define JOY_UP 0 +#define JOY_DOWN 1 +#define JOY_LEFT 2 +#define JOY_RIGHT 3 +#define JOY_FIRE 4 +#define JOY_FIRE2 5 /* Second fire button if available */ + +/* Array of masks used to check the return value of joy_read for a state */ +extern const unsigned char joy_masks[8]; + +/* Macros that evaluate the return code of joy_read */ +#define JOY_BTN_UP(v) ((v) & joy_masks[JOY_UP]) +#define JOY_BTN_DOWN(v) ((v) & joy_masks[JOY_DOWN]) +#define JOY_BTN_LEFT(v) ((v) & joy_masks[JOY_LEFT]) +#define JOY_BTN_RIGHT(v) ((v) & joy_masks[JOY_RIGHT]) +#define JOY_BTN_FIRE(v) ((v) & joy_masks[JOY_FIRE]) +#define JOY_BTN_FIRE2(v) ((v) & joy_masks[JOY_FIRE2]) + +/* The name of the standard joystick driver for a platform */ +extern const char joy_stddrv[]; + +/* The address of the static standard joystick driver for a platform */ +extern const void joy_static_stddrv[]; + + + +/*****************************************************************************/ +/* Functions */ +/*****************************************************************************/ + + + +unsigned char __fastcall__ joy_load_driver (const char* driver); +/* Load and install a joystick driver. Return an error code. */ + +unsigned char joy_unload (void); +/* Uninstall, then unload the currently loaded driver. */ + +unsigned char __fastcall__ joy_install (void* driver); +/* Install an already loaded driver. Return an error code. */ + +unsigned char joy_uninstall (void); +/* Uninstall the currently loaded driver and return an error code. +** Note: This call does not free allocated memory. +*/ + +unsigned char joy_count (void); +/* Return the number of joysticks supported by the driver */ + +unsigned char __fastcall__ joy_read (unsigned char joystick); +/* Read a particular joystick */ + + + +/* End of joystick.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* em.h */ +/* */ +/* API for extended memory access */ +/* */ +/* */ +/* */ +/* (C) 2002-2012, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _EM_H +#define _EM_H + + + +/*****************************************************************************/ +/* Definitions */ +/*****************************************************************************/ + + + +/* Size of an extended memory page */ +#define EM_PAGE_SIZE 256 + +/* Error codes */ +#define EM_ERR_OK 0 /* No error */ +#define EM_ERR_NO_DRIVER 1 /* No driver available */ +#define EM_ERR_CANNOT_LOAD 2 /* Error loading driver */ +#define EM_ERR_INV_DRIVER 3 /* Invalid driver */ +#define EM_ERR_NO_DEVICE 4 /* Device (hardware) not found */ +#define EM_ERR_INSTALLED 5 /* A driver is already installed */ + +/* Parameters for the em_copy_... functions. NOTE: The first seven bytes +** have the same order and alignment as needed for the Commodore REU, so +** don't change the order without changing the assembler file that defines +** the struct offsets and the code in the REU driver. +*/ +struct em_copy { + void* buf; /* Memory buffer to copy from or to */ + unsigned char offs; /* Offset into page */ + unsigned page; /* Starting page to copy from or to */ + unsigned count; /* Number of bytes to copy */ + unsigned char unused; /* Make the size 8 bytes */ +}; + + + +/*****************************************************************************/ +/* Functions */ +/*****************************************************************************/ + + + +unsigned char __fastcall__ em_load_driver (const char* driver); +/* Load and install an extended memory driver. Return an error code. */ + +unsigned char em_unload (void); +/* Uninstall, then unload the currently loaded driver. */ + +unsigned char __fastcall__ em_install (void* driver); +/* Install an already loaded driver. Return an error code. */ + +unsigned char em_uninstall (void); +/* Uninstall the currently loaded driver and return an error code. +** Note: This call does not free allocated memory. +*/ + +unsigned em_pagecount (void); +/* Return the total number of 256 byte pages available in extended memory. */ + +void* __fastcall__ em_map (unsigned page); +/* Unmap the current page from memory and map a new one. The function returns +** a pointer to the location of the page in memory. Note: Without calling +** em_commit, the old contents of the memory window may be lost! +*/ + +void* __fastcall__ em_use (unsigned page); +/* Tell the driver that the memory window is associated with a given page. +** This call is very similar to em_map. The difference is that the driver +** does not necessarily transfer the current contents of the extended +** memory into the returned window. If you're going to just write to the +** window and the current contents of the window are invalid or no longer +** use, this call may perform better than em_map. +*/ + +void em_commit (void); +/* Commit changes in the memory window to extended storage. If the contents +** of the memory window have been changed, these changes may be lost if +** em_map, em_copyfrom or em_copyto are called without calling em_commit +** first. Note: Not calling em_commit does not mean that the changes are +** discarded, it does just mean that some drivers will discard the changes. +*/ + +void __fastcall__ em_copyfrom (const struct em_copy* copy_data); +/* Copy from extended into linear memory. Note: This may invalidate the +** currently mapped page. +*/ + +void __fastcall__ em_copyto (const struct em_copy* copy_data); +/* Copy from linear into extended memory. Note: This may invalidate the +** currently mapped page. +*/ + + + +/* End of em.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* device.h */ +/* */ +/* Device handling */ +/* */ +/* */ +/* */ +/* (C) 2012 Oliver Schmidt, */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _DEVICE_H +#define _DEVICE_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +#define INVALID_DEVICE 255 + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +unsigned char getfirstdevice (void); + +unsigned char __fastcall__ getnextdevice (unsigned char device); + +unsigned char getcurrentdevice (void); + +char* __fastcall__ getdevicedir (unsigned char device, char* buf, size_t size); + + + +/* End of device.h */ +#endif +/*****************************************************************************/ +/* */ +/* _vdc.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 1998-2000 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __VDC_H +#define __VDC_H + + + +/* Define a structure with the vdc register offsets */ +struct __vdc { + unsigned char ctrl; /* Control register */ + unsigned char data; /* Data register */ +}; + + + +/* End of _vdc.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* assert.h */ +/* */ +/* Diagnostics */ +/* */ +/* */ +/* */ +/* (C) 1998-2015, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ASSERT_H +#define _ASSERT_H + + + +#undef assert +#ifdef NDEBUG +# define assert(expr) +#else +extern void __fastcall__ _afailed (const char*, unsigned); +# define assert(expr) ((expr)? (void)0 : _afailed(__FILE__, __LINE__)) +#endif + + + +/* End of assert.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* setjmp.h */ +/* */ +/* Nonlocal jumps */ +/* */ +/* */ +/* */ +/* (C) 1998-2009, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _SETJMP_H +#define _SETJMP_H + + + +typedef char jmp_buf [5]; + + + +int __fastcall__ _setjmp (jmp_buf buf); +#define setjmp _setjmp /* ISO insists on a macro */ +void __fastcall__ longjmp (jmp_buf buf, int retval) __attribute__((noreturn)); + + + +/* End of setjmp.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* stdint.h */ +/* */ +/* Standard integer types */ +/* */ +/* */ +/* */ +/* (C) 2002 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +/* Note: This file is not fully ISO 9899-1999 compliant because cc65 lacks +** a 64 bit data types. The declarations have been adjusted accordingly. +*/ + + + +#ifndef _STDINT_H +#define _STDINT_H + + + +/* Exact-width integer types */ +typedef signed char int8_t; +typedef int int16_t; +typedef long int32_t; +typedef unsigned char uint8_t; +typedef unsigned uint16_t; +typedef unsigned long uint32_t; + +#define INT8_MIN ((int8_t) 0x80) +#define INT8_MAX ((int8_t) 0x7F) +#define INT16_MIN ((int16_t) 0x8000) +#define INT16_MAX ((int16_t) 0x7FFF) +#define INT32_MIN ((int32_t) 0x80000000) +#define INT32_MAX ((int32_t) 0x7FFFFFFF) +#define UINT8_MAX ((uint8_t) 0xFF) +#define UINT16_MAX ((uint16_t) 0xFFFF) +#define UINT32_MAX ((uint32_t) 0xFFFFFFFF) + +/* Minimum-width integer types */ +typedef signed char int_least8_t; +typedef int int_least16_t; +typedef long int_least32_t; +typedef unsigned char uint_least8_t; +typedef unsigned uint_least16_t; +typedef unsigned long uint_least32_t; + +#define INT_LEAST8_MIN ((int_least8_t) 0x80) +#define INT_LEAST8_MAX ((int_least8_t) 0x7F) +#define INT_LEAST16_MIN ((int_least16_t) 0x8000) +#define INT_LEAST16_MAX ((int_least16_t) 0x7FFF) +#define INT_LEAST32_MIN ((int_least32_t) 0x80000000) +#define INT_LEAST32_MAX ((int_least32_t) 0x7FFFFFFF) +#define UINT_LEAST8_MAX ((uint_least8_t) 0xFF) +#define UINT_LEAST16_MAX ((uint_least16_t) 0xFFFF) +#define UINT_LEAST32_MAX ((uint_least32_t) 0xFFFFFFFF) + +/* Fastest minimum-width integer types */ +typedef signed char int_fast8_t; +typedef int int_fast16_t; +typedef long int_fast32_t; +typedef unsigned char uint_fast8_t; +typedef unsigned uint_fast16_t; +typedef unsigned long uint_fast32_t; + +#define INT_FAST8_MIN ((int_fast8_t) 0x80) +#define INT_FAST8_MAX ((int_fast8_t) 0x7F) +#define INT_FAST16_MIN ((int_fast16_t) 0x8000) +#define INT_FAST16_MAX ((int_fast16_t) 0x7FFF) +#define INT_FAST32_MIN ((int_fast32_t) 0x80000000) +#define INT_FAST32_MAX ((int_fast32_t) 0x7FFFFFFF) +#define UINT_FAST8_MAX ((uint_fast8_t) 0xFF) +#define UINT_FAST16_MAX ((uint_fast16_t) 0xFFFF) +#define UINT_FAST32_MAX ((uint_fast32_t) 0xFFFFFFFF) + +/* Integer types capable of holding object pointers */ +typedef int intptr_t; +typedef unsigned uintptr_t; + +#define INTPTR_MIN ((intptr_t)0x8000) +#define INTPTR_MAX ((intptr_t)0x7FFF) +#define UINTPTR_MAX ((uintptr_t) 0xFFFF) + +/* Greatest width integer types */ +typedef long intmax_t; +typedef unsigned long uintmax_t; + +#define INTMAX_MIN ((intmax_t) 0x80000000) +#define INTMAX_MAX ((intmax_t) 0x7FFFFFFF) +#define UINTMAX_MAX ((uintmax_t) 0xFFFFFFFF) + +/* Limits of other integer types */ +#define PTRDIFF_MIN ((int) 0x8000) +#define PTRDIFF_MAX ((int) 0x7FFF) + +#define SIG_ATOMIC_MIN ((unsigned char) 0x00) +#define SIG_ATOMIC_MAX ((unsigned char) 0xFF) + +#define SIZE_MAX 0xFFFF + +/* Macros for minimum width integer constants */ +#define INT8_C(c) c +#define INT16_C(c) c +#define INT32_C(c) c##L +#define UINT8_C(c) c##U +#define UINT16_C(c) c##U +#define UINT32_C(c) c##UL + +/* Macros for greatest width integer constants */ +#define INTMAX_C(c) c##L +#define UINTMAX_C(c) c##UL + + + +/* End of stdint.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* cbm264.h */ +/* */ +/* System specific definitions for the C16, C116 and Plus/4 */ +/* */ +/* */ +/* */ +/* (C) 1998-2003 Ullrich von Bassewitz */ +/* Römerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _CBM264_H +#define _CBM264_H + + + +/* Check for errors */ +#if !defined(__C16__) +# error This module may only be used when compiling for the Plus/4 or C16! +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Additional key defines */ +#define CH_F1 133 +#define CH_F2 137 +#define CH_F3 134 +#define CH_F4 138 +#define CH_F5 135 +#define CH_F6 139 +#define CH_F7 136 +#define CH_F8 140 + + + +/* Color attributes */ +#define CATTR_LUMA0 0x00 +#define CATTR_LUMA1 0x10 +#define CATTR_LUMA2 0x20 +#define CATTR_LUMA3 0x30 +#define CATTR_LUMA4 0x40 +#define CATTR_LUMA5 0x50 +#define CATTR_LUMA6 0x60 +#define CATTR_LUMA7 0x70 +#define CATTR_BLINK 0x80 + +/* Base colors */ +#define BCOLOR_BLACK 0x00 +#define BCOLOR_WHITE 0x01 +#define BCOLOR_RED 0x02 +#define BCOLOR_CYAN 0x03 +#define BCOLOR_VIOLET 0x04 +#define BCOLOR_PURPLE BCOLOR_VIOLET +#define BCOLOR_GREEN 0x05 +#define BCOLOR_BLUE 0x06 +#define BCOLOR_YELLOW 0x07 +#define BCOLOR_ORANGE 0x08 +#define BCOLOR_BROWN 0x09 +#define BCOLOR_LEMON 0x0A /* What's that color? */ +#define BCOLOR_LIGHTVIOLET 0x0B +#define BCOLOR_BLUEGREEN 0x0C +#define BCOLOR_LIGHTBLUE 0x0D +#define BCOLOR_DARKBLUE 0x0E +#define BCOLOR_LIGHTGREEN 0x0F + +/* Now try to mix up a C64/C128 compatible palette */ +#define COLOR_BLACK (BCOLOR_BLACK) +#define COLOR_WHITE (BCOLOR_WHITE | CATTR_LUMA7) +#define COLOR_RED (BCOLOR_RED | CATTR_LUMA4) +#define COLOR_CYAN (BCOLOR_CYAN | CATTR_LUMA7) +#define COLOR_VIOLET (BCOLOR_VIOLET | CATTR_LUMA7) +#define COLOR_PURPLE COLOR_VIOLET +#define COLOR_GREEN (BCOLOR_GREEN | CATTR_LUMA7) +#define COLOR_BLUE (BCOLOR_BLUE | CATTR_LUMA7) +#define COLOR_YELLOW (BCOLOR_YELLOW | CATTR_LUMA7) +#define COLOR_ORANGE (BCOLOR_ORANGE | CATTR_LUMA7) +#define COLOR_BROWN (BCOLOR_BROWN | CATTR_LUMA7) +#define COLOR_LIGHTRED (BCOLOR_RED | CATTR_LUMA7) +#define COLOR_GRAY1 (BCOLOR_WHITE | CATTR_LUMA1) +#define COLOR_GRAY2 (BCOLOR_WHITE | CATTR_LUMA3) +#define COLOR_LIGHTGREEN (BCOLOR_LIGHTGREEN | CATTR_LUMA7) +#define COLOR_LIGHTBLUE (BCOLOR_LIGHTBLUE | CATTR_LUMA7) +#define COLOR_GRAY3 (BCOLOR_WHITE | CATTR_LUMA5) + +/* Define hardware */ +#include <_ted.h> +#define TED (*(struct __ted*)0xFF00) + +/* Define special memory areas */ +#define COLOR_RAM ((unsigned char*)0x0800) + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +/* End of cbm264.h */ +#endif + + + + +/*****************************************************************************/ +/* */ +/* vic20.h */ +/* */ +/* vic20 system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-2004 Ullrich von Bassewitz */ +/* Römerstraße 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _VIC20_H +#define _VIC20_H + + + +/* Check for errors */ +#if !defined(__VIC20__) +# error This module may only be used when compiling for the Vic20! +#endif + + + +/* Additional key defines */ +#define CH_F1 133 +#define CH_F2 137 +#define CH_F3 134 +#define CH_F4 138 +#define CH_F5 135 +#define CH_F6 139 +#define CH_F7 136 +#define CH_F8 140 + + + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 +#define COLOR_RED 0x02 +#define COLOR_CYAN 0x03 +#define COLOR_VIOLET 0x04 +#define COLOR_GREEN 0x05 +#define COLOR_BLUE 0x06 +#define COLOR_YELLOW 0x07 +#define COLOR_ORANGE 0x08 +#define COLOR_BROWN 0x09 +#define COLOR_LIGHTRED 0x0A +#define COLOR_GRAY1 0x0B +#define COLOR_GRAY2 0x0C +#define COLOR_LIGHTGREEN 0x0D +#define COLOR_LIGHTBLUE 0x0E +#define COLOR_GRAY3 0x0F + + + +/* Define hardware */ +#include <_vic.h> +#define VIC (*(struct __vic*)0x9000) + +#include <_6522.h> +#define VIA1 (*(struct __6522*)0x9110) +#define VIA2 (*(struct __6522*)0x9120) + + + +/* Define special memory areas */ +#define COLOR_RAM ((unsigned char*)0x9600) + + + +/* The addresses of the static drivers */ +extern void vic20_ptvjoy_joy[]; +extern void vic20_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ + + + +/* End of vic20.h */ +#endif +/*****************************************************************************/ +/* */ +/* _mikey.h */ +/* */ +/* Atari Lynx, Mikey chip register hardware structures */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +#ifndef __MIKEY_H +#define __MIKEY_H + +/* timer structure */ +typedef struct _mikey_timer { + unsigned char reload; + unsigned char control; + unsigned char count; + unsigned char control2; +} _mikey_timer; + +typedef struct _mikey_all_timers { + struct _mikey_timer timer[8]; +} _mikey_all_timers; + +/* audio channel structure */ +typedef struct _mikey_audio { + unsigned char volume; + unsigned char feedback; + unsigned char dac; + unsigned char shiftlo; + unsigned char reload; + unsigned char control; + unsigned char count; + unsigned char other; +} _mikey_audio; + +/* Define a structure with the mikey register offsets */ +struct __mikey { + struct _mikey_timer timer0; // 0xFD00 + struct _mikey_timer timer1; // 0xFD04 + struct _mikey_timer timer2; // 0xFD08 + struct _mikey_timer timer3; // 0xFD0C + struct _mikey_timer timer4; // 0xFD10 + struct _mikey_timer timer5; // 0xFD14 + struct _mikey_timer timer6; // 0xFD18 + struct _mikey_timer timer7; // 0xFD1C + struct _mikey_audio channel_a; // 0xFD20 + struct _mikey_audio channel_b; // 0xFD28 + struct _mikey_audio channel_c; // 0xFD30 + struct _mikey_audio channel_d; // 0xFD38 + unsigned char attena; // 0xFD40 ?? not yet allocated? + unsigned char attenb; // 0xFD41 | + unsigned char attenc; // 0xFD42 | + unsigned char attend; // 0xFD43 | + unsigned char panning; // 0xFD44 | + unsigned char unused0[11]; // 0xFD45 - 0xFD4F not used + unsigned char mstereo; // 0xFD50 stereo control bits + unsigned char unused1[47]; // 0xFD51 - 0xFD7F not used + unsigned char intrst; // 0xFD80 interrupt poll 0 + unsigned char intset; // 0xFD81 interrupt poll 1 + unsigned char unused2[2]; // 0xFD82 - 0xFD83 not used + unsigned char magrdy0; // 0xFD84 mag tape channel0 ready bit + unsigned char magrdy1; // 0xFD85 mag tape channel1 ready bit + unsigned char audin; // 0xFD86 audio in + unsigned char sysctl1; // 0xFD87 control bits + unsigned char mikeyrev; // 0xFD88 mikey hardware rev + unsigned char mikeysrev; // 0xFD89 mikey software rev + unsigned char iodir; // 0xFD8A parallel i/o data dir + unsigned char iodat; // 0xFD8B parallel data + unsigned char serctl; // 0xFD8C serial control register + unsigned char serdat; // 0xFD8D serial data + unsigned char unused3[2]; // 0xFD8E - 0xFD8F not used + unsigned char sdoneack; // 0xFD90 suzy done acknowledge + unsigned char cpusleep; // 0xFD91 cpu bus request disable + unsigned char dispctl; // 0xFD92 video bus request enable, viddma + unsigned char pkbkup; // 0xFD93 magic 'P' count + unsigned char *scrbase; // 0xFD94 start address of video display + unsigned char unused4[6]; // 0xFD96 - 0xFD9B not used + unsigned char mtest0; // 0xFD9C + unsigned char mtest1; // 0xFD9D + unsigned char mtest2; // 0xFD9E + unsigned char unused5; // 0xFD9F not used + unsigned char palette[32]; // 0xFDA0 - 0xFDBF palette 32 bytes + // 0xFDC0 - 0xFDFF not used +}; + + +#endif + +/*****************************************************************************/ +/* */ +/* locale.h */ +/* */ +/* Localization */ +/* */ +/* */ +/* */ +/* (C) 1998-2005 Ullrich von Bassewitz */ +/* Römerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _LOCALE_H +#define _LOCALE_H + + + +/* NULL pointer */ +#ifndef _HAVE_NULL +#define NULL 0 +#define _HAVE_NULL +#endif + +/* Locale information constants */ +#define LC_ALL 0 +#define LC_COLLATE 1 +#define LC_CTYPE 2 +#define LC_MONETARY 3 +#define LC_NUMERIC 4 +#define LC_TIME 5 + +/* Struct containing locale settings */ +struct lconv { + char* currency_symbol; + char* decimal_point; + char* grouping; + char* int_curr_symbol; + char* mon_decimal_point; + char* mon_grouping; + char* mon_thousands_sep; + char* negative_sign; + char* positive_sign; + char* thousands_sep; + char frac_digits; + char int_frac_digits; + char n_cs_precedes; + char n_sep_by_space; + char n_sign_posn; + char p_cs_precedes; + char p_sep_by_space; + char p_sign_posn; +}; + +/* Function prototypes */ +struct lconv* localeconv (void); +char* __fastcall__ setlocale (int category, const char* locale); + + + +/* End of locale.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* _6522.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 2004 Stefan Haubenthal */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __VIA_H +#define __VIA_H + + + +/* Define a structure with the 6522 register offsets. +** NOTE: The timer registers are not declared as 16 bit registers, because +** the order in which the two 8 bit halves are written is important, and +** the compiler doesn't guarantee any order when writing 16 bit values. +*/ +struct __6522 { + unsigned char prb; /* Port register B */ + unsigned char pra; /* Port register A */ + unsigned char ddrb; /* Data direction register B */ + unsigned char ddra; /* Data direction register A */ + unsigned char t1_lo; /* Timer 1, low byte */ + unsigned char t1_hi; /* Timer 1, high byte */ + unsigned char t1l_lo; /* Timer 1 latch, low byte */ + unsigned char t1l_hi; /* Timer 1 latch, high byte */ + unsigned char t2_lo; /* Timer 2, low byte */ + unsigned char t2_hi; /* Timer 2, high byte */ + unsigned char sr; /* Shift register */ + unsigned char acr; /* Auxiliary control register */ + unsigned char pcr; /* Peripheral control register */ + unsigned char ifr; /* Interrupt flag register */ + unsigned char ier; /* Interrupt enable register */ + unsigned char pra2; /* Port register A w/o handshake */ +}; + + + +/* End of _6522.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* _6545.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 1998-2000 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __6545_H +#define __6545_H + + + +/* Define a structure with the 6545 register offsets */ +struct __6545 { + unsigned char ctrl; /* Control register */ + unsigned char data; /* Data register */ +}; + + + +/* End of _6545.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* cbm_filetype.h */ +/* */ +/* Definitions for CBM file types */ +/* */ +/* */ +/* */ +/* (C) 2012, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _CBM_FILETYPE_H +#define _CBM_FILETYPE_H + + + +/* Check for errors */ +#if !defined(__CBM__) +# error This module may be used only when compiling for CBM machines! +#endif + + + +/*****************************************************************************/ +/* Definitions */ +/*****************************************************************************/ + + + +/* CBM FILE TYPES. The definitions are used within standard headers, so we +** be careful with identifiers in the user name space. +** "Regular" files have a special bit set so it's easier to pick them out. +*/ +#define _CBM_T_REG 0x10U /* Bit set for regular files */ +#define _CBM_T_SEQ 0x10U +#define _CBM_T_PRG 0x11U +#define _CBM_T_USR 0x12U +#define _CBM_T_REL 0x13U +#define _CBM_T_VRP 0x14U /* Vorpal fast-loadable format */ +#define _CBM_T_DEL 0x00U +#define _CBM_T_CBM 0x01U /* 1581 sub-partition */ +#define _CBM_T_DIR 0x02U /* IDE64 and CMD sub-directory */ +#define _CBM_T_LNK 0x03U /* IDE64 soft-link */ +#define _CBM_T_OTHER 0x04U /* File-type not recognized */ +#define _CBM_T_HEADER 0x05U /* Disk header / title */ + +#if __CC65_STD__ == __CC65_STD_CC65__ +/* Allow for names without leading underscores */ +#define CBM_T_DEL _CBM_T_DEL +#define CBM_T_SEQ _CBM_T_SEQ +#define CBM_T_PRG _CBM_T_PRG +#define CBM_T_USR _CBM_T_USR +#define CBM_T_REL _CBM_T_REL +#define CBM_T_CBM _CBM_T_CBM +#define CBM_T_DIR _CBM_T_DIR +#define CBM_T_LNK _CBM_T_LNK +#define CBM_T_VRP _CBM_T_VRP +#define CBM_T_OTHER _CBM_T_OTHER +#define CBM_T_HEADER _CBM_T_HEADER +#endif + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +unsigned char __fastcall__ _cbm_filetype (unsigned char c); +/* Map the start character for a file type to one of the file types above. +** Note: 'd' will always mapped to CBM_T_DEL. The calling function has to +** look at the following character to determine if the file type is actually +** CBM_T_DIR. +** This is a function used by the implementation. There is usually no need +** to call it from user code. +*/ + + + +/* End of cbm_filetype.h */ +#endif + + +/*****************************************************************************/ +/* */ +/* nes.h */ +/* */ +/* NES system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2002-2003 Groepaz/Hitmen */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _NES_H +#define _NES_H + + + +/* Check for errors */ +#if !defined(__NES__) +# error This module may only be used when compiling for the NES! +#endif + + + +/* Key and character defines */ +#define CH_ENTER '\n' +#define CH_CURS_UP 0x01 +#define CH_CURS_DOWN 0x02 +#define CH_CURS_LEFT 0x03 +#define CH_CURS_RIGHT 0x04 +#define CH_ESC 8 +#define CH_DEL 20 + +#define CH_CROSS 0x10 +#define CH_RTEE 0x17 +#define CH_LTEE 0x0f +#define CH_TTEE 0x16 +#define CH_BTEE 0x15 +#define CH_HLINE 0x0b +#define CH_VLINE 0x0e +#define CH_ULCORNER 0x14 +#define CH_URCORNER 0x12 +#define CH_LLCORNER 0x11 +#define CH_LRCORNER 0x08 +#define CH_PI 0x05 + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 +#define COLOR_RED 0x02 +#define COLOR_CYAN 0x03 +#define COLOR_VIOLET 0x04 +#define COLOR_GREEN 0x05 +#define COLOR_BLUE 0x06 +#define COLOR_YELLOW 0x07 +#define COLOR_ORANGE 0x08 +#define COLOR_BROWN 0x09 +#define COLOR_LIGHTRED 0x0A +#define COLOR_GRAY1 0x0B +#define COLOR_GRAY2 0x0C +#define COLOR_LIGHTGREEN 0x0D +#define COLOR_LIGHTBLUE 0x0E +#define COLOR_GRAY3 0x0F + +/* Return codes of get_tv */ +#define TV_NTSC 0 +#define TV_PAL 1 +#define TV_OTHER 2 + +/* No support for dynamically loadable drivers */ +#define DYN_DRV 0 + +/* The joystick keys - all keys are supported */ +#define KEY_A 0x01 +#define KEY_B 0x02 +#define KEY_SELECT 0x04 +#define KEY_START 0x08 +#define KEY_UP 0x10 +#define KEY_DOWN 0x20 +#define KEY_LEFT 0x40 +#define KEY_RIGHT 0x80 + +/* Define hardware */ + +/* Picture Processing Unit */ +struct __ppu { + unsigned char control; + unsigned char mask; /* color; show sprites, background */ + signed char volatile const status; + struct { + unsigned char address; + unsigned char data; + } sprite; + unsigned char scroll; + struct { + unsigned char address; + unsigned char data; + } vram; +}; +#define PPU (*(struct __ppu*)0x2000) +#define SPRITE_DMA (APU.sprite.dma) + +/* Audio Processing Unit */ +struct __apu { + struct { + unsigned char control; /* duty, counter halt, volume/envelope */ + unsigned char ramp; + unsigned char period_low; /* timing */ + unsigned char len_period_high; /* length, timing */ + } pulse[2]; + struct { + unsigned char counter; /* counter halt, linear counter */ + unsigned char unused; + unsigned char period_low; /* timing */ + unsigned char len_period_high; /* length, timing */ + } triangle; + struct { + unsigned char control; /* counter halt, volume/envelope */ + unsigned char unused; + unsigned char period; /* loop, timing */ + unsigned char len; /* length */ + } noise; + struct { + unsigned char control; /* IRQ, loop, rate */ + unsigned char output; /* output value */ + unsigned char address; + unsigned char length; + } delta_mod; /* delta pulse-code modulation */ + struct { + unsigned char dma; + } sprite; + signed char volatile status; + unsigned char unused; + unsigned char fcontrol; +}; +#define APU (*(struct __apu*)0x4000) + +#define JOYPAD ((unsigned char volatile[2])0x4016) + +/* The addresses of the static drivers */ +extern void nes_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ +extern void nes_64_56_2_tgi[]; /* Referred to by tgi_static_stddrv[] */ + + + +void waitvblank (void); +/* Wait for the vertical blanking */ + +unsigned char get_tv (void); +/* Return the video mode the machine is using. */ + + + +/* End of nes.h */ +#endif +/* + Supreme GEOS header file + includes all other headers + + Maciej 'YTM/Elysium' Witkowiak, 27.10.1999 +*/ + + + +#ifndef _GEOS_H +#define _GEOS_H + + + +/* Check for errors */ +#if !defined(__GEOS__) +# error This module may only be used when compiling for GEOS! +#endif + + + +#ifndef _GCONST_H +#include +#endif + +#ifndef _GSTRUCT_H +#include +#endif + +#ifndef _GSYM_H +#include +#endif + +#ifndef _GDISK_H +#include +#endif + +#ifndef _GFILE_H +#include +#endif + +#ifndef _GPROCESS_H +#include +#endif + +#ifndef _GGRAPH_H +#include +#endif + +#ifndef _GMENU_H +#include +#endif + +#ifndef _GSPRITE_H +#include +#endif + +#ifndef _GMEMORY_H +#include +#endif + +#ifndef _GSYS_H +#include +#endif + +#ifndef _GDLGBOX_H +#include +#endif + + +#define CH_ULCORNER '+' +#define CH_URCORNER '+' +#define CH_LLCORNER '+' +#define CH_LRCORNER '+' +#define CH_TTEE '+' +#define CH_RTEE '+' +#define CH_BTEE '+' +#define CH_LTEE '+' +#define CH_CROSS '+' + +#define CH_F1 KEY_F1 +#define CH_F2 KEY_F2 +#define CH_F3 KEY_F3 +#define CH_F4 KEY_F4 +#define CH_F5 KEY_F5 +#define CH_F6 KEY_F6 +#define CH_F7 KEY_F7 +#define CH_F8 KEY_F8 + +#define CH_CURS_UP KEY_UP +#define CH_CURS_DOWN KEY_DOWN +#define CH_CURS_LEFT KEY_LEFT +#define CH_CURS_RIGHT KEY_RIGHT +#define CH_DEL KEY_DELETE +#define CH_INS KEY_INSERT +#define CH_ENTER KEY_ENTER +#define CH_STOP KEY_STOP +#define CH_ESC KEY_ESC + +#define COLOR_BLACK BLACK +#define COLOR_WHITE WHITE +#define COLOR_RED RED +#define COLOR_CYAN CYAN +#define COLOR_VIOLET PURPLE +#define COLOR_PURPLE PURPLE +#define COLOR_GREEN GREEN +#define COLOR_BLUE BLUE +#define COLOR_YELLOW YELLOW +#define COLOR_ORANGE ORANGE +#define COLOR_BROWN BROWN +#define COLOR_LIGHTRED LTRED +#define COLOR_GRAY1 DKGREY +#define COLOR_GRAY2 MEDGREY +#define COLOR_LIGHTGREEN LTGREEN +#define COLOR_LIGHTBLUE LTBLUE +#define COLOR_GRAY3 LTGREY + +#define TGI_COLOR_BLACK COLOR_BLACK +#define TGI_COLOR_WHITE COLOR_WHITE +#define TGI_COLOR_RED COLOR_RED +#define TGI_COLOR_CYAN COLOR_CYAN +#define TGI_COLOR_VIOLET COLOR_VIOLET +#define TGI_COLOR_PURPLE COLOR_PURPLE +#define TGI_COLOR_GREEN COLOR_GREEN +#define TGI_COLOR_BLUE COLOR_BLUE +#define TGI_COLOR_YELLOW COLOR_YELLOW +#define TGI_COLOR_ORANGE COLOR_ORANGE +#define TGI_COLOR_BROWN COLOR_BROWN +#define TGI_COLOR_LIGHTRED COLOR_LIGHTRED +#define TGI_COLOR_GRAY1 COLOR_GRAY1 +#define TGI_COLOR_GRAY2 COLOR_GRAY2 +#define TGI_COLOR_LIGHTGREEN COLOR_LIGHTGREEN +#define TGI_COLOR_LIGHTBLUE COLOR_LIGHTBLUE +#define TGI_COLOR_GRAY3 COLOR_GRAY3 + + +/* End of geos.h */ +#endif +/*****************************************************************************/ +/* */ +/* dio.h */ +/* */ +/* Low-Level diskette I/O functions */ +/* */ +/* */ +/* */ +/* (C) 2005 Christian Groessler */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _DIO_H +#define _DIO_H + + + +/* Please note: All functions in this file will set _oserror *and* return its +** value. The only exception is dio_open, which will return NULL, but _oserror +** will be set. All function will also set _oserror in case of successful +** execution, effectively clearing it. +*/ + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +typedef struct __dhandle_t *dhandle_t; + +typedef struct { + unsigned char head; + unsigned track; + unsigned sector; +} dio_phys_pos; + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +unsigned __fastcall__ dio_query_sectsize (dhandle_t handle); +/* returns sector size */ + +unsigned __fastcall__ dio_query_sectcount (dhandle_t handle); +/* returns sector count */ + +dhandle_t __fastcall__ dio_open (unsigned char device); +/* open device for subsequent dio access */ + +unsigned char __fastcall__ dio_close (dhandle_t handle); +/* close device, returns oserror (0 for success) */ + +unsigned char __fastcall__ dio_read (dhandle_t handle, + unsigned sect_num, + void *buffer); +/* read sector from device to memory at */ +/* the number of bytes transferred depends on the sector size */ +/* returns oserror (0 for success) */ + +unsigned char __fastcall__ dio_write (dhandle_t handle, + unsigned sect_num, + const void *buffer); +/* write memory at to sector on device , no verify */ +/* the number of bytes transferred depends on the sector size */ +/* returns oserror (0 for success) */ + +unsigned char __fastcall__ dio_write_verify (dhandle_t handle, + unsigned sect_num, + const void *buffer); +/* write memory at to sector on device , verify after write */ +/* the number of bytes transferred depends on the sector size */ +/* returns oserror (0 for success) */ + +unsigned char __fastcall__ dio_phys_to_log (dhandle_t handle, + const dio_phys_pos *physpos, /* input */ + unsigned *sectnum); /* output */ +/* convert physical sector address (head/track/sector) to logical sector number */ +/* returns oserror (0 for success) */ + +unsigned char __fastcall__ dio_log_to_phys (dhandle_t handle, + const unsigned *sectnum, /* input */ + dio_phys_pos *physpos); /* output */ +/* convert logical sector number to physical sector address (head/track/sector) */ +/* returns oserror (0 for success) */ + +#endif /* #ifndef _DIO_H */ +/*****************************************************************************/ +/* */ +/* o65.h */ +/* */ +/* Definitions for the o65 file format */ +/* */ +/* */ +/* */ +/* (C) 2002-2009, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +/* This files exports structures and constants to handle the o65 relocatable +** file format as defined by Andre Fachat. See the original document under +** +** http://www.6502.org/users/andre/o65/fileformat.html +** +** for more information. +*/ + + + +#ifndef _O65_H +#define _O65_H + + + +/* o65 size type. It is 2 bytes for the 6502 and 4 bytes for the 65816 */ +typedef unsigned o65_size; + + +/* Structure that defines the o65 file header */ +typedef struct o65_header o65_header; +struct o65_header { + char marker[2]; /* Non-C64 marker */ + char magic[3]; /* o65 magic */ + char version; /* Version number */ + unsigned mode; /* Mode word */ + o65_size tbase; /* Original text (code) segment address */ + o65_size tlen; /* Size of text (code) segment */ + o65_size dbase; /* Original data segment address */ + o65_size dlen; /* Size of data segment */ + o65_size bbase; /* Original bss segment address */ + o65_size blen; /* Size of bss segment */ + o65_size zbase; /* Original zp segment address */ + o65_size zlen; /* Size of zp segment */ + o65_size stack; /* Stacksize needed */ +}; + + + +/* Marker, magic and version number */ +#define O65_MARKER_0 0x01 +#define O65_MARKER_1 0x00 +#define O65_MAGIC_0 0x6F /* 'o' */ +#define O65_MAGIC_1 0x36 /* '6' */ +#define O65_MAGIC_2 0x35 /* '5' */ +#define O65_VERSION 0x00 + +/* Defines for the mode word */ +#define O65_CPU_65816 0x8000 /* Executable is for 65816 */ +#define O65_CPU_6502 0x0000 /* Executable is for the 6502 */ +#define O65_CPU_MASK 0x8000 /* Mask to extract CPU type */ + +#define O65_RELOC_PAGE 0x4000 /* Page wise relocation */ +#define O65_RELOC_BYTE 0x0000 /* Byte wise relocation */ +#define O65_RELOC_MASK 0x4000 /* Mask to extract relocation type */ + +#define O65_SIZE_32BIT 0x2000 /* All size words are 32bit */ +#define O65_SIZE_16BIT 0x0000 /* All size words are 16bit */ +#define O65_SIZE_MASK 0x2000 /* Mask to extract size */ + +#define O65_FTYPE_OBJ 0x1000 /* Object file */ +#define O65_FTYPE_EXE 0x0000 /* Executable file */ +#define O65_FTYPE_MASK 0x1000 /* Mask to extract type */ + +#define O65_ADDR_SIMPLE 0x0800 /* Simple addressing */ +#define O65_ADDR_DEFAULT 0x0000 /* Default addressing */ +#define O65_ADDR_MASK 0x0800 /* Mask to extract addressing */ + +#define O65_CHAIN 0x0400 /* Chained file, another one follows */ +#define O65_CHAIN_MASK 0x0400 /* Mask to extract chain flag */ + +#define O65_BSSZERO 0x0200 /* BSS segment must be zeroed */ +#define O65_BSSZERO_MASK 0x0200 /* Mask to extract bss zero flag */ + +/* The following is used if O65_CPU == 6502 */ +#define O65_CPU2_6502 0x0000 /* Executable is for 6502 */ +#define O65_CPU2_65C02 0x0010 /* Executable is for 65C02 */ +#define O65_CPU2_65SC02 0x0020 /* Executable is for 65SC02 */ +#define O65_CPU2_65CE02 0x0030 /* Executable is for 65CE02 */ +#define O65_CPU2_6502X 0x0040 /* Executable is for NMOS 6502 */ +#define O65_CPU2_65816_EMU 0x0050 /* Executable is for 65816 in emul mode */ +#define O65_CPU2_MASK 0x00F0 /* Mask to extract CPU2 field */ + +#define O65_ALIGN_1 0x0000 /* Bytewise alignment */ +#define O65_ALIGN_2 0x0001 /* Align words */ +#define O65_ALIGN_4 0x0002 /* Align longwords */ +#define O65_ALIGN_256 0x0003 /* Align pages (256 bytes) */ +#define O65_ALIGN_MASK 0x0003 /* Mask to extract alignment */ + +/* The mode word as generated by the ld65 linker */ +#define O65_MODE_CC65 (O65_CPU_6502 | \ + O65_RELOC_BYTE | \ + O65_SIZE_16BIT | \ + O65_FTYPE_EXE | \ + O65_ADDR_SIMPLE | \ + O65_ALIGN_1) + +/* The four o65 segment types. */ +#define O65_SEGID_UNDEF 0x00 +#define O65_SEGID_ABS 0x01 +#define O65_SEGID_TEXT 0x02 +#define O65_SEGID_DATA 0x03 +#define O65_SEGID_BSS 0x04 +#define O65_SEGID_ZP 0x05 +#define O65_SEGID_MASK 0x07 + +/* Relocation type codes */ +#define O65_RTYPE_WORD 0x80 +#define O65_RTYPE_HIGH 0x40 +#define O65_RTYPE_LOW 0x20 +#define O65_RTYPE_SEGADDR 0xC0 +#define O65_RTYPE_SEG 0xA0 +#define O65_RTYPE_MASK 0xE0 + +/* Segment IDs */ +#define O65_SEGID_UNDEF 0x00 +#define O65_SEGID_ABS 0x01 +#define O65_SEGID_TEXT 0x02 +#define O65_SEGID_DATA 0x03 +#define O65_SEGID_BSS 0x04 +#define O65_SEGID_ZP 0x05 +#define O65_SEGID_MASK 0x07 + +/* Option tags */ +#define O65_OPT_FILENAME 0 +#define O65_OPT_OS 1 +#define O65_OPT_ASM 2 +#define O65_OPT_AUTHOR 3 +#define O65_OPT_TIMESTAMP 4 + +/* Operating system codes for O65_OPT_OS */ +#define O65_OS_OSA65 1 +#define O65_OS_LUNIX 2 +#define O65_OS_CC65 3 +#define O65_OS_OPENCBM 4 + + + +/* End of o65.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* stdarg.h */ +/* */ +/* Variable arguments */ +/* */ +/* */ +/* */ +/* (C) 1998-2004 Ullrich von Bassewitz */ +/* Römerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _STDARG_H +#define _STDARG_H + + + +typedef unsigned char* va_list; + +#define va_start(ap, fix) ap = ((va_list)&(fix)) +#define va_arg(ap,type) (*(type*)(ap -= ((sizeof (type) + 1) & ~1))) +#if __CC65_STD__ >= __CC65_STD_C99__ +#define va_copy(dest, src) ((dest)=(src)) +#endif +#define va_end(ap) + + + +/* End of stdarg.h */ +#endif + + + + +/*****************************************************************************/ +/* */ +/* stddef.h */ +/* */ +/* Common definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-2009, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _STDDEF_H +#define _STDDEF_H + + + +/* Standard data types */ +#ifndef _HAVE_ptrdiff_t +#define _HAVE_ptrdiff_t +typedef int ptrdiff_t; +#endif +#ifndef _HAVE_wchar_t +#define _HAVE_wchar_t +typedef char wchar_t; +#endif +#ifndef _HAVE_size_t +#define _HAVE_size_t +typedef unsigned size_t; +#endif + +/* NULL pointer */ +#ifndef _HAVE_NULL +#define NULL 0 +#define _HAVE_NULL +#endif + +/* offsetof macro */ +#define offsetof(type, member) (size_t) (&((type*) 0)->member) + + + +/* End of stddef.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* dirent.h */ +/* */ +/* Directory entries for cc65 */ +/* */ +/* */ +/* */ +/* (C) 2005 Oliver Schmidt, */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _DIRENT_H +#define _DIRENT_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +typedef struct DIR DIR; + +#if defined(__APPLE2__) + +struct dirent { + char d_name[16]; + unsigned d_ino; + unsigned d_blocks; + unsigned long d_size; + unsigned char d_type; + struct { + unsigned day :5; + unsigned mon :4; + unsigned year :7; + } d_cdate; + struct { + unsigned char min; + unsigned char hour; + } d_ctime; + unsigned char d_access; + unsigned d_auxtype; + struct { + unsigned day :5; + unsigned mon :4; + unsigned year :7; + } d_mdate; + struct { + unsigned char min; + unsigned char hour; + } d_mtime; +}; + +#define _DE_ISREG(t) ((t) != 0x0F) +#define _DE_ISDIR(t) ((t) == 0x0F) +#define _DE_ISLBL(t) (0) +#define _DE_ISLNK(t) (0) + +#elif defined(__ATARI__) + +struct dirent { + char d_name[13]; /* 8.3 + trailing 0 */ + unsigned char d_type; +}; + +#define _DE_ISREG(t) ((t) != 0xC4) +#define _DE_ISDIR(t) ((t) == 0xC4) +#define _DE_ISLBL(t) (0) +#define _DE_ISLNK(t) (0) + +#elif defined(__CBM__) + +struct dirent { + char d_name[16+1]; + unsigned int d_off; + unsigned int d_blocks; + unsigned char d_type; /* See _CBM_T_xxx defines */ + + /* bsd extensions */ + unsigned char d_namlen; +}; + +/* File type specification macros. We need definitions of CBM file types. */ +#include + +#define _DE_ISREG(t) (((t) & _CBM_T_REG) != 0) +#define _DE_ISDIR(t) ((t) == _CBM_T_DIR) +#define _DE_ISLBL(t) ((t) == _CBM_T_HDR) +#define _DE_ISLNK(t) ((t) == _CBM_T_LNK) + +#elif defined(__LYNX__) + +struct dirent { + unsigned char d_blocks; + unsigned int d_offset; + char d_type; + void *d_address; + unsigned int d_size; +}; + +extern struct dirent FileEntry; +#pragma zpsym ("FileEntry"); + +#define _DE_ISREG(t) (1) +#define _DE_ISDIR(t) (0) +#define _DE_ISLBL(t) (0) +#define _DE_ISLNK(t) (0) + +#else + +struct dirent { + char d_name[1]; +}; + +#define _DE_ISREG(t) (1) +#define _DE_ISDIR(t) (0) +#define _DE_ISLBL(t) (0) +#define _DE_ISLNK(t) (0) + +#endif + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +DIR* __fastcall__ opendir (const char* name); + +struct dirent* __fastcall__ readdir (DIR* dir); + +int __fastcall__ closedir (DIR* dir); + +long __fastcall__ telldir (DIR* dir); + +void __fastcall__ seekdir (DIR* dir, long offs); + +void __fastcall__ rewinddir (DIR* dir); + + + +/* End of dirent.h */ +#endif +/*****************************************************************************/ +/* */ +/* _pokey.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 2000 Freddy Offenga */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __POKEY_H +#define __POKEY_H + + + +/* Define a structure with the pokey register offsets */ +struct __pokey_write { + unsigned char audf1; /* audio channel #1 frequency */ + unsigned char audc1; /* audio channel #1 control */ + unsigned char audf2; /* audio channel #2 frequency */ + unsigned char audc2; /* audio channel #2 control */ + unsigned char audf3; /* audio channel #3 frequency */ + unsigned char audc3; /* audio channel #3 control */ + unsigned char audf4; /* audio channel #4 frequency */ + unsigned char audc4; /* audio channel #4 control */ + unsigned char audctl; /* audio control */ + unsigned char stimer; /* start pokey timers */ + unsigned char skrest; /* reset serial port status reg. */ + unsigned char potgo; /* start paddle scan sequence */ + unsigned char unuse1; /* unused */ + unsigned char serout; /* serial port data output */ + unsigned char irqen; /* interrupt request enable */ + unsigned char skctl; /* serial port control */ +}; +struct __pokey_read { + unsigned char pot0; /* paddle 0 value */ + unsigned char pot1; /* paddle 1 value */ + unsigned char pot2; /* paddle 2 value */ + unsigned char pot3; /* paddle 3 value */ + unsigned char pot4; /* paddle 4 value */ + unsigned char pot5; /* paddle 5 value */ + unsigned char pot6; /* paddle 6 value */ + unsigned char pot7; /* paddle 7 value */ + unsigned char allpot; /* eight paddle port status */ + unsigned char kbcode; /* keyboard code */ + unsigned char random; /* random number generator */ + unsigned char unuse2; /* unused */ + unsigned char unuse3; /* unused */ + unsigned char serin; /* serial port input */ + unsigned char irqst; /* interrupt request status */ + unsigned char skstat; /* serial port status */ +}; + +/* End of _pokey.h */ +#endif /* #ifndef __POKEY_H */ + +/*****************************************************************************/ +/* */ +/* supervision.h */ +/* */ +/* Supervision specific definitions */ +/* */ +/* */ +/* */ +/* 2003 Peter Trauner (trap@utanet.at) */ +/* */ +/* */ +/* This software is provided "as-is," without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment, in the product's documentation, */ +/* would be appreciated, but is not required. */ +/* 2. Alterred source versions must be marked plainly as such, */ +/* and must not be misrepresented as being the original software. */ +/* 3. This notice may not be removed or alterred */ +/* from any source distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _SUPERVISION_H +#define _SUPERVISION_H + + + +/* Check for errors */ +#if !defined(__SUPERVISION__) +# error This module may only be used when compiling for the Supervision! +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +struct __sv_lcd { + unsigned char width; + unsigned char height; + unsigned char xpos; + unsigned char ypos; +}; +#define SV_LCD ((struct __sv_lcd*)0x2000) + +struct __sv_tone { + unsigned delay; + unsigned char control; + unsigned char timer; +}; +#define SV_RIGHT ((struct __sv_tone*)0x2010) +#define SV_LEFT ((struct __sv_tone*)0x2014) + +struct __sv_noise { + unsigned char volume; /* and frequency */ + unsigned char timer; + unsigned char control; +}; +#define SV_NOISE ((struct __sv_noise*)0x2028) + +struct __io_port { + unsigned char in; + unsigned char out; +}; +#define IO_PORT ((struct __io_port*)(0x2021) + +struct __sv_dma { + unsigned start; + unsigned char size; + unsigned char control; + unsigned char on; +}; +#define SV_DMA ((struct __sv_dma*)0x2018) + +#define SV_CONTROL (*(unsigned char*)0x2020) + +#define SV_BANK (*(unsigned char*)0x2026) +#define SV_BANK_COMBINE(nmi,irq_timer,irq_dma,lcd_on, timer_prescale, bank) \ + ((nmi)?1:0)|((irq_timer)?2:0)|((irq_dma)?4:0)|((lcd_on)?8:0) \ + |((timer_prescale)?0x10:0)|((bank)<<5) + +#define SV_VIDEO ((unsigned char*)0x4000) +#define SV_TIMER_COUNT (*(unsigned char*)0x2023) + + + +/* Counters incremented asynchronously! +** If you want more complex, copy the crt0.s file from the libsrc/supervision +** directory and code them yourself (in assembler) +*/ +extern unsigned char sv_nmi_counter; +extern unsigned char sv_timer_irq_counter; +extern unsigned char sv_timer_dma_counter; + + + +/* End of supervision.h */ +#endif + + +/*****************************************************************************/ +/* */ +/* atmos.h */ +/* */ +/* Oric Atmos system-specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2002 Debrune Jérome, */ +/* (C) 2003-2013 Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ATMOS_H +#define _ATMOS_H + + + +/* Check for errors */ +#if !defined(__ATMOS__) +# error This module may only be used when compiling for the Oric Atmos! +#endif + + + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_RED 0x01 +#define COLOR_GREEN 0x02 +#define COLOR_YELLOW 0x03 +#define COLOR_BLUE 0x04 +#define COLOR_MAGENTA 0x05 +#define COLOR_CYAN 0x06 +#define COLOR_WHITE 0x07 + +/* TGI color defines */ +/* White and red are swapped, so that the pallete +** driver is compatible with black-and-white drivers. +*/ +#define TGI_COLOR_BLACK COLOR_BLACK +#define TGI_COLOR_WHITE 1 +#define TGI_COLOR_GREEN COLOR_GREEN +#define TGI_COLOR_YELLOW COLOR_YELLOW +#define TGI_COLOR_BLUE COLOR_BLUE +#define TGI_COLOR_MAGENTA COLOR_MAGENTA +#define TGI_COLOR_CYAN COLOR_CYAN +#define TGI_COLOR_RED 7 + + + +/* Define hardware */ +#include <_6522.h> +#define VIA (*(struct __6522*)0x300) + + + +/* These are defined to be FUNCT + NumberKey */ +#define CH_F1 0xB1 +#define CH_F2 0xB2 +#define CH_F3 0xB3 +#define CH_F4 0xB4 +#define CH_F5 0xB5 +#define CH_F6 0xB6 +#define CH_F7 0xB7 +#define CH_F8 0xB8 +#define CH_F9 0xB9 +#define CH_F10 0xB0 + + + +/* Character codes */ +#define CH_ULCORNER '+' +#define CH_URCORNER '+' +#define CH_LLCORNER '+' +#define CH_LRCORNER '+' +#define CH_TTEE '+' +#define CH_BTEE '+' +#define CH_LTEE '+' +#define CH_RTEE '+' +#define CH_CROSS '+' +#define CH_CURS_UP 11 +#define CH_CURS_DOWN 10 +#define CH_CURS_LEFT 8 +#define CH_CURS_RIGHT 9 +#define CH_DEL 127 +#define CH_ENTER 13 +#define CH_STOP 3 +#define CH_LIRA 95 +#define CH_ESC 27 + + + +/* No support for dynamically loadable drivers */ +#define DYN_DRV 0 + + + +/* The addresses of the static drivers */ +extern void atmos_pase_joy[]; /* Referred to by joy_static_stddrv[] */ +extern void atmos_acia_ser[]; +extern void atmos_228_200_3_tgi[]; +extern void atmos_240_200_2_tgi[]; /* Referred to by tgi_static_stddrv[] */ + + + +/*****************************************************************************/ +/* Functions */ +/*****************************************************************************/ + + + +void __fastcall__ atmos_load(const char* name); +/* Load Atmos tape. */ + +void __fastcall__ atmos_save(const char* name, const void* start, const void* end); +/* Save Atmos tape. */ + +void atmos_explode (void); +/* Bomb sound effect */ + +void atmos_ping (void); +/* Bell or ricochet sound effect */ + +void atmos_shoot (void); +/* Pistol sound effect */ + +void atmos_tick (void); +/* High-pitch click */ + +void atmos_tock (void); +/* Low-pitch click */ + +void atmos_zap (void); +/* Raygun sound effect */ + + + +/* End of atmos.h */ +#endif +/*****************************************************************************/ +/* */ +/* peekpoke.h */ +/* */ +/* PEEK and POKE macros for those who want to write BASIC code in C */ +/* */ +/* */ +/* */ +/* (C) 2003 Ullrich von Bassewitz */ +/* Römerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _PEEKPOKE_H +#define _PEEKPOKE_H + + + +/*****************************************************************************/ +/* Macros */ +/*****************************************************************************/ + + + +#define POKE(addr,val) (*(unsigned char*) (addr) = (val)) +#define POKEW(addr,val) (*(unsigned*) (addr) = (val)) +#define PEEK(addr) (*(unsigned char*) (addr)) +#define PEEKW(addr) (*(unsigned*) (addr)) + + + +/* End of peekpoke.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* apple2.h */ +/* */ +/* Apple ][ system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2000 Kevin Ruland, */ +/* (C) 2003 Ullrich von Bassewitz, */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _APPLE2_H +#define _APPLE2_H + + + +/* Check for errors */ +#if !defined(__APPLE2__) +# error This module may only be used when compiling for the Apple ][! +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 + +/* TGI color defines */ +#define TGI_COLOR_BLACK 0x00 +#define TGI_COLOR_GREEN 0x01 +#define TGI_COLOR_VIOLET 0x02 +#define TGI_COLOR_WHITE 0x03 +#define TGI_COLOR_BLACK2 0x04 +#define TGI_COLOR_ORANGE 0x05 +#define TGI_COLOR_BLUE 0x06 +#define TGI_COLOR_WHITE2 0x07 + +#define TGI_COLOR_MAGENTA TGI_COLOR_BLACK2 +#define TGI_COLOR_DARKBLUE TGI_COLOR_WHITE2 +#define TGI_COLOR_DARKGREEN 0x08 +#define TGI_COLOR_GRAY 0x09 +#define TGI_COLOR_CYAN 0x0A +#define TGI_COLOR_BROWN 0x0B +#define TGI_COLOR_GRAY2 0x0C +#define TGI_COLOR_PINK 0x0D +#define TGI_COLOR_YELLOW 0x0E +#define TGI_COLOR_AQUA 0x0F + +/* Characters codes */ +#define CH_ENTER 0x0D +#define CH_ESC 0x1B +#define CH_CURS_LEFT 0x08 +#define CH_CURS_RIGHT 0x15 + +#define CH_ULCORNER '+' +#define CH_URCORNER '+' +#define CH_LLCORNER '+' +#define CH_LRCORNER '+' +#define CH_TTEE '+' +#define CH_BTEE '+' +#define CH_LTEE '+' +#define CH_RTEE '+' +#define CH_CROSS '+' + +/* Return codes for get_ostype */ +#define APPLE_UNKNOWN 0x00 +#define APPLE_II 0x10 /* Apple ][ */ +#define APPLE_IIPLUS 0x11 /* Apple ][+ */ +#define APPLE_IIIEM 0x20 /* Apple /// (emulation) */ +#define APPLE_IIE 0x30 /* Apple //e */ +#define APPLE_IIEENH 0x31 /* Apple //e (enhanced) */ +#define APPLE_IIECARD 0x40 /* Apple //e Option Card */ +#define APPLE_IIC 0x50 /* Apple //c */ +#define APPLE_IIC35 0x51 /* Apple //c (3.5 ROM) */ +#define APPLE_IICEXP 0x53 /* Apple //c (Mem. Exp.) */ +#define APPLE_IICREV 0x54 /* Apple //c (Rev. Mem. Exp.) */ +#define APPLE_IICPLUS 0x55 /* Apple //c Plus */ +#define APPLE_IIGS 0x80 /* Apple IIgs */ +#define APPLE_IIGS1 0x81 /* Apple IIgs (ROM 1) */ +#define APPLE_IIGS3 0x83 /* Apple IIgs (ROM 3) */ + +extern unsigned char _dos_type; +/* Valid _dos_type values: +** +** AppleDOS 3.3 - 0x00 +** ProDOS 8 1.0.1 - 0x10 +** ProDOS 8 1.0.2 - 0x10 +** ProDOS 8 1.1.1 - 0x11 +** ProDOS 8 1.2 - 0x12 +** ProDOS 8 1.3 - 0x13 +** ProDOS 8 1.4 - 0x14 +** ProDOS 8 1.5 - 0x15 +** ProDOS 8 1.6 - 0x16 +** ProDOS 8 1.7 - 0x17 +** ProDOS 8 1.8 - 0x18 +** ProDOS 8 1.9 - 0x18 (!) +** ProDOS 8 2.0.1 - 0x21 +** ProDOS 8 2.0.2 - 0x22 +** ProDOS 8 2.0.3 - 0x23 +*/ + + + +/*****************************************************************************/ +/* Variables */ +/*****************************************************************************/ + + + +/* The file stream implementation and the POSIX I/O functions will use the +** following variables to determine the file type, aux type and creation time +** stamp to use. +*/ +extern unsigned char _filetype; /* Default: 6 */ +extern unsigned int _auxtype; /* Default: 0 */ +extern struct { + struct { + unsigned day :5; + unsigned mon :4; + unsigned year :7; + } createdate; /* Current date: 0 */ + struct { + unsigned char min; + unsigned char hour; + } createtime; /* Current time: 0 */ +} _datetime; + +/* The addresses of the static drivers */ +#if !defined(__APPLE2ENH__) +extern void a2_auxmem_emd[]; +extern void a2_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ +extern void a2_stdmou_mou[]; /* Referred to by mouse_static_stddrv[] */ +extern void a2_ssc_ser[]; +extern void a2_hi_tgi[]; /* Referred to by tgi_static_stddrv[] */ +extern void a2_lo_tgi[]; +#endif + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +unsigned char get_ostype (void); +/* Get the machine type. Returns one of the APPLE_xxx codes. */ + +void rebootafterexit (void); +/* Reboot machine after program termination has completed. */ + +#define ser_apple2_slot(num) ser_ioctl (0, (void*) (num)) +/* Select a slot number from 1 to 7 prior to ser_open. +** The default slot number is 2. +*/ + +#define tgi_apple2_mix(onoff) tgi_ioctl (0, (void*) (onoff)) +/* If onoff is 1, graphics/text mixed mode is enabled. +** If onoff is 0, graphics/text mixed mode is disabled. +*/ + +/* The following #defines will cause the matching functions calls in conio.h +** to be overlaid by macros with the same names, saving the function call +** overhead. +*/ +#define _textcolor(color) COLOR_WHITE +#define _bgcolor(color) COLOR_BLACK +#define _bordercolor(color) COLOR_BLACK + + + +/* End of apple2.h */ +#endif +/*****************************************************************************/ +/* */ +/* inttypes.h */ +/* */ +/* Format conversion of integer types */ +/* */ +/* */ +/* */ +/* (C) 2002-2011, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +/* Note: This file is not fully ISO 9899-1999 compliant because cc65 lacks +** a 64 bit data types and is not able to return structs > 4 bytes. The +** declarations have been adjusted accordingly or left out. +*/ + + + +#ifndef _INTTYPES_H +#define _INTTYPES_H + + + +/* inttypes.h must always include stdint.h */ +#ifndef _STDINT_H +#include +#endif + + + +/* Standard functions */ +intmax_t __fastcall__ imaxabs (intmax_t val); +intmax_t __fastcall__ strtoimax (const char* nptr, char** endptr, int base); +uintmax_t __fastcall__ strtoumax (const char* nptr, char** endptr, int base); + + + +/* printf() macros for signed integers */ +#define PRId8 "d" +#define PRId16 "d" +#define PRId32 "ld" + +#define PRIdLEAST8 "d" +#define PRIdLEAST16 "d" +#define PRIdLEAST32 "ld" + +#define PRIdFAST8 "d" +#define PRIdFAST16 "d" +#define PRIdFAST32 "ld" + +#define PRIdMAX "ld" +#define PRIdPTR "d" + +#define PRIi8 "i" +#define PRIi16 "i" +#define PRIi32 "li" + +#define PRIiLEAST8 "i" +#define PRIiLEAST16 "i" +#define PRIiLEAST32 "li" + +#define PRIiFAST8 "i" +#define PRIiFAST16 "i" +#define PRIiFAST32 "li" + +#define PRIiMAX "li" +#define PRIiPTR "i" + +/* fprintf() macros for unsigned integers */ +#define PRIo8 "o" +#define PRIo16 "o" +#define PRIo32 "lo" + +#define PRIoLEAST8 "o" +#define PRIoLEAST16 "o" +#define PRIoLEAST32 "lo" + +#define PRIoFAST8 "o" +#define PRIoFAST16 "o" +#define PRIoFAST32 "lo" + +#define PRIoMAX "lo" +#define PRIoPTR "o" + +#define PRIu8 "u" +#define PRIu16 "u" +#define PRIu32 "lu" + +#define PRIuLEAST8 "u" +#define PRIuLEAST16 "u" +#define PRIuLEAST32 "lu" + +#define PRIuFAST8 "u" +#define PRIuFAST16 "u" +#define PRIuFAST32 "lu" + +#define PRIuMAX "lu" +#define PRIuPTR "u" + +#define PRIx8 "x" +#define PRIx16 "x" +#define PRIx32 "lx" + +#define PRIxLEAST8 "x" +#define PRIxLEAST16 "x" +#define PRIxLEAST32 "lx" + +#define PRIxFAST8 "x" +#define PRIxFAST16 "x" +#define PRIxFAST32 "lx" + +#define PRIxMAX "lx" +#define PRIxPTR "x" + +#define PRIX8 "X" +#define PRIX16 "X" +#define PRIX32 "lX" + +#define PRIXLEAST8 "X" +#define PRIXLEAST16 "X" +#define PRIXLEAST32 "lX" + +#define PRIXFAST8 "X" +#define PRIXFAST16 "X" +#define PRIXFAST32 "lX" + +#define PRIXMAX "lX" +#define PRIXPTR "X" + +/* fscanf() macros for signed integers */ +#define SCNd8 "hd" +#define SCNd16 "d" +#define SCNd32 "ld" + +#define SCNdLEAST8 "hd" +#define SCNdLEAST16 "d" +#define SCNdLEAST32 "ld" + +#define SCNdFAST8 "hd" +#define SCNdFAST16 "d" +#define SCNdFAST32 "ld" + +#define SCNdMAX "ld" +#define SCNdPTR "d" + +#define SCNi8 "hi" +#define SCNi16 "i" +#define SCNi32 "li" + +#define SCNiLEAST8 "hi" +#define SCNiLEAST16 "i" +#define SCNiLEAST32 "li" + +#define SCNiFAST8 "hi" +#define SCNiFAST16 "i" +#define SCNiFAST32 "li" + +#define SCNiMAX "li" +#define SCNiPTR "i" + +/* fscanf() macros for unsigned integers */ +#define SCNo8 "ho" +#define SCNo16 "o" +#define SCNo32 "lo" + +#define SCNoLEAST8 "ho" +#define SCNoLEAST16 "o" +#define SCNoLEAST32 "lo" + +#define SCNoFAST8 "ho" +#define SCNoFAST16 "o" +#define SCNoFAST32 "lo" + +#define SCNoMAX "lo" +#define SCNoPTR "o" + +#define SCNu8 "hu" +#define SCNu16 "u" +#define SCNu32 "lu" + +#define SCNuLEAST8 "hu" +#define SCNuLEAST16 "u" +#define SCNuLEAST32 "lu" + +#define SCNuFAST8 "hu" +#define SCNuFAST16 "u" +#define SCNuFAST32 "lu" + +#define SCNuMAX "lu" +#define SCNuPTR "u" + +#define SCNx8 "hx" +#define SCNx16 "x" +#define SCNx32 "lx" + +#define SCNxLEAST8 "hx" +#define SCNxLEAST16 "x" +#define SCNxLEAST32 "lx" + +#define SCNxFAST8 "hx" +#define SCNxFAST16 "x" +#define SCNxFAST32 "lx" + +#define SCNxMAX "lx" +#define SCNxPTR "x" + + + +/* End of inttypes.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* time.h */ +/* */ +/* Date and time */ +/* */ +/* */ +/* */ +/* (C) 1998-2012 Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _TIME_H +#define _TIME_H + + + +/* NULL pointer */ +#ifndef _HAVE_NULL +#define NULL 0 +#define _HAVE_NULL +#endif + +/* size_t is needed */ +#ifndef _HAVE_size_t +#define _HAVE_size_t +typedef unsigned size_t; +#endif + +typedef unsigned long time_t; +typedef unsigned long clock_t; + +/* Structure for broken down time */ +struct tm { + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_wday; + int tm_yday; + int tm_isdst; +}; + +/* Timezone representation, default is UTC */ +extern struct _timezone { + char daylight; /* True if daylight savings time active */ + long timezone; /* Number of seconds behind UTC */ + char tzname[5]; /* Name of timezone, e.g. CET */ + char dstname[5]; /* Name when daylight true, e.g. CEST */ +} _tz; + + + +#if defined(__ATARI__) +/* The clock depends on the video standard, so read it at runtime */ +unsigned _clocks_per_sec (void); +# define CLK_TCK _clocks_per_sec() +# define CLOCKS_PER_SEC _clocks_per_sec() +#elif defined(__ATARI5200__) +# define CLK_TCK 60 /* POSIX */ +# define CLOCKS_PER_SEC 60 /* ANSI */ +#elif defined(__ATMOS__) +# define CLK_TCK 100 /* POSIX */ +# define CLOCKS_PER_SEC 100 /* ANSI */ +#elif defined(__CBM__) +# if defined(__CBM510__) || defined(__CBM610__) +/* The 510/610 gets its clock from the AC current */ +# define CLK_TCK 50 /* POSIX */ +# define CLOCKS_PER_SEC 50 /* ANSI */ +# else +# define CLK_TCK 60 /* POSIX */ +# define CLOCKS_PER_SEC 60 /* ANSI */ +# endif +#elif defined(__NES__) +# define CLK_TCK 50 /* POSIX */ +# define CLOCKS_PER_SEC 50 /* ANSI */ +#elif defined(__PCE__) +# define CLK_TCK 60 /* POSIX */ +# define CLOCKS_PER_SEC 60 /* ANSI */ +#elif defined(__GAMATE__) +# define CLK_TCK 135 /* POSIX */ /* FIXME */ +# define CLOCKS_PER_SEC 135 /* ANSI */ /* FIXME */ +#elif defined(__GEOS__) +# define CLK_TCK 1 /* POSIX */ +# define CLOCKS_PER_SEC 1 /* ANSI */ +#elif defined(__LYNX__) +/* The clock-rate depends on the video scan-rate; +** so, read it at run-time. +*/ +extern clock_t _clk_tck (void); +# define CLK_TCK _clk_tck() +# define CLOCKS_PER_SEC _clk_tck() +#endif + + + +time_t _systime (void); +/* Similar to time(), but: +** - Is not ISO C +** - Does not take the additional pointer +** - Does not set errno when returning -1 +*/ + +/* ISO C function prototypes */ +char* __fastcall__ asctime (const struct tm* timep); +clock_t clock (void); +char* __fastcall__ ctime (const time_t* timep); +struct tm* __fastcall__ gmtime (const time_t* timep); +struct tm* __fastcall__ localtime (const time_t* timep); +time_t __fastcall__ mktime (struct tm* timep); +size_t __fastcall__ strftime (char* buf, size_t bufsize, const char* format, const struct tm* tm); +time_t __fastcall__ time (time_t* t); + + + +/* End of time.h */ + +#endif + + + +/*****************************************************************************/ +/* */ +/* modload.h */ +/* */ +/* o65 module loader interface for cc65 */ +/* */ +/* */ +/* */ +/* (C) 2002 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +/* Exports structures and functions to load relocatable o65 modules at +** runtime. +*/ + + + +#ifndef _MODLOAD_H +#define _MODLOAD_H + + + +/* The following struct is passed to the module loader. It contains stuff, +** the loader needs to work, and another area where the loader will place +** informational data if it was successful. You will have to check the return +** code of mod_load before accessing any of these additional struct members. +*/ +struct mod_ctrl { + /* Parameters passed into the loader routine. The member callerdata + ** is an opaque 16 bit datatype that may be used by the caller to + ** pass data through to the read routine. The read routine is used by the + ** loader to load any required data. There are several calls where the + ** read routine is passed a count of 1, so you may choose to make this + ** a special case when implementing read(). The read() should return the + ** number of bytes actually read. If the return value differs from the + ** passed count, this is considered an error. + ** NOTE: read() is designed so that the POSIX read() routine can be used + ** for this vector, if you're loading from disk. + */ + int __fastcall__ (*read) (int callerdata, void* buffer, unsigned count); + int callerdata; + + /* Parameters set by the loader routine */ + void* module; /* Pointer to module data */ + unsigned module_size; /* Total size of loaded module */ + unsigned module_id; /* Module id */ +}; + + + +unsigned char __fastcall__ mod_load (struct mod_ctrl* ctrl); +/* Load a module into memory and relocate it. The function will return an +** error code (see below). If MLOAD_OK is returned, the outgoing fields in +** the passed mod_ctrl struct contain information about the module just +** loaded. +*/ + +void __fastcall__ mod_free (void* module); +/* Free a loaded module. Note: The given pointer is the pointer to the +** module memory, not a pointer to a control structure. +*/ + + + +/* Errors */ +#define MLOAD_OK 0 /* Module load successful */ +#define MLOAD_ERR_READ 1 /* Read error */ +#define MLOAD_ERR_HDR 2 /* Header error */ +#define MLOAD_ERR_OS 3 /* Wrong OS */ +#define MLOAD_ERR_FMT 4 /* Data format error */ +#define MLOAD_ERR_MEM 5 /* Not enough memory */ + + + +/* End of modload.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* string.h */ +/* */ +/* String handling */ +/* */ +/* */ +/* */ +/* (C) 1998-2014, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _STRING_H +#define _STRING_H + + + +#include + + + +char* __fastcall__ strcat (char* dest, const char* src); +char* __fastcall__ strchr (const char* s, int c); +int __fastcall__ strcmp (const char* s1, const char* s2); +int __fastcall__ strcoll (const char* s1, const char* s2); +char* __fastcall__ strcpy (char* dest, const char* src); +size_t __fastcall__ strcspn (const char* s1, const char* s2); +char* __fastcall__ strerror (int errcode); +size_t __fastcall__ strlen (const char* s); +char* __fastcall__ strncat (char* s1, const char* s2, size_t count); +int __fastcall__ strncmp (const char* s1, const char* s2, size_t count); +char* __fastcall__ strncpy (char* dest, const char* src, size_t count); +char* __fastcall__ strrchr (const char* s, int c); +size_t __fastcall__ strspn (const char* s1, const char* s2); +char* __fastcall__ strstr (const char* str, const char* substr); +char* __fastcall__ strtok (char* s1, const char* s2); +size_t __fastcall__ strxfrm (char* s1, const char* s2, size_t count); +void* __fastcall__ memchr (const void* mem, int c, size_t count); +int __fastcall__ memcmp (const void* p1, const void* p2, size_t count); +void* __fastcall__ memcpy (void* dest, const void* src, size_t count); +void* __fastcall__ memmove (void* dest, const void* src, size_t count); +void* __fastcall__ memset (void* s, int c, size_t count); + +/* The following is an internal function, the compiler will replace memset +** with it if the fill value is zero. Never use this one directly! +*/ +void* __fastcall__ _bzero (void* ptr, size_t n); + +/* Non standard: */ +#if __CC65_STD__ == __CC65_STD_CC65__ +void __fastcall__ bzero (void* ptr, size_t n); /* BSD */ +char* __fastcall__ strdup (const char* s); /* SYSV/BSD */ +int __fastcall__ stricmp (const char* s1, const char* s2); /* DOS/Windows */ +int __fastcall__ strcasecmp (const char* s1, const char* s2); /* Same for Unix */ +int __fastcall__ strnicmp (const char* s1, const char* s2, size_t count); /* DOS/Windows */ +int __fastcall__ strncasecmp (const char* s1, const char* s2, size_t count); /* Same for Unix */ +char* __fastcall__ strlwr (char* s); +char* __fastcall__ strlower (char* s); +char* __fastcall__ strupr (char* s); +char* __fastcall__ strupper (char* s); +char* __fastcall__ strqtok (char* s1, const char* s2); +#endif + +const char* __fastcall__ _stroserror (unsigned char errcode); +/* Map an operating system error number to an error message. */ + + + +/* End of string.h */ +#endif +/*****************************************************************************/ +/* */ +/* pce.h */ +/* */ +/* PC-Engine system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2015 Groepaz/Hitmen */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +#ifndef _PCE_H +#define _PCE_H + +/* Check for errors */ +#if !defined(__PCE__) +# error This module may only be used when compiling for the PCE! +#endif + +#define CH_HLINE 1 +#define CH_VLINE 2 +#define CH_CROSS 3 +#define CH_ULCORNER 4 +#define CH_URCORNER 5 +#define CH_LLCORNER 6 +#define CH_LRCORNER 7 +#define CH_TTEE 8 +#define CH_BTEE 9 +#define CH_LTEE 10 +#define CH_RTEE 11 + +#define CH_ENTER 13 +#define CH_PI 18 + +/* Color defines (CBM compatible, for conio) */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 +#define COLOR_RED 0x02 +#define COLOR_CYAN 0x03 +#define COLOR_VIOLET 0x04 +#define COLOR_GREEN 0x05 +#define COLOR_BLUE 0x06 +#define COLOR_YELLOW 0x07 +#define COLOR_ORANGE 0x08 +#define COLOR_BROWN 0x09 +#define COLOR_LIGHTRED 0x0A +#define COLOR_GRAY1 0x0B +#define COLOR_GRAY2 0x0C +#define COLOR_LIGHTGREEN 0x0D +#define COLOR_LIGHTBLUE 0x0E +#define COLOR_GRAY3 0x0F + +#define TV_NTSC 0 +#define TV_PAL 1 +#define TV_OTHER 2 + +/* No support for dynamically loadable drivers */ +#define DYN_DRV 0 + +/* The addresses of the static drivers */ +extern void pce_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ + +#define JOY_FIRE_B 5 +#define JOY_SELECT 6 +#define JOY_RUN 7 + +void waitvblank (void); +/* Wait for the vertical blanking */ + +/* NOTE: all PCE are NTSC */ +#define get_tv() TV_NTSC +/* Return the video mode the machine is using. */ + +/* End of pce.h */ +#endif +/*****************************************************************************/ +/* */ +/* osic1p.h */ +/* */ +/* Challenger 1P system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2015 Stephan Muehlstrasser */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +#ifndef _OSIC1P_H +#define _OSIC1P_H + +/* Check for errors */ +#if !defined(__OSIC1P__) +# error "This module may only be used when compiling for the Challenger 1P!" +#endif + +/* The following #defines will cause the matching functions calls in conio.h +** to be overlaid by macros with the same names, saving the function call +** overhead. +*/ +#define _textcolor(color) COLOR_WHITE +#define _bgcolor(color) COLOR_BLACK +#define _bordercolor(color) COLOR_BLACK + +#endif +/*****************************************************************************/ +/* */ +/* cbm610.h */ +/* */ +/* CBM610 system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-2009, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _CBM610_H +#define _CBM610_H + + + +/* Check for errors */ +#if !defined(__CBM610__) +# error This module may only be used when compiling for the CBM 610! +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Additional key defines */ +#define CH_F1 224 +#define CH_F2 225 +#define CH_F3 226 +#define CH_F4 227 +#define CH_F5 228 +#define CH_F6 229 +#define CH_F7 230 +#define CH_F8 231 +#define CH_F9 232 +#define CH_F10 233 +#define CH_F11 234 +#define CH_F12 235 +#define CH_F13 236 +#define CH_F14 237 +#define CH_F15 238 +#define CH_F16 239 +#define CH_F17 240 +#define CH_F18 241 +#define CH_F19 242 +#define CH_F20 243 + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 + +/* Define hardware */ +#include <_6545.h> +#define CRTC (*(struct __6545)0xD800) + +#include <_sid.h> +#define SID (*(struct __sid*)0xDA00) + +#include <_6526.h> +#define CIA (*(struct __6526*)0xDC00) + +#include <_6551.h> +#define ACIA (*(struct __6551*)0xDD00) + +#include <_6525.h> +#define TPI1 (*(struct __6525*)0xDE00) +#define TPI2 (*(struct __6525*)0xDF00) + + + +/*****************************************************************************/ +/* Variables */ +/*****************************************************************************/ + + + +/* The addresses of the static drivers */ +extern void cbm610_ram_emd[]; +extern void cbm610_std_ser[]; + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +/* Special routines to read/write bytes and words in the system bank */ +unsigned char __fastcall__ peekbsys (unsigned addr); +unsigned __fastcall__ peekwsys (unsigned addr); +void __fastcall__ pokebsys (unsigned addr, unsigned char val); +void __fastcall__ pokewsys (unsigned addr, unsigned val); + +#if defined(__OPT_i__) && (__OPT_i__ >= 600) +#define peekbsys(addr) \ + __AX__ = (addr), \ + __asm__ ("sta ptr1"), \ + __asm__ ("stx ptr1+1"), \ + __asm__ ("ldx $01"), \ + __asm__ ("lda #$0F"), \ + __asm__ ("sta $01"), \ + __asm__ ("ldy #$00"), \ + __asm__ ("lda (ptr1),y"), \ + __asm__ ("stx $01"), \ + __asm__ ("ldx #$00"), \ + __AX__ +#endif + + + +/* The following #defines will cause the matching functions calls in conio.h +** to be overlaid by macros with the same names, saving the function call +** overhead. +*/ +#define _textcolor(color) COLOR_WHITE +#define _bgcolor(color) COLOR_BLACK +#define _bordercolor(color) COLOR_BLACK + + + +/* End of cbm610.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* _vic.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 2002 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __VIC_H +#define __VIC_H + + + +/* Define a structure with the vic register offsets */ +struct __vic { + unsigned char leftborder; + unsigned char upperborder; + unsigned char charsperline; /* Characters per line */ + unsigned char linecount; /* Number of lines */ + unsigned char rasterline; /* Current raster line */ + unsigned char addr; /* Address of chargen and video ram */ + unsigned char strobe_x; /* Light pen, X position */ + unsigned char strobe_y; /* Light pen, Y position */ + unsigned char analog_x; /* Analog input X */ + unsigned char analog_y; /* Analog input Y */ + unsigned char voice1; /* Sound generator #1 */ + unsigned char voice2; /* Sound generator #2 */ + unsigned char voice3; /* Sound generator #3 */ + unsigned char noise; /* Noise generator */ + unsigned char volume_color; /* Bits 0..3: volume, 4..7: color */ + unsigned char bg_border_color;/* Background and border color */ +}; + + + +/* End of _vic.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* pet.h */ +/* */ +/* PET system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-2005 Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _PET_H +#define _PET_H + + + +/* Check for errors */ +#if !defined(__PET__) +# error This module may only be used when compiling for the CBM PET! +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 + +/* Define hardware */ +#include <_pia.h> +#define PIA1 (*(struct __pia*)0xE810) +#define PIA2 (*(struct __pia*)0xE820) + +#include <_6522.h> +#define VIA (*(struct __6522*)0xE840) + +/* All models from 40xx and above */ +#include <_6545.h> +#define CRTC (*(struct __6545)0xE880) + +/* SuperPET only */ +#include <_6551.h> +#define ACIA (*(struct __6551*)0xEFF0) + + + +/*****************************************************************************/ +/* Variables */ +/*****************************************************************************/ + + + +/* The addresses of the static drivers */ +extern void pet_ptvjoy_joy[]; +extern void pet_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +/* The following #defines will cause the matching functions calls in conio.h +** to be overlaid by macros with the same names, saving the function call +** overhead. +*/ +#define _textcolor(color) COLOR_WHITE +#define _bgcolor(color) COLOR_BLACK +#define _bordercolor(color) COLOR_BLACK + + + +/* End of pet.h */ +#endif +/*****************************************************************************/ +/* */ +/* gamate.h */ +/* */ +/* Gamate system specific definitions */ +/* */ +/* */ +/* */ +/* (w) 2015 Groepaz/Hitmen (groepaz@gmx.net) */ +/* based on technical reference by PeT (mess@utanet.at) */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +#ifndef _GAMATE_H +#define _GAMATE_H + +/* Check for errors */ +#if !defined(__GAMATE__) +# error This module may only be used when compiling for the Gamate! +#endif + +#define AUDIO_BASE 0x4000 + +/* + base clock cpu clock/32 ? + +0/1: 1. channel(right): 12 bit frequency: right frequency 0 nothing, 1 high; + 3 23khz; 4 17,3; 10 6,9; 15 4.6; $60 720hz; $eff 18,0; $fff 16,9 hz) + (delay clock/32) +2/3: 2. channel(left): 12 bit frequency +4/5: 3. channel(both): 12 bit frequency +6: 0..5 noise frequency 0 fast 1f slow (about 500us) 15.6ns--> clock/32 counts +7 control (hinibble right) + bit 0: right channel high (full cycle, else square pulse/tone) + bit 1: left channel high + bit 2: both channel high + bit 3: set right tone (else noise) + bit 4: set left channel normal + bit 5: set both normal + bits 30: 11 high, 10 square, 01 noise, 00 noise only when square high + noise means switches channel to ad converter based noise algorithmen + (white noise shift register 17bit wide, repeats after about 130000 cycles) + probably out=!bit16, bit0=bit16 xor bit13; runs through, so start value anything than 0 +8: 1st volume: 0..3 square volume; bit 4 envelope (higher priority) +9: 2nd volume +10: 3rd volume +11/12: envelope delay time 0 fast, 0xffff slow/nearly no effect (2 22us, 4 56us) + frequency $800, envelope $10 2 times in pulse high time (4*16*16) +13: envelope control + 0-3 one time falling + 4-7 one time rising + 8 falling + 9 one time falling + a starts with down falling, rising; same falling time, but double/longer cycle + b one time falling, on + c rising + d one time rising, on + e rising, falling (double cycle before restart) + f one time rising + bit 0: once only + bit 1: full tone + bit 2: start rising (else falling) + bit 3: +*/ + +#define JOY_DATA 0x4400 + +#define JOY_DATA_UP 0x01 +#define JOY_DATA_DOWN 0x02 +#define JOY_DATA_LEFT 0x04 +#define JOY_DATA_RIGHT 0x08 +#define JOY_DATA_FIRE_A 0x10 +#define JOY_DATA_FIRE_B 0x20 +#define JOY_DATA_START 0x40 +#define JOY_DATA_SELECT 0x80 + +/* LCD + + resolution 160x152 in 4 greys/greens + 2 256x256 sized bitplanes (2x 8kbyte ram) +*/ +#define LCD_BASE 0x5000 + +#define LCD_MODE 0x5001 +/* + bit 3..0 (from zeropage 15) + bit 0 set no normal screen display, seldom scrolling effects on screen; + bytes written to somewhat actual display refresh position!? + bytes read "random" + bit 1,2,3 no effect + bit 4 swaps plane intensity + bit 5 ? display effect + bit 6 on y auto increment (else auto x increment), reading + bit 7 ? lcd flickering +*/ +#define LCD_MODE_INC_Y 0x40 + +#define LCD_XPOS 0x5002 /* smooth scrolling X */ +#define LCD_YPOS 0x5003 /* smooth scrolling Y */ +/* + smooth scrolling until $c8 with 200 limit + after 200 display if ((value & 0xf) < 8) display of (value & 0xf) - 8 + chaos lines from value + current line from plane 2 only then lines starting + with zero (problematic 200 limit/overrun implementation!?) +*/ +#define LCD_X 0x5004 /* x-addr */ +/* + bit 5,6 no effect + bit 7 0 1st/1 2nd bitplane +*/ +#define LCD_XPOS_PLANE1 0x00 +#define LCD_XPOS_PLANE2 0x80 + +#define LCD_Y 0x5005 /* y-addr */ + +#define LCD_READ 0x5006 /* read from RAM (no auto inc?) */ +#define LCD_DATA 0x5007 /* write to RAM */ + +/* BIOS zeropage usage */ + +/* locations 0x0a-0x0c, 0x0e-0x11 and 0xe8 are in use by the BIOS IRQ/NMI handlers */ +#define ZP_NMI_4800 0x0a /* content of I/O reg 4800 gets copied here each NMI */ + +#define ZP_IRQ_COUNT 0x0b /* increments once per IRQ, used elsewhere in the + BIOS for synchronisation purposes */ +#define ZP_IRQ_CTRL 0x0c /* if 0 then cartridge irq stubs will not get called */ + +/* each of the following 4 increments by 1 per IRQ - it is _not_ a 32bit + counter (see code at $ffa6 in BIOS) + these are not used elsewhere in the bios and can be (re)set as needed by + the user. +*/ +#define ZP_IRQ_CNT1 0x0e +#define ZP_IRQ_CNT2 0x0f +#define ZP_IRQ_CNT3 0x10 +#define ZP_IRQ_CNT4 0x11 + +#define ZP_NMI_FLAG 0xe8 /* set to 0xff each NMI */ + +/* constants for the conio implementation */ +#define COLOR_BLACK 0x03 +#define COLOR_WHITE 0x00 + +#define CH_HLINE 1 +#define CH_VLINE 2 +#define CH_CROSS 3 +#define CH_ULCORNER 4 +#define CH_URCORNER 5 +#define CH_LLCORNER 6 +#define CH_LRCORNER 7 +#define CH_TTEE 8 +#define CH_BTEE 9 + +#define CH_RTEE 11 +#define CH_LTEE 12 + +#define CH_ENTER 13 +#define CH_PI 18 + +#define TV_NTSC 0 +#define TV_PAL 1 +#define TV_OTHER 2 + +/* No support for dynamically loadable drivers */ +#define DYN_DRV 0 + +/* The addresses of the static drivers */ +extern void gamate_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ + +#define JOY_FIRE_B 5 +#define JOY_START 6 +#define JOY_SELECT 7 + +void waitvblank (void); +/* Wait for the vertical blanking */ + +/* NOTE: all Gamate are "NTSC" */ +#define get_tv() TV_NTSC +/* Return the video mode the machine is using. */ + +/* End of gamate.h */ +#endif + +/*****************************************************************************/ +/* */ +/* _antic.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 2000 Freddy Offenga */ +/* 24-Jan-2011: Christian Krueger: Added defines for Antic instruction set */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + +#ifndef __ANTIC_H +#define __ANTIC_H + +/* Define a structure with the antic register offsets */ +struct __antic { + unsigned char dmactl; /* direct memory access control */ + unsigned char chactl; /* character mode control */ + unsigned char dlistl; /* display list pointer low-byte */ + unsigned char dlisth; /* display list pointer high-byte */ + unsigned char hscrol; /* horizontal scroll enable */ + unsigned char vscrol; /* vertical scroll enable */ + unsigned char unuse0; /* unused */ + unsigned char pmbase; /* msb of p/m base address */ + unsigned char unuse1; /* unused */ + unsigned char chbase; /* character base address */ + unsigned char wsync; /* wait for horizontal synchronization */ + unsigned char vcount; /* vertical line counter */ + unsigned char penh; /* light pen horizontal position */ + unsigned char penv; /* light pen vertical position */ + unsigned char nmien; /* non-maskable interrupt enable */ + unsigned char nmires; /* nmi reset/status */ +}; + + +/* antic instruction set */ + +/* absolute instructions (non mode lines) */ +#define DL_JMP 1 +#define DL_JVB 65 + +#define DL_BLK1 0 +#define DL_BLK2 16 +#define DL_BLK3 32 +#define DL_BLK4 48 +#define DL_BLK5 64 +#define DL_BLK6 80 +#define DL_BLK7 96 +#define DL_BLK8 112 + +/* absolute instructions (mode lines) */ +#define DL_CHR40x8x1 2 /* monochrome, 40 character & 8 scanlines per mode line (GR. 0) */ +#define DL_CHR40x10x1 3 /* monochrome, 40 character & 10 scanlines per mode line */ +#define DL_CHR40x8x4 4 /* colour, 40 character & 8 scanlines per mode line (GR. 12) */ +#define DL_CHR40x16x4 5 /* colour, 40 character & 16 scanlines per mode line (GR. 13) */ +#define DL_CHR20x8x2 6 /* colour (duochrome per character), 20 character & 8 scanlines per mode line (GR. 1) */ +#define DL_CHR20x16x2 7 /* colour (duochrome per character), 20 character & 16 scanlines per mode line (GR. 2) */ + +#define DL_MAP40x8x4 8 /* colour, 40 pixel & 8 scanlines per mode line (GR. 3) */ +#define DL_MAP80x4x2 9 /* 'duochrome', 80 pixel & 4 scanlines per mode line (GR.4) */ +#define DL_MAP80x4x4 10 /* colour, 80 pixel & 4 scanlines per mode line (GR.5) */ +#define DL_MAP160x2x2 11 /* 'duochrome', 160 pixel & 2 scanlines per mode line (GR.6) */ +#define DL_MAP160x1x2 12 /* 'duochrome', 160 pixel & 1 scanline per mode line (GR.14) */ +#define DL_MAP160x2x4 13 /* 4 colours, 160 pixel & 2 scanlines per mode line (GR.7) */ +#define DL_MAP160x1x4 14 /* 4 colours, 160 pixel & 1 scanline per mode line (GR.15) */ +#define DL_MAP320x1x1 15 /* monochrome, 320 pixel & 1 scanline per mode line (GR.8) */ + +/* modifiers on mode lines */ +#define DL_HSCROL 16 +#define DL_VSCROL 32 +#define DL_LMS 64 + +/* general modifier */ +#define DL_DLI 128 + +/* End of _antic.h */ +#endif /* #ifndef __ANTIC_H */ +/*****************************************************************************/ +/* */ +/* atari5200.h */ +/* */ +/* Atari 5200 system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2014 Christian Groessler */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ATARI5200_H +#define _ATARI5200_H + + + +/* Check for errors */ +#if !defined(__ATARI5200__) +# error This module may only be used when compiling for the Atari 5200! +#endif + +/* no support for dynamically loadable drivers */ +#define DYN_DRV 0 + +/* the addresses of the static drivers */ +extern void atr5200std_joy[]; /* referred to by joy_static_stddrv[] */ + +/* make GTIA color value */ +#define _gtia_mkcolor(hue,lum) (((hue) << 4) | ((lum) << 1)) + +/* luminance values go from 0 (black) to 7 (white) */ + +/* hue values */ +#define HUE_GREY 0 +#define HUE_GOLD 1 +#define HUE_GOLDORANGE 2 +#define HUE_REDORANGE 3 +#define HUE_ORANGE 4 +#define HUE_MAGENTA 5 +#define HUE_PURPLE 6 +#define HUE_BLUE 7 +#define HUE_BLUE2 8 +#define HUE_CYAN 9 +#define HUE_BLUEGREEN 10 +#define HUE_BLUEGREEN2 11 +#define HUE_GREEN 12 +#define HUE_YELLOWGREEN 13 +#define HUE_YELLOW 14 +#define HUE_YELLOWRED 15 + +/* Color defines, similar to c64 colors (untested) */ +#define COLOR_BLACK _gtia_mkcolor(HUE_GREY,0) +#define COLOR_WHITE _gtia_mkcolor(HUE_GREY,7) +#define COLOR_RED _gtia_mkcolor(HUE_REDORANGE,1) +#define COLOR_CYAN _gtia_mkcolor(HUE_CYAN,3) +#define COLOR_VIOLET _gtia_mkcolor(HUE_PURPLE,4) +#define COLOR_GREEN _gtia_mkcolor(HUE_GREEN,2) +#define COLOR_BLUE _gtia_mkcolor(HUE_BLUE,2) +#define COLOR_YELLOW _gtia_mkcolor(HUE_YELLOW,7) +#define COLOR_ORANGE _gtia_mkcolor(HUE_ORANGE,5) +#define COLOR_BROWN _gtia_mkcolor(HUE_YELLOW,2) +#define COLOR_LIGHTRED _gtia_mkcolor(HUE_REDORANGE,6) +#define COLOR_GRAY1 _gtia_mkcolor(HUE_GREY,2) +#define COLOR_GRAY2 _gtia_mkcolor(HUE_GREY,3) +#define COLOR_LIGHTGREEN _gtia_mkcolor(HUE_GREEN,6) +#define COLOR_LIGHTBLUE _gtia_mkcolor(HUE_BLUE,6) +#define COLOR_GRAY3 _gtia_mkcolor(HUE_GREY,5) + +/* get_tv return values */ +#define AT_NTSC 0 +#define AT_PAL 1 + +/* Define hardware */ +#include <_gtia.h> +#define GTIA_READ (*(struct __gtia_read*)0xC000) +#define GTIA_WRITE (*(struct __gtia_write*)0xC000) + +#include <_pokey.h> +#define POKEY_READ (*(struct __pokey_read*)0xE800) +#define POKEY_WRITE (*(struct __pokey_write*)0xE800) + +#include <_antic.h> +#define ANTIC (*(struct __antic*)0xD400) + +/* End of atari5200.h */ +#endif /* #ifndef _ATARI5200_H */ +/*****************************************************************************/ +/* */ +/* c16.h */ +/* */ +/* C16 system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2002 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _C16_H +#define _C16_H + + + +/* Check for errors */ +#if !defined(__C16__) +# error This module may only be used when compiling for the C16! +#endif + + + +/* Include the base header file for the 264 series. include file. + */ +#ifndef _CBM264_H +#include +#endif + + + +/* The addresses of the static drivers */ +extern void c16_ram_emd[]; +extern void c16_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ + + + +/* End of c16.h */ +#endif +/*****************************************************************************/ +/* */ +/* c64.h */ +/* */ +/* C64 system-specific definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-2013 Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _C64_H +#define _C64_H + + + +/* Check for errors */ +#if !defined(__C64__) +# error This module may only be used when compiling for the C64! +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Additional key defines */ +#define CH_F1 133 +#define CH_F2 137 +#define CH_F3 134 +#define CH_F4 138 +#define CH_F5 135 +#define CH_F6 139 +#define CH_F7 136 +#define CH_F8 140 + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 +#define COLOR_RED 0x02 +#define COLOR_CYAN 0x03 +#define COLOR_VIOLET 0x04 +#define COLOR_PURPLE COLOR_VIOLET +#define COLOR_GREEN 0x05 +#define COLOR_BLUE 0x06 +#define COLOR_YELLOW 0x07 +#define COLOR_ORANGE 0x08 +#define COLOR_BROWN 0x09 +#define COLOR_LIGHTRED 0x0A +#define COLOR_GRAY1 0x0B +#define COLOR_GRAY2 0x0C +#define COLOR_LIGHTGREEN 0x0D +#define COLOR_LIGHTBLUE 0x0E +#define COLOR_GRAY3 0x0F + +/* TGI color defines */ +#define TGI_COLOR_BLACK COLOR_BLACK +#define TGI_COLOR_WHITE COLOR_WHITE +#define TGI_COLOR_RED COLOR_RED +#define TGI_COLOR_CYAN COLOR_CYAN +#define TGI_COLOR_VIOLET COLOR_VIOLET +#define TGI_COLOR_PURPLE COLOR_PURPLE +#define TGI_COLOR_GREEN COLOR_GREEN +#define TGI_COLOR_BLUE COLOR_BLUE +#define TGI_COLOR_YELLOW COLOR_YELLOW +#define TGI_COLOR_ORANGE COLOR_ORANGE +#define TGI_COLOR_BROWN COLOR_BROWN +#define TGI_COLOR_LIGHTRED COLOR_LIGHTRED +#define TGI_COLOR_GRAY1 COLOR_GRAY1 +#define TGI_COLOR_GRAY2 COLOR_GRAY2 +#define TGI_COLOR_LIGHTGREEN COLOR_LIGHTGREEN +#define TGI_COLOR_LIGHTBLUE COLOR_LIGHTBLUE +#define TGI_COLOR_GRAY3 COLOR_GRAY3 + +/* Define hardware */ +#include <_vic2.h> +#define VIC (*(struct __vic2*)0xD000) + +#include <_sid.h> +#define SID (*(struct __sid*)0xD400) + +#include <_6526.h> +#define CIA1 (*(struct __6526*)0xDC00) +#define CIA2 (*(struct __6526*)0xDD00) + +/* Define special memory areas */ +#define COLOR_RAM ((unsigned char*)0xD800) + +/* Return codes for get_ostype */ +#define C64_OS_US 0xAA /* US version */ +#define C64_OS_PET64 0x64 /* PET 64 */ +#define C64_OS_SX64 0x43 /* SX-64 */ +#define C64_EU_NEW 0x03 +#define C64_EU_OLD 0x00 +#define C64_DTV 0xFF /* C64 DTV */ + + + +/*****************************************************************************/ +/* Variables */ +/*****************************************************************************/ + + + +/* The addresses of the static drivers */ +extern void c64_c256k_emd[]; +extern void c64_dqbb_emd[]; +extern void c64_georam_emd[]; +extern void c64_isepic_emd[]; +extern void c64_ram_emd[]; +extern void c64_ramcart_emd[]; +extern void c64_reu_emd[]; +extern void c64_vdc_emd[]; +extern void dtv_himem_emd[]; +extern void c64_hitjoy_joy[]; +extern void c64_numpad_joy[]; +extern void c64_ptvjoy_joy[]; +extern void c64_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ +extern void c64_1351_mou[]; /* Referred to by mouse_static_stddrv[] */ +extern void c64_joy_mou[]; +extern void c64_inkwell_mou[]; +extern void c64_pot_mou[]; +extern void c64_swlink_ser[]; +extern void c64_hi_tgi[]; /* Referred to by tgi_static_stddrv[] */ + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +unsigned char get_ostype (void); +/* Get the ROM version. Returns one of the C64_OS_xxx codes. */ + + + +/* End of c64.h */ +#endif +/*****************************************************************************/ +/* */ +/* tgi.h */ +/* */ +/* Tiny graphics interface */ +/* */ +/* */ +/* */ +/* (C) 2002-2013, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _TGI_H +#define _TGI_H + + + +#ifndef _TGI_ERROR_H +#include +#endif + + + +/*****************************************************************************/ +/* Definitions */ +/*****************************************************************************/ + + + +/* Font constants for use with tgi_settextstyle */ +#define TGI_FONT_BITMAP 0 +#define TGI_FONT_VECTOR 1 + +/* Direction constants for use with tgi_settextstyle */ +#define TGI_TEXT_HORIZONTAL 0 +#define TGI_TEXT_VERTICAL 1 + +/* The name of the standard tgi driver for a platform */ +extern const char tgi_stddrv[]; + +/* The address of the static standard tgi driver for a platform */ +extern const void tgi_static_stddrv[]; + +/* A vector font definition */ +typedef struct tgi_vectorfont tgi_vectorfont; + + + +/*****************************************************************************/ +/* Functions */ +/*****************************************************************************/ + + + +void __fastcall__ tgi_load_driver (const char* name); +/* Load and install the given driver. */ + +void tgi_unload (void); +/* Uninstall, then unload the currently loaded driver. Will call tgi_done if +** necessary. +*/ + +void __fastcall__ tgi_install (void* driver); +/* Install an already loaded driver. */ + +void tgi_uninstall (void); +/* Uninstall the currently loaded driver but do not unload it. Will call +** tgi_done if necessary. +*/ + +void tgi_init (void); +/* Initialize the already loaded graphics driver. */ + +void tgi_done (void); +/* End graphics mode, switch back to text mode. Will NOT uninstall or unload +** the driver! +*/ + +const tgi_vectorfont* __fastcall__ tgi_load_vectorfont (const char* name); +/* Load a vector font into memory and return it. In case of errors, NULL is +** returned and an error is set, which can be retrieved using tgi_geterror. +** To use the font, it has to be installed using tgi_install_vectorfont. +*/ + +void __fastcall__ tgi_install_vectorfont (const tgi_vectorfont* font); +/* Install a vector font for use. More than one vector font can be loaded, +** but only one can be active. This function is used to tell which one. Call +** with a NULL pointer to uninstall the currently installed font. +*/ + +void __fastcall__ tgi_free_vectorfont (const tgi_vectorfont* font); +/* Free a vector font that was previously loaded into memory. */ + +unsigned char tgi_geterror (void); +/* Return the error code for the last operation. This will also clear the +** error. +*/ + +const char* __fastcall__ tgi_geterrormsg (unsigned char code); +/* Get an error message describing the error in code. */ + +void tgi_clear (void); +/* Clear the drawpage. */ + +unsigned tgi_getpagecount (void); +/* Returns the number of screen pages available. */ + +void __fastcall__ tgi_setviewpage (unsigned char page); +/* Set the visible page. Will set an error if the page is not available. */ + +void __fastcall__ tgi_setdrawpage (unsigned char page); +/* Set the drawable page. Will set an error if the page is not available. */ + +unsigned char tgi_getcolorcount (void); +/* Get the number of available colors. */ + +unsigned char tgi_getmaxcolor (void); +/* Return the maximum supported color number (the number of colors would +** then be getmaxcolor()+1). +*/ + +void __fastcall__ tgi_setcolor (unsigned char color); +/* Set the current drawing color. */ + +unsigned char tgi_getcolor (void); +/* Return the current drawing color. */ + +void __fastcall__ tgi_setpalette (const unsigned char* palette); +/* Set the palette (not available with all drivers/hardware). palette is +** a pointer to as many entries as there are colors. +*/ + +const unsigned char* tgi_getpalette (void); +/* Return the current palette. */ + +const unsigned char* tgi_getdefpalette (void); +/* Return the default palette. */ + +unsigned tgi_getxres (void); +/* Return the resolution in X direction. */ + +unsigned tgi_getmaxx (void); +/* Return the maximum x coordinate. The resolution in x direction is +** getmaxx() + 1 +*/ + +unsigned tgi_getyres (void); +/* Return the resolution in Y direction. */ + +unsigned tgi_getmaxy (void); +/* Return the maximum y coordinate. The resolution in y direction is +** getmaxy() + 1 +*/ + +unsigned tgi_getaspectratio (void); +/* Returns the aspect ratio for the loaded driver. The aspect ratio is an +** 8.8 fixed point value. +*/ + +void __fastcall__ tgi_setaspectratio (unsigned aspectratio); +/* Set a new aspect ratio for the loaded driver. The aspect ratio is an +** 8.8 fixed point value. +*/ + +unsigned char __fastcall__ tgi_getpixel (int x, int y); +/* Get the color value of a pixel. */ + +void __fastcall__ tgi_setpixel (int x, int y); +/* Plot a pixel in the current drawing color. */ + +void __fastcall__ tgi_gotoxy (int x, int y); +/* Set the graphics cursor to the given position. */ + +void __fastcall__ tgi_line (int x1, int y1, int x2, int y2); +/* Draw a line in the current drawing color. The graphics cursor will +** be set to x2/y2 by this call. +*/ + +void __fastcall__ tgi_lineto (int x2, int y2); +/* Draw a line in the current drawing color from the graphics cursor to the +** new end point. The graphics cursor will be updated to x2/y2. +*/ + +void __fastcall__ tgi_circle (int x, int y, unsigned char radius); +/* Draw a circle in the current drawing color. */ + +void __fastcall__ tgi_ellipse (int x, int y, unsigned char rx, unsigned char ry); +/* Draw a full ellipse with center at x/y and radii rx/ry using the current +** drawing color. +*/ + +void __fastcall__ tgi_arc (int x, int y, unsigned char rx, unsigned char ry, + unsigned sa, unsigned ea); +/* Draw an ellipse arc with center at x/y and radii rx/ry using the current +** drawing color. The arc covers the angle between sa and ea (startangle and +** endangle), which must be in the range 0..360 (otherwise the function may +** bevave unextectedly). +*/ + +void __fastcall__ tgi_pieslice (int x, int y, unsigned char rx, unsigned char ry, + unsigned sa, unsigned ea); +/* Draw an ellipse pie slice with center at x/y and radii rx/ry using the +** current drawing color. The pie slice covers the angle between sa and ea +** (startangle and endangle), which must be in the range 0..360 (otherwise the +** function may behave unextectedly). +*/ + +void __fastcall__ tgi_bar (int x1, int y1, int x2, int y2); +/* Draw a bar (a filled rectangle) using the current color. */ + +void __fastcall__ tgi_settextdir (unsigned char dir); +/* Set the direction for text output. dir is one of the TGI_TEXT_XXX +** constants. +*/ + +void __fastcall__ tgi_settextscale (unsigned width, unsigned height); +/* Set the scaling for text output. The scaling factors for width and height +** are 8.8 fixed point values. This means that $100 = 1 $200 = 2 etc. +*/ + +void __fastcall__ tgi_settextstyle (unsigned width, unsigned height, + unsigned char dir, unsigned char font); +/* Set the style for text output. The scaling factors for width and height +** are 8.8 fixed point values. This means that $100 = 1 $200 = 2 etc. +** dir is one of the TGI_TEXT_XXX constants. font is one of the TGI_FONT_XXX +** constants. +*/ + +unsigned __fastcall__ tgi_gettextwidth (const char* s); +/* Calculate the width of the text in pixels according to the current text +** style. +*/ + +unsigned __fastcall__ tgi_gettextheight (const char* s); +/* Calculate the height of the text in pixels according to the current text +** style. +*/ + +void __fastcall__ tgi_outtext (const char* s); +/* Output text at the current graphics cursor position. The graphics cursor +** is moved to the end of the text. +*/ + +void __fastcall__ tgi_outtextxy (int x, int y, const char* s); +/* Output text at the given cursor position. The graphics cursor is moved to +** the end of the text. +*/ + +unsigned __fastcall__ tgi_ioctl (unsigned char code, void* data); +/* Call the driver specific control function. What this function does for +** a specific code depends on the driver. The driver will set an error +** for unknown codes or values. +*/ + +int __fastcall__ tgi_imulround (int rhs, int lhs); +/* Helper function for functions using sine/cosine: Multiply two values, one +** being an 8.8 fixed point one, and return the rounded and scaled result. +*/ + + + +/* End of tgi.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* cbm510.h */ +/* */ +/* System-specific definitions for the CBM5x0 / P500 */ +/* */ +/* */ +/* */ +/* (C) 2001-2013, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _CBM510_H +#define _CBM510_H + + + +/* Check for errors */ +#if !defined(__CBM510__) +# error This module may only be used when compiling for the CBM 510! +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Additional key defines */ +#define CH_F1 224 +#define CH_F2 225 +#define CH_F3 226 +#define CH_F4 227 +#define CH_F5 228 +#define CH_F6 229 +#define CH_F7 230 +#define CH_F8 231 +#define CH_F9 232 +#define CH_F10 233 +#define CH_F11 234 +#define CH_F12 235 +#define CH_F13 236 +#define CH_F14 237 +#define CH_F15 238 +#define CH_F16 239 +#define CH_F17 240 +#define CH_F18 241 +#define CH_F19 242 +#define CH_F20 243 + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 +#define COLOR_RED 0x02 +#define COLOR_CYAN 0x03 +#define COLOR_VIOLET 0x04 +#define COLOR_PURPLE COLOR_VIOLET +#define COLOR_GREEN 0x05 +#define COLOR_BLUE 0x06 +#define COLOR_YELLOW 0x07 +#define COLOR_ORANGE 0x08 +#define COLOR_BROWN 0x09 +#define COLOR_LIGHTRED 0x0A +#define COLOR_GRAY1 0x0B +#define COLOR_GRAY2 0x0C +#define COLOR_LIGHTGREEN 0x0D +#define COLOR_LIGHTBLUE 0x0E +#define COLOR_GRAY3 0x0F + +/* Define hardware */ +#include <_vic2.h> +#define VIC (*(struct __vic2*)0xD800) + +#include <_sid.h> +#define SID (*(struct __sid*)0xDA00) + +#include <_6526.h> +#define CIA2 (*(struct __6526*)0xDC00) + +#include <_6551.h> +#define ACIA (*(struct __6551*)0xDD00) + +#include <_6525.h> +#define TPI1 (*(struct __6525*)0xDE00) +#define TPI2 (*(struct __6525*)0xDF00) + + + +/*****************************************************************************/ +/* Variables */ +/*****************************************************************************/ + + + +/* The addresses of the static drivers */ +extern void cbm510_inkwl_mou[]; +extern void cbm510_joy_mou[]; /* Referred to by mouse_static_stddrv[] */ +extern void cbm510_ram_emd[]; +extern void cbm510_std_joy[]; /* Referred to by joy_static_stddrv[] */ +extern void cbm510_std_ser[]; + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +/* Special routines to read/write bytes and words in the system bank */ +unsigned char __fastcall__ peekbsys (unsigned addr); +unsigned __fastcall__ peekwsys (unsigned addr); +void __fastcall__ pokebsys (unsigned addr, unsigned char val); +void __fastcall__ pokewsys (unsigned addr, unsigned val); + +#if defined(__OPT_i__) && (__OPT_i__ >= 600) +#define peekbsys(addr) \ + __AX__ = (addr), \ + __asm__ ("sta ptr1"), \ + __asm__ ("stx ptr1+1"), \ + __asm__ ("ldx $01"), \ + __asm__ ("lda #$0F"), \ + __asm__ ("sta $01"), \ + __asm__ ("ldy #$00"), \ + __asm__ ("lda (ptr1),y"), \ + __asm__ ("stx $01"), \ + __asm__ ("ldx #$00"), \ + __AX__ +#endif + + + +/* End of cbm510.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* atari_atascii_charmap.h */ +/* */ +/* Atari system standard string mapping (ISO-8859-1 -> AtASCII) */ +/* */ +/* */ +/* */ +/* (C) 2016 Christian Krueger */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +/* No include guard here! Multiple use in one file may be intentional. */ + +#pragma charmap (0x00, 0x00) +#pragma charmap (0x01, 0x01) +#pragma charmap (0x02, 0x02) +#pragma charmap (0x03, 0x03) +#pragma charmap (0x04, 0x04) +#pragma charmap (0x05, 0x05) +#pragma charmap (0x06, 0x06) +#pragma charmap (0x07, 0xFD) +#pragma charmap (0x08, 0x08) +#pragma charmap (0x09, 0x7F) +#pragma charmap (0x0A, 0x9B) +#pragma charmap (0x0B, 0x0B) +#pragma charmap (0x0C, 0x7D) +#pragma charmap (0x0D, 0x0D) +#pragma charmap (0x0E, 0x0E) +#pragma charmap (0x0F, 0x0F) + +#pragma charmap (0x10, 0x10) +#pragma charmap (0x11, 0x11) +#pragma charmap (0x12, 0x12) +#pragma charmap (0x13, 0x13) +#pragma charmap (0x14, 0x14) +#pragma charmap (0x15, 0x15) +#pragma charmap (0x16, 0x16) +#pragma charmap (0x17, 0x17) +#pragma charmap (0x18, 0x18) +#pragma charmap (0x19, 0x19) +#pragma charmap (0x1A, 0x1A) +#pragma charmap (0x1B, 0x1B) +#pragma charmap (0x1C, 0x1C) +#pragma charmap (0x1D, 0x1D) +#pragma charmap (0x1E, 0x1E) +#pragma charmap (0x1F, 0x1F) + +#pragma charmap (0x20, 0x20) +#pragma charmap (0x21, 0x21) +#pragma charmap (0x22, 0x22) +#pragma charmap (0x23, 0x23) +#pragma charmap (0x24, 0x24) +#pragma charmap (0x25, 0x25) +#pragma charmap (0x26, 0x26) +#pragma charmap (0x27, 0x27) +#pragma charmap (0x28, 0x28) +#pragma charmap (0x29, 0x29) +#pragma charmap (0x2A, 0x2A) +#pragma charmap (0x2B, 0x2B) +#pragma charmap (0x2C, 0x2C) +#pragma charmap (0x2D, 0x2D) +#pragma charmap (0x2E, 0x2E) +#pragma charmap (0x2F, 0x2F) + +#pragma charmap (0x30, 0x30) +#pragma charmap (0x31, 0x31) +#pragma charmap (0x32, 0x32) +#pragma charmap (0x33, 0x33) +#pragma charmap (0x34, 0x34) +#pragma charmap (0x35, 0x35) +#pragma charmap (0x36, 0x36) +#pragma charmap (0x37, 0x37) +#pragma charmap (0x38, 0x38) +#pragma charmap (0x39, 0x39) +#pragma charmap (0x3A, 0x3A) +#pragma charmap (0x3B, 0x3B) +#pragma charmap (0x3C, 0x3C) +#pragma charmap (0x3D, 0x3D) +#pragma charmap (0x3E, 0x3E) +#pragma charmap (0x3F, 0x3F) + +#pragma charmap (0x40, 0x40) +#pragma charmap (0x41, 0x41) +#pragma charmap (0x42, 0x42) +#pragma charmap (0x43, 0x43) +#pragma charmap (0x44, 0x44) +#pragma charmap (0x45, 0x45) +#pragma charmap (0x46, 0x46) +#pragma charmap (0x47, 0x47) +#pragma charmap (0x48, 0x48) +#pragma charmap (0x49, 0x49) +#pragma charmap (0x4A, 0x4A) +#pragma charmap (0x4B, 0x4B) +#pragma charmap (0x4C, 0x4C) +#pragma charmap (0x4D, 0x4D) +#pragma charmap (0x4E, 0x4E) +#pragma charmap (0x4F, 0x4F) + +#pragma charmap (0x50, 0x50) +#pragma charmap (0x51, 0x51) +#pragma charmap (0x52, 0x52) +#pragma charmap (0x53, 0x53) +#pragma charmap (0x54, 0x54) +#pragma charmap (0x55, 0x55) +#pragma charmap (0x56, 0x56) +#pragma charmap (0x57, 0x57) +#pragma charmap (0x58, 0x58) +#pragma charmap (0x59, 0x59) +#pragma charmap (0x5A, 0x5A) +#pragma charmap (0x5B, 0x5B) +#pragma charmap (0x5C, 0x5C) +#pragma charmap (0x5D, 0x5D) +#pragma charmap (0x5E, 0x5E) +#pragma charmap (0x5F, 0x5F) + +#pragma charmap (0x60, 0x60) +#pragma charmap (0x61, 0x61) +#pragma charmap (0x62, 0x62) +#pragma charmap (0x63, 0x63) +#pragma charmap (0x64, 0x64) +#pragma charmap (0x65, 0x65) +#pragma charmap (0x66, 0x66) +#pragma charmap (0x67, 0x67) +#pragma charmap (0x68, 0x68) +#pragma charmap (0x69, 0x69) +#pragma charmap (0x6A, 0x6A) +#pragma charmap (0x6B, 0x6B) +#pragma charmap (0x6C, 0x6C) +#pragma charmap (0x6D, 0x6D) +#pragma charmap (0x6E, 0x6E) +#pragma charmap (0x6F, 0x6F) + +#pragma charmap (0x70, 0x70) +#pragma charmap (0x71, 0x71) +#pragma charmap (0x72, 0x72) +#pragma charmap (0x73, 0x73) +#pragma charmap (0x74, 0x74) +#pragma charmap (0x75, 0x75) +#pragma charmap (0x76, 0x76) +#pragma charmap (0x77, 0x77) +#pragma charmap (0x78, 0x78) +#pragma charmap (0x79, 0x79) +#pragma charmap (0x7A, 0x7A) +#pragma charmap (0x7B, 0x7B) +#pragma charmap (0x7C, 0x7C) +#pragma charmap (0x7D, 0x7D) +#pragma charmap (0x7E, 0x7E) +#pragma charmap (0x7F, 0x7F) + +#pragma charmap (0x80, 0x80) +#pragma charmap (0x81, 0x81) +#pragma charmap (0x82, 0x82) +#pragma charmap (0x83, 0x83) +#pragma charmap (0x84, 0x84) +#pragma charmap (0x85, 0x85) +#pragma charmap (0x86, 0x86) +#pragma charmap (0x87, 0x87) +#pragma charmap (0x88, 0x88) +#pragma charmap (0x89, 0x89) +#pragma charmap (0x8A, 0x8A) +#pragma charmap (0x8B, 0x8B) +#pragma charmap (0x8C, 0x8C) +#pragma charmap (0x8D, 0x8D) +#pragma charmap (0x8E, 0x8E) +#pragma charmap (0x8F, 0x8F) + +#pragma charmap (0x90, 0x90) +#pragma charmap (0x91, 0x91) +#pragma charmap (0x92, 0x92) +#pragma charmap (0x93, 0x93) +#pragma charmap (0x94, 0x94) +#pragma charmap (0x95, 0x95) +#pragma charmap (0x96, 0x96) +#pragma charmap (0x97, 0x97) +#pragma charmap (0x98, 0x98) +#pragma charmap (0x99, 0x99) +#pragma charmap (0x9A, 0x9A) +#pragma charmap (0x9B, 0x9B) +#pragma charmap (0x9C, 0x9C) +#pragma charmap (0x9D, 0x9D) +#pragma charmap (0x9E, 0x9E) +#pragma charmap (0x9F, 0x9F) + +#pragma charmap (0xA0, 0xA0) +#pragma charmap (0xA1, 0xA1) +#pragma charmap (0xA2, 0xA2) +#pragma charmap (0xA3, 0xA3) +#pragma charmap (0xA4, 0xA4) +#pragma charmap (0xA5, 0xA5) +#pragma charmap (0xA6, 0xA6) +#pragma charmap (0xA7, 0xA7) +#pragma charmap (0xA8, 0xA8) +#pragma charmap (0xA9, 0xA9) +#pragma charmap (0xAA, 0xAA) +#pragma charmap (0xAB, 0xAB) +#pragma charmap (0xAC, 0xAC) +#pragma charmap (0xAD, 0xAD) +#pragma charmap (0xAE, 0xAE) +#pragma charmap (0xAF, 0xAF) + +#pragma charmap (0xB0, 0xB0) +#pragma charmap (0xB1, 0xB1) +#pragma charmap (0xB2, 0xB2) +#pragma charmap (0xB3, 0xB3) +#pragma charmap (0xB4, 0xB4) +#pragma charmap (0xB5, 0xB5) +#pragma charmap (0xB6, 0xB6) +#pragma charmap (0xB7, 0xB7) +#pragma charmap (0xB8, 0xB8) +#pragma charmap (0xB9, 0xB9) +#pragma charmap (0xBA, 0xBA) +#pragma charmap (0xBB, 0xBB) +#pragma charmap (0xBC, 0xBC) +#pragma charmap (0xBD, 0xBD) +#pragma charmap (0xBE, 0xBE) +#pragma charmap (0xBF, 0xBF) + +#pragma charmap (0xC0, 0xC0) +#pragma charmap (0xC1, 0xC1) +#pragma charmap (0xC2, 0xC2) +#pragma charmap (0xC3, 0xC3) +#pragma charmap (0xC4, 0xC4) +#pragma charmap (0xC5, 0xC5) +#pragma charmap (0xC6, 0xC6) +#pragma charmap (0xC7, 0xC7) +#pragma charmap (0xC8, 0xC8) +#pragma charmap (0xC9, 0xC9) +#pragma charmap (0xCA, 0xCA) +#pragma charmap (0xCB, 0xCB) +#pragma charmap (0xCC, 0xCC) +#pragma charmap (0xCD, 0xCD) +#pragma charmap (0xCE, 0xCE) +#pragma charmap (0xCF, 0xCF) + +#pragma charmap (0xD0, 0xD0) +#pragma charmap (0xD1, 0xD1) +#pragma charmap (0xD2, 0xD2) +#pragma charmap (0xD3, 0xD3) +#pragma charmap (0xD4, 0xD4) +#pragma charmap (0xD5, 0xD5) +#pragma charmap (0xD6, 0xD6) +#pragma charmap (0xD7, 0xD7) +#pragma charmap (0xD8, 0xD8) +#pragma charmap (0xD9, 0xD9) +#pragma charmap (0xDA, 0xDA) +#pragma charmap (0xDB, 0xDB) +#pragma charmap (0xDC, 0xDC) +#pragma charmap (0xDD, 0xDD) +#pragma charmap (0xDE, 0xDE) +#pragma charmap (0xDF, 0xDF) + +#pragma charmap (0xE0, 0xE0) +#pragma charmap (0xE1, 0xE1) +#pragma charmap (0xE2, 0xE2) +#pragma charmap (0xE3, 0xE3) +#pragma charmap (0xE4, 0xE4) +#pragma charmap (0xE5, 0xE5) +#pragma charmap (0xE6, 0xE6) +#pragma charmap (0xE7, 0xE7) +#pragma charmap (0xE8, 0xE8) +#pragma charmap (0xE9, 0xE9) +#pragma charmap (0xEA, 0xEA) +#pragma charmap (0xEB, 0xEB) +#pragma charmap (0xEC, 0xEC) +#pragma charmap (0xED, 0xED) +#pragma charmap (0xEE, 0xEE) +#pragma charmap (0xEF, 0xEF) + +#pragma charmap (0xF0, 0xF0) +#pragma charmap (0xF1, 0xF1) +#pragma charmap (0xF2, 0xF2) +#pragma charmap (0xF3, 0xF3) +#pragma charmap (0xF4, 0xF4) +#pragma charmap (0xF5, 0xF5) +#pragma charmap (0xF6, 0xF6) +#pragma charmap (0xF7, 0xF7) +#pragma charmap (0xF8, 0xF8) +#pragma charmap (0xF9, 0xF9) +#pragma charmap (0xFA, 0xFA) +#pragma charmap (0xFB, 0xFB) +#pragma charmap (0xFC, 0xFC) +#pragma charmap (0xFD, 0xFD) +#pragma charmap (0xFE, 0xFE) +#pragma charmap (0xFF, 0xFF) + +/*****************************************************************************/ +/* */ +/* em-kernel.h */ +/* */ +/* Internally used EM functions */ +/* */ +/* */ +/* */ +/* (C) 2002-2003 Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _EM_KERNEL_H +#define _EM_KERNEL_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* A structure that describes the header of an extended memory driver loaded +** into memory. +*/ +typedef struct { + + /* Driver header */ + char id[3]; /* Contains 0x65, 0x6d, 0x64 ("emd") */ + unsigned char version; /* Interface version */ + + /* Jump vectors. Note that these are not C callable */ + void* install; /* INSTALL routine */ + void* deinstall; /* DEINSTALL routine */ + void* pagecount; /* PAGECOUNT routine */ + void* map; /* MAP routine */ + void* use; /* USE routine */ + void* mapclean; /* MAPCLEAN routine */ + void* copyfrom; /* COPYFROM routine */ + void* copyto; /* COPYTO routine */ + +} em_drv_header; + + + +/* EM kernel variables */ +extern em_drv_header* em_drv; /* Pointer to driver */ + + + +/* End of em-kernel.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* mouse-kernel.h */ +/* */ +/* Internally used mouse functions */ +/* */ +/* */ +/* */ +/* (C) 2003-2006, Ullrich von Bassewitz */ +/* Römerstraße 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _MOUSE_KERNEL_H +#define _MOUSE_KERNEL_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Mouse kernel variables */ +extern void* mouse_drv; /* Pointer to driver */ + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +void mouse_clear_ptr (void); +/* Clear the mouse_drv pointer */ + + + +/* End of mouse-kernel.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* tgi-vectorfont.h */ +/* */ +/* TGI vector font definitions */ +/* */ +/* */ +/* */ +/* (C) 2009, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _TGI_VECTORFONT_H +#define _TGI_VECTORFONT_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +#define TGI_VF_FIRSTCHAR 0x20 /* First char in file */ +#define TGI_VF_LASTCHAR 0x7E /* Last char in file */ +#define TGI_VF_CCOUNT (TGI_VF_LASTCHAR - TGI_VF_FIRSTCHAR + 1) + +#define TGI_VF_VERSION 0x00 /* File version number */ + +/* TCH file header */ +typedef struct tgi_vectorfont_header tgi_vectorfont_header; +struct tgi_vectorfont_header { + unsigned char magic[3]; /* "TCH" */ + unsigned char version; /* Version number */ + unsigned size; /* Font data size */ +}; + +/* Font data loaded directly from file */ +struct tgi_vectorfont { + unsigned char top; /* Height of char */ + unsigned char baseline; /* Character baseline */ + unsigned char bottom; /* Descender */ + unsigned char widths[TGI_VF_CCOUNT]; /* Char widths */ + unsigned char* chars[TGI_VF_CCOUNT]; /* Pointer to character defs */ + unsigned char vec_ops[1]; /* Actually dynamic */ +}; + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +void __fastcall__ tgi_vectorchar (char C); +/* Draw one character of the vector font at the current graphics cursor +** position using the current font magnification. +*/ + + + +/* End of tgi-vectorfont.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* tgi-kernel.h */ +/* */ +/* TGI kernel interface */ +/* */ +/* */ +/* */ +/* (C) 2002-2012, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _TGI_KERNEL_H +#define _TGI_KERNEL_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* TGI kernel variables */ +extern void* tgi_drv; /* Pointer to driver */ +extern unsigned char tgi_error; /* Last error code */ +extern unsigned char tgi_gmode; /* Flag: Graphics mode active */ +extern int tgi_curx; /* Current drawing cursor X */ +extern int tgi_cury; /* Current drawing cursor Y */ +extern unsigned char tgi_color; /* Current drawing color */ +extern unsigned char tgi_font; /* Current font type */ +extern unsigned tgi_xres; /* X resolution of the current mode */ +extern unsigned tgi_yres; /* Y resolution of the current mode */ +extern unsigned char tgi_colorcount; /* Number of available colors */ +extern unsigned char tgi_pagecount; /* Number of available screens */ +extern unsigned char tgi_fontwidth; /* System font width in pixels */ +extern unsigned char tgi_fontheight; /* System font height in pixels */ +extern unsigned tgi_aspectratio; /* Aspect ratio as fixed point 8.8 */ +extern unsigned char tgi_flags; /* TGI driver flags */ +extern unsigned tgi_textscalew[2]; /* Vector/bitmap font scale 8.8 */ +extern unsigned tgi_textscaleh[2]; /* Vector/bitmap font scale 8.8 */ +extern unsigned tgi_charwidth; /* Width of scaled bitmap font */ +extern unsigned tgi_charheight; /* Height of scaled bitmap font */ + + + +/* End of tgi-kernel.h */ +#endif + + + + +/*****************************************************************************/ +/* */ +/* tgi-error.h */ +/* */ +/* TGI error codes */ +/* */ +/* */ +/* */ +/* (C) 2002-2012, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _TGI_ERROR_H +#define _TGI_ERROR_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +#define TGI_ERR_OK 0 /* No error */ +#define TGI_ERR_NO_DRIVER 1 /* No driver available */ +#define TGI_ERR_CANNOT_LOAD 2 /* Error loading driver or font */ +#define TGI_ERR_INV_DRIVER 3 /* Invalid driver */ +#define TGI_ERR_INV_MODE 4 /* Mode not supported by driver */ +#define TGI_ERR_INV_ARG 5 /* Invalid function argument */ +#define TGI_ERR_INV_FUNC 6 /* Function not supported */ +#define TGI_ERR_INV_FONT 7 /* Font file is invalid */ +#define TGI_ERR_NO_RES 8 /* Out of resources */ +#define TGI_ERR_INSTALLED 9 /* A driver is already installed */ + + + +/* End of tgi-error.h */ +#endif + + + +/* + GEOS mouse and sprite functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GSPRITE_H +#define _GSPRITE_H + +void StartMouseMode(void); +void ClearMouseMode(void); +void MouseUp(void); +void MouseOff(void); +char __fastcall__ IsMseInRegion(struct window *region); + +void __fastcall__ DrawSprite(char spritenum, const char *spritepic); +void __fastcall__ PosSprite(char spritenum, struct pixel *position); +void __fastcall__ EnablSprite(char spritenum); +void __fastcall__ DisablSprite(char spritenum); + +void __fastcall__ InitTextPrompt(char height); +void __fastcall__ PromptOn(struct pixel *position); +void PromptOff(void); +char GetNextChar(void); + +/* keyboard constants */ +#define KEY_F1 1 +#define KEY_F2 2 +#define KEY_F3 3 +#define KEY_F4 4 +#define KEY_F5 5 +#define KEY_F6 6 +#define KEY_NOSCRL 7 +#define KEY_ENTER 13 +#define KEY_F7 14 +#define KEY_F8 15 +#define KEY_HOME 18 +#define KEY_CLEAR 19 +#define KEY_LARROW 20 +#define KEY_UPARROW 21 +#define KEY_STOP 22 +#define KEY_RUN 23 +#define KEY_BPS 24 +#define KEY_HELP 25 +#define KEY_ALT 26 +#define KEY_ESC 27 +#define KEY_INSERT 28 +#define KEY_INVALID 31 +#define KEY_LEFT BACKSPACE +#ifdef __GEOS_CBM__ +#define KEY_UP 16 +#define KEY_DOWN 17 +#define KEY_DELETE 29 +#define KEY_RIGHT 30 +#else +#define KEY_UP 11 +#define KEY_DOWN 10 +#define KEY_DELETE 127 +#define KEY_RIGHT 21 +#endif + +/* values of faultData - pointer position vs. mouseWindow */ +/* bit numbers */ +#define OFFTOP_BIT 7 +#define OFFBOTTOM_BIT 6 +#define OFFLEFT_BIT 5 +#define OFFRIGHT_BIT 4 +#define OFFMENU_BIT 3 +/* bit masks */ +#define SET_OFFTOP 0x80 +#define SET_OFFBOTTOM 0x40 +#define SET_OFFLEFT 0x20 +#define SET_OFFRIGHT 0x10 +#define SET_OFFMENU 0x08 + +/* mouseOn */ +/* bit numbers */ +#define MOUSEON_BIT 7 +#define MENUON_BIT 6 +#define ICONSON_BIT 5 +/* bit masks */ +#define SET_MSE_ON 0x80 +#define SET_MENUON 0x40 +#define SET_ICONSON 0x20 + +/* pressFlag */ +/* bit numbers */ +#define KEYPRESS_BIT 7 +#define INPUT_BIT 6 +#define MOUSE_BIT 5 +/* bit masks */ +#define SET_KEYPRESS 0x80 +#define SET_INPUTCHG 0x40 +#define SET_MOUSE 0x20 + +#endif +/* + GEOS constants + + reassembled by Maciej 'YTM/Elysium' Witkowiak +*/ + +/* Here are constants which didn't fit into any other cathegory... */ + +#ifndef _GCONST_H +#define _GCONST_H + +#define NULL 0 +#define FALSE NULL +#define TRUE 0xff +#define MOUSE_SPRNUM 0 +#define DISK_DRV_LGH 0x0d80 + +/* drivetypes */ +#define DRV_NULL 0 +#define DRV_1541 1 +#define DRV_1571 2 +#define DRV_1581 3 +#define DRV_NETWORK 15 + +/* various disk constants */ +#define REL_FILE_NUM 9 +#define CMND_FILE_NUM 15 +#define MAX_CMND_STR 32 +#define DIR_1581_TRACK 40 +#define DIR_ACC_CHAN 13 +#define DIR_TRACK 18 +#define N_TRACKS 35 +#define DK_NM_ID_LEN 18 +#define TRACK 9 +#define SECTOR 12 +#define TOTAL_BLOCKS 664 + +/* offset to something */ +#define OFF_INDEX_PTR 1 + +/* values for CPU_DATA memory config - C64 */ +#define IO_IN 0x35 +#define KRNL_IO_IN 0x36 +#define KRNL_BAS_IO_IN 0x37 + +/* values for MMU config - C128 */ +#define CIOIN 0x7E +#define CRAM64K 0x7F +#define CKRNLBASIOIN 0x40 +#define CKRNLIOIN 0x4E + +/* alarmSetFlag */ +#define ALARMMASK 4 + +#define CLR_SAVE 0x40 +#define CONSTRAINED 0x40 +#define UN_CONSTRAINED 0 +#define FG_SAVE 0x80 + +#define FUTURE1 7 +#define FUTURE2 8 +#define FUTURE3 9 +#define FUTURE4 10 +#define USELAST 127 +#define SHORTCUT 128 + +#endif +/* + GEOS graphic (non icon/menu/sprite) functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GGRAPH_H +#define _GGRAPH_H + +#ifndef _GSTRUCT_H +#include +#endif + +void __fastcall__ SetPattern(char newpattern); + +void __fastcall__ HorizontalLine(char pattern, char y, unsigned xstart, unsigned xend); +void __fastcall__ InvertLine(char y, unsigned xstart, unsigned xend); +void __fastcall__ RecoverLine(char y, unsigned xstart, unsigned xend); +void __fastcall__ VerticalLine(char pattern, char ystart, char yend, unsigned x); + +void __fastcall__ InitDrawWindow(struct window *myRectangle); +void Rectangle(void); +void __fastcall__ FrameRectangle(char pattern); +void InvertRectangle(void); +void ImprintRectangle(void); +void RecoverRectangle(void); + +void __fastcall__ DrawLine(char mode, struct window *topBotCoords); + +void __fastcall__ DrawPoint(char mode, struct pixel *myPixel); +char __fastcall__ TestPoint(struct pixel *myPixel); + +void __fastcall__ PutChar(char character, char y, unsigned x); +void __fastcall__ PutString(char *myString, char y, unsigned x); +void __fastcall__ PutDecimal(char style, unsigned value, char y, unsigned x); + +char __fastcall__ GetCharWidth(char character); +void __fastcall__ LoadCharSet(struct fontdesc *myFont); +void UseSystemFont(void); + +void __fastcall__ BitmapUp(struct iconpic *myIcon); +void __fastcall__ BitmapClip(char skipl, char skipr, unsigned skiptop, + struct iconpic *myIcon); +void __fastcall__ BitOtherClip(void *proc1, void *proc2, char skipl, + char skipr, unsigned skiptop, + struct iconpic *myIcon); + +void __fastcall__ GraphicsString(char *myGfxString); + +/* VIC colour constants */ +#define BLACK 0 +#define WHITE 1 +#define RED 2 +#define CYAN 3 +#define PURPLE 4 +#define GREEN 5 +#define BLUE 6 +#define YELLOW 7 +#define ORANGE 8 +#define BROWN 9 +#define LTRED 10 +#define DKGREY 11 +#define GREY 12 +#define MEDGREY 12 +#define LTGREEN 13 +#define LTBLUE 14 +#define LTGREY 15 +/* VIC memory banks - lowest 2 bits of cia2base+0 */ +#define GRBANK0 3 +#define GRBANK1 2 +#define GRBANK2 1 +#define GRBANK3 0 +/* VIC screen sizes */ +#define VIC_X_POS_OFF 24 +#define VIC_Y_POS_OFF 50 +#ifdef __GEOS_CBM__ +#define SC_BYTE_WIDTH 40 +#define SC_PIX_HEIGHT 200 +#define SC_PIX_WIDTH 320 +#define SC_SIZE 8000 +#else +#define SC_BYTE_WIDTH 70 +#define SC_PIX_HEIGHT 192 +#define SC_PIX_WIDTH 560 +#define SC_SIZE 13440 +#endif +/* VDC screen constants */ +#define SCREENBYTEWIDTH 80 +#define SCREENPIXELWIDTH 640 +/* control characters for use as numbers, not characters */ +#define BACKSPACE 8 +#define FORWARDSPACE 9 +#define TAB 9 +#define LF 10 +#define HOME 11 +#define PAGE_BREAK 12 +#define UPLINE 12 +#define CR 13 +#define ULINEON 14 +#define ULINEOFF 15 +#define ESC_GRAPHICS 16 +#define ESC_RULER 17 +#define REV_ON 18 +#define REV_OFF 19 +#define GOTOX 20 +#define GOTOY 21 +#define GOTOXY 22 +#define NEWCARDSET 23 +#define BOLDON 24 +#define ITALICON 25 +#define OUTLINEON 26 +#define PLAINTEXT 27 +/* control characters for use in + strings: eg: str[10]=CBOLDON "Hello"; */ +#define CCR "\015" +#define CULINEON "\016" +#define CULINEOFF "\017" +#define CREV_ON "\022" +#define CREV_OFF "\023" +#define CBOLDON "\030" +#define CITALICON "\031" +#define COUTLINEON "\032" +#define CPLAINTEXT "\033" + +/*values of currentMode */ +/* bitNumbers */ +#define UNDERLINE_BIT 7 +#define BOLD_BIT 6 +#define REVERSE_BIT 5 +#define ITALIC_BIT 4 +#define OUTLINE_BIT 3 +#define SUPERSCRIPT_BIT 2 +#define SUBSCRIPT_BIT 1 +/* bitMasks */ +#define SET_UNDERLINE 0x80 +#define SET_BOLD 0x40 +#define SET_REVERSE 0x20 +#define SET_ITALIC 0x10 +#define SET_OUTLINE 0x08 +#define SET_SUPERSCRIPT 0x04 +#define SET_SUBSCRIPT 0x02 +#define SET_PLAINTEXT 0 +/* values of dispBufferOn */ +#define ST_WRGS_FORE 0x20 +#define ST_WR_BACK 0x40 +#define ST_WR_FORE 0x80 +/* PutDecimal parameters */ +/* leading zeros? */ +#define SET_NOSURPRESS 0 +#define SET_SURPRESS 0x40 +/* justification */ +#define SET_RIGHTJUST 0 +#define SET_LEFTJUST 0x80 +/* C128 x-extension flags */ +#define ADD1_W 0x2000 +#define DOUBLE_B 0x80 +#define DOUBLE_W 0x8000 +/* DrawLine/DrawPoint mode values */ +#define DRAW_ERASE 0x00 +#define DRAW_DRAW 0x40 +#define DRAW_COPY 0x80 + +typedef void graphicStr; + +#define MOVEPENTO(x,y) (char)1, (unsigned)(x), (char)(y) +#define LINETO(x,y) (char)2, (unsigned)(x), (char)(y) +#define RECTANGLETO(x,y) (char)3, (unsigned)(x), (char)(y) +#define NEWPATTERN(p) (char)5, (char)(p) +#define FRAME_RECTO(x,y) (char)7, (unsigned)(x), (char)(y) +#define PEN_X_DELTA(x) (char)8, (unsigned)(x) +#define PEN_Y_DELTA(y) (char)9, (char)(y) +#define PEN_XY_DELTA(x,y) (char)10, (unsigned)(x), (char)(y) +#define GSTR_END (char)NULL +/* ESC_PUTSTRING can't be implemented - it needs text, not pointer to it + #define ESC_PUTSTRING(x,y,text) (char)6, (unsigned)(x), (char)(y), (text), (char)NULL +*/ + +#endif +/* + GEOS menu and icon functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GMENU_H +#define _GMENU_H + +#ifndef _GSTRUCT_H +#include +#endif + +void __fastcall__ DoMenu(struct menu *myMenu); +void ReDoMenu(void); +void RecoverMenu(void); +void RecoverAllMenus(void); +void DoPreviousMenu(void); +void GotoFirstMenu(void); + +void __fastcall__ DoIcons(struct icontab *myIconTab); + +/* DoMenu - menutypes */ +#define MENU_ACTION 0x00 +#define DYN_SUB_MENU 0x40 +#define SUB_MENU 0x80 +#define HORIZONTAL 0x00 +#define VERTICAL 0x80 +/* menu string offsets */ +#define OFF_MY_TOP 0 +#define OFF_MY_BOT 1 +#define OFF_MX_LEFT 2 +#define OFF_MX_RIGHT 4 +#define OFF_NUM_M_ITEMS 6 +#define OFF_1ST_M_ITEM 7 +/* icon string offsets */ +#define OFF_NM_ICNS 0 +#define OFF_IC_XMOUSE 1 +#define OFF_IC_YMOUSE 3 +#define OFF_PIC_ICON 0 +#define OFF_X_ICON_POS 2 +#define OFF_Y_ICON_POS 3 +#define OFF_WDTH_ICON 4 +#define OFF_HEIGHT_ICON 5 +#define OFF_SRV_RT_ICON 6 +#define OFF_NX_ICON 8 +/* icons, menus status flags */ +#define ST_FLASH 0x80 +#define ST_INVERT 0x40 +#define ST_LD_AT_ADDR 0x01 +#define ST_LD_DATA 0x80 +#define ST_PR_DATA 0x40 +#define ST_WR_PR 0x40 + +#endif +/* + GEOS memory and string functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GMEMORY_H +#define _GMEMORY_H + +#ifndef _GSTRUCT_H +#include +#endif + +void __fastcall__ CopyString(char *dest, const char *source); +char __fastcall__ CmpString(const char *dest, const char *source); +void __fastcall__ CopyFString(char len, char *dest, const char *source); +char __fastcall__ CmpFString(char len, char *dest, const char *source); + +unsigned __fastcall__ CRC(const char *buffer, unsigned len); +void* __fastcall__ ClearRam(char *dest, unsigned len); +void* __fastcall__ FillRam(char *dest, char what, unsigned len); + +void* __fastcall__ MoveData(char *dest, const char *source, unsigned len); + +void __fastcall__ InitRam(char *myInitTab); + +void __fastcall__ StashRAM(char REUBank, unsigned len, char *reuaddy, const char *cpuaddy); +void __fastcall__ FetchRAM(char REUBank, unsigned len, const char *reuaddy, char *cpuaddy); +void __fastcall__ SwapRAM(char REUBank, unsigned len, char *reuaddy, char *cpuaddy); +char __fastcall__ VerifyRAM(char REUBank, unsigned len, const char *reuaddy, const char *cpuaddy); + +#endif +/* + GEOS processes (~multitasking) functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GPROCESS_H +#define _GPROCESS_H + +#ifndef _GSTRUCT_H +#include +#endif + +void __fastcall__ InitProcesses(char number, struct process *proctab); +void __fastcall__ RestartProcess(char number); +void __fastcall__ EnableProcess(char number); +void __fastcall__ BlockProcess(char number); +void __fastcall__ UnblockProcess(char number); +void __fastcall__ FreezeProcess(char number); +void __fastcall__ UnfreezeProcess(char number); + +void __fastcall__ Sleep(unsigned jiffies); + +#endif +/* + GEOS dialog box functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GDLGBOX_H +#define _GDLGBOX_H + +char __fastcall__ DoDlgBox(const char *dboxstring); +char RstrFrmDialogue(void); + +/* These are custom, predefined dialog boxes, I'm sure you'll find them usable + Most of them show 2 lines of text */ + +char __fastcall__ DlgBoxYesNo(const char *line1, const char *line2); +char __fastcall__ DlgBoxOkCancel(const char *line1, const char *line2); +void __fastcall__ DlgBoxOk(const char *line1, const char *line2); +char __fastcall__ DlgBoxGetString(char *myString, char strLength, + const char *line1, const char *line2); +char __fastcall__ DlgBoxFileSelect(const char *classtxt, char ftype, + char *fname); + +/* This is a more general dialog box, works like printf in a window */ +char MessageBox(char mode, const char *format, ...); + +/* mode argument for MessageBox() */ +enum { + MB_EMPTY=0, + MB_OK, + MB_OKCANCEL, + MB_YESNO, + MB_LAST }; + +/* Now the command string type */ + +typedef void dlgBoxStr; + +/* and command string commands - macros */ + +#define DB_DEFPOS(pattern) (char)(DEF_DB_POS | (pattern)) +#define DB_SETPOS(pattern,top,bot,left,right) \ + (char)(SET_DB_POS | (pattern)), (char)(top), (char)(bot), \ + (unsigned)(left), (unsigned)(right) +#define DB_ICON(i,x,y) (char)(i), (char)(x), (char)(y) +#define DB_TXTSTR(x,y,text) (char)DBTXTSTR, (char)(x), (char)(y), (text) +#define DB_VARSTR(x,y,ptr) (char)DBVARSTR, (char)(x), (char)(y), (char)(ptr) +#define DB_GETSTR(x,y,ptr,length) (char)DBGETSTRING, (char)(x), (char)(y), (char)(ptr), (char)(length) +#define DB_SYSOPV(ptr) (char)DBSYSOPV, (unsigned)(ptr) +#define DB_GRPHSTR(ptr) (char)DBGRPHSTR, (unsigned)(ptr) +#define DB_GETFILES(x,y) (char)DBGETFILES, (char)(x), (char)(y) +#define DB_OPVEC(ptr) (char)DBOPVEC, (unsigned)(ptr) +#define DB_USRICON(x,y,ptr) (char)DBUSRICON, (char)(x), (char)(y), (unsigned)(ptr) +#define DB_USRROUT(ptr) (char)DB_USR_ROUT, (unsigned)(ptr) +#define DB_END (char)NULL + +/* + part of constants below is used internally, but some are useful for macros above +*/ + +/* icons for DB_ICON */ +#define OK 1 +#define CANCEL 2 +#define YES 3 +#define NO 4 +#define OPEN 5 +#define DISK 6 +/* commands - internally used by command macros */ +#define DBTXTSTR 11 +#define DBVARSTR 12 +#define DBGETSTRING 13 +#define DBSYSOPV 14 +#define DBGRPHSTR 15 +#define DBGETFILES 16 +#define DBOPVEC 17 +#define DBUSRICON 18 +#define DB_USR_ROUT 19 +/* icons tabulation in standard window */ +#define DBI_X_0 1 +#define DBI_X_1 9 +#define DBI_X_2 17 +#define DBI_Y_0 8 +#define DBI_Y_1 40 +#define DBI_Y_2 72 +/* standard window size defaults */ +#define SET_DB_POS 0 +#define DEF_DB_POS 0x80 +#define DEF_DB_TOP 32 +#define DEF_DB_BOT 127 +#define DEF_DB_LEFT 64 +#define DEF_DB_RIGHT 255 +/* text tabulation in standard window */ +#define TXT_LN_1_Y 16 +#define TXT_LN_2_Y 32 +#define TXT_LN_3_Y 48 +#define TXT_LN_4_Y 64 +#define TXT_LN_5_Y 80 +#define TXT_LN_X 16 +/* system icons size */ +#define SYSDBI_HEIGHT 16 +#define SYSDBI_WIDTH 6 +/* dialogbox string offsets */ +#define OFF_DB_FORM 0 +#define OFF_DB_TOP 1 +#define OFF_DB_BOT 2 +#define OFF_DB_LEFT 3 +#define OFF_DB_RIGHT 5 +#define OFF_DB_1STCMD 7 + +#endif +/* + GEOS system addresses and locations + + reassembled by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GSYM_H +#define _GSYM_H + +#ifndef _GSTRUCT_H +#include +#endif + +#define r0 (*(unsigned*)(R_BASE + 0x00)) +#define r0L (*(char*)(R_BASE + 0x00)) +#define r0H (*(char*)(R_BASE + 0x01)) +#define r1 (*(unsigned*)(R_BASE + 0x02)) +#define r1L (*(char*)(R_BASE + 0x02)) +#define r1H (*(char*)(R_BASE + 0x03)) +#define drawWindow (*(struct window*)(R_BASE + 0x04)) +#define r2 (*(unsigned*)(R_BASE + 0x04)) +#define r2L (*(char*)(R_BASE + 0x04)) +#define r2H (*(char*)(R_BASE + 0x05)) +#define r3 (*(unsigned*)(R_BASE + 0x06)) +#define r3L (*(char*)(R_BASE + 0x06)) +#define r3H (*(char*)(R_BASE + 0x07)) +#define r4 (*(unsigned*)(R_BASE + 0x08)) +#define r4L (*(char*)(R_BASE + 0x08)) +#define r4H (*(char*)(R_BASE + 0x09)) +#define r5 (*(unsigned*)(R_BASE + 0x0a)) +#define r5L (*(char*)(R_BASE + 0x0a)) +#define r5H (*(char*)(R_BASE + 0x0b)) +#define r6 (*(unsigned*)(R_BASE + 0x0c)) +#define r6L (*(char*)(R_BASE + 0x0c)) +#define r6H (*(char*)(R_BASE + 0x0d)) +#define r7 (*(unsigned*)(R_BASE + 0x0e)) +#define r7L (*(char*)(R_BASE + 0x0e)) +#define r7H (*(char*)(R_BASE + 0x0f)) +#define r8 (*(unsigned*)(R_BASE + 0x10)) +#define r8L (*(char*)(R_BASE + 0x10)) +#define r8H (*(char*)(R_BASE + 0x11)) +#define r9 (*(unsigned*)(R_BASE + 0x12)) +#define r9L (*(char*)(R_BASE + 0x12)) +#define r9H (*(char*)(R_BASE + 0x13)) +#define r10 (*(unsigned*)(R_BASE + 0x14)) +#define r10L (*(char*)(R_BASE + 0x14)) +#define r10H (*(char*)(R_BASE + 0x15)) +#define r11 (*(unsigned*)(R_BASE + 0x16)) +#define r11L (*(char*)(R_BASE + 0x16)) +#define r11H (*(char*)(R_BASE + 0x17)) +#define r12 (*(unsigned*)(R_BASE + 0x18)) +#define r12L (*(char*)(R_BASE + 0x18)) +#define r12H (*(char*)(R_BASE + 0x19)) +#define r13 (*(unsigned*)(R_BASE + 0x1a)) +#define r13L (*(char*)(R_BASE + 0x1a)) +#define r13H (*(char*)(R_BASE + 0x1b)) +#define r14 (*(unsigned*)(R_BASE + 0x1c)) +#define r14L (*(char*)(R_BASE + 0x1c)) +#define r14H (*(char*)(R_BASE + 0x1d)) +#define r15 (*(unsigned*)(R_BASE + 0x1e)) +#define r15L (*(char*)(R_BASE + 0x1e)) +#define r15H (*(char*)(R_BASE + 0x1f)) + +#ifdef __GEOS_CBM__ + +#define nameBuf char[17] +#define blockBuf char[256] + +#define CPU_DDR (*(char*)0x00) +#define CPU_DATA (*(char*)0x01) + +#define R_BASE 0x02 + +#define curPattern (*(unsigned*)0x22) +#define string (*(unsigned*)0x24) +#define curFontDesc (*(struct fontdesc*)0x26) +#define currentMode (*(char*)0x2e) +#define dispBufferOn (*(char*)0x2f) +#define mouseOn (*(char*)0x30) +#define msePicPtr (*(unsigned*)0x31) +#define curWindow (*(struct window*)0x33) +#define pressFlag (*(char*)0x39) +#define mousePos (*(struct pixel*)0x3a) +#define returnAddress (*(unsigned*)0x3d) +#define graphMode (*(char*)0x3f) +#define STATUS (*(char*)0x90) +#define curDevice (*(char*)0xba) + +#define irqvec (*(void_func*)0x0314) +#define bkvec (*(void_func*)0x0316) +#define nmivec (*(void_func*)0x0318) + +#define APP_RAM ((char*)0x0400) +#define BACK_SCR_BASE ((char*)0x6000) +#define PRINTBASE ((char*)0x7900) +#define OS_VARS ((char*)0x8000) + +#define diskBlkBuf ((blockBuf)0x8000) +#define fileHeader (*(struct fileheader*)0x8100) +#define curDirHead ((blockBuf)0x8200) +#define fileTrScTab ((struct tr_se[128])0x8300) +#define dirEntryBuf (*(struct filehandle*)0x8400) + +#define DrACurDkNm ((nameBuf)0x841e) +#define DrBCurDkNm ((nameBuf)0x8430) +#define dataFileName ((nameBuf)0x8442) +#define dataDiskName ((nameBuf)0x8453) +#define PrntFileName ((nameBuf)0x8465) +#define PrntDiskName ((nameBuf)0x8476) + +#define curDrive (*(char*)0x8489) +#define diskOpenFlg (*(char*)0x848a) +#define isGEOS (*(char*)0x848b) +#define interleave (*(char*)0x848c) +#define NUMDRV (*(char*)0x848d) + +#define driveType ((char[4])0x848e) +#define turboFlags ((char[4])0x8492) + +#define VLIRInfo (*(struct VLIR_info*)0x8496) + +#define appMain (*(void_func*)0x849b) +#define intTopVector (*(void_func*)0x849d) +#define intBotVector (*(void_func*)0x849f) +#define mouseVector (*(void_func*)0x84a1) +#define keyVector (*(void_func*)0x84a3) +#define inputVector (*(void_func*)0x84a5) +#define mouseFaultVec (*(void_func*)0x84a7) +#define otherPressVec (*(void_func*)0x84a9) +#define StringFaultVec (*(void_func*)0x84ab) +#define alarmTmtVector (*(void_func*)0x84ad) +#define BRKVector (*(void_func*)0x84af) +#define RecoverVector (*(void_func*)0x84b1) + +#define selectionFlash (*(char*)0x84b3) +#define alphaFlag (*(char*)0x84b4) +#define iconSelFlg (*(char*)0x84b5) +#define faultData (*(char*)0x84b6) +#define menuNumber (*(char*)0x84b7) +#define mouseWindow (*(struct window*)0x84b8) +#define stringXY (*(struct pixel*)0x84be) +#define mousePicData (*(char*)0x84c1) + +#define maxMouseSpeed (*(char*)0x8501) +#define minMouseSpeed (*(char*)0x8502) +#define mouseAccel (*(char*)0x8503) +#define keyData (*(char*)0x8504) +#define mouseData (*(char*)0x8505) +#define inputData (*(char*)0x8506) +#define mouseSpeed (*(char*)0x8507) +#define random (*(char*)0x850a) +#define saveFontTab (*(struct fontdesc*)0x850c) + +#define dblClickCount (*(char*)0x8515) +#define system_date (*(struct s_date*)0x8516) +#define alarmSetFlag (*(char*)0x851c) +#define sysDBData (*(char*)0x851d) +#define screencolors (*(char*)0x851e) +#define dlgBoxRamBuf (*(char*)0x851f) + +#define savedmoby2 (*(char*)0x88bb) +#define scr80polar (*(char*)0x88bc) +#define scr80colors (*(char*)0x88bd) +#define vdcClrMode (*(char*)0x88be) +#define driveData ((char[4])0x88bf) +#define ramExpSize (*(char*)0x88c3) +#define sysRAMFlg (*(char*)0x88c4) +#define firstBoot (*(char*)0x88c5) +#define curType (*(char*)0x88c6) +#define ramBase (*(char*)0x88c7) +#define inputDevName ((nameBuf)0x88cb) +#define DrCCurDkNm ((nameBuf)0x88dc) +#define DrDCurDkNm ((nameBuf)0x88ee) +#define dir2Head ((blockBuf)0x8900) +#define SPRITE_PICS ((char*)0x8a00) +#define sprpic ((char[8][64])0x8a00) +#define COLOR_MATRIX ((char[1000])0x8c00) +#define objPointer ((char[8])0x8ff8) + +#define DISK_BASE ((char*)0x9000) +#define SCREEN_BASE ((char*)0xa000) +#define OS_ROM ((char*)0xc000) +#define OS_JUMPTAB ((char*)0xc100) +#define EXP_BASE ((char*)0xdf00) +#define MOUSE_BASE_128 ((char*)0xfd00) +#define MOUSE_JMP_128 ((char*)0xfd00) +#define END_MOUSE_128 ((char*)0xfe80) +#define MOUSE_BASE ((char*)0xfe80) +#define MOUSE_JMP ((char*)0xfe80) + +#define config (*(char*)0xff00) +#define END_MOUSE ((char*)0xfffa) + +#define NMI_VECTOR (*(void_func*)0xfffa) +#define RESET_VECTOR (*(void_func*)0xfffc) +#define IRQ_VECTOR (*(void_func*)0xfffe) + +#define vicbase ((char*)0xd000) +#define sidbase ((char*)0xd400) +#define mmu ((char*)0xd500) +#define VDC ((char*)0xd600) +#define ctab ((char*)0xd800) +#define cia1base ((char*)0xdc00) +#define cia2base ((char*)0xdd00) + +#define mob0xpos (*(char*)0xd000) +#define mob0ypos (*(char*)0xd001) +#define mob1xpos (*(char*)0xd002) +#define mob1ypos (*(char*)0xd003) +#define mob2xpos (*(char*)0xd004) +#define mob2ypos (*(char*)0xd005) +#define mob3xpos (*(char*)0xd006) +#define mob3ypos (*(char*)0xd007) +#define mob4xpos (*(char*)0xd008) +#define mob4ypos (*(char*)0xd009) +#define mob5xpos (*(char*)0xd00a) +#define mob5ypos (*(char*)0xd00b) +#define mob6xpos (*(char*)0xd00c) +#define mob6ypos (*(char*)0xd00d) +#define mob7xpos (*(char*)0xd00e) +#define mob7ypos (*(char*)0xd00f) +#define msbxpos (*(char*)0xd010) +#define grcntrl1 (*(char*)0xd011) +#define rasreg (*(char*)0xd012) +#define lpxpos (*(char*)0xd013) +#define lpypos (*(char*)0xd014) +#define mobenble (*(char*)0xd015) +#define grcntrl2 (*(char*)0xd016) +#define grmemptr (*(char*)0xd018) +#define grirq (*(char*)0xd019) +#define grirqen (*(char*)0xd01a) +#define moby2 (*(char*)0xd017) +#define mobprior (*(char*)0xd01b) +#define mobmcm (*(char*)0xd01c) +#define mobx2 (*(char*)0xd01d) +#define mobmobcol (*(char*)0xd01e) +#define mobbakcol (*(char*)0xd01f) +#define extclr (*(char*)0xd020) +#define bakclr0 (*(char*)0xd021) +#define bakclr1 (*(char*)0xd022) +#define bakclr2 (*(char*)0xd023) +#define bakclr3 (*(char*)0xd024) +#define mcmclr0 (*(char*)0xd025) +#define mcmclr1 (*(char*)0xd026) +#define mob0clr (*(char*)0xd027) +#define mob1clr (*(char*)0xd028) +#define mob2clr (*(char*)0xd029) +#define mob3clr (*(char*)0xd02a) +#define mob4clr (*(char*)0xd02b) +#define mob5clr (*(char*)0xd02c) +#define mob6clr (*(char*)0xd02d) +#define mob7clr (*(char*)0xd02e) +#define keyreg (*(char*)0xd02f) +#define clkreg (*(char*)0xd030) + +#define vdcreg (*(char*)0xd600) +#define vdcdata (*(char*)0xd601) + +#else /* #ifdef __GEOS_CBM__ */ + +#define nameBuf char[16] +#define blockBuf char[512] + +#define R_BASE 0x00 + +#define curPattern (*(unsigned*)0x022c) +#define string (*(unsigned*)0x53) +#define curFontDesc (*(struct fontdesc*)0x0218) +#define currentMode (*(char*)0x021c) +#define dispBufferOn (*(char*)0x021d) +#define mouseOn (*(char*)0x5d) +#define curWindow (*(struct window*)0x021e) +#define pressFlag (*(char*)0x08fe) +#define mousePos (*(struct pixel*)0x0241) +#define returnAddress (*(unsigned*)0x64) + +#define diskBlkBuf ((blockBuf)0xf659) +#define fileHeader (*(struct fileheader*)0xf859) +#define curDirHead ((char[39])0xfa80) +#define dirEntryBuf (*(struct filehandle*)0xfa59) + +#define DrACurDkNm ((nameBuf)0xfaa7) +#define DrBCurDkNm ((nameBuf)0xfab7) +#define dataFileName ((nameBuf)0x02a4) +#define dataDiskName ((nameBuf)0x02b4) +#define PrntFileName ((nameBuf)0x08ac) + +#define curDrive (*(char*)0xf60d) +#define diskOpenFlg (*(char*)0xf617) +#define NUMDRV (*(char*)0xf60e) + +#define driveType ((char[4])0xfaf3) + +#define VLIRInfo (*(struct VLIR_info*)0xf618) + +#define appMain (*(void_func*)0x0200) +#define intTopVector (*(void_func*)0x0202) +#define intBotVector (*(void_func*)0x0204) +#define mouseVector (*(void_func*)0x0206) +#define keyVector (*(void_func*)0x0208) +#define inputVector (*(void_func*)0x020a) +#define mouseFaultVec (*(void_func*)0x020c) +#define otherPressVec (*(void_func*)0x020e) +#define StringFaultVec (*(void_func*)0x0210) +#define alarmTmtVector (*(void_func*)0x0212) +#define BRKVector (*(void_func*)0x0214) +#define RecoverVector (*(void_func*)0x0216) + +#define selectionFlash (*(char*)0x0224) +#define alphaFlag (*(char*)0x0225) +#define iconSelFlg (*(char*)0x0226) +#define faultData (*(char*)0x0227) +#define menuNumber (*(char*)0x0228) +#define mouseWindow (*(struct window*)0x57) +#define stringXY (*(struct pixel*)0x022e) + +#define maxMouseSpeed (*(char*)0x027d) +#define minMouseSpeed (*(char*)0x027e) +#define mouseAccel (*(char*)0x027f) +#define keyData (*(char*)0x0245) +#define mouseData (*(char*)0x0246) +#define inputData (*(char*)0x0247) +#define random (*(char*)0x024c) +#define saveFontTab (*(struct fontdesc*)0x024e) + +#define dblClickCount (*(char*)0x0258) +#define system_date (*(struct s_date*)0xf200) +#define sysDBData (*(char*)0x0259) +#define dlgBoxRamBuf (*(char*)0xf381) + +#define firstBoot (*(char*)0x0281) +#define inputDevName ((nameBuf)0x08cc) +#define DrCCurDkNm ((nameBuf)0xfac7) +#define DrDCurDkNm ((nameBuf)0xfad7) + +#define mobenble (*(char*)0x0818) +#define moby2 (*(char*)0x081a) +#define mobx2 (*(char*)0x0819) + +#endif /* #ifdef __GEOS_CBM__ */ + +#endif +/* + GEOS filesystem functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GFILE_H +#define _GFILE_H + +#ifndef _GSTRUCT_H +#include +#endif + +struct filehandle *Get1stDirEntry(void); +struct filehandle *GetNxtDirEntry(void); + +char __fastcall__ FindFTypes(char *buffer, char ftype, char fmaxnum, const char *classtxt); + +char __fastcall__ GetFile(char flag, const char *fname, + const char *loadaddr, const char *datadname, const char *datafname); +char __fastcall__ FindFile(const char *fname); +char __fastcall__ ReadFile(struct tr_se *myTrSe, char *buffer, unsigned flength); +char __fastcall__ SaveFile(char skip, struct fileheader *myHeader); +char __fastcall__ FreeFile(struct tr_se myTable[]); +char __fastcall__ DeleteFile(const char *fname); +char __fastcall__ RenameFile(const char *source, const char *target); + +char ReadByte(void); + +char __fastcall__ FollowChain(struct tr_se *startTrSe, char *buffer); +char __fastcall__ GetFHdrInfo(struct filehandle *myFile); + +char __fastcall__ OpenRecordFile(const char *fname); +char CloseRecordFile(void); +char NextRecord(void); +char PreviousRecord(void); +char __fastcall__ PointRecord(char); +char DeleteRecord(void); +char InsertRecord(void); +char AppendRecord(void); +char __fastcall__ ReadRecord(char *buffer, unsigned flength); +char __fastcall__ WriteRecord(const char *buffer, unsigned flength); +char UpdateRecordFile(void); + +/* GEOS filetypes */ +#define NOT_GEOS 0 +#define BASIC 1 +#define ASSEMBLY 2 +#define DATA 3 +#define SYSTEM 4 +#define DESK_ACC 5 +#define APPLICATION 6 +#define APPL_DATA 7 +#define FONT 8 +#define PRINTER 9 +#define INPUT_DEVICE 10 +#define DISK_DEVICE 11 +#define SYSTEM_BOOT 12 +#define TEMPORARY 13 +#define AUTO_EXEC 14 +#define INPUT_128 15 +#define NUMFILETYPES 16 +/* supported structures */ +#define SEQUENTIAL 0 +#define VLIR 1 +/* DOS filetypes */ +#define DEL 0 +#define SEQ 1 +#define PRG 2 +#define USR 3 +#define REL 4 +#define CBM 5 + +#endif +/* + GEOS functions from disk driver + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GDISK_H +#define _GDISK_H + +#ifndef _GSTRUCT_H +#include +#endif + +char __fastcall__ ReadBuff(struct tr_se *myTrSe); +char __fastcall__ WriteBuff(struct tr_se *myTrSe); + +char __fastcall__ GetBlock(struct tr_se *myTrSe, char *buffer); +char __fastcall__ PutBlock(struct tr_se *myTrSe, const char *buffer); +char __fastcall__ ReadBlock(struct tr_se *myTrSe, char *buffer); +char __fastcall__ WriteBlock(struct tr_se *myTrSe, const char *buffer); +char __fastcall__ VerWriteBlock(struct tr_se *myTrSe, const char *buffer); + +unsigned CalcBlksFree(void); +char ChkDkGEOS(void); +char SetGEOSDisk(void); +char NewDisk(void); +char OpenDisk(void); + +char __fastcall__ FindBAMBit(struct tr_se *myTrSe); +char __fastcall__ BlkAlloc(struct tr_se output[], unsigned length); +char __fastcall__ NxtBlkAlloc(struct tr_se *startTrSe, + struct tr_se output[], unsigned length); +char __fastcall__ FreeBlock(struct tr_se *myTrSe); +struct tr_se __fastcall__ SetNextFree(struct tr_se *myTrSe); +// above needs (unsigned) casts on both sides of '=' + +char GetDirHead(void); +char PutDirHead(void); +void __fastcall__ GetPtrCurDkNm(char *name); + +void EnterTurbo(void); +void ExitTurbo(void); +void PurgeTurbo(void); + +char __fastcall__ ChangeDiskDevice(char newdev); + +/* disk header offsets i.e. index curDirHead with these */ +#define OFF_TO_BAM 4 +#define OFF_DISK_NAME 144 +#define OFF_GS_DTYPE 189 +#define OFF_OP_TR_SC 171 +#define OFF_GS_ID 173 +/* disk errors reported in _oserror */ +#define ANY_FAULT 0xf0 +#define G_EOF 0 +#define NO_BLOCKS 1 +#define INV_TRACK 2 +#define INSUFF_SPACE 3 +#define FULL_DIRECTORY 4 +#define FILE_NOT_FOUND 5 +#define BAD_BAM 6 +#define UNOPENED_VLIR 7 +#define INV_RECORD 8 +#define OUT_OF_RECORDS 9 +#define STRUCT_MISMAT 10 +#define BFR_OVERFLOW 11 +#define CANCEL_ERR 12 +#define DEV_NOT_FOUND 13 +#define INCOMPATIBLE 14 +#define HDR_NOT_THERE 0x20 +#define NO_SYNC 0x21 +#define DBLK_NOT_THERE 0x22 +#define DAT_CHKSUM_ERR 0x23 +#define WR_VER_ERR 0x25 +#define WR_PR_ON 0x26 +#define HDR_CHKSUM_ERR 0x27 +#define DSK_ID_MISMAT 0x29 +#define BYTE_DEC_ERR 0x2e +#define DOS_MISMATCH 0x73 + +#endif +/* + GEOS structs + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +/* + apart from initializing data, structures below can be used to + speed up access to data and let cc65 to generate better code + e.g. if you have menu defined as TopMenu and you want to change the number of + menu items use: + ((struct menu*)&TopMenu)->number=newNumber; + This will be translated into single lda/sta pair +*/ + +#ifndef _GSTRUCT_H +#define _GSTRUCT_H + +typedef void (*void_func) (void); + +struct s_date { /* system date & time */ + char s_year; + char s_month; + char s_day; + char s_hour; + char s_minutes; + char s_seconds; +}; + +struct tr_se { /* track and sector */ + char track; + char sector; +}; + +struct fileheader { /* header block (like fileHeader) */ + struct tr_se n_block; + char icon_desc[3]; + char icon_pic[63]; + char dostype; + char type; + char structure; + unsigned load_address; + unsigned end_address; + unsigned exec_address; + char class_name[19]; + char column_flag; + char author[63]; + char note[96]; +}; + +#ifdef __GEOS_CBM__ + +struct f_date { /* date in filedesctiptor */ + char f_year; + char f_month; + char f_day; + char f_hour; + char f_minute; +}; + +struct filehandle { /* filehandle in directory sectors */ + char dostype; /* or in dirEntryBuf */ + struct tr_se n_block; + char name[16]; + struct tr_se header; + char structure; + char type; + struct f_date date; + unsigned size; +}; + +#else /* #ifdef __GEOS_CBM__ */ + +struct f_date { /* date in filedesctiptor */ + unsigned f_day:5; + unsigned f_month:4; + unsigned f_year:7; + char f_minute; + char f_hour; +}; + +struct filehandle { /* filehandle in directory sectors */ + unsigned name_len:4; /* or in dirEntryBuf */ + unsigned structure:4; + char name[15]; + char type; + struct tr_se n_block; + unsigned size; + char byte_size[3]; + struct f_date date; + char version; + char min_version; + char access; + struct tr_se header; + struct f_date mod_date; + struct tr_se dir_head; +}; + +#endif /* #ifdef __GEOS_CBM__ */ + +struct pixel { /* describes point */ + unsigned x; + char y; +}; + +struct fontdesc { /* describes font */ + char baseline; + char width; + char height; + char *index_tbl; + char *data_ptr; +}; + +struct window { /* describes screen region */ + char top; + char bot; + unsigned left; + unsigned right; +}; + +struct VLIR_info { /* VLIR information */ + char curRecord; /* currently only used in VLIR */ + char usedRecords; /* as system info (curRecord is mainly of your interest */ + char fileWritten; + unsigned fileSize; +}; + +struct process { /* process info, declare table of that type */ + unsigned pointer; /* (like: struct process proctab[2]=... */ + unsigned jiffies; /* last entry HAVE TO BE {0,0} */ +}; + +struct iconpic { /* icon/encoded bitmap description */ + char *pic_ptr; /* ptr to a photo scrap (or encoded bitmap) */ + char x; /* position in cards (*8 pixels) */ + char y; + char width; /* in cards */ + char heigth; /* in lines (pixels) */ +}; + +struct icondef { /* icon definition for DoIcons */ + char *pic_ptr; /* ptr to a photo scrap (or encoded bitmap) */ + char x; /* position in cards (*8 pixels) */ + char y; + char width; /* of icon (in cards) */ + char heigth; /* of icon in lines (pixels) */ + unsigned proc_ptr; /* pointer to function handling that icon */ +}; + +struct icontab { + char number; /* number of declared icons */ + struct pixel mousepos; /* position of mouse after DoIcons */ + struct icondef tab[]; /* table of size declared by icontab.number */ +}; + +struct menuitem { + char *name; + char type; + void *rest; /* may be ptr to function, or ptr to struct menu (submenu) */ +}; + +struct menu { + struct window size; + char number; + struct menuitem items[]; +}; + +struct inittab { /* use struct inittab mytab[n] for initram */ + unsigned ptr; /* ptr to 1st byte */ + char number; /* number of following bytes */ + char values[]; /* actual string of bytes */ +}; + +#endif +/* + GEOS system functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GSYS_H +#define _GSYS_H + +void FirstInit(void); +void InitForIO(void); +void DoneWithIO(void); +void MainLoop(void); +void EnterDeskTop(void); +void ToBASIC(void); +void Panic(void); + +void __fastcall__ CallRoutine(void *myRoutine); + +unsigned GetSerialNumber(void); +char GetRandom(void); + +void __fastcall__ SetDevice(char newdev); + +char get_ostype(void); + +/* possible return values of get_ostype, machine and version flags will + be combined with OR */ + /* machine flags */ +#define GEOS64 0x00 +#define GEOS4 0x04 /* plus4 geos is not or'ed with version */ +#define GEOS128 0x80 + /* version flags */ +#define GEOS_V10 0x10 +#define GEOS_V11 0x11 +#define GEOS_V12 0x12 /* ??? not sure */ +#define GEOS_V20 0x20 +#define WHEELS 0x40 /* only Wheels? */ + +char get_tv(void); + +/* possible return values of get_tv, these flags will be combined + note that columns state can be changed during runtime and get_tv + always returns the current state */ +#define COLUMNS40 0x00 +#define COLUMNS80 0x01 +#define TV_PAL 0x00 +#define TV_NTSC 0x80 + +#endif +/*****************************************************************************/ +/* */ +/* utsname.h */ +/* */ +/* Return system information */ +/* */ +/* */ +/* */ +/* (C) 2003 Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _UTSNAME_H +#define _UTSNAME_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* +** Suggested field contents: +** +** sysname +** Should contain the name of the underlying operating system, or "cc65" +** if the program runs on the bare machine. +** +** nodename +** Is empty or may be defined by the implementor. +** +** release +** Contains the operating system release or the major/minor cc65 version +** if sysname contains "cc65". +** +** version +** Contains the operating system version or the cc65 patch version if +** sysname contains "cc65". +** +** machine +** Contains the complete name of the machine, like "Commodore 64", +** "Oric Atmos" or similar. +** +** Beware: The library sources written in assembler have knowledge about this +** struct! +*/ +struct utsname { + char sysname[17]; + char nodename[9]; + char release[9]; + char version[9]; + char machine[25]; +}; + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +int __fastcall__ uname (struct utsname* buf); +/* Return system information */ + + + +/* End of utsname.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* types.h */ +/* */ +/* Primitive system data types for cc65 */ +/* */ +/* */ +/* */ +/* (C) 2003 Ullrich von Bassewitz */ +/* Römerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _TYPES_H +#define _TYPES_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* off_t is also defined in unistd.h */ +#ifndef _HAVE_off_t +#define _HAVE_off_t +typedef long int off_t; +#endif + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +/* End of types.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* joy-kernel.h */ +/* */ +/* Internally used joystick functions */ +/* */ +/* */ +/* */ +/* (C) 2002-2006, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _JOY_KERNEL_H +#define _JOY_KERNEL_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* A structure that describes the header of a joystick driver loaded into +** memory. +*/ +typedef struct { + + /* Driver header */ + char id[3]; /* Contains 0x6a, 0x6f, 0x79 ("joy") */ + unsigned char version; /* Interface version */ + + /* Bitmasks for the joystick states. See joystick.h for indices */ + unsigned char masks[8]; + + /* Jump vectors. Note that these are not C callable */ + void* install; /* INSTALL routine */ + void* uninstall; /* UNINSTALL routine */ + void* count; /* COUNT routine */ + void* read; /* READ routine */ + void* irq; /* IRQ routine */ + +} joy_drv_header; + + + +/* JOY kernel variables */ +extern joy_drv_header* joy_drv; /* Pointer to driver */ + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +void joy_clear_ptr (void); +/* Clear the joy_drv pointer */ + + + +/* End of joy-kernel.h */ +#endif + + + +;/*****************************************************************************/ +;/* */ +;/* time.inc */ +;/* */ +;/* Date and time */ +;/* */ +;/* */ +;/* */ +;/* (C) 2009 Ullrich von Bassewitz */ +;/* Roemerstrasse 52 */ +;/* D-70794 Filderstadt */ +;/* EMail: uz@cc65.org */ +;/* */ +;/* */ +;/* This software is provided 'as-is', without any expressed or implied */ +;/* warranty. In no event will the authors be held liable for any damages */ +;/* arising from the use of this software. */ +;/* */ +;/* Permission is granted to anyone to use this software for any purpose, */ +;/* including commercial applications, and to alter it and redistribute it */ +;/* freely, subject to the following restrictions: */ +;/* */ +;/* 1. The origin of this software must not be misrepresented; you must not */ +;/* claim that you wrote the original software. If you use this software */ +;/* in a product, an acknowledgment in the product documentation would be */ +;/* appreciated but is not required. */ +;/* 2. Altered source versions must be plainly marked as such, and must not */ +;/* be misrepresented as being the original software. */ +;/* 3. This notice may not be removed or altered from any source */ +;/* distribution. */ +;/* */ +;/*****************************************************************************/ + + + +;------------------------------------------------------------------------------ +; Struct tm - must match the struct defined in time.h + +.struct tm + tm_sec .word + tm_min .word + tm_hour .word + tm_mday .word + tm_mon .word + tm_year .word + tm_wday .word + tm_yday .word + tm_isdst .word +.endstruct + + +;------------------------------------------------------------------------------ +; Exported functions + +.global __systime +.global _mktime + + + +;------------------------------------------------------------------------- +; Atari System Equates +; by Freddy Offenga, Christian Groessler, and Christian Krueger +; +; References: +; - Atari 400/800 OS rev.B source code, Atari 1979 +; - Atari OS manual - XL addendum +; - Atari XL/XE rev.2 source code, Atari 1984 +; - Mapping the Atari - revised edition, Ian Chadwick 1985 +; +; ##old## old OS rev.B label - moved or deleted +; ##1200xl## new label introduced in 1200XL OS (rev.10/11) +; ##rev2## new label introduced in XL/XE OS rev.2 +;------------------------------------------------------------------------- + +;------------------------------------------------------------------------- +; Configuration Equates +;------------------------------------------------------------------------- + +MAXDEV = 33 ;offset to last possible entry of HATABS +IOCBSZ = 16 ;length of IOCB + +SEIOCB = 0*IOCBSZ ;##rev2## screen editor IOCB index +MAXIOC = 8*IOCBSZ ;first invalid IOCB index + +DSCTSZ = 128 ;##rev2## disk sector size + +LEDGE = 2 ;left edge +REDGE = 39 ;right edge + +INIML = $0700 ;##rev2## initial MEMLO + +ICSORG = $CC00 ;##rev2## international character set origin +DCSORG = $E000 ;##rev2## domestic character set origin + +; IOCB Command Code Equates + +OPEN = $03 ;open +GETREC = $05 ;get record +GETCHR = $07 ;get character(s) +PUTREC = $09 ;put record +PUTCHR = $0B ;put character(s) +CLOSE = $0C ;close +STATIS = $0D ;status +SPECIL = $0E ;special + +; DOS IOCB command codes + +RENAME = $20 ;rename disk file +DELETE = $21 ;delete disk file +LOCKFL = $23 ;lock file (set to read-only) +UNLOCK = $24 ;unlock file +POINT = $25 ;point sector +NOTE = $26 ;note sector +GETFL = $27 ;get file length +CHDIR_MYDOS = $29 ;change directory (MyDOS) +MKDIR = $2A ;make directory (MyDOS/SpartaDOS) +RMDIR = $2B ;remove directory (SpartaDOS) +CHDIR_SPDOS = $2C ;change directory (SpartaDOS) +FORMAT = $FE ;format + +GETCWD = $30 ;get current directory (MyDOS/SpartaDOS) + +; Special Entry Command Equates +; DOS Commands +; Command line table, Index values for (DOSVEC),Y -- COMTAB +; Compatible with OS/A+, DOS XL and SpartaDOS + +COMTAB = 0 ;DOS entry jump vector +ZCRNAME = 3 ;file name crunch routine jump vector +BUFOFF = 10 ;next parameter buffer offset +COMFNAM = 33 ;destination buffer for crunch routine +LBUF = 63 ;command line input buffer + +; Screen IOCB Commands + +DRAWLN = $11 ;draw line +FILLIN = $12 ;draw line with right fill + +; ICAX1 Auxiliary Byte 1 Equates + +APPEND = $01 ;open write append (D:) +DIRECT = $02 ;open for directory access (D:) +OPNIN = $04 ;open for input (all devices) +OPNOT = $08 ;open for output (all devices) +MXDMOD = $10 ;open for mixed mode (E:, S:) +INSCLR = $20 ;open for input without clearing screen + +; Device Code Equates + +CASSET = 'C' ;cassette +DISK = 'D' ;disk +SCREDT = 'E' ;screen editor +KBD = 'K' ;keyboard +PRINTR = 'P' ;printer +DISPLY = 'S' ;screen display + +; SIO Command Code Equates + +SIO_FORMAT = $21 ;format disk (default density) +SIO_FORMATS = $22 ;1050: format medium density +SIO_CONFIG = $44 ;configure drive +SIO_CONFIGSF = $4B ;slow/fast configure drive?? +SIO_RDPERCOM = $4E ;read PERCOM block (XF551) +SIO_WRPERCOM = $4F ;write PERCOM block (XF551) +SIO_WRITE = $50 ;write sector +SIO_READ = $52 ;read sector +SIO_STAT = $53 ;get status information +SIO_VERIFY = $56 ;verify sector +SIO_WRITEV = $57 ;write sector with verify +SIO_WRITETRK = $60 ;write track (Speedy) +SIO_READTRK = $62 ;read track (Speedy) + +; SIO Status Code (DSTATS) +; Input: data direction +; Bit #7 - W (write operation) +; #6 - R (read operation) +; Output: status code +; $01 (001) -- OPERATION COMPLETE (NO ERRORS) +; $8A (138) -- DEVICE TIMEOUT (DOESN'T RESPOND) +; $8B (139) -- DEVICE NAK +; $8C (140) -- SERIAL BUS INPUT FRAMING ERROR +; $8E (142) -- SERIAL BUS DATA FRAME OVERRUN ERROR +; $8F (143) -- SERIAL BUS DATA FRAME CHECKSUM ERROR +; $90 (144) -- DEVICE DONE ERROR + +; Character and Key Code Equates + +CLS = $7D ;##rev2## clear screen +EOL = $9B ;end of line (RETURN) + +HELP = $11 ;##1200xl## key code for HELP +CNTLF1 = $83 ;##1200xl## key code for CTRL-F1 +CNTLF2 = $84 ;##1200xl## key code for CTRL-F2 +CNTLF3 = $93 ;##1200xl## key code for CTRL-F3 +CNTLF4 = $94 ;##1200xl## key code for CTRL-F4 +CNTL1 = $9F ;##1200xl## key code for CTRL-1 + +; Status Code Equates + +SUCCES = 1 ;($01) succesful operation + +BRKABT = 128 ;($80) BREAK key abort +PRVOPN = 129 ;($81) IOCB already open error +NONDEV = 130 ;($82) nonexistent device error +WRONLY = 131 ;($83) IOCB opened for write only error +NVALID = 132 ;($84) invalid command error +NOTOPN = 133 ;($85) device/file not open error +BADIOC = 134 ;($86) invalid IOCB index error +RDONLY = 135 ;($87) IOCB opened for read only error +EOFERR = 136 ;($88) end of file error +TRNRCD = 137 ;($89) truncated record error +TIMOUT = 138 ;($8A) peripheral device timeout error +DNACK = 139 ;($8B) device does not acknowledge command +FRMERR = 140 ;($8C) serial bus framing error +CRSROR = 141 ;($8D) cursor overrange error +OVRRUN = 142 ;($8E) serial bus data overrun error +CHKERR = 143 ;($8F) serial bus checksum error +DERROR = 144 ;($90) device done (operation incomplete) +BADMOD = 145 ;($91) bad screen mode number error +FNCNOT = 146 ;($92) function not implemented in handler +SCRMEM = 147 ;($93) insufficient memory for screen mode + +DSKFMT = 148 ;($94) SpartaDOS: unrecognized disk format +INCVER = 149 ;($95) SpartaDOS: disk was made with incompat. version +DIRNFD = 150 ;($96) SpartaDOS: directory not found +FEXIST = 151 ;($97) SpartaDOS: file exists +NOTBIN = 152 ;($98) SpartaDOS: file not binary +LSYMND = 154 ;($9A) SDX: loader symbol not defined +BADPRM = 156 ;($9C) SDX: bad parameter +OUTOFM = 158 ;($9E) SDX: out of memory +INVDEV = 160 ;($A0) invalid device number +TMOF = 161 ;($A1) too many open files +DSKFLL = 162 ;($A2) disk full +FATLIO = 163 ;($A3) fatal I/O error +FNMSMT = 164 ;($A4) internal file number mismatch +INVFNM = 165 ;($A5) invalid file name +PDLERR = 166 ;($A6) point data length error +EPERM = 167 ;($A7) permission denied +DINVCM = 168 ;($A8) command invalid for disk +DIRFLL = 169 ;($A9) directory full +FNTFND = 170 ;($AA) file not found +PNTINV = 171 ;($AB) point invalid +BADDSK = 173 ;($AD) bad disk +INCFMT = 176 ;($B0) DOS 3: incompatible file system +XNTBIN = 180 ;($B4) XDOS: file not binary + +; DCB Device Bus Equates + +DISKID = $31 ;##rev2## disk bus ID +PDEVN = $40 ;##rev2## printer bus ID +CASET = $60 ;##rev2## cassette bus ID + +; Bus Command Equates + +FOMAT = '!' ;##rev2## format command +PUTSEC = 'P' ;##rev2## put sector command +READ = 'R' ;##rev2## read command +STATC = 'S' ;##rev2## status command +WRITE = 'W' ;##rev2## write command + +; Command Auxiliary Byte Equates + +DOUBLE = 'D' ;##rev2## print 20 characters double width +NORMAL = 'N' ;##rev2## print 40 characters normally +PLOT = 'P' ;##rev2## plot +SIDWAY = 'S' ;##rev2## print 16 characters sideways + +; Bus Response Equates + +ACK = 'A' ;##rev2## device acknowledged +COMPLT = 'C' ;##rev2## device succesfully completed operation +ERROR = 'E' ;##rev2## device incurred error +NACK = 'N' ;##rev2## device did not understand + +; Floating Point Miscellaneous Equates + +FPREC = 6 ;precision + +FMPREC = FPREC-1 ;##rev2## length of mantissa + +; Cassette Record Type Equates + +HDR = $FB ;##rev2## header +DTA = $FC ;##rev2## data record +DT1 = $FA ;##rev2## last data record +EOT = $FE ;##rev2## end of tape (file) + +TONE1 = 2 ;##rev2## record +TONE2 = 1 ;##rev2## playback + +; Cassette Timing Equates + +WLEADN = 1152 ;##rev2## NTSC 19.2 second WRITE file leader +RLEADN = 576 ;##rev2## NTSC 9.6 second READ file leader +WIRGLN = 180 ;##rev2## NTSC 3.0 second WRITE IRG +RIRGLN = 120 ;##rev2## NTSC 2.0 second READ IRG +WSIRGN = 15 ;##rev2## NTSC 0.25 second WRITE short IRG +RSIRGN = 10 ;##rev2## NTSC 0.16 second READ short IRG +BEEPNN = 30 ;##rev2## NTSC 0.5 second beep duration +BEEPFN = 10 ;##rev2## NTSC 0.16 seconrd beep duration + +WLEADP = 960 ;##rev2## PAL 19.2 second WRITE file leader +RLEADP = 480 ;##rev2## PAL 9.6 second READ file leader +WIRGLP = 150 ;##rev2## PAL 3.0 second WRITE IRG +RIRGLP = 100 ;##rev2## PAL 2.0 second READ IRG +WSIRGP = 13 ;##rev2## PAL 0.25 second WRITE short IRG +RSIRGP = 8 ;##rev2## PAL 0.16 second READ short IRG +BEEPNP = 25 ;##rev2## PAL 0.5 second beep duration +BEEPFP = 8 ;##rev2## PAL 0.16 seconrd beep duration + +WIRGHI = 0 ;##rev2## high WRITE IRG +RIRGHI = 0 ;##rev2## high READ IRG + +; Power-up Validation Byte Value Equates + +PUPVL1 = $5C ;##rev2## power-up validation value 1 +PUPVL2 = $93 ;##rev2## power-up validation value 2 +PUPVL3 = $25 ;##rev2## power-up validation value 3 + +; Relocating Loader Miscellaneous Equates + +DATAER = 156 ;##rev2## end of record appears before END +MEMERR = 157 ;##rev2## memory insufficient for load error + +; Miscellaneous Equates + +IOCFRE = $FF ;IOCB free indication + +B19200 = $0028 ;##rev2## 19200 baud POKEY counter value +B00600 = $05CC ;##rev2## 600 baud POKEY counter value + +HITONE = $05 ;##rev2## FSK high freq. POKEY counter value +LOTONE = $07 ;##rev2## FSK low freq. POKEY counter value + +NCOMLO = $34 ;##rev2## PIA lower NOT COMMAND line command +NCOMHI = $3C ;##rev2## PIA raise NOT COMMAND line command + +MOTRGO = $34 ;##rev2## PIA cassette motor ON command +MOTRST = $3C ;##rev2## PIA cassette motor OFF command + +NODAT = $00 ;##rev2## SIO immediate operation +GETDAT = $40 ;##rev2## SIO read data frame +PUTDAT = $80 ;##rev2## SIO write data frame + +CRETRI = 13 ;##rev2## number of command frame retries +DRETRI = 1 ;##rev2## number of device retries +CTIM = 2 ;##rev2## command frame ACK timeout + +NBUFSZ = 40 ;##rev2## print normal buffer size +DBUFSZ = 20 ;##rev2## print double buffer size +SBUFSZ = 29 ;##rev2## print sideways buffer size + +;------------------------------------------------------------------------- +; Page Zero Address Equates +;------------------------------------------------------------------------- + +LINZBS = $00 ;LINBUG RAM (WILL BE REPLACED BY MONITOR RAM) +LNFLG = $00 ;##1200xl## 1-byte LNBUG flag (0 = not LNBUG) +NGFLAG = $01 ;##1200xl## 1-byte memory status (0 = failure) + +; Not Cleared + +CASINI = $02 ;CASSETTE INIT LOCATION +RAMLO = $04 ;RAM POINTER FOR MEMORY TEST +TRAMSZ = $06 ;TEMPORARY REGISTER FOR RAM SIZE +;TSTDAT = $07 ;##old## RAM TEST DATA REGISTER +CMCMD = $07 ;##rev2## 1-byte command communications + +; Cleared upon Coldstart only + +WARMST = $08 ;WARM START FLAG +BOOTQ = $09 ;SUCCESSFUL BOOT FLAG +DOSVEC = $0A ;DISK SOFTWARE START VECTOR +DOSINI = $0C ;DISK SOFTWARE INIT ADDRESS +APPMHI = $0E ;APPLICATIONS MEMORY HI LIMIT + +; Cleared upon Coldstart or Warmstart + +INTZBS = $10 ;INTERRUPT HANDLER + +POKMSK = $10 ;SYSTEM MASK FOR POKEY IRQ ENABLE (shadow of IRQEN) +BRKKEY = $11 ;BREAK KEY FLAG +RTCLOK = $12 ;REAL TIME CLOCK (IN 16 MSEC UNITS> +BUFADR = $15 ;INDIRECT BUFFER ADDRESS REGISTER +ICCOMT = $17 ;COMMAND FOR VECTOR +DSKFMS = $18 ;DISK FILE MANAGER POINTER +DSKUTL = $1A ;DISK UTILITIES POINTER +ABUFPT = $1C ;##1200xl## 4-byte ACMI buffer pointer area + +;PTIMOT = $1C ;##old## PRINTER TIME OUT REGISTER +;PBPNT = $1D ;##old## PRINT BUFFER POINTER +;PBUFSZ = $1E ;##old## PRINT BUFFER SIZE +;PTEMP = $1F ;##old## TEMPORARY REGISTER + +ZIOCB = $20 ;ZERO PAGE I/O CONTROL BLOCK +IOCBAS = $20 ;16-byte page zero IOCB +ICHIDZ = $20 ;HANDLER INDEX NUMBER (FF = IOCB FREE) +ICDNOZ = $21 ;DEVICE NUMBER (DRIVE NUMBER) +ICCOMZ = $22 ;COMMAND CODE +ICSTAZ = $23 ;STATUS OF LAST IOCB ACTION +ICBALZ = $24 ;BUFFER ADDRESS LOW BYTE +ICBAHZ = $25 ;1-byte high buffer address +ICPTLZ = $26 ;PUT BYTE ROUTINE ADDRESS -1 +ICPTHZ = $27 ;1-byte high PUT-BYTE routine address +ICBLLZ = $28 ;BUFFER LENGTH LOW BYTE +ICBLHZ = $29 ;1-byte high buffer length +ICAX1Z = $2A ;AUXILIARY INFORMATION FIRST BYTE +ICAX2Z = $2B ;1-byte second auxiliary information +ICSPRZ = $2C ;4-byte spares + +ENTVEC = $2C ;##rev2## 2-byte (not used) +ICIDNO = $2E ;IOCB NUMBER X 16 +CIOCHR = $2F ;CHARACTER BYTE FOR CURRENT OPERATION + +STATUS = $30 ;INTERNAL STATUS STORAGE +CHKSUM = $31 ;CHECKSUM (SINGLE BYTE SUM WITH CARRY) +BUFRLO = $32 ;POINTER TO DATA BUFFER (LO BYTE) +BUFRHI = $33 ;POINTER TO DATA BUFFER (HI BYTE) +BFENLO = $34 ;NEXT BYTE PAST END OF THE DATA BUFFER LO +BFENHI = $35 ;NEXT BYTE PAST END OF THE DATA BUFFER HI +;CRETRY = $36 ;##old## NUMBER OF COMMAND FRAME RETRIES +;DRETRY = $37 ;##old## NUMBER OF DEVICE RETRIES +LTEMP = $36 ;##1200xl## 2-byte loader temporary +BUFRFL = $38 ;DATA BUFFER FULL FLAG +RECVDN = $39 ;RECEIVE DONE FLAG +XMTDON = $3A ;TRANSMISSION DONE FLAG +CHKSNT = $3B ;CHECKSUM SENT FLAG +NOCKSM = $3C ;NO CHECKSUM FOLLOWS DATA FLAG +BPTR = $3D ;1-byte cassette buffer pointer +FTYPE = $3E ;1-byte cassette IRG type +FEOF = $3F ;1-byte cassette EOF flag (0 = quiet) +FREQ = $40 ;1-byte cassette beep counter +SOUNDR = $41 ;NOISY I/0 FLAG. (ZERO IS QUIET) + +CRITIC = $42 ;DEFINES CRITICAL SECTION (CRITICAL IF NON-Z) + +FMSZPG = $43 ;DISK FILE MANAGER SYSTEM ZERO PAGE + +;CKEY = $4A ;##old## FLAG SET WHEN GAME START PRESSED +ZCHAIN = $4A ;##1200xl## 2-byte handler linkage chain pointer +;CASSBT = $4B ;##old## CASSETTE BOOT FLAG +DSTAT = $4C ;DISPLAY STATUS +ATRACT = $4D ;ATRACT FLAG +DRKMSK = $4E ;DARK ATRACT MASK +COLRSH = $4F ;ATRACT COLOR SHIFTER (EOR'ED WITH PLAYFIELD + + +TMPCHR = $50 ;1-byte temporary character +HOLD1 = $51 ;1-byte temporary +LMARGN = $52 ;left margin (normally 2, cc65 C startup code sets it to 0) +RMARGN = $53 ;right margin (normally 39 if no XEP80 is used) +ROWCRS = $54 ;1-byte cursor row +COLCRS = $55 ;2-byte cursor column +DINDEX = $57 ;1-byte display mode +SAVMSC = $58 ;2-byte saved memory scan counter +OLDROW = $5A ;1-byte prior row +OLDCOL = $5B ;2-byte prior column +OLDCHR = $5D ;DATA UNDER CURSOR +OLDADR = $5E ;2-byte saved cursor memory address +FKDEF = $60 ;##1200xl## 2-byte function key definition table +;NEWROW = $60 ;##old## POINT DRAW GOES TO +;NEWCOL = $61 ;##old## +PALNTS = $62 ;##1200xl## 1-byte PAL/NTSC indicator (0 = NTSC) +LOGCOL = $63 ;POINTS AT COLUMN IN LOGICAL LINE +ADRESS = $64 ;2-byte temporary address + +MLTTMP = $66 ;1-byte temporary +OPNTMP = $66 ;FIRST BYTE IS USED IN OPEN AS TEMP +TOADR = $66 ;##rev2## 2-byte destination address + +SAVADR = $68 ;2-byte saved address +FRMADR = $68 ;##rev2## 2-byte source address + +RAMTOP = $6A ;RAM SIZE DEFINED BY POWER ON LOGIC +BUFCNT = $6B ;BUFFER COUNT +BUFSTR = $6C ;EDITOR GETCH POINTER +BITMSK = $6E ;BIT MASK +SHFAMT = $6F ;1-byte shift amount for pixel justifucation +ROWAC = $70 ;2-byte draw working row +COLAC = $72 ;2-byte draw working column +ENDPT = $74 ;2-byte end point +DELTAR = $76 ;1-byte row difference +DELTAC = $77 ;2-byte column difference +KEYDEF = $79 ;##1200xl## 2-byte key definition table address +;ROWINC = $79 ;##old## +;COLINC = $7A ;##old## +SWPFLG = $7B ;NON-0 1F TXT AND REGULAR RAM IS SWAPPED +HOLDCH = $7C ;CH IS MOVED HERE IN KGETCH BEFORE CNTL & SH +INSDAT = $7D ;1-byte temporary +COUNTR = $7E ;2-byte draw iteration count + +; Floating Point Package Page Zero Address Equates + +FR0 = $D4 ;6-byte register 0 +FR0M = $D5 ;##rev2## 5-byte register 0 mantissa +QTEMP = $D9 ;##rev2## 1-byte temporary + +FRE = $DA ;6-byte (internal) register E + +FR1 = $E0 ;FP REG1 +FR1M = $E1 ;##rev2## 5-byte register 1 mantissa + +FR2 = $E6 ;6-byte (internal) register 2 + +FRX = $EC ;1-byte temporary + +EEXP = $ED ;VALUE OF E + +FRSIGN = $EE ;##rev2## 1-byte floating point sign +NSIGN = $EE ;SIGN OF # + +PLYCNT = $EF ;##rev2## 1-byte polynomial degree +ESIGN = $EF ;SIGN OF EXPONENT + +SGNFLG = $F0 ;##rev2## 1-byte sign flag +FCHRFLG = $F0 ;1ST CHAR FLAG + +XFMFLG = $F1 ;##rev2## 1-byte transform flag +DIGRT = $F1 ;# OF DIGITS RIGHT OF DECIMAL + +CIX = $F2 ;CURRENT INPUT INDEX +INBUFF = $F3 ;POINTS TO USER'S LINE INPUT BUFFER + +ZTEMP1 = $F5 ;2-byte temporary +ZTEMP4 = $F7 ;2-byte temporary +ZTEMP3 = $F9 ;2-byte temporary + +;DEGFLG = $FB ;##old## same as RADFLG +;RADFLG = $FB ;##old## 0=RADIANS, 6=DEGREES + +FLPTR = $FC ;2-byte floating point number pointer +FPTR2 = $FE ;2-byte floating point number pointer + +;------------------------------------------------------------------------- +; Page Two Address Equates +;------------------------------------------------------------------------- + +INTABS = $0200 ;INTERRUPT RAM + +VDSLST = $0200 ;DISPLAY LIST NMI VECTOR +VPRCED = $0202 ;PROCEED LINE IRQ VECTOR +VINTER = $0204 ;INTERRUPT LINE IRQ VECTOR +VBREAK = $0206 ;SOFTWARE BREAK (00) INSTRUCTION IRQ VECTOR +VKEYBD = $0208 ;POKEY KEYBOARD IRQ VECTOR +VSERIN = $020A ;POKEY SERIAL INPUT READY IRQ +VSEROR = $020C ;POKEY SERIAL OUTPUT READY IRQ +VSEROC = $020E ;POKEY SERIAL OUTPUT COMPLETE IRQ +VTIMR1 = $0210 ;POKEY TIMER 1 IRQ +VTIMR2 = $0212 ;POKEY TIMER 2 IRQ +VTIMR4 = $0214 ;POKEY TIMER 4 IRQ +VIMIRQ = $0216 ;IMMEDIATE IRQ VECTOR +CDTMV1 = $0218 ;COUNT DOWN TIMER 1 +CDTMV2 = $021A ;COUNT DOWN TIMER 2 +CDTMV3 = $021C ;COUNT DOWN TIMER 3 +CDTMV4 = $021E ;COUNT DOWN TIMER 4 +CDTMV5 = $0220 ;COUNT DOWN TIMER 5 +VVBLKI = $0222 ;IMMEDIATE VERTICAL BLANK NMI VECTOR +VVBLKD = $0224 ;DEFERRED VERTICAL BLANK NMI VECTOR +CDTMA1 = $0226 ;COUNT DOWN TIMER 1 JSR ADDRESS +CDTMA2 = $0228 ;COUNT DOWN TIMER 2 JSR ADDRESS +CDTMF3 = $022A ;COUNT DOWN TIMER 3 FLAG +SRTIMR = $022B ;SOFTWARE REPEAT TIMER +CDTMF4 = $022C ;COUNT DOWN TIMER 4 FLAG +INTEMP = $022D ;IAN'S TEMP +CDTMF5 = $022E ;COUNT DOWN TIMER FLAG 5 +SDMCTL = $022F ;SAVE DMACTL REGISTER +SDLSTL = $0230 ;SAVE DISPLAY LIST LOW BYTE +SDLSTH = $0231 ;SAVE DISPLAY LIST HI BYTE +SSKCTL = $0232 ;SKCTL REGISTER RAM +LCOUNT = $0233 ;##1200xl## 1-byte relocating loader record +LPENH = $0234 ;LIGHT PEN HORIZONTAL VALUE +LPENV = $0235 ;LIGHT PEN VERTICAL VALUE +BRKKY = $0236 ;BREAK KEY VECTOR +;RELADR = $0238 ;##1200xl## 2-byte relocatable loader address +VPIRQ = $0238 ;##rev2## 2-byte parallel device IRQ vector +CDEVIC = $023A ;COMMAND FRAME BUFFER - DEVICE +CCOMND = $023B ;COMMAND +CAUX1 = $023C ;COMMAND AUX BYTE 1 +CAUX2 = $023D ;COMMAND AUX BYTE 2 + +TEMP = $023E ;TEMPORARY RAM CELL + +ERRFLG = $023F ;ERROR FLAG - ANY DEVICE ERROR EXCEPT TIME OUT + +DFLAGS = $0240 ;DISK FLAGS FROM SECTOR ONE +DBSECT = $0241 ;NUMBER OF DISK BOOT SECTORS +BOOTAD = $0242 ;ADDRESS WHERE DISK BOOT LOADER WILL BE PUT +COLDST = $0244 ;COLDSTART FLAG (1=IN MIDDLE OF COLDSTART> +RECLEN = $0245 ;##1200xl## 1-byte relocating loader record length +DSKTIM = $0246 ;DISK TIME OUT REGISTER +;LINBUF = $0247 ;##old## CHAR LINE BUFFER +PDVMSK = $0247 ;##rev2## 1-byte parallel device selection mask +SHPDVS = $0248 ;##rev2## 1-byte PDVS (parallel device select) +PDIMSK = $0249 ;##rev2## 1-byte parallel device IRQ selection +RELADR = $024A ;##rev2## 2-byte relocating loader relative adr. +PPTMPA = $024C ;##rev2## 1-byte parallel device handler temporary +PPTMPX = $024D ;##rev2## 1-byte parallel device handler temporary + +CHSALT = $026B ;##1200xl## 1-byte character set alternate +VSFLAG = $026C ;##1200xl## 1-byte fine vertical scroll count +KEYDIS = $026D ;##1200xl## 1-byte keyboard disable +FINE = $026E ;##1200xl## 1-byte fine scrolling mode +GPRIOR = $026F ;GLOBAL PRIORITY CELL + +PADDL0 = $0270 ;1-byte potentiometer 0 +PADDL1 = $0271 ;1-byte potentiometer 1 +PADDL2 = $0272 ;1-byte potentiometer 2 +PADDL3 = $0273 ;1-byte potentiometer 3 +PADDL4 = $0274 ;1-byte potentiometer 4 +PADDL5 = $0275 ;1-byte potentiometer 5 +PADDL6 = $0276 ;1-byte potentiometer 6 +PADDL7 = $0277 ;1-byte potentiometer 7 + +STICK0 = $0278 ;1-byte joystick 0 +STICK1 = $0279 ;1-byte joystick 1 +STICK2 = $027A ;1-byte joystick 2 +STICK3 = $027B ;1-byte joystick 3 + +PTRIG0 = $027C ;1-byte paddle trigger 0 +PTRIG1 = $027D ;1-byte paddle trigger 1 +PTRIG2 = $027E ;1-byte paddle trigger 2 +PTRIG3 = $027F ;1-byte paddle trigger 3 +PTRIG4 = $0280 ;1-byte paddle trigger 4 +PTRIG5 = $0281 ;1-byte paddle trigger 5 +PTRIG6 = $0281 ;1-byte paddle trigger 6 +PTRIG7 = $0283 ;1-byte paddle trigger 7 + +STRIG0 = $0284 ;1-byte joystick trigger 0 +STRIG1 = $0285 ;1-byte joystick trigger 1 +STRIG2 = $0286 ;1-byte joystick trigger 2 +STRIG3 = $0287 ;1-byte joystick trigger 3 + +;CSTAT = $0288 ;##old## cassette status register +HIBYTE = $0288 ;##1200xl## 1-byte relocating loader high byte +WMODE = $0289 ;1-byte cassette WRITE mode +BLIM = $028A ;1-byte cassette buffer limit +IMASK = $028B ;##rev2## (not used) +JVECK = $028C ;2-byte jump vector or temporary +NEWADR = $028E ;##1200xl## 2-byte relocating address +TXTROW = $0290 ;TEXT ROWCRS +TXTCOL = $0291 ;TEXT COLCRS +TINDEX = $0293 ;TEXT INDEX +TXTMSC = $0294 ;FOOLS CONVRT INTO NEW MSC +TXTOLD = $0296 ;OLDROW & OLDCOL FOR TEXT (AND THEN SOME) +;TMPX1 = $029C ;##old## 1-byte temporary register +CRETRY = $029C ;##1200xl## 1-byte number of command frame retries +HOLD3 = $029D ;1-byte temporary +SUBTMP = $029E ;1-byte temporary +HOLD2 = $029F ;1-byte (not used) +DMASK = $02A0 ;1-byte display (pixel location) mask +TMPLBT = $02A1 ;1-byte (not used) +ESCFLG = $02A2 ;ESCAPE FLAG +TABMAP = $02A3 ;15-byte (120 bit) tab stop bit map +LOGMAP = $02B2 ;LOGICAL LINE START BIT MAP +INVFLG = $02B6 ;INVERSE VIDEO FLAG (TOGGLED BY ATARI KEY) +FILFLG = $02B7 ;RIGHT FILL FLAG FOR DRAW +TMPROW = $02B8 ;1-byte temporary row +TMPCOL = $02B9 ;2-byte temporary column +SCRFLG = $02BB ;SET IF SCROLL OCCURS +HOLD4 = $02BC ;TEMP CELL USED IN DRAW ONLY +;HOLD5 = $02BD ;##old## DITTO +DRETRY = $02BD ;##1200xl## 1-byte number of device retries +SHFLOK = $02BE ;1-byte shift/control lock flags +BOTSCR = $02BF ;BOTTOM OF SCREEN 24 NORM 4 SPLIT + +PCOLR0 = $02C0 ;1-byte player-missile 0 color/luminance +PCOLR1 = $02C1 ;1-byte player-missile 1 color/luminance +PCOLR2 = $02C2 ;1-byte player-missile 2 color/luminance +PCOLR3 = $02C3 ;1-byte player-missile 3 color/luminance + +COLOR0 = $02C4 ;1-byte playfield 0 color/luminance +COLOR1 = $02C5 ;1-byte playfield 1 color/luminance +COLOR2 = $02C6 ;1-byte playfield 2 color/luminance +COLOR3 = $02C7 ;1-byte playfield 3 color/luminance + +COLOR4 = $02C8 ;1-byte background color/luminance + +PARMBL = $02C9 ;##rev2## 6-byte relocating loader parameter +RUNADR = $02C9 ;##1200xl## 2-byte run address +HIUSED = $02CB ;##1200xl## 2-byte highest non-zero page address +ZHIUSE = $02CD ;##1200xl## 2-byte highest zero page address + +OLDPAR = $02CF ;##rev2## 6-byte relocating loader parameter +GBYTEA = $02CF ;##1200xl## 2-byte GET-BYTE routine address +LOADAD = $02D1 ;##1200xl## 2-byte non-zero page load address +ZLOADA = $02D3 ;##1200xl## 2-byte zero page load address + +DSCTLN = $02D5 ;##1200xl## 2-byte disk sector length +ACMISR = $02D7 ;##1200xl## 2-byte ACMI interrupt service routine +KRPDEL = $02D9 ;##1200xl## 1-byte auto-repeat delay +KEYREP = $02DA ;##1200xl## 1-byte auto-repeat rate +NOCLIK = $02DB ;##1200xl## 1-byte key click disable +HELPFG = $02DC ;##1200xl## 1-byte HELP key flag (0 = no HELP) +DMASAV = $02DD ;##1200xl## 1-byte SDMCTL save/restore +PBPNT = $02DE ;##1200xl## 1-byte printer buffer pointer +PBUFSZ = $02DF ;##1200xl## 1-byte printer buffer size + +GLBABS = $02E0 ;4-byte global variables for non-DOS users +RUNAD = $02E0 ;##map## 2-byte binary file run address +INITAD = $02E2 ;##map## 2-byte binary file initialization address + +RAMSIZ = $02E4 ;RAM SIZE (HI BYTE ONLY) +MEMTOP = $02E5 ;TOP OF AVAILABLE USER MEMORY +MEMLO = $02E7 ;BOTTOM OF AVAILABLE USER MEMORY +HNDLOD = $02E9 ;##1200xl## 1-byte user load flag +DVSTAT = $02EA ;STATUS BUFFER +CBAUDL = $02EE ;1-byte low cassette baud rate +CBAUDH = $02EF ;1-byte high cassette baud rate +CRSINH = $02F0 ;CURSOR INHIBIT (00 = CURSOR ON) +KEYDEL = $02F1 ;KEY DELAY +CH1 = $02F2 ;1-byte prior keyboard character +CHACT = $02F3 ;CHACTL REGISTER RAM +CHBAS = $02F4 ;CHBAS REGISTER RAM + +NEWROW = $02F5 ;##1200xl## 1-byte draw destination row +NEWCOL = $02F6 ;##1200xl## 2-byte draw destination column +ROWINC = $02F8 ;##1200xl## 1-byte draw row increment +COLINC = $02F9 ;##1200xl## 1-byte draw column increment + +CHAR = $02FA ;1-byte internal character +ATACHR = $02FB ;ATASCII CHARACTER +CH = $02FC ;GLOBAL VARIABLE FOR KEYBOARD +FILDAT = $02FD ;RIGHT FILL DATA +DSPFLG = $02FE ;DISPLAY FLAG DISPLAY CNTLS IF NON-ZERO +SSFLAG = $02FF ;START/STOP FLAG FOR PAGING (CNTL 1). CLEARE + +;------------------------------------------------------------------------- +; Page Three Address Equates +;------------------------------------------------------------------------- + +DCB = $0300 ;DEVICE CONTROL BLOCK +DDEVIC = $0300 ;PERIPHERAL UNIT 1 BUS I.D. NUMBER +DUNIT = $0301 ;UNIT NUMBER +DCOMND = $0302 ;BUS COMMAND +DSTATS = $0303 ;COMMAND TYPE/STATUS RETURN +DBUFLO = $0304 ;1-byte low data buffer address +DBUFHI = $0305 ;1-byte high data buffer address +DTIMLO = $0306 ;DEVICE TIME OUT IN 1 SECOND UNITS +DUNUSE = $0307 ;UNUSED BYTE +DBYTLO = $0308 ;1-byte low number of bytes to transfer +DBYTHI = $0309 ;1-byte high number of bytes to transfer +DAUX1 = $030A ;1-byte first command auxiliary +DAUX2 = $030B ;1-byte second command auxiliary + +TIMER1 = $030C ;INITIAL TIMER VALUE +;ADDCOR = $030E ;##old## ADDITION CORRECTION +JMPERS = $030E ;##1200xl## 1-byte jumper options +CASFLG = $030F ;CASSETTE MODE WHEN SET +TIMER2 = $0310 ;2-byte final baud rate timer value +TEMP1 = $0312 ;TEMPORARY STORAGE REGISTER +;TEMP2 = $0314 ;##old## TEMPORARY STORAGE REGISTER +TEMP2 = $0313 ;##1200xl## 1-byte temporary +PTIMOT = $0314 ;##1200xl## 1-byte printer timeout +TEMP3 = $0315 ;TEMPORARY STORAGE REGISTER +SAVIO = $0316 ;SAVE SERIAL IN DATA PORT +TIMFLG = $0317 ;TIME OUT FLAG FOR BAUD RATE CORRECTION +STACKP = $0318 ;SIO STACK POINTER SAVE CELL +TSTAT = $0319 ;TEMPORARY STATUS HOLDER + +HATABS = $031A ;35-byte handler address table (was 38 bytes) +PUPBT1 = $033D ;##1200xl## 1-byte power-up validation byte 1 +PUPBT2 = $033E ;##1200xl## 1-byte power-up validation byte 2 +PUPBT3 = $033F ;##1200xl## 1-byte power-up validation byte 3 + +IOCB = $0340 ;I/O CONTROL BLOCKS +ICHID = $0340 ;HANDLER INDEX NUMBER (FF=IOCB FREE) +ICDNO = $0341 ;DEVICE NUMBER (DRIVE NUMBER) +ICCOM = $0342 ;COMMAND CODE +ICSTA = $0343 ;STATUS OF LAST IOCB ACTION +ICBAL = $0344 ;1-byte low buffer address +ICBAH = $0345 ;1-byte high buffer address +ICPTL = $0346 ;1-byte low PUT-BYTE routine address - 1 +ICPTH = $0347 ;1-byte high PUT-BYTE routine address - 1 +ICBLL = $0348 ;1-byte low buffer length +ICBLH = $0349 ;1-byte high buffer length +ICAX1 = $034A ;1-byte first auxiliary information +ICAX2 = $034B ;1-byte second auxiliary information +ICAX3 = $034C ;1-byte third auxiliary information +ICAX4 = $034D ;1-byte fourth auxiliary information +ICAX5 = $034E ;1-byte fifth auxiliary information +ICSPR = $034F ;SPARE BYTE + +PRNBUF = $03C0 ;PRINTER BUFFER +SUPERF = $03E8 ;##1200xl## 1-byte editor super function flag +CKEY = $03E9 ;##1200xl## 1-byte cassette boot request flag +CASSBT = $03EA ;##1200xl## 1-byte cassette boot flag +CARTCK = $03EB ;##1200xl## 1-byte cartridge equivalence check +DERRF = $03EC ;##rev2## 1-byte screen OPEN error flag + +; Remainder of Page Three Not Cleared upon Reset + +ACMVAR = $03ED ;##1200xl## 11 bytes reserved for ACMI +BASICF = $03F8 ;##rev2## 1-byte BASIC switch flag +MINTLK = $03F9 ;##1200xl## 1-byte ACMI module interlock +GINTLK = $03FA ;##1200xl## 1-byte cartridge interlock +CHLINK = $03FB ;##1200xl## 2-byte loaded handler chain link +CASBUF = $03FD ;CASSETTE BUFFER + +;------------------------------------------------------------------------- +; Page Four/Five Address Equates +;------------------------------------------------------------------------- + +; USER AREA STARTS HERE AND GOES TO END OF PAGE FIVE +USAREA = $0480 ;128 bytes reserved for application + +LBPR1 = $057E ;LBUFF PREFIX 1 +LBPR2 = $057F ;LBUFF PREFIX 2 +LBUFF = $0580 ;128-byte line buffer + +PLYARG = $05E0 ;6-byte floating point polynomial argument +FPSCR = $05E6 ;6-byte floating point temporary +FPSCR1 = $05EC ;6-byte floating point temporary + +;LBFEND = $05FF ;##old## END OF LBUFF + + +DOS = $0700 + +;------------------------------------------------------------------------- +; Cartridge Address Equates +;------------------------------------------------------------------------- + +CARTCS = $BFFA ;##rev2## 2-byte cartridge coldstart address +CART = $BFFC ;##rev2## 1-byte cartridge present indicator + ;0=Cart Exists +CARTFG = $BFFD ;##rev2## 1-byte cartridge flags + ;D7 0=Not a Diagnostic Cart + ; 1=Is a Diagnostic cart and control is + ; given to cart before any OS is init. + ;D2 0=Init but Do not Start Cart + ; 1=Init and Start Cart + ;D0 0=Do not boot disk + ; 1=Boot Disk +CARTAD = $BFFE ;##rev2## 2-byte cartridge start vector + +;------------------------------------------------------------------------- +; CTIA/GTIA Address Equates +;------------------------------------------------------------------------- + +GTIA = $D000 ;CTIA/GTIA area +.include "atari_gtia.inc" + +;------------------------------------------------------------------------- +; PBI Address Equates +;------------------------------------------------------------------------- + +PBI = $D100 ;##rev2## parallel bus interface area + +; Read Addresses + +PDVI = $D1FF ;##rev2## parallel device IRQ status + +; Write Addresses + +PDVS = $D1FF ;##rev2## parallel device select + +;------------------------------------------------------------------------- +; POKEY Address Equates +;------------------------------------------------------------------------- + +POKEY = $D200 ;POKEY area +.include "atari_pokey.inc" + +;------------------------------------------------------------------------- +; ANTIC Address Equates +;------------------------------------------------------------------------- + +ANTIC = $D400 ;ANTIC area +.include "atari_antic.inc" + +; PBI RAM Address Equates + +PBIRAM = $D600 ;##rev2## parallel bus interface RAM area + +; Parallel Device Address Equates + +PDID1 = $D803 ;##rev2## parallel device ID 1 +PDIDV = $D805 ;##rev2## parallel device I/O vector +PDIRQV = $D808 ;##rev2## parallel device IRQ vector +PDID2 = $D80B ;##rev2## parallel device ID 2 +PDVV = $D80D ;##rev2## parallel device vector table + +;------------------------------------------------------------------------- +; PIA Address Equates +;------------------------------------------------------------------------- + +PIA = $D300 ;PIA area + +PORTA = $D300 ;port A direction register or jacks one/two +PORTB = $D301 ;port B direction register or memory management + +PACTL = $D302 ;port A control +PBCTL = $D303 ;port B control + +;------------------------------------------------------------------------- +; Floating Point Package Address Equates +;------------------------------------------------------------------------- + +AFP = $D800 ;convert ASCII to floating point +FASC = $D8E6 ;convert floating point to ASCII +IFP = $D9AA ;convert integer to floating point +FPI = $D9D2 ;convert floating point to integer +ZFR0 = $DA44 ;zero FR0 +ZF1 = $DA46 ;zero floating point number +FSUB = $DA60 ;subtract floating point numbers +FADD = $DA66 ;add floating point numbers +FMUL = $DADB ;multiply floating point numbers +FDIV = $DB28 ;divide floating point numbers +PLYEVL = $DD40 ;evaluate floating point polynomial +FLD0R = $DD89 ;load floating point number +FLD0P = $DD8D ;load floating point number +FLD1R = $DD98 ;load floating point number +PLD1P = $DD9C ;load floating point number +FST0R = $DDA7 ;store floating point number +FST0P = $DDAB ;store floating point number +FMOVE = $DDB6 ;move floating point number +LOG = $DECD ;calculate floating point logarithm +LOG10 = $DED1 ;calculate floating point base 10 logarithm +EXP = $DDC0 ;calculate floating point exponential +EXP10 = $DDCC ;calculate floating point base 10 exponential + +;------------------------------------------------------------------------- +; Device Handler Vector Table Address Equates +;------------------------------------------------------------------------- + +EDITRV = $E400 ;editor handler vector table +SCRENV = $E410 ;screen handler vector table +KEYBDV = $E420 ;keyboard handler vector table +PRINTV = $E430 ;printer handler vector table +CASETV = $E440 ;cassette handler vector table + +;------------------------------------------------------------------------- +; Jump Vector Address Equates +;------------------------------------------------------------------------- + +DISKIV = $E450 ;vector to initialize DIO +DSKINV = $E453 ;vector to DIO +.ifdef __ATARIXL__ +.ifndef SHRAM_HANDLERS +.import CIO_handler, SIO_handler, SETVBV_handler +.endif +.define CIOV CIO_handler +.define SIOV SIO_handler +.define SETVBV SETVBV_handler +CIOV_org = $E456 ;vector to CIO +SIOV_org = $E459 ;vector to SIO +SETVBV_org = $E45C ;vector to set VBLANK parameters +.else +CIOV = $E456 ;vector to CIO +SIOV = $E459 ;vector to SIO +SETVBV = $E45C ;vector to set VBLANK parameters +; aliases in order not to have to sprinkle common code with .ifdefs +CIOV_org = CIOV +SIOV_org = SIOV +SETVBV_org = SETVBV +.endif +SYSVBV = $E45F ;vector to process immediate VBLANK +XITVBV = $E462 ;vector to process deferred VBLANK +SIOINV = $E465 ;vector to initialize SIO +SENDEV = $E468 ;vector to enable SEND +INTINV = $E46B ;vector to initialize interrupt handler +CIOINV = $E46E ;vector to initialize CIO +BLKBDV = $E471 ;vector to power-up display +WARMSV = $E474 ;vector to warmstart +COLDSV = $E477 ;vector to coldstart +RBLOKV = $E47A ;vector to read cassette block +CSOPIV = $E47D ;vector to open cassette for input +VCTABL = $E480 ;RAM vector initial value table +PUPDIV = $E480 ;##rev2## vector to power-up display +SLFTSV = $E483 ;##rev2## vector to self-test +PHENTV = $E486 ;##rev2## vector to enter peripheral handler +PHUNLV = $E489 ;##rev2## vector to unlink peripheral handler +PHINIV = $E48C ;##rev2## vector to initialize peripheral handler +GPDVV = $E48F ;##rev2## generic parallel device handler vector + +; NOTE: OS rom self-test labels are not included in this file + +;------------------------------------------------------------------------- +; Some misc. stuff from the 400/800 rev.B source +;------------------------------------------------------------------------- + +; THE FOLLOWING ARE IN BASIC CARTRIDGE: +SIN = $BD81 ;FR0 <- SIN (FR0) DEGFLG (0=RAD,6=DEG) CARRY +COS = $BD73 ;FR0 <- COS (FR0) CARRY +ATAN = $BE43 ;FR0 <- ATAN(FR0) CARRY +SQR = $BEB1 ;FR0 <- ROOT(FR0) CARRY + +RADON = 0 ;INDICATES RADIANS +DEGON = 6 ;INDICATES DEGREES + +ASCZER = '0' ;ASCII ZERO +COLON = $3A ;ASCII COLON +CR = $9B ;SYSTEM EOL (CARRIAGE RETURN) + +;------------------------------------------------------------------------- +; 6502 +;------------------------------------------------------------------------- + +NMIVEC = $FFFA +RESVEC = $FFFC +IRQVEC = $FFFE + +;------------------------------------------------------------------------- +; BASIC +;------------------------------------------------------------------------- + +LOMEM = $80 ;2-byte low memory pointer +VNTP = $82 ;2-byte variable name table address +VNTD = $84 ;2-byte variable name table end + 1 +VVTP = $86 ;2-byte variable value table +STMTAB = $88 ;2-byte statement table address +STMCUR = $8A ;2-byte current statement pointer +STARP = $8C ;2-byte string and array table pointer +RUNSTK = $8E ;2-byte runtime stack address +BMEMTOP = $90 ;2-byte top of memory pointer +STOPLN = $BA ;2-byte stopped line number +ERRSAVE = $C3 ;1-byte error code +PTABW = $C9 ;1-byte tab width + +;------------------------------------------------------------------------- +; ATASCII CHARACTER DEFS +;------------------------------------------------------------------------- + +ATCLR = $7D ;CLEAR SCREEN CHARACTER +ATRUB = $7E ;BACK SPACE (RUBOUT) +ATTAB = $7F ;TAB +ATEOL = $9B ;END-OF-LINE +ATDELL = $9C ;delete line +ATINSL = $9D ;insert line +ATCTAB = $9E ;clear TAB +ATSTAB = $9F ;set TAB +ATBEL = $FD ;CONSOLE BELL +ATDEL = $FE ;delete char. +ATINS = $FF ;insert char. +ATURW = $1C ;UP-ARROW +ATDRW = $1D ;DOWN-ARROW +ATLRW = $1E ;LEFT-ARROW +ATRRW = $1F ;RIGHT-ARROW +ATESC = $1B ;ESCAPE + +;------------------------------------------------------------------------- +; OFFSETS INTO SECTSIZETAB (DIO functions) +;------------------------------------------------------------------------- + +sst_flag = 0 ; length 1 +sst_sectsize = 1 ; 2 +sst_driveno = 3 ; 1 (drive #) +sst_size = 4 ; size of one entry + ; if changed, adapt diopncls.s + +;------------------------------------------------------------------------- +; OFFSETS INTO dio_phys_pos +;------------------------------------------------------------------------- + +diopp_head = 0 ; head +diopp_track = 1 ; track / cylinder +diopp_sector = 3 ; sector +diopp_size = 5 ; size of structure + +;------------------------------------------------------------------------- +; VALUES for dos_type +;------------------------------------------------------------------------- + +SPARTADOS = 0 +OSADOS = 1 ; OS/A+ +XDOS = 2 +ATARIDOS = 3 +MYDOS = 4 +NODOS = 255 +; The DOSes with dos_type below or equal MAX_DOS_WITH_CMDLINE do support +; command line arguments. +MAX_DOS_WITH_CMDLINE = XDOS + +;------------------------------------------------------------------------- +; XDOS defines (version 2.4, taken from xdos24.pdf) +;------------------------------------------------------------------------- + +XOPT = $070B ; XDOS options +XCAR = $070C ; XDOS cartridge address (+ $70D) +XPAT = $086F ; XDOS bugfix and patch number +XVER = $0870 ; XDOS version number +XFILE = $087D ; XDOS filename buffer +XLINE = $0880 ; XDOS DUP input line +XGLIN = $0871 ; get line +XSKIP = $0874 ; skip parameter +.ifdef __ATARIXL__ +.ifndef SHRAM_HANDLERS +.import XMOVE_handler +.endif +.define XMOVE XMOVE_handler +XMOVE_org = $0877 ; move filename +.else +XMOVE = $0877 ; move filename +.endif +XGNUM = $087A ; get number + +;------------------------------------------------------------------------- +; End of atari.inc +;------------------------------------------------------------------------- +; +; PET generic definitions. +; + + +; --------------------------------------------------------------------------- +; Zero page, Commodore stuff + +VARTAB := $2A ; Pointer to start of BASIC variables +MEMSIZE := $34 ; Size of memory installed +TXTPTR := $77 ; Pointer into BASIC source code +TIME := $8D ; 60HZ clock +KEY_COUNT := $9E ; Number of keys in input buffer +RVS := $9F ; Reverse flag +CURS_FLAG := $A7 ; 1 = cursor off +CURS_BLINK := $A8 ; Blink counter +CURS_CHAR := $A9 ; Character under the cursor +CURS_STATE := $AA ; Cursor blink state +SCREEN_PTR := $C4 ; Pointer to current char in text screen +CURS_X := $C6 ; Cursor column +FNLEN := $D1 ; Length of filename +LFN := $D2 ; Current Logical File Number +SECADR := $D3 ; Secondary address +DEVNUM := $D4 ; Device number +SCR_LINELEN := $D5 ; Screen line length +CURS_Y := $D8 ; Cursor row +FNADR := $DA ; Pointer to file name + +BASIC_BUF := $200 ; Location of command-line +BASIC_BUF_LEN = 81 ; Maximum length of command-line + +KEY_BUF := $26F ; Keyboard buffer + +;---------------------------------------------------------------------------- +; PET ROM type detection + +PET_DETECT := $FFFB +PET_2000 = $CA +PET_3000 = $FC +PET_4000 = $FD + + +;---------------------------------------------------------------------------- +; Vector and other locations + +IRQVec := $0090 +BRKVec := $0092 +NMIVec := $0094 + +; --------------------------------------------------------------------------- +; I/O: 6522 VIA2 + +VIA := $E840 +VIA_PRB := $E840 +VIA_PRA := $E841 +VIA_DDRB := $E842 +VIA_DDRA := $E843 + + +; +; _heap.inc +; +; (c) Copyright 2003, Ullrich von Bassewitz (uz@cc65.org) +; + +; Assembler include file that makes the constants and structures in _heap.h +; available for asm code. + +; Struct freeblock +; NOTE: For performance reasons, the asm code often uses increment/decrement +; operators to access other offsets, so just changing offsets here will +; probably not work. +.struct freeblock + size .word + next .addr + prev .addr +.endstruct + +; Struct usedblock +; See notes above +.struct usedblock + size .word + start .addr +.endstruct + +HEAP_MIN_BLOCKSIZE = .sizeof (freeblock) ; Minimum size of an allocated block +HEAP_ADMIN_SPACE = .sizeof (usedblock) ; Additional space for used bock + +; Variables +.global __heaporg +.global __heapptr +.global __heapend +.global __heapfirst +.global __heaplast +; +; Oric Atmos definitions +; BASIC 1.1 addresses +; + + +; --------------------------------------------------------------------------- +; Constants + +SCREEN_XSIZE = 40 ; screen columns +SCREEN_YSIZE = 28 ; screen rows + +FUNCTKEY = $A5 + +FNAME_LEN = 16 ; maximum length of file-name + + +; --------------------------------------------------------------------------- +; Zero page + +SCRPTR := $12 +BASIC_BUF := $35 +CHARGOT := $E8 +TXTPTR := $E9 + + +; --------------------------------------------------------------------------- +; Low memory + +MODEKEY := $0209 +CAPSLOCK := $020C ; $7F = not locked, $FF = locked +PATTERN := $0213 +IRQVec := $0245 ; "fast" interrupt vector +JOINFLAG := $025A ; 0 = don't joiu, $4A = join BASIC programs +VERIFYFLAG := $025B ; 0 = load, 1 = verify +CURS_Y := $0268 +CURS_X := $0269 +STATUS := $026A +BACKGRND := $026B +FOREGRND := $026C +TIMER3 := $0276 +CFILE_NAME := $027F +CFOUND_NAME := $0293 +FILESTART := $02A9 +FILEEND := $02AB +AUTORUN := $02AD ; $00 = only load, $C7 = autorun +LANGFLAG := $02AE ; $00 = BASIC, $80 = machine code +LOADERR := $02B1 +KEYBUF := $02DF +PARMERR := $02E0 +PARAM1 := $02E1 ; & $02E2 +PARAM2 := $02E3 ; & $02E4 +PARAM3 := $02E5 ; & $02E6 +BANGVEC := $02F5 + + +; --------------------------------------------------------------------------- +; I/O locations + +; 6522 +.struct VIA ; Versatile Interface Adapter + .res $0300 +PRB .byte ; Port Register B +PRA .byte ; Port Register A +DDRB .byte ; Data Direction Register B +DDRA .byte ; Data Direction Register A +T1 .word ; Timer 1 +T1L .word ; Timer 1 Latch +T2 .word ; Timer 2 +SR .byte ; Shift Register +ACR .byte ; Auxiliary Control Register +PCR .byte ; Peripheral Control Register +IFR .byte ; Interrupt Flags Register +IER .byte ; Interrupt Enable Register +PRA2 .byte ; Port Register A without handshaking +.endstruct + +; 6551 +.struct ACIA ; Asynchronous Communications Interface Adapter + .res $031C +DATA .byte +STATUS .byte +CMD .byte ; Command register +CTRL .byte ; Control register +.endstruct + +SCREEN := $BB80 + + +; --------------------------------------------------------------------------- +; ROM entries + +GETLINE := $C592 +TEXT := $EC21 +HIRES := $EC33 +CURSET := $F0C8 +CURMOV := $F0FD +DRAW := $F110 +CHAR := $F12D +POINT := $F1C8 +PAPER := $F204 +INK := $F210 +PRINT := $F77C + +; Sound Effects +PING := $FA9F +SHOOT := $FAB5 +EXPLODE := $FACB +ZAP := $FAE1 +TICK := $FB14 +TOCK := $FB2A +; +; PCE definitions. By Groepaz/Hitmem. +; + +; FIXME: screen dimensions my change according to selected video mode +screenrows = (224/8) +charsperline = 61 + +CH_HLINE = 1 +CH_VLINE = 2 + +; huc6270 - Video Display Controller (VDC) + +VDC_MAWR = 0 ; Memory Address Write Register +VDC_MARR = 1 ; Memory Address Read Register +VDC_VWR = 2 ; VRAM Write Register (write only) +VDC_VRR = 2 ; VRAM Read Register (read only) +VDC_UNK03 = 3 ; (unknown) +VDC_UNK04 = 4 ; (unknown) +VDC_CR = 5 ; Control Register +VDC_RCR = 6 ; Raster Counter Register +VDC_BXR = 7 ; Background X-Scroll Register +VDC_BYR = 8 ; Background Y-Scroll Register +VDC_MWR = 9 ; Memory-access Width Register +VDC_HSR = 10 ; Horizontal Sync Register +VDC_HDR = 11 ; Horizontal Display Register +VDC_VPR = 12 ; Vertical synchronous register +VDC_VDW = 13 ; Vertical display register +VDC_VCR = 14 ; Vertical display END position register +VDC_DCR = 15 ; (DMA) Control Register +VDC_SOUR = 16 ; (DMA) Source Register +VDC_DESR = 17 ; (DMA) Destination Register +VDC_LENR = 18 ; (DMA) Length Register +VDC_SATB = 19 ; Sprite Attribute Table + +; VDC port +; Note: absolute addressing mode must be used when writing to this port + +VDC_CTRL = $0000 +VDC_DATA_LO = $0002 +VDC_DATA_HI = $0003 + +; huc6260 - Video Color Encoder (vce) + +; The DAC has a palette of 512 colours. +; bitmap of the palette data is this: 0000000gggrrrbbb. +; You can read and write the DAC-registers. + +VCE = $0400 ; base + +VCE_CTRL = $0400 ; write$00 to reset +VCE_ADDR_LO = $0402 ; LSB of byte offset into palette +VCE_ADDR_HI = $0403 ; MSB of byte offset into palette +VCE_DATA_LO = $0404 ; LSB of 16-bit palette data +VCE_DATA_HI = $0405 ; MSB of 16-bit palette data + +; programmable sound generator (PSG) + +PSG = $0800 ; base + +PSG_CHAN_SELECT = $0800 +PSG_GLOBAL_PAN = $0801 +PSG_FREQ_LO = $0802 +PSG_FREQ_HI = $0803 +PSG_CHAN_CTRL = $0804 +PSG_CHAN_PAN = $0805 +PSG_CHAN_DATA = $0806 +PSG_NOISE = $0807 +PSG_LFO_FREQ = $0808 +PSG_LFO_CTRL = $0809 + +; timer + +TIMER = $0c00 ; base + +TIMER_COUNT = $0c00 +TIMER_CTRL = $0c01 + +JOY_CTRL = $1000 + +IRQ_MASK = $1402 +IRQ_STATUS = $1403 + +CDR_MEM_DISABLE = $1803 +CDR_MEM_ENABLE = $1807 + +; Write VDC register +.macro VREG arg1,arg2 + st0 #arg1 + st1 #<(arg2) + st2 #>(arg2) +.endmacro +;*****************************************************************************/ +;* */ +;* tgi-error.inc */ +;* */ +;* TGI error codes */ +;* */ +;* */ +;* */ +;* (C) 2002-2012, Ullrich von Bassewitz */ +;* Roemerstrasse 52 */ +;* D-70794 Filderstadt */ +;* EMail: uz@cc65.org */ +;* */ +;* */ +;* This software is provided 'as-is', without any expressed or implied */ +;* warranty. In no event will the authors be held liable for any damages */ +;* arising from the use of this software. */ +;* */ +;* Permission is granted to anyone to use this software for any purpose, */ +;* including commercial applications, and to alter it and redistribute it */ +;* freely, subject to the following restrictions: */ +;* */ +;* 1. The origin of this software must not be misrepresented; you must not */ +;* claim that you wrote the original software. If you use this software */ +;* in a product, an acknowledgment in the product documentation would be */ +;* appreciated but is not required. */ +;* 2. Altered source versions must be plainly marked as such, and must not */ +;* be misrepresented as being the original software. */ +;* 3. This notice may not be removed or altered from any source */ +;* distribution. */ +;* */ +;*****************************************************************************/ + + + +; Error constants +.enum + TGI_ERR_OK ; No error + TGI_ERR_NO_DRIVER ; No driver available + TGI_ERR_CANNOT_LOAD ; Error loading driver or font + TGI_ERR_INV_DRIVER ; Invalid driver + TGI_ERR_INV_MODE ; Mode not supported by driver + TGI_ERR_INV_ARG ; Invalid function argument + TGI_ERR_INV_FUNC ; Function not supported + TGI_ERR_INV_FONT ; Font file is invalid + TGI_ERR_NO_RES ; Out of resources (memory, handles, ...) + TGI_ERR_UNKNOWN ; Unknown error + TGI_ERR_INSTALLED ; A driver is already installed + + TGI_ERR_COUNT ; Special: Number of error messages +.endenum + +;/*****************************************************************************/ +;/* */ +;/* em-error.inc */ +;/* */ +;/* EM error codes */ +;/* */ +;/* */ +;/* */ +;/* (C) 2002-2012, Ullrich von Bassewitz */ +;/* Roemerstrasse 52 */ +;/* D-70794 Filderstadt */ +;/* EMail: uz@cc65.org */ +;/* */ +;/* */ +;/* This software is provided 'as-is', without any expressed or implied */ +;/* warranty. In no event will the authors be held liable for any damages */ +;/* arising from the use of this software. */ +;/* */ +;/* Permission is granted to anyone to use this software for any purpose, */ +;/* including commercial applications, and to alter it and redistribute it */ +;/* freely, subject to the following restrictions: */ +;/* */ +;/* 1. The origin of this software must not be misrepresented; you must not */ +;/* claim that you wrote the original software. If you use this software */ +;/* in a product, an acknowledgment in the product documentation would be */ +;/* appreciated but is not required. */ +;/* 2. Altered source versions must be plainly marked as such, and must not */ +;/* be misrepresented as being the original software. */ +;/* 3. This notice may not be removed or altered from any source */ +;/* distribution. */ +;/* */ +;/*****************************************************************************/ + + + +; Error constants +.enum + EM_ERR_OK ; No error + EM_ERR_NO_DRIVER ; No driver available + EM_ERR_CANNOT_LOAD ; Error loading driver + EM_ERR_INV_DRIVER ; Invalid driver + EM_ERR_NO_DEVICE ; Device (hardware) not found + EM_ERR_INSTALLED ; A driver is already installed + + EM_ERR_COUNT ; Special: Number of error messages +.endenum + + + +;/*****************************************************************************/ +;/* */ +;/* em-kernel.inc */ +;/* */ +;/* EM kernel interface */ +;/* */ +;/* */ +;/* */ +;/* (C) 2002-2003 Ullrich von Bassewitz */ +;/* Römerstrasse 52 */ +;/* D-70794 Filderstadt */ +;/* EMail: uz@cc65.org */ +;/* */ +;/* */ +;/* This software is provided 'as-is', without any expressed or implied */ +;/* warranty. In no event will the authors be held liable for any damages */ +;/* arising from the use of this software. */ +;/* */ +;/* Permission is granted to anyone to use this software for any purpose, */ +;/* including commercial applications, and to alter it and redistribute it */ +;/* freely, subject to the following restrictions: */ +;/* */ +;/* 1. The origin of this software must not be misrepresented; you must not */ +;/* claim that you wrote the original software. If you use this software */ +;/* in a product, an acknowledgment in the product documentation would be */ +;/* appreciated but is not required. */ +;/* 2. Altered source versions must be plainly marked as such, and must not */ +;/* be misrepresented as being the original software. */ +;/* 3. This notice may not be removed or altered from any source */ +;/* distribution. */ +;/* */ +;/*****************************************************************************/ + + + +;------------------------------------------------------------------------------ +; The driver header + +.struct EMD_HDR + ID .byte 3 ; Contains 0x65, 0x6d, 0x64 ("emd") + VERSION .byte 1 ; Interface version + LIBREF .addr ; Library reference + JUMPTAB .struct + INSTALL .addr ; INSTALL routine + UNINSTALL .addr ; UNINSTALL routine + PAGECOUNT .addr ; PAGECOUNT routine + MAP .addr ; MAP routine + USE .addr ; USE routine + MAPCLEAN .addr ; MAPCLEAN routine + COPYFROM .addr ; COPYFROM routine + COPYTO .addr ; COPYTO routine + .endstruct +.endstruct + +;------------------------------------------------------------------------------ +; The EMD API version, stored in EMD_HDR::VERSION + +EMD_API_VERSION = $02 + +;------------------------------------------------------------------------------ +; The asm equivalent to the C em_copy structure + +.struct EM_COPY + BUF .addr ; Memory buffer to copy from or to + OFFS .byte ; Offset into page + PAGE .word ; Starting page to copy from or to + COUNT .word ; Number of bytes to copy + UNUSED .byte ; Make the size 8 bytes +.endstruct + +;------------------------------------------------------------------------------ +; Variables + + .global _em_drv ; Pointer to driver + +;------------------------------------------------------------------------------ +; Driver entry points + + .global emd_install + .global emd_uninstall + .global emd_pagecount + .global emd_map + .global emd_use + .global emd_commit + .global emd_copyfrom + .global emd_copyto + +;------------------------------------------------------------------------------ +; ASM functions + + .global em_clear_ptr + +;------------------------------------------------------------------------------ +; C callable functions + + .global _em_load_driver + .global _em_unload + .global _em_install + .global _em_uninstall + .global _em_pagecount + .global _em_map + .global _em_use + .global _em_commit + .global _em_copyfrom + .global _em_copyto + +; +; zeropage.inc +; +; (C) Copyright 2002-2012, Ullrich von Bassewitz (uz@cc65.org) +; + +; Assembler include file that imports the runtime zero page locations used +; by the compiler, ready for usage in asm code. + + + .globalzp sp, sreg, regsave + .globalzp ptr1, ptr2, ptr3, ptr4 + .globalzp tmp1, tmp2, tmp3, tmp4 + .globalzp regbank + +; The size of the register bank +regbanksize = 6 + +; The total amount of zero page space used +zpspace = 26 + +; The amount of space that needs to be saved by an interrupt handler that +; calls C code (does not include the register bank, which is saved by the +; generated C code if required). +zpsavespace = zpspace - regbanksize + +; Lynx system hardware includes +; Shawn Jefferson +; June 18th, 2004 +; +; Reference: +; Bastian Schick's Lynx Documentation +; http://www.geocities.ws/SiliconValley/Byte/4242/lynx/ +; + +; *** +; *** Suzy Addresses +; *** + +; Sprite Control Block + +TMPADRL = $FC00 +TMPADRH = $FC01 +TILTACUML = $FC02 +TILTACUMH = $FC03 +HOFFL = $FC04 +HOFFH = $FC05 +VOFFL = $FC06 +VOFFH = $FC07 +VIDBASL = $FC08 +VIDBASH = $FC09 +COLLBASL = $FC0A +COLLBASH = $FC0B +VIDADRL = $FC0C +VIDADRH = $FC0D +COLLADRL = $FC0E +COLLADRH = $FC0F +SCBNEXTL = $FC10 +SCBNEXTH = $FC11 +SPRDLINEL = $FC12 +SPRDLINEH = $FC13 +HPOSSTRTL = $FC14 +HPOSSTRTH = $FC15 +VPOSSTRTL = $FC16 +VPOSSTRTH = $FC17 +SPRHSIZL = $FC18 +SPRHSIZH = $FC19 +SPRVSIZL = $FC1A +SPRVSIZH = $FC1B +STRETCHL = $FC1C +STRETCHH = $FC1D +TILTL = $FC1E +TILTH = $FC1F +SPRDOFFL = $FC20 +SPRDOFFH = $FC21 +SPRVPOSL = $FC22 +SPRVPOSH = $FC23 +COLLOFFL = $FC24 +COLLOFFH = $FC25 +VSIZACUML = $FC26 +VSIZACUMH = $FC27 +HSIZOFFL = $FC28 +HSIZOFFH = $FC29 +VSIZOFFL = $FC2A +VSIZOFFH = $FC2B +SCBADRL = $FC2C +SCBADRH = $FC2D +PROCADRL = $FC2E +PROCADRH = $FC2F + +; Suzy Math + +MATHD = $FC52 +MATHC = $FC53 +MATHB = $FC54 +MATHA = $FC55 +MATHP = $FC56 +MATHN = $FC57 +MATHH = $FC60 +MATHG = $FC61 +MATHF = $FC62 +MATHE = $FC63 +MATHM = $FC6C +MATHL = $FC6D +MATHK = $FC6E +MATHJ = $FC6F + +; Suzy Misc + +SPRCTL0 = $FC80 +SPRCTL1 = $FC81 +SPRCOLL = $FC82 +SPRINIT = $FC83 +SUZYHREV = $FC88 +SUZYSREV = $FC89 +SUZYBUSEN = $FC90 +SPRGO = $FC91 +SPRSYS = $FC92 +JOYSTICK = $FCB0 +SWITCHES = $FCB1 +RCART0 = $FCB2 +RCART1 = $FCB3 +LEDS = $FCC0 +PARSTATUS = $FCC2 +PARDATA = $FCC3 +HOWIE = $FCC4 + + +; *** +; *** Mikey Addresses +; *** + +; Mikey Timers + +TIMER0 = $FD00 +TIMER1 = $FD04 +TIMER2 = $FD08 +TIMER3 = $FD0C +TIMER4 = $FD10 +TIMER5 = $FD14 +TIMER6 = $FD18 +TIMER7 = $FD1C +HTIMER = $FD00 ; horizontal line timer (timer 0) +VTIMER = $FD08 ; vertical blank timer (timer 2) +STIMER = $FD1C ; sound timer (timer 7) + +HTIMBKUP = $FD00 ; horizontal line timer (timer 0) +HTIMCTLA = $FD01 +HTIMCNT = $FD02 +HTIMCTLB = $FD03 +VTIMBKUP = $FD08 ; vertical blank timer (timer 2) +VTIMCTLA = $FD09 +VTIMCNT = $FD0A +VTIMCTLB = $FD0B +BAUDBKUP = $FD10 ; serial timer (timer 4) +STIMBKUP = $FD1C ; sound timer (timer 7) +STIMCTLA = $FD1D +STIMCNT = $FD1E +STIMCTLB = $FD1F + +TIM0BKUP = $FD00 +TIM0CTLA = $FD01 +TIM0CNT = $FD02 +TIM0CTLB = $FD03 +TIM1BKUP = $FD04 +TIM1CTLA = $FD05 +TIM1CNT = $FD06 +TIM1CTLB = $FD07 +TIM2BKUP = $FD08 +TIM2CTLA = $FD09 +TIM2CNT = $FD0A +TIM2CTLB = $FD0B +TIM3BKUP = $FD0C +TIM3CTLA = $FD0D +TIM3CNT = $FD0E +TIM3CTLB = $FD0F +TIM4BKUP = $FD10 +TIM4CTLA = $FD11 +TIM4CNT = $FD12 +TIM4CTLB = $FD13 +TIM5BKUP = $FD14 +TIM5CTLA = $FD15 +TIM5CNT = $FD16 +TIM5CTLB = $FD17 +TIM6BKUP = $FD18 +TIM6CTLA = $FD19 +TIM6CNT = $FD1A +TIM6CTLB = $FD1B +TIM7BKUP = $FD1C +TIM7CTLA = $FD1D +TIM7CNT = $FD1E +TIM7CTLB = $FD1F + +; Mikey Audio + +AUDIO0 = $FD20 ; audio channel 0 +AUDIO1 = $FD28 ; audio channel 1 +AUDIO2 = $FD30 ; audio channel 2 +AUDIO3 = $FD38 ; audio channel 3 + +AUD0VOL = $FD20 +AUD0FEED = $FD21 +AUD0OUT = $FD22 +AUD0SHIFT = $FD23 +AUD0BKUP = $FD24 +AUD0CTLA = $FD25 +AUD0CNT = $FD26 +AUD0CTLB = $FD27 +AUD1VOL = $FD28 +AUD1FEED = $FD29 +AUD1OUT = $FD2A +AUD1SHIFT = $FD2B +AUD1BKUP = $FD2C +AUD1CTLA = $FD2D +AUD1CNT = $FD2E +AUD1CTLB = $FD2F +AUD2VOL = $FD30 +AUD2FEED = $FD31 +AUD2OUT = $FD32 +AUD2SHIFT = $FD33 +AUD2BKUP = $FD34 +AUD2CTLA = $FD35 +AUD2CNT = $FD36 +AUD2CTLB = $FD37 +AUD3VOL = $FD38 +AUD3FEED = $FD39 +AUD3OUT = $FD3A +AUD3SHIFT = $FD3B +AUD3BKUP = $FD3C +AUD3CTLA = $FD3D +AUD3CNT = $FD3E +AUD3CTLB = $FD3F +MSTEREO = $FD50 + +; Mikey Misc + +; Interrupt bits in INTRST and INTSET +TIMER0_INTERRUPT = $01 +TIMER1_INTERRUPT = $02 +TIMER2_INTERRUPT = $04 +TIMER3_INTERRUPT = $08 +TIMER4_INTERRUPT = $10 +TIMER5_INTERRUPT = $20 +TIMER6_INTERRUPT = $40 +TIMER7_INTERRUPT = $80 + +HBL_INTERRUPT = TIMER0_INTERRUPT +VBL_INTERRUPT = TIMER2_INTERRUPT +SERIAL_INTERRUPT = TIMER4_INTERRUPT +SND_INTERRUPT = TIMER7_INTERRUPT + +INTRST = $FD80 +INTSET = $FD81 +MAGRDY0 = $FD84 +MAGRDY1 = $FD85 +AUDIN = $FD86 +SYSCTL1 = $FD87 +MIKEYHREV = $FD88 +MIKEYSREV = $FD89 +IODIR = $FD8A +IODAT = $FD8B +TxIntEnable = %10000000 +RxIntEnable = %01000000 +TxParEnable = %00010000 +ResetErr = %00001000 +TxOpenColl = %00000100 +TxBreak = %00000010 +ParEven = %00000001 +TxReady = %10000000 +RxReady = %01000000 +TxEmpty = %00100000 +RxParityErr = %00010000 +RxOverrun = %00001000 +RxFrameErr = %00000100 +RxBreak = %00000010 +ParityBit = %00000001 +SERCTL = $FD8C +SERDAT = $FD8D +SDONEACK = $FD90 +CPUSLEEP = $FD91 +DISPCTL = $FD92 +PBKUP = $FD93 +DISPADRL = $FD94 +DISPADRH = $FD95 +MTEST0 = $FD9C +MTEST1 = $FD9D +MTEST2 = $FD9E +PALETTE = $FDA0 ; hardware rgb palette +GCOLMAP = $FDA0 ; hardware rgb palette (green) +RBCOLMAP = $FDB0 ; hardware rgb palette (red-blue) + + +; *** +; *** Misc Hardware + 6502 vectors +; *** + +MAPCTL = $FFF9 +VECTORS = $FFFB +INTVECTL = $FFFE +INTVECTH = $FFFF +RSTVECTL = $FFFC +RSTVECTH = $FFFD +NMIVECTL = $FFFA +NMIVECTH = $FFFB + +;*****************************************************************************/ +;* */ +;* tgi-kernel.inc */ +;* */ +;* TGI kernel interface */ +;* */ +;* */ +;* */ +;* (C) 2002-2012, Ullrich von Bassewitz */ +;* Roemerstrasse 52 */ +;* D-70794 Filderstadt */ +;* EMail: uz@cc65.org */ +;* */ +;* */ +;* This software is provided 'as-is', without any expressed or implied */ +;* warranty. In no event will the authors be held liable for any damages */ +;* arising from the use of this software. */ +;* */ +;* Permission is granted to anyone to use this software for any purpose, */ +;* including commercial applications, and to alter it and redistribute it */ +;* freely, subject to the following restrictions: */ +;* */ +;* 1. The origin of this software must not be misrepresented; you must not */ +;* claim that you wrote the original software. If you use this software */ +;* in a product, an acknowledgment in the product documentation would be */ +;* appreciated but is not required. */ +;* 2. Altered source versions must be plainly marked as such, and must not */ +;* be misrepresented as being the original software. */ +;* 3. This notice may not be removed or altered from any source */ +;* distribution. */ +;* */ +;*****************************************************************************/ + + + +;------------------------------------------------------------------------------ +; The driver header + +.struct TGI_HDR + ID .byte 3 ; Contains 0x74, 0x67, 0x69 ("tgi") + VERSION .byte 1 ; Interface version + LIBREF .addr ; Library reference + VARS .struct + XRES .word 1 ; X resolution + YRES .word 1 ; Y resolution + COLORCOUNT .byte 1 ; Number of available colors + PAGECOUNT .byte 1 ; Number of screens available + FONTWIDTH .byte 1 ; System font width in pixel + FONTHEIGHT .byte 1 ; System font height in pixel + ASPECTRATIO .word 1 ; Fixed point 8.8 format + FLAGS .byte 1 ; TGI driver flags + .endstruct + JUMPTAB .struct + INSTALL .addr ; INSTALL routine + UNINSTALL .addr ; UNINSTALL routine + INIT .addr ; INIT routine + DONE .addr ; DONE routine + GETERROR .addr ; GETERROR routine + CONTROL .addr ; CONTROL routine + CLEAR .addr ; CLEAR routine + SETVIEWPAGE .addr ; SETVIEWPAGE routine + SETDRAWPAGE .addr ; SETDRAWPAGE routine + SETCOLOR .addr ; SETCOLOR routine + SETPALETTE .addr ; SETPALETTE routine + GETPALETTE .addr ; GETPALETTE routine + GETDEFPALETTE .addr ; GETDEFPALETTE routine + SETPIXEL .addr ; SETPIXEL routine + GETPIXEL .addr ; GETPIXEL routine + LINE .addr ; LINE routine + BAR .addr ; BAR routine + TEXTSTYLE .addr ; TEXTSTYLE routine + OUTTEXT .addr ; OUTTEXT routine + IRQ .addr ; IRQ routine + .endstruct +.endstruct + +;------------------------------------------------------------------------------ +; The TGI API version, stored at TGI_HDR_VERSION + +TGI_API_VERSION = $05 + +;------------------------------------------------------------------------------ +; Bitmapped tgi driver flags, stored in TGI_HDR::VARS::FLAGS. +; Beware: Some of the bits are tested using the BIT instruction, so do not +; change the values without checking the code! + +TGI_BM_FONT_FINESCALE = $80 ; Bitmap fonts are fine grained scalable + +;------------------------------------------------------------------------------ +; Text constants + +TGI_FONT_BITMAP = 0 +TGI_FONT_VECTOR = 1 + +TGI_TEXT_HORIZONTAL = 0 +TGI_TEXT_VERTICAL = 1 + +;---------------------------------------------------------------------------- +; Results of tgi_outcode + +TGI_CLIP_NONE = $00 +TGI_CLIP_LEFT = $01 +TGI_CLIP_RIGHT = $02 +TGI_CLIP_BOTTOM = $04 +TGI_CLIP_TOP = $08 + +;------------------------------------------------------------------------------ +; ASM accessible color constants + + .global tgi_color_black:zp ; Target-specific value for black + .global tgi_color_white:zp ; Target-specific value for white + +;------------------------------------------------------------------------------ +; C accessible variables + + .global _tgi_drv ; Pointer to driver + .global _tgi_error ; Last error code + .global _tgi_gmode ; Flag: graphics mode active + .global _tgi_curx ; Current drawing cursor X + .global _tgi_cury ; Current drawing cursor Y + .global _tgi_color ; Current drawing color + .global _tgi_font ; Which font to use + .global _tgi_textdir ; Current text direction + .global _tgi_vectorfont ; Pointer to vector font + .global _tgi_textscalew ; Text magnification for the width + .global _tgi_textscaleh ; Text magnification for the height + .global _tgi_charwidth ; Width of scaled system font char + .global _tgi_charheight ; Height of scaled system font char + .global _tgi_xres ; X resolution of the current mode + .global _tgi_yres ; Y resolution of the current mode + .global _tgi_xmax ; Maximum X coordinate + .global _tgi_ymax ; Maximum Y coordinate + .global _tgi_colorcount ; Number of available colors + .global _tgi_pagecount ; Number of available screen pages + .global _tgi_fontwidth ; System font width + .global _tgi_fontheight ; System font height + .global _tgi_aspectratio ; Aspect ratio, fixed point 8.8 + .global _tgi_flags ; TGI driver flags + +;------------------------------------------------------------------------------ +; ASM accessible variables + + .global tgi_clip_x1 ; Coordinate for line clipper + .global tgi_clip_y1 ; Coordinate for line clipper + .global tgi_clip_x2 ; Coordinate for line clipper + .global tgi_clip_y2 ; Coordinate for line clipper + +;------------------------------------------------------------------------------ +; Driver entry points + + .global tgi_install + .global tgi_uninstall + .global tgi_init + .global tgi_done + .global tgi_geterror + .global tgi_control + .global tgi_clear + .global tgi_setviewpage + .global tgi_setdrawpage + .global tgi_setcolor + .global tgi_setpalette + .global tgi_getpalette + .global tgi_getdefpalette + .global tgi_setpixel + .global tgi_getpixel + .global tgi_line + .global tgi_bar + .global tgi_textstyle + .global tgi_outtext + +;------------------------------------------------------------------------------ +; ASM functions + + .global tgi_clear_ptr + .global tgi_clippedline + .global tgi_curtoxy + .global tgi_getset + .global tgi_imulround + .global tgi_inv_arg + .global tgi_inv_drv + .global tgi_linepop + .global tgi_outcode + .global tgi_popxy + .global tgi_popxy2 + .global tgi_set_ptr + +;------------------------------------------------------------------------------ +; C callable functions + + .global _tgi_arc + .global _tgi_bar + .global _tgi_circle + .global _tgi_clear + .global _tgi_done + .global _tgi_ellipse + .global _tgi_getaspectratio + .global _tgi_getcolor + .global _tgi_getcolorcount + .global _tgi_getdefpalette + .global _tgi_geterror + .global _tgi_geterrormsg + .global _tgi_getmaxcolor + .global _tgi_getmaxx + .global _tgi_getmaxy + .global _tgi_getpagecount + .global _tgi_getpalette + .global _tgi_getpixel + .global _tgi_gettextheight + .global _tgi_gettextwidth + .global _tgi_getxres + .global _tgi_getyres + .global _tgi_gotoxy + .global _tgi_imulround + .global _tgi_init + .global _tgi_install + .global _tgi_install_vectorfont + .global _tgi_ioctl + .global _tgi_line + .global _tgi_lineto + .global _tgi_load_driver + .global _tgi_outtext + .global _tgi_outtextxy + .global _tgi_pieslice + .global _tgi_setaspectratio + .global _tgi_setcolor + .global _tgi_setdrawpage + .global _tgi_setpalette + .global _tgi_setpixel + .global _tgi_settextdir + .global _tgi_settextscale + .global _tgi_settextstyle + .global _tgi_setviewpage + .global _tgi_uninstall + .global _tgi_unload +; +; get_tv.inc +; +; Ullrich von Bassewitz, 2004-10-15 +; +; Defines for the get_tv function. + + + +; Error codes returned by all functions +.enum TV + NTSC + PAL + OTHER +.endenum + + +; get_tv function + + .global _get_tv + + +;*****************************************************************************/ +;* */ +;* modload.inc */ +;* */ +;* o65 module loader interface for cc65 */ +;* */ +;* */ +;* */ +;* (C) 2002 Ullrich von Bassewitz */ +;* Wacholderweg 14 */ +;* D-70597 Stuttgart */ +;* EMail: uz@musoftware.de */ +;* */ +;* */ +;* This software is provided 'as-is', without any expressed or implied */ +;* warranty. In no event will the authors be held liable for any damages */ +;* arising from the use of this software. */ +;* */ +;* Permission is granted to anyone to use this software for any purpose, */ +;* including commercial applications, and to alter it and redistribute it */ +;* freely, subject to the following restrictions: */ +;* */ +;* 1. The origin of this software must not be misrepresented; you must not */ +;* claim that you wrote the original software. If you use this software */ +;* in a product, an acknowledgment in the product documentation would be */ +;* appreciated but is not required. */ +;* 2. Altered source versions must be plainly marked as such, and must not */ +;* be misrepresented as being the original software. */ +;* 3. This notice may not be removed or altered from any source */ +;* distribution. */ +;* */ +;*****************************************************************************/ + + + +; Exports structures and functions to load relocatable o65 modules at +; runtime. + + + +; Offsets for the mod_ctrl struct. This struct is passed to the module loader. +; It contains stuff, the loader needs to work, and another area where the +; loader will place informational data if it was successful. You will have to +; check the return code of mod_load before accessing any of these additional +; struct members. +.struct MOD_CTRL + READ .addr + CALLERDATA .word + MODULE .addr ; Pointer to module data + MODULE_SIZE .word ; Total size of loaded module + MODULE_ID .word +.endstruct + +; unsigned char mod_load (struct mod_ctrl* ctrl); +; /* Load a module into memory and relocate it. The function will return an +; * error code (see below). If MLOAD_OK is returned, the outgoing fields in +; * the passed mod_ctrl struct contain information about the module just +; * loaded. +; */ +.global _mod_load + +; void mod_free (void* module); +; /* Free a loaded module. Note: The given pointer is the pointer to the +; * module memory, not a pointer to a control structure. +; */ +.global _mod_free + +; Errors +.enum + MLOAD_OK ; Module load successful + MLOAD_ERR_READ ; Read error + MLOAD_ERR_HDR ; Header error + MLOAD_ERR_OS ; Wrong OS + MLOAD_ERR_FMT ; Data format error + MLOAD_ERR_MEM ; Not enough memory +.endenum + + +; +; Definitions for the character type tables +; +; Ullrich von Bassewitz, 08.09.2001 +; + +; Make the __ctype table an exported/imported symbol + + .global __ctype + +; Define bitmapped constants for the table entries + +CT_NONE = $00 ; Nothing special +CT_LOWER = $01 ; 0 - Lower case char +CT_UPPER = $02 ; 1 - Upper case char +CT_DIGIT = $04 ; 2 - Numeric digit +CT_XDIGIT = $08 ; 3 - Hex digit (both, lower and upper) +CT_CTRL = $10 ; 4 - Control character +CT_SPACE = $20 ; 5 - The space character itself +CT_OTHER_WS = $40 ; 6 - Other whitespace ('\f', '\n', '\r', '\t' and '\v') +CT_SPACE_TAB = $80 ; 7 - Space or tab character + +; Combined stuff +CT_ALNUM = (CT_LOWER | CT_UPPER | CT_DIGIT) +CT_ALPHA = (CT_LOWER | CT_UPPER) +CT_CTRL_SPACE = (CT_CTRL | CT_SPACE) +CT_NOT_PUNCT = (CT_SPACE | CT_CTRL | CT_DIGIT | CT_UPPER | CT_LOWER) + + +.macro jeq Target + .if .match(Target, 0) + bne *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + beq Target + .else + bne *+5 + jmp Target + .endif +.endmacro +.macro jne Target + .if .match(Target, 0) + beq *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + bne Target + .else + beq *+5 + jmp Target + .endif +.endmacro +.macro jmi Target + .if .match(Target, 0) + bpl *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + bmi Target + .else + bpl *+5 + jmp Target + .endif +.endmacro +.macro jpl Target + .if .match(Target, 0) + bmi *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + bpl Target + .else + bmi *+5 + jmp Target + .endif +.endmacro +.macro jcs Target + .if .match(Target, 0) + bcc *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + bcs Target + .else + bcc *+5 + jmp Target + .endif +.endmacro +.macro jcc Target + .if .match(Target, 0) + bcs *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + bcc Target + .else + bcs *+5 + jmp Target + .endif +.endmacro +.macro jvs Target + .if .match(Target, 0) + bvc *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + bvs Target + .else + bvc *+5 + jmp Target + .endif +.endmacro +.macro jvc Target + .if .match(Target, 0) + bvs *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + bvc Target + .else + bvs *+5 + jmp Target + .endif +.endmacro +; +; _file.inc +; +; (C) Copyright 2002 Ullrich von Bassewitz (uz@cc65.org) +; + +; Assembler include file that makes the constants and structures in _file.h +; available for asm code. + +; Struct _FILE +.struct _FILE + f_fd .byte + f_flags .byte + f_pushback .byte +.endstruct + +; Flags field +_FCLOSED = $00 +_FOPEN = $01 +_FEOF = $02 +_FERROR = $04 +_FPUSHBACK = $08 + +; File table +.global __filetab + + +;------------------------------------------------------------------------- +; CTIA/GTIA Address Equates +;------------------------------------------------------------------------- + +; Read/Write Addresses + +CONSOL = GTIA + $1F ;console switches and speaker control + +; Read Addresses + +M0PF = GTIA + $00 ;missile 0 and playfield collision +M1PF = GTIA + $01 ;missile 1 and playfield collision +M2PF = GTIA + $02 ;missile 2 and playfield collision +M3PF = GTIA + $03 ;missile 3 and playfield collision + +P0PF = GTIA + $04 ;player 0 and playfield collision +P1PF = GTIA + $05 ;player 1 and playfield collision +P2PF = GTIA + $06 ;player 2 and playfield collision +P3PF = GTIA + $07 ;player 3 and playfield collision + +M0PL = GTIA + $08 ;missile 0 and player collision +M1PL = GTIA + $09 ;missile 1 and player collision +M2PL = GTIA + $0A ;missile 2 and player collision +M3PL = GTIA + $0B ;missile 3 and player collision + +P0PL = GTIA + $0C ;player 0 and player collision +P1PL = GTIA + $0D ;player 1 and player collision +P2PL = GTIA + $0E ;player 2 and player collision +P3PL = GTIA + $0F ;player 3 and player collision + +TRIG0 = GTIA + $10 ;joystick trigger 0 +TRIG1 = GTIA + $11 ;joystick trigger 1 + +TRIG2 = GTIA + $12 ;cartridge interlock +TRIG3 = GTIA + $13 ;ACMI module interlock + +PAL = GTIA + $14 ;##rev2## PAL/NTSC indicator + +; Write Addresses + +HPOSP0 = GTIA + $00 ;player 0 horizontal position +HPOSP1 = GTIA + $01 ;player 1 horizontal position +HPOSP2 = GTIA + $02 ;player 2 horizontal position +HPOSP3 = GTIA + $03 ;player 3 horizontal position + +HPOSM0 = GTIA + $04 ;missile 0 horizontal position +HPOSM1 = GTIA + $05 ;missile 1 horizontal position +HPOSM2 = GTIA + $06 ;missile 2 horizontal position +HPOSM3 = GTIA + $07 ;missile 3 horizontal position + +SIZEP0 = GTIA + $08 ;player 0 size +SIZEP1 = GTIA + $09 ;player 1 size +SIZEP2 = GTIA + $0A ;player 2 size +SIZEP3 = GTIA + $0B ;player 3 size + +SIZEM = GTIA + $0C ;missile sizes + +GRAFP0 = GTIA + $0D ;player 0 graphics +GRAFP1 = GTIA + $0E ;player 1 graphics +GRAFP2 = GTIA + $0F ;player 2 graphics +GRAFP3 = GTIA + $10 ;player 3 graphics + +GRAFM = GTIA + $11 ;missile graphics + +COLPM0 = GTIA + $12 ;player-missile 0 color/luminance +COLPM1 = GTIA + $13 ;player-missile 1 color/luminance +COLPM2 = GTIA + $14 ;player-missile 2 color/luminance +COLPM3 = GTIA + $15 ;player-missile 3 color/luminance + +COLPF0 = GTIA + $16 ;playfield 0 color/luminance +COLPF1 = GTIA + $17 ;playfield 1 color/luminance +COLPF2 = GTIA + $18 ;playfield 2 color/luminance +COLPF3 = GTIA + $19 ;playfield 3 color/luminance + +COLBK = GTIA + $1A ;background color/luminance + +PRIOR = GTIA + $1B ;priority select +VDELAY = GTIA + $1C ;vertical delay +GRACTL = GTIA + $1D ;graphic control +HITCLR = GTIA + $1E ;collision clear + + +; add - Add without carry +.macro add Arg1, Arg2 + clc + .if .paramcount = 2 + adc Arg1, Arg2 + .else + adc Arg1 + .endif +.endmacro + +; sub - subtract without borrow +.macro sub Arg1, Arg2 + sec + .if .paramcount = 2 + sbc Arg1, Arg2 + .else + sbc Arg1 + .endif +.endmacro + +; bge - jump if unsigned greater or equal +.macro bge Arg + bcs Arg +.endmacro + +; blt - Jump if unsigned less +.macro blt Arg + bcc Arg +.endmacro + +; bgt - jump if unsigned greater +.macro bgt Arg + .local L + beq L + bcs Arg +L: +.endmacro + +; ble - jump if unsigned less or equal +.macro ble Arg + beq Arg + bcc Arg +.endmacro + +; bnz - jump if not zero +.macro bnz Arg + bne Arg +.endmacro + +; bze - jump if zero +.macro bze Arg + beq Arg +.endmacro + +;------------------------------------------------------------------------- +; ANTIC Address Equates +;------------------------------------------------------------------------- + +; Read Addresses + +VCOUNT = ANTIC + $0B ;vertical line counter +PENH = ANTIC + $0C ;light pen horizontal position +PENV = ANTIC + $0D ;light pen vertical position +NMIST = ANTIC + $0F ;NMI interrupt status + +; Write Addresses + +DMACTL = ANTIC + $00 ;DMA control +CHACTL = ANTIC + $01 ;character control +DLISTL = ANTIC + $02 ;low display list address +DLISTH = ANTIC + $03 ;high display list address +HSCROL = ANTIC + $04 ;horizontal scroll +VSCROL = ANTIC + $05 ;vertical scroll +PMBASE = ANTIC + $07 ;player-missile base address +CHBASE = ANTIC + $09 ;character base address +WSYNC = ANTIC + $0A ;wait for HBLANK synchronization +NMIEN = ANTIC + $0E ;NMI enable +NMIRES = ANTIC + $0F ;NMI interrupt reset + + +;------------------------------------------------------------------------- +; Antic opcodes +;------------------------------------------------------------------------- + +; usage example: +; +; ScreenDL: +; .byte DL_BLK8 +; .byte DL_BLK8 +; .byte DL_CHR40x8x1 + DL_LMS + DL_DLI +; .word ScreenAlignment +; .byte DL_BLK1 + DL_DLI +; .byte DL_MAP320x1x1 + DL_LMS +; .word Screen +; +; .repeat 99 +; .byte DL_MAP320x1x1 +; .endrepeat +; .byte DL_MAP320x1x1 + DL_LMS +; .word Screen + 40 * 100 ; 100 lines a 40 byte, 'Screen' has to be aligned correctly! +; .repeat 92 +; .byte DL_MAP320x1x1 +; .endrepeat +; +; .byte DL_JVB + +; absolute instructions (non mode lines) + +DL_JMP = 1 +DL_JVB = 65 + +DL_BLK1 = 0 +DL_BLK2 = 16 +DL_BLK3 = 32 +DL_BLK4 = 48 +DL_BLK5 = 64 +DL_BLK6 = 80 +DL_BLK7 = 96 +DL_BLK8 = 112 + +; absolute instructions (mode lines) + +DL_CHR40x8x1 = 2 ; monochrome, 40 character & 8 scanlines per mode line (GR. 0) +DL_CHR40x10x1 = 3 ; monochrome, 40 character & 10 scanlines per mode line +DL_CHR40x8x4 = 4 ; colour, 40 character & 8 scanlines per mode line (GR. 12) +DL_CHR40x16x4 = 5 ; colour, 40 character & 16 scanlines per mode line (GR. 13) +DL_CHR20x8x2 = 6 ; colour (duochrome per character), 20 character & 8 scanlines per mode line (GR. 1) +DL_CHR20x16x2 = 7 ; colour (duochrome per character), 20 character & 16 scanlines per mode line (GR. 2) + +DL_MAP40x8x4 = 8 ; colour, 40 pixel & 8 scanlines per mode line (GR. 3) +DL_MAP80x4x2 = 9 ; 'duochrome', 80 pixel & 4 scanlines per mode line (GR.4) +DL_MAP80x4x4 = 10 ; colour, 80 pixel & 4 scanlines per mode line (GR.5) +DL_MAP160x2x2 = 11 ; 'duochrome', 160 pixel & 2 scanlines per mode line (GR.6) +DL_MAP160x1x2 = 12 ; 'duochrome', 160 pixel & 1 scanline per mode line (GR.14) +DL_MAP160x2x4 = 13 ; 4 colours, 160 pixel & 2 scanlines per mode line (GR.7) +DL_MAP160x1x4 = 14 ; 4 colours, 160 pixel & 1 scanline per mode line (GR.15) +DL_MAP320x1x1 = 15 ; monochrome, 320 pixel & 1 scanline per mode line (GR.8) + +; modifiers on mode lines... + +DL_HSCROL = 16 +DL_VSCROL = 32 +DL_LMS = 64 + +; general modifier... + +DL_DLI = 128 +;/*****************************************************************************/ +;/* */ +;/* signal.inc */ +;/* */ +;/* Signal handling definitions */ +;/* */ +;/* */ +;/* */ +;/* (C) 2002 Ullrich von Bassewitz */ +;/* Wacholderweg 14 */ +;/* D-70597 Stuttgart */ +;/* EMail: uz@musoftware.de */ +;/* */ +;/* */ +;/* This software is provided 'as-is', without any expressed or implied */ +;/* warranty. In no event will the authors be held liable for any damages */ +;/* arising from the use of this software. */ +;/* */ +;/* Permission is granted to anyone to use this software for any purpose, */ +;/* including commercial applications, and to alter it and redistribute it */ +;/* freely, subject to the following restrictions: */ +;/* */ +;/* 1. The origin of this software must not be misrepresented; you must not */ +;/* claim that you wrote the original software. If you use this software */ +;/* in a product, an acknowledgment in the product documentation would be */ +;/* appreciated but is not required. */ +;/* 2. Altered source versions must be plainly marked as such, and must not */ +;/* be misrepresented as being the original software. */ +;/* 3. This notice may not be removed or altered from any source */ +;/* distribution. */ +;/* */ +;/*****************************************************************************/ + + + +; Standard signal handling functions +SIG_ERR = $0000 + +; Signal numbers +SIGABRT = 0 +SIGFPE = 1 +SIGILL = 2 +SIGINT = 3 +SIGSEGV = 4 +SIGTERM = 5 +SIGCOUNT = 6 ; Number of signals + +; Table with signal handlers (asm code only) +.global sigtable + +; Function declarations +.global __sig_ign +.global __sig_dfl +.global _signal +.global _raise + + +; +; C128 generic definitions. Stolen from Elite128 +; + + +; --------------------------------------------------------------------------- +; Zero page, Commodore stuff + +TXTPTR := $3D ; Pointer into BASIC source code +TIME := $A0 ; 60HZ clock +FNAM_LEN := $B7 ; Length of filename +SECADR := $B9 ; Secondary address +DEVNUM := $BA ; Device number +FNAM := $BB ; Address of filename +FNAM_BANK := $C7 ; Bank for filename +KEY_COUNT := $D0 ; Number of keys in input buffer +FKEY_COUNT := $D1 ; Characters for function key +MODE := $D7 ; 40/80 column mode flag +CURS_X := $EC ; Cursor column +CURS_Y := $EB ; Cursor row +SCREEN_PTR := $E0 ; Pointer to current char in text screen +CRAM_PTR := $E2 ; Pointer to current char in color RAM + +CHARCOLOR := $F1 +RVS := $F3 ; Reverse output flag +SCROLL := $F8 ; Disable scrolling flag + +BASIC_BUF := $200 ; Location of command-line +BASIC_BUF_LEN = 162 ; Maximum length of command-line + +FETCH := $2A2 ; Fetch subroutine in RAM +FETVEC := $2AA ; Vector patch location for FETCH +STASH := $2AF ; Stash routine in RAM +STAVEC := $2B9 ; Vector patch location for STASH +IRQInd := $2FD ; JMP $0000 -- used as indirect IRQ vector +PALFLAG := $A03 ; $FF=PAL, $00=NTSC +INIT_STATUS := $A04 ; Flags: Reset/Restore initiation status +FKEY_LEN := $1000 ; Function key lengths +FKEY_TEXT := $100A ; Function key texts + +; --------------------------------------------------------------------------- +; Kernal routines + +; Direct entries +CURS_SET := $CD57 +CURS_ON := $CD6F +CURS_OFF := $CD9F +CLRSCR := $C142 +KBDREAD := $C006 +NEWLINE := $C363 +PRINT := $C322 +NMIEXIT := $FF33 +INDFET := $FF74 + +; --------------------------------------------------------------------------- +; Vectors + +IRQVec := $0314 +BRKVec := $0316 +NMIVec := $0318 +KeyStoreVec := $033C + +; --------------------------------------------------------------------------- +; I/O: VIC + +VIC := $D000 +VIC_SPR0_X := $D000 +VIC_SPR0_Y := $D001 +VIC_SPR1_X := $D002 +VIC_SPR1_Y := $D003 +VIC_SPR2_X := $D004 +VIC_SPR2_Y := $D005 +VIC_SPR3_X := $D006 +VIC_SPR3_Y := $D007 +VIC_SPR4_X := $D008 +VIC_SPR4_Y := $D009 +VIC_SPR5_X := $D00A +VIC_SPR5_Y := $D00B +VIC_SPR6_X := $D00C +VIC_SPR6_Y := $D00D +VIC_SPR7_X := $D00E +VIC_SPR7_Y := $D00F +VIC_SPR_HI_X := $D010 +VIC_SPR_ENA := $D015 +VIC_SPR_EXP_Y := $D017 +VIC_SPR_EXP_X := $D01D +VIC_SPR_MCOLOR := $D01C +VIC_SPR_BG_PRIO := $D01B + +VIC_SPR_MCOLOR0 := $D025 +VIC_SPR_MCOLOR1 := $D026 + +VIC_SPR0_COLOR := $D027 +VIC_SPR1_COLOR := $D028 +VIC_SPR2_COLOR := $D029 +VIC_SPR3_COLOR := $D02A +VIC_SPR4_COLOR := $D02B +VIC_SPR5_COLOR := $D02C +VIC_SPR6_COLOR := $D02D +VIC_SPR7_COLOR := $D02E + +VIC_CTRL1 := $D011 +VIC_CTRL2 := $D016 + +VIC_HLINE := $D012 + +VIC_LPEN_X := $D013 +VIC_LPEN_Y := $D014 + +VIC_VIDEO_ADR := $D018 + +VIC_IRR := $D019 ; Interrupt request register +VIC_IMR := $D01A ; Interrupt mask register + +VIC_BORDERCOLOR := $D020 +VIC_BG_COLOR0 := $D021 +VIC_BG_COLOR1 := $D022 +VIC_BG_COLOR2 := $D023 +VIC_BG_COLOR3 := $D024 + +; 128 stuff: +VIC_KBD_128 := $D02F ; Extended kbd bits (visible in 64 mode) +VIC_CLK_128 := $D030 ; Clock rate register (visible in 64 mode) + + +; --------------------------------------------------------------------------- +; I/O: SID + +SID := $D400 +SID_S1Lo := $D400 +SID_S1Hi := $D401 +SID_PB1Lo := $D402 +SID_PB1Hi := $D403 +SID_Ctl1 := $D404 +SID_AD1 := $D405 +SID_SUR1 := $D406 + +SID_S2Lo := $D407 +SID_S2Hi := $D408 +SID_PB2Lo := $D409 +SID_PB2Hi := $D40A +SID_Ctl2 := $D40B +SID_AD2 := $D40C +SID_SUR2 := $D40D + +SID_S3Lo := $D40E +SID_S3Hi := $D40F +SID_PB3Lo := $D410 +SID_PB3Hi := $D411 +SID_Ctl3 := $D412 +SID_AD3 := $D413 +SID_SUR3 := $D414 + +SID_FltLo := $D415 +SID_FltHi := $D416 +SID_FltCtl := $D417 +SID_Amp := $D418 +SID_ADConv1 := $D419 +SID_ADConv2 := $D41A +SID_Noise := $D41B +SID_Read3 := $D41C + +; --------------------------------------------------------------------------- +; I/O: VDC (128 only) + +VDC_INDEX := $D600 +VDC_DATA := $D601 + +; --------------------------------------------------------------------------- +; I/O: CIAs + +CIA1 := $DC00 +CIA1_PRA := $DC00 +CIA1_PRB := $DC01 +CIA1_DDRA := $DC02 +CIA1_DDRB := $DC03 +CIA1_TOD10 := $DC08 +CIA1_TODSEC := $DC09 +CIA1_TODMIN := $DC0A +CIA1_TODHR := $DC0B +CIA1_ICR := $DC0D +CIA1_CRA := $DC0E +CIA1_CRB := $DC0F + +CIA2 := $DD00 +CIA2_PRA := $DD00 +CIA2_PRB := $DD01 +CIA2_DDRA := $DD02 +CIA2_DDRB := $DD03 +CIA2_TOD10 := $DD08 +CIA2_TODSEC := $DD09 +CIA2_TODMIN := $DD0A +CIA2_TODHR := $DD0B +CIA2_ICR := $DD0D +CIA2_CRA := $DD0E +CIA2_CRB := $DD0F + +; --------------------------------------------------------------------------- +; I/O: MMU + +MMU_CR := $FF00 +MMU_CFG_CC65 := %00001110 ; Bank 0 with kernal ROM +MMU_CFG_RAM0 := %00111111 ; Bank 0 full RAM +MMU_CFG_RAM1 := %01111111 ; Bank 1 full RAM +MMU_CFG_RAM2 := %10111111 ; Bank 2 full RAM +MMU_CFG_RAM3 := %11111111 ; Bank 3 full RAM +MMU_CFG_IFROM := %01010111 ; Bank 1 with Internal Function RAM/ROM +MMU_CFG_EFROM := %01101011 ; Bank 1 with External Function RAM/ROM + +; --------------------------------------------------------------------------- +; Super CPU + +SCPU_VIC_Bank1 := $D075 +SCPU_Slow := $D07A +SCPU_Fast := $D07B +SCPU_EnableRegs := $D07E +SCPU_DisableRegs:= $D07F +SCPU_Detect := $D0BC +; +; NES definitions. By Groepaz/Hitmem. +; + + +;; FIXME: optimize zeropage usage + +SCREEN_PTR = $62 ;2 +CRAM_PTR = $64 ;2 +CHARCOLOR = $66 +BGCOLOR = $67 +RVS = $68 +CURS_X = $69 +CURS_Y = $6a + +tickcount = $6b ;2 + +VBLANK_FLAG = $70 + +ringbuff = $0200 +ringwrite = $71 +ringread = $72 +ringcount = $73 + +ppuhi = $74 +ppulo = $75 +ppuval = $76 + +screenrows = (30-1) +charsperline = 32 +xsize = charsperline + +;; PPU defines + +PPU_CTRL1 = $2000 +PPU_CTRL2 = $2001 +PPU_STATUS = $2002 +PPU_SPR_ADDR = $2003 +PPU_SPR_IO = $2004 +PPU_VRAM_ADDR1 = $2005 +PPU_VRAM_ADDR2 = $2006 +PPU_VRAM_IO = $2007 + +;; APU defines + +APU_PULSE1CTRL = $4000 ; Pulse #1 Control Register (W) +APU_PULSE1RAMP = $4001 ; Pulse #1 Ramp Control Register (W) +APU_PULSE1FTUNE = $4002 ; Pulse #1 Fine Tune (FT) Register (W) +APU_PULSE1CTUNE = $4003 ; Pulse #1 Coarse Tune (CT) Register (W) +APU_PULSE2CTRL = $4004 ; Pulse #2 Control Register (W) +APU_PULSE2RAMP = $4005 ; Pulse #2 Ramp Control Register (W) +APU_PULSE2FTUNE = $4006 ; Pulse #2 Fine Tune Register (W) +APU_PULSE2STUNE = $4007 ; Pulse #2 Coarse Tune Register (W) +APU_TRICTRL1 = $4008 ; Triangle Control Register #1 (W) +APU_TRICTRL2 = $4009 ; Triangle Control Register #2 (?) +APU_TRIFREQ1 = $400A ; Triangle Frequency Register #1 (W) +APU_TRIFREQ2 = $400B ; Triangle Frequency Register #2 (W) +APU_NOISECTRL = $400C ; Noise Control Register #1 (W) +;;APU_ = $400D ; Unused (???) +APU_NOISEFREQ1 = $400E ; Noise Frequency Register #1 (W) +APU_NOISEFREQ2 = $400F ; Noise Frequency Register #2 (W) +APU_MODCTRL = $4010 ; Delta Modulation Control Register (W) +APU_MODDA = $4011 ; Delta Modulation D/A Register (W) +APU_MODADDR = $4012 ; Delta Modulation Address Register (W) +APU_MODLEN = $4013 ; Delta Modulation Data Length Register (W) +APU_SPR_DMA = $4014 ; Sprite DMA Register (W) +APU_CHANCTRL = $4015 ; Sound/Vertical Clock Signal Register (R) +APU_PAD1 = $4016 ; Joypad #1 (RW) +APU_PAD2 = $4017 ; Joypad #2/SOFTCLK (RW) + + +CH_HLINE = 11 +CH_VLINE = 14 +CH_ULCORNER = 176 +CH_URCORNER = 174 +CH_LLCORNER = 173 +CH_LRCORNER = 189 +CH_TTEE = 178 +CH_RTEE = 179 +CH_BTEE = 177 +CH_LTEE = 171 +CH_CROSS = 123 +CH_CURS_UP = 145 +CH_CURS_DOWN = 17 +CH_CURS_LEFT = 157 +CH_CURS_RIGHT = 29 +CH_PI = 126 +CH_DEL = 20 +CH_INS = 148 +CH_ENTER = 10 +CH_STOP = 3 +CH_ESC = 27 + +;/*****************************************************************************/ +;/* */ +;/* joy-error.inc */ +;/* */ +;/* Joystick error codes */ +;/* */ +;/* */ +;/* */ +;/* (C) 2002 Ullrich von Bassewitz */ +;/* Wacholderweg 14 */ +;/* D-70597 Stuttgart */ +;/* EMail: uz@musoftware.de */ +;/* */ +;/* */ +;/* This software is provided 'as-is', without any expressed or implied */ +;/* warranty. In no event will the authors be held liable for any damages */ +;/* arising from the use of this software. */ +;/* */ +;/* Permission is granted to anyone to use this software for any purpose, */ +;/* including commercial applications, and to alter it and redistribute it */ +;/* freely, subject to the following restrictions: */ +;/* */ +;/* 1. The origin of this software must not be misrepresented; you must not */ +;/* claim that you wrote the original software. If you use this software */ +;/* in a product, an acknowledgment in the product documentation would be */ +;/* appreciated but is not required. */ +;/* 2. Altered source versions must be plainly marked as such, and must not */ +;/* be misrepresented as being the original software. */ +;/* 3. This notice may not be removed or altered from any source */ +;/* distribution. */ +;/* */ +;/*****************************************************************************/ + + + +; Error codes +JOY_ERR_OK = 0 ; No error +JOY_ERR_NO_DRIVER = 1 ; No driver available +JOY_ERR_CANNOT_LOAD = 2 ; Error loading driver +JOY_ERR_INV_DRIVER = 3 ; Invalid driver +JOY_ERR_NO_DEVICE = 4 ; Device (hardware) not found + + + +;**************************************************************************** +;* * +;* ser-kernel.inc * +;* * +;* Serial communication API * +;* * +;* * +;* * +;*(C) 2003-2006, Ullrich von Bassewitz * +;* Römerstrasse 52 * +;* D-70794 Filderstadt * +;*EMail: uz@cc65.org * +;* * +;* * +;*This software is provided 'as-is', without any expressed or implied * +;*warranty. In no event will the authors be held liable for any damages * +;*arising from the use of this software. * +;* * +;*Permission is granted to anyone to use this software for any purpose, * +;*including commercial applications, and to alter it and redistribute it * +;*freely, subject to the following restrictions: * +;* * +;*1. The origin of this software must not be misrepresented; you must not * +;* claim that you wrote the original software. If you use this software * +;* in a product, an acknowledgment in the product documentation would be * +;* appreciated but is not required. * +;*2. Altered source versions must be plainly marked as such, and must not * +;* be misrepresented as being the original software. * +;*3. This notice may not be removed or altered from any source * +;* distribution. * +;* * +;**************************************************************************** + + + +;------------------------------------------------------------------------------ +; The driver header + +.struct SER_HDR + ID .byte 3 ; Contains 0x73, 0x65, 0x72 ("ser") + VERSION .byte 1 ; Interface version + LIBREF .addr ; Library reference + JUMPTAB .struct + INSTALL .addr ; INSTALL routine + UNINSTALL .addr ; UNINSTALL routine + OPEN .addr ; OPEN routine + CLOSE .addr ; CLOSE routine + GET .addr ; GET routine + PUT .addr ; PUT routine + STATUS .addr ; STATUS routine + IOCTL .addr ; IOCTL routine + IRQ .addr ; IRQ routine + .endstruct +.endstruct + + +;------------------------------------------------------------------------------ +; The SER API version, stored SER_HDR::VERSION + +SER_API_VERSION = $02 + +;------------------------------------------------------------------------------ +; ser_params + +.struct SER_PARAMS + BAUDRATE .byte ; Baudrate + DATABITS .byte ; Number of data bits + STOPBITS .byte ; Number of stop bits + PARITY .byte ; Parity setting + HANDSHAKE .byte ; Type of handshake to use +.endstruct + +;------------------------------------------------------------------------------ +; Serial parameters + +; Baudrate +SER_BAUD_45_5 = $00 +SER_BAUD_50 = $01 +SER_BAUD_75 = $02 +SER_BAUD_110 = $03 +SER_BAUD_134_5 = $04 +SER_BAUD_150 = $05 +SER_BAUD_300 = $06 +SER_BAUD_600 = $07 +SER_BAUD_1200 = $08 +SER_BAUD_1800 = $09 +SER_BAUD_2400 = $0A +SER_BAUD_3600 = $0B +SER_BAUD_4800 = $0C +SER_BAUD_7200 = $0D +SER_BAUD_9600 = $0E +SER_BAUD_19200 = $0F +SER_BAUD_38400 = $10 +SER_BAUD_57600 = $11 +SER_BAUD_115200 = $12 +SER_BAUD_230400 = $13 +SER_BAUD_31250 = $14 +SER_BAUD_62500 = $15 +SER_BAUD_56_875 = $16 + +; Data bit settings +SER_BITS_5 = $00 +SER_BITS_6 = $01 +SER_BITS_7 = $02 +SER_BITS_8 = $03 + +; Stop bit settings +SER_STOP_1 = $00 +SER_STOP_2 = $01 + +; Parity +SER_PAR_NONE = $00 +SER_PAR_ODD = $01 +SER_PAR_EVEN = $02 +SER_PAR_MARK = $03 +SER_PAR_SPACE = $04 + +; Handshake +SER_HS_NONE = $00 ; No handshake +SER_HS_HW = $01 ; Hardware (RTS/CTS) handshake +SER_HS_SW = $02 ; Software handshake + +; Bit masks to mask out things from the status returned by ser_status +SER_STATUS_PE = $01 ; Parity error +SER_STATUS_FE = $02 ; Framing error +SER_STATUS_OE = $04 ; Overrun error +SER_STATUS_DCD = $20 ; NOT data carrier detect +SER_STATUS_DSR = $40 ; NOT data set ready + +;------------------------------------------------------------------------------ +; Variables + + .global _ser_drv ; Pointer to driver + +;------------------------------------------------------------------------------ +; Driver entry points + + .global ser_install + .global ser_uninstall + .global ser_open + .global ser_close + .global ser_get + .global ser_put + .global ser_status + .global ser_ioctl + .global ser_irq + +;------------------------------------------------------------------------------ +; C callable functions + + .global _ser_load_driver + .global _ser_unload + .global _ser_install + .global _ser_uninstall + .global _ser_open + .global _ser_close + .global _ser_get + .global _ser_put + .global _ser_status + .global _ser_ioctl + + .global _ser_clear_ptr + +; +; C64 generic definitions. Stolen from Elite128 +; + + +; --------------------------------------------------------------------------- +; Zero page, Commodore stuff + +VARTAB := $2D ; Pointer to start of BASIC variables +MEMSIZE := $37 ; Pointer to highest BASIC RAM location (+1) +TXTPTR := $7A ; Pointer into BASIC source code +TIME := $A0 ; 60 HZ clock +FNAM_LEN := $B7 ; Length of filename +SECADR := $B9 ; Secondary address +DEVNUM := $BA ; Device number +FNAM := $BB ; Pointer to filename +KEY_COUNT := $C6 ; Number of keys in input buffer +RVS := $C7 ; Reverse flag +CURS_FLAG := $CC ; 1 = cursor off +CURS_BLINK := $CD ; Blink counter +CURS_CHAR := $CE ; Character under the cursor +CURS_STATE := $CF ; Cursor blink state +SCREEN_PTR := $D1 ; Pointer to current char in text screen +CURS_X := $D3 ; Cursor column +CURS_Y := $D6 ; Cursor row +CRAM_PTR := $F3 ; Pointer to current char in color RAM +FREKZP := $FB ; Five unused bytes + +BASIC_BUF := $200 ; Location of command-line +BASIC_BUF_LEN = 89 ; Maximum length of command-line + +CHARCOLOR := $286 +CURS_COLOR := $287 ; Color under the cursor +PALFLAG := $2A6 ; $01 = PAL, $00 = NTSC + + +; --------------------------------------------------------------------------- +; Kernal routines + +; Direct entries +CLRSCR := $E544 +KBDREAD := $E5B4 +NMIEXIT := $FEBC + +; --------------------------------------------------------------------------- +; Vector and other locations + +IRQVec := $0314 +BRKVec := $0316 +NMIVec := $0318 + +; --------------------------------------------------------------------------- +; Screen size + +XSIZE = 40 +YSIZE = 25 + +; --------------------------------------------------------------------------- +; I/O: VIC + +VIC := $D000 +VIC_SPR0_X := $D000 +VIC_SPR0_Y := $D001 +VIC_SPR1_X := $D002 +VIC_SPR1_Y := $D003 +VIC_SPR2_X := $D004 +VIC_SPR2_Y := $D005 +VIC_SPR3_X := $D006 +VIC_SPR3_Y := $D007 +VIC_SPR4_X := $D008 +VIC_SPR4_Y := $D009 +VIC_SPR5_X := $D00A +VIC_SPR5_Y := $D00B +VIC_SPR6_X := $D00C +VIC_SPR6_Y := $D00D +VIC_SPR7_X := $D00E +VIC_SPR7_Y := $D00F +VIC_SPR_HI_X := $D010 +VIC_SPR_ENA := $D015 +VIC_SPR_EXP_Y := $D017 +VIC_SPR_EXP_X := $D01D +VIC_SPR_MCOLOR := $D01C +VIC_SPR_BG_PRIO := $D01B + +VIC_SPR_MCOLOR0 := $D025 +VIC_SPR_MCOLOR1 := $D026 + +VIC_SPR0_COLOR := $D027 +VIC_SPR1_COLOR := $D028 +VIC_SPR2_COLOR := $D029 +VIC_SPR3_COLOR := $D02A +VIC_SPR4_COLOR := $D02B +VIC_SPR5_COLOR := $D02C +VIC_SPR6_COLOR := $D02D +VIC_SPR7_COLOR := $D02E + +VIC_CTRL1 := $D011 +VIC_CTRL2 := $D016 + +VIC_HLINE := $D012 + +VIC_LPEN_X := $D013 +VIC_LPEN_Y := $D014 + +VIC_VIDEO_ADR := $D018 + +VIC_IRR := $D019 ; Interrupt request register +VIC_IMR := $D01A ; Interrupt mask register + +VIC_BORDERCOLOR := $D020 +VIC_BG_COLOR0 := $D021 +VIC_BG_COLOR1 := $D022 +VIC_BG_COLOR2 := $D023 +VIC_BG_COLOR3 := $D024 + +; 128 stuff: +VIC_KBD_128 := $D02F ; Extended kbd bits (visible in 64 mode) +VIC_CLK_128 := $D030 ; Clock rate register (visible in 64 mode) + + +; --------------------------------------------------------------------------- +; I/O: SID + +SID := $D400 +SID_S1Lo := $D400 +SID_S1Hi := $D401 +SID_PB1Lo := $D402 +SID_PB1Hi := $D403 +SID_Ctl1 := $D404 +SID_AD1 := $D405 +SID_SUR1 := $D406 + +SID_S2Lo := $D407 +SID_S2Hi := $D408 +SID_PB2Lo := $D409 +SID_PB2Hi := $D40A +SID_Ctl2 := $D40B +SID_AD2 := $D40C +SID_SUR2 := $D40D + +SID_S3Lo := $D40E +SID_S3Hi := $D40F +SID_PB3Lo := $D410 +SID_PB3Hi := $D411 +SID_Ctl3 := $D412 +SID_AD3 := $D413 +SID_SUR3 := $D414 + +SID_FltLo := $D415 +SID_FltHi := $D416 +SID_FltCtl := $D417 +SID_Amp := $D418 +SID_ADConv1 := $D419 +SID_ADConv2 := $D41A +SID_Noise := $D41B +SID_Read3 := $D41C + +; --------------------------------------------------------------------------- +; I/O: VDC (128 only) + +VDC_INDEX := $D600 +VDC_DATA := $D601 + +; --------------------------------------------------------------------------- +; I/O: CIAs + +CIA1 := $DC00 +CIA1_PRA := $DC00 +CIA1_PRB := $DC01 +CIA1_DDRA := $DC02 +CIA1_DDRB := $DC03 +CIA1_TOD10 := $DC08 +CIA1_TODSEC := $DC09 +CIA1_TODMIN := $DC0A +CIA1_TODHR := $DC0B +CIA1_ICR := $DC0D +CIA1_CRA := $DC0E +CIA1_CRB := $DC0F + +CIA2 := $DD00 +CIA2_PRA := $DD00 +CIA2_PRB := $DD01 +CIA2_DDRA := $DD02 +CIA2_DDRB := $DD03 +CIA2_TOD10 := $DD08 +CIA2_TODSEC := $DD09 +CIA2_TODMIN := $DD0A +CIA2_TODHR := $DD0B +CIA2_ICR := $DD0D +CIA2_CRA := $DD0E +CIA2_CRB := $DD0F + +; --------------------------------------------------------------------------- +; Super CPU + +SCPU_VIC_Bank1 := $D075 +SCPU_Slow := $D07A +SCPU_Fast := $D07B +SCPU_EnableRegs := $D07E +SCPU_DisableRegs:= $D07F +SCPU_Detect := $D0BC + + +; --------------------------------------------------------------------------- +; Processor Port at $01 + +LORAM = $01 ; Enable the basic rom +HIRAM = $02 ; Enable the kernal rom +IOEN = $04 ; Enable I/O +CASSDATA = $08 ; Cassette data +CASSPLAY = $10 ; Cassette: Play +CASSMOT = $20 ; Cassette motor on +TP_FAST = $80 ; Switch Rossmoeller TurboProcess to fast mode + +RAMONLY = $F8 ; (~(LORAM | HIRAM | IOEN)) & $FF +; Convert characters to screen codes + +; Helper macro that converts and outputs one character +.macro _scrcode char + .if (char < 256) + .byte (char + 128) + .else + .error "scrcode: Character constant out of range" + .endif +.endmacro + +.macro scrcode arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 + + ; Bail out if next argument is empty + .if .blank (arg1) + .exitmacro + .endif + + ; Check for a string + .if .match ({arg1}, "") + + ; Walk over all string chars + .repeat .strlen (arg1), i + _scrcode {.strat (arg1, i)} + .endrepeat + + ; Check for a number + .elseif .match (.left (1, {arg1}), 0) + + ; Just output the number + _scrcode arg1 + + ; Check for a character + .elseif .match (.left (1, {arg1}), 'a') + + ; Just output the character + _scrcode arg1 + + ; Anything else is an error + .else + + .error "scrcode: invalid argument type" + + .endif + + ; Call the macro recursively with the remaining args + scrcode arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 +.endmacro +; Convert characters to screen codes + +; Helper macro that converts and outputs one character +.macro _scrcode char + .if (char >= 0) .and (char <= 31) + .byte (char + 64) + .elseif (char >= 32) .and (char <= 95) + .byte (char - 32) + .elseif (char >= 96) .and (char <= 127) + .byte char + .elseif (char >= 128) .and (char <= 159) + .byte (char + 64) + .elseif (char >= 160) .and (char <= 223) + .byte (char - 32) + .elseif (char >= 224) .and (char <= 255) + .byte char + .else + .error "scrcode: Character constant out of range" + .endif +.endmacro + +.macro scrcode arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 + + ; Bail out if next argument is empty + .if .blank (arg1) + .exitmacro + .endif + + ; Check for a string + .if .match ({arg1}, "") + + ; Walk over all string chars + .repeat .strlen (arg1), i + _scrcode {.strat (arg1, i)} + .endrepeat + + ; Check for a number + .elseif .match (.left (1, {arg1}), 0) + + ; Just output the number + _scrcode arg1 + + ; Check for a character + .elseif .match (.left (1, {arg1}), 'a') + + ; Just output the character + _scrcode arg1 + + ; Anything else is an error + .else + + .error "scrcode: invalid argument type" + + .endif + + ; Call the macro recursively with the remaining args + scrcode arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 +.endmacro + +;**************************************************************************** +;* * +;* ser-error.inc * +;* * +;* Serial communication API * +;* * +;* * +;* * +;* (C) 2003-2012, Ullrich von Bassewitz * +;* Roemerstrasse 52 * +;* D-70794 Filderstadt * +;* EMail: uz@cc65.org * +;* * +;* * +;*This software is provided 'as-is', without any expressed or implied * +;*warranty. In no event will the authors be held liable for any damages * +;*arising from the use of this software. * +;* * +;*Permission is granted to anyone to use this software for any purpose, * +;*including commercial applications, and to alter it and redistribute it * +;*freely, subject to the following restrictions: * +;* * +;*1. The origin of this software must not be misrepresented; you must not * +;* claim that you wrote the original software. If you use this software * +;* in a product, an acknowledgment in the product documentation would be * +;* appreciated but is not required. * +;*2. Altered source versions must be plainly marked as such, and must not * +;* be misrepresented as being the original software. * +;*3. This notice may not be removed or altered from any source * +;* distribution. * +;* * +;**************************************************************************** + + + +;------------------------------------------------------------------------------ +; Error codes + +.enum + SER_ERR_OK ; Not an error - relax + SER_ERR_NO_DRIVER ; No driver available + SER_ERR_CANNOT_LOAD ; Error loading driver + SER_ERR_INV_DRIVER ; Invalid driver + SER_ERR_NO_DEVICE ; Device (hardware) not found + SER_ERR_BAUD_UNAVAIL ; Baud rate not available + SER_ERR_NO_DATA ; Nothing to read + SER_ERR_OVERFLOW ; No room in send buffer + SER_ERR_INIT_FAILED ; Initialization failed + SER_ERR_INV_IOCTL ; IOCTL not supported + SER_ERR_INSTALLED ; A driver is already installed + SER_ERR_NOT_OPEN ; Driver not open + + SER_ERR_COUNT ; Special: Number of error codes +.endenum + +; +; Definitions for CBM file types. From cbm.h +; +; Ullrich von Bassewitz, 2012-06-03 +; + +; Define bitmapped constants for the table entries + +.enum + CBM_T_REG = $10 ; Bit set for regular files + CBM_T_SEQ = $10 ; Sequential file + CBM_T_PRG = $11 ; Program file + CBM_T_USR = $12 ; User file + CBM_T_REL = $13 ; Relative file + CBM_T_VRP = $14 ; Vorpal fast-loadable format + CBM_T_DEL = $00 ; Deleted file + CBM_T_CBM = $01 ; 1581 sub-partition + CBM_T_DIR = $02 ; IDE64 and CMD sub-directory + CBM_T_LNK = $03 ; IDE64 soft-link + CBM_T_OTHER = $04 ; File-type not recognized + CBM_T_HEADER = $05 ; Disk header / title +.endenum + + +; The following function maps the start character for a file type to +; one of the file types above. Note: 'd' will always mapped to CBM_T_DEL. +; The calling function has to look at the following character to determine +; if the file type is actually CBM_T_DIR. +; +; unsigned char __fastcall__ _cbm_filetype (unsigned char c); + + .global __cbm_filetype + + +; +; Ullrich von Bassewitz, 05.06.1999 +; + +; Predefined file handles +STDIN_FILENO = 0 +STDOUT_FILENO = 1 +STDERR_FILENO = 2 + +; File mode constants, must match the values in the C headers +O_RDONLY = $01 +O_WRONLY = $02 +O_RDWR = $03 +O_CREAT = $10 +O_TRUNC = $20 +O_APPEND = $40 +O_EXCL = $80 + + + + +; +; Zero page variables and I/O definitions for the CBM 610 +; +; Taken from a kernal disassembly done by myself in 1987. +; +; 1998-09-28, Ullrich von Bassewitz +; 2014-04-02, Greg King + + +; --------------------------------------------------------------------------- +; Zeropage stuff + +ExecReg := $00 ; Controls execution memory bank +IndReg := $01 ; Controls indirect indexed load-store bank + +TXTPTR := $85 ; Far pointer into BASIC source code +FNAM := $90 ; Far pointer to LOAD/SAVE file-name +FNAM_LEN := $9D ; Holds length of file-name + +; --------------------------------------------------------------------------- +; Screen size + +XSIZE = 80 +YSIZE = 25 + +; --------------------------------------------------------------------------- +; I/O definitions + + +; I/O $d800: CRTC 6545 + +.struct CRTC + ADDR .byte + DATA .byte +.endstruct + + +; I/O $db00: CIA 6526, Inter Process Communication +; +; IPCcia = $db00 + +.struct CIA + PRA .byte + PRB .byte + DDRA .byte + DDRB .byte + .union + .struct + TALO .byte + TAHI .byte + .endstruct + TA .word + .endunion + .union + .struct + TBLO .byte + TBHI .byte + .endstruct + TB .word + .endunion + TOD10 .byte + TODSEC .byte + TODMIN .byte + TODHR .byte + SDR .byte + ICR .byte + CRA .byte + CRB .byte +.endstruct + + +; I/O $dc00: CIA 6526 +; +; cia = $dc00 + + +; I/O $dd00: ACIA 6551 +; +; acia = $dd00 + +.struct ACIA + DATA .byte + STATUS .byte + CMD .byte + CTRL .BYTE +.endstruct + + +; I/O $de00: Triport #1 6525 +; +; tpi1 = $de00 + +.struct TPI + PRA .byte + PRB .byte + .union + PRC .byte + INT .byte + .endunion + DDRA .byte + DDRB .byte + .union + DDRC .byte + IMR .byte + .endunion + CR .byte + AIR .byte +.endstruct + + +; I/O $df00: Triport #2 6525 + +; tpi2 = $df00 + + +;----------------------------------------------------------------------------- + +BASIC_BUF := $FA5E ; Bank 1 location of command-line +BASIC_BUF_LEN = 162 ; Maximum length of command-line +;------------------------------------------------------------------------- +; POKEY Address Equates +;------------------------------------------------------------------------- + +; Read Addresses + +POT0 = POKEY + $00 ;potentiometer 0 +POT1 = POKEY + $01 ;potentiometer 1 +POT2 = POKEY + $02 ;potentiometer 2 +POT3 = POKEY + $03 ;potentiometer 3 +POT4 = POKEY + $04 ;potentiometer 4 +POT5 = POKEY + $05 ;potentiometer 5 +POT6 = POKEY + $06 ;potentiometer 6 +POT7 = POKEY + $07 ;potentiometer 7 + +ALLPOT = POKEY + $08 ;potentiometer port status +KBCODE = POKEY + $09 ;keyboard code +RANDOM = POKEY + $0A ;random number generator +SERIN = POKEY + $0D ;serial port input +IRQST = POKEY + $0E ;IRQ interrupt status +SKSTAT = POKEY + $0F ;serial port and keyboard status + +; Write Addresses + +AUDF1 = POKEY + $00 ;channel 1 audio frequency +AUDC1 = POKEY + $01 ;channel 1 audio control + +AUDF2 = POKEY + $02 ;channel 2 audio frequency +AUDC2 = POKEY + $03 ;channel 2 audio control + +AUDF3 = POKEY + $04 ;channel 3 audio frequency +AUDC3 = POKEY + $05 ;channel 3 audio control + +AUDF4 = POKEY + $06 ;channel 4 audio frequency +AUDC4 = POKEY + $07 ;channel 4 audio control + +AUDCTL = POKEY + $08 ;audio control +STIMER = POKEY + $09 ;start timers +SKRES = POKEY + $0A ;reset SKSTAT status +POTGO = POKEY + $0B ;start potentiometer scan sequence +SEROUT = POKEY + $0D ;serial port output +IRQEN = POKEY + $0E ;IRQ interrupt enable +SKCTL = POKEY + $0F ;serial port and keyboard control + +; +; Ullrich von Bassewitz, 16.05.2000 +; + +; Variables and functions + + .global __errno, __oserror + .global __osmaperrno + .global __seterrno + .global __directerrno, __mappederrno + +; Error codes, must match the values in the C headers +.enum + EOK ; No error + ENOENT ; No such file or directory + ENOMEM ; Out of memory + EACCES ; Permission denied + ENODEV ; No such device + EMFILE ; Too many open files + EBUSY ; Device or resource busy + EINVAL ; Invalid argument + ENOSPC ; No space left on device + EEXIST ; File exists + EAGAIN ; Try again + EIO ; I/O error + EINTR ; Interrupted system call + ENOSYS ; Function not implemented + ESPIPE ; Illegal seek + ERANGE ; Range error + EBADF ; Bad file number + ENOEXEC ; Exec format error + EUNKNOWN ; Unknown OS specific error - must be last! + + EMAX = EUNKNOWN ; Highest error code +.endenum + + +;------------------------------------------------------------------------- +; Atari 5200 System Equates +; by Christian Groessler +; taken from EQUATES.INC from Atari Inc. +;------------------------------------------------------------------------- + +;------------------------------------------------------------------------- +; ATASCII CHARACTER DEFS +;------------------------------------------------------------------------- + +ATEOL = $9B ;END-OF-LINE, used by CONIO + + +;------------------------------------------------------------------------- +; Zero Page +;------------------------------------------------------------------------- + +POKMSK = $00 ;Mask for Pokey IRQ enable +RTCLOK = $01 ;60 hz. clock +JUMP = $01 +CRITIC = $03 ;Critical section +ATRACT = $04 ;Attract Mode + +SDLSTL = $05 ;DLISTL Shadow +SDLSTH = $06 ;DLISTH " +SDMCTL = $07 ;DMACTL " + +PCOLR0 = $08 ;COLPM0 Shadow +PCOLR1 = $09 ;COLPM1 " +PCOLR2 = $0A ;COLPM2 " +PCOLR3 = $0B ;COLPM3 " + +COLOR0 = $0C ;COLPF0 Shadow +COLOR1 = $0D ;COLPF1 " +COLOR2 = $0E ;COLPF2 " +COLOR3 = $0F ;COLPF3 " +COLOR4 = $10 ;COLBK " + +PADDL0 = $11 ;POT0 Shadow +PADDL1 = $12 ;POT1 " +PADDL2 = $13 ;POT2 " +PADDL3 = $14 ;POT3 " +PADDL4 = $15 ;POT4 " +PADDL5 = $16 ;POT5 " +PADDL6 = $17 ;POT6 " +PADDL7 = $18 ;POT7 " + +; cc65 runtime zero page variables + +ROWCRS_5200 = $19 +COLCRS_5200 = $1A +SAVMSC = $1B ; pointer to screen memory (conio) + +;------------------------------------------------------------------------- +; Page #2 +;------------------------------------------------------------------------- + +;Interrupt Vectors + +VIMIRQ = $0200 ;Immediate IRQ + ;Preset $FC03 (SYSIRQ) +VVBLKI = $0202 ;Vblank immediate + ;Preset $FCB8 (SYSVBL) +VVBLKD = $0204 ;Vblank deferred + ;Preset $FCB2 (XITVBL) +VDSLST = $0206 ;Display List + ;Preset $FEA1 (OSDLI) +VKYBDI = $0208 ;Keyboard immediate + ;Preset $FD02 (SYSKBD) +VKYBDF = $020A ;Deferred Keyboard + ;Preset $FCB2 (XITVBL) +VTRIGR = $020C ;Soft Trigger +VBRKOP = $020E ;BRK Opcode +VSERIN = $0210 ;Serial in Ready +VSEROR = $0212 ;Serial Out Ready +VSEROC = $0214 ;Serial Output complete +VTIMR1 = $0216 ;Pokey Timer 1 +VTIMR2 = $0218 ;Pokey Timer 2 +VTIMR4 = $021A ;Pokey Timer 4 + + + +;------------------------------------------------------------------------- +; CTIA/GTIA Address Equates +;------------------------------------------------------------------------- + +GTIA = $C000 ;CTIA/GTIA area +.include "atari_gtia.inc" + +;------------------------------------------------------------------------- +; ANTIC Address Equates +;------------------------------------------------------------------------- + +ANTIC = $D400 ;ANTIC area +.include "atari_antic.inc" + +;------------------------------------------------------------------------- +; POKEY Address Equates +;------------------------------------------------------------------------- + +POKEY = $E800 ;POKEY area +.include "atari_pokey.inc" + + +;------------------------------------------------------------------------- +; Cartridge Parameters +;------------------------------------------------------------------------- + +CARTNM = $BFE8 ;Cartridge Name Area +COPYD = $BFFC ;Copyright Decade in Cart +COPYR = $BFFD ;Copyright Year in Cart + ; $FF=Diagnostic Cart +GOCART = $BFFE ;Cartridge Start Vector + + +CHRORG = $F800 ;Character Generator Base +;*****************************************************************************/ +;* */ +;* stdio.inc */ +;* */ +;* Mirror definitions for stdio.h */ +;* */ +;* */ +;* */ +;* (C) 2003-2005, Ullrich von Bassewitz */ +;* Römerstrasse 52 */ +;* D-70794 Filderstadt */ +;* EMail: uz@cc65.org */ +;* */ +;* */ +;* This software is provided 'as-is', without any expressed or implied */ +;* warranty. In no event will the authors be held liable for any damages */ +;* arising from the use of this software. */ +;* */ +;* Permission is granted to anyone to use this software for any purpose, */ +;* including commercial applications, and to alter it and redistribute it */ +;* freely, subject to the following restrictions: */ +;* */ +;* 1. The origin of this software must not be misrepresented; you must not */ +;* claim that you wrote the original software. If you use this software */ +;* in a product, an acknowledgment in the product documentation would be */ +;* appreciated but is not required. */ +;* 2. Altered source versions must be plainly marked as such, and must not */ +;* be misrepresented as being the original software. */ +;* 3. This notice may not be removed or altered from any source */ +;* distribution. */ +;* */ +;*****************************************************************************/ + + + +;---------------------------------------------------------------------------- +; Constants + +_IOFBF = 0 +_IOLBF = 1 +_IONBF = 2 +BUFSIZ = 256 +EOF = -1 +.if .defined(__APPLE2__) +FILENAME_MAX = 64+1 +.elseif .defined(__ATARI__) +FILENAME_MAX = 12+1 +.elseif .defined(__LUNIX__) +FILENAME_MAX = 80+1 +.else +FILENAME_MAX = 16+1 +.endif +L_tmpnam = FILENAME_MAX +SEEK_CUR = 0 +SEEK_END = 1 +SEEK_SET = 2 +TMP_MAX = 256 + +; Maximum number of open files (size of the file table) +FOPEN_MAX = 8 + +;---------------------------------------------------------------------------- +; External variables + + .global _stdin + .global _stdout + .global _stderr + + + +; +; Zero page variables and I/O definitions for the CBM 510 +; +; Taken from a kernal disassembly done by myself in 2000/2001. +; +; 2001-09-13, Ullrich von Bassewitz +; 2014-04-02, Greg King + + +;----------------------------------------------------------------------------- +; Zeropage stuff + +ExecReg := $00 ; Controls execution memory bank +IndReg := $01 ; Controls indirect indexed load-store bank + +TXTPTR := $85 ; Far pointer into BASIC source code +FNAM := $90 ; Far pointer to LOAD/SAVE file-name +FNAM_LEN := $9D ; Holds length of file-name + +; --------------------------------------------------------------------------- +; Screen size + +XSIZE = 40 +YSIZE = 25 + +;----------------------------------------------------------------------------- +; I/O Definitions +; Note: These numbers aren't addresses. They are offsets from the start of +; each chip's register set. They are used in the indirect indexed addressing +; mode. + +; I/O $d800: VIC-II + +VIC_SPR0_X = $00 +VIC_SPR0_Y = $01 +VIC_SPR1_X = $02 +VIC_SPR1_Y = $03 +VIC_SPR2_X = $04 +VIC_SPR2_Y = $05 +VIC_SPR3_X = $06 +VIC_SPR3_Y = $07 +VIC_SPR4_X = $08 +VIC_SPR4_Y = $09 +VIC_SPR5_X = $0A +VIC_SPR5_Y = $0B +VIC_SPR6_X = $0C +VIC_SPR6_Y = $0D +VIC_SPR7_X = $0E +VIC_SPR7_Y = $0F +VIC_SPR_HI_X = $10 +VIC_SPR_ENA = $15 +VIC_SPR_EXP_Y = $17 +VIC_SPR_EXP_X = $1D +VIC_SPR_MCOLOR = $1C +VIC_SPR_BG_PRIO = $1B + +VIC_SPR_MCOLOR0 = $25 +VIC_SPR_MCOLOR1 = $26 + +VIC_SPR0_COLOR = $27 +VIC_SPR1_COLOR = $28 +VIC_SPR2_COLOR = $29 +VIC_SPR3_COLOR = $2A +VIC_SPR4_COLOR = $2B +VIC_SPR5_COLOR = $2C +VIC_SPR6_COLOR = $2D +VIC_SPR7_COLOR = $2E + +VIC_CTRL1 = $11 +VIC_CTRL2 = $16 + +VIC_HLINE = $12 + +VIC_LPEN_X = $13 +VIC_LPEN_Y = $14 + +VIC_VIDEO_ADR = $18 + +VIC_IRR = $19 ; Interrupt request register +VIC_IMR = $1A ; Interrupt mask register + +VIC_BORDERCOLOR = $20 +VIC_BG_COLOR0 = $21 +VIC_BG_COLOR1 = $22 +VIC_BG_COLOR2 = $23 +VIC_BG_COLOR3 = $24 + + +; I/O $da00: SID 6581 + +SID_S1Lo = $00 +SID_S1Hi = $01 +SID_PB1Lo = $02 +SID_PB1Hi = $03 +SID_Ctl1 = $04 +SID_AD1 = $05 +SID_SUR1 = $06 + +SID_S2Lo = $07 +SID_S2Hi = $08 +SID_PB2Lo = $09 +SID_PB2Hi = $0A +SID_Ctl2 = $0B +SID_AD2 = $0C +SID_SUR2 = $0D + +SID_S3Lo = $0E +SID_S3Hi = $0F +SID_PB3Lo = $10 +SID_PB3Hi = $11 +SID_Ctl3 = $12 +SID_AD3 = $13 +SID_SUR3 = $14 + +SID_FltLo = $15 +SID_FltHi = $16 +SID_FltCtl = $17 +SID_Amp = $18 +SID_ADConv1 = $19 +SID_ADConv2 = $1A +SID_Noise = $1B +SID_Read3 = $1C + + +; I/O $db00: CIA 6526, Inter Process Communication +; I/O $dc00: CIA 6526 + +.struct CIA + PRA .byte + PRB .byte + DDRA .byte + DDRB .byte + .union + .struct + TALO .byte + TAHI .byte + .endstruct + TA .word + .endunion + .union + .struct + TBLO .byte + TBHI .byte + .endstruct + TB .word + .endunion + TOD10 .byte + TODSEC .byte + TODMIN .byte + TODHR .byte + SDR .byte + ICR .byte + CRA .byte + CRB .byte +.endstruct + + +; I/O $dd00: ACIA 6551 + +.struct ACIA + DATA .byte + STATUS .byte + CMD .byte + CTRL .BYTE +.endstruct + + +; I/O $de00: Triport #1 6525 +; I/O $df00: Triport #2 6525 + +.struct TPI + PRA .byte + PRB .byte + .union + PRC .byte + INT .byte + .endunion + DDRA .byte + DDRB .byte + .union + DDRC .byte + IMR .byte + .endunion + CR .byte + AIR .byte +.endstruct + + +;----------------------------------------------------------------------------- +; Our video memory address + +COLOR_RAM := $D400 ; System bank + + +;----------------------------------------------------------------------------- + +BASIC_BUF := $FB5E ; Bank 0 location of command-line +BASIC_BUF_LEN = 162 ; Maximum length of command-line +;------------------------------------------------------------------------------- +; gamate.inc +; +; Gamate system specific definitions +; +; (w) 2015 Groepaz/Hitmen (groepaz@gmx.net) +; based on technical reference by PeT (mess@utanet.at) +;------------------------------------------------------------------------------- + +; look at gamate.h for comments, they are not duplicated here + +AUDIO_BASE = $4000 + +JOY_DATA = $4400 + +JOY_DATA_UP = $01 +JOY_DATA_DOWN = $02 +JOY_DATA_LEFT = $04 +JOY_DATA_RIGHT = $08 +JOY_DATA_FIRE_A = $10 +JOY_DATA_FIRE_B = $20 +JOY_DATA_START = $40 +JOY_DATA_SELECT = $80 + +LCD_WIDTH = 160 +LCD_HEIGHT = 152 + +LCD_BASE = $5000 +LCD_MODE = $5001 +LCD_XPOS = $5002 +LCD_YPOS = $5003 +LCD_X = $5004 +LCD_Y = $5005 +LCD_READ = $5006 +LCD_DATA = $5007 + +LCD_MODE_INC_X = $00 +LCD_MODE_INC_Y = $40 +LCD_XPOS_PLANE1 = $00 +LCD_XPOS_PLANE2 = $80 + +; constants for the conio implementation +charsperline = (LCD_WIDTH / 8) +screenrows = (LCD_HEIGHT / 8) + +CH_HLINE = 1 +CH_VLINE = 2 + +COLOR_WHITE = 0 +COLOR_GREY2 = 1 +COLOR_GREY1 = 2 +COLOR_BLACK = 3 + +; bios zp usage: +ZP_NMI_4800 = $0a +ZP_IRQ_COUNT = $0b +ZP_IRQ_CTRL = $0c + +ZP_IRQ_CNT1 = $0e +ZP_IRQ_CNT2 = $0f +ZP_IRQ_CNT3 = $10 +ZP_IRQ_CNT4 = $11 + +ZP_NMI_FLAG = $e8 +;*****************************************************************************/ +;* */ +;* tgi-vectorfont.inc */ +;* */ +;* TGI vector font definitions */ +;* */ +;* */ +;* */ +;* (C) 2009, Ullrich von Bassewitz */ +;* Roemerstrasse 52 */ +;* D-70794 Filderstadt */ +;* EMail: uz@cc65.org */ +;* */ +;* */ +;* This software is provided 'as-is', without any expressed or implied */ +;* warranty. In no event will the authors be held liable for any damages */ +;* arising from the use of this software. */ +;* */ +;* Permission is granted to anyone to use this software for any purpose, */ +;* including commercial applications, and to alter it and redistribute it */ +;* freely, subject to the following restrictions: */ +;* */ +;* 1. The origin of this software must not be misrepresented; you must not */ +;* claim that you wrote the original software. If you use this software */ +;* in a product, an acknowledgment in the product documentation would be */ +;* appreciated but is not required. */ +;* 2. Altered source versions must be plainly marked as such, and must not */ +;* be misrepresented as being the original software. */ +;* 3. This notice may not be removed or altered from any source */ +;* distribution. */ +;* */ +;*****************************************************************************/ + + + +;------------------------------------------------------------------------------ +; Vectorfont constants + +TGI_VF_VERSION = $00 ; File version number +TGI_VF_FIRSTCHAR = $20 ; First char in file +TGI_VF_LASTCHAR = $7E ; Last char in file +TGI_VF_CCOUNT = (TGI_VF_LASTCHAR - TGI_VF_FIRSTCHAR + 1) + +;------------------------------------------------------------------------------ +; TCH file header and font data structures + +; TCH file header +.struct TGI_VF_HDR + MAGIC .byte 3 ; "TCH" + VERSION .byte 1 ; Version number + SIZE .word 1 ; Font data size +.endstruct + +; Font data loaded directly from file +.struct TGI_VECTORFONT + TOP .byte ; Height of char + BOTTOM .byte ; Descender + HEIGHT .byte ; Maximum char height + WIDTHS .byte ::TGI_VF_CCOUNT ; Char widths + CHARS .word ::TGI_VF_CCOUNT ; Pointer to character defs + OPS .byte ; Actually dynamic +.endstruct + +;------------------------------------------------------------------------------ +; C callable functions + + .global _tgi_vectorchar + + + +.ifndef DYN_DRV + DYN_DRV = 1 +.endif + +.macro module_header module_label + .if DYN_DRV + .segment "HEADER" + .else + .data + .export module_label + module_label: + .endif +.endmacro +;*****************************************************************************/ +;* */ +;* o65.inc */ +;* */ +;* Definitions for the o65 file format */ +;* */ +;* */ +;* */ +;* (C) 2002-2009, Ullrich von Bassewitz */ +;* Roemerstrasse 52 */ +;* D-70794 Filderstadt */ +;* EMail: uz@cc65.org */ +;* */ +;* */ +;* This software is provided 'as-is', without any expressed or implied */ +;* warranty. In no event will the authors be held liable for any damages */ +;* arising from the use of this software. */ +;* */ +;* Permission is granted to anyone to use this software for any purpose, */ +;* including commercial applications, and to alter it and redistribute it */ +;* freely, subject to the following restrictions: */ +;* */ +;* 1. The origin of this software must not be misrepresented; you must not */ +;* claim that you wrote the original software. If you use this software */ +;* in a product, an acknowledgment in the product documentation would be */ +;* appreciated but is not required. */ +;* 2. Altered source versions must be plainly marked as such, and must not */ +;* be misrepresented as being the original software. */ +;* 3. This notice may not be removed or altered from any source */ +;* distribution. */ +;* */ +;*****************************************************************************/ + + + +; This files exports structures and constants to handle the o65 relocatable +; file format as defined by Andre Fachat. + + + +; The o65 header structure (6502 format) +.struct O65_HDR + MARKER .byte 2 ; Non-C64 marker: $01 $00 + MAGIC .byte 3 ; o65 magic: "o65" + VERSION .byte 1 ; Version number + MODE .word ; Mode word + TBASE .word ; Original text (code) segment address + TLEN .word ; Size of text (code) segment + DBASE .word ; Original data segment address + DLEN .word ; Size of data segment + BBASE .word ; Original bss segment address + BLEN .word ; Size of bss segment + ZBASE .word ; Original zp segment address + ZLEN .word ; Size of zp segment + STACK .word ; Stacksize needed +.endstruct + +; Marker, magic and version number +O65_MARKER_0 = $01 +O65_MARKER_1 = $00 +O65_MAGIC_0 = $6F ; 'o' +O65_MAGIC_1 = $36 ; '6' +O65_MAGIC_2 = $35 ; '5' +O65_VERSION = $00 + +; Defines for the mode word +O65_CPU_65816 = $8000 ; Executable is for 65816 +O65_CPU_6502 = $0000 ; Executable is for the 6502 +O65_CPU_MASK = $8000 ; Mask to extract CPU type + +O65_RELOC_PAGE = $4000 ; Page wise relocation +O65_RELOC_BYTE = $0000 ; Byte wise relocation +O65_RELOC_MASK = $4000 ; Mask to extract relocation type + +O65_SIZE_32BIT = $2000 ; All size words are 32bit +O65_SIZE_16BIT = $0000 ; All size words are 16bit +O65_SIZE_MASK = $2000 ; Mask to extract size + +O65_FTYPE_OBJ = $1000 ; Object file +O65_FTYPE_EXE = $0000 ; Executable file +O65_FTYPE_MASK = $1000 ; Mask to extract type + +O65_ADDR_SIMPLE = $0800 ; Simple addressing +O65_ADDR_DEFAULT = $0000 ; Default addressing +O65_ADDR_MASK = $0800 ; Mask to extract addressing + +O65_CHAIN = $0400 ; Chained file, another one follows +O65_CHAIN_MASK = $0400 ; Mask to extract chain flag + +O65_BSSZERO = $0200 ; BSS segment must be zeroed +O65_BSSZERO_MASK = $0200 ; Mask to extract bss zero flag + +; The following is used if O65_CPU == 6502 +O65_CPU2_6502 = $0000 ; Executable is for 6502 +O65_CPU2_65C02 = $0010 ; Executable is for 65C02 +O65_CPU2_65SC02 = $0020 ; Executable is for 65SC02 +O65_CPU2_65CE02 = $0030 ; Executable is for 65CE02 +O65_CPU2_6502X = $0040 ; Executable is for NMOS 6502 +O65_CPU2_65816_EMU = $0050 ; Executable is for 65816 in emul mode +O65_CPU2_MASK = $00F0 ; Mask to extract CPU2 field + +O65_ALIGN_1 = $0000 ; Bytewise alignment +O65_ALIGN_2 = $0001 ; Align words +O65_ALIGN_4 = $0002 ; Align longwords +O65_ALIGN_256 = $0003 ; Align pages (256 bytes) +O65_ALIGN_MASK = $0003 ; Mask to extract alignment + +; The mode word as generated by the ld65 linker +O65_MODE_CC65 = O65_CPU_6502 | O65_RELOC_BYTE | O65_SIZE_16BIT | O65_FTYPE_EXE | O65_ADDR_SIMPLE | O65_ALIGN_1 + +; Relocation type codes +O65_RTYPE_WORD = $80 +O65_RTYPE_HIGH = $40 +O65_RTYPE_LOW = $20 +O65_RTYPE_SEGADDR = $C0 +O65_RTYPE_SEG = $A0 +O65_RTYPE_MASK = $E0 + +; Segment IDs +O65_SEGID_UNDEF = $00 +O65_SEGID_ABS = $01 +O65_SEGID_TEXT = $02 +O65_SEGID_DATA = $03 +O65_SEGID_BSS = $04 +O65_SEGID_ZP = $05 +O65_SEGID_MASK = $07 + +; Option tags +O65_OPT_FILENAME = 0 +O65_OPT_OS = 1 +O65_OPT_ASM = 2 +O65_OPT_AUTHOR = 3 +O65_OPT_TIMESTAMP = 4 + +; Operating system codes for O65_OPT_OS +O65_OS_OSA65 = 1 +O65_OS_LUNIX = 2 +O65_OS_CC65 = 3 +O65_OS_OPENCBM = 4 + +; Load errors +O65_LOAD_OK = 0 ; Module load successful +O65_LOAD_ERR_READ = 1 ; Read error +O65_LOAD_ERR_HDR = 2 ; Header error +O65_LOAD_ERR_OS = 3 ; Wrong OS +O65_LOAD_ERR_FMT = 4 ; Data format error +O65_LOAD_ERR_MEM = 5 ; Not enough memory + + + +;/*****************************************************************************/ +;/* */ +;/* joy-kernel.inc */ +;/* */ +;/* Internally used joystick functions */ +;/* */ +;/* */ +;/* */ +;/* (C) 2002-2006, Ullrich von Bassewitz */ +;/* Römerstraße 52 */ +;/* D-70794 Filderstadt */ +;/* EMail: uz@cc65.org */ +;/* */ +;/* */ +;/* This software is provided 'as-is', without any expressed or implied */ +;/* warranty. In no event will the authors be held liable for any damages */ +;/* arising from the use of this software. */ +;/* */ +;/* Permission is granted to anyone to use this software for any purpose, */ +;/* including commercial applications, and to alter it and redistribute it */ +;/* freely, subject to the following restrictions: */ +;/* */ +;/* 1. The origin of this software must not be misrepresented; you must not */ +;/* claim that you wrote the original software. If you use this software */ +;/* in a product, an acknowledgment in the product documentation would be */ +;/* appreciated but is not required. */ +;/* 2. Altered source versions must be plainly marked as such, and must not */ +;/* be misrepresented as being the original software. */ +;/* 3. This notice may not be removed or altered from any source */ +;/* distribution. */ +;/* */ +;/*****************************************************************************/ + + + + + + +;------------------------------------------------------------------------------ +; Driver header stuff + +.struct JOY_HDR + ID .byte 3 ; $6A, $6F, $79 ("joy") + VERSION .byte 1 ; Interface version + LIBREF .addr ; Library reference + MASKS .byte 8 ; Joystick state mask array + JUMPTAB .struct + INSTALL .addr ; INSTALL routine + UNINSTALL .addr ; UNINSTALL routine + COUNT .addr ; COUNT routine + READ .addr ; READ routine + IRQ .addr ; IRQ routine + .endstruct +.endstruct + +;------------------------------------------------------------------------------ +; The JOY API version, stored in JOY_HDR::VERSION + +JOY_API_VERSION = $03 + +;------------------------------------------------------------------------------ +; Variables + + .global _joy_drv ; Pointer to driver + .global _joy_masks + +;------------------------------------------------------------------------------ +; Driver entry points + + .global joy_install + .global joy_uninstall + .global joy_count + .global joy_read + +;------------------------------------------------------------------------------ +; C callable functions + + .global _joy_load_driver + .global _joy_unload + .global _joy_install + .global _joy_uninstall + .global _joy_count + .global _joy_read + + .global _joy_clear_ptr +;/*****************************************************************************/ +;/* */ +;/* utsname.inc */ +;/* */ +;/* Return system information */ +;/* */ +;/* */ +;/* */ +;/* (C) 2003 Ullrich von Bassewitz */ +;/* Römerstrasse 52 */ +;/* D-70794 Filderstadt */ +;/* EMail: uz@cc65.org */ +;/* */ +;/* */ +;/* This software is provided 'as-is', without any expressed or implied */ +;/* warranty. In no event will the authors be held liable for any damages */ +;/* arising from the use of this software. */ +;/* */ +;/* Permission is granted to anyone to use this software for any purpose, */ +;/* including commercial applications, and to alter it and redistribute it */ +;/* freely, subject to the following restrictions: */ +;/* */ +;/* 1. The origin of this software must not be misrepresented; you must not */ +;/* claim that you wrote the original software. If you use this software */ +;/* in a product, an acknowledgment in the product documentation would be */ +;/* appreciated but is not required. */ +;/* 2. Altered source versions must be plainly marked as such, and must not */ +;/* be misrepresented as being the original software. */ +;/* 3. This notice may not be removed or altered from any source */ +;/* distribution. */ +;/* */ +;/*****************************************************************************/ + + + +; Struct utsname +.struct utsname + sysname .byte 17 + nodename .byte 9 + release .byte 9 + version .byte 9 + machine .byte 25 +.endstruct + + + +; smc.mac +; ca65 Macro-Pack for Self Modifying Code (SMC) +; +; (c) Christian Krüger, latest change: 17-Jul-2016 +; +; This software is provided 'as-is', without any expressed or implied +; warranty. In no event will the authors be held liable for any damages +; arising from the use of this software. +; +; Permission is granted to anyone to use this software for any purpose, +; including commercial applications, and to alter it and redistribute it +; freely, subject to the following restrictions: +; +; 1. The origin of this software must not be misrepresented; you must not +; claim that you wrote the original software. If you use this software +; in a product, an acknowledgment in the product documentation would be +; appreciated but is not required. +; 2. Altered source versions must be plainly marked as such, and must not +; be misrepresented as being the original software. +; 3. This notice may not be removed or altered from any source +; distribution. +; + +.define _SMCDesignator .mid(0, .tcount(label) - 1, label) .ident(.concat(.string(.right(1, label)), "_SMC")) +.define _SMCAlias .mid(0, .tcount(alias) - 1, alias) .ident(.concat(.string(.right(1, alias)), "_SMC")) +.define SMC_AbsAdr $FADE +.define SMC_ZpAdr $00 +.define SMC_Opcode nop +.define SMC_Value $42 + +.macro SMC_OperateOnValue opcode, label + opcode _SMCDesignator+1 +.endmacro + +.macro SMC_OperateOnLowByte opcode, label + SMC_OperateOnValue opcode, label +.endmacro + +.macro SMC_OperateOnHighByte opcode, label + opcode _SMCDesignator + 2 +.endmacro + +.macro SMC_Import alias +.import _SMCAlias +.endmacro + +.macro SMC_Export alias, label +.export _SMCAlias := _SMCDesignator +.endmacro + +.macro SMC label, statement +_SMCDesignator: statement +.endmacro + +.macro SMC_TransferOpcode label, opcode, register +.if .paramcount = 2 .or .match ({register}, a) .or .match ({register}, ) + lda #opcode + sta _SMCDesignator +.elseif .match ({register}, x) + ldx #opcode + stx _SMCDesignator +.elseif .match ({register}, y) + ldy #opcode + sty _SMCDesignator +.else + .error "Invalid usage of macro 'SMC_TransferOpcode'" +.endif +.endmacro + +.macro SMC_LoadOpcode label, register +.if .paramcount = 1 .or .match ({register}, a) .or .match ({register}, ) + lda _SMCDesignator +.elseif .match ({register}, x) + ldx _SMCDesignator +.elseif .match ({register}, y) + ldy _SMCDesignator +.else + .error "Invalid usage of macro 'SMC_LoadOpcode'" +.endif +.endmacro + +.macro SMC_StoreOpcode label, register +.if .paramcount = 1 .or .match ({register}, a) .or .match ({register}, ) + sta _SMCDesignator +.elseif .match ({register}, x) + stx _SMCDesignator +.elseif .match ({register}, y) + sty _SMCDesignator +.else + .error "Invalid usage of macro 'SMC_StoreOpcode'" +.endif +.endmacro + +.macro SMC_ChangeBranch label, destination, register +.if .paramcount = 2 .or .match ({register}, a) .or .match ({register}, ) + lda #(<(destination - _SMCDesignator -2)) + sta _SMCDesignator+1 +.elseif .match ({register}, x) + ldx #(<(destination - _SMCDesignator - 2)) + stx _SMCDesignator+1 +.elseif .match ({register}, y) + ldy #(<(destination - _SMCDesignator - 2)) + sty _SMCDesignator+1 +.else + .error "Invalid usage of macro 'SMC_ChangeBranch'" +.endif +.endmacro + +.macro SMC_TransferValue label, value, register +.if .paramcount = 2 .or .match ({register}, a) .or .match ({register}, ) + lda value + sta _SMCDesignator+1 +.elseif .match ({register}, x) + ldx value + stx _SMCDesignator+1 +.elseif .match ({register}, y) + ldy value + sty _SMCDesignator+1 +.else + .error "Invalid usage of macro 'SMC_TransferValue'" +.endif +.endmacro + +.macro SMC_LoadValue label, register +.if .paramcount = 1 .or .match ({register}, a) .or .match ({register}, ) + lda _SMCDesignator+1 +.elseif .match ({register}, x) + ldx _SMCDesignator+1 +.elseif .match ({register}, y) + ldy _SMCDesignator+1 +.else + .error "Invalid usage of macro 'SMC_LoadValue'" +.endif +.endmacro + +.macro SMC_StoreValue label, register +.if .paramcount = 1 .or .match ({register}, a) .or .match ({register}, ) + sta _SMCDesignator+1 +.elseif .match ({register}, x) + stx _SMCDesignator+1 +.elseif .match ({register}, y) + sty _SMCDesignator+1 +.else + .error "Invalid usage of macro 'SMC_StoreValue'" +.endif +.endmacro + + +.macro SMC_TransferLowByte label, value, register +SMC_TransferValue label, value, register +.endmacro + +.macro SMC_LoadLowByte label, register +SMC_LoadValue label, register +.endmacro + +.macro SMC_StoreLowByte label, register +SMC_StoreValue label, register +.endmacro + +.macro SMC_TransferHighByte label, value, register +.if .paramcount = 2 .or .match ({register}, a) .or .match ({register}, ) + lda value + sta _SMCDesignator+2 +.elseif .match ({register}, x) + ldx value + stx _SMCDesignator+2 +.elseif .match ({register}, y) + ldy value + sty _SMCDesignator+2 +.else + .error "Invalid usage of macro 'SMC_TransferHighByte'" +.endif +.endmacro + +.macro SMC_LoadHighByte label, register +.if .paramcount = 1 .or .match ({register}, a) .or .match ({register}, ) + lda _SMCDesignator+2 +.elseif .match ({register}, x) + ldx _SMCDesignator+2 +.elseif .match ({register}, y) + ldy _SMCDesignator+2 +.else + .error "Invalid usage of macro 'SMC_LoadHighByte'" +.endif +.endmacro + +.macro SMC_StoreHighByte label, register +.if .paramcount = 1 .or .match ({register}, a) .or .match ({register}, ) + sta _SMCDesignator+2 +.elseif .match ({register}, x) + stx _SMCDesignator+2 +.elseif .match ({register}, y) + sty _SMCDesignator+2 +.else + .error "Invalid usage of macro 'SMC_StoreHighByte'" +.endif +.endmacro + +.macro SMC_TransferAddressSingle label, address, register +.if .paramcount = 2 .or .match ((register), a) .or .match ({register}, ) + .if (.match (.left (1, {address}), #)) + ; immediate mode + lda #<(.right (.tcount ({address})-1, {address})) + sta _SMCDesignator+1 + lda #>(.right (.tcount ({address})-1, {address})) + sta _SMCDesignator+2 + .else + ; assume absolute or zero page + lda address + sta _SMCDesignator+1 + lda 1+(address) + sta _SMCDesignator+2 + .endif +.elseif .match ((register), x) + .if (.match (.left (1, {address}), #)) + ; immediate mode + ldx #<(.right (.tcount ({address})-1, {address})) + stx _SMCDesignator+1 + ldx #>(.right (.tcount ({address})-1, {address})) + stx _SMCDesignator+2 + .else + ; assume absolute or zero page + ldx address + stx _SMCDesignator+1 + ldx 1+(address) + stx _SMCDesignator+2 + .endif +.elseif .match ((register), y) + .if (.match (.left (1, {address}), #)) + ; immediate mode + ldy #<(.right (.tcount ({address})-1, {address})) + sty _SMCDesignator+1 + ldy #>(.right (.tcount ({address})-1, {address})) + sty _SMCDesignator+2 + .else + ; assume absolute or zero page + ldy address + sty _SMCDesignator+1 + ldy 1+(address) + sty _SMCDesignator+2 + .endif +.else + .error "Invalid usage of macro 'SMC_TransferAddressSingle'" +.endif +.endmacro + +.macro SMC_TransferAddress label, address +.if (.match (.left (1, {address}), #)) + ; immediate mode + lda #<(.right (.tcount ({address})-1, {address})) + sta _SMCDesignator+1 + ldx #>(.right (.tcount ({address})-1, {address})) + stx _SMCDesignator+2 +.else + ; assume absolute or zero page + lda {address} + sta _SMCDesignator+1 + ldx 1+{address} + stx _SMCDesignator)+2 +.endif +.endmacro + +.macro SMC_StoreAddress label + sta _SMCDesignator+1 + stx _SMCDesignator+2 +.endmacro +; +; C16 generic definitions. +; +; The C16 and Plus/4 are identical, so just include the Plus/4 include file. + + +.include "plus4.inc" + + +; CPU bitmask constants +CPU_ISET_NONE = $0001 +CPU_ISET_6502 = $0002 +CPU_ISET_6502X = $0004 +CPU_ISET_65SC02 = $0008 +CPU_ISET_65C02 = $0010 +CPU_ISET_65816 = $0020 +CPU_ISET_SWEET16 = $0040 +CPU_ISET_HUC6280 = $0080 +;CPU_ISET_M740 = $0100 not actually implemented +CPU_ISET_4510 = $0200 + +; CPU capabilities +CPU_NONE = CPU_ISET_NONE +CPU_6502 = CPU_ISET_6502 +CPU_6502X = CPU_ISET_6502|CPU_ISET_6502X +CPU_65SC02 = CPU_ISET_6502|CPU_ISET_65SC02 +CPU_65C02 = CPU_ISET_6502|CPU_ISET_65SC02|CPU_ISET_65C02 +CPU_65816 = CPU_ISET_6502|CPU_ISET_65SC02|CPU_ISET_65816 +CPU_SWEET16 = CPU_ISET_SWEET16 +CPU_HUC6280 = CPU_ISET_6502|CPU_ISET_65SC02|CPU_ISET_65C02|CPU_ISET_HUC6280 +CPU_4510 = CPU_ISET_6502|CPU_ISET_65SC02|CPU_ISET_65C02|CPU_ISET_4510 +; Convert characters to screen codes + +; Helper macro that converts and outputs one character +.macro _scrcode char + .if (char < 256) + .byte <(.strat ("h@dbdlhh", char >> 5) << 4) ^ char + .else + .error "scrcode: Character constant out of range" + .endif +.endmacro + +.macro scrcode arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 + + ; Bail out if next argument is empty + .if .blank ({arg1}) + .exitmacro + .endif + + ; Check for a string + .if .match ({arg1}, "") + + ; Walk over all string chars + .repeat .strlen (arg1), i + _scrcode {.strat (arg1, i)} + .endrepeat + + ; Check for a number + .elseif .match (.left (1, {arg1}), 0) + + ; Just output the number + _scrcode arg1 + + ; Check for a character + .elseif .match (.left (1, {arg1}), 'a') + + ; Just output the character + _scrcode arg1 + + ; Anything else is an error + .else + + .error "scrcode: invalid argument type" + + .endif + + ; Call the macro recursively with the remaining args + scrcode arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 +.endmacro + + +; opcodes.inc +; ca65 6502 - opcode definitions, mainly for self modifying code +; +; Christian Krüger, latest change: 18-Sep-2010 +; +; This software is provided 'as-is', without any expressed or implied +; warranty. In no event will the authors be held liable for any damages +; arising from the use of this software. +; +; Permission is granted to anyone to use this software for any purpose, +; including commercial applications, and to alter it and redistribute it +; freely, subject to the following restrictions: +; +; 1. The origin of this software must not be misrepresented; you must not +; claim that you wrote the original software. If you use this software +; in a product, an acknowledgment in the product documentation would be +; appreciated but is not required. +; 2. Altered source versions must be plainly marked as such, and must not +; be misrepresented as being the original software. +; 3. This notice may not be removed or altered from any source +; distribution. +; + +; Opcode-Table +; ------------ +; Post fix explanation: +; imm = #$00 +; zp = $00 +; zpx = $00,X +; zpy = $00,Y +; izp = ($00) +; izx = ($00,X) +; izy = ($00),Y +; abs = $0000 +; abx = $0000,X +; aby = $0000,Y +; ind = ($0000) +; iax = ($0000,X) +; rel = $0000 (PC-relative) (supressed here) + +.macpack cpu + +OPC_BRK = $00 +OPC_ORA_izx = $01 +OPC_ORA_zp = $05 +OPC_ASL_zp = $06 +OPC_PHP = $08 +OPC_ORA_imm = $09 +OPC_ASL = $0A +OPC_ORA_abs = $0D +OPC_ASL_abs = $0E + +OPC_BPL = $10 +OPC_ORA_izy = $11 +OPC_ORA_zpx = $15 +OPC_ASL_zpx = $16 +OPC_CLC = $18 +OPC_ORA_aby = $19 +OPC_ORA_abx = $1D +OPC_ASL_abx = $1E + +OPC_JSR_abs = $20 +OPC_AND_izx = $21 +OPC_BIT_zp = $24 +OPC_AND_zp = $25 +OPC_ROL_zp = $26 +OPC_PLP = $28 +OPC_AND_imm = $29 +OPC_ROL = $2A +OPC_BIT_abs = $2C +OPC_AND_abs = $2D +OPC_ROL_abs = $2E + +OPC_BMI = $30 +OPC_AND_izy = $31 +OPC_AND_zpx = $35 +OPC_ROL_zpx = $36 +OPC_SEC = $38 +OPC_AND_aby = $39 +OPC_AND_abx = $3D +OPC_ROL_abx = $3E + + +OPC_RTI = $40 +OPC_EOR_izx = $41 +OPC_EOR_zp = $45 +OPC_LSR_zp = $46 +OPC_PHA = $48 +OPC_EOR_imm = $49 +OPC_LSR = $4A +OPC_JMP_abs = $4C +OPC_EOR_abs = $4D +OPC_LSR_abs = $4E + +OPC_BVC = $50 +OPC_EOR_izy = $51 +OPC_EOR_zpx = $55 +OPC_LSR_zpx = $56 +OPC_CLI = $58 +OPC_EOR_aby = $59 +OPC_EOR_abx = $5D +OPC_LSR_abx = $5E + +OPC_RTS = $60 +OPC_ADC_izx = $61 +OPC_ADC_zp = $65 +OPC_ROR_zp = $66 +OPC_PLA = $68 +OPC_ADC_imm = $69 +OPC_ROR = $6A +OPC_JMP_ind = $6C +OPC_ADC_abs = $6D +OPC_ROR_abs = $6E + +OPC_BVS = $70 +OPC_ADC_izy = $71 +OPC_ADC_zpx = $75 +OPC_ROR_zpx = $76 +OPC_SEI = $78 +OPC_ADC_aby = $79 +OPC_ADC_abx = $7D +OPC_ROR_abx = $7E + +OPC_STA_izx = $81 +OPC_STY_zp = $84 +OPC_STA_zp = $85 +OPC_STX_zp = $86 +OPC_DEY = $88 +OPC_TXA = $8A +OPC_STY_abs = $8C +OPC_STA_abs = $8D +OPC_STX_abs = $8E + +OPC_BCC = $90 +OPC_STA_izy = $91 +OPC_STY_zpx = $94 +OPC_STA_zpx = $95 +OPC_STX_zpy = $96 +OPC_TYA = $98 +OPC_STA_aby = $99 +OPC_TXS = $9A +OPC_STA_abx = $9D + +OPC_LDY_imm = $A0 +OPC_LDA_izx = $A1 +OPC_LDX_imm = $A2 +OPC_LDY_zp = $A4 +OPC_LDA_zp = $A5 +OPC_LDX_zp = $A6 +OPC_TAY = $A8 +OPC_LDA_imm = $A9 +OPC_TAX = $AA +OPC_LDY_abs = $AC +OPC_LDA_abs = $AD +OPC_LDX_abs = $AE + +OPC_BCS = $B0 +OPC_LDA_izy = $B1 +OPC_LDY_zpx = $B4 +OPC_LDA_zpx = $B5 +OPC_LDX_zpy = $B6 +OPC_CLV = $B8 +OPC_LDA_aby = $B9 +OPC_TSX = $BA +OPC_LDY_abx = $BC +OPC_LDA_abx = $BD +OPC_LDX_aby = $BE + +OPC_CPY_imm = $C0 +OPC_CMP_izx = $C1 +OPC_CPY_zp = $C4 +OPC_CMP_zp = $C5 +OPC_DEC_zp = $C6 +OPC_INY = $C8 +OPC_CMP_imm = $C9 +OPC_DEX = $CA +OPC_CPY_abs = $CC +OPC_CMP_abs = $CD +OPC_DEC_abs = $CE + +OPC_BNE = $D0 +OPC_CMP_izy = $D1 +OPC_CMP_zpx = $D5 +OPC_DEC_zpx = $D6 +OPC_CLD = $D8 +OPC_CMP_aby = $D9 +OPC_CMP_abx = $DD +OPC_DEC_abx = $DE + +OPC_CPX_imm = $E0 +OPC_SBC_izx = $E1 +OPC_CPX_zp = $E4 +OPC_SBC_zp = $E5 +OPC_INC_zp = $E6 +OPC_INX = $E8 +OPC_SBC_imm = $E9 +OPC_NOP = $EA +OPC_CPX_abs = $EC +OPC_SBC_abs = $ED +OPC_INC_abs = $EE + + +OPC_BEQ = $F0 +OPC_SBC_izy = $F1 +OPC_SBC_zpx = $F5 +OPC_INC_zpx = $F6 +OPC_SED = $F8 +OPC_SBC_aby = $F9 +OPC_SBC_abx = $FD +OPC_INC_abx = $FE + + +.if (.cpu .bitand ::CPU_ISET_65SC02) + +; OPC_NOP = $02 ; doublet +; OPC_NOP = $03 ; doublet +OPC_TSB_zp = $04 +; OPC_NOP = $0B ; doublet +OPC_TSB_abs = $0C + +OPC_ORA_izp = $12 +; OPC_NOP = $13 ; doublet +OPC_TRB_zp = $14 +OPC_INC = $1A +; OPC_NOP = $1B ; doublet +OPC_TRB_abs = $1C + +; OPC_NOP = $22 ; doublet +; OPC_NOP = $23 ; doublet +; OPC_NOP = $2B ; doublet + +OPC_AND_izp = $32 +; OPC_NOP = $33 ; doublet +OPC_BIT_zpx = $34 +OPC_DEC = $3A +; OPC_NOP = $3B ; doublet +OPC_BIT_abx = $3C + +; OPC_NOP = $42 ; doublet +; OPC_NOP = $43 ; doublet +; OPC_NOP = $44 ; doublet +; OPC_NOP = $4B ; doublet + +OPC_EOR_izp = $52 +; OPC_NOP = $53 ; doublet +; OPC_NOP = $54 ; doublet +; OPC_NOP = $5A ; doublet +; OPC_NOP = $5B ; doublet +OPC_EOR_abx = $5C + +; OPC_NOP = $62 ; doublet +; OPC_NOP = $63 ; doublet +OPC_STZ_zp = $64 +; OPC_NOP = $6B ; doublet + +OPC_ADC_izp = $72 +; OPC_NOP = $73 ; doublet +OPC_STZ_zpx = $74 +OPC_PLY = $7A +; OPC_NOP = $7B ; doublet +OPC_JMP_iax = $7C + +OPC_BRA = $80 +; OPC_NOP = $82 ; doublet +; OPC_NOP = $83 ; doublet +OPC_BIT_imm = $89 +; OPC_NOP = $8B ; doublet + +OPC_STA_izp = $92 +; OPC_NOP = $93 ; doublet +; OPC_NOP = $9B ; doublet +OPC_STZ_abs = $9C +OPC_STZ_abx = $9E + +; OPC_NOP = $A3 ; doublet +; OPC_NOP = $AB ; doublet + +OPC_LDA_izp = $B2 +; OPC_NOP = $B3 ; doublet +; OPC_NOP = $BB ; doublet + +; OPC_NOP = $C2 ; doublet +; OPC_NOP = $C3 ; doublet +; OPC_NOP = $CB ; doublet + +OPC_CMP_izp = $D2 +; OPC_NOP = $D3 ; doublet +; OPC_NOP = $D4 ; doublet +OPC_PHX = $DA +; OPC_NOP = $DB ; doublet +; OPC_NOP = $DC ; doublet + +; OPC_NOP = $E2 ; doublet +; OPC_NOP = $E3 ; doublet +; OPC_NOP = $EB ; doublet + +OPC_SBC_izp = $F2 +; OPC_NOP = $F3 ; doublet +; OPC_NOP = $F4 ; doublet +OPC_PLX = $FA +; OPC_NOP = $FB ; doublet +; OPC_NOP = $FC ; doublet + + +.if (.cpu .bitand ::CPU_ISET_65C02) + +; bit instructions for 65C02 + +OPC_RMB0 = $07 +OPC_RMB1 = $17 +OPC_RMB2 = $27 +OPC_RMB3 = $37 +OPC_RMB4 = $47 +OPC_RMB5 = $57 +OPC_RMB6 = $67 +OPC_RMB7 = $77 + +OPC_SMB0 = $87 +OPC_SMB1 = $97 +OPC_SMB2 = $A7 +OPC_SMB3 = $B7 +OPC_SMB4 = $C7 +OPC_SMB5 = $D7 +OPC_SMB6 = $E7 +OPC_SMB7 = $F7 + +OPC_BBR0 = $0F +OPC_BBR1 = $1F +OPC_BBR2 = $2F +OPC_BBR3 = $3F +OPC_BBR4 = $4F +OPC_BBR5 = $5F +OPC_BBR6 = $6F +OPC_BBR7 = $7F + +OPC_BBS0 = $8F +OPC_BBS1 = $9F +OPC_BBS2 = $AF +OPC_BBS3 = $BF +OPC_BBS4 = $CF +OPC_BBS5 = $DF +OPC_BBS6 = $EF +OPC_BBS7 = $FF + +.else + +; no bit instructions for 65SC02 + +; OPC_NOP = $07 ; doublet +; OPC_NOP = $17 ; doublet +; OPC_NOP = $27 ; doublet +; OPC_NOP = $37 ; doublet +; OPC_NOP = $47 ; doublet +; OPC_NOP = $57 ; doublet +; OPC_NOP = $67 ; doublet +; OPC_NOP = $77 ; doublet +; OPC_NOP = $87 ; doublet +; OPC_NOP = $97 ; doublet +; OPC_NOP = $A7 ; doublet +; OPC_NOP = $B7 ; doublet +; OPC_NOP = $C7 ; doublet +; OPC_NOP = $D7 ; doublet +; OPC_NOP = $E7 ; doublet +; OPC_NOP = $F7 ; doublet +; OPC_NOP = $0F ; doublet +; OPC_NOP = $1F ; doublet +; OPC_NOP = $2F ; doublet +; OPC_NOP = $3F ; doublet +; OPC_NOP = $4F ; doublet +; OPC_NOP = $5F ; doublet +; OPC_NOP = $6F ; doublet +; OPC_NOP = $7F ; doublet +; OPC_NOP = $8F ; doublet +; OPC_NOP = $9F ; doublet +; OPC_NOP = $AF ; doublet +; OPC_NOP = $BF ; doublet +; OPC_NOP = $CF ; doublet +; OPC_NOP = $DF ; doublet +; OPC_NOP = $EF ; doublet +; OPC_NOP = $FF ; doublet + +.endif + +.elseif (.cpu .bitand ::CPU_ISET_6502X) + +; stable, undocumented opcodes + +; OPC_KIL = $02 ; unstable +OPC_SLO_izx = $03 +OPC_NOP_zp = $04 +OPC_SLO_zp = $07 +OPC_ANC_imm = $0B +OPC_NOP_abs = $0C +OPC_SLO_abs = $0F + +; OPC_KIL = $12 ; unstable +OPC_SLO_izy = $13 +OPC_NOP_zpx = $14 +OPC_SLO_zpx = $17 +;OPC_NOP = $1A +OPC_SLO_aby = $1B +OPC_NOP_abx = $1C +OPC_SLO_abx = $1F + +; OPC_KIL = $22 ; unstable +OPC_RLA_izx = $23 +OPC_RLA_zp = $27 +OPC_ANC_imm = $2B +OPC_RLA_abs = $2F + +; OPC_KIL = $32 ; unstable +OPC_RLA_izy = $33 +OPC_NOP_zpx = $34 +OPC_RLA_zpx = $37 +; OPC_NOP = $3A ; doublet +OPC_RLA_aby = $3B +OPC_NOP_abx = $3C +OPC_RLA_abx = $3F + +; OPC_KIL = $42 ; unstable +OPC_SRE_izx = $43 +OPC_NOP_zp = $44 +OPC_SRE_zp = $47 +OPC_ALR_imm = $4B +OPC_SRE_abs = $4F + +; OPC_KIL = $52 ; unstable +OPC_SRE_izy = $53 +OPC_NOP_zpx = $54 +OPC_SRE_zpx = $57 +; OPC_NOP = $5A ; doublet +OPC_SRE_aby = $5B +OPC_NOP_abx = $5C +OPC_SRE_abx = $5F + +; OPC_KIL = $62 +OPC_RRA_izx = $63 +OPC_NOP_zp = $64 +OPC_RRA_zp = $67 +OPC_ARR_imm = $6B +OPC_RRA_abs = $6F + +; OPC_KIL = $72 +OPC_RRA_izy = $73 +OPC_NOP_zpx = $74 +OPC_RRA_zpx = $77 +; OPC_NOP = $7A ; doublet +OPC_RRA_aby = $7B +OPC_NOP_abx = $7C +OPC_RRA_abx = $7F + +OPC_NOP_imm = $80 +; OPC_NOP_imm = $82 ; doublet +OPC_SAX_izx = $83 +OPC_SAX_zp = $87 +; OPC_NOP_imm = $89 ; doublet +; OPC_XAA = $8B ; unstable +OPC_SAX_abs = $8F + +; OPC_KIL = $92 ; unstable +; OPC_AHX_izy = $93 ; unstable +OPC_SAX_zpy = $97 +; OPC_TAS_aby = $9B ; unstable +; OPC_SHY_abx = $9C ; unstable +; OPC_SHX_aby = $9E ; unstable +; OPC_AHX_aby = $9F ; unstable + +OPC_LAX_izx = $A3 +OPC_LAX_zp = $A7 +; OPC_LAX_imm = $AB ; unstable +OPC_LAX_abs = $AF + +; OPC_KIL = $B2 ; unstable +OPC_LAX_izy = $B3 +OPC_LAX_zpy = $B7 +OPC_LAS_aby = $BB +OPC_LAX_aby = $BF + +; OPC_NOP_imm = $C2 ; doublet +OPC_DCP_izx = $C3 +OPC_DCP_zp = $C7 +OPC_AXS_imm = $CB +OPC_DCP_abs = $CF + +; OPC_KIL = $D2 ; unstable +OPC_DCP_izy = $D3 +OPC_NOP_zpx = $D4 +OPC_DCP_zpx = $D7 +OPC_NOP_DA = $DA +OPC_DCP_aby = $DB +OPC_NOP_abx = $DC +OPC_DCP_abx = $DF + +; OPC_NOP_imm = $E2 ; doublet +OPC_ISC_izx = $E3 +OPC_ISC_zp = $E7 +; OPC_SBC_imm = $EB ; doublet +OPC_ISC_abs = $EF + +; OPC_KIL = $F2 ; unstable +OPC_ISC_izy = $F3 +OPC_NOP_zpx = $F4 +OPC_ISC_zpx = $F7 +OPC_NOP_FA = $FA +OPC_ISC_aby = $FB +OPC_NOP_abx = $FC +OPC_ISC_abx = $FF + +.endif +; +; Vic20 generic definitions. Stolen mostly from c64.inc - Steve Schmidtke +; + + +; --------------------------------------------------------------------------- +; Zero page, Commodore stuff + +VARTAB := $2D ; Pointer to start of BASIC variables +MEMSIZE := $37 ; Pointer to highest BASIC RAM location (+1) +TXTPTR := $7A ; Pointer into BASIC source code +TIME := $A0 ; 60HZ clock +FNAM_LEN := $B7 ; Length of filename +SECADR := $B9 ; Secondary address +DEVNUM := $BA ; Device number +FNAM := $BB ; Pointer to filename +KEY_COUNT := $C6 ; Number of keys in input buffer +RVS := $C7 ; Reverse flag +CURS_FLAG := $CC ; 1 = cursor off +CURS_BLINK := $CD ; Blink counter +CURS_CHAR := $CE ; Character under the cursor +CURS_STATE := $CF ; Cursor blink state +SCREEN_PTR := $D1 ; Pointer to current char in text screen +CURS_X := $D3 ; Cursor column +CURS_Y := $D6 ; Cursor row +CRAM_PTR := $F3 ; Pointer to current char in color RAM + +BASIC_BUF := $200 ; Location of command-line +BASIC_BUF_LEN = 89 ; Maximum length of command-line + +CHARCOLOR := $286 +CURS_COLOR := $287 ; Color under the cursor + + +; --------------------------------------------------------------------------- +; Screen size + +XSIZE = 22 +YSIZE = 23 + +; --------------------------------------------------------------------------- +; Kernal routines + +; Direct entries +CLRSCR := $E55F +KBDREAD := $E5CF + +; --------------------------------------------------------------------------- +; Vector and other locations + +IRQVec := $0314 +BRKVec := $0316 +NMIVec := $0318 + +; --------------------------------------------------------------------------- +; I/O: 6560 VIC + +VIC := $9000 +VIC_LINES := $9003 ; Screen lines, bit 7 is bit 0 from VIC_HLINE +VIC_HLINE := $9004 ; Rasterline, bits 1-8 +VIC_COLOR := $900F ; Border and background color + +; --------------------------------------------------------------------------- +; I/O: 6522 VIA1 + +VIA1 := $9110 +VIA1_JOY := $9111 +VIA1_DDRB := $9112 +VIA1_DDRA := $9113 + +; --------------------------------------------------------------------------- +; I/O: 6522 VIA2 + +VIA2 := $9120 +VIA2_JOY := $9120 +VIA2_DDRB := $9122 +VIA2_DDRA := $9123 + +; +; Plus/4 generic definitions. +; + + +; --------------------------------------------------------------------------- +; Zero page, Commodore stuff + +TMPPTR := $22 ; Temporary ptr used by BASIC +VARTAB := $2D ; Pointer to start of BASIC variables +MEMSIZE := $37 ; Pointer to highest BASIC RAM location (+1) +TXTPTR := $3B ; Pointer into BASIC source code +TIME := $A3 ; 60HZ clock +FNAM_LEN := $AB ; Length of filename +LFN := $AC ; Logical file number +SECADR := $AD ; Secondary address +DEVNUM := $AE ; Device number +FNAM := $AF ; Pointer to filename for OPEN +KEY_COUNT := $EF ; Number of keys in input buffer +RVS := $C2 ; Reverse flag +CURS_X := $CA ; Cursor column +CURS_Y := $CD ; Cursor row +SCREEN_PTR := $C8 ; Pointer to current char in text screen +CRAM_PTR := $EA ; Pointer to current char in color RAM + +BASIC_BUF := $200 ; Location of command-line +BASIC_BUF_LEN = 89 ; Maximum length of command-line + +FNBUF := $25E ; Buffer for filename +FETCH := $494 ; lda (zp),y from RAM +CHARCOLOR := $53B +FKEY_COUNT := $55D ; Characters for function key +FKEY_SPACE := $55F ; Function key definitions +FKEY_ORIG := $F3D2 ; Original definitions + +; --------------------------------------------------------------------------- +; Kernal routines + +; Direct entries +CLRSCR := $D88B +KBDREAD := $D8C1 + +; --------------------------------------------------------------------------- +; Vector and other locations + +IRQVec := $0314 +BRKVec := $0316 +NMIVec := $0318 + +; --------------------------------------------------------------------------- +; Screen size + +XSIZE = 40 +YSIZE = 25 + +; --------------------------------------------------------------------------- +; I/O + +TED_T1LO := $FF00 +TED_T1HI := $FF01 +TED_T2LO := $FF02 +TED_T2HI := $FF03 +TED_T3LO := $FF04 +TED_T4HI := $FF05 +TED_MULTI1 := $FF07 +TED_KBD := $FF08 +TED_CURSHI := $FF0C +TED_CURSLO := $FF0D +TED_V1FRQLO := $FF0E +TED_V2FRQLO := $FF0F +TED_V2FRQHI := $FF10 +TED_BGCOLOR := $FF15 +TED_COLOR1 := $FF16 +TED_COLOR2 := $FF17 +TED_COLOR3 := $FF18 +TED_BORDERCOLOR := $FF19 +TED_VLINEHI := $FF1C +TED_VLINELO := $FF1D +TED_HPOS := $FF1E +TED_ROMSEL := $FF3E +TED_RAMSEL := $FF3F + +; --------------------------------------------------------------------------- +; RAM/ROM selection addresses + +ENABLE_ROM := TED_ROMSEL +ENABLE_RAM := TED_RAMSEL + + +; supervision symbols + +; supervision 65c02s +; in cc65 up to 2.9.1 65c02 means 65sc02 + +lcd_addr = $4000 +LCD_LINESIZE = $30 +LCD_WIDTH = 160 +LCD_HEIGHT = 160 +; 2 bit per pixel, packed + +lcd_width = $2000 +lcd_height = $2001 +lcd_xpos = $2002 ; in pixel, bit 0+1 not used +lcd_ypos = $2003 ; weird + +sv_port_r = $2021 +sv_port_w = $2022 + +sv_timer_count = $2023 +; read for quitting +sv_timer_quit = $2024 + +; bit 0 timer, bit 1 dma +sv_irq_source = $2027 +SV_IRQ_REQUEST_TIMER = 1 +SV_IRQ_REQUEST_DMA = 2 + +; bit 5,6,7 select bank at 0x8000 +sv_bank = $2026 +SV_NMI_ENABLE_ON = 1 +SV_IRQ_ENABLE_TIMER = 2 +SV_IRQ_ENABLE_DMA = 4 +SV_LCD_ON = 8 +SV_TIMER_MODE_240Hz = $10 ; else 15360 + + +; low activ/pressed +sv_control = $2020 +SV_RIGHT = 1 +SV_LEFT = 2 +SV_DOWN = 4 +SV_UP = 8 +SV_BUTTONB = $10 +SV_BUTTONA = $20 +SV_SELECT = $40 +SV_START = $80 + +; frequency=125000/counter +sv_audio_right_counter = $2010 ;word +sv_audio_left_counter = $2014 +SV_AUDIO_ON =$40 +;bits 0..3 volume +; bit 4 ? +; bit 5 ? +sv_audio_right_control = $2012 +sv_audio_left_control = $2016 +; write activates tone for x/60 sec (0 means 256) +sv_audio_right_timer = $2013 +sv_audio_left_timer = $2017 + + +;read for irq quitting +sv_dma_quit = $2025 +sv_dma_on = $201c +; bit 7 true start, false stop +sv_dma_start = $2018 ; word +sv_dma_size = $201a ; *32 samples +sv_dma_control = $201b +; bit 0,1 speed: 0 15360, 11 15360/4 +; bit 2,3 volume: 0 silent, 11 loud + +sv_noise_volume = $2028 ; and frequency +sv_noise_timer = $2029 +sv_noise_control = $202a +;/*****************************************************************************/ +;/* */ +;/* mouse-kernel.inc */ +;/* */ +;/* Mouse API */ +;/* */ +;/* */ +;/* */ +;/* (C) 2003-2009, Ullrich von Bassewitz */ +;/* Roemerstrasse 52 */ +;/* D-70794 Filderstadt */ +;/* EMail: uz@cc65.org */ +;/* */ +;/* */ +;/* */ +;/* */ +;/* This software is provided 'as-is', without any expressed or implied */ +;/* warranty. In no event will the authors be held liable for any damages */ +;/* arising from the use of this software. */ +;/* */ +;/* Permission is granted to anyone to use this software for any purpose, */ +;/* including commercial applications, and to alter it and redistribute it */ +;/* freely, subject to the following restrictions: */ +;/* */ +;/* 1. The origin of this software must not be misrepresented; you must not */ +;/* claim that you wrote the original software. If you use this software */ +;/* in a product, an acknowledgment in the product documentation would be */ +;/* appreciated but is not required. */ +;/* 2. Altered source versions must be plainly marked as such, and must not */ +;/* be misrepresented as being the original software. */ +;/* 3. This notice may not be removed or altered from any source */ +;/* distribution. */ +;/* */ +;/*****************************************************************************/ + + + + +;------------------------------------------------------------------------------ +; Error codes + +.enum + MOUSE_ERR_OK ; No error + MOUSE_ERR_NO_DRIVER ; No driver available + MOUSE_ERR_CANNOT_LOAD ; Error loading driver + MOUSE_ERR_INV_DRIVER ; Invalid driver + MOUSE_ERR_NO_DEVICE ; Mouse hardware not found + MOUSE_ERR_INV_IOCTL ; Invalid ioctl code + + MOUSE_ERR_COUNT ; Special: Number of error codes +.endenum + +;------------------------------------------------------------------------------ +; The driver header + +.struct MOUSE_HDR + ID .byte 3 ; Contains 0x6D, 0x6F, 0x75 ("mou") + VERSION .byte 1 ; Interface version + LIBREF .addr ; Library reference + JUMPTAB .struct + INSTALL .addr + UNINSTALL .addr + HIDE .addr + SHOW .addr + SETBOX .addr + GETBOX .addr + MOVE .addr + BUTTONS .addr + POS .addr + INFO .addr + IOCTL .addr + IRQ .addr + .endstruct + FLAGS .byte ; Mouse driver flags + CALLBACKS .struct ; Jump instructions + .byte ; JMP opcode + CHIDE .addr ; Jump address + .byte + CSHOW .addr + .byte + CPREP .addr + .byte + CDRAW .addr + .byte + CMOVEX .addr + .byte + CMOVEY .addr + .endstruct +.endstruct + +;------------------------------------------------------------------------------ +; The mouse callback structure + +.struct MOUSE_CALLBACKS + HIDE .addr ; Hide the mouse cursor + SHOW .addr ; Show the mouse cursor + PREP .addr ; Prepare to move the mouse cursor + DRAW .addr ; Draw the mouse cursor + MOVEX .addr ; Move the mouse cursor to X coord + MOVEY .addr ; Move the mouse cursor to Y coord +.endstruct + +;------------------------------------------------------------------------------ +; The mouse API version, stored in MOUSE_HDR::VERSION + +MOUSE_API_VERSION = $05 + +;------------------------------------------------------------------------------ +; Bitmapped mouse driver flags, stored in MOUSE_HDR::FLAGS. +; Note: If neither of MOUSE_FLAG_XXX_IRQ is set, no interrupts are supplied +; to the driver. If one of the bits is set, the interrupt vector MUST be +; valid. +; Beware: Some of the bits are tested using the BIT instruction, so do not +; change the values without checking the code! + +MOUSE_FLAG_EARLY_IRQ = $40 ; Enable IRQ *before* calling INSTALL +MOUSE_FLAG_LATE_IRQ = $80 ; Enable IRQ *after* calling INSTALL + +;------------------------------------------------------------------------------ +; Mouse button definitions + +MOUSE_BTN_LEFT = $10 +MOUSE_BTN_RIGHT = $01 + +;------------------------------------------------------------------------------ +; Structures used to return data from the mouse driver + +.struct MOUSE_POS + XCOORD .word + YCOORD .word +.endstruct + +.struct MOUSE_INFO + POS .tag MOUSE_POS + BUTTONS .byte +.endstruct + +.struct MOUSE_BOX + MINX .word + MINY .word + MAXX .word + MAXY .word +.endstruct + +;------------------------------------------------------------------------------ +; Variables + + .global _mouse_drv ; Pointer to driver + .global _mouse_hidden ; Counter, 0 = mouse is visible + +;------------------------------------------------------------------------------ +; C callable functions + + .global _mouse_load_driver + .global _mouse_unload + .global _mouse_install + .global _mouse_uninstall + .global _mouse_geterrormsg + .global _mouse_hide + .global _mouse_show + .global _mouse_setbox + .global _mouse_getbox + .global _mouse_move + .global _mouse_buttons + .global _mouse_pos + .global _mouse_info + .global _mouse_ioctl + + .global _mouse_clear_ptr + +;------------------------------------------------------------------------------ +; Driver entry points (asm callable) + + .global mouse_install + .global mouse_uninstall + .global mouse_hide + .global mouse_show + .global mouse_setbox + .global mouse_getbox + .global mouse_move + .global mouse_buttons + .global mouse_pos + .global mouse_info + .global mouse_ioctl + +;----------------------------------------------------------------------------- +; Zero page stuff + +WNDLFT := $20 ; Text window left +WNDWDTH := $21 ; Text window width +WNDTOP := $22 ; Text window top +WNDBTM := $23 ; Text window bottom+1 +CH := $24 ; Cursor horizontal position +CV := $25 ; Cursor vertical position +BASL := $28 ; Text base address low +BASH := $29 ; Text base address high +INVFLG := $32 ; Normal/inverse(/flash) +PROMPT := $33 ; Used by GETLN +RNDL := $4E ; Random counter low +RNDH := $4F ; Random counter high +HIMEM := $73 ; Highest available memory address+1 + +;----------------------------------------------------------------------------- +; Vectors + +DOSWARM := $03D0 ; DOS warmstart vector +BRKVec := $03F0 ; Break vector +SOFTEV := $03F2 ; Vector for warm start +PWREDUP := $03F4 ; This must be = EOR #$A5 of SOFTEV+1 + +;----------------------------------------------------------------------------- +; Hardware + +; Keyboard input +KBD := $C000 ; Read keyboard +KBDSTRB := $C010 ; Clear keyboard strobe + +; 80 column video switches +CLR80COL:= $C000 ; Disable 80 column store +SET80COL:= $C001 ; Enable 80 column store +RD80COL := $C018 ; >127 if 80 column store enabled +RD80VID := $C01F ; >127 if 80 column video enabled + +; Character set switches +CLRALTCHAR := $C00E ; Normal Apple II char set +SETALTCHAR := $C00F ; Norm/inv LC, no flash +ALTCHARSET := $C01E ; >127 if alt charset switched in + +; Language card switches +RDLCBNK2:= $C011 ; >127 if LC bank 2 in use +RDLCRAM := $C012 ; >127 if LC is read enabled +ROMIN := $C081 ; Swap in D000-FFFF ROM +LCBANK2 := $C083 ; Swap in LC bank 2 +LCBANK1 := $C08B ; Swap in LC bank 1 + +; Video mode switches +TXTCLR := $C050 ; Display graphics +TXTSET := $C051 ; Display text +MIXCLR := $C052 ; Disable 4 lines of text +MIXSET := $C053 ; Enable 4 lines of text +LOWSCR := $C054 ; Page 1 +HISCR := $C055 ; Page 2 +LORES := $C056 ; Lores graphics +HIRES := $C057 ; Hires graphics + +; Game controller +BUTN0 := $C061 ; Open-Apple Key +BUTN1 := $C062 ; Closed-Apple Key +SYMBOLS { + __EXEHDR__: type = import; + __STACKSIZE__: type = weak, value = $0800; # 2k stack +} +MEMORY { + ZP: file = "", start = $0000, size = $001A; + HEADER: file = %O, start = $0000, size = $0001; + MAIN: file = %O, define = yes, start = $0200, size = $FDF0 - __STACKSIZE__; +} +SEGMENTS { + ZEROPAGE: load = ZP, type = zp; + EXEHDR: load = HEADER, type = ro; + STARTUP: load = MAIN, type = ro; + LOWCODE: load = MAIN, type = ro, optional = yes; + ONCE: load = MAIN, type = ro, optional = yes; + CODE: load = MAIN, type = ro; + RODATA: load = MAIN, type = ro; + DATA: load = MAIN, type = rw; + BSS: load = MAIN, type = bss, define = yes; +} +FEATURES { + CONDES: type = constructor, + label = __CONSTRUCTOR_TABLE__, + count = __CONSTRUCTOR_COUNT__, + segment = ONCE; + CONDES: type = destructor, + label = __DESTRUCTOR_TABLE__, + count = __DESTRUCTOR_COUNT__, + segment = RODATA; + CONDES: type = interruptor, + label = __INTERRUPTOR_TABLE__, + count = __INTERRUPTOR_COUNT__, + segment = RODATA, + import = __CALLIRQ__; +} +naUz þ² +Uzna` ixKÃÊ%ïòAÀ +ñÊ@‹ÛµäfaXšíŒ\ì +  ±‚ €¸ƒ< B)7(A8' 69+ +5*2,.0C3! __SIM6502__ common/_cwd.s +ca65 V2.15__cwd__cwd_buf_sizecwd_initinitcwd*/home/hugg/compilers/cc65/asminc/stdio.inc_IOFBF_IOLBF_IONBFBUFSIZEOF FILENAME_MAXL_tmpnamSEEK_CURSEEK_ENDSEEK_SETTMP_MAX FOPEN_MAX_stdin_stdout_stderr.size __cwd_buf_size must not be > 255CODERODATABSSDATAZEROPAGENULLINITUzna` iÍL[ gjj’üiý@‹ÛµäfaXïíŒ\ìfaXÔ–% ©9 +‚ ð +ÈÈÈÀ$$Ð.ô.L +‚˜,i H‚¢- I‚-è"` +&'()*! - ¸ƒ!3<"B)& 7( A8'$6!9+%5*(2 ,. #0+C3+ __SIM6502__common/_fdesc.s +ca65 V2.15__fdescreturn0*/home/hugg/compilers/cc65/asminc/stdio.inc_IOFBF_IOLBF_IONBFBUFSIZEOF FILENAME_MAXL_tmpnamSEEK_CURSEEK_ENDSEEK_SETTMP_MAX FOPEN_MAX_stdin_stdout_stderr*/home/hugg/compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags +f_pushback_FCLOSED_FOPEN_FEOF_FERROR +_FPUSHBACK __filetabLoopFound@L1CODERODATABSSDATAZEROPAGENULLUzna` i†åkl?«®½ÿ¼­½@‹ÛµäfaX„íŒ\ìfaXÜ faXÔ+,-®.   000000000000000 +ƒ +ƒ +ƒ/0¸ƒ-¸ƒ,¸ƒ¸ƒ 6< B)&7( A8'$6!9 +5*2 ,. # 0C31 __SIM6502__common/_file.s +ca65 V2.15 __filetab*/home/hugg/compilers/cc65/asminc/stdio.inc_IOFBF_IOLBF_IONBFBUFSIZEOF FILENAME_MAXL_tmpnamSEEK_CURSEEK_ENDSEEK_SETTMP_MAX FOPEN_MAX_stdin_stdout_stderr*/home/hugg/compilers/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCL*/home/hugg/compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags +f_pushback_FCLOSED_FOPEN_FEOF_FERROR +_FPUSHBACKCODERODATABSSDATAZEROPAGENULLUzna` iqTÅ%ê öù¦Ÿyø@‹ÛµäíŒ\– 50Iÿ … ‚Š Iÿ… ‚  +‚… ‚† ‚  +‚ … ‚† ‚ æ ‚ð± ‚ª± ‚‘ ‚Š‘ ‚ÈÐïæ ‚ æ ‚Ðéæ ‚ Ðé` +   ¸ƒ !-)& 61 $! %7*(,2 #'+ __SIM6502__common/_swap.s +ca65 V2.15__swappopaxptr1ptr2ptr3.size@L1@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` iq\ÍÔ àã) ]iâj@‹ÛµäíŒ\€%àL +‚`  +   ¸ƒ   + __SIM6502__ common/abs.s +ca65 V2.15_absnegax.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` ix¹1 <Y\Ø4vª[«@‹ÛµäíŒ\›faXË‚¢ q& ‚&ÈHŠq ‚ª'¥" ‚"i… + ‚ +##æ ‚h`  !&" +¸ƒ¸ƒ+ "& $! +%  #'" __SIM6502__ runtime/add.s +ca65 V2.15tosadda0tosaddaxsp(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` iq|í?, 8;F»<:=@‹ÛµäíŒ\™Epd¨ðè… ‚† ‚ * +‚*…: ‚:† ‚2 ‚2ðT  +‚¤7 ‚7Ð!!¤ ‚ ð8H8 q9 ‚9..è ð- -àÿ@//Éñ  è5éñ…0 ‚0e ‚…& ‚&Še) ‚)… ‚° +Éÿ6¥? ‚?Éñ$ ¥ ‚ éñ+… ‚¥; ‚;éÿ…= ‚=¥ ‚È(Ð + +æ ‚Æ" ‚"оÆ4 ‚4к`,…> ‚>…3 ‚3©<L +‚ 0 7 "4 +:29  &)? ;=>3''*'¸ƒ1#AU -0HG?")>&9C8L6E1A4;J$.!I= 5 +F7@N*(,2RK/: #'BSDQ<+ __SIM6502__zlib/adler32.s +ca65 V2.15_adler32incsp2incsp4popaxpopeaxsregptr1ptr2tmp1BASE.size@L1@L0@L2@RET@L3@L4@L5@L6@L7@L8@L9CODERODATABSSDATAZEROPAGENULLUzna` iq— +03GzdÞ2ß@‹ÛµäíŒ\Ì`¢† ‚ † ‚` É€õ¢ÿ† ‚† ‚`  +    + ¸ƒ ¸ƒ    __SIM6502__runtime/along.s +ca65 V2.15aulongalongsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq— +03Lgæ2ç@‹ÛµäíŒ\×`  „ ‚„ ‚ ` à€õ ÿ„ ‚„ ‚`   +    + ¸ƒ¸ƒ   __SIM6502__runtime/axlong.s +ca65 V2.15axulongaxlongsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqñbž¡t– —@‹ÛµäíŒ\º#… ‚† ‚  +‚L +ƒ … ‚† ‚ ± ‚ð  È„ ‚  +‚¤ ‚Ðòæ ‚Ð î `  ¸ƒ +¸ƒ +  !  +# __SIM6502__ conio/cputs.s +ca65 V2.15_cputsxy_cputsgotoxy_cputcptr1tmp1.sizeL0L1L9CODERODATABSSDATAZEROPAGENULLUzna` iqôe[ÀÒÕ"÷þõÔö@‹ÛµäíŒ\ž£·Ÿ¢;©&… ‚… ‚… ‚ 'Š2…I ‚IJb¥_ ‚_JVIí …< ‚<¥ ‚jeI¸^…9 ‚9¥ ‚j`Iƒ6…F ‚F¥ ‚jaI N°*MFk ‚kfR ‚Rf + ‚ +j7ˆ[Ð Ô . +ƒ.¥S ‚S, +ƒ,¥0 ‚0C +ƒC¥# ‚#G +ƒGè дî\ +ƒ\`i¨Kð//èd… ‚†f ‚f E +‚E… ‚† ‚4 ‚4ðYKY­ +ƒÐLL " +ƒ" X +‚X¤- ‚-ФQ ‚QðÙ g +‚g†J ‚J Q8 ‚8ªH½c +ƒcEO ‚O…* ‚*½W +ƒWE> ‚>…3 ‚3½ +ƒE% ‚%… ‚½: +ƒ:… ‚¥+ ‚+ÈÐæ5 ‚5Æ ‚Ð$Ø$Æ= ‚=ÐPÔP¦ ‚L) +‚)…U ‚U…? ‚?LZ +‚Z € €h € € €( !]"#  F +SJO3  I*+  f-Q=  485 + _<9kR0#>%U? DXDEDZDg)¸ƒR@lhm\jƒU -P0M‚lHG")o>&sfW9C8}O6pg„tbk3T1A4;eJn$.^!iqdx †5 +F%7_[@N*(arV,2wcRKz/:~ #'`BDZ<X+$ __SIM6502__ zlib/crc32.s +ca65 V2.15_crc32compleaxincsp2incsp4popaxpopeaxsregptr1ptr2tmp1tmp2 +POLYNOMIAL +make_table.size@L1@L2@L3@L4table_0table_1table_2table_3table_initialisedRET@L0 +@dont_makeCODERODATABSSDATAZEROPAGENULLUzna` k{ylôl xIIxLx!6m®— +¹Kx¹@‹Ûµä‹m\ºófaXÈÿWÓÜ!¬ } +‚«} ± +ƒ9 ±  ‘ +‚ª‘  Á +ƒõÁ È‘¯ ‚Ö¯É+ÉðÛ#ÛÉ-ˆð‚ +‚ Éa€ð¼p¼ÉføðœGœÉgˆð—I—Éo¶ðAOAÉpœ +ðòQòÉtÌ +ðù+ùÉzú ðÉoÉLÞ +ƒ½Þ Á +‚©ÁŠ +ƒŠ Žá +ƒá Lå +ƒå ­Œ +ƒŒ®– +ƒ– Ï +‚¨Ï­¢ +ƒh ¢  ã +ƒa +ã½ +ƒ½Ž¿ +ƒ¿ LØ +ƒØ­¬ +ƒ¬®Œ +ƒŒ ð +ƒJ ðL +ƒ  +ƒ LÇ +ƒÇ©7 Hƒ7¢¤ Iƒ¤ Ÿ +ƒëŸL¸ +ƒ¸  ú +ƒ² úLÿ +ƒÿ­Ò +ƒÒ +‚µ­Ö +ƒÖ€ +‚µ€L¸ +ƒ¸­‰ +ƒ‰®„ +ƒ„ ó +‚¨ó©â ÿ +ƒa +ÿ Õ +ƒÕ Ž +ƒLä +ƒä­¨ +ƒ¨®¸ +ƒ¸ Ú +‚³ÚÕmé +ƒéâ +ƒâŠäm¼ +ƒ¼« +ƒ«LÑ +ƒÑ¢Ò±´ ‚Ö´L³ +‚§³ L¢ +ƒõ¢  ¡ +‚¦¡ ­“ +ƒˆ “ m +‚¥m Ô +ƒõÔ â‘Ç ‚ÖÇ É+‡ð••É-îðƒƒÉaÉð¥-¥Éoªð†#†Ézˆðv+vLú +ƒú ˆR±ã ‚Öãäm‹ +ƒ‹ ™ +ƒ™L‡ +ƒ#‡ ˆš±p ‚ÖpIÿ–8ÚmÇ +ƒÇ ù +ƒù LÍ +ƒ#Í ™ +ƒ:™L… +ƒ#…Φ +ƒ¦ Lä +ƒ#äîö +ƒöLÇ +ƒ#Ç¢l±ß + ‚Öß +L‹ +‚¤‹ œ +ƒ° œLË +ƒÐË ½ + +‚£½ +­þ +ƒ˜ þ +Ì È +‚¢È - +ƒõ- Æ ‘µ ‚ÖµÉ+˜ðþ þ É-² ðÔ #Ô Éaåðš<šÉo·ð´2´Ézô +ðEL¡ +ƒ¤¡ˆŽ±ƒ ‚Öƒ€m +ƒ¶ +ƒ¶˜õmä +ƒäî +ƒîL¯ +ƒ«¯ˆÇ±È ‚ÖÈIÿÑ 8îm¯ +ƒ¯à +ƒà©ÿ£mÆ +ƒÆ ˆ +ƒˆL« +ƒ«« Ž +ƒÀŽLÙ +ƒ«Ù­ó +ƒó8ÌéÉ‚ +ƒ‚ °²²Îý +ƒýLé + +ƒ«é +©Ø• +mè +ƒèÙ +ƒÙ ¢ ¢îŒ +ƒŒLÀ +ƒ«À¢Ø±É + ‚ÖÉ +L• +‚¡• Û + +ƒJÛ +LÈ +ƒ3È u +‚ u¢Ý­Á +ƒ¨ Á È +‚ŸÈ  +‚ž ç +ƒõç Ô ‘Ü ‚ÖÜÉ+Ñð““É-Šð›'›Éa… ð”K”Égü +ðâ 7â Éoã ðË=ËÉzÏ ð¯P¯L» +ƒ?» Ç +‚ÇÍmK +ƒKÄ +ƒÄŠÓ më +ƒë³ +ƒ³Lº +ƒFº  ‰ +‚‰Iÿ©8®m‡ +ƒ‡ž +ƒžŠ¾Iÿãm˜ +ƒ˜³ +ƒ³Lê +ƒFê©Ì HƒÌ¢õ Iƒõ  Å +ƒëÅ Lü +ƒFü È +ƒ@ÈL +ƒF ­ +ƒ8ï éý£ +ƒ£°ê ê ΄ +ƒ„LÐ +ƒFЩÕÒmê +ƒê +ƒÐ Ðî× +ƒ×LÎ +ƒFÎ ¢Ç±ƒ ‚ÖƒL€ + +‚œ€ + ß +ƒÓßL± +ƒ¿± ­Ç +ƒÔÇ®ô +ƒÔô ª +‚›ª ©Û @ +‚š@©Š Ä +ƒÑÄ é +ƒ¡é  Ò +‚ÉÒ ¼ ± + ‚Ö + à + +ƒÙà +¢«Š›L« +‚™« Ý +‚˜Ý  +‚— ©ÿ  ² +‚Ʋ ‰ ‘¿ ‚Ö¿­ù +ƒÖù ½ +ƒÖ½ðÚÚ­ï +ƒï  +‚Æ©(ï 8‘íÞ +ƒÞJ” Ý +‚–Ý©‚ ê +‚–ê­¡ +ƒ¡  ® +‚® Ó æ +‚•æ +ƒÖŽî +ƒÖî €±  ‚Ö  Ý +ƒÝ­Ô +ƒÖÔ®… +ƒÖ… › +‚Ñ›â +ƒâ©§ § +‚Ƨ©(Á8Ëí­ +ƒ­ JŠ  +‚–©€ Î +‚–έ› + +ƒÖ› +®¢ +ƒÖ¢  ¯ +‚ʯ­  +ƒ  Í +‚ÆÍ LÚ +‚”Ú × +‚“×  ô +‚’ô­º +‚µº…Å ‚ÓÅ ­¹ +‚µ¹ …³ ‚Ó³  œ±¤ ‚Ó¤ÉÚð‘B‘É ˆ ðªxªÉ0Ÿ ðß:ßÉ@¯ðèhèÉL‘ ðý#ýÉP·ð™.™É`×ð©V©Él– 𜠜 Épš +ð‰ +"‰ +Éöð¼¼É°‰ð¸¸ÉÐùðÞ Þ Éð¶ +ð¯¯L± +ƒ‡± ø +ƒIø Lç +ƒœç ò +ƒIò “ +‚‘“L£ +ƒœ£­Ž +‚µŽ®í +‚µí Èñ Ç + +‚Ç +ˆ‹‘ ‚Ö±Ò + ‚ÖÒ +ð³ +4³ +¢¢±ú ‚ÖúÇÇÊÍÍ m0 +‚µ0H¡ŠÞmÿ +‚µÿªÒhÿ + à +‚à — +ƒ —Lÿ +ƒ‡ÿ œ +ƒ{œLî +‚Žî © » +ƒW»L¬ +ƒœ¬ ȶ±\ ‚Ö\ðˆ +ˆ + ¶ +ƒI¶L¯ +ƒœ¯­ú +‚µú® +‚µ ¡ +‚¡­± +‚µ±®ø +‚µø Ÿ +‚³Ÿ  ‚ +‚Œ‚ ´ +ƒ ´ Ló +‚Žó ˆ +‚‹ˆ©ÿC +ƒÔí +ƒÔí©ó ¦ +‚Ħ ©ì ñ +‚Åñ ® +‚Ю ©ò í +‚Èí©¾   +‚Æ ê +ƒŽê ¸ +ƒš¸  À ±© ‚Ö© ž +‚Šž©¨ — +ƒÑ— Lâ +‚‰â  ` +‚ˆ` Š ±† ‚Ö† ž +ƒ¢ž ò +ƒ9 ò Ý +ƒÅ Ý ç +ƒ° ç ¤ +ƒJ¤  +ƒÓL +‚‡L³ +ƒ,³­$ +ƒ9$ðÛÛÉÀðÉçðê ê ɺðÏÏL( +ƒ!( ó + +ƒ9 ó +Lé +ƒ!é † +ƒ° † L˜ +ƒ!˜ í +ƒJí L™ + +ƒ!™ + ù +ƒÓù­û +ƒ9û¡iÆ)ÿ„ +ƒ9„ Ú +‚ÏÚª¡ +ðÄÆÄLÌ +‚ÉÌ “ +‚†“ ¥ ¢â Í +‚…Í    — +‚„—    +±  ‚Ö ð°°©­  ø +‚Æø ó‘Ò ‚ÖÒ ©+·  ú‘¿ + ‚Ö¿ +ˆœ ‘© ‚Ö©ˆ”‘Þ ‚ÖÞLÄ +ƒ…Ä©â ’ +‚Æ’ Ï‘Ò ‚ÖÒ ±§ ‚Õ§ —‘á ‚Öá #±‡ ‚Õ‡  €‘É ‚ÖÉ ´±À ‚ÕÀ ‘‚ ‚Ö‚ Ú +±é ‚Õé Æ ‘Ì ‚Ö̱ú ‚Õúˆö‘D ‚ÖD Ž ±Ý ‚ÕÝ  Ö ‘¡ ‚Ö¡ Ä±Ž ‚ÕŽ ü ‘† ‚Ö† Å ±‹ ‚Ö‹  +‚† »±Þ ‚ÖÞ  ð +‚†ð   “±› ‚Ö› Ð +‚ËÐ  È±æ ‚Öæ ‹ +‚Ë ° +±Æ ‚ÖÆ Ì +‚ÌÌ ¦±§ ‚Ö§ à +‚†Ã â Õ ©·q® ‚Ö®‘ÿ ‚Öÿ  +‚†  ê±´ ‚Õ´  ò +‚Áò ï±¢ ‚Ö¢ » +‚Ì» Ù±Û ‚ÖÛ É +‚ÃÉ Ò±† ‚Ö† Ù +‚ÌÙ Ì ±á ‚Õá ÷ +‚†÷ ò±‡ ‚Ö‡ ã +‚†ã  ‰±¼ ‚Õ¼ « +‚Á« ©   +‚Æ  ,±‡ ‚Õ‡ ƒ‘þ ‚Öþ ± ‚Õ ªÜˆý ±– ‚Õ–  ê ‰ +‚ƒ‰ LÜ +ƒlÜ ù±× ‚Ö× ¥ +‚‚¥   ¿  › +‚› …è ‚Ó膮 ‚Ó®¢–¡Ý ‚ÓÝ  ç +‚€ç  +‚†  ·±ì + ‚Öì + Æ +‚‚Æ  Ñ ¯ +‚¯ …k ‚Ók†ý ‚Óý ±±š ‚Óš Ó +‚€Ó Ð +‚†Ð  »  à +‚Ã È  à +‚Ã Ø +‚ÊØ   Ô ¢â©  ¦ + +‚~¦ + ò ±á ‚ÖáH¨8Øé‘ä + ‚Öä +h÷ª¸ÐÔ¨Ô¡Õ ‚ÖÕ  ’ +‚Æ’  ±¸ ‚Ö¸…Ï ‚ÕÏÈŸ ±& ‚Ö&…Ù ‚ÕÙÈŸL€ +‚}€ º +‚|º©÷ ¥‘ò ‚ÖòÉî°Œ3Œ¢ ±á ‚Öá  +š ÔÔè„i– HƒÈ– ¨®Š‘ iÎ IƒÈΪ䘠 ’ +‚{’  Ì +‚zÌ…è ‚Óè†é ‚Óé  +æ ±ò + ‚Óò +ðÅÅ  +‚y ©© ° +ƒ5° _Ì ©õq² ‚Ö²L§ +ƒ•§ Lô +‚xô  À +‚wÀ á +‚v᥀ ‚Õ€ ¦ú ‚Õú ª +‚uª  ò  ¡ +‚t¡ìœ +ƒÔœÐ­ ­ ÍÜ +ƒÔÜÐò ò Lò ¶ +ƒŒò ¶ ®‡ + +ƒÔ‡ +0ÿÿ­ó +ƒÔó ®­ +ƒÔ­ à +‚sà°iÎ HƒÈΨ÷Šid IƒÈdªƒ˜ò ƒ +‚rƒ©ÿ é +ƒ5é Ì • +‚t•ƒ +ƒÔƒŽù +ƒÔùŠ—0‹ f‹ ­ñ +ƒÔñ®[ +ƒÔ[  +‚sÔi¿ HƒÈ¿¨ ŠŸií IƒÈíª‘˜ü ¯ +‚q¯…É ‚ÕÉ†Ì ‚ÕÌ  ¦±£ ‚Ö£ð¾;¾ ÷ ±ý ‚ÕýÓ iž ¨ ‘Ë ‚ÖË ±­ ‚Ö­ í +‚pí  ±› ‚Õ›  à +‚oà°ì"ì § ±9 ‚Õ9è i¯ • +‚w•  ž±á ‚Öá   +‚w '±“ ‚Õ“  Ò +‚ÀÒ ’Ë©¶qŠ ‚ÖŠLþ +ƒEþ ¥Å ‚ÕÅ¦ë ‚Õë ‘ +‚u‘©… + ô +ƒ5ô ­‹ +ƒÖ‹®æ +ƒÖæ š +ƒrš  ô±ä ‚Öä …´ ‚Õ´È›±æ ‚Öæ…Š ‚ÕŠL +‚n©á Hƒá¢ + Iƒ +Lí +ƒrí©– Hƒ –¢† Iƒ †Lµ +ƒrµ  Ï +‚mÏ¢…Š§Lò +‚lò  +‚k ë +‚jë ©„  × +‚kש¥ Ü +‚kÜ©(Û   + +‚À  +©† + V +‚ÆV Ó‘¢ ‚Ö¢©’ ™ +‚k™©° ç +‚kç ÷ „ + +‚i„ + ñ + +‚Êñ +©ý Ç +‚ÆÇ ë +‚Íë ï ‘¦ ‚Ö¦ ©Ì ê +‚Èê Û‘è ‚Öè©¡ Ê‘› ‚֛Ȩ‘? ‚Ö? â +‚Éâ ‡‘Û ‚ÖÛ ¢æ ‹ +‚½‹†Ý ‚ÔÝþ ‚Ôþð› D›  § ¢ª±s ‚Ös ¤ÑÀ ‚ÖÀ°Õ8Õ Ù±¿ ‚Ö¿à   Éqö ‚Öö…¬ ‚Ó¬Šà Ècq ‚Ö…í ‚Óí ì±÷ ‚Ö÷ ‘š ‚Óš ï±Š ‚ÖŠ þÈ­qù ‚Öù ü +‚kü©á ÷ +‚k÷ ˜±Û ‚ÖÛ  Ï +‚ËÏ Ä ´©Å qŸ ‚ÖŸLü +ƒ¿ü  ü±š ‚Öš ð‘ 5‘  ö ±À ‚ÖÀɺг.³ ‹±• ‚Ö•8å é‘â + ‚Öâ +íÈ6qˆ ‚Öˆ Ä +‚kÄ ©é I +‚kI©  ® +‚Ë® þ ±Ÿ + ‚ÖŸ +ê ÈÙqö ‚Öö ý +‚ký ©Ã ¢ +‚΢L® +ƒÁ®¨É ±Ó ‚ÖÓÉ +Ñ Ðªª ü±Ë ‚Öˆ  zqô ‚Öô…U ‚ÓU©–ÈNq¯ ‚Ö¯… ‚Ó©ï +¨„‘Š ‚ÓŠ©º L£ +ƒ½£±¹ + ‚Ö¹ + ¹ +ƒ¨¹ ª¨ðÑÑ©ö ç‘ª ‚Öª £±å + ‚Öå +ÐÓÓLÓ¶ +ƒÿÓ¶  ¡±Ý ‚ÖÝ ò +‚Èò À ±š ‚Öš ë + +‚Æë + » +ƒŽ»­ý +ƒÔý®ì +ƒÔì Ã é +‚hé ©ÿñ¸ +ƒÔ¸š +ƒÔš   Ø Ø +‚gØ©¾ © +ƒÑ© © +±” ‚Ö”Éì  Ò +‚fÒ  Ü L… +‚e… " +‚d"  +Ï € +‚c€ ’ ø +‚bø©” – +‚a– € +‚d€ ©ù û +ƒ±ûªñ ÐííLí¶ +ƒÆí¶  ±±À ‚ÖÀ¢y – +‚»–†Ž ‚ÔŽø ‚ÔøÐÓÓª¿Lõ +ƒÆõ©• ý +‚aý Ž 2 +‚`2¢†ŠÓ ð +‚_ðLä +ƒŽä  ‚ +‚^‚ ˜ +‚]˜ ­ +‚_­ ’±ë ‚Öë ¢Á + „ +‚¼„†þ ‚Ôþ Æ ‚ÔÆð† +† Æ±” + ‚Ö” +8“é0• L÷ + +ƒ~÷ + ƒ±Ù + ‚ÖÙ +¢” È +‚ºÈ 7® ™ +‚\™  ^‘à ‚Öࢪ ! +‚[! ’¢–©õ Ý +‚ZÝ •  § +‚Y§ …é ‚Óé †¸ ‚Ó¸ ®±œ ‚Óœ ú‘¢ ‚Ö¢ªà ð» »±Ú ‚ÖÚ¢ö  µ +‚»µ†± ‚Ô±» ‚ԻЬ +¬ +   ° +‚Y°…½ ‚Ó½†Š ‚ÓŠ  +‚^ ˜ ‘ª ‚Óª È‘Š—‘‚ ‚Ó‚¢•˜ê  ¿LŽ +‚XŽ  µ +‚Wµ ­… +ƒÖ…®ƒ +ƒÖƒ   +‚W õ Q +‚VQ ” +ƒr”  ­ +‚É­ ç +‚Uç … +ƒr…LÆ + +‚TÆ + ï +‚Sï Û +‚RÛ©‰ Hƒ?‰¢µ Iƒ?µ Ð +‚SÐ  ¦ ¸ + +‚Q¸ + ° +ƒ°   ‘Ÿ ‚ÖŸ±‹ ‚֋Ш ¨ ©± Hƒ± ¢¬ Iƒ¬ ² +ƒË²¢Ø¡† ‚Ö† LÑ +‚PÑ© + Hƒ' +¢´ Iƒ'´ L† +ƒË†  — +‚O— ´ +‚­´ á +‚Oá ½ +‚N½…‡ ‚Ó‡†æ ‚Óæ é ‰ +‚M‰  ƒ‘‰ ‚Ó‰È Š’ +‘Š ‚ÓŠ ‡ +‚N‡…„ ‚Ó„ †þ ‚Óþ©€Ì  ‰ ‘© ‚Ó©L +‚L à +‚Kू ‚Õ‚¦  ‚Õ  ½ +‚K½   ˜ +‚J˜ Á +‚¬Á… ‚Õ†µ + ‚Õµ +¥è ‚Õèø ‚Õøðá ᩦ à ‘³ ‚ճγ +ƒØ³LŒ +ƒ· Œ­ü +ƒØü É +· ¹ +¹©ð HƒKð¢Ô IƒKÔ § +ƒË§Lo +ƒ· o Û  € +‚J€  « +‚²«†ž ‚Ôž À ‚ÔÀЙ ™   +ƒ L¡ +ƒ· ¡ ö +‚­ö…ß ‚Õ߆š ‚Õš…¨ ‚Ó¨†Ç ‚ÓÇ Å Ï +‚JÏ  î‘î + ‚Óî +ÈñŠÿ‘Ü ‚Óܘå î ‘á ‚Õá îù +ƒØù Œ ± ‚Ö…Œ ‚ՌȔ±· ‚Ö·…Å ‚ÕÅLM +‚IM ¶ +‚H¶©è Hƒ 袔 Iƒ ” € +‚G€©Ð Ï ‘· ‚Ö·É +„°‘-‘ ¬ +‚F¬…ƒ ‚Óƒ † ‚Ó ì±þ ‚ÓþÉ€ïÐÚ  Ú  • +‚F•…… ‚Ó… †£ ‚Ó£©· Ø ‘ ‚Ó¢Ž©ñ  Ö +‚EÖ •¬©ýqß ‚ÖßLÎ +ƒÓ ÎL +‚D à +‚Cà © Hƒ  ¢¬ Iƒ ¬  Í +‚BÍ©©  ¹‘£ ‚Ö£ ¢Ñ +±Å ‚ÖÅÉ +ñ°; ˆ +‚Aˆ …æ ‚Óæ†Ä ‚ÓÄ è±® ‚ӮɀÆÐ55 ö +‚Aö Ž +‚@Ž ™ +‚²™ †× ‚Ô× H ‚ÔHС  ¡  ÿ +ƒ ÿ Æ +ƒÅ Æ¢É Š¹LÄ +‚?Ä¢¥ ©ã  +‚> “ä ©¬qº ‚ÖºL¸ +ƒ +¸©ÂLÿ +‚?ÿ Ú +‚=Ú  C¸  â +‚<â©  á +‚;á©P » ‘í ‚Öí Iß ‰ +‚:‰ GÆ¢À±¤ ‚Ö¤  ¢ +‚9¢ ¿ +‚8¿8Æ Äñ³ ‚Ö³HŠ‹Èòñº ‚Öº ªíhô Cæ ” +‚7”  DÄ  ä +‚6ä ã +‚³ã Cš ½ +‚5½  T¢û±“ ‚Ö“  +¥ÙÙè€ ã iˆììèL¿eÎ ‚ÖÎ…Œ + ‚ÓŒ +Š¤ e´ ‚Ö´ …° ‚Ó°  D% ˆ +‚6ˆ ú‘ ‚ÓÂȨŠþ +‘Õ ‚ÓÕÈ–±« + ‚Ö« +˜ iú )¶‘„ ‚Ö„ Då S +‚6S FËѪ ‚ÖªŠ“ÈWñ‚ ‚Ö‚¯ +³¯ + DÕ Ç +‚6Ç FãÑÙ ‚Ö٠Њû Èí ÑÐ ‚ÖÐð  †±à ‚Öàз0·ˆ†±© ‚Ö© É §Ðã)ã Î¢¨± ‚Ö 8ô Eññ½ ‚Ö½8Òéî)ü +å¼¼èžtiì ì 趟 eð ‚Ö𨊃eÊ ‚Öʪ‡˜‡ Ù +‚4ÙLÖ +ƒ4 Ö¢©J Þ +‚3ÞLµ +ƒn +µ HÃL +‚2 *Ø + ¼ +‚1¼­§ +ƒh§ Ñ +‚0Ñ­Â +ƒhÂá +i„ Ô +‚0Ô­ß +ƒß®ƒ + +ƒƒ + ¢ + +‚/¢ +©… j +ƒa +j ü +‚/ü­° +ƒh°’iº Ë ‘´ ‚Ö´ÍÊ +ƒhÊ„ Ü „ Ü L„ û +ƒ „ û ‚ + +‚.‚ +©¾ ì +‚-ì · +‚/· Œ±ê + ‚Öê + å +‚´å ä‘Ÿ ‚ÖŸ Ë +‚,Ë ìö +‚µöЧ§Íç +‚µç ÐÖ  Ö ©-ý   +è ‘Ê ‚ÖÊ ©>ðÈŠ ‘« ‚Ö« ò +‚,ò  Ð + +‚¬Ð +†Œ ‚ÔŒê ‚ÔêðŽŽ©*˜   ¥‘È ‚ÖÈ  – +‚,–ìÿ +ƒÿ Ðã &ã Í­ +ƒ­Ðæ!æ©ß  õ +‚Çõ©4 ² +‚0² ì±À ‚ÖÀ Ó +‚0Ó©ë ˆ +‚-ˆ 8 +‚Ê8©®  Í +‚ÇÍLù + +ƒò ù +©¾ ì +‚0ì ² +± ‚Ö  þ +‚0þ©‹  +‚-  E +‚ÊE  ±Ý ‚ÖÝ¢þ à +‚+à‰¾ ©²qú ‚ÖúLÄ +ƒf Ä Æ +‚,Æ .ø L™ +‚*™­¦ +ƒ¦®Œ +ƒŒ  ¹ +‚)¹ ðL× +‚(×­Á +ƒÁ …– ‚Ó–­¶ +ƒ¶…¡ ‚Ó¡ ó ±‘ + ‚Ó‘ +Éž ð = É žðÑ-ÑÉ0Ç ðå5åÉ@†ðÎdÎÉL« ðÜ!ÜÉPè ðŠ)ŠÉ`½ðÄ +EÄ +Él¾ +ðððÉpþðÜÜÉüð¾¾É°ö ðƒ ƒ ÉÐôð»»Éð’ð `· à + +ƒ à +L® + +ƒ« ® + ™ +ƒ ™LÞ +ƒ¨ Þ ­Ò +ƒÒ®› +ƒ› œ +‚'œ ± +‚&±­ð +ƒð®é +ƒé Ó + +‚%Ó + ¿ Þ +‚$Þ ‰ +‚#‰Lð +ƒ« 𠢪Š“ Þm° +‚°° Ž Ž è—  è +‚"è Ÿ +‚%ŸLý +ƒ« ý¢¹ ©º m˜ +‚°˜û û è½  ¸ +‚"¸ð +ƒðŽÉ +ƒÉ`¼­¶ +‚µ¶  +ƒ ­Ï +‚µÏÁ +ƒÁ`’ ¶ +ƒ² ¶L´ +ƒ9 ´­ø +ƒxø ª iõ ø +‚!ø ä ±¸ ‚Ö¸¢i¯  « +‚!«­æ +ƒxæ ü +‚!ü ã±Ä ‚ÖÄ © +‚!© ð ˜Êq× ‚Öבž ‚Öž œ +‚Îœ­— +‚µ—®• +‚µ•  “ +‚¾“ Š±º ‚Öº ¿ +‚!¿ Ð ˆ˜—q¾ ‚Ö¾‘à ‚ÖÃ Ø +‚ÎØ­§ +‚¶§ ˜ +‚¿˜ ÿ±Ê ‚ÖÊ  ‚ +‚!‚ ñ혩qª ‚Öª‘ + ‚Ö + Á +‚ÎÁ­Ù +‚¹Ù  Á +‚¿Á n±… ‚Ö…  +‚! ñŘ¼ +qõ ‚Öõ ‘¹ ‚Ö¹ » +‚λ ­° +‚¸°   +‚¿  ˜±‘ ‚Ö‘ ˜ +‚!˜ è ˜Ú qÖ ‚ÖÖ‘ ‚Ö ¨ +‚Ψ­Í +‚·Í ‚ +‚¿‚  à ±Æ ‚ÖÆ ½ +‚!½ ôÙ˜ÉqÏ ‚ÖÏ‘÷ ‚Ö÷ à +‚Îà­× + +‚°× + ² +‚¿² <±« ‚Ö« ú + +‚!ú + § +ð˜­q… ‚Ö…‘ ‚Ö ß +‚Îß­‰ +‚¯‰®Þ +‚¯Þ  ð +‚¾ð ±Ü ‚ÖÜ  Û +‚!Û † ³˜Ú qà ‚Öà‘µ ‚Öµ ƒ +‚΃­é +‚®é®³ +‚®³  ™ +‚¾™¢ñŠäL‹ +‚ ‹L + +ƒÅ  +­à +ƒà  ó +‚ó­ì +ƒˆì ¬ iŒ ‰ +‚‰ î ±³ ‚Ö³½i¹ „ +‚„ × +‚×­ +ƒˆ 8ûé  Í‘¥ ‚Ö¥¢¥ +±Î ‚ÖÎ8Þí  +ƒˆ …¼ ‚Ô¼ ¥õ ‚ÔõðO M   ±Œ ‚ÖŒ ï +‚ï è +±™ ‚Ö™ ì +‚Îì ‚±ã ‚Öã Í +‚¿Í â±à ‚Öà  ¾ +‚¾ ¦±Â ‚Ö   +‚Π ¢i©Ž ÷ Ðq° ‚Ö°°°è÷…œ ‚Óœ†ß ‚Óß ¯ ±ø + ‚Óø + ë +‚¿ë  ­‚©¢q¿ ‚Ö¿‘Ö ‚ÖÖ À±ˆ ‚Öˆ8îéˆ L +ƒÔ   ±±… ‚Ö…LÛ +‚Û­ô +‚°ô;i‡ ¶ +ƒ¶`â ä +ƒ:äLâ +ƒ° â ­Ý +ƒÝ®~ +ƒ~ h +‚h­Œ +ƒ˜Œ ŽiÀ  ì +‚ì ž +‚ž­ü +ƒ˜ü 8ÑéÁ Ë‘ü ‚Öü8Îí› +ƒ˜›…¯ ‚Ô¯ ¥º + ‚Ôº +ðÈ +,È +»*»Èí ±· ‚Ö·  ‹ +‚‹ ©±™ ‚Ö™ Ÿ +‚Ο Á Ê +‚Ê ¦ +‚¦ À + +‚¾À + ¢ ¢² ˜˜ + “ +‚“ ” ±Ë + ‚ÖË +8Þ +éçL’ +ƒg’­¬ +ƒ˜¬Ñi„ û +‚û­å +ƒ˜å8º é× ß +‚ß©Š HƒRŠ¢Ô IƒRÔ ™ +‚Ê™  ÷  î +‚îLÜ +‚Ü­Ï +‚¯Ï — +ƒ—­¤ +‚¯¤ó +ƒó`ü “ +ƒÀ“ L¦ +ƒJ¦ )  Õ +‚Õ­® +ƒ®®ë +ƒë Ï + +‚Ï +­¥ +ƒ¨¥ ± +i³ ’ +‚’ Æ æ +‚æ ­‰ +ƒ¨‰­iô ƒ‘ô ‚ÖôÍÕ +ƒ¨Õ°‰9‰ Î±Ó ‚ÖÓ ˆ +‚ˆ ª±‘ ‚Ö‘ ¼ +‚¼ ô  ª + +‚ª +© +¼ ½ +‚½ û +‚û©Ì ý +‚ý ˜ +‚±˜ Ë +‚ÊË †¢Ê©µ Ó +‚Ó ”B©¶ q‘ ‚Ö‘L +ƒ÷ˆ²  š +‚š .üL© +‚© ©ùÞ +ƒÞƒ +ƒƒ `Ö­ª +‚µª®> +‚µ> ã + +‚ ã + ñ Lb +‚ b Ÿ +‚ Ÿ¢‡ ¡½ ‚Ö½Ý mý +‚°ý ØØè…ï ‚Óï†: ‚Ó:¢ÈŠå ¸ e´ + ‚Ó´ +H²Š£ef ‚ÓfªÖh¨  · +‚ +· L® +‚ ®©“ + Î +ƒWÎ µ +‚µLÚ +ƒ Ú ¤ + +‚¤ +­« +ƒÙ« ðáá©Ó’ +ƒÙ’  © +ƒ¢©  Ö +ƒ¿ Ö Ë +ƒ­ Ë r +ƒDr º +ƒÍº Ô + +ƒÓÔ + ø +ƒ² ø ë +ƒÅ ë ÷ +ƒ:÷ ¯ +ƒÀ¯©Ë¨Ô‘× ‚Ö× L£ +ƒÒ£ ­ +ƒÔ ®å +ƒÔå ¦ +‚¦ÞiÍ HƒÈͨ¬ŠÊ +iÏ IƒÈϪᘠæ +‚æ  £ µ +‚µ ¦ +‚¦ ÿ ‘‚ ‚Ö‚¢—±­ ‚֭Ф ¤ L¤ ¶ +ƒ™¤ ¶ É +‡ÐââLⶠ+ƒ†â¶ É — +м ¼ L¼ ¶ +ƒs¼ ¶ É1Ãð‡8‡É2ý +ðû4ûÉ3› ðë0ëÉ4û ðÕ,ÕÉ5ð¿ (¿ É?ÁðÍ6ÍÉcÂЦ¦L¦¶ +ƒ™¦¶ ÉhŽ +ð½ =½ Éqçм¼L¼¶ +ƒÆ¼¶ Ér¹ÐóóLó¶ +ƒ½ó¶ És± ð¥z¥ÉuÈ ðèèL‘ +ƒÐ‘±¥ ‚Ö¥ 1Ù × +‚× à +‚ੈ õ +ƒÑõ Lõ +ƒÐõ  û +ƒLûLå +ƒÐå £ +ƒ{£ ©È  ”‘£ ‚Ö£L… +ƒÒ… ­› +‚µ›®/ +‚µ/ì¤ +ƒ¤ÐààÍ +ƒÂðžož­þ +ƒþ®³ +ƒ³  § +ƒ §©È ß‘† ‚Ö†LÎ +ƒÒΘè ë +ƒèë  Ù +ƒ +Ù ªÐð±S±©¸ Å‘þ ‚ÖþLø +ƒÒøŠð + „ +ƒè„  Ò +ƒ +Ò ªÈð¶ @¶ © ô‘ž + ‚Öž +LØ +ƒÒؘ¼ˆö‘ ‚ÖLÊ +ƒÒÊ­¿ +‚µ¿ ®e +‚µe Í +‚³Í„må +‚µå« +‚µ« ŠËmè +‚µè› +‚µ› æ +ƒ¿ æ LÄ +ƒÐÄ ­× +ƒÔ× · +ƒÙ·L– +ƒÐ–  š +‚К¢ù ©= Ô +‚ÒÔ ×±– + ‚Ö– +Ð  L ¶ +ƒ¹ ¶ Lë +‚ë ÔÞÞFÍ3Í,Í ÍuÍ Í Í Í Í ÍRÍuÍnÍ ÍuÍnÍt×i×l× ×s×u×b×r×o×u×t×i×n×e× ×r×e•t•u•r•n•s••C¥a¥n¥n¥o¥t¥ ¥s¥e¥t¥ ¥b¥r¥e¥a¥k¥pqoqiqnqtq q-q qpqrqeqsqsq qaq qkžežyžžToo many breakpoiênêtêsê ê-ê êpêrêeêsêsê êaê êkêeÐyÐÐsž  ž  ž  ž  ž  ž  ž  ž  ž  ž Sž kž iž pž  ž nž eŒxŒtŒ ŒiŒnŒsŒtŒrŒuŒcŒtŒiŒoŒnŒŒ1‹ -‹ 5‹  ‹  ‹  ‹  ‹  ‹  ‹  ‹ S‹ e‹ l‹ e‹ c‹ t‹  ˜a˜c˜t˜i˜v˜e˜ ˜w˜i˜n˜d˜o˜w˜˜p˜  ˜  ˜  ˜  ˜  ˜  ˜  ˜  ˜  ˜ U˜ s˜ e˜  ˜ a˜ s˜  ÅnÅeÅwÅ ÅPÅCÅ ÅvÅaÅlÅuÅeÅÅfù  ù  ù  ù  ù  ù  ù  ù  ù  ù Fù où lù lù où wù  —i—n—s—t—r—u—c—t—i—o—n——Fw2w,w wtw w w w w wTwowgwgwlwew £b£r£e£a£k£p£o£i£n£t££Iðnðvðaðlðiðdð ðiðnðpðuðtð ð-ð ðpFrFeFsFsF FaF FkFeFyFFPö rö eö sö sö  ö aö nö yö  ö kö eö yö  ö tö oö  ÚcÚoÚnÚtÚiÚnÚuÚeÚÚFÂ4Â, Âh     ÂRÂuÂn ÂtÂo cursorrÅ Å Å Å Å Å Å Å Å ÅRÅeÅdÅrÅaÅwÅ Ê sÊ cÊ rÊ eÊ eÊ nÊ Ê aÚ/ÚzÚ Ú Ú Ú Ú Ú Ú ÚMÚoÚvÚeÚ ÚuÚpÔ/ÔdÔoÔwÔnÔÔCéuéréséoéré é é é éMéoévéeé éuépÚ/ÚdÚoÚwÚnÚÚo— — — — — — — — — —G—o—t—o— —o—rÉ iÉ gÉ iÉ nÉ É F˜7˜,˜ ˜s˜p˜a˜c˜e˜ ˜S˜t˜e˜p˜ ˜i˜nštšoššFû 8û ,û  û eû nû tû eû rû  û Sû tû eû pû  û oû v‚ e‚ r‚ ‚ +…  …  …  …  …  …  …  …  …  … P… a… g… e…  … d… oó wó nó ó c²  ²  ²  ²  ²  ²  ²  ²  ²  ² C² o² n² t² i² n² uøeøø-¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨P¨a¨g¨e¨ ¨u¨pëëPress F1 for helpøøqÑ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ ÑQÑuÑiÑtÑÑFÖ1Ö,Ö Ö?Ö Ö Ö Ö Ö ÖHÖeÖlÖpÖÖG¿o¿t¿o¿:¿ ¿¿S¢R¢¢CÉSÉÉH I  SP-Ÿ>ŸŸP›C››XÍ Í A±±Y    cÕ::ßßå å ûûÒ “Öí +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +í +«çÖÚ¬í¹ +ƒU· +¤î +ƒF¾ Û£ +ƒZš¾Ä +ƒXÝ +¾± +ƒ\Á œ™ +ƒOà™Ç +ƒIŽÊ¬ +ƒL—¸… +ƒ0 öê +ƒèéõ½ +ƒG›ã +ƒ:­ •Î +ƒ®Ó–Ø +ƒÂ‘Ûæ +ƒŽ*ëO +ƒÖÖ°3 +ƒý° ¨ +ƒµ ß  + +ƒjÊï ¥ +ƒêù ‹ + » +ƒËª a +ƒ˜Õ€Õ +ƒ­Œ™ž +ƒ!¹x +ƒRÎ +«Z +ƒn±+¬ +‘+æ ++·õÀ» Ø¥©´ +ƒÕÑ Ç+§+Þ+Š ++Ä€ 'ú Õ ùµ¾ +ƒÄÁ µ +ƒ•+«+ï+´+Î Ü  ÷ 'ì ³‚Ô ý +ƒÇô î+ +ß +Ö +ö +]'‡ÈÑŸ¶ +ƒ)òö¡ ++ó+ç+­ +Ë Û •ë +Ý +ƒ±× +²+Ò+´+ñ ’÷')’ &ƒÊ  +ƒLÎ Ü +ƒ û + +ƒhõ +ƒx“ +ƒˆã +ƒ˜¤ +ƒ¨¤ +ƒ¸ïÿÿ¼ éÅœ ×Ø×—ç +ë…ç +à†ç +×Æç +¦Þç +µÀç +æéç +¦Âç +¤ +¬ç +µËç +®Àç +· ç +ŸÞç +b¬ç +ã +àç +© µç +šßç +Óþç +½ûç +æ ª +ç +’ˆ¼ý…ç +Ï +û×ç +ÕŠç +Üßç +“Àç +¦µç +ÊîŒç +žç +ì‹ûß…ç +hŠç +ÛŒç +×ç +ó‰„ヒç +‹ç + ø«ü©¿‚˜½ú +ÛÀç +è¸Çç +‰Áç +Þ¬ç +Ó +Ÿ…ç +±Ãç +œÞç +׬ç +¹àç +™‡ç +Äç +Ë ò –Æþç +ìˆ åç +‚ +…ç +¢ +ü·ç +ÑÔ²Óìþ×ç +¼àç +‡ç +ÞÀç +Ùßç +½ µç +äˆSÇÚç +” ›ç +¿šç +¢ûç +‰¯ç +á×ç +âç +Ú ‡ç +‹ç +ÄÿÀç +Ž„ç +ˆ ö…ç +ÍŒç +à ‹ç +‡ç +Ö„ç +¬•…ç +€Œç +¶Šç +Mµç +˜€ Ï …ç +ཊç +µç +‰ „ç +½‡…ç +—á‹ç +ѵç +¸ +Œç +Û…ç +ïÐ Šç +Æ +„ç +çµç +Q…ç +µ àç +Ž µç +§ °ßç +݇ç +!†ç +™ ƒç +˜„ç +‚xç +ð­Úç +2þç +–ýûç +ø×ç +€…ç +"€ àç +…üç +Òûç +ØÚç +é µç +„ +òç +ë ç + +×Ü™çü÷Ä Iý Ëç +òç +Ïïç +îç +à¯ç +íÀç +¯êç +ƒéç +àµç +¡•…ç +ª ‘Œç +áç +À• ‹ç +ô åç + xç +ÌÀç +’ uç +ºàç +€ßç +¦ +Þç +ÃÝç +çÓµç +› ¯ ïç +¥ ÆÚç +‰ ×ç +— Öç +Í ç + “ð Ã÷ã ÐËç +ç +`Ëç +â ¯ç +žç +ˆÇç +‚…ç +¡—ç +î óÃç +ÃÁç +Ç +Àç +“Œç +ôç +× ‹ç +Úµç +æç +ÝêÎŒç + …ç +Ý—ç +«¯ç +@…ç +ª ‹ç +€ +„ç +lj…ç +£ç +ÈŒç +u—ç +•ç +ÈŒç +½ +—ç +‹ç +mŒç +¡ ‹ç +³ …ç +Ïó„ç +Áxç +‘ uç +}:Õ +Ð +Á9ßö´6Åé³ 5”Ï ¤‰Þ 4Ìý ô× +° ˜3ʘ2´™ «1¾ Í㟠Ú0•å/Ö ›/¿ eå« è›ª>—• ¶Ïöç º¹ Ží 0ÿú±ø€.‹§-ð Í,þ° +¨Ù *Œ È)¼–µ(¹„'…‹&äÀ +“ð™%±Íë ˜Á ‚ ²$¤  +Ò#+ò« "¨ ®!ó‹É Œ¦ ²ñ VÇë +ø’’²§Í ŽõÍ® êòíó­âÌҲ˙ 8Eñ +Ø ¯äϮР1̻٬ëø Ÿì  œØÁ» ¨à߃¢úÚã š® ê›» +Ô ¬;ï:´ +fœßø +–¡‘ +Œ +° ÂÕæÄ®ƒ þ… £¨Çî +܇扊„ þ©é ¸œ½Šª ‚¬íšUŠèéò +è®Ý kýšÅ ³ ¤ ¬¯ º +¼ õŒê× Hž ÀŽøþ Ʊ»ÝþÖ +'‚ µ +èø³ßšá ŒÅ€ úÉÌ ý› 9“ Åë´Š§‡ ÀéúÝ Ž´ ἇ –ÏÙÖ +È× ‚­¥£†þž +– +½ôÓ‘‘ü· ™Ë +³¥ÎŒ™ãà °¿Öˆ…¸Äמº¾ÃÊ ª +…õ ¹‘ÖÆÏ÷«…Ü àµ´ê +ŸÊ «È À Ýúí¤ ³º “ δ « +„ª‚Ù Ðà©  ½ðÊ£ ź·ß·Ÿ‹† Àë ” +Ù +à¢Ú¢¦ è›?Û sÀ¿ö÷ Š ùÛ Ÿš À•â +ˆŸ +öÓËô¯¹ +ªå +Ýš”£Ë ­á Šä æòá ² Ò ¿ +©ÞÒ áÉ‚ÌD¡†‹Þ ›æƧ®ÿ¢Û†‡þ×ì +áä +Õ ¸&†©Ò +ú\¿  +܃µƒÈÉ +Ç ãpß +¯´¸;ƒ†Ö‘¤¸8ƒ – Ž ¬ 蔸7ƒØÃÆ ³ü ùš·Ó ‚Ì—Ûà̼𠿞©¢ †ð ÿ +Å׉Çô ² “ œ“²Òà +·‰ Ô ÐŽôÐÔ –Üh–ŠÌè¦ì mý¢‚ •„Í çÿúšÎÉ +žû§ÐÞ‘\§† ³äí×  jʾ á‚ä› ² +†” +Ĉ± µ½† ýñ|Ñß +¤ ‹îÛ¡ØѲôÒÙ¸ èúžÔ +¥Íß…â ™ ²–ê ƒžŠ¨¬ ËUú —ë‰ ¡ ü +´»¤Ñ±Þ Úæ¯õ ‹ ù䛳 ç ÷¿ ôŶ¯ ²¬ Õ +ǫ́’ Ó +© À ɤÝËì·-š ·ƒŽàÕ‚õ  ÛÓЩ‡ »ã–ù šÐ¯Pªª ¤ðÎÿ°¢¥Éœ£…èù¯ +™ ¶ÃÒÜÂÔ‹à…… ¸ +€¬ŸŸ‰ ŸêªØ×è ÝÚµ¢Üí²ÑýšžÐ¥ ›Œ ‰ ޵̴æåä ¸ê ¸ × Ö0þ œ ­M¦]¯¦‚ÒíÒ÷ øÙºÕ칈 ‡®’ º lHò³œ–ú¬ú +ê£ÍGçá ¸ëÀ¸Ü  £¢ŒØƒÁ +¿È…·àî ê‚ê¬ +äŠãâÏ +¬‚¡ ë +¶â§ªúÁ ô Ê¥Ò?ó µ º ± íòòÛå Ü ¢½õ +‚Œ¨ ž«§ € ¡ "òÁƒê×)ð¼ ™ož úÔí‚ ×ˆ€ ò å¬áß›¦âá¾ì Ž>“©· &ßÜ´î ž ü’Ø ¼ÖèؤÝù–”y†áÔÙ +Ö +Ês¸ ¥™™ˆ¿ô­ØôãÂ˸¨Ÿæ Ֆ¬ fœÐíþ³‚ Ê +ðŽµÉ§ÙÜÅÜú ú‚Á› +ÓåW¹ +ö¼—Ý ÷³ò œ Ζ¸¬ÿïÇýõÓ ¼èˆ˜×ù—ʱÚ÷©¢í +€C翨 à ø»À  ˜éô­ šÃ™–ûÆ ¨¸Ÿ › ß °•µå Õ » ¹›Ø˜¸ˆÛ€§ ÌÊÕùªó¿Ú£¡žËÕ õÄÄ ¶}±…»Úƒˆëö¨‹L˜‚áãÆñ’‘© ¢ñ Ù¶å +ûš¦ Áò‹ö¯é +¹Ö¡€ ¡ª´Ï€ Ý¼øŒÍ± ÌOéÑåŠ ÂÔ ý +ã Υ͹ضÚà·£ —• ý6ÀÖ Ípµ• °ÿì Ü´±Õׂ¨ë ‘  ´µ ›µ ¿ î½ Æ–„ EÝ¡Å îðÆõõ¡ ‰·Õž³ +³ Ü•§°Í à +¡Å½Ì¦±ÒÐñ‘gòæ †  +„ÎÌ Ñ ï ¾äÓœ½ Ü +°­  – üç +°Ò„±ŽÚ‰ +ÏéÚ ö‚ƒäÖ‘ÂÙý Ù Îûáæ¶ +µ­÷¼ìòÈ âæ¤ ôÕÍÇøÀ ëí³ó ˆ ÿÝ㈞ÿú”È„Ä— ¯ñ¿ ´ ù +ƒ°¶ž™ô”ðÛ +tÞ®”“±ªbÎ +kœ½ ü ªÒ° ÃÍêø ½·áˆª Ä +Ÿñ¾ +•ÛÈ æ¬Ê Ããš Ž‡£¡Ü“ À¶³ûÎè ºåÙ÷ ÐóíêƒÃÛ €’3È°¥ Ë… « éÈÍ„çîâª¤Ú öÉ• ´øÛ¶š +áëÔ» Þ è +îà· +ø€ «¦´ŽTРՄўźØë¹å1ð½ +ðÓ‰Ø ÛÑÝõé ⠈ѫ¡Ëà Œ œAô Ì›4Œ‘ Éç“àËÒª … ó²Õ;ÑËа –Ž®ÄÞØ ¢ÂžäÁ ‡·ü ú¢ ˜¢º ¢¯•”Ú”ÞÒ òú Ûe× Ú·§ö® ñ‘à ÇJëÃߌ§¸§æù˜åÄ ûüªüºò¥nîùÖæ Ô ÿø Í«óá$œÔç Ö÷ï­ð¯â‰¿.¥ô환 +€À‚“ ›‘ÛËÑêñÌ Ÿ‚ÍŸ Œ£^!¢Í +«Ÿîÿi· Ç ¤º…ÖȃŒ  üÐ 5ê +Ÿ’Ë º Š ©» þæá æô‡ „„¢íÙȬ÷ +ææÀÁíâ‡ÏéÄ’ãÁÏרߌѵðÒ +•” —³½×áóŒ€q¨³ ˜ÉÊËìÏ•¥ÞIÚ +ð +ç¨ëã’ ßË âáê ï£Ø ½¥ºÓdöô ͇à„ûÞ +Ï ùÝ°þ +÷­é¹ ‹ ª +¯š1¿ +ìÙßÕÀ ”ìàÆåãø ¸ŠÕÚκ +ß ± +› ¶Šœxðù Τ¢À‹ €ü µ¾¾œ‰ÞüЄŠ ° +¤Ïå–ÁÀýä Á šü ÊÝˆó‡Š ë© ‘=× ¥ ¯ Þ†Ïûö º¥Îá à œ°¼¯Áþ¨†…æ 5 +øŠؾÙFÂõÜÊ€ ÏÆ­ ¢Ì³ß´ ®ÞÉ   ý» +ø—•å»ÿ â‡üãÛÂù«éùó¾« +Ùò Ñû‘ æ +¯ %¥ ßµ ‹ìÝÕ ‘Рݹý¥¼ É Ä”ýÍż—è¤À +Ì Ä ›­É‹_®âÝ «´ñ ¹  ÁÝõé‘Å[@Š¤¥ì Óßò +ÚNÖ«šÅ ‹É‡ßÆ™ÿüÓú*§¼Œé¹ Å Ñß·– …‘øð é‹úçÓ© õ§›°Á(ü Á¿‚ õ“ЬŠ¥Ž² èÛ ÷’ ú°ï Ž «‰àœ òÁªŽ« ç›óòÞŽ ‡Á£ … ã ¦„¼ ¾Ù ÈŠ¨ñ®ü 𖜓˜ …±ªÔ½öòŠ +³Æ¦ £ ¸£ãÚ² »›‘”ô‹Õõ£Ïãþ·aà„” ÀÁ²Êáñù ·‹Ì +­âër°èÜ겆ÓæË “ã²²¶3êК ôßø +®š™€¨§Ž ‰ ·Û VîÖÙö ™€ìºìäÑ Éïšì¿ þ —ðó¾ ö +Ñ +ˆ’Ñ©ÏÐÂâ»†Ô Ü ®¤ “³ÙÔ³îë®îÀ¤ÂñêôÚá¿ù,ɾ¡È® „ ö2ź¨êÖ¼ ¥¬Ç Õ —Ìæ¡ç¦ä×Åî +4ª¹ïÒ ãå Ô“‡Î ¡þõ à Î ûºÞ •  à Þ™ ã +ƒwþøô +Ž¤Ö èÆ™¡ï•¾ÇŸá µû šÀí ĿƽcR÷K˜Ç +— Âû¶ òŸ´ +¾ év½ ÷±Óz¨Åù„ ïÓà ¹û +”µ‹“©ÒŸœ ŒŒ¤ª ÕÏ‘ ÈúŠŠè» ¹— /­‚ï +ÈƲ® ¦‰¿»¾ ó¾:Ê èÊ ÏÔ˜®³ÃñåÇçÿ· åu뛎¿›Æäì +¯¼™ÈÓê íš~£ ×Þì ™ +í Ö©’é ØÓ Ÿ «¦ÔÑç é Ú ¹ Þ’’“ þîÁ¸– ¡åâ­ +Õï§ Å„‰ÿ Ë‘ Ï    Šñ +Œ½­Ÿ#¹±’½ï»éí¶øÖ Ï¡ƒ ü¼‘†ó°Û¬×”¶ úý öÄ…£†Ò‘´ ‡ ÉÇžáè •¶˜þÏìß ØªäÜÙ¢þüÁ ǽÿ” àÒ¶ '©Óú‡ˆ Ç€’Ë +Ý΢ Î +ÊýÇ›Œô ´Ä`ˆ +‹…¶â§îÙ Ñ —Á»½Bçö—È +†Í¦Ý +Sƒž ¼‰–¯ Ô£Ûµ´ õ“ƃ Dç ×Ö“˜Æ û Å €‡Æ +øˆŒï•¨ Ö ÊÓÇè­Žž˜ Ò ÔÎ¸à“¬ ­¯ñÉÝÐõöƒ‚â +á +Í¿‘’ý±ÜZ£¢ « È í¹ ó™®ô¿‰ºÆ ˜ „ ƒ  Œ ò¹{£•Ã؉’ä¨ ž¦ šä +Ó÷ľó +ÄÅ +ƒí–ã«Öš”« Qä àü“þ°  „ +Ù û±<á²ý¤ É»ŽÉ¬ ˆÔ˜øŒ +¤¦í¬­ ÷È›™Ì× +¹½’Ø +”ð® +Çñ÷…¾‹Í â ÷×YXÝ Ë Òë.þÑõ­ä ÿ© â¾ö嫼 +Ð +©Ü²ñ § ìÒæ®ò‘¥ +‡†ë © +Û©µ +—¦+¼À¦ îÙ __SIM6502__../libwrk/sim6502/dbg.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_exit_strlen_clrscr_kbhit_gotoxy_wherex_cputc_cputcxy_cputsxy_cgetc_cursor_revers +_textcolor_bgcolor _bordercolor_chline _chlinexy _cvlinexy _cclearxy _cputhex8 +_cputhex16_isalnum_isdigit _isxdigit_toupper_brk_a_brk_x_brk_y_brk_sr_brk_pc +_DbgDisAsm _DbgDisAsmLen _DbgIsRAM _DbgMemDump_DbgSP_DbgCS_DbgHI_DbgBreakCount +_DbgBreaks_DbgGetBreakSlot _DbgIsBreak _DbgEntry_RegText.sizeL0004L0008L000CL0010L0014L0018L001CL0020 _HelpTextL0024L0028L002CL0030L0034L0038L003CL0040L0044L0048L004CL0050L0054L0058L005CL0060L0064L0068 _AsmFrame _AsmHandler _RegFrame _RegHandler _StackFrame _StackHandler _CStackFrame_CStackHandler +_DumpFrame _DumpHandler +_HelpFrame _HelpHandler_Frames _ActiveFrame _ActivePromptL0209L021DL0204L016FL016BL01FEL0395_AsmAddr _DumpAddr _CStackAddr +_StackAddr _PromptColor _PromptLengthdecsp3L02DF +_UpdateAsmstax0sp _GetKeyUpdateL02EAL02EEL0306L02F8L02FBL02FFL0302L02F4L030CL04DCldax0sppushax_AsmBack_DbgToggleUserBreak +_AsmFollow +_InputGoto_AsmHomeincsp3decsp1pushaL0364L036DL0371L0378L0375L037BL04DDL036B +_StackHomeincsp2 _UpdateStackL03A0L03A9L03ADL03B4L03B1L03B9L04DEL03A7 _CStackHome _UpdateCStackshlax3L03DCL03E5L03E9L03F4L03EDL03F1L03F9L04DFL03E3 _DumpHome _UpdateDumppusha0_ActivateFrame _AnyKeyPrompt_Redraw_DisplayPromptL0150ldaxysp _SingleStepL042FL0442L043DL0419L043AL041DL0417 _GetArg16L04E0ldaxildaidxL0438incax2_DbgSetTmpBreak _SetRTSBreak _GetStack16tosaddax _RedrawStatic _DrawFrames _HelpPromptincsp1 +_UpdateRegL0464L0467L04E1L046DL0470L0473L0476L04E2 +_DrawFrameregswap2subyspL00CFL04E4staxyspL010CL010Atosadda0ldaxidxaddeqyspaddyspL04E6L0117L04E7L0118pushw0spL04EAL012AL012Caslax1pushwL0132L013CL04E9tosicmp0incsp6 _IsAbortKey_Inputdecsp8L018AL018FL04EEL019DL04F5L01B3L04F3L04F4pushwyspbooleq _InputHexleaa0spL01F2L01CAL01D9L01D7shlax4L01E2L04F7decaxyaddeq0spL04F6 _ErrorPromptincsp4L04FD_BreakInRomErrorL0214L0224L021AL0220_DbgResetTmpBreaksL04FFL022FL0236_DbgTmpBreaksOkL0500L0502L0245L0252mulax3tossubaxL025BL0506L0264L0508L026CL050AL0507L0272L0253L050DL027DL0289L0291L0297L02A1 _AsmArg16incax1L02BBL02B1L0512L0511L02B7L0513L050FL050E_InitAsm_InitRegL0517L0348L0515 +_InitStackL0519L051A _InitCStackL051BL03C6L051CL047Ddecsp2L047FL0521L0490callaxL0520L04C0L04B8L051FL04A8L04B0L04D8L04D4L04CEL04ABL0492L0522CODERODATABSSDATAZEROPAGENULLUzna` ix“`ófY\?› ã~ [ @‹ÛµäíŒ\&faXÑÇ8í¿©' Hƒ'¢: Iƒ:LG +‚GhT +ƒThŒ +ƒŒXPºŽ‡ +ƒ‡ a +ƒ4a© Hƒ…Š ‚Š©h Iƒh… ‚ g +ƒGg ˜ +‚˜ r +ƒor  +ƒ4 ­‚ +ƒ‚H­D +ƒDHs`A 0¾ +ƒ¹f +H‚f™2 +ƒ2Š™” +‚”ˆ}ð`C =¢|½W +‚WðJJ&&©6 +‚½Q +‚Q… ‚½> +‚>… ‚½ +‚‘M ‚Mèè3èUèmà0"Ð<Ý<`„¢[  ½€ +‚€ð‘‘½ +‚…/ ‚/½… +‚…… ‚±@ ‚@’ +‚’©‘ + ‚ +è;è è^èà0ÐŽàŽ` ¢d½— +‚—ð è“è.è%èuà0–Ð,ó,L+ +‚+†Z ‚Z©ˆ H‚ˆ¢ I‚pe7 ‚7vvè ` l +‚l…o ‚o†Y ‚Y¢-½8 +‚8ðkk0))½n +‚nÅ{ ‚{Ð11½L +‚Lņ ‚†ðw wèVè`è9èà0yÐ#ã#LO +‚O†q ‚q©? H‚?¢H I‚Hbe5 ‚5èS (`\9#:— €ƒ e E ‹  4;<= RZ7q5I M/@ +oY{†*Š”Kf _WQ>€…’—ˆ8nL?H $G +$˜ $+O$l¸3ƒµt‰¸/ƒ”•B¸ƒE]¸ƒe]¸ƒ]‡¸ƒN™Çhmjˆ½|…ƒŠ -P¢0M‚‡l?ž")o“&ys¿ –fɳ š™°•}L¶OpEÆg ±¼„tbkÀ3ŽT1A;Ä e ·nÀ!i Èqºdͯœxʆ +»%Å_‘@N*(a²­r´®ŸÂ,2¬—¡¹w¾µcRKz¤/:u~¸#ª'BS‰£D{”Q˜’+> __SIM6502__ dbg/dbgsupp.s +ca65 V2.15_DbgInit_DbgSP_DbgCS_DbgHIpopaxreturn0 _DbgEntry_set_brk_end_brk +_DbgBreaks_brk_pc __ZP_START__-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeDbgBreakretsav DbgSwapZPDbgStackResetDbgBreaks SetDbgBreaksCTempSwap1 MaxBreaksL4L6L5L7L8_DbgGetBreakSlotL10L11L12 _DbgIsBreakL20L21L22L23CODERODATABSSDATAZEROPAGENULLUzna` iq¨'@]`[»‹F_G@‹ÛµäíŒ\êq¢   +‚  +‚¦ ‚¥ ‚E ‚¥ ‚L +‚¥ ‚`   + ¸ƒ + ¸ƒ   $ +%# __SIM6502__ runtime/div.s +ca65 V2.15tosdiva0tosdivaxpopsargsudiv16negaxsregtmp1tmp2.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iqž!0 <?G†wý>þ@‹ÛµäíŒ\…g   +‚… ‚† ‚¥ + ‚ +¦ ‚ $ ‚ L +‚ `    +  ¸ƒ "! __SIM6502__ common/divt.s +ca65 V2.15_divtosdivaxnegaxsregptr1tmp1.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iqœ  `}bßà@‹ÛµäíŒ\ý e©É  BêÉ Ðë:ë , +©¢ `  +   ¸ƒ-")&.!*(, '+ __SIM6502__common/getcpu.s +ca65 V2.15_getcpu.size@L9@L8CODERODATABSSDATAZEROPAGENULLUzna` ix*¢&È Ô×#ú|vÖw@‹ÛµäíŒ\· faX€ ó)0*Iÿ…! ‚!Š4Iÿ…/ ‚/  +‚… ‚† ‚  æ0 ‚0Ðæ ‚ð  + ¹9 +‚9‘( ‚(ð +ÈÐ,î,©    +‚ª`.¥ ‚ ¦ + ‚ +`"*+,-. #!/0( +9¸ƒ0: -?">& 986$. + +"%7@ ,/ :#BD+/ __SIM6502__common/getcwd.s +ca65 V2.15_getcwdpopax__cwdptr1ptr2*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXloop.size@L1overflowdoneCODERODATABSSDATAZEROPAGENULLUzna` kzUÏQ  ,/¦Õ6 . @‹Ûµä‹m\ÉfaXÈ<-  +‚  +‚ ± ‚ È ‚ ЪL +‚  +‚   +‚  +‚­ +‚ … ‚ +­ +‚ … ‚ +® +‚  ­ +‚   +‚  +‚ ¥ ‚ ¦ ‚   + +‚ +L +‚ !"#$    + ¸ƒ< ! -0")&14$.! 5 +%*(,2/ #'+% __SIM6502__../libwrk/sim6502/gmtime.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac__tz_gmtime +_localtimepushaxdecsp4L000Cincsp6ldaxysp.sizeldeaxipusheax tosaddeaxsteax0spCODERODATABSSDATAZEROPAGENULLUzna` ixsëóGZ—ñò@‹ÛµäíŒ\¥faX¼< +  + „ ‚ e ‚ è `     + ¸ƒ¸ƒ    __SIM6502__runtime/incaxy.s +ca65 V2.15incaxyincax4tmp1,/home/hugg/compilers/cc65/asminc/generic.mac.size@L9CODERODATABSSDATAZEROPAGENULLUzna` ix­% 1NQÎy˜P™@‹ÛµäíŒ\ˆfaXËv ± ‚ª ˆ± ‚æ! ‚!ðæ ‚ð##`æ ‚ æ% ‚%` !"! %¸ƒ¸ƒ)"& $! *(/ #'# __SIM6502__runtime/incsp2.s +ca65 V2.15popaxincsp2sp(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` iy4­Lù +Q +[òM$ N$@‹ÛµäíŒ\Ê faXËA vÃÜ…¢ ‚¢†~ ‚~ ±Ã ‚ÃÈ_…¾ ‚¾±¥ ‚¥…Ÿ ‚Ÿ„Ý ‚Ý¢º©­ á +ƒáJô™ Þ +ƒ1Þ(®ñ®¥H ‚H ªñõ ‚õÈçHü¥Q ‚Qñé ‚éª¨hLû +‚ûФ:¤ ›„” ‚”¢½¡D ‚D…´ ‚´±ž ‚ž…¼ ‚¼©­peX ‚X…Ï ‚Ï··æn ‚n¤› ‚›ðÒÒ ïæ¼ ‚¼¡… ‚…‘Î ‚ÎæÀ ‚ÀÐ÷÷æo ‚oæ¼ ‚¼Ðaaæ¿ ‚¿ÆÕ ‚ÕÐŽìŽÆ  ‚ Ðè`ÞJ™Ð,¢ŸóŽÿ +ƒ ÿ©W‹ +ƒ‹P +ƒŸPÊøÐ÷¢pEþü +ƒüÊìÐú¢íÞÔ +ƒÔÊ^Ðú¢Å©š1 +ƒ1ÊvÐéúéð:j:¢¡ Œ +ƒŒ…i ‚i¢Ð© ä +ƒä…Ó ‚Ó©ª+ l +ƒl…˜ ‚˜ŠÙ¨ä¢Â å +ƒå¾ +ƒ° +ƒ°©•È=Ä ‚MîMÀ®]ï]n +ƒ ¯ +ƒJ¯¢ †Ñ ‚Ñ £ +ƒ»£q +ƒqèÂÐu÷u ± +ƒ»±Í +ƒÍèjä¹ ‚¹ÊõÊ©€à9–ò– á +ƒ»áɵð²²iùÉ +ƒÉè÷äœ ‚œèïè~Ç +ƒÇ » +ƒJ» ³ +ƒà³°c c ˜‘ã ‚ãæª ‚ªÐ!ó!æŒ ‚ŒÎïÎ`Bð +ý + ê +ƒê…° ‚°˜’ Æ +ƒÆ…- ‚-¢® Ö +ƒâÖ ‹ +ƒ‹8{Iÿeï ‚ï…ˆ ‚ˆÌ˜s • +ƒ•(—Iÿ‹e¸ ‚¸…¸ ‚¸¢ ‚  “ +ƒL“𪿪©È HƒÈ…• ‚•©‰ Iƒ‰…Ž ‚Ž =©Ú™‘ +ƒ?‘ˆ¦Ð'ú'ð` `ª þ£ +ƒ]£È Ðýýæ¤ ‚¤±‘ ‚‘ÁóÁ¢Û©¨ Hƒš¨ ã Iƒšã­Á +ƒ]Á˜I’ +ƒ|’½³ +ƒ]³}½ +ƒ]½îîȶè‡àd£ë£©µ Iƒµ… ‚ ©° ' ðèèªù½ú +ƒ]ú…º ‚º½ +ƒ|…Ø ‚ؘ¼† +ƒ?†þ§ +ƒ?§‘Ý ‚ݨÈÚÐò òæþ ‚þ¢A½í +ƒ?í¯ +ƒ¯ÊÁ/÷/±ó ‚ó¦Õ¦`††‚ ‚‚ˆ²ÐÀÀ Ë +ƒàË òɬšš¨Ç¾É +ƒÉ¹ +ƒ ‘ +ƒ‘À¤¨þŠÛ°¥¥¥ñ ‚ñ…z ‚z¦ƒ ‚ƒ`𢸩6 û +ƒ+û*è@8wýÄ +ƒ?Ä°JõJ}â +ƒ?âÝ· +ƒ·… ‚¼¶ +ƒ]¶½Ù +ƒ|Ù…ë ‚ë±ú ‚ú`¹¨¾‰ +ƒ‰¹Ÿ +ƒŸH©¹› +ƒT›¨‚h\à¡ðœœH ©ÿ·…… ‚…h8 Ñ +ƒ+ј˜å€ ‚€ììÈëÊbðƒƒe ‚e0ÜïÜ`“FŠ ‚ŠÐ<<Hî„Ï ‚Ï ê±ý ‚ý¤Ò ‚ÒæZ ‚Zп¿æ¬ ‚¬j±…Š ‚Šh4`Y–wÊÊàààààà àà +àà àà àà ààààà   + Æ ÆÆÆÆÆÆÆ#©+©3©;©C©S©c©s©ƒ £ Ã ã  777777 7 7GG!G1GAGaGGÁG’’’’’’½½½½½½½½õõõõõõõõ«««««°°°°°°°°ÔÔÔÔÔÔÔÔÕÕÕÕÕÕÕ ÕVV V0V@V`VôôôôôôôôOOOOOOOOFFFFFˆˆˆˆˆˆˆˆ´´´´´´´´   + + ˆ ˆ ˆ ˆ ˆ ˆ2xØ €× > U , § ø ö ? ¾×yz{ %m %ȱ€ +%†„”rk %ñ%Ë%C Ã%Ã¥õé‡û¸ƒâÿÄÆ—Åà׉œ“ÒŠÌ•ûá‘jáĽ|ôèúßꃞUÚæùŨ© ËõšÐ¯ÿÒԬꢲšÞÖ¦í¢Œ…â§Ê?Ûê×oˆåµŽÖèØys™ˆãÕ–´¬ úåWö³–¼˜Ê Ú÷¢9€C™°•›8Ûóëã¶ÍÖÝøOѥض—6p°ì ±ÕÆ–îðÆʼnÕܧ¦‘g¾ °„±ö¼ôú„ɯ‘ƒ”tÞ®bkªÏŸŽÀí’éçàÉ뫦ŽT¸«œAÌçÒ²;Ãĺڧǧù˜ªüá≂êñ‚£^i¤º©æ„„‡˜ì¨ëßá£ØÏË¥ÓdÝ­¯Ù¬ìàxüÇ=†ù—þ¨5 +Ùõ³Þ•»ãÛóÙâ7ìÝÝÅè‹_é‘[@„NšÆÉ‡ß Óã½…Ó“Š°«Šœª‹Õ£aÁ²Ü†´®€¨VäŸÑÂ뮤,¾¡¬—æ¡òä¹Ô¡ûƒ¤È™¡¾µÂcKÂûév±zΔ“©Œ¤/¼®çu›¯˜™š~Þ©¦Ô’î¸Î ŒŸ#ïí¡×öÊþ¢ÿЛŒ‹…—Á‰£ø…ŽžÔ¸­‘ýZô {÷ă”Qà<·» ˆ˜ß훹’‹Y­ò‡†| __SIM6502__zlib/inflatemem.s +ca65 V2.15 _inflatememincsp2spsregptr1ptr2ptr3ptr4tmp1(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510MAX_BITS PRIMARY_TREE DISTANCE_TREE +TREES_SIZE inputPointer outputPointerinflateDynamicBlock_cntinflateCodes_srcbuildHuffmanTree_srcgetNextLength_lastgetNextLength_indexbuildHuffmanTree_ptr fetchCode_ptr getBits_tmp moveBlock_leninflateDynamicBlock_npinflateDynamicBlock_nd getBit_hold.size inflatemem_1getBitscallExtrinflateCompressedBlockinflateCopyBlock moveBlock moveBlock_1 moveBlock_2 moveBlock_3inflateDynamicBlockinflateFixedBlockdistanceCodeLengthinflateFixedBlock_1literalCodeLengthinflateFixedBlock_2inflateFixedBlock_3 endCodeLengthinflateFixedBlock_4 inflateCodesinflateDynamicBlock_1inflateDynamicBlock_2tempCodeLengthOrderbuildHuffmanTreeinflateDynamicBlock_3 getNextLengthinflateDynamicBlock_4inflateDynamicBlock_5inflateDynamicBlock_6inflateDynamicBlock_7inflateCodes_1fetchPrimaryCodeinflateCodes_2inflateCodes_retgetValue fetchCodebuildHuffmanTree_1 bitsCountbuildHuffmanTree_3buildHuffmanTree_2 bitsPointer_l sortedCodesbuildHuffmanTree_4 bitsPointer_hbuildHuffmanTree_5buildHuffmanTree_9buildHuffmanTree_6buildHuffmanTree_7buildHuffmanTree_8 literalCountgetNextLength_1getNextLength_2 tempExtraBits tempBaseValue fetchCode_1getBitlengthExtraBitslengthBaseValue_llengthBaseValue_h getBits_ret getBits_1 getBits_2 +getBit_retgetBit_1distanceBaseValue_ldistanceBaseValue_hdistanceExtraBitslengthCodeLengthCODERODATABSSDATAZEROPAGENULLUzna` iÓRh/—š7Ñb3™4@‹ÛµäíŒ\ä faXÑfaX¼!S?x5* +ƒ*Ž= +ƒ= - +‚- m( +ƒ( +ƒ Š2m +ƒ +ƒ  +‚% +ƒ%Ž +ƒX`3©6 +ƒ6`­0 +ƒ0Ð `)¢9µ/ H‚/7 +ƒ7Êø­< +ƒ<®; +ƒ;…8 ‚8†' ‚' ! +ƒ!¢,¼ +ƒ”. H‚.Ê$øJ`""#   $Lÿ%& +8'/.-¹@ƒ)* +&¸ƒ# ¸ƒ#>hU -0MH?  9CL6EbkT1A4 e$.^i d5 +[N*a,cRK/:'BSZQ<YX+' __SIM6502__common/interrupt.s +ca65 V2.15_set_irq +_reset_irq +clevel_irqpopax __ZP_START__-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace,/home/hugg/compilers/cc65/asminc/generic.macirqvec.sizeirqspzpsave@L1@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` iqDµ¶ ÂÅÚZ4Ä5@‹ÛµäíŒ\Í Lÿÿ + ¸ƒ  __SIM6502__runtime/jmpvec.s +ca65 V2.15jmpvec.sizeCODERODATABSSDATAZEROPAGENULLUzna` iuô›£¦«Mø¥ù@‹ÛµäíŒ\çíŒ\ "faXÅ÷0mS +ƒ …2 ‚2ŽR +ƒR† ‚  ,±= ‚=Ù +ƒ Ð?;?ˆö ;© H‚‘ ‚ÈB©+ I‚+‘Y ‚Y  >¢± ‚8 +ƒ8ˆ/ÊO÷  +¢aèN [ +ƒS[ * +ƒS*ÀÐIõI d +ƒd¨cÐ] +]¬A +ƒ AðXX LFŒ' +ƒ '`M©¢4`±0 ‚0È! +ƒ!è6`H©`^ +ƒ  T +ƒT©_ +ƒ  +ƒª`<1jWoWyWW2 +  -13LKL L5L`ZZZ45:2 =Y01+ +¸!ƒc)¸ƒ[P¸ƒJ¸ƒ ¸ƒ5¸ƒ T¸ƒKd¸ƒ-8¸ƒ R ¹Fƒ ZA'fhj/|-…ƒU-P0‚HNG?o(> FP9H8)&L6p'%gOAb;€TA4GJn.6iq+I4 =†5F75_@2 U,a1 rV,@cRKz./Q~I#`BS0 Z{RQSYX3 6 __SIM6502__joystick/joy-kernel.s +ca65 V2.15 +joy_librefptr1joy_irq//home/hugg/compilers/cc65/asminc/joy-kernel.incJOY_HDRID.sizeVERSIONLIBREFMASKSJUMPTABINSTALL UNINSTALLCOUNTREADIRQJOY_API_VERSION_joy_drv +_joy_masks joy_install joy_uninstall joy_countjoy_read_joy_load_driver _joy_unload _joy_install_joy_uninstall +_joy_count _joy_read_joy_clear_ptr./home/hugg/compilers/cc65/asminc/joy-error.inc +JOY_ERR_OKJOY_ERR_NO_DRIVERJOY_ERR_CANNOT_LOADJOY_ERR_INV_DRIVERJOY_ERR_NO_DEVICE joy_vectorsjoy_sig@L0inv_drv@L1@L2copy@L3CODERODATABSSDATAZEROPAGENULLUzna` ix=µ¼ +ÆÉV~ÔÈÕ@‹ÛµäfaXùíŒ\  !"#$‚/-NFPHOA;G6+4  +52 U,1 @.QI0 RS3 % __SIM6502__joystick/joy_count.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/joy-kernel.incJOY_HDRID.sizeVERSIONLIBREFMASKSJUMPTABINSTALL UNINSTALLCOUNTREADIRQJOY_API_VERSION_joy_drv +_joy_masks joy_install joy_uninstall joy_countjoy_read_joy_load_driver _joy_unload _joy_install_joy_uninstall +_joy_count _joy_read_joy_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` i$äqF· ÂÅâ‰kÄl@‹ÛµäfaXèíŒ\ faXÅ%faX´3faXܘHWB H +‚H­7 +‚ +7 Y +‚ +Yð   2 +‚2©DD  +‚   \ +‚\4 +ƒ4Žg +ƒgŠF0313©C HƒC¢ Iƒ  +‚H?­G +ƒG®% +ƒ%  +‚hÐNN­ +ƒ® +ƒ  9 +‚ 9ª.ðWWH­; +‚ +;® +‚ + / +‚/  +‚ h¢6`©¢,,`]IJK + +‚U  =  aLM CB)UA<\?$ >BH,c/+K ^29V7Y;¸ƒWlhm\j/-UPK0]lHNGo(&ysFP 92H<8J)&O'%GOtAbk;1A;Gn.6^ i+I4 0 F75@N*12 U,1 VIw@c./H/:uQI43B0 R< FS3 N __SIM6502__joystick/joy_load.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/joy-kernel.incJOY_HDRID.sizeVERSIONLIBREFMASKSJUMPTABINSTALL UNINSTALLCOUNTREADIRQJOY_API_VERSION_joy_drv +_joy_masks joy_install joy_uninstall joy_countjoy_read_joy_load_driver _joy_unload _joy_install_joy_uninstall +_joy_count _joy_read_joy_clear_ptr./home/hugg/compilers/cc65/asminc/joy-error.inc +JOY_ERR_OKJOY_ERR_NO_DRIVERJOY_ERR_CANNOT_LOADJOY_ERR_INV_DRIVERJOY_ERR_NO_DEVICE,/home/hugg/compilers/cc65/asminc/modload.incMOD_CTRL +CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_READ MLOAD_ERR_HDR MLOAD_ERR_OS MLOAD_ERR_FMT MLOAD_ERR_MEM*/home/hugg/compilers/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCLpushaxpusha0incsp2_open_read_closectrl@L1@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` ix=µ¼ +ÆÉV}ÓÈÔ@‹ÛµäíŒ\­íŒ\  !"#$‚/-NFPHOA;G6+4  +52 U,1 @.QI0 RS3 % __SIM6502__joystick/joy_read.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/joy-kernel.incJOY_HDRID.sizeVERSIONLIBREFMASKSJUMPTABINSTALL UNINSTALLCOUNTREADIRQJOY_API_VERSION_joy_drv +_joy_masks joy_install joy_uninstall joy_countjoy_read_joy_load_driver _joy_unload _joy_install_joy_uninstall +_joy_count _joy_read_joy_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` i†½C^ ilK·åœk@‹ÛµäfaXÎíŒ\ faXÅ%faX´†6­ +‚H  +‚ ð­ +‚H*  +‚h1ªh#  +‚L: +‚:ª h9© `(789:;4':,<62 ¸ƒB/-KN"(FP2H<J)&'%GOA;G $6!+4 0 %512 U,1 I@.H/QI4#3B0 RFS3 < __SIM6502__joystick/joy_unload.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/joy-kernel.incJOY_HDRID.sizeVERSIONLIBREFMASKSJUMPTABINSTALL UNINSTALLCOUNTREADIRQJOY_API_VERSION_joy_drv +_joy_masks joy_install joy_uninstall joy_countjoy_read_joy_load_driver _joy_unload _joy_install_joy_uninstall +_joy_count _joy_read_joy_clear_ptr./home/hugg/compilers/cc65/asminc/joy-error.inc +JOY_ERR_OKJOY_ERR_NO_DRIVERJOY_ERR_CANNOT_LOADJOY_ERR_INV_DRIVERJOY_ERR_NO_DEVICE,/home/hugg/compilers/cc65/asminc/modload.incMOD_CTRL +CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_READ MLOAD_ERR_HDR MLOAD_ERR_OS MLOAD_ERR_FMT MLOAD_ERR_MEM joy_clear_ptrreturn0 no_driverCODERODATABSSDATAZEROPAGENULLUzna` iq*›µ.ã榌yå@‹ÛµäíŒ\è ó -*©¢ +† ‚† ‚ „ ‚  q ‚‘ ‚HÈŠq ‚‘ ‚ªÈ¥ ‚q ‚‘ ‚… ‚È¥ ‚ q ‚‘ ‚… ‚h`     ¸ƒ ¸ƒ ¸ƒ ! -0"&$.!5 +%*(,2 '+ __SIM6502__runtime/laddeq.s +ca65 V2.15laddeq1laddeqaladdeqsregptr1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqög"‰¦©ˆ1z«¨¬@‹ÛµäíŒ\È¿ $! „ ‚ „ ‚ 1 ‚… ‚È Š 1 ‚ªÈ¥ ‚1 ‚… ‚È¥ ‚1 ‚… ‚¥ ‚L +‚    ¸ƒ +¸ƒ "  $  # __SIM6502__runtime/land.s +ca65 V2.15 tosand0ax tosandeaxaddysp1spsregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq¿0C ORe·cQ@‹ÛµäíŒ\ºˆ„ ‚8 +å ‚… ‚Šé ª¥ ‚é… ‚¥ ‚é … ‚¥ ‚`  +     ¸ƒ     + __SIM6502__runtime/ldec.s +ca65 V2.15deceaxysregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq»,<bž¡ƒ$Œ° ±@‹ÛµäíŒ\æ„© ¢ð© ¢  +‚H ± ‚8e ‚… ‚æ ‚h`   +¸ ƒ  ¸ƒ +¸ƒ¸ƒ +¸ƒ¸ƒ " $! % # __SIM6502__runtime/leave.s +ca65 V2.15leave00leave0leavey00leavey0leaveyleaveaddyspsp.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` iqÜM5‚Ÿ¢oŸ°¡±@‹ÛµäíŒ\ê¥  „ ‚ „ ‚   +‚  + +‚ +¥ ‚¦ ‚¤ ‚„ ‚¤ ‚ „ ‚$ ‚L +‚`            +¸ƒ¸ƒ "  +,#'+ __SIM6502__runtime/lmod.s +ca65 V2.15 tosmod0ax tosmodeax poplsargsudiv32negeaxsregptr1ptr2tmp1tmp3tmp4.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq*›Qì9%((Pº +' @‹ÛµäíŒ\È ó\W $„ ‚„. ‚.… ‚† ‚  ± ‚…( ‚(È5± ‚…3 ‚3È/± ‚…! ‚!ȱ7 ‚7…2 ‚2  +‚ ©&… ‚ …4 ‚4…+ ‚+   F* ‚*f: ‚:f, ‚,jf ‚f0 ‚0f ‚f ‚--e ‚H%¥ ‚e' ‚'… ‚¥ ‚e1 ‚1… ‚¥9 ‚9e# ‚#… + ‚ +hˆ)Õ¥6 ‚6¦ ‚`8  !29 (3  6  *# +  4:1  +,' + .0  7" ¸ƒ¸ƒ¸ƒ¸ƒ; -0?)>& 9C86E31A4; .!= 5%7@*(,2/: 'BD<+ __SIM6502__runtime/lmul.s +ca65 V2.15 +tosumul0ax +tosumuleax tosmul0ax tosmuleaxaddysp1spsregtmp1tmp2tmp3tmp4ptr1ptr3ptr4.sizemul32L0L1CODERODATABSSDATAZEROPAGENULLUzna` kz.¨e  n‹hóô@‹Ûµä‹m\â faXÈ$šj @ +‚ @ : +‚ +: #± ‚ È<! ‚!ð**  +‚  = +‚= 1 +‚1¥ ‚   +0HH¢3ŠL" +‚" 8 +‚8  +‚¢©4  +‚ +ƒŽ' +ƒ'©+ +ƒ+ +ƒ  +‚ 9 +‚9¢©E % +‚%  +‚¢ ©.  +‚? +ƒ?Ž +ƒ B +‚B  +‚¢Q)© +… ‚ ©$… ‚  ©€7  +‚  / +‚/ +ƒŽ +ƒ¢DŠ6A +ƒA +ƒ©F2 +ƒ +2Ž +ƒ +©G HƒG¢F IƒF C +‚ C©- Hƒ-¢ IƒL +‚%`&555555555555555555'()#>/">!>% >>9>8B>">1>=>>:>@C(  ( !¸ƒš&I\U -P0M]HG?")>&W9C8LO6E3T1A4;J$.!I= 5 +F%7_[@N*(V,2RK/: #'`BSDZQ<YX+* __SIM6502__../libwrk/sim6502/localtime.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac +_localtime_mktimeL0004.sizepushaxdecsp4L001Eldaxyspldeaxisteax0spL0005incsp6ldeax0sppusheax +tosumod0ax +tosudiv0ax +tosudiveaxinceaxyCODERODATABSSDATAZEROPAGENULLUzna` iq8©%Î ÚÝ¡~sñÜò@‹ÛµäíŒ\Ì .,… ‚† ‚ ‚Ðæ ‚   +‚… ‚† + ‚ +  ± ‚È… ‚± ‚È… ‚± ‚Ȫš± ‚ÈH± ‚H¥ ‚¦ ‚ `      +¸ƒ -& 34 $.  +%*,2#+ __SIM6502__common/longjmp.s +ca65 V2.15_longjmppopaxspptr1ptr2.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqög"‰¦©ˆ1w¨¨©@‹ÛµäíŒ\ÿ $! „ ‚ „ ‚  ‚… ‚È Š  ‚ªÈ¥ ‚ ‚… ‚È¥ ‚ ‚… ‚¥ ‚L +‚    ¸ƒ +¸ƒ "  $  # __SIM6502__ runtime/lor.s +ca65 V2.15tosor0axtosoreaxaddysp1spsregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq£+ 7:Vg÷9ø@‹ÛµäíŒ\‰l   +± ‚… ‚ˆ± ‚ … ‚ˆ± ‚ªˆ± ‚ L +‚ +      ¸ƒ +     __SIM6502__runtime/lpop.s +ca65 V2.15popeaxincsp4spsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqÝNg.•˜%x—ž@‹ÛµäíŒ\…¦ !©ª „ ‚„ ‚H   +‚ ¥ ‚‘ ‚ˆ¥ ‚‘ ‚ˆŠ‘ ‚ˆh‘ ‚`     ¸ƒ  ¸ƒ +¸ƒ  " $! +% # __SIM6502__runtime/lpush.s +ca65 V2.15pushl0push0axpusheaxdecsp4spsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqûl"Ž«®;}¸­¹@‹ÛµäíŒ\›Ä %" „ ‚„ + ‚ + 8 ñ ‚ … ‚ŠÈñ ‚ªÈ¥ ‚ñ ‚… ‚È¥ ‚ñ ‚… ‚¥ ‚L +‚      +  ¸ƒ¸ƒ  "& $! +% # __SIM6502__runtime/lrsub.s +ca65 V2.15 +tosrsub0ax +tosrsubeaxaddysp1spsregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqùj‚Ÿ¢j o{¡|@‹ÛµäíŒ\ª … ‚† + ‚ +¥ ‚… ‚¥ ‚… ‚ ¥ ‚`¥ ‚… ‚ ¥ ‚… ‚¦ ‚¥ ‚` +     +   ¸ƒ ¸ƒ     + __SIM6502__runtime/lsave.s +ca65 V2.15saveeaxresteaxsregregsave.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixýu­°û«ƒ.¯/@‹ÛµäíŒ\Ô faXËÆ'" „ ‚„ ‚8Iÿ q ‚ÈH)ŠIÿ +q* ‚*ªÈ± ‚ å, ‚,…# ‚#È ±! ‚!å1 ‚1…$ ‚$hL +‚ !",#1$* !¸ƒ¸ƒ2 -")&  $.! +% *(,/ #'+# __SIM6502__runtime/lsub.s +ca65 V2.15 tossub0ax tossubeaxaddysp1spsreg(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq6§Á.ïò°¢tñ@‹ÛµäíŒ\Ó +ÿ +1,©¢ +† ‚† ‚ „ ‚ 8!Iÿq ‚‘ ‚HÈ"ŠIÿq ‚‘ ‚ªÈ± ‚ å ‚‘ ‚… ‚ȱ ‚å ‚‘ ‚… ‚h`      ¸ƒ¸ƒ ¸ƒ # -0")&84$.! +*(,2/ #' __SIM6502__runtime/lsubeq.s +ca65 V2.15lsubeq1lsubeqalsubeqsregptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq¥Vl#’çy·0‘1@‹ÛµäíŒ\Ón¯•…# ‚# / +‚/…? ‚?†T ‚T… ‚†Q ‚Q G +‚G… ‚ †5 ‚5  +‚…V ‚V†P ‚P`4 S +ƒS¦E ‚E¤ ‚ À +3ÐLOL¥ ‚ + ‚+F ‚FÐ((à€-Ð: :  >¹ +‚‘ ‚ˆM.ø.L\ +ƒª\Š,U3U©- Y‘" ‚"æ< ‚<Ðæ ‚¥1 ‚1IÿIi…A ‚A¥ ‚ Iÿ +i[…H ‚H¥W ‚WIÿ*i…D ‚D¥ ‚Iÿ^i]…Z ‚ZL@ +ƒv@ B +ƒB©0H  ©& ‚& ‚&2 ‚2& ‚*!Å6 ‚6CCå ‚æ% ‚%ˆNÐJìJ¨7¹ +‚HK¥ ‚ ‚O ‚O ‚ Ð'Ù' $h‘9 ‚9ðÈÐXøX¥= ‚=¦) ‚)` # 6  VPE WDZ2O   5+F1A H% +?T"<9 Q=);;/G¸ƒsB8¸ƒS8_mjˆ|…U -P0M‡lHGoys fW9C8}LOpE„tk€3ŽT1A4;eJn.!qx†5 +F7[NarV,2RKvz/:u~ 'BS‰DZQ<YX __SIM6502__ common/ltoa.s +ca65 V2.15_ltoa_ultoapopax__hextab __longminstrsregptr1ptr2ptr3tmp1dopop.sizeultoaL2L1L10L3L5L6L7L9CODERODATABSSDATAZEROPAGENULLUzna` iqòc\¿Ailª@‹ÛµäíŒ\…»zs !„, ‚,„ ‚  +ƒ  +ƒ5¥ ‚¦ ‚`…; ‚;†7 ‚7¥ ‚…( ‚(¥ ‚…? ‚? &± ‚ …< ‚<È$±/ ‚/… ‚È=±3 ‚3… ‚È2±G ‚G…5 ‚5L +‚©6… ‚… ‚…- ‚-  0 ‚& ‚&: ‚:& ‚ *D&+ ‚+& ‚& ‚ HAÅ ‚¥. ‚.å ‚ ¥ ‚ å) ‚)¥" ‚"å9 ‚9… ‚hCå8 ‚8H@¥ ‚å ‚…4 ‚4¥ ‚åF ‚F…E ‚EæB ‚BhˆÐ%È%…1 ‚1`> (?)9F;7 8+.41 <B - "  E +,5:   /3G*¸ƒ56#¸ƒ;#¸ƒ'#¸ƒ#H\U -P]HG?")>& W98LEb3T4; J$^!I= 5F%7_*(V,2RK:#'`SDZQ<YX+ __SIM6502__runtime/ludiv.s +ca65 V2.15 +tosudiv0ax +tosudiveaxgetlopudiv32addysp1spsregtmp3tmp4ptr1ptr2ptr3ptr4.sizeL0L1CODERODATABSSDATAZEROPAGENULLUzna` iq¾/)Xux`ØŠbwc@‹ÛµäíŒ\‡   „ ‚„ ‚  +‚  +‚¥ ‚… ‚¥ ‚ … + ‚ +¥ ‚¦ ‚`  +   +¸ƒ  ¸ƒ     __SIM6502__runtime/lumod.s +ca65 V2.15 +tosumod0ax +tosumodeaxgetlopudiv32sregtmp3tmp4ptr2.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqög"‰¦©ˆ1z«¨¬@‹ÛµäíŒ\¿¿ $! „ ‚„ + ‚ +  Q ‚ … ‚ÈŠ Q ‚ ªÈ¥ ‚Q ‚… ‚È¥ ‚Q ‚… ‚¥ ‚L +‚    + ¸ƒ¸ƒ "  ! % __SIM6502__runtime/lxor.s +ca65 V2.15 tosxor0ax tosxoreaxaddysp1spsregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqƒ„¥),Äðªš+›@‹ÛµäíŒ\¤Û1)Ð*¢Š` ð$¢ Š` ð0##¢Š!`ð$$¢ Š`𠢊`&𰢊`¢© ` + +¸ ƒ&¸ ƒ$¸ ƒ¸ +ƒ"¸ ƒ$¸ƒ¸ƒ ¸ƒ#¸ƒ¸ƒ' 0")&98314 .! %7*(2/ '<+ __SIM6502__runtime/makebool.s +ca65 V2.15boolnebooleqboolltboolleboolgtboolgeboolultbooluleboolugtboolugeret1.sizeL0L1CODERODATABSSDATAZEROPAGENULLUzna` iqXÉ"ë ÷úľKùL@‹ÛµäíŒ\” !82Iÿ … ‚ŠIÿ… + ‚ +  +‚H  +‚… ‚† ‚ h"¦ ‚ èð Ñ% ‚%ð!!ÈÐöæ# ‚#Ðòæ ‚Ð$ñ$L +‚¦ ‚˜e ‚è`  + %#¸ƒ8'0"& 986314 $!5,2 #'+ __SIM6502__common/memchr.s +ca65 V2.15_memchrpopaxreturn0ptr1ptr2L1.sizeL3L2foundnotfoundL9CODERODATABSSDATAZEROPAGENULLUzna` iqjÛ) ÉÜœxy@‹ÛµäíŒ\ì 3<4Iÿ… ‚ŠIÿ… ‚  $ +‚$… ‚†" ‚"  +‚ … ‚† ‚¦ ‚ è ð##±' ‚'Ñ ‚ÐÈÐôæ ‚æ ‚Ðîæ! ‚!ÐíL& +‚&°¢ÿ%` ¢`  + ! +" +'&$ ¸ƒ( -HG"& 9CE31A4;!5F@,2:'B<+ __SIM6502__common/memcmp.s +ca65 V2.15_memcmppopaxreturn0ptr1ptr2ptr3.sizeLoop BumpHiCntCompNotEqualGreaterCODERODATABSSDATAZEROPAGENULLUzna` iq£.B/qtÓG çsè@‹ÛµäíŒ\çlA=  +ƒ)¦ ‚ð± ‚ ‘" ‚"ȱ ‚ ‘" ‚"ÈÐôæ' ‚'æ& ‚&ÊÐ í ¦! ‚!ð))± ‚‘ ‚È%ÊÐøL +‚… ‚† ‚  +‚ …( ‚(† ‚ ± ‚ª$† ‚ˆ± ‚ … ‚` #! +#& #'(#  ¸ƒ) +¸ƒ¸ƒ*-P0MH?")CLOE1AJ.! 5@N*K/ D+ __SIM6502__common/memcpy.s +ca65 V2.15_memcpymemcpy_upwardsmemcpy_getparamspopaxspptr1ptr2ptr3.sizeL2L1doneL3CODERODATABSSDATAZEROPAGENULLUzna` i<É ÕØ#û;6×7@‹ÛµäíŒ\î faX¼faXÈ×PM  +‚Å1 ‚1Š+å ‚°  L  +‚ ¥ ‚ e ‚…2 ‚2¥% ‚% e ‚…3 ‚3¤9 ‚9Ð))ð ± ‚‘ ‚ˆÐù±$ ‚$‘ ‚¦ ‚ð//Æ" ‚"Æ ‚ˆ ±' ‚'‘ ‚ˆ4± + ‚ +‘ +7 ‚ +7ˆ +&± + ‚ +‘ +7 ‚ +7ˆ +&Ðô±- ‚-‘ ‚ÊÐ(ã(L, +‚, +#9 # %3 + +# 12$"' + +-, ¸ƒ:? -0M>H?">&E9C8L@631A4 J!I= 5%G@N,2RK/:9#'B<<F+ __SIM6502__common/memmove.s +ca65 V2.15_memmovememcpy_getparamsmemcpy_upwardspopaxptr1ptr2ptr3ptr4tmp1,/home/hugg/compilers/cc65/asminc/generic.mac//home/hugg/compilers/cc65/asminc/longbranch.mac.size@entry PageSizeCopy @copyBytedone @initBase +@copyBytes +@copyEntryCODERODATABSSDATAZEROPAGENULLUzna` kz šŽ(7:Ó ([h*9i*@‹Ûµä‹m\ CfaXÈUEݦ Û +‚Û ˜¢Ž È +‚È ö +‚ö ŸµÄ ‚"Ä‘l ‚$lˆ_ÊëÐñøñ ü +‚ü¥ ‚"‚ ‚"‚з·L·é +ƒ·é Ð±V ‚"VªRˆ§±‚ ‚"‚ µ +‚µ¢¡©<K î +‚î…« ‚"«†; ‚";¤ž ‚#ž„´ ‚"´¤þ ‚#þ„ì ‚"ì¥+ ‚"+ ‘‘ƒ ‚"ƒÈ¯¥® ‚"®‘ ‚" ê± ‚"ªMˆ•±å ‚"åöe„ ‚"„Š×e³ ‚"³ª³à€ý|¥|¥L|› +ƒ|›¥Á ‚"Á¦ ‚" ˜ +‚˜ ±Ø ‚"تQˆ±ˆ ‚"ˆfe¯ ‚"¯H¤Š‰et ‚"tªÕhÊ º +‚ºÈ¨±¾ ‚"¾ªrˆ¼±” ‚"”  +‚¢ž©<Î = +‚=…á ‚"ᆗ ‚"—¤N ‚#N„( ‚"(¤Ï ‚#Ï„& ‚"&¥Ì ‚"Ì P‘ ‚"Èÿ¥* ‚"*‘ä ‚"ä õ±Ò ‚"Òªëˆ`±¢ ‚"¢èeª ‚"ªŠmeœ ‚"œª–à€yŸ¥Ÿ¥LŸ› +ƒŸ›¥¤ ‚"¤¦“ ‚"“ ’ +‚’ ó±½ ‚"½ªáˆc±“ ‚"“Äe¡ ‚"¡HFŠ€eà ‚"êìhê € +‚€È˱3 ‚"3ªìˆé± ‚" ˆ +‚ˆ¢Ž©· • +‚•…Æ ‚"Ɔ† ‚"†¤… ‚#…„ ‚"¤° ‚#°„¤ ‚"¤¥ÿ ‚"ÿ Ù‘¤ ‚"¤È±¥Ö ‚"Ö‘Ë ‚"Ë ±® ‚"®ªvˆ±Ø ‚"ØšeÝ ‚"ÝŠùeá ‚"áªºà€š¥š¥Lš› +ƒš›¥ ‚"¦Ã ‚"à ª +‚ª ±´ ‚"´ªÉˆê±Á ‚"Áôe ‚" H²ŠÔex ‚"xªphã q +‚q  ¸±, ‚",ªbˆ ±Ý ‚"Ý Ï +‚Ï¢©©  « +‚«…Z ‚"Z†× ‚"פ£ ‚#£„‚ ‚"‚¤- ‚#-„ô ‚"ô¥â ‚"â ¹‘B ‚"BÈ ¥¦ ‚"¦‘O ‚"O  —±‹ ‚"‹ªŒˆÑ±¢ ‚"¢]eÌ ‚"ÌŠ¼eå ‚"åªŒà€‘…¥…¥L…› +ƒ…›¥" ‚""¦· ‚"· ‡ +‚‡  ò±é ‚"éª<ˆ±ß ‚"ßÈe§ ‚"§HŸŠøe³ ‚"³ª h£  +‚ˆû±÷ ‚"÷ªWˆ%±k ‚"kàÐ)ÉЖ%–  ú±« ‚"«ªÜˆ¶± ‚"…† ‚ ††u ‚ u©lï—eð ‚ ðH©‰eÛ ‚ Ûª{hœ  +ƒªƒð™™¢¬©LL¿ +ƒÓ¿  ±œ ‚"œªÿˆý±º ‚"º…¶ ‚ ¶Š˜ËiÅ IƒÅ…» ‚ » õ Hƒõ±} ‚ }¢¨ E 0 +‚0 Y±‹ ‚"‹ª©ˆ™±¡ ‚"¡ ˆ +‚ˆ û › +‚› Ž +‚Ž0ÞOÞðúMú  ¶±• ‚"•ª™ˆ/±µ ‚"µàÐÆÆÉ ñÐ^^Š5‘ ‚"Èà‘½ ‚"½  Ú±ñ ‚"ñª”L> +ƒ>Èø±¦ ‚"¦ª´ˆ§± ‚" ­ +‚­‘Ï ‚"ÏÈþŠ™‘¾ ‚"¾¥Þ ‚"Þ¦Ô ‚"Ô ¦ +‚¦ æ± ‚"ªÙˆó±Ò ‚"Ò8÷ „ñX ‚$XHðŠÈ'ñ— ‚$—ªÜhàȸL¾ +ƒ,¾¥¹ ‚"¹¦’ ‚"’ ± +‚±  ر‘ ‚"‘ª7ˆ„±Ê ‚"Ê ª +‚ª.iÎ Hƒ ΨŠÀi Iƒ ªÊ˜î  +‚ ¥±“ ‚"“ªÓˆž±ö ‚"ö Š +‚Š ² +‚² h ½ +‚½  þ±­ ‚"­ªÂˆ€±ˆ ‚"ˆÉ±Š‰éŽpââI€ +Ô/Ô  ±š ‚"šªùˆ¥±Ì ‚"Ì…Í ‚ ͆¨ ‚ ¨©l e) ‚ )HÞ©’e­ ‚ ­ªíh” ª +ƒªª°ðÓÓ \±2 ‚"2ªÁˆÙ±ï ‚"ï @ +‚@‘Œ ‚"ŒÈÉŠÑ‘° ‚"°  Ö±Ç ‚"ǪTˆç±j ‚"j F­   +‚  î +‚î¢×©mü Š +‚Š…Å ‚ ņõ ‚ õ  ±à ‚"ê䈋±– ‚"– E÷  +‚ » +‚»ðe ‚ ÂH«ŠÐe‹ ‚ ‹ª¯hò ¦ +‚¦ Ú±® ‚"®ª•ˆÕ± ‚"  ‡ +‚‡ ? +‚?¥‚ ‚"‚¦Ð ‚"Ð g +‚g ë à +‚à œ +‚œ è +‚è©o © +‚ ©  I $ +‚$¥¼ ‚"¼¦ ‚" [ +‚[¢¢Š’ i  +‚ å +‚ å ! +‚ ! ä +‚ +ä¢Q‘©¨…» ‚#»©§…µ ‚#µ©€‡ ¡ +‚ ¡  +‚ + a±š ‚"šªˆÑ±Ç ‚"Ç ˜ +‚ ˜ ƒ +‚ +ƒ¢É©€ ¸ +‚¸ ß +‚ß 8 +‚ +8 ž±9 ‚"9ªãˆµ±6 ‚"6 › +‚›©<í „ +‚„ Ç +‚ Ç û +‚û … +‚ +… ± ‚"ªˆÝ±J ‚"J © +‚ © £ +‚£L  +ƒ† ¢ÿÀ†Ö ‚#Ö†À ‚#ÀŠ¿HÕ†† ‚!†  ®¢Š±¬ ‚$¬•H ‚"HˆôÊU¥ø¥¦ç ‚!çhA  +²Lâ +‚â : +‚: ü±³ ‚$³¢G)ÓÐz/z ¿ +‚¿©dè ‡ +‚‡àƒÐ““ÉíПŸ È +‚È¢²©Î › +‚›àDÐ……ɱðss¢úŠL +‚¢Å©ÄLç +‚çŠæLw +‚wšF$~Íøæó ܯC¢Û–;dZßx‰—ÚµnÔïóùe0òN´GHIJ%DŠçwBŠ›3Š‡?Š¿ÈŠ:=Šâ:Š„9Šßû£8Š¸7Š¡6Šäƒ8…5Š!˜Ç©4Šå3Š©2Šœ1Š?0Š»/ŠŠ.Š +Š²*ŠŠ‡)Š(Šª'Š­@#ŠŽ"Š›à!Š0Šº€q½$ŠöüŠÈŠÛµ˜’ˆªÏ‡ˆ¦±î¦gè[›Æî=•« 4†uðÛ¶»}ͨ)­Åõ‹ 4†ç͇ĂV‚«;´ì+ƒ®å„³Á؈¯t¾”á—(&Ì*äÒ¢ªœ¤“½“¡Ã3Ɔ¤ÿ¤ÖË®ØÝáôÁ x,ÝZׂôâB¦O‹¢Ìå"·éߧ³÷k«œº‹¡•µ½ñ¦Ï¾ÞÔÒ¹’‘Ê“ö­ˆšÌ2ÇjÖ® ‚мšÇ96JHÍ žþNÏ…°£-»µÖÀͳlX—¬¸ƒã£¶Æ—ÅàÌ׉ǜ“ÒÜhŠÌm•ûá‘\jáĈ½|ôÒèúÍ߅ꃞŠUÚæùŶ¨© Ë‚õýÿ¯PÿÒÔ¬ŸêÀµ¢²šÞM¦]‚í‡lH³œGŒç·ââ§óÊ?òÛž")o׈嵎>“&ÜÖØyÃs™¿ËÕ–´ f³ÉúåWö³–8Ê÷¢9€Cøš™°•›8Ûó¿Ú}»ëLã¶ÍÖ´ÝøO¥¶—p° ±ÕÆ–EîðÆÅõ‰Ü§‘g¾¿ °±ö‚Î÷¼ôú„ɯ䃔t±bkªÏŸ•ÃÀüÙ€’3éçàÉÛ«¦ŽTº¸«œAÌ›ç²;ÃÄćºeÚ·§ÇJ¸æù˜ün$»ïð‰¿Àêñ‚£^!îiºÈ5©æ„„‡ðq˜ìIëßËá£ØÏË¥ºÓdÍ­¯Ù1¬ìàœxµüÐÇÊ=Ç †¼ùþ¨† +¾ÙFõ³Þ•»ãóâ%7ìÝÝÍÅ耋_´‘ [@¥„NšÆÉ*ãѽ…åÓ(“Š°«Šª‹Õ£aÁ²·­r†Á3´®€¨VäŸÑÐÂ뮤¾¡¬þ—¡òä¹4ÔƒwŽ¤È™¡¾µÂ½cRKÂûûév±zÎ©Œ¤È¼È²:®u¯™š~ÞÖñ«¦ÔÑ’¹Á¸Î ŒŸ#í¡×ÀöÊž¶þÏت¢ÿ'èÐý›Œ`‹…—Á½BS‰£éDø…ˆÓŽžÎ¸­ñ‘ýZô ¹{Ã’÷Ä–ƒ”Q<·»ˆ˜ß훹’”‹YX.ò‡†+îK __SIM6502__../libwrk/sim6502/mktime.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_div_mktime _MonthLength.size +_MonthDayspushaxregswap2decsp4L002AL002E staxspidxL0093L005B _IsLeapYearL0096staxyspldaxysptosicmpL004EL0069L009Dincax1aslax1pushwtosaddaxdecax1L0079L0077decaxy tosumulaxshrax2stax0spincax4 tosumoda0ldax0spaxulongpusheax +tosumuleax +tosumul0ax tosaddeax tosumula0L0029L0090addyspL009Epushw0spL0022L00A3 tosumodaxL00A2incsp2CODERODATABSSDATAZEROPAGENULLUzna` iq” %BEQ–†D@‹ÛµäíŒ\] ¢   +‚  +‚¥ ‚¦ ‚$ ‚L +‚`  + ¸ƒ + ¸ƒ   $ +%  __SIM6502__ runtime/mod.s +ca65 V2.15tosmoda0tosmodaxpopsargsudiv16negaxptr1tmp1.sizePosCODERODATABSSDATAZEROPAGENULLUzna` ixúrRÄÔ×õÌ –bÖc@‹ÛµäfaX¡, íŒ\”<k¢}l +ƒl…7 ‚7Žs +ƒs†3 ‚3 °±i ‚iÙ +ƒ Ð]ˆyMöM :©m H‚m‘ ‚È©a I‚a‘T ‚T©{6 +ƒ6 ¨¢Lè „ +ƒw„ , +ƒw,À·Ð¶õ¶ w +ƒww ‹ +‚‹ 0c„S ‚S  )„; ‚; Z +ƒZ¤ ‚ F +ƒFÆ ‚¤ ‚UòU,‚ +ƒ$‚P%% D +ƒdD f +ƒf¨#Ð ,J +ƒ$J­­ L ŒB +ƒ!B` + `vŒ¤ +ƒ!¤`n©µ¢!L¯ +‚¯±³ ‚³1 +ƒ1È/èN`e±< ‚<Ɔ ‚†¤ ‚‘© ‚©Æ’ ‚’`z,2 +ƒ$2>>  +ƒj - +ƒ- ‡ +ƒj‡©A +ƒˆ +ƒˆªX`—lm¹o¹u¹¹m * P‘n%L‰ +‚‰L +‚L_ +‚_L +‚L¦ +‚¦L› +‚›LY +‚YL +‚L +‚LW +‚WLr +‚r`"""¡op hS’ +h;† h73iT³©h<VmaV¯V‹V ‰_¦›YWr¸]ƒr¸\ƒW¸[ƒ¸Zƒ¸YƒY¸Xƒ›¸Wƒ ¦¸Vƒ ¸Uƒ_¸Tƒ-¸Sƒ‰f¸Rƒ˜p¸GƒŠK¸FƒO¸CƒP6¸Bƒ*lsˆ¹F ƒ!"&B¤»<šœ°mj/½-…ƒŠ? U¤Y¢‚jlH‚G?›c"B >“&ys ´F f= W³XšH ™°8u©O6· Eg E ±D a¼„O tA k²;§€«TA›4G ƒeJn$À!i9:¦±+I¢d³œxz=¡5F‡»{%7‹K‹_‘@¥N”_2U ,²rdV> ¡¹¾@ c¸•†tzb¤.Q W ÁIž` #µŒJ'ŽeŒM ¥S£0Ÿ¶£”<®ˆ˜S ’YX¯+C q __SIM6502__mouse/mouse-kernel.s +ca65 V2.15return0popsregincsp2 mouse_librefsregptr1tmp1tmp2 mouse_irq1/home/hugg/compilers/cc65/asminc/mouse-kernel.inc MOUSE_ERR_OKMOUSE_ERR_NO_DRIVERMOUSE_ERR_CANNOT_LOADMOUSE_ERR_INV_DRIVERMOUSE_ERR_NO_DEVICEMOUSE_ERR_INV_IOCTLMOUSE_ERR_COUNT MOUSE_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLHIDESHOWSETBOXGETBOXMOVEBUTTONSPOSINFOIOCTLIRQFLAGS CALLBACKSCHIDECSHOWCPREPCDRAWCMOVEXCMOVEYMOUSE_CALLBACKSPREPDRAWMOVEXMOVEYMOUSE_API_VERSIONMOUSE_FLAG_EARLY_IRQMOUSE_FLAG_LATE_IRQMOUSE_BTN_LEFTMOUSE_BTN_RIGHT MOUSE_POSXCOORDYCOORD +MOUSE_INFO MOUSE_BOXMINXMINYMAXXMAXY +_mouse_drv _mouse_hidden_mouse_load_driver _mouse_unload_mouse_install_mouse_uninstall_mouse_geterrormsg _mouse_hide _mouse_show _mouse_setbox _mouse_getbox _mouse_move_mouse_buttons +_mouse_pos _mouse_info _mouse_ioctl_mouse_clear_ptr mouse_installmouse_uninstall +mouse_hide +mouse_show mouse_setbox mouse_getbox +mouse_move mouse_buttons mouse_pos +mouse_info mouse_ioctl mouse_vectors mouse_flags mouse_sig@L0inv_drv@L1copyjv@L2copycb@L3 install_irq uninstall_irqExitCODERODATABSSDATAZEROPAGENULLUzna` ix=µ¼ +ÆÉÛ¤ìÈ‘@‹ÛµäfaXÀíŒ\”<UVWXYZQG$E‚$W<šœ°/-? ¤Yj‚›cB ´F = XH u©· E D aO A ²;§G ƒ 9:¦±+¢³z¡‡{‹K”_2U ,d> @ ¸•†tb.Q W Iž`µŒJŽeM ¥0Ÿ¶£®ˆS ¯C [ __SIM6502__mouse/mouse_buttons.s +ca65 V2.151/home/hugg/compilers/cc65/asminc/mouse-kernel.inc MOUSE_ERR_OKMOUSE_ERR_NO_DRIVERMOUSE_ERR_CANNOT_LOADMOUSE_ERR_INV_DRIVERMOUSE_ERR_NO_DEVICEMOUSE_ERR_INV_IOCTLMOUSE_ERR_COUNT MOUSE_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLHIDESHOWSETBOXGETBOXMOVEBUTTONSPOSINFOIOCTLIRQFLAGS CALLBACKSCHIDECSHOWCPREPCDRAWCMOVEXCMOVEYMOUSE_CALLBACKSPREPDRAWMOVEXMOVEYMOUSE_API_VERSIONMOUSE_FLAG_EARLY_IRQMOUSE_FLAG_LATE_IRQMOUSE_BTN_LEFTMOUSE_BTN_RIGHT MOUSE_POSXCOORDYCOORD +MOUSE_INFO MOUSE_BOXMINXMINYMAXXMAXY +_mouse_drv _mouse_hidden_mouse_load_driver _mouse_unload_mouse_install_mouse_uninstall_mouse_geterrormsg _mouse_hide _mouse_show _mouse_setbox _mouse_getbox _mouse_move_mouse_buttons +_mouse_pos _mouse_info _mouse_ioctl_mouse_clear_ptr mouse_installmouse_uninstall +mouse_hide +mouse_show mouse_setbox mouse_getbox +mouse_move mouse_buttons mouse_pos +mouse_info mouse_ioctlCODERODATABSSDATAZEROPAGENULLUzna` ix=µ¼ +ÆÉÛ¤ëÈ@‹ÛµäfaX¡íŒ\”<UVWXYZO+°C‚W<šœ°/-? ¤ Yj‚›cB ´F = XH u©· E D aO A ²;§G ƒ9:¦±+¢³z¡‡{‹K”_2U ,d> @ ¸•†tb.Q W Iž`µŒJŽeM ¥0Ÿ¶£®ˆS ¯C [ __SIM6502__mouse/mouse_getbox.s +ca65 V2.151/home/hugg/compilers/cc65/asminc/mouse-kernel.inc MOUSE_ERR_OKMOUSE_ERR_NO_DRIVERMOUSE_ERR_CANNOT_LOADMOUSE_ERR_INV_DRIVERMOUSE_ERR_NO_DEVICEMOUSE_ERR_INV_IOCTLMOUSE_ERR_COUNT MOUSE_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLHIDESHOWSETBOXGETBOXMOVEBUTTONSPOSINFOIOCTLIRQFLAGS CALLBACKSCHIDECSHOWCPREPCDRAWCMOVEXCMOVEYMOUSE_CALLBACKSPREPDRAWMOVEXMOVEYMOUSE_API_VERSIONMOUSE_FLAG_EARLY_IRQMOUSE_FLAG_LATE_IRQMOUSE_BTN_LEFTMOUSE_BTN_RIGHT MOUSE_POSXCOORDYCOORD +MOUSE_INFO MOUSE_BOXMINXMINYMAXXMAXY +_mouse_drv _mouse_hidden_mouse_load_driver _mouse_unload_mouse_install_mouse_uninstall_mouse_geterrormsg _mouse_hide _mouse_show _mouse_setbox _mouse_getbox _mouse_move_mouse_buttons +_mouse_pos _mouse_info _mouse_ioctl_mouse_clear_ptr mouse_installmouse_uninstall +mouse_hide +mouse_show mouse_setbox mouse_getbox +mouse_move mouse_buttons mouse_pos +mouse_info mouse_ioctlCODERODATABSSDATAZEROPAGENULLUzna` ix¤ (+g’%·*¸@‹ÛµäfaX« íŒ\”<p`É??!!©QQ¨7¢% Iƒ%© Hƒy +ƒ))è0`Ga€5 `03?DXkdNo errorHHNo driveqr availaqbleqqCannot lPoad drivPerPPInvalid  driver  Mouse ha4rdware n4ot found44Invalid Yioctl coYdeYYUnknown errorbcde¸?ƒ +s<šœ°/-? ¤ -Y0j‚›c")B &´F = XH u©· E D aO A ²;§1G ƒ$.!9:¦±+¢³z ¡‡{%‹K*”_2U ,d> ,@ ¸•†tb./Q W Iž`#µŒJ'ŽeM ¥0Ÿ¶£®ˆS ¯+C f __SIM6502__mouse/mouse_geterrormsg.s +ca65 V2.151/home/hugg/compilers/cc65/asminc/mouse-kernel.inc MOUSE_ERR_OKMOUSE_ERR_NO_DRIVERMOUSE_ERR_CANNOT_LOADMOUSE_ERR_INV_DRIVERMOUSE_ERR_NO_DEVICEMOUSE_ERR_INV_IOCTLMOUSE_ERR_COUNT MOUSE_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLHIDESHOWSETBOXGETBOXMOVEBUTTONSPOSINFOIOCTLIRQFLAGS CALLBACKSCHIDECSHOWCPREPCDRAWCMOVEXCMOVEYMOUSE_CALLBACKSPREPDRAWMOVEXMOVEYMOUSE_API_VERSIONMOUSE_FLAG_EARLY_IRQMOUSE_FLAG_LATE_IRQMOUSE_BTN_LEFTMOUSE_BTN_RIGHT MOUSE_POSXCOORDYCOORD +MOUSE_INFO MOUSE_BOXMINXMINYMAXXMAXY +_mouse_drv _mouse_hidden_mouse_load_driver _mouse_unload_mouse_install_mouse_uninstall_mouse_geterrormsg _mouse_hide _mouse_show _mouse_setbox _mouse_getbox _mouse_move_mouse_buttons +_mouse_pos _mouse_info _mouse_ioctl_mouse_clear_ptr mouse_installmouse_uninstall +mouse_hide +mouse_show mouse_setbox mouse_getbox +mouse_move mouse_buttons mouse_pos +mouse_info mouse_ioctlL1msgtaboffsL2msg0msg1msg2msg3msg4msg5msg6CODERODATABSSDATAZEROPAGENULLUzna` ixjâð ûþù÷íäýå@‹ÛµäfaXÚíŒ\”<3V  ­? +‚?Ð))  +‚î +‚`WXYZ[L:B?¸@ƒ 1]<šœ°/-? ¤Yj‚›cB ´F = XH u©· E D aO A ²;§G ƒ9:¦±+¢³z ¡‡{‹K”_2U ,d> @ ¸•†tb.Q W Iž`µŒJŽeM ¥0Ÿ¶£®ˆS ¯C \ __SIM6502__mouse/mouse_hide.s +ca65 V2.151/home/hugg/compilers/cc65/asminc/mouse-kernel.inc MOUSE_ERR_OKMOUSE_ERR_NO_DRIVERMOUSE_ERR_CANNOT_LOADMOUSE_ERR_INV_DRIVERMOUSE_ERR_NO_DEVICEMOUSE_ERR_INV_IOCTLMOUSE_ERR_COUNT MOUSE_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLHIDESHOWSETBOXGETBOXMOVEBUTTONSPOSINFOIOCTLIRQFLAGS CALLBACKSCHIDECSHOWCPREPCDRAWCMOVEXCMOVEYMOUSE_CALLBACKSPREPDRAWMOVEXMOVEYMOUSE_API_VERSIONMOUSE_FLAG_EARLY_IRQMOUSE_FLAG_LATE_IRQMOUSE_BTN_LEFTMOUSE_BTN_RIGHT MOUSE_POSXCOORDYCOORD +MOUSE_INFO MOUSE_BOXMINXMINYMAXXMAXY +_mouse_drv _mouse_hidden_mouse_load_driver _mouse_unload_mouse_install_mouse_uninstall_mouse_geterrormsg _mouse_hide _mouse_show _mouse_setbox _mouse_getbox _mouse_move_mouse_buttons +_mouse_pos _mouse_info _mouse_ioctl_mouse_clear_ptr mouse_installmouse_uninstall +mouse_hide +mouse_show mouse_setbox mouse_getbox +mouse_move mouse_buttons mouse_pos +mouse_info mouse_ioctl@L1CODERODATABSSDATAZEROPAGENULLUzna` ixaÙç òõùîîÜôÝ@‹ÛµäfaX±íŒ\”<*V… ‚†? ‚?L( +‚(WXYZ[T(0?¸Hƒ&]<šœ°/-? ¤Yj‚›cB ´F = XH u©· E D aO A ²;§G ƒ 9:¦±+¢³z¡‡{‹K”_2U ,d> @ ¸•†tb.Q W Iž`µŒJŽeM ¥0Ÿ¶£®ˆS ¯C \ __SIM6502__mouse/mouse_info.s +ca65 V2.15ptr11/home/hugg/compilers/cc65/asminc/mouse-kernel.inc MOUSE_ERR_OKMOUSE_ERR_NO_DRIVERMOUSE_ERR_CANNOT_LOADMOUSE_ERR_INV_DRIVERMOUSE_ERR_NO_DEVICEMOUSE_ERR_INV_IOCTLMOUSE_ERR_COUNT MOUSE_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLHIDESHOWSETBOXGETBOXMOVEBUTTONSPOSINFOIOCTLIRQFLAGS CALLBACKSCHIDECSHOWCPREPCDRAWCMOVEXCMOVEYMOUSE_CALLBACKSPREPDRAWMOVEXMOVEYMOUSE_API_VERSIONMOUSE_FLAG_EARLY_IRQMOUSE_FLAG_LATE_IRQMOUSE_BTN_LEFTMOUSE_BTN_RIGHT MOUSE_POSXCOORDYCOORD +MOUSE_INFO MOUSE_BOXMINXMINYMAXXMAXY +_mouse_drv _mouse_hidden_mouse_load_driver _mouse_unload_mouse_install_mouse_uninstall_mouse_geterrormsg _mouse_hide _mouse_show _mouse_setbox _mouse_getbox _mouse_move_mouse_buttons +_mouse_pos _mouse_info _mouse_ioctl_mouse_clear_ptr mouse_installmouse_uninstall +mouse_hide +mouse_show mouse_setbox mouse_getbox +mouse_move mouse_buttons mouse_pos +mouse_info mouse_ioctlCODERODATABSSDATAZEROPAGENULLUzna` ixkã÷ ôüý@‹ÛµäfaX¯íŒ\”<4W +… ‚† ‚  +‚L +‚XYZ[\VC 4¸Jƒ +@_<šœ°/-? ¤ Yj‚›cB ´F = XH u©· E D aO A ²;§G ƒ9:¦±+¢³z¡ +‡{‹K”_2U ,d> @ ¸•†tb.Q W Iž`µŒJŽeM ¥0Ÿ¶£®ˆS ¯C ] __SIM6502__mouse/mouse_ioctl.s +ca65 V2.15popaptr11/home/hugg/compilers/cc65/asminc/mouse-kernel.inc MOUSE_ERR_OKMOUSE_ERR_NO_DRIVERMOUSE_ERR_CANNOT_LOADMOUSE_ERR_INV_DRIVERMOUSE_ERR_NO_DEVICEMOUSE_ERR_INV_IOCTLMOUSE_ERR_COUNT MOUSE_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLHIDESHOWSETBOXGETBOXMOVEBUTTONSPOSINFOIOCTLIRQFLAGS CALLBACKSCHIDECSHOWCPREPCDRAWCMOVEXCMOVEYMOUSE_CALLBACKSPREPDRAWMOVEXMOVEYMOUSE_API_VERSIONMOUSE_FLAG_EARLY_IRQMOUSE_FLAG_LATE_IRQMOUSE_BTN_LEFTMOUSE_BTN_RIGHT MOUSE_POSXCOORDYCOORD +MOUSE_INFO MOUSE_BOXMINXMINYMAXXMAXY +_mouse_drv _mouse_hidden_mouse_load_driver _mouse_unload_mouse_install_mouse_uninstall_mouse_geterrormsg _mouse_hide _mouse_show _mouse_setbox _mouse_getbox _mouse_move_mouse_buttons +_mouse_pos _mouse_info _mouse_ioctl_mouse_clear_ptr mouse_installmouse_uninstall +mouse_hide +mouse_show mouse_setbox mouse_getbox +mouse_move mouse_buttons mouse_pos +mouse_info mouse_ioctlCODERODATABSSDATAZEROPAGENULLUzna` i†ùNÍ ØÛX3u¨ Ú© @‹ÛµäfaXùíŒ\”_G=P9kO„Q¸;ƒZ#£<šœ°hm\j /-? UG¤PY0]jlH‚G 3›coB &yH´F = 4X9H 8uKIB1©O· E D aO tA bk²;§/1A;G ƒn.^i9:¦ ±+I¢³z ¡F‡{7‹K@N*F”_2U ,dV> 2<w@ c¸•†tvb./:uQ W Iž`µŒ0JŽeM ¥0Ÿ¶{£<®ˆS J¯C  __SIM6502__mouse/mouse_load.s +ca65 V2.151/home/hugg/compilers/cc65/asminc/mouse-kernel.inc MOUSE_ERR_OKMOUSE_ERR_NO_DRIVERMOUSE_ERR_CANNOT_LOADMOUSE_ERR_INV_DRIVERMOUSE_ERR_NO_DEVICEMOUSE_ERR_INV_IOCTLMOUSE_ERR_COUNT MOUSE_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLHIDESHOWSETBOXGETBOXMOVEBUTTONSPOSINFOIOCTLIRQFLAGS CALLBACKSCHIDECSHOWCPREPCDRAWCMOVEXCMOVEYMOUSE_CALLBACKSPREPDRAWMOVEXMOVEYMOUSE_API_VERSIONMOUSE_FLAG_EARLY_IRQMOUSE_FLAG_LATE_IRQMOUSE_BTN_LEFTMOUSE_BTN_RIGHT MOUSE_POSXCOORDYCOORD +MOUSE_INFO MOUSE_BOXMINXMINYMAXXMAXY +_mouse_drv _mouse_hidden_mouse_load_driver _mouse_unload_mouse_install_mouse_uninstall_mouse_geterrormsg _mouse_hide _mouse_show _mouse_setbox _mouse_getbox _mouse_move_mouse_buttons +_mouse_pos _mouse_info _mouse_ioctl_mouse_clear_ptr mouse_installmouse_uninstall +mouse_hide +mouse_show mouse_setbox mouse_getbox +mouse_move mouse_buttons mouse_pos +mouse_info mouse_ioctl,/home/hugg/compilers/cc65/asminc/modload.incMOD_CTRLREAD +CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_READ MLOAD_ERR_HDR MLOAD_ERR_OS MLOAD_ERR_FMT MLOAD_ERR_MEM*/home/hugg/compilers/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCLpushaxpusha0incsp2_open_read_closectrl@L1@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` ixQÉ Ö áäùÝõÒãÓ@‹ÛµäfaXöíŒ\”<W  +‚L +‚XYZ[\R(¸Fƒ]<šœ°/-? ¤Yj‚›cB ´F = XH u©· E D aO A ²;§G ƒ 9:¦±+¢³z ¡‡{‹K”_2U ,d> @ ¸•†tb.Q W Iž`µŒJŽeM ¥0Ÿ¶£®ˆS ¯C ] __SIM6502__mouse/mouse_move.s +ca65 V2.15incsp2ptr11/home/hugg/compilers/cc65/asminc/mouse-kernel.inc MOUSE_ERR_OKMOUSE_ERR_NO_DRIVERMOUSE_ERR_CANNOT_LOADMOUSE_ERR_INV_DRIVERMOUSE_ERR_NO_DEVICEMOUSE_ERR_INV_IOCTLMOUSE_ERR_COUNT MOUSE_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLHIDESHOWSETBOXGETBOXMOVEBUTTONSPOSINFOIOCTLIRQFLAGS CALLBACKSCHIDECSHOWCPREPCDRAWCMOVEXCMOVEYMOUSE_CALLBACKSPREPDRAWMOVEXMOVEYMOUSE_API_VERSIONMOUSE_FLAG_EARLY_IRQMOUSE_FLAG_LATE_IRQMOUSE_BTN_LEFTMOUSE_BTN_RIGHT MOUSE_POSXCOORDYCOORD +MOUSE_INFO MOUSE_BOXMINXMINYMAXXMAXY +_mouse_drv _mouse_hidden_mouse_load_driver _mouse_unload_mouse_install_mouse_uninstall_mouse_geterrormsg _mouse_hide _mouse_show _mouse_setbox _mouse_getbox _mouse_move_mouse_buttons +_mouse_pos _mouse_info _mouse_ioctl_mouse_clear_ptr mouse_installmouse_uninstall +mouse_hide +mouse_show mouse_setbox mouse_getbox +mouse_move mouse_buttons mouse_pos +mouse_info mouse_ioctlCODERODATABSSDATAZEROPAGENULLUzna` ixaÙç òõùîíÛôÜ@‹ÛµäfaXŠíŒ\”<*V… ‚†? ‚?L( +‚(WXYZ[SV(0?¸Gƒ&]<šœ°/-? ¤Yj‚›cB ´F = XH u©· E D aO A ²;§G ƒ 9:¦±+¢³z¡‡{‹K”_2U ,d> @ ¸•†tb.Q W Iž`µŒJŽeM ¥0Ÿ¶£®ˆS ¯C \ __SIM6502__mouse/mouse_pos.s +ca65 V2.15ptr11/home/hugg/compilers/cc65/asminc/mouse-kernel.inc MOUSE_ERR_OKMOUSE_ERR_NO_DRIVERMOUSE_ERR_CANNOT_LOADMOUSE_ERR_INV_DRIVERMOUSE_ERR_NO_DEVICEMOUSE_ERR_INV_IOCTLMOUSE_ERR_COUNT MOUSE_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLHIDESHOWSETBOXGETBOXMOVEBUTTONSPOSINFOIOCTLIRQFLAGS CALLBACKSCHIDECSHOWCPREPCDRAWCMOVEXCMOVEYMOUSE_CALLBACKSPREPDRAWMOVEXMOVEYMOUSE_API_VERSIONMOUSE_FLAG_EARLY_IRQMOUSE_FLAG_LATE_IRQMOUSE_BTN_LEFTMOUSE_BTN_RIGHT MOUSE_POSXCOORDYCOORD +MOUSE_INFO MOUSE_BOXMINXMINYMAXXMAXY +_mouse_drv _mouse_hidden_mouse_load_driver _mouse_unload_mouse_install_mouse_uninstall_mouse_geterrormsg _mouse_hide _mouse_show _mouse_setbox _mouse_getbox _mouse_move_mouse_buttons +_mouse_pos _mouse_info _mouse_ioctl_mouse_clear_ptr mouse_installmouse_uninstall +mouse_hide +mouse_show mouse_setbox mouse_getbox +mouse_move mouse_buttons mouse_pos +mouse_info mouse_ioctlCODERODATABSSDATAZEROPAGENULLUzna` ix=µ¼ +ÆÉÛ¤ëÈ@‹ÛµäfaXòíŒ\”<UVWXYZNK°B‚KW<šœ°/-? ¤Yj‚›cB ´F = XH u©· E D aO A ²;§G ƒ9:¦±+¢³z¡‡{‹K”_2U ,d> @ ¸•†tb.Q W Iž`µŒJŽeM ¥0Ÿ¶£®ˆS ¯C [ __SIM6502__mouse/mouse_setbox.s +ca65 V2.151/home/hugg/compilers/cc65/asminc/mouse-kernel.inc MOUSE_ERR_OKMOUSE_ERR_NO_DRIVERMOUSE_ERR_CANNOT_LOADMOUSE_ERR_INV_DRIVERMOUSE_ERR_NO_DEVICEMOUSE_ERR_INV_IOCTLMOUSE_ERR_COUNT MOUSE_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLHIDESHOWSETBOXGETBOXMOVEBUTTONSPOSINFOIOCTLIRQFLAGS CALLBACKSCHIDECSHOWCPREPCDRAWCMOVEXCMOVEYMOUSE_CALLBACKSPREPDRAWMOVEXMOVEYMOUSE_API_VERSIONMOUSE_FLAG_EARLY_IRQMOUSE_FLAG_LATE_IRQMOUSE_BTN_LEFTMOUSE_BTN_RIGHT MOUSE_POSXCOORDYCOORD +MOUSE_INFO MOUSE_BOXMINXMINYMAXXMAXY +_mouse_drv _mouse_hidden_mouse_load_driver _mouse_unload_mouse_install_mouse_uninstall_mouse_geterrormsg _mouse_hide _mouse_show _mouse_setbox _mouse_getbox _mouse_move_mouse_buttons +_mouse_pos _mouse_info _mouse_ioctl_mouse_clear_ptr mouse_installmouse_uninstall +mouse_hide +mouse_show mouse_setbox mouse_getbox +mouse_move mouse_buttons mouse_pos +mouse_info mouse_ioctlCODERODATABSSDATAZEROPAGENULLUzna` ixtìú þíóô@‹ÛµäfaXûíŒ\”<=V ­' +‚'ð11Î +‚Ð@@L) +‚)`WXYZ[M,):C'¸Aƒ4^<šœ°/-? ¤Yj‚›cB ´F = XH u©· E D aO A ²;§G ƒ 9:¦±+¢³z ¡ +‡{‹K”_2U ,d> @ ¸•†tb.Q W Iž`µŒJŽeM ¥0Ÿ¶£®ˆS ¯C \ __SIM6502__mouse/mouse_show.s +ca65 V2.151/home/hugg/compilers/cc65/asminc/mouse-kernel.inc MOUSE_ERR_OKMOUSE_ERR_NO_DRIVERMOUSE_ERR_CANNOT_LOADMOUSE_ERR_INV_DRIVERMOUSE_ERR_NO_DEVICEMOUSE_ERR_INV_IOCTLMOUSE_ERR_COUNT MOUSE_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLHIDESHOWSETBOXGETBOXMOVEBUTTONSPOSINFOIOCTLIRQFLAGS CALLBACKSCHIDECSHOWCPREPCDRAWCMOVEXCMOVEYMOUSE_CALLBACKSPREPDRAWMOVEXMOVEYMOUSE_API_VERSIONMOUSE_FLAG_EARLY_IRQMOUSE_FLAG_LATE_IRQMOUSE_BTN_LEFTMOUSE_BTN_RIGHT MOUSE_POSXCOORDYCOORD +MOUSE_INFO MOUSE_BOXMINXMINYMAXXMAXY +_mouse_drv _mouse_hidden_mouse_load_driver _mouse_unload_mouse_install_mouse_uninstall_mouse_geterrormsg _mouse_hide _mouse_show _mouse_setbox _mouse_getbox _mouse_move_mouse_buttons +_mouse_pos _mouse_info _mouse_ioctl_mouse_clear_ptr mouse_installmouse_uninstall +mouse_hide +mouse_show mouse_setbox mouse_getbox +mouse_move mouse_buttons mouse_pos +mouse_info mouse_ioctl@L1CODERODATABSSDATAZEROPAGENULLUzna` i½<W be{àãd¤@‹ÛµäfaX¡íŒ\”AG9I8 ¸<ƒRw<šœ°/-? G¤ Yj‚3›c"B H´F = 4XH uKIB1©· E D aO A ²;§/G ƒ!9:¦±+¢³z¡‡{‹KF”_2U ,d> 2<@ ¸•†tb.Q W Iž` #µŒ0JŽeM ¥0Ÿ¶£®ˆS J¯C l __SIM6502__mouse/mouse_unload.s +ca65 V2.151/home/hugg/compilers/cc65/asminc/mouse-kernel.inc MOUSE_ERR_OKMOUSE_ERR_NO_DRIVERMOUSE_ERR_CANNOT_LOADMOUSE_ERR_INV_DRIVERMOUSE_ERR_NO_DEVICEMOUSE_ERR_INV_IOCTLMOUSE_ERR_COUNT MOUSE_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLHIDESHOWSETBOXGETBOXMOVEBUTTONSPOSINFOIOCTLIRQFLAGS CALLBACKSCHIDECSHOWCPREPCDRAWCMOVEXCMOVEYMOUSE_CALLBACKSPREPDRAWMOVEXMOVEYMOUSE_API_VERSIONMOUSE_FLAG_EARLY_IRQMOUSE_FLAG_LATE_IRQMOUSE_BTN_LEFTMOUSE_BTN_RIGHT MOUSE_POSXCOORDYCOORD +MOUSE_INFO MOUSE_BOXMINXMINYMAXXMAXY +_mouse_drv _mouse_hidden_mouse_load_driver _mouse_unload_mouse_install_mouse_uninstall_mouse_geterrormsg _mouse_hide _mouse_show _mouse_setbox _mouse_getbox _mouse_move_mouse_buttons +_mouse_pos _mouse_info _mouse_ioctl_mouse_clear_ptr mouse_installmouse_uninstall +mouse_hide +mouse_show mouse_setbox mouse_getbox +mouse_move mouse_buttons mouse_pos +mouse_info mouse_ioctl,/home/hugg/compilers/cc65/asminc/modload.incMOD_CTRLREAD +CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_READ MLOAD_ERR_HDR MLOAD_ERR_OS MLOAD_ERR_FMT MLOAD_ERR_MEMreturn0 no_driverCODERODATABSSDATAZEROPAGENULLUzna` iqŸ5E\_âA›Ü^Ý@‹ÛµäíŒ\ýhE?… ‚Šð . † ‚  +‚©)¦& ‚&ð&… ‚ F( ‚(f ‚ +e! ‚!H +Š*e$ ‚$… ‚h#f% ‚%jf ‚f' ‚'ˆÐê¥ ‚¦ ‚`L +‚ ¤ ‚ ¦ ‚†" ‚"¦ ‚„+ ‚+ L, +‚,  ('+ + $%  &! " , ¸ƒ¸ƒ--0?")>& 9CE31A4$.!5 +%@*(,/ 'BD __SIM6502__ runtime/mul.s +ca65 V2.15 tosumulaxtosmulaxmul8x16mul8x16apopsregsregtmp1ptr4.size@L3@L4@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iqpá99<â–´;µ@‹ÛµäíŒ\º 9:7… ‚   +‚© ¦ ‚ ð))…& ‚&F ‚ +*e% ‚%HŠe' ‚'… ‚hf( ‚(j"f ‚ˆ!Ð,ì,ª#¥ ‚`F ‚ e ‚j f + ‚ +ˆ$Ðõª+¥ ‚` + &'( +  % ¸ƒ ¸ƒ¸ƒ¸ƒ--?")> 98634;$.!=5 +%7*(,: #'<+ __SIM6502__runtime/mul8.s +ca65 V2.15 tosumula0tosmula0mul8x16mul8x16apopsregsregptr4.sizemul8x8@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iq¤  ,/[Š_é.ê@‹ÛµäíŒ\‹m… ‚ † ‚  +& ‚ e ‚HŠe ‚ªh`  +    ¸ƒ +   + __SIM6502__runtime/mulax3.s +ca65 V2.15mulax3ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq¹* 6 BEeª_ D +@‹ÛµäíŒ\¤‚… ‚ † ‚ +& ‚ + & ‚e ‚HŠe ‚ªh`  +    ¸ƒ +   + __SIM6502__runtime/mulax5.s +ca65 V2.15mulax5ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqÔE R ^atÕ_4`5@‹ÛµäíŒ\å… ‚† ‚ +& ‚  + & ‚ +& ‚8 +å ‚ HŠIÿe ‚ªh`  +    ¸ƒ  !  __SIM6502__runtime/mulax7.s +ca65 V2.15mulax7ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqÎ? L X[oÊ_)Z*@‹ÛµäíŒ\З… ‚† ‚  +& ‚  + +& ‚ +& ‚ e ‚ HŠe ‚ªh`  +    ¸ƒ     __SIM6502__runtime/mulax9.s +ca65 V2.15mulax9ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqsäå ñôB6VŒó@‹ÛµäíŒ\†< +Iÿ iHŠ +Iÿi ª h`  + ¸ƒ     + __SIM6502__ runtime/neg.s +ca65 V2.15negax.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqŠû-0V†oõ/ö@‹ÛµäíŒ\¨S +¢ +  ‚… ‚ ÈŠ ‚ª¥ ‚L +‚       ¸ƒ ¸ƒ     __SIM6502__ runtime/or.s +ca65 V2.15tosora0tosoraxaddysp1sptmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq²#$AD«ïbQCR@‹ÛµäíŒ\— sJ1­ +ƒm +ƒ +ƒm +ƒ +ƒm +ƒ +ƒ­ +ƒi'! +ƒ!­ +ƒiY +ƒ­ +ƒiA +ƒ )ª +­ +ƒ i1 +ƒ ` +ƒŽ +ƒ©  +ƒ  +ƒ`  +   ¸ƒ;¸ƒ"-0")>&96314;$.!=5%7@*(,2/: #'<+ __SIM6502__ common/rand.s +ca65 V2.15_rand_srandrand.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq25[u4@‹ÛµäíŒ\—X +¢ + 8ñ ‚… ‚ŠÈ ñ ‚ª¥ ‚L +‚    ¸ƒ ¸ƒ   __SIM6502__runtime/rsub.s +ca65 V2.15 tosrsuba0 tosrsubaxaddysp1sptmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq”  ,/e”{.@‹ÛµäíŒ\µ] +… ‚† ‚   +‚  +‚˜  ‘ ‚Š‘ ‚`     ¸ƒ  + "  + # __SIM6502__conio/scrsize.s +ca65 V2.15 _screensizepopsreg +screensizeptr1sreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iní$ÐáäA%–» ã¼ @‹ÛµäfaX“íŒ\Ç4]faXôºr]Fƒ +ƒƒ… ‚Ž? +ƒ?†w ‚w 1±_ ‚_Ù, +ƒ,Ð)+)ˆ„BöB ©d H‚d‘A ‚AÈ•©* I‚*‘˜ ‚˜ ¢RèE ~ +ƒC~ . +ƒC.ÀÐfõf  +ƒ ¬} +ƒ}ð—— L=Œ + +ƒ +`t©c¢`±p ‚p; +ƒ;È|èT`D F +ƒF©`2P +ƒP©9… +ƒ…€ +ƒ€ªX`!ss]e]r]] +t &kuL +‚L +‚L{ +‚{L +‚ LO +‚OL +‚L– +‚–LŒ +‚Œ`LLLvwYw_A˜pGd*G{ O–Œ ¸\ƒS#¸UƒK¸TƒI¸QƒŒ¸Pƒ–¸Oƒ¸Nƒ O¸Mƒ  ¸Lƒ{¸KƒF¸Jƒ ¸Iƒ&ƒ?…€¹\ƒL$} +P¢<šœym\/ - UPYhlp0M][HN?3›—cB)(ys FPX9C+8)L(16p E-DaOt}bT/1ZA;GeJnŠ.6.!˜gq+I¢d4 x™xi~%f75m‹[@*N*€q‘_2 rU, a1 T,V]|22w\cRKtvb. /:uQ^Wž` sŒ50ŽMBSDV0 Ÿ…ZRSC3 x __SIM6502__serial/ser-kernel.s +ca65 V2.15return0 +ser_librefptr1ser_irq//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 +SER_BITS_5 +SER_BITS_6 +SER_BITS_7 +SER_BITS_8 +SER_STOP_1 +SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put +ser_status ser_ioctl_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open +_ser_close_ser_get_ser_put _ser_status +_ser_ioctl_ser_clear_ptr./home/hugg/compilers/cc65/asminc/ser-error.inc +SER_ERR_OKSER_ERR_NO_DRIVERSER_ERR_CANNOT_LOADSER_ERR_INV_DRIVERSER_ERR_NO_DEVICESER_ERR_BAUD_UNAVAILSER_ERR_NO_DATASER_ERR_OVERFLOWSER_ERR_INIT_FAILEDSER_ERR_INV_IOCTLSER_ERR_INSTALLEDSER_ERR_NOT_OPEN SER_ERR_COUNT ser_vectorsser_sig@L0inv_drv@L1copy@L2CODERODATABSSDATAZEROPAGENULLUzna` ix=µ¼ +ÆÉÊ“>ÑÈÒ@‹ÛµäfaXÞíŒ\Ç4Z[\]^_I,T‚,W<šœy/ - Yhlp[N›—cB)FPX( ’EDaO}ZGŠ6˜g+¢4 x™ +i~f5m‹*€q‘_2 rU, 1 T]|w\tb. Q^Wž`sŒŽMV0 Ÿ…RSC3 ` __SIM6502__serial/ser_close.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 +SER_BITS_5 +SER_BITS_6 +SER_BITS_7 +SER_BITS_8 +SER_STOP_1 +SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put +ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open +_ser_close_ser_get_ser_put _ser_status +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ixaÙç òõèÝAô@‹ÛµäfaXîíŒ\Ç4*[… ‚† ‚L +‚\]^_`KS1¸VƒE]<šœy/ - Yhlp[N›—cB)FPX( ’EDaO}ZGŠ6˜g+¢4 x™ +i~f5m‹*€q‘_2 rU, 1 T]|w\tb. Q^Wž`sŒŽMV0 Ÿ…RSC3 a __SIM6502__serial/ser_get.s +ca65 V2.15ptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 +SER_BITS_5 +SER_BITS_6 +SER_BITS_7 +SER_BITS_8 +SER_STOP_1 +SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put +ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open +_ser_close_ser_get_ser_put _ser_status +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ixkã÷ ò÷H?@@‹ÛµäfaXÒíŒ\Ç44\ +…+ ‚+† ‚  +‚L +‚]^_`aO>+2¸Zƒ +_<šœy/ - Yhlp[N›—cB) FPX( ’EDaO}ZGŠ6˜g+¢4 x™i~f5m‹*€q‘_2 rU, 1 T]|w\tb. Q^Wž`sŒŽMV0 Ÿ…RSC3 b __SIM6502__serial/ser_ioctl.s +ca65 V2.15popaptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 +SER_BITS_5 +SER_BITS_6 +SER_BITS_7 +SER_BITS_8 +SER_STOP_1 +SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put +ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open +_ser_close_ser_get_ser_put _ser_status +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` i$ –Jà ëî{ä_ í` @‹ÛµäfaXÛíŒ\Ç4ZfaXôhfaX´wfaXܶŽZE¬® +‚ ®Ðƒƒ¬ +‚  ðRR© +ÐI : +‚:©ii 3 +‚3 - ’ +‚’N +ƒNŽª +ƒªŠm0M1M©e Hƒe¢ Iƒ  +‚H]­o +ƒo®9 +ƒ9  +‚ h Ð}}­ +ƒ® +ƒ U +‚UªGð‹‹H­W +‚ W® +‚  H +‚H  +‚h¢P`!©((¢E`“‘ + +‚Š  [  ¡’“ +‡0 †>Š…Y’ƒ63‚c:p¤Ho2Y^QaUE§® W¸OƒZ%±<šœhym\j/ - U-PYhKlp0][lHNG3›—coB)(&ysFP X92+<8J)(1O6 ’E-DaGOt}bk/ZA;GnŠ.6.^ i˜g+I¢4 x™0 Fi~f75m‹@*N*€q1‘_2 rU, 1 T,V]|,I2ww\ctb. /H/:uQ^Wž4`sŒ50ŽM3VB0 Ÿ…R< FS+C3 ” __SIM6502__serial/ser_load.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 +SER_BITS_5 +SER_BITS_6 +SER_BITS_7 +SER_BITS_8 +SER_STOP_1 +SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put +ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open +_ser_close_ser_get_ser_put _ser_status +_ser_ioctl_ser_clear_ptr./home/hugg/compilers/cc65/asminc/ser-error.inc +SER_ERR_OKSER_ERR_NO_DRIVERSER_ERR_CANNOT_LOADSER_ERR_INV_DRIVERSER_ERR_NO_DEVICESER_ERR_BAUD_UNAVAILSER_ERR_NO_DATASER_ERR_OVERFLOWSER_ERR_INIT_FAILEDSER_ERR_INV_IOCTLSER_ERR_INSTALLEDSER_ERR_NOT_OPEN SER_ERR_COUNT,/home/hugg/compilers/cc65/asminc/modload.incMOD_CTRLREAD +CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_READ MLOAD_ERR_HDR MLOAD_ERR_OS MLOAD_ERR_FMT MLOAD_ERR_MEM*/home/hugg/compilers/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCLpushaxpusha0incsp2_open_read_closectrl@L0@L1@L4@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` ixaÙç òõèÝBô @‹ÛµäfaX¼íŒ\Ç4*[… ‚† ‚L +‚\]^_`IQ¸TƒD]<šœy/ - Yhlp[N›—cB) FPX( ’EDaO}ZGŠ6˜g+¢4 x™i~f5m‹*€q‘_2 rU, 1 T]|w\tb. Q^Wž`sŒŽMV0 Ÿ…RSC3 a __SIM6502__serial/ser_open.s +ca65 V2.15ptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 +SER_BITS_5 +SER_BITS_6 +SER_BITS_7 +SER_BITS_8 +SER_STOP_1 +SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put +ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open +_ser_close_ser_get_ser_put _ser_status +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ix=µ¼ +ÆÉÊ“<ÏÈÐ@‹ÛµäfaX€íŒ\Ç4Z[\]^_KH+V‚+W<šœy/ - Yhlp[N›—cB)FPX( ’EDaO}ZGŠ6˜g+¢4 x™ i~f5m‹*€q‘_2 rU, 1 T]|w\tb. Q^Wž`sŒŽMV0 Ÿ…RSC3 ` __SIM6502__serial/ser_put.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 +SER_BITS_5 +SER_BITS_6 +SER_BITS_7 +SER_BITS_8 +SER_STOP_1 +SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put +ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open +_ser_close_ser_get_ser_put _ser_status +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ixaÙç òõèÝD!ô"@‹ÛµäfaXŒíŒ\Ç4*[…E ‚E†( ‚(L +‚\]^_`M"/E(¸Xƒ0]<šœy/ - Yhlp[N›—cB)FPX( ’EDaO}ZGŠ6˜g+¢4 x™ i~f5m‹*€q‘_2 rU, 1 T]|w\tb. Q^Wž`sŒŽMV0 Ÿ…RSC3 a __SIM6502__serial/ser_status.s +ca65 V2.15ptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 +SER_BITS_5 +SER_BITS_6 +SER_BITS_7 +SER_BITS_8 +SER_STOP_1 +SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put +ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open +_ser_close_ser_get_ser_put _ser_status +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` i†½C^ il±8U +kV +@‹ÛµäfaXÏíŒ\Ç4ZfaXôhfaX´†z­! +‚!H  +‚ð//­6 +‚6HP  +‚heª +h@  +‚Ly +‚yªhr©:`K{|}~xGyp|RE!6¸Pƒ*…<šœy/ - YhKlp[N3›—c"B)(FPX2+<J)(1 ’E-DaGO}/ZG Š$6.!˜g+¢4 x™0 i~%f5m‹**€q1‘_2 rU, 1 T,]|I2w\tb. H/Q^Wž4`#sŒ50ŽM3VB0 Ÿ…RFSC3 € __SIM6502__serial/ser_unload.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 +SER_BITS_5 +SER_BITS_6 +SER_BITS_7 +SER_BITS_8 +SER_STOP_1 +SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put +ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open +_ser_close_ser_get_ser_put _ser_status +_ser_ioctl_ser_clear_ptr./home/hugg/compilers/cc65/asminc/ser-error.inc +SER_ERR_OKSER_ERR_NO_DRIVERSER_ERR_CANNOT_LOADSER_ERR_INV_DRIVERSER_ERR_NO_DEVICESER_ERR_BAUD_UNAVAILSER_ERR_NO_DATASER_ERR_OVERFLOWSER_ERR_INIT_FAILEDSER_ERR_INV_IOCTLSER_ERR_INSTALLEDSER_ERR_NOT_OPEN SER_ERR_COUNT,/home/hugg/compilers/cc65/asminc/modload.incMOD_CTRLREAD +CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_READ MLOAD_ERR_HDR MLOAD_ERR_OS MLOAD_ERR_FMT MLOAD_ERR_MEM ser_clear_ptrreturn0 no_driverCODERODATABSSDATAZEROPAGENULLUzna` iqÈ9(a mpeÕVoW@‹ÛµäíŒ\ÿ‘† ‚à     +‚… ‚† ‚  + +‚ +† ‚à  +‚… ‚† ‚`  +      +¸ƒ   + __SIM6502__runtime/shelp.s +ca65 V2.15popsargsnegaxpopaxsregtmp1tmp2ptr4.sizeL1L2CODERODATABSSDATAZEROPAGENULLUzna` iqÁ2P \_tÓrE^F@‹ÛµäíŒ\ùŠ +„ ‚H  ± ‚… + ‚ +ˆ± ‚… ‚¤ ‚ È Š‘ ‚ˆh‘ ‚L +‚    + ¸ƒ      __SIM6502__runtime/staxspi.s +ca65 V2.15 staxspidxincsp2sptmp1ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqs/¢ ®±>½°¾@‹ÛµäíŒ\ÅË &%… ‚† ‚ „ ‚   +‚… ‚† ‚¤ + ‚ +¥ ‚ ‘ ‚È¥ ‚‘ ‚Ȫ¥ ‚‘ ‚È¥ ‚‘ ‚ ¥ ‚`  + +    ¸ƒ&" ! +% #' __SIM6502__runtime/steaxspi.s +ca65 V2.15 +steaxspidxpopaxsregptr1tmp1tmp2tmp3.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqlÝ% µÆƒIJ@‹ÛµäíŒ\“585… ‚ † ‚  +‚ … ‚† ‚… + ‚ + ± ‚ ðÈ!Ðùæ ‚Ðõ˜"e ‚… ‚  æ ‚ ± ‚‘ ‚ð# #ÈÐ÷æ ‚æ ‚Ðñ¥ ‚ ` +     ¸ƒ$ -0") 4 $.! 57*(,/ #+ __SIM6502__common/strcat.s +ca65 V2.15_strcatpopaxptr1ptr2tmp3.sizesc1sc2sc3sc4sc5CODERODATABSSDATAZEROPAGENULLUzna` iq© µ¸¡Y‰â·ã@‹ÛµäíŒ\† ç,)… ‚  +‚… ‚ † ‚ ± ‚ ð Å + ‚ +ð   ÈÐõæ ‚Ðñ¥ ‚Ð +¦ ‚˜e ‚è`©ª`  +   ¸ƒ  -0"&  $. %(,/#' __SIM6502__common/strchr.s +ca65 V2.15_strchrpopaxptr1tmp1.sizeLoopEOSFoundNotFoundFound1CODERODATABSSDATAZEROPAGENULLUzna` iqx‘  ƒ#x›Ÿœ@‹ÛµäíŒ\´Ð '#… ‚ † ‚  +‚ … ‚† ‚  +± ‚Ñ ‚Ð   ª ðÈÐôæ ‚æ ‚Ðî°¢ÿ`¢`  ¸ƒ "    # __SIM6502__common/strcmp.s +ca65 V2.15_strcmppopaxptr1ptr2.sizeloopL1L3L2CODERODATABSSDATAZEROPAGENULLUzna` iqVÇ.õ µ¹ŠCD@‹ÛµäíŒ\Ó +84… ‚† ‚  + +‚ +… ‚† ‚¢ † ‚  ± ‚ ð… ‚È!Ðæ ‚„ ‚ ± ‚ð""Å ‚ð ÈÐõ¤ ‚ èÐáæ ‚Ð#Ý#Š¦ ‚` +     +¸ƒ$ 0") 61 ! *(2 #'+ __SIM6502__common/strcspn.s +ca65 V2.15_strcspnpopaxptr1ptr2tmp1tmp2tmp3.sizeL1L6L2L3L4CODERODATABSSDATAZEROPAGENULLUzna` kzS*Í*T!-0-3-^‘?³DC2-EC@‹Ûµä‹m\‹gfaXÈÆ"…ò    Ë +‚Ë©‹„ +ƒ„‚ +ƒ‚­ +ƒ ŸÑü ‚ü­Ø +ƒØȱñÒ ‚Òˆˆ¢ÖŠÕLØ +‚Ø Ã ± +‚±… ‚†¾ ‚¾ ˜ +‚˜ Õ a +‚a Õ±„ ‚„… +ƒ…ÉÊÐíí Ü ? +‚?…¿ ‚¿†É ‚ɩШ¯‘· ‚·­¸ +ƒ¸®× +ƒ×Lœ +‚œ­¬ +ƒ¬É%Â𶖶–L¶ +ƒL¶©î Hƒîê +ƒ-ê©ì Iƒì¥ +ƒ-¥ Û ² +‚²…é ‚é†¢ ‚¢ # +‚# ê « +‚« ‡±¤ ‚¤É%Éи¸L¸ +ƒ.¸ÉAãÐúúLú +ƒ7úÉBŠÐ  L  +ƒW ÉD“кºLº +ƒwºÉFÍЩ©L© +ƒ»©ÉHд´L´ +ƒ´ÉI Ð½½L½ +ƒ(½ÉMÊÐL +ƒ]ÉPг³L³ +ƒ}³ÉSŸÐ°°L° +ƒ¤°ÉU£Ð´´L´ +ƒÂ´ÉW¥Ð»»L» +ƒ»ÉX7ÐL +ƒYÉYÐõõLõ +ƒ‹õÉZ™Ð¨¨L¨ +ƒ¾¨ÉaЬ¬L¬ +ƒâ¬Éb„ÐêêLê +ƒêÉc×н½L½ +ƒ@½Éd8ÐÚÚLÚ +ƒËÚÉjûÐ÷÷L÷ +ƒë÷Ém\ÐääLä +ƒäÉp¤ÐppLp +ƒ7pÉwЀ€L€ +ƒ^€ÉxÐœœLœ +ƒ~œÉyÖЇ‡L‡ +ƒË‡L£ +ƒõ£Œ +ƒŒŒ¶ +ƒ¶LÎ +ƒøÎ Ó +‚ Ó  õ ) +‚ ) õ +‚ õùiÅ HƒÅ¨¼ŠPiÑ IƒÑª÷˜ž â +‚ +â™ +ƒ-™ŽÊ +ƒ-ÊLŸ +ƒøŸ › +‚ ›  ‡  +‚  š +‚ šÉi~ Hƒ~¨,Šiý Iƒýª¼˜ ô +‚ +ô™ +ƒ-™Ž‘ +ƒ-‘L· +ƒø·©† Hƒ†¢ Iƒ ö +‚ö©© Hƒ.©¢ˆ Iƒ.ˆ Ù +‚Ù Õ à +‚à  à ¶ +‚ ¶ µ +‚µ Ì +‚Ì Ï ª +‚ª È ÷ +‚ ÷  l ‘ +‚‘  ¹ – +‚ –¢£©dœ ¼ +‚¼ · +‚·  +Æ ” +‚”Lš +ƒøš©ù Hƒù¢Þ IƒÞ ¸ +‚¸©ñ Hƒñ¢` Iƒ` < +‚<  ã +‚ã   ’ +‚ ’…ƒ ‚ƒ†È ‚È©lÎËe„ ‚„Hº©Íeô ‚ôªóhø ; +‚; … ï +‚ï  ‰ Š +‚ Š ˆ +‚ˆ B +‚B   ù +‚ù ü µ +‚ µ  +Ä À +‚ÀLV +ƒøV©” Hƒ”¢Ý IƒÝ „ +‚„©ï Hƒ +ï¢ Iƒ + ® +‚® â ë +‚ë Û  +‚  ö ç +‚çL‹ +ƒø‹©Ä HƒÄ¢ Iƒ ñ +‚ñ© Hƒ +¢« Iƒ +« “ +‚“ ô  +‚ Ã Ö +‚ Ö  1 Å +‚Å ô +‚ô¢°© ˆ ý +‚ý ‰ +‚‰ ‹ +‚‹ œ î +‚îLî +ƒøî©G HƒG¢À IƒÀ ¡ +‚¡©ó Hƒ +ó¢9 Iƒ +9 ¦ +‚¦  É +‚É ê Û +‚ Û Á ¸ +‚¸LŠ +ƒøŠ Œ +‚ Œ ¬ ˜ +‚ ˜É ’Š³éžp™™I€  ©“ Hƒï“¢ƒ IƒïƒL¦ +ƒ›¦©ß Hƒìߢÿ IƒìÿÊ +ƒ-ÊŽé +ƒ-éL¾ +ƒø¾© Hƒ ¢­ Iƒ­  +‚©ù Hƒ +ù¢Ì Iƒ +Ì £ +‚£ — ˜ +‚˜ Ž +‚Ž   ‰ +‚‰L3 +ƒø3©« Hƒ«¢ð Iƒð é +‚é©À Hƒ +À¢ Iƒ + å +‚å ± ž +‚ž † > +‚ >  +‚ ´ +‚´ Ô Z +‚Z  ä Ž +‚ Ž © +‚© þ +‚þ©± Š +‚Š y +‚y þ › +‚›Lù +ƒøù©‚ Hƒ‚¢Ñ IƒÑ £ +‚£©æ Hƒ +æ¢ÿ Iƒ +ÿ ˆ +‚ˆ ‘ • +‚• — µ +‚ µ ´ +‚´ à +‚àá ! +‚!  ‹…‰ ‚‰†Ì ‚Ì±æ ‚æÈ¨Ì ‚Ìð°° × î +‚î  § ¯ +‚ ¯  +‚ÂL  +ƒC ª'©Þ X +‚X © +‚©©š ˜ +‚˜ ¾ +‚¾ ¼ ß +‚ßLÆ +ƒøÆ©¡ Hƒ¡¢ò Iƒò e +‚e©+ Hƒ=+¢¿ Iƒ=¿  +‚  … è +‚è ¼ š +‚ š —  +‚ ( À +‚ À  Š § +‚§ ¾ +‚¾  +Œ ¢ +‚¢LÆ +ƒøÆ©ž Hƒž¢å Iƒå Œ +‚Œ©Ý HƒåÝ¢& Iƒå& ä +‚ä  ÷ +‚÷  Ù Ù +‚ Ù…» ‚»†ö ‚ö©l»IeÑ ‚ÑHJ©üeµ ‚µªFhú † +‚† Ú Õ +‚ÕLå +ƒøå Û +‚ Û ƒ… ‚†¨ ‚¨±ª ‚ªÈjä ‚äð¡¡©Ô H‚ +Ô¢” I‚ +”L¡ +ƒÙ¡©€ H‚€¢ÿ I‚ÿè +ƒ-èŽÄ +ƒ-ÄLú +ƒøú©Ë HƒË¢è Iƒè c +‚c©Ç Hƒ×Ç¢z Iƒ×z ì +‚ì ¸ [ +‚[   ² +‚ ² } +‚ }­i‘ Hƒ‘¨úŠ“ió Iƒóª¦˜› ø +‚ø  ´ +‚´L˜ +ƒø˜©° Hƒ°¢M IƒM › +‚›©ƒ Hƒ×ƒ¢b Iƒ×b æ +‚æ ³ Æ +‚Æ  º ® +‚ ® ò +‚ òñiÍ HƒÍ¨ãŠØiñ Iƒñªá˜Þ _ +‚_ « ð +‚ðL§ +ƒø§©ä Hƒä¢ Iƒ  +‚©Ó HƒÓ¢‡ Iƒ‡ Å +‚Å · ¯ +‚¯  ^ * +‚ * â +‚ â…iL HƒL¨õŠÜi Iƒªá˜Ž f +‚f “ ø +‚ø  ï Í +‚ Í ë +‚ ë²i¶ Hƒ¶¨¯ŠŒiÿ Iƒÿªý˜‚ ® +‚®   Î +‚Î Ó  +‚   ¤ € +‚€ ’ Ç +‚ Ç  € ½ +‚½ ¢ ® +‚ ® ¹ î +‚î x +‚x Ý ­ +‚­  ˜ Í +‚ Í…Á ‚Á†‰ ‚‰©líçeà ‚àH™©ûeß ‚ߪÅh†  +‚ ˆ æ +‚æL› +ƒø›©€ Hƒ€¢² Iƒ² ‹ +‚‹©ª Hƒ +ª¢ï Iƒ +ï Á +‚Á æ   +‚  % ¹ +‚ ¹ T ö +‚öLª +ƒøª© Hƒ¢o Iƒo ¿ +‚¿©s HƒÒs¢0 IƒÒ0 Ú +‚Ú • É +‚É K “ +‚ “ ¢ +‚¢ ƒ +‚ƒ  ì +‚ìL† +ƒø†©Þ HƒÞ¢Q IƒQ ¥ +‚¥©Å Hƒ +Å¢Ö Iƒ +Ö Ò +‚Ò Ë û +‚û  ° ð +‚ ð / +‚/ Ò +‚Ò œ Ï +‚ÏLå +ƒøå š +‚ š Ç . +‚ .É áŠ‚éWpSSI€ÀÀ©þ Hƒòþ¢» Iƒò»L¯ +ƒU¯©– Hƒé–¢­ Iƒé­‹ +ƒ-‹Žè +ƒ-èLï +ƒøï©– Hƒ–¢Ÿ IƒŸ U +‚U©È HƒÈ¢’ Iƒ’ ç +‚ç  Ÿ +‚Ÿ  A Ý +‚ Ý Û  +‚Lç +ƒøç©Ã HƒÃ¢Á IƒÁ ¶ +‚¶©Ó HƒÓ¢› Iƒ› ö +‚ö  r +‚r  û Ø +‚ Ø…¬ ‚¬†Ä ‚Ä©lèéeš ‚šHЩÈe ‚ªÈhœ « +‚« ‚ à +‚à Ë » +‚ » ¡ +‚¡ ³ +‚³  Ç  + +‚ + ½ i +‚ i  +Š Ü +‚ÜL +ƒø©ª Hƒª¢­ Iƒ­ ë +‚ë©ü Hƒ +ü¢§ Iƒ +§ ÿ +‚ÿ ¤ : +‚:  q R +‚ R¢—©dð ÷ +‚÷ ø +‚ø · ¤ +‚¤LY +ƒøYŒ +ƒ­ +ƒ-®D +ƒ-D Á +‚Áâ +ƒâŽÑ +ƒÑžm¿ +ƒ¿Ç +ƒÇŠÂmí +ƒí‚ +ƒ‚­ë +ƒë EÑì ‚ì­Ú +ƒÚÈÐñ¢ ‚¢€Ù€ÙL€• +ƒ €•  ½ ¹ +‚¹­à +ƒ-à®  +ƒ-  Ô +‚Ô­• +ƒ•®¹ +ƒ¹ ’ +‚’­× +ƒ×® +ƒ d Þ +‚ÞLÎ +ƒ Π¦ Ž +‚Ž…| ‚|†O ‚O Ï +‚Ï  ñ +‚ñ­å +ƒå ™‘² ‚²îì +ƒìð…–…–L… +ƒ …îh +ƒhLí +ƒ 튆õõ%â.â3âsâ â%â.â3âsâ%â3âdâ â%â0â2âdý:ý%ý0ý2ýdý:ý%ý0ý2ýdý ý%ýdýý% 0 4 d - % 0 2 d - % 0 2 d  %]0]2]d]/]%]0]2]d]/]%]0]2]d]]%02d:%02d:%02dW¨e¨d¨n¨e¨s¨d¨a¨y¨¨S‘e‘p‘t‘e‘m‘b‘e‘r‘‘FþeþbþrþuþaþrþyþþS a t u r d a y  N—o—v—e—m—b—e—r——TŽhŽuŽrŽsŽdŽaŽyŽŽDÊeÊcÊeÊmÊbÊeÊrÊÊJ…a…n…u…a…r…y……OgcgtgogbgegrggTÎuÎeÎsÎdÎaÎyÎÎAÙuÙgÙuÙsÙtÙÙFürüiüdüaüyüüSÚuÚnÚdÚaÚyÚÚMŒoŒnŒdŒaŒyŒŒMarchAžpžržižlžžJÒuÒnÒeÒÒ%¥0¥3¥d¥¥%ó.ó3ósóóJNuNlNyNNMòaòyòò%Ì4ÌdÌÌAºMººa”m””pƒmƒƒPmMmmõ‡//nn§§Ý""""""""""""""""""""""""""""""""""""""""44çˆ& +ƒ³ +ƒº³ +ƒu +ƒL +ƒ{û +ƒ¬– +ƒiý +ƒ± +ƒ`¨ +ƒÁ® +ƒÇ‘ +ƒáø +ƒÍã +ƒÜÄ +ƒ¥¦ +ƒVú +ƒ•ò +ƒr$ +ƒ„ቊ„6Þƒ6¹|6Âz6Š˜y6©Xx6´w6Ž¾ø_f®xs6År6¼ý÷q6÷–µÛšÀÇ®¹ÝiRp6âôo6õš}òâën6)¶’ŠÖ˜>Žµ¯Ù²®*ÍÍ“ð.Ø»m6Ó›ŒÛšO6a«ñN6 ˜#µˆ‰¢/¡ÏM6(±?²àª‘ãïùëɘžZ•!îè§÷[Ưø΀½î­ ÉûŸrà +:ŽL6ØœI6;ËöÙÌ·¸<;B„®ñ“ô‹¡¦£éå´þy£ˆÃ©¾e Œä†cì›æÅ‹Á¿Úƒ¥ÒÒUç¶ö«³ëÿøÔ”Ô”€ÿÜ”Àç›ß¢Õ´ðæöìÏܤé’ÔÁ @¿É·ƒÈ„ô‰ÌæÌ»öѵ¨ªäÁ‰àß¬Äšà ¾„颤|O²àüÒ좸ƒò ê–£ÆÌ—ÅàÌ׉Ç꜓ҷ܊̦ïm•žûá‘\äjáĈ½|ôÒèúÍß…²«–ꃞŠU±Úæù÷Ŷ¨© ÉË-ƒŽ‚õýÿšÐ¯P¤ÿ¢ù¶ÃÒµÔ€¬ŸêÌÀµ¢²šžÞÖ0­ìM¦]‚“íøÕ•‡lHò³œG£¢Œç…·ãââ§óÊ?íòÛ¢‚ž"ê×)™oú׈åµáŽ>“&Ü’ÖèØyÃs™ˆ¿ØôãËÕ–†´¬ Ðþ³ðÉúåW”ö÷³Î–ÿïé¼™˜ÊÚ÷¢9€Cø˜š™°•›8Ûîó¿Ú}…»ë¨‹Lã¶ò‹ÍÖª´ÝøOѥض—ý6p°ì ´±ÕÆ–EîðÆÅõ‰ÕܧŦ‘¾¿ ü°„±ö‚ÂÎ÷¼ôÿú„ɯ‘䃔tÞ®±ªkªÏŸ•ÃŽÀüÙí’3é„çäàÉÛë૦ŽTºå1ݸѫœAÌ›4çËÒó²;–ÃÄćºúÚÛeÚ·§ñÇJ§¸§æù˜üªü¥nóá$»ïð≿.€À‚êñ‚£!îi¤ºÈ5©æ„„°‡­ßðŒq˜ìI¨ëßËðâá£ØÏË¥ºÓÍÝ­¯š1Ù¬”ìชŠœx¤µ‰ÞüÐåÇÊ ®‘=¬Ç †¥œ¼ù—þ¨†Ÿ5 +¾ÙFõ¯³Þ•»ãÛ«ùóÙûâ%7ìÝÝýÍÅ耴õé ‘[@¥„NšÆɇßÓ*ãѽ…åÓ°Á(õ“Š°«‡ÈŠçœªö£ô‹Õ£Á²ñ·­©r܆Á3´®€¨Vºä럈ÑÏÐÂÙë®±¤Â,¾¡ö2¥¬þ—æ¡òä 4¹Ô¡þû³ƒwŽ¤ÈÆ™¡¾ŸµÀ½RKÂûûév±z¨Îï¹”“©ŒŒ¤Ï/ȼȲ¾:Ô®Ççu››¯˜¼™šÞÖ©ñ«¦ÔÑ’î¹Á¸¡Î ŒŸ#½ï»í¡è×ÀöÊž•¶æþÏت¢ÿ'èÐý›Ä‹…§—Á½B†¦S‰£éD×ø…ˆÊÓŽžÔθ­ñƒÍ¿‘ýZ®ô‰ ¹{Ã’Ó÷Ä–ƒÖ”Qà“<·»¬ ˆ˜øßí’›¹’”‹YX.­©ÜÒò‡†—+î‹ __SIM6502__../libwrk/sim6502/strftime.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_strlen_memcpy_sprintf__tz _strftimeL00DA.sizeL006BL0111L0062L00B2L000DL0027L0019L0013L002BL000FL002DL0017L0029L000BL0025L0011L0007L0009L001BL001DL007BL0083L011AL0021L0096L009DL00A5L00F7L00F0L00CAL00D2L0074L00E9L0023L001FL00BBL0103L010AL008FL008CL0100L0006L0016L002FL0030L0031L0033L0034pushaxL0037L003Bincsp8ldaxyspincax1staxyspL0133L0045L0135L0055L005AL005FL0068L0071L0078L0080L0087L0093L009AL00A2L00AFL00B8L00BFL00C7L00CFL00D7L00E6L00EDL00F4L00FBL0107L010EL0117L0136L004Bldax0spldaxidxaslax1ldaxipushwidxtosmoda0incaxyL008BL008DL0090pushwincax7tossubaxtosdiva0L00AAdecax1L00ACL00C2L00C4L00FFL0101L0104pushwyspaddeqyspCODERODATABSSDATAZEROPAGENULLUzna` ixƒû'"9<(dH¬;­@‹ÛµäíŒ\ð faXäL E;… ‚† ‚  +‚… ‚† ‚ ±5 ‚5ª½2 +‚2)-ðŠ!ià6ª1† ‚±3 ‚3ª½% +‚%) ð44Š( ià'ª:ä ‚Ð Š0ð  ÈÐ+Ö+æ ‚æ ‚Ð#Ð#°&&¢ÿ`¢`8!"#$% + 53$2%¸ƒ "¸ƒ,"; -0)& 98314;$.! 5 +%7*(2/ #'<+& __SIM6502__common/stricmp.s +ca65 V2.15_stricmp _strcasecmppopax__ctypeptr1ptr2tmp1*/home/hugg/compilers/cc65/asminc/ctype.incCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.sizeloopL1L2L3L5L4CODERODATABSSDATAZEROPAGENULLUzna` iq¯  +* 69[”eù8ú@‹ÛµäíŒ\ðx … ‚† + ‚ +¢ ± ‚ ðÈÐùæ ‚èÐ ô ˜` +     + ¸ƒ     + __SIM6502__common/strlen.s +ca65 V2.15_strlenptr1.sizeL1L9CODERODATABSSDATAZEROPAGENULLUzna` iqøi7  ¬¯¯?®@@‹ÛµäíŒ\™ ÁUNIÿ…" ‚"ŠIÿ)… ‚  +‚… ‚† ‚  +‚ … ‚† ‚…& ‚&†- ‚- ± ‚ðÈ/Ð+ù+æ ‚Ðõ˜ +,e( ‚(… ‚''æ2 ‚2 ¦ ‚èÐæ# ‚#ð±% ‚%‘ ‚ð   È*Ððæ1 ‚1æ! ‚!Ð ê ©.‘ ‚¥0 ‚0¦ ‚`$ + #  " &-0 +(2! %1  ¸ƒ3 0H")>& 9C86E314; != 5F7*(: 'BD<+ __SIM6502__common/strncat.s +ca65 V2.15_strncatpopaxptr1ptr2ptr3tmp1tmp2.sizeL1L2L3L4L5L6L7CODERODATABSSDATAZEROPAGENULLUzna` iqzë# Îëš…†@‹ÛµäíŒ\¼C?7Iÿ… ‚ŠIÿ…% ‚%  +‚… ‚† ‚ & +‚&…$ ‚$† ‚ æ ‚ð± ‚Ñ" ‚"Ъð  ÈÐðæ ‚ æ ‚ Ð#ê#æ ‚Ðê© +ª'`°¢ÿ!` ¢` %" $ &¸ƒ)0?)> 9C8LO6E1 J.!I%7N*2K/: DQ __SIM6502__common/strncmp.s +ca65 V2.15_strncmppopaxptr1ptr2ptr3.sizeLoopIncHiCompNotEqualEqual1EqualL1CODERODATABSSDATAZEROPAGENULLUzna` iq­3Q ]`âBÒ_Ó@‹ÛµäíŒ\ vHCIÿ… ‚Š$Iÿ… ‚  +‚… ‚ † ‚  +‚… ‚†) ‚)† ‚¦ ‚ è+Ð''æ ‚ð± ‚‘ ‚ð + +È(Ð"ð"æ ‚æ! ‚!Ð,ê,è%ð ‘ ‚È#Ðøæ ‚Ðôæ ‚ Ð&ó&¥ ‚ ¦ ‚`  +      )!   ¸ƒH- 0?")>& 9E314$! 5%@*(2/: 'B+ __SIM6502__common/strncpy.s +ca65 V2.15_strncpypopaxptr1ptr2tmp1tmp2tmp3L1.sizeL2L9L5L3L6L4CODERODATABSSDATAZEROPAGENULLUzna` ixön1Ÿ¶¹i"k¸Ž@‹ÛµäíŒ\¤ faXä¿$]OIÿB… ‚Š@Iÿ9… ‚ ? +‚?…& ‚&† ‚ A +‚A…$ ‚$†. ‚. æ ‚ð%0%±7 ‚7ª½! +‚!),ðŠ/8é ª>†" ‚"±+ ‚+ª½ +‚ )1ð  ŠC8é Dªä ‚ Ð + +Š)ð##È2ÐÒæ ‚æF ‚FÐ;Ì;æ5 ‚5ÐÌ©0ª` °¢ÿ:`*¢`%&'() "  +5 &7F$.+-! -?A¸ƒ(¸ƒ8H\ -P]HG?")> fW9C8O6Egb3A4;J$.! Id=5 +%7[@NaV2cR: #BDQ* __SIM6502__common/strnicmp.s +ca65 V2.15 _strnicmp _strncasecmppopax__ctypeptr1ptr2ptr3tmp1*/home/hugg/compilers/cc65/asminc/ctype.incCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.sizeLoopIncHiCompL1L2NotEqualEqual1EqualL3CODERODATABSSDATAZEROPAGENULLUzna` iqƒô6* 69ɘš8›@‹ÛµäíŒ\ LA<  +‚… ‚† ‚   +‚ … ‚† ‚  ± + ‚ +ð*… ‚ÈÐ%%æ ‚„# ‚# ± ‚ðÅ& ‚&ð" "ÈÐõ¤ ‚è$Ðáæ ‚Ðݦ ‚¥! ‚!e ‚è`L +‚   #! + &      +  ¸ƒ( 0")& 8314 .! *(2/ '< __SIM6502__common/strpbrk.s +ca65 V2.15_strpbrkpopaxreturn0ptr1ptr2tmp1tmp2tmp3.sizeL1L9L2L3L4L6L7CODERODATABSSDATAZEROPAGENULLUzna` iqDµ$Ù å蜄zþçÿ@‹ÛµäíŒ\ø  0-… ‚  +‚… ‚ † ‚©… ‚ … + ‚ +¨± ‚ ðÅ ‚Ð ˜e ‚… ‚¥ ‚i… ‚ÈÐéæ ‚Ðå¥ ‚¦ ‚`   +   ¸ƒ -")&  .! (/ ' __SIM6502__common/strrchr.s +ca65 V2.15_strrchrpopaxptr1ptr2tmp1.sizeL1L3L2CODERODATABSSDATAZEROPAGENULLUzna` iqVÇ.õ µ¹ˆAB@‹ÛµäíŒ\Ò +84… ‚† ‚  +‚ … ‚† ‚¢ † ‚  ± ‚ ð… ‚È!Ðæ ‚„ ‚ ± ‚ð""Å ‚ðÈÐõ¤ ‚ èÐáæ ‚Ð#Ý#Š¦ ‚` +     ¸ƒ$ 0") 81 ! *(2 #'+ __SIM6502__common/strspn.s +ca65 V2.15_strspnpopaxptr1ptr2tmp1tmp2tmp3.sizeL1L6L2L3L4CODERODATABSSDATAZEROPAGENULLUzna` iq"“8Ë ×Ú鞇و@‹ÛµäíŒ\ÆëXS… ‚†" ‚"… ‚  +‚… ‚† ‚  ±& ‚&ð/</… ‚± ‚ð1;1Å- ‚-ðÈÐ.õ.æ ‚Ð$ñ$˜ )e5 ‚5…, ‚,æ ‚… ‚¥ ‚…# ‚#¥ ‚…% ‚% ±4 ‚4ð!!Ñ + ‚ +Ð È'Ðõæ0 ‚0æ ‚ Ð3ï3 ÐÆ¥ ‚¦( ‚(`©ª`+ + -  %4  # +0 "& + 5,( ¸ƒ6U -MH?")> C8O63TA4 $.!I= 5%7@N*aV, #BSD<+ __SIM6502__common/strstr.s +ca65 V2.15_strstrpopaxptr1ptr2ptr3ptr4tmp1.size@Found@L1 @NotFound@L2@L3@L4@L5CODERODATABSSDATAZEROPAGENULLUzna` iq¸)< HK`«a J @‹ÛµäíŒ\Ì… ‚† + ‚ + ± ‚ª¥ ‚ ‘ ‚ˆ± ‚H¥ ‚‘ ‚ h`  +     +   ¸ƒ     + __SIM6502__runtime/swap.s +ca65 V2.15swapstkspptr4.sizeCODERODATABSSDATAZEROPAGENULLUzna` i€0°%Õ2 +?I8  ‚@‹ÛµäíŒ\5íŒ\©RŸfaXàηŽje +ƒe…å ‚åŽ™ +ƒ™†{ ‚{ ‹± ‚ Ùf +ƒfÐ$S$ˆ +ö Î©6 H‚6‘a ‚aÈð©ë I‚ë‘à ‚à •¢èN ñ +ƒXñ  +ƒXÀ9lЖõ– ª +ƒª  +ƒl ¼¢ +‰±® ‚®p +ƒpˆ*Ê›¾÷¾­I +ƒ9Ið==©LÛœ +ƒ9œ©¢¢þ, +ƒ,ÊÑ[ú[` ±o ‚o} +ƒ}È©è`…©H^ +ƒ^`Ì©öÞ +ƒÞ`—­† +ƒ†…õ ‚õ­× +ƒ×…k ‚k`w š +‚š „ +ƒ„©`Ä +ƒ9©€5 +ƒ5  +ƒ  +ƒ`¸tžgžižžx¹( > ½ ˆ  û â  ’  Š - ü „ ³ 3 Ø  Ù m u ¬ T µ K C¤º<LtLŠLDLLXL­L(L%L–L~LçLPL"LÁLSLL˜LæLŒ`qqq»¼vÓš¦ å{ aà®oõk‚6ë1¸ƒw¸‹ƒË¸qƒl7¸lƒf|$¸kƒ`¸fƒ‚4¸eƒ6Œ¸dƒ3æ¸cƒ0˜¸bƒ-¸aƒ*S¸`ƒ'Á¸_ƒ$"¸^ƒ!P¸]ƒç¸\ƒ~¸[ƒ–¸Zƒ%¸Yƒ(¸Xƒ­¸Wƒ X¸Vƒ ¸UƒD¸TƒŠ„¸Sƒtª¸Nƒ'C¸Mƒ%K¸Lƒ$µ¸Kƒ#T¸Jƒ"¬¸Iƒ!u¸Hƒ¸GƒØ¸Fƒm¸EƒÙ¸Dƒ3¸Cƒü¸Bƒ„¸Aƒ Š¸@ƒ ¸?ƒ +’¸>ƒ ¸=ƒâ¸<ƒû¸;ƒ¸:ƒˆ¸9ƒ½^Þ¸8ƒ>e™†×5 ¹Fƒ9q:Iœ£< ÌšÒœ°ÜymâéjÛ/ |- ŠÄ? Ú¤©-PÔ×h¢M¨lH‚G›—ž")B Þ)(&ÖØs¿ÏÍ ´F –P= Úê9CH 7 +°•Ò8u)}&L(©O6'· E’É E -±D åtßA }bk²; §Ã€38 ¦ŽT/1A4Ä¿G ƒe·§JàÊnŠ$äÀÅ6 .!i˜9 : ¦g±ãn+Iº¢dͳ4¯ÆxÙ™œÜzoᨆ¡5Fi‡{~%f7ç5Ö„KË‹‘@*N*€Ñè‘_2 Õ, a²1 rÁ,Ÿ]ÂÝ|> Â,2À—2ùww\@ vcRK¸†tvÌ. ÙÈu~WØÁ¸I žÑ`#æ¹×µ¾0ϪJeŒB¥SDÇÎ0 Ÿ…Ó¶{£Q®ˆ˜ÐX¯‰C 3 ½ __SIM6502__tgi/tgi-kernel.s +ca65 V2.15 +tgi_librefptr1tgi_irq//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload./home/hugg/compilers/cc65/asminc/tgi-error.inc +TGI_ERR_OKTGI_ERR_NO_DRIVERTGI_ERR_CANNOT_LOADTGI_ERR_INV_DRIVERTGI_ERR_INV_MODETGI_ERR_INV_ARGTGI_ERR_INV_FUNCTGI_ERR_INV_FONTTGI_ERR_NO_RESTGI_ERR_UNKNOWNTGI_ERR_INSTALLED TGI_ERR_COUNTcstartcsizetgi_driver_vars jumpvectorstgi_sig@L0@L1copy@L3@L4@L5CODERODATABSSDATAZEROPAGENULLUzna` ixMÅœa mpp +Œo@‹ÛµäíŒ\ÚíŒ\©Rª­…p ‚p†I ‚I  +‚…3 ‚3†M ‚M ˜ +‚˜…Ó ‚Ó† ‚ ³ +‚³… ‚†u ‚u¥l ‚lÅ' ‚'¥Ë ‚Ëåh ‚h¥- ‚-¤Ñ ‚Ñ…ž ‚ž„( ‚(¥› ‚›¤é ‚é…¬ ‚¬„ ‚¥[ ‚[Å­ ‚­¥X ‚Xå] ‚]‰‰¥C ‚C¤‘ ‚‘…= ‚=„8 ‚8¥Â ‚¤^ ‚^…â ‚â„… ‚…¥\ ‚\Ô ‚Ô09Y9$$ ‚$!!©y…c ‚c…¸ ‚¸ð? ?¥ ‚Íá +‚ ᥷ ‚·íÖ +‚ Ö°ZAZ$ç ‚çææ©Ü…™ ‚™… + ‚ +𠥤 ‚¤ÍR +‚R¥¶ ‚¶í{ +‚{°b)b¥m ‚mÍ +‚  ¥S ‚Sí +‚   f +‚f…) ‚)†D ‚D¥N ‚NÍà +‚Ã¥¼ ‚¼í± +‚± . +‚.…½ ‚½†ß ‚ßL +‚`«¬­®¯ + ˜³ŸŠ pI[XC8Â…\N¼½ßžŠ 3MlË-(›ÔmS)DŠ Ó­]‘=^âç™ +¤¶œŠ u'hÑžé¬$c¸·}¾.|—f`VC#R{ñBáÖ ¸pƒ­@í< šœ°ymâé\jÛ/ - …ƒÄ? ¤ -PÔ×h]¨lH‚G›—")oB Þ)&yÏÍ´F P= Úê9CH 7 Ò8uL(©6p· ’ÉE D åtßA }bk²; §38 T1A4;¿G ƒeJàÊnŠ$äÅ6 !i˜9 : ¦g±ãn+I¢d³4Æx™xÜzo=á¡5 +i‡{~%f7ç5Ö„KË[**€è(‘_2 Õ, a1 Á]ÂÝ|> ,2ÀÃww\@ vcRK¸†tvzÌ. ÙÈ:uWØI žÑ`#æ¹µ¾J'eB¥SÇÎ0 Ÿ…ZÓ¶{£Q<®ˆÐYX¯+‰C 3 ° __SIM6502__ tgi/tgi_bar.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadptr1ptr2ptr3ptr4popax@L1@L2@L9@L3@L4@L5@L6@L7@L8CODERODATABSSDATAZEROPAGENULLUzna` ixWÏÝ èës^çE êF @‹ÛµäfaXÛíŒ\©R & +‚&L +‚žŸ ¡¢œ&tu¸qƒFž< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒàÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 £ __SIM6502__tgi/tgi_circle.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadpushaCODERODATABSSDATAZEROPAGENULLUzna` ixC» +ÌÏ_.à Î @‹ÛµäfaXÃíŒ\©RœžŸ ¡VTr‚š< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒàÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¢ __SIM6502__tgi/tgi_clear.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` iˆq +ù +ÒË Þ á  èÅ ­à ®@‹ÛµäfaXÏLíŒ\©RŸfaXѯfaXÈ +Óãç Š @ +‚@† +ƒ†`” © H‚‚© ž +‚ž§ +ƒ§`칤 +ƒ¤Iÿì]iñ™s +ƒs¹î +ƒîIÿ6i2™Ñ +ƒÑ`±­U +‚U8íŽ +‚ Žú +ƒú­‚ +‚‚í +‚  - +ƒ-Á +ƒÁ€€ æ • +ƒ•­µ +‚µ8×í® +‚®Q +ƒQ­{ +‚{í +‚ +ƒÂM“ +ƒ“1 +ƒ1,¶ +ƒ¶AA ÎÎL˜ +ƒ˜`ª€M. +ƒ.… ‚˜‰àêê 0 +‚ 0… ‚†ï ‚ï`…P ‚P†« ‚«¤ˆ ‚ˆ„a ‚a¤_ ‚_„¦ ‚¦`à   +ƒi ­‚ +ƒ‚®– +ƒ– W +‚W ¯ +ƒ|¯­ñ +ƒñ®† +ƒ†  +‚ $Î ‚Φ’¦’L¦z +‚ ¦z`› Ö +ƒiÖ­Ý +ƒÝ® +ƒ = +‚= Ò +ƒ|Ò­ô +ƒô®­ +ƒ­ T +‚ TL¹ +ƒ¡¹©^´ +ƒ´ ä +ƒä Ü +ƒ Ü­É +ƒÉ è +ƒèГ “¢Œ½ç +‚ ç•7 ‚7ÊGøGL„ +‚„­‹ +ƒ‹-‹ +ƒ‹ð™™`p­ƒ +ƒƒÐddî£ +ƒ£ g +ƒ(g­\ +ƒ\ДO”OL”î +ƒl”îJyœœ©Ùª¢ðÇ ÇJ»¨,¨­9 +‚ 9®ó +‚ ó¨Ã8‡íY +‚ YŒë +‚ 먧Šºíœ +‚ œŽê +‚ ê ÿ +ƒ‰ÿmo +‚o° +‚°ŠÅm… +‚…: +‚:­¼ +ƒ¼J—JáJž&&©ªÓðí íJfx'x­ + +‚ + +®ö +‚ +ö¨‹8ˆí³ +‚³Œ8 +‚8¨àŠðí +‚Ž¡ +‚¡ Ö +ƒ©Ö¾mt +‚ t¾ +‚ ¾Šmõ +‚ õû +‚ û m +ƒm­ã +ƒãÐùOùOLùî +ƒÏùîJ‰¿¿©’ªDðv vJÀ,À­÷ +‚ ÷® +‚ ¨Œ8í +‚Œé +‚é¨ÏŠÈíÉ +‚ÉŽŠ +‚Š ¼ +ƒ‰¼Õmý +‚ý± +‚±ŠÞmÀ +‚À¯ +‚¯­ +ƒ J¿J–J¢''©‘ªÆð4 4JEn'n­¸ +‚ +¸®Ä +‚ +Ĩ~8€íÙ +‚ÙŒ› +‚›¨ŸŠ©í +‚Žu +‚u å +ƒ©åŠmZ +‚ZÔ +‚ÔŠ¥mk +‚kÑ +‚Ñ  +ƒ LÌ +ƒÏÌÔ#Õ ª  Ô ² ) Ö×ا}Τ’a¦£’7P«ï¡âˆ_nþž@bÈ„Rw ý±À¯Ù›uµ{©Q +éÉŠZÔkÑU‚Pš o°…:³8¡®©OË çYëœêt¾õûŽ Hü +ö¸ÄG­9ó÷L¦¦¦0çTç=W¸gƒÄŸ‡˜< ךœ°hy•âáé\Û/ Ĉ½- ҅ꃊÄ? UÚŤ¨-ÔÒ¬×h0]‚¨‡lH³‚GŒç·Ê?›Û—ž)oB Þˆµ)Ž&ÜÏÍ ´F –fP= åW³Ú¼Êê¢CøšH ™7 Ò›uÛëL(Í©ø¶Æ–· Eðʼn’ܧg ¾É¿E ±D μôå„Éä”tßA }±k²; ªÏ§•ÃÀ’38 «¦«œAÌ›4²Ã¿G ƒe·ÇJàæùÊnŠ»ä¿Å6 ñ‚£^iº˜9 : ¦„g±ãnq˜+IßØË¢Ód³­4ÆxÙ™œÜzüÇoᆡ5ÙFi‡»{~ãóâf7ç5Ö„ÅKË_[š*É*€åè(“Š‘_2 Õ , £a²1 rÁÁ¨]ÑÂÂë®Ý|> ¾¡2À—Ãäw¤\¡@ vc¸†tév±ÎÌï©Œ. ÙȼȲ¯™šWÖØÁI žÎÑ`Ÿíæ¹Àµ¾þØ¢JèÐ eýŒ`‹…—Á½B¥ ‰éDǸÎ0 Ÿ‘…ýZôÓ ¶Ã–£”®ˆ»˜›”ЋYXò¯‡†+‰C 3 Ù __SIM6502__tgi/tgi_clippedline.s +ca65 V2.15 umul16x16r32 udiv32by16r16negax//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace//home/hugg/compilers/cc65/asminc/longbranch.mac tgi_clip_o1 tgi_clip_o2 +tgi_clip_d tgi_clip_dx tgi_clip_dy tgi_clip_signoutcode1outcode2negate +calcdeltas@L1@L9 prepare_coordmove_intermediate_result muldiv_dydxdone muldiv_dxdyLoopL1L0L2 +HaveDeltasL10L3L4L5L6L7L8L11L12L13L14L15L16CODERODATABSSDATAZEROPAGENULLUzna` ix°(G RU–ëì× TØ @‹ÛµäfaXºíŒ\©Rtž¬C +‚C„\ ‚\¬+ +‚+„| ‚|¬2 +‚2„( ‚(¬ +‚„! ‚!`6Ÿ ¡¢£(!œ\|9W28}C+¸eƒ¥< šœ°yâéÛ/ - Ä? ¤ Ô×h¨‚›—B Þ)ÏÍ ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¤ __SIM6502__tgi/tgi_curtoxy.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadptr1ptr2CODERODATABSSDATAZEROPAGENULLUzna` i€w÷ ¾Òت « @‹ÛµäfaX£íŒ\©RœfaXà;ª +­D +‚Dð__ + +‚+©ƒN +‚N`3«¬­®¯S+7‡DN¸sƒc­< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)(ÏÍ´F P= ÚêH 7 +Òu)&(©'· ’ÉE -D åßA }²; §8 /¿G ƒ àÊŠäÅ6 .˜9 : ¦g±ãn+¢³4Æx™Üzo á¡ +i‡{~fç5Ö„KË**€è‘_2 Õ, 1 Á,]ÂÝ|> À2Ãw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾0Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ° __SIM6502__tgi/tgi_done.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload./home/hugg/compilers/cc65/asminc/tgi-error.inc +TGI_ERR_OKTGI_ERR_NO_DRIVERTGI_ERR_CANNOT_LOADTGI_ERR_INV_DRIVERTGI_ERR_INV_MODETGI_ERR_INV_ARGTGI_ERR_INV_FUNCTGI_ERR_INV_FONTTGI_ERR_NO_RESTGI_ERR_UNKNOWNTGI_ERR_INSTALLED TGI_ERR_COUNT@L1CODERODATABSSDATAZEROPAGENULLUzna` ixpèÿ + ‚î}  ~ @‹ÛµäfaX†íŒ\©R4ž  : +‚: e +‚e©h¢L‰ +‚‰Ÿ ¡¢£VeœV:o‰¸tƒ  ¡< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒàÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¤ __SIM6502__tgi/tgi_ellipse.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadpushapush0CODERODATABSSDATAZEROPAGENULLUzna` ixbÚ ã îñsdéM ðN @‹ÛµäfaXßíŒ\©R&œ­' +‚'®u +‚u`EžŸ ¡J›'u¸uƒ<ž< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¢ __SIM6502__tgi/tgi_getaspectratio.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` ixXÐ× âåsXã; ä< @‹ÛµäfaXÁíŒ\©Rœ­; +‚;¢U`&žŸ ¡:;¸vƒYž< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡ +i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¢ __SIM6502__tgi/tgi_getcolor.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` ixXÐØ ãæsYèA åB @‹ÛµäfaXíŒ\©Rœ­ +‚ ¢<`UžŸ ¡F“ ¸wƒž< šœ°yâéÛ/ - Ä? ¤ Ô×h¨‚›—B Þ)ÏÍ ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¢ __SIM6502__tgi/tgi_getcolorcount.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` ixC»à +ÍÐ_/è Ï @‹ÛµäfaX¶íŒ\©RœžŸ ¡\’:x‚:š< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¢ __SIM6502__tgi/tgi_getdefpalette.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` ixŸ- 8;–Ñë¼ :½ @‹ÛµäfaXíŒ\©Rcž­[ +‚[ * +‚*ð{{ J +‚J¢1¬' +‚'𘠎5 +‚5`>Ÿ ¡¢£TJ6)'55‚[*¸yƒ¥< šœ°yâéÛ/ - Ä? ¤ Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒàÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¤ __SIM6502__tgi/tgi_geterror.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` i€xøù OV= “°@‹ÛµäfaXÎ íŒ\©RœfaXàu¹É3 3šš©_ _¨<¢, Iƒ ,© Hƒ $yA +ƒAOOè`¸Îºç5 ¯W0x?\¶v‡Ÿ„°Æ¾•No error¥¥No driver availableCannot lLoad drivLerLLInvalid –driver––Mode notI supportIed by drIiverIIInvalid MfunctionM argumenMtMMFunctions not supsportedssInvalid 6font fil6e66Out of rzesourceszzUnknown /error//A driver) is alre)ady inst)alled))»¼½¾¸zƒSÊ< šœ°yâéÛ/ - Ä? ¤Ô×h0¨‚›—")B Þ)(&ÏÍ´F P= Úê9H 7 +Ò8u)&(©6'· ’ÉE -D åßA }²; §38 /14;¿G ƒ àÊŠ$ä.Å6 .˜9 : ¦g±ãn+¢³4Æx™Üzoá¡5i‡{~%f7ç5Ö„KË***€è(‘_2 Õ, 1 Á,]ÂÝ|> ,2À2Ãw\@ v¸†tÌ. Ù/ÈWØI žÑ`#æ¹µ¾0J'e¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯+‰C 3 ¿ __SIM6502__tgi/tgi_geterrormsg.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload./home/hugg/compilers/cc65/asminc/tgi-error.inc +TGI_ERR_OKTGI_ERR_NO_DRIVERTGI_ERR_CANNOT_LOADTGI_ERR_INV_DRIVERTGI_ERR_INV_MODETGI_ERR_INV_ARGTGI_ERR_INV_FUNCTGI_ERR_INV_FONTTGI_ERR_NO_RESTGI_ERR_UNKNOWNTGI_ERR_INSTALLED TGI_ERR_COUNTL1msgtaboffsL2msg0msg1msg2msg3msg4msg5msg6msg7msg8msg9msg10Message table too largeCODERODATABSSDATAZEROPAGENULL ƒçƒ ¸NUzna` ixbÚâ íð}mæS ïT @‹ÛµäfaXçíŒ\©R&œ®( +‚(ÊwŠG¢/`%žŸ ¡F•(¸{ƒ> < šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¢ __SIM6502__tgi/tgi_getmaxcolor.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` ixbÚâ íðscâE ïF @‹ÛµäfaX´íŒ\©R&œ­' +‚'®u +‚u`EžŸ ¡D;'u¸|ƒ<ž< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¢ __SIM6502__tgi/tgi_getmaxx.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` ixbÚâ íðscâE ïF @‹ÛµäfaX³íŒ\©R&œ­U +‚U®' +‚'`užŸ ¡EaU'¸}ƒ ž< šœ°yâéÛ/ - Ä? ¤ Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒàÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¢ __SIM6502__tgi/tgi_getmaxy.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` ixXÐ× âåsXç? ä@ @‹ÛµäfaX’íŒ\©Rœ­; +‚;¢U`&žŸ ¡G{;¸~ƒYž< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡ +i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¢ __SIM6502__tgi/tgi_getpagecount.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` ixC» +ÌÏ_.å Î @‹ÛµäfaX³íŒ\©RœžŸ ¡[J:‚:š< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¢ __SIM6502__tgi/tgi_getpalette.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` ixkãø ‚‰ïx y @‹ÛµäfaX¨íŒ\©R/ž  ( +‚(°xxLG +‚GL/ +‚/Ÿ ¡¢£œ[/fK(^‘G¸€ƒ >¡< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡ +i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¤ __SIM6502__tgi/tgi_getpixel.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadreturn0@L9CODERODATABSSDATAZEROPAGENULLUzna` ixÞV(~ ‰Œ¹Eõ: ‹; @‹ÛµäíŒ\æíŒ\©R¢  M +‚MŠ$7 ‚70@@¥” ‚”̓ +‚ƒŠíR +‚R° +¥ ‚Í• +‚•¥G ‚Gíg +‚g`¡¢£¤¥ž7G”l0MC•gBƒR¸fƒ-¬< šœ°yâéÛ/ - Ä? ¤ Ô×h¨‚›—")B Þ)&ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒàÊŠ$äÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡ +i‡{~%fç5Ö„KË*€è(‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`#æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¦ __SIM6502__tgi/tgi_getset.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadpopaxptr1ptr2@L9CODERODATABSSDATAZEROPAGENULLUzna` iˆ ¨2Ú æé@)H qèr@‹ÛµäfaX† +íŒ\©RœfaXÓ¬faXÑä¾.#¬( +‚(Ð@@­ +‚¢ª`—­³ +‚³ª© W +‚Wðö†R ‚R­s +‚s…" ‚" °±€ ‚€…} ‚}©Ã… ‚­T +‚T®  +‚ L +‚¿ÀÁÂðR"€}gDA~?rT =³Ws;j(¸ƒ.0Ç< šœ°yâé Û/ - Ä? ¤Ô×hC0¨‚ 3›—"B Þ)(&;ÏÍ´F P= 4ÚêH 7 Òu)(1©'· ’ÉE D åßA }²; §98 4¿G :ƒàÊŠ$ä.Å6 !˜9 : ¦ g±ãn+¢8³4Æx™Üzoá¡i‡{~%fç5Ö„KË***€è(‘_2 Õ, 1 Á>]ÂÝ|> ,2À2Ã<w\@ v¸†tÌ. Ù/ÈWØI žÑ` æ¹µ¾J'e¥ÇÎ0 Ÿ…=Ó¶£®ˆÐ¯+‰C 3 Ä __SIM6502__tgi/tgi_gettextheight.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload3/home/hugg/compilers/cc65/asminc/tgi-vectorfont.incTGI_VF_VERSIONTGI_VF_FIRSTCHARTGI_VF_LASTCHAR TGI_VF_CCOUNT +TGI_VF_HDRMAGICSIZETGI_VECTORFONTTOPBOTTOMHEIGHTWIDTHSCHARSOPS_tgi_vectorchar-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace@L2@L1CODERODATABSSDATAZEROPAGENULLUzna` iˆVæ óö¸€ 8õ9@ŒÛµäfaXàíŒ\©RœfaXÓ¬faXÑÌÇWJ¬" +‚ +"ÐÀ À Æ +‚Ƭ• +‚•„# ‚#L’ +‚’…U ‚U†¥ ‚¥­W +‚ Wª A +‚ Að†9†­3 +‚ 3·iXãX…× ‚׊{i(ÿ(… ‚ V„É ‚É„4 ‚4 ± ‚ðoo ] +‚]¨¯±< ‚<e ‚…@ ‚@æÖ ‚Öæ® ‚®ÐËçËæT ‚TÐ ã ­Ü +‚Ü®Ñ +‚ÑLŽ +‚Ž`ÈÉÊËÌ ¾’½€]¼€Æ²7±G°f#gNŽ@•>MÜÑ=£WA3;y"¸‚ƒW¿á< šœ°yâé Û/ - Ä? U¤ PÔ×hCM¨H‚G ?3›—")B Þ)(>;ÏÍ´F P= 4Úê9CH 7 Òu)L(1©O6'· ’ÉE D åßA }²; §98 T1A4;¿G :ƒJàÊŠäÅ6 ˜9 : ¦ g±ãn+I¢d8³4Æx™Üzo=á¡5 +i‡{~f7ç5Ö„KË_[*N**€è(‘_2 Õ, a1 Á>]ÂÝ|> 2À2Ã<w\@ vRK¸†tÌ. ÙÈ:WØI žÑ` #æ¹µ¾J'eB¥SÇÎ0 Ÿ…Z=Ó¶£Q<®ˆÐY¯‰C 3 Í __SIM6502__tgi/tgi_gettextwidth.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload3/home/hugg/compilers/cc65/asminc/tgi-vectorfont.incTGI_VF_VERSIONTGI_VF_FIRSTCHARTGI_VF_LASTCHAR TGI_VF_CCOUNT +TGI_VF_HDRMAGICSIZETGI_VECTORFONTTOPBOTTOMHEIGHTWIDTHSCHARSOPS_tgi_vectorchar-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace_strlen_toascii umul8x16r16WidthWTabText@L1@L9@L2@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` ixbÚâ îñsdâF ðG @ŒÛµäfaX‚íŒ\©R&œ­; +‚;®U +‚U`&žŸ ¡B ;U¸ƒƒYž< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡ +i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¢ __SIM6502__tgi/tgi_getxres.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` ixbÚâ îñsdâF ðG @ŒÛµäfaX‚íŒ\©R&œ­; +‚;®U +‚U`&žŸ ¡C;U¸„ƒYž< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡ +i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¢ __SIM6502__tgi/tgi_getyres.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` ix†þ #Œ¯ç– "— @ŒÛµäfaX´íŒ\©RJ ( +‚(Žz +‚z I +‚I/ +‚/Ž% +‚%`žŸ ¡¢œ]I9U(z8{/%¸…ƒ@£< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡ +i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 £ __SIM6502__tgi/tgi_gotoxy.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadpopaxCODERODATABSSDATAZEROPAGENULLUzna` i€¢"—¹ ÅÈOõ Ç @ŒÛµäfaXþíŒ\©RœfaXàf¯X= & +‚& @ +‚@ N +‚ N€ +‚€ÉµµÐGîš +‚š · +‚· ¬ +‚¬] +‚]Ž +‚ W +‚W x +‚x! +‚!Ž³ +‚³©Æ “ +‚ “© Y +‚ Y ” +‚ ”…H ‚H†L ‚L s +‚ +s 6 +‚ 6©¤ ‚¤ M +‚M©¢ K +‚K ¶ +‚¶ + +‚+L¹ +‚¹`°±²³´¬RHL«¬xª+©K¶˜z¹’pM„¿Wƒ0·s&\Á”ZrsX½YW©“TN6Rl@E}!³DQ]7œš61€4o¤¸‡ƒX.Ê< šœ°yâéÛ/ - Ä? ¤ -Ô×h¨H‚?›—"B Þ)(&ÏÍ´F P= ÚêCH 7 +Òu)&(©6'· ’ÉE -D åßA }²; §38 /A4;¿G ƒ JàÊŠ$ä.Å6 .!˜9 : ¦g±ãn+¢³4Æx™Üzoá¡5i‡{~%fç5Ö„KË@**€è‘_2 Õ, 1 Á,]ÂÝ|> ,2À2Ãw\@ v¸†tÌ. ÙÈ:WØI žÑ` æ¹µ¾0J'eB¥DÇÎ0 Ÿ…Ó¶£®ˆÐ¯+‰C 3 µ __SIM6502__tgi/tgi_init.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload./home/hugg/compilers/cc65/asminc/tgi-error.inc +TGI_ERR_OKTGI_ERR_NO_DRIVERTGI_ERR_CANNOT_LOADTGI_ERR_INV_DRIVERTGI_ERR_INV_MODETGI_ERR_INV_ARGTGI_ERR_INV_FUNCTGI_ERR_INV_FONTTGI_ERR_NO_RESTGI_ERR_UNKNOWNTGI_ERR_INSTALLED TGI_ERR_COUNTpushaxpushadecax1ptr1@L9@L1CODERODATABSSDATAZEROPAGENULLUzna` ixbÚâ îñxiíV ðW @ŒÛµäfaXÔíŒ\©R&œ +‚Ž +‚`2žŸ ¡=r¸‰ƒ.Ÿ< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒàÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¢ __SIM6502__tgi/tgi_install_vectorfont.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` ixqéÿ ‡•ê  € @ŒÛµäfaXÓíŒ\©R5ž +… ‚† ‚ 3 +‚3L< +‚<Ÿ ¡¢£(œX3U<¸Šƒ +/¢< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒàÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¤ __SIM6502__tgi/tgi_ioctl.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadpopaptr1CODERODATABSSDATAZEROPAGENULLUzna` ixŸ&= IL–âåÇ KÈ @ŒÛµäfaXÊíŒ\©Rc * +‚* | +‚|J +‚JŽ1 +‚1 ' +‚' +‚Ž +‚ L5 +‚5žŸ ¡¢œ^|'j‘*d¡5M<J1L‰ ¸‹ƒA¥< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡ +i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 £ __SIM6502__tgi/tgi_line.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadpopaxCODERODATABSSDATAZEROPAGENULLUzna` ix»3$W be èí dî @ŒÛµäfaXìíŒ\©RZ +‚ZŽ* +‚*{ +‚{ŽI +‚I ' +‚' +‚ Ž4 +‚4= +‚=Ži +‚i`–žŸ ¡¢œ'O/Z*Nm 49U{I8|=i¸jƒ §< šœ°yâéÛ/ - Ä? ¤ Ô×h¨‚›—B Þ)ÏÍ ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒàÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 £ __SIM6502__tgi/tgi_linepop.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadpopaxCODERODATABSSDATAZEROPAGENULLUzna` ixŠ *-›Èë³ ,´ @ŒÛµäfaXÎíŒ\©RNžH| J¹1 +‚1™( +‚(ˆ!÷!h5 > +‚>Lj +‚jŸ ¡¢£j’>d¢jL‰(8}1¸Œƒ[¦< šœ°yâéÛ/ - Ä? ¤ Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒàÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¤ __SIM6502__tgi/tgi_lineto.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadpopax@L1CODERODATABSSDATAZEROPAGENULLUzna` i' ™Xñ ýl +tÿu@ŒÛµäfaX¥íŒ\©RœfaXà©faX´¸faXܶÐXC¬ë +‚ +ëа°¬ +‚ +ðii©Â +ÂÐ, E +‚E©ŽŽ < +‚< 3 Æ +‚Æ` +ƒ`Žä +ƒäŠ–0__©ˆ Hƒˆ¢ Iƒ   +‚Hy­˜ +ƒ˜®D +ƒD  +‚h𧧩//• +‚ •` +­¢ +ƒ¢®W +ƒW » +‚»­L +‚ Lðñ­ +‚ +®f +‚ +f # +‚#LF +‚FÑÒÓ + +‚¸  u  ×ÔÕ È8ÇN¸ÆpÆÄA<ÄE±Ú#°:ˆ»cæF6=•L5¾ëf¸ƒX(ï< šœ°hymâé\Û/ - Ä? U¤-PÔ×hK0¨H‚G›—oB Þ)(&ÏÍ´F P= W Úê92H 7 +<Ò8uJ)&(©O6p'· ’gÉE -D åGßA }b²; §8 /A;¿G ƒàÊnŠä.Å6 . ˜9 : ¦g±ãn+I¢³4Æx™0Üzo á¡Fi‡{~f7ç5Ö„KË[@*N*€è1‘_2 Õ, a1 rÁ,V]ÂÝ|> ,ÀI2Ãw\@ vc¸†tÌ. Ù/ÈH/:uWØI žÑ4`æ¹µ¾0Je¥3BÇÎ0 Ÿ…Ó¶£< ®ˆFЯ+‰C 3 Ö __SIM6502__tgi/tgi_load.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload./home/hugg/compilers/cc65/asminc/tgi-error.inc +TGI_ERR_OKTGI_ERR_NO_DRIVERTGI_ERR_CANNOT_LOADTGI_ERR_INV_DRIVERTGI_ERR_INV_MODETGI_ERR_INV_ARGTGI_ERR_INV_FUNCTGI_ERR_INV_FONTTGI_ERR_NO_RESTGI_ERR_UNKNOWNTGI_ERR_INSTALLED TGI_ERR_COUNT,/home/hugg/compilers/cc65/asminc/modload.incMOD_CTRLREAD +CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_READ MLOAD_ERR_HDR MLOAD_ERR_OS MLOAD_ERR_FMT MLOAD_ERR_MEM*/home/hugg/compilers/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCLpushaxpusha0incsp2_open_read_closectrl@L0@L1@L3@L2@L5@L4CODERODATABSSDATAZEROPAGENULLUzna` i€š5I~6·…<€=@ŒÛµäfaX¦íŒ\©RœfaXÑN³A7©  … ‚¹L +ƒL0qq¾x +ƒxì3 +‚3í. +‚.p¢¢I€M¼¼©mmÐ$$©… ‚¹: +ƒ:0rr¾ +ƒìc +‚cíQ +‚Qp™™I€50¥» ‚»`˜©ŒŒ+ ‚+`À© ‚`X´µ [ ? 1 ¶·¸¤=»+C3.BcQ¸kƒA¸Oƒ¸Nƒ1¸Mƒ?Lx¸Lƒ[:Å< šœ°yâé\Û/ - Ä? ¤-Ô×h0M]¨H‚?›—B Þ)>ÏÍ´F P= WÚê9H 7 Ò8uL(©· E’ ÉE D åßA }b²; §8 4;¿G ƒJàÊŠäÅ6 ^˜9 : ¦g±ãn+I¢³4Æx™Üzo=á¡5Fi‡{~f7ç5Ö„KË@*€è‘_2 Õ , 1 ÁV]ÂÝ|> ÀÃw\@ vRK¸†tÌ. Ù/È:WØI žÑ`æ¹µ¾J e`¥ÇÎ0 Ÿ…Ó¶£Q<®ˆÐX¯‰C 3 ¹ __SIM6502__tgi/tgi_outcode.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespaceL2L1L4L3L7L5L6CODERODATABSSDATAZEROPAGENULLUzna` iˆhðo}€† +‰ @ŒÛµäfaX†íŒ\©RœfaXÓ¬faXÑ,Ç‘z¬ +‚ Ð,…w ‚w†+ ‚+HÞŠrH› ä +‚ä ® +‚ ®h«ªh¿  +‚¬À +‚ Àðaa  +‚ Døy‘ +‚‘™1 +‚1Š&y¨ +‚¨™f +‚f`è¨!­„ +‚ „ m +‚ mðËöË¥ ‚H¸¥> ‚>Hÿ¥þ ‚þH𥧠‚§H „v ‚v†¥ ‚¥­´ +‚ ´[iÊãÊ…† ‚†­k +‚ ki9ÿ9…Q ‚Q \± ‚ ð% p +‚pH, L +‚Lh‚¨Õ±Ï ‚Ï…Æ ‚Æ©…4 ‚4­Ð +‚ +Юô +‚ +ô  +‚ H +ƒHæõ ‚õÐÙæ ‚ÐWÕWhê… ‚h¤…ç ‚çh–…d ‚dh)…û ‚û`¦ÈÉÊË̾’¼lp¸º:V²%w+°%Æ4«L‚Ûg]eäbK®>ZÐô=½„m´k<™À;8Å‘1¨f¸Žƒ‘Ý…< šœ°ymâé\ Û/ ˆ|- ƒŠÄ? U¤-Ô×hC‚¨lH‚G ?3›—"oB Þ)(>“;yÏÍ´F fP= 4WÚêH 7 Ò8u)}(1©p'· ’gÉE D å„ßA }bk²; §398 Ž1A¿G :ƒe JàÊnŠ$äÅ6 ^!˜9 : ¦ g±ãnq+I¢d8³4Æx™xÜzo= á¡i‡{~%f7ç5Ö„KË‹_‘[@***€è(‘_2 Õ, a1 Á>V]ÂÝ|> ,2À2Ã<ww\@ vcK¸†tvzÌ. ÙÈuWØI žÑ`#æ¹µ¾J'eŒB¥‰ÇÎ0 Ÿ…Z=Ó¶{£”<®ˆÐYX¯+‰C 3 Í __SIM6502__tgi/tgi_outtext.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload3/home/hugg/compilers/cc65/asminc/tgi-vectorfont.incTGI_VF_VERSIONTGI_VF_FIRSTCHARTGI_VF_LASTCHAR TGI_VF_CCOUNT +TGI_VF_HDRMAGICSIZETGI_VECTORFONTTOPBOTTOMHEIGHTWIDTHSCHARSOPS_tgi_vectorchar-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace_toasciipopaxnegaxtextfontwidths +VectorFont +MoveCursor@L1Done EndOfTextCODERODATABSSDATAZEROPAGENULLUzna` ixÛS, ‹ŽÃQï@ A @ŒÛµäfaXšíŒ\©RŸž!H+ ±$ ‚$7 +‚7È@±o ‚oœ +‚œÈ±• ‚•ƒ +‚ƒÈ±Q ‚Q +‚h ” +‚”L +‚Ÿ ¡¢£$o•Qœb”Ž|9Y7œ8ƒ¸ƒ!^®< šœ°yâéÛ/ - Ä? ¤ Ô×h¨‚›—"B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒàÊŠ$äÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡ +i‡{~%fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ` æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¤ __SIM6502__tgi/tgi_outtextxy.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadaddysp1spCODERODATABSSDATAZEROPAGENULLUzna` ix†þ !$‘µð¥ #¦ @ŒÛµäíŒ\•íŒ\©RJŸ  …) ‚)†{ ‚{ J +‚J…0 ‚0†& ‚&` ¡¢£¤ž^){^0&œJ¸lƒ A¤< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡ +i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¥ __SIM6502__tgi/tgi_popxy.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadpopaxptr1ptr2CODERODATABSSDATAZEROPAGENULLUzna` ix†þ !$‘µñ¦ #§ @ŒÛµäfaX—íŒ\©RJŸ  …) ‚)†{ ‚{ I +‚I…0 ‚0†& ‚&` ¡¢£¤ž]){]0&œI¸mƒ @¤< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡ +i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¥ __SIM6502__tgi/tgi_popxy2.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadpopaxptr3ptr4CODERODATABSSDATAZEROPAGENULLUzna` ixbÚ ã ïòxjéS ñT @ŒÛµäfaX÷íŒ\©R&œ( +‚(Žv +‚v`FžŸ ¡Jœ(v¸‘ƒ=Ÿ< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¢ __SIM6502__tgi/tgi_setaspectratio.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` ixuí ‚˜ç € @ŒÛµäfaXÈíŒ\©R9 +Í= +‚=°WW( +‚(Lx +‚xLF +‚FžŸ ¡¢hOFY,xF–=:(¸’ƒ[¡< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡ +i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 £ __SIM6502__tgi/tgi_setcolor.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload@L1CODERODATABSSDATAZEROPAGENULLUzna` ixkã÷ }ƒêm n @ŒÛµäfaX‡íŒ\©R/ Í= +‚=°VVL' +‚'Lw +‚wžŸ ¡¢hNwX”'G}=¸“ƒ Z < šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡ +i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 £ __SIM6502__tgi/tgi_setdrawpage.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload@L1CODERODATABSSDATAZEROPAGENULLUzna` ixgßî úý}zêd üe @ŒÛµäfaXÇíŒ\©R+…H ‚H†/ ‚/L% +‚%žŸ ¡¢œ?H/Z[%¸”ƒ( < šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 £ __SIM6502__tgi/tgi_setpalette.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadptr1CODERODATABSSDATAZEROPAGENULLUzna` ixfÞ ë ÷ú}wç^ ù_ @ŒÛµäfaXäíŒ\©R*  = +‚=°VVL' +‚'`wžŸ ¡¢fI=] '¸•ƒ Z < šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒ àÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡ +i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 £ __SIM6502__tgi/tgi_setpixel.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload@L9CODERODATABSSDATAZEROPAGENULLUzna` ixRÊÑ ÝàsSå8 ß9 @ŒÛµäfaX«íŒ\©Rœ. +‚.`%žŸ ¡<[.¸–ƒuž< šœ°yâéÛ/ - Ä? ¤Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒàÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzoá¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 ¢ __SIM6502__tgi/tgi_settextdir.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` i‡súYSru¤· ÐtÑ@ŒÛµäfaXfaXÑíŒ\©R¯faXË7ÆD3½ +‚½ ¬ +‚¬ +‚ ¼ +‚¼¬q +‚q„´ ‚ +´  g +ƒ g Š +‚Š¬K +‚K„‘ ‚ +‘ > Q +ƒ8Q,Œ +‚Œ0   +pp让E ™ +ƒ8™„Î ‚ Î — +‚—¤ ‚ ™” +‚”ÈÊH Š]™­ +‚­È€ho`1ÇÈÉÊË ®‹Š¼­‹¬¬/—[%ŒYMqX?KN„”­LˆK½ wÎn´‘¸¨ƒ ȸ§ƒ 8šÛÌh\àÜj åUÄG ›€„±Æ˦µC e0èÃzG¾~3 "Š(Á°; H ² A  ]f·®Þ4šÙ _CŸ+x8‡K`)|I LtB 1 ©…6߈ÀÍEǸ¶×6 —o‰- Ò´b’D 9 \æv / i1ᯨ:  eJ.ƒ. ¹Öã ¡Âgž‘Id¥8 u}³¿{Û5 +F¢nÐÊ7Å? _Úf[*N*ÏœF a> , 2 < ÑE ™cKÔΣ/Ó¤h@ †Éy WÕ˜50 PÝâ`éä§Z= 7 Øw‚êJYçÈÌ __SIM6502__tgi/tgi_settextstyle.s +ca65 V2.15-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload umul8x16r24popapopax(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510process_onedimstore@L2@L1CODERODATABSSDATAZEROPAGENULLUzna` ixkã÷ }ƒêm n @ŒÛµäfaXˆíŒ\©R/ ÍW +‚W°))Lw +‚wLF +‚FžŸ ¡¢hOFW‡wG}W¸™ƒ  < šœ°yâéÛ/ - Ä? ¤ Ô×h¨‚›—B Þ)ÏÍ´F P= ÚêH 7 Òu(©· ’ÉE D åßA }²; §8 ¿G ƒàÊŠäÅ6 ˜9 : ¦g±ãn+¢³4Æx™Üzo á¡i‡{~fç5Ö„KË*€è‘_2 Õ, 1 Á]ÂÝ|> ÀÃw\@ v¸†tÌ. ÙÈWØI žÑ`æ¹µ¾Je¥ÇÎ0 Ÿ…Ó¶£®ˆÐ¯‰C 3 £ __SIM6502__tgi/tgi_setviewpage.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload@L1CODERODATABSSDATAZEROPAGENULLUzna` iˆÄL"n z}1®¦ T|U@ŒÛµäfaXÕíŒ\©RœfaXà©faX´ˆ¹­ +‚ W +‚Wð99­ +‚H#­> +‚>HI ¯ +‚¯h§ª’hL\ +‚\©¦T +‚T`º»¼½¾±³\š¯6.T5—W>¸›ƒjÄ< šœ°yâéÛ/ - Ä? ¤Ô×hK¨‚›—"B Þ)(ÏÍ´F P= Úê2H 7 +<ÒuJ)&(©'· ’ÉE -D åGßA }²; §8 /¿G ƒàÊŠäÅ6 .!˜9 : ¦g±ãn+¢³4Æx™0Üzo á¡i‡{~fç5Ö„KË**€è1‘_2 Õ, 1 Á,]ÂÝ|> ÀI2Ãw\@ v¸†tÌ. ÙÈH/WØI žÑ4` æ¹µ¾0Je¥3BÇÎ0 Ÿ…Ó¶£®ˆFЯ‰C 3 ¿ __SIM6502__tgi/tgi_unload.s +ca65 V2.15//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload./home/hugg/compilers/cc65/asminc/tgi-error.inc +TGI_ERR_OKTGI_ERR_NO_DRIVERTGI_ERR_CANNOT_LOADTGI_ERR_INV_DRIVERTGI_ERR_INV_MODETGI_ERR_INV_ARGTGI_ERR_INV_FUNCTGI_ERR_INV_FONTTGI_ERR_NO_RESTGI_ERR_UNKNOWNTGI_ERR_INSTALLED TGI_ERR_COUNT,/home/hugg/compilers/cc65/asminc/modload.incMOD_CTRLREAD +CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_READ MLOAD_ERR_HDR MLOAD_ERR_OS MLOAD_ERR_FMT MLOAD_ERR_MEM no_driverCODERODATABSSDATAZEROPAGENULLUzna` i'‘Vçûþ”’ +Ÿý @ŒÛµäfaX„/íŒ\©R faXÓ°faXÑÀfaXȳÐÕ¨ ‰±Á ‚Áæ1 ‚1о¾æ« ‚« +"fv ‚v¢ÙÉ€qjx©©ÊV`ô­‘ +‚‘®Z +‚Z…ç ‚ç†R ‚R  +ƒLu +‚u y$ +‚ $HˆŠ¸y +‚ ªÊhi`æIÿõ8íyá +‚ áH Š9Iÿîyœ +‚ œªhQ`ö +¨·¥£ ‚£H¹¥¥ ‚¥H6¥Ÿ ‚ŸHL­I +‚IwiŸ"Ÿ…ƒ ‚ƒ­0 +‚0iÐÐ…_ ‚_ȱ ‚ªðˆº±t ‚t…€ ‚€†¦ ‚¦­Û +‚Û®Ë +‚Ë Ï +ƒÏ¬b +‚bЇ‡ ˜ û +ƒ&û@ +ƒ@Ž7 +ƒ7  +ƒ ø • +ƒ2• +ƒŽ– +ƒ–L* +ƒª* y ´ +ƒ2´ì +ƒìŽ +ƒ ‰ +ƒ‰ ß + +ƒ2+c +ƒcŽ[ +ƒ[$ ‚éé ª¹ +ƒ™¤ +‚¤ˆÃ÷à ) +‚)  +¹ +ƒ™Â +ƒÂˆ§n÷n$; ‚;P¼œ¼h’…m ‚mhA…Ø ‚ØhG…É ‚É`×ÑÒ  € ã ÓÔÕ +¼Òez´,çRkjuh©)Pù¤C®‘ZBhÛËAÕI0@­b<àáœ$¸¯ƒB“§¯< à‰šœ°yâé‘\ Û/ |- úŠÄ? Úæ¤PÔ×êh¢C0¦]¨‚GŒâó 3›—ž)B Þ)(“Ö;ys™ÏÍ´F Õ P= 4Úê¢CšH 7 •Òu)}L(1©6'· Eõ’§É E D ÎôåßA }b²; §Ÿ•€398 ¦T1›4ç¿G :ƒe§àùÊŠäÅ6 ^î˜9 : ¦ ‡g±ãn+ßá¢Ó8³4Æx™œxÜzoᨆ¡5 +i‡{~fç5Ö„èKË‹_‘¥*š**€è(“Š‘_2 Õ, £a­1 Á>®Ÿ]ÂÝ|> ¤¡2À¬2Ã<òww\@ vcK¸û†tévz̤. ÙÈ:u~WÞØÔI žÑ`#æ¹µ¾ÏJ'eý`…¥£DžÇÎ0 Ÿ…Z=Ó¶{’£”<®ˆˆ’”Я†+‰C 3 Ö __SIM6502__tgi/tgi_vectorchar.s +ca65 V2.15 imul16x16r32 umul16x16r32negaxnegeax//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTIRQTGI_API_VERSIONTGI_BM_FONT_FINESCALETGI_FONT_BITMAPTGI_FONT_VECTORTGI_TEXT_HORIZONTALTGI_TEXT_VERTICAL TGI_CLIP_NONE TGI_CLIP_LEFTTGI_CLIP_RIGHTTGI_CLIP_BOTTOM TGI_CLIP_TOPtgi_color_blacktgi_color_white_tgi_drv +_tgi_error +_tgi_gmode _tgi_curx _tgi_cury +_tgi_color _tgi_font _tgi_textdir_tgi_vectorfont_tgi_textscalew_tgi_textscaleh_tgi_charwidth_tgi_charheight _tgi_xres _tgi_yres _tgi_xmax _tgi_ymax_tgi_colorcount_tgi_pagecount_tgi_fontwidth_tgi_fontheight_tgi_aspectratio +_tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_uninstalltgi_inittgi_done tgi_geterror tgi_control tgi_cleartgi_setviewpagetgi_setdrawpage tgi_setcolortgi_setpalettetgi_getpalettetgi_getdefpalette tgi_setpixel tgi_getpixeltgi_linetgi_bar tgi_textstyle tgi_outtext tgi_clear_ptrtgi_clippedline tgi_curtoxy +tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_popxy +tgi_popxy2 tgi_set_ptr_tgi_arc_tgi_bar _tgi_circle +_tgi_clear _tgi_done _tgi_ellipse_tgi_getaspectratio _tgi_getcolor_tgi_getcolorcount_tgi_getdefpalette _tgi_geterror_tgi_geterrormsg_tgi_getmaxcolor _tgi_getmaxx _tgi_getmaxy_tgi_getpagecount_tgi_getpalette _tgi_getpixel_tgi_gettextheight_tgi_gettextwidth _tgi_getxres _tgi_getyres _tgi_gotoxy_tgi_imulround _tgi_init _tgi_install_tgi_install_vectorfont +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload3/home/hugg/compilers/cc65/asminc/tgi-vectorfont.incTGI_VF_VERSIONTGI_VF_FIRSTCHARTGI_VF_LASTCHAR TGI_VF_CCOUNT +TGI_VF_HDRMAGICSIZETGI_VECTORFONTTOPBOTTOMHEIGHTWIDTHSCHARSOPS_tgi_vectorchar-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace//home/hugg/compilers/cc65/asminc/longbranch.macOpsFlagX1Y1X2Y2GetOpGetProcessedYCoordGetProcessedCoord AddBaseCoord SubBaseCoordLoop @Vertical @DrawMove@MoveCODERODATABSSDATAZEROPAGENULLUzna` ixA¹)â îñ-lŠð‹@ŒÛµäíŒ\× faX€  +'2/HŠH # +‚#… ‚h… ‚h8…2 ‚2 ‚ð + +  ¥6 ‚6‘) ‚)ˆ ¥& ‚&‘; ‚;ˆ,Š‘ ‚ˆ0¥ ‚‘ ‚¤ ‚©   +‚¥ ‚` ()*+, %  6& 2);#¸ƒ2<-0")>& 9861.! +=5 +"@ *(,/  'B+- __SIM6502__ common/time.s +ca65 V2.15_time __systimeptr1sregtmp1*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX@L1.size@L2CODERODATABSSDATAZEROPAGENULLUzna` iqôe,‘/ÀÃÈ hÂi@ŒÛµäíŒ\Æ ½OJ¢ …( ‚(† ‚  +‚  +ƒ¥ ‚¦. ‚.`)©…/ ‚/ ¦# ‚#ð' ‚'& ‚*&&3 ‚3HÅ ‚¥, ‚,å ‚… ‚hå! ‚!Hæ$ ‚$h +ˆ-Ðä…2 ‚2`0 ‚0& ‚*"°Å ‚å+ ‚+æ ‚ ˆ%Ðî… ‚`1 + (#!+  /3,2 .'$0 ¸ƒ¸ƒ ¸ƒ4-P0G")& 9CLO6E314; J$.I= 5F%7N*(RK/:#DQ<+ __SIM6502__runtime/udiv.s +ca65 V2.15 tosudiva0 tosudivaxudiv16popsregsregptr1ptr4.size +udiv16by8aL0L1@L0@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` ix`Ø&þÉç òó@ŒÛµäíŒ\õfaXÑ)1/… ‚†% ‚%©"… ‚   ‚&& ‚&&! ‚!& ‚*&# ‚#HÅ ‚¥$ ‚$å ‚…' ‚'hå ‚Hæ ‚ hˆÐ à … ‚¥ ‚¦ ‚ ` % ! +&   +#$'¸ƒ¸ƒ(-")& 86314 .! 5%7(,2/ #'+ __SIM6502__runtime/udiv32by16r16.s +ca65 V2.15 udiv32by16r16udiv32by16r16m-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeL0L1CODERODATABSSDATAZEROPAGENULLUzna` iq9<Lˆ~;@ŒÛµäíŒ\—Y ¢… ‚† ‚   +‚   +‚¥ ‚¦ ‚`      + + ¸ƒ ¸ƒ     __SIM6502__runtime/umod.s +ca65 V2.15 tosumoda0 tosumodaxpopsregudiv16ptr1ptr4.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixG¿Þ9Éã% @ŒÛµäíŒ\þ faXÑ,*… ‚†% ‚%©#… ‚ F$ ‚$f ‚ 'e ‚H¥ ‚e! ‚!… ‚hf ‚ jf ‚f ‚ ˆÐ é …" ‚"¥ ‚¦& ‚&` % $ & + +! "¸ƒ¸ƒ¸ƒ¸ƒ(-0?") 86314; $.! =5%7(,/:#'<+! __SIM6502__runtime/umul16x16r32.s +ca65 V2.15 umul16x16r32 umul16x16r32m umul16x16r16 umul16x16r16m-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` ixE½Ü9Óë   @ŒÛµäíŒ\Ð faXÑ.,… ‚† ‚¢† ‚†% ‚% ¦ ‚¥& ‚&j)HŠe ‚…" ‚"¥ ‚e ‚… ‚hf ‚f ‚ jˆ Ð è … ‚¦( ‚(`  &" ( + +%¸ƒ#¸ƒ ¸ƒ'¸ƒ$*-0?")& 98631; .! =5%7(,2/ #'<+! __SIM6502__runtime/umul8x16r24.s +ca65 V2.15 umul8x16r24 umul8x16r24m umul8x16r16 umul8x16r16m-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` ixÂ:M‡™œ€Úö›÷@ŒÛµäíŒ\¡faX¼t~i  + +‚ +…" ‚"Iÿ6 +ƒ Š#…- ‚-Iÿ0 +ƒ0  +‚…< ‚<†$ ‚$ + +‚+… ‚† ‚ „C ‚C± ‚/e/ ‚/‘ ‚È ±) ‚)e& ‚&‘: ‚:î +ƒð¤F ‚F±9 ‚9ÈAÐ!!æ ‚„5 ‚5  +‚LI +ƒ2IîD +ƒDÐ4ê4`… ‚†( ‚(©=; +ƒ;8 +ƒ8 E± ‚ªˆ>± ‚   +‚ ,© Hƒ ‘ ‚ÈB© Iƒ‘1 ‚1¥ ‚¦G ‚G 3 +‚3­ +ƒ® +ƒ`72 +ƒ@?  .CF5 .): ."-/& +.<$9(G . 13* ++*¸ƒN'J\ˆ|ŠUP0‡HG?o> –W9C•}O6pE€3T14;JqI=†5 +F7‹‘[V2—wRKv:u~S‰DZ{QX __SIM6502__conio/vcprintf.s +ca65 V2.15 _vcprintfpushaxpopax__printf_cputcspptr1ptr2ptr3tmp1,/home/hugg/compilers/cc65/asminc/generic.macoutdesc.sizeout@L1@L4@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` i†Zà( KbßAB@ŒÛµäfaXÖfaXÑfaXæíŒ\ì23+H  ±' ‚' +ƒ©8 Hƒ8‘ ‚ȱ$ ‚$ +ƒ © Iƒ‘ ‚ h ( +‚(… ‚† ‚­ +ƒ® +ƒ - +‚-¨ðAA©ÿ@ª=`&¥% ‚%¦7 ‚7`+34 +‚6 +‚356,( '$ -6¸ƒ1"B U('PMH7G? W CC2<AOE5bTA;  I0+F_[@N aV*8:96 `B3,)BZ. +YX7 __SIM6502__common/vfscanf.s +ca65 V2.15_vfscanf_fgetc_ungetc_ferror-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespacecommon/_scanf.inc SCANFDATAGET.sizeUNGETDATA__scanf*/home/hugg/compilers/cc65/asminc/stdio.inc_IOFBF_IOLBF_IONBFBUFSIZEOF FILENAME_MAXL_tmpnamSEEK_CURSEEK_ENDSEEK_SETTMP_MAX FOPEN_MAX_stdin_stdout_stderrcountdL1CODERODATABSSZEROPAGENULLUzna` iqŠû-0V†rø/ù@ŒÛµäíŒ\­S +¢ + Q ‚… ‚ ÈŠQ ‚ª¥ ‚L +‚       ¸ƒ ¸ƒ     __SIM6502__ runtime/xor.s +ca65 V2.15tosxora0tosxoraxaddysp1sptmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` kziã)  —²ËÌ@‘ø¯äü‹\faXȦ,  +‚­ +‚® +‚  +‚© Hƒ¢ Iƒ  +‚    +‚    +‚   +‚¢©  +‚ L +‚’A +S +S +E +R +T +I +O +N +  +F +A +I +L +E +D +  I N   % s ( % u )  +     ¸ƒ, -0")&14$. 5 +%*(,2/#'+! __SIM6502__../libwrk/sim6502/_afailed.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stderr_fprintf_exit __afailedL0004.sizepushaxpushwyspincsp4CODERODATABSSDATAZEROPAGENULLUzna` iqA²³ ¿Â×Y0Á1@‘ø¯äfaX€ +   + ¸ƒ  __SIM6502__conio/_cursor.s +ca65 V2.15cursor.sizeCODERODATABSSDATAZEROPAGENULLUzna` iaà í øûû[VúW@‘ø¯äfaXÌfaX€ faXË*3 +  +‚ +‚ ©ÿ.ª(`"45678+ ¸ ƒ +3  +"   9 __SIM6502__common/_directerrno.s +ca65 V2.15*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å9þ89„½¾@‘ø¯äfaXæ +    + ±‚¸ƒ¸ƒ¸ƒ  __SIM6502__common/_environ.s +ca65 V2.15 __environ +__envcount __envsizeinitenvenv_init.sizeCODERODATABSSDATAZEROPAGENULLUzna` i†jð1! -0Eu§/@‘ø¯äfaX‰ faX€ &faXÜ1faXÔ/E{f +ƒŽa +ƒa ±k ‚k…` ‚`ˆ4± ‚…b ‚b¢g±J ‚JÉwÐGG¢s2sÐRRÉr Ð22¢]]ÐÉa+ÐSS¢)R)ÈBð± ‚ð__É+-ÐppŠ= ªÐEïEÉb,ðjëj©  +‚ª9L0 +‚0 !Š +‘o ‚o˜WÈl‘* ‚*  O +‚OàÿnÐDDÉÿÐL3 +‚3¬( +ƒ(„V ‚V¬: +ƒ:„. ‚. ‘$ ‚$ ©55‘ ‚¥1 ‚1¦ ‚`"F +G ;HIJF +/ +`bJV.$1 /ko*30>O¸ƒ{C<th\jU -P0]HG ?")o>f98Opg b3T1A;e Jn.^!i  +Idx= +F"7[@ *( rV,2cRz/ : #' BSZQ<+K __SIM6502__common/_fopen.s +ca65 V2.15__fopen_openpushaxincsp4return0spptr1*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX*/home/hugg/compilers/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCL*/home/hugg/compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags +f_pushback_FCLOSED_FOPEN_FEOF_FERROR +_FPUSHBACK __filetabfile@L1@L3@L2invmodemodeok@L4openokCODERODATABSSDATAZEROPAGENULLUzna` ixÍEdY½À¿6µ¿¶@‘ø¯äfaX¯ faXð* + +‚‚ +‚‚ +‚‚h8¥ ‚é! H‚! +ƒ¥ ‚é I‚$ +ƒ$` !  ¸ƒ%¸ƒ¸ƒ $¸ƒ ¸ƒ¹ƒ &"& !#$!"%*(  #' __SIM6502__common/_heap.s +ca65 V2.15initheap __BSS_RUN__ __BSS_SIZE__ __STACKSIZE__sp*/home/hugg/compilers/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplastCODERODATABSSDATAZEROPAGENULLONCEUzna` iâa€ Œ¿NT¢Ž£@‘ø¯äfaXâ + faXðfaX¼«!… ‚†$ ‚$  +‚… ‚† ‚¥ ‚¦ ‚Ð  É°`# %‘ ‚ÈŠ‘ ‚L +‚  $¸ƒ& -"!#34 $.!  +"%,/ #'+ __SIM6502__common/_heapadd.s +ca65 V2.15ptr1ptr2popaxheapadd __heapadd*/home/hugg/compilers/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast,/home/hugg/compilers/cc65/asminc/generic.mac@L1CODERODATABSSDATAZEROPAGENULLUzna` i†/µÌ ØÛxS\¯Ú°@‘ø¯äfaX…faXðfaX¼faXËø*,*…8 ‚8Ê +†' ‚' þ±G ‚G…> ‚>È$± ‚…? ‚? D±0 ‚0ªˆ±# ‚#Ê= e . ‚ .HIŠ(e ‚ªh-8å% ‚%HFŠåH ‚Hªh*`"+,-./>?0# 8'GH¸ƒ)K -?")> !CE# A;J.!= +F"@*(,K : #'BD<0 __SIM6502__common/_heapblocksize.s +ca65 V2.15ptr1ptr2__heapblocksize*/home/hugg/compilers/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast,/home/hugg/compilers/cc65/asminc/generic.mac(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510CODERODATABSSDATAZEROPAGENULLUzna` iëj2œ ¨«Aì`LªM@‘ø¯äfaXê faXðfaX¼´SI­< +‚<8í% +‚%…8 ‚8­2 +‚2í +‚ …& ‚&­$ +‚$… ‚ ­9 +‚9…" ‚". ‚.ð% ¥# ‚#85ñ5 ‚5È +¥ ‚ñ1 ‚1°  +± ‚… ‚È7± ‚ …? ‚?È,± ‚ª=ȱ> ‚>† ‚L( +ƒ(¥! ‚!83é3%¦ ‚°  Ð--Š`Ê` !*$9<26 '8&#?!' + ".51 >¸ƒ@U -P0M")!9C8LOE#3T1A;J$.! +F"7@N(2K/ :#BD<" __SIM6502__common/_heapmaxavail.s +ca65 V2.15ptr1ptr2__heapmaxavail*/home/hugg/compilers/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast,/home/hugg/compilers/cc65/asminc/generic.mac@L1@L3@L2@L5@L4CODERODATABSSDATAZEROPAGENULLUzna` i×V4Š –™AÚT.˜/@‘ø¯äfaX¦ faXðfaX¼ NE©;… ‚…7 ‚7­ +‚…= ‚=­6 +‚6… ‚ ( ‚(ð -±? ‚?0 e0+ ‚0+… ‚ȱ3 ‚3e ‚ … ‚È#± ‚ª)ȱ ‚†5 ‚5L +ƒ¥ ‚* m*+ +‚*+… ‚¥< ‚<m +‚ª>¥% ‚%8 í ! +‚ !… + ‚ +Š"í +‚ª1¥ ‚`,'6*4 $ 70 <% +$= (?35¸ƒ@ -0HG?&!9C8L6#1A;J.!I5 +F"%7@N*,K/ : BD+ __SIM6502__common/_heapmemavail.s +ca65 V2.15ptr1ptr2__heapmemavail*/home/hugg/compilers/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast,/home/hugg/compilers/cc65/asminc/generic.mac@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz o†ãij@‘ø¯äü‹\âfaXÈV0123 +4 56789AB CDEF ¸ƒ  "!  +  __SIM6502__../libwrk/sim6502/_hextab.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac__hextab.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzyóô $'ë@‘ø¯äü‹\ñfaXÈB  -2147483648¸ƒ   + __SIM6502__../libwrk/sim6502/_longminstr.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac __longminstr.sizeCODERODATABSSDATAZEROPAGENULLUzna` i†| #7‹Â"Ã@‘ø¯äfaX»faX€ faX¼ faXËE5  +‚ªð3 3  +‚ - +‚-©ÿª,`6789:-0¸ +ƒ7  ! +5"   ; __SIM6502__common/_mappederrno.s +ca65 V2.15*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX,/home/hugg/compilers/cc65/asminc/generic.mac(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeokCODERODATABSSDATAZEROPAGENULLUzna` iqA²³ ¿ÂÜ^:Á;@‘ø¯äfaXØ +   + ¸ƒ   __SIM6502__common/_oserror.s +ca65 V2.15 __oserror.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz®(<d psçZ>˜r™@‘ø¯äü‹\ã faXÈOQ9 ' +‚'­ +‚  +‚  +‚ (±! ‚!ˆ ‚ ð--­" +‚"® +‚  +‚©% Hƒ%¢ Iƒ  +‚  #  +‚    +‚  L +ƒK­ +‚ ® +‚ & +‚&© Hƒ¢, Iƒ,  +‚   +‚   +‚L) +‚). %s: %s +!"#$ )  '&  +" ! ¸ƒQ*$. -0?)>&986E31A4;$.= 5 +%7@*(,2/:#'BD<+% __SIM6502__../libwrk/sim6502/_poserror.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stderr_fprintf +__poserror __stroserror __oserrorL0008.sizeL000FpushaxL0004pushwyspL0012incsp4CODERODATABSSDATAZEROPAGENULLUzna` i€b⤷º, æ"δ&¹µ&@‘ø¯äfaXÔ¨faXÑ faX¼Îi¥Ö °±Á ‚ Áæº ‚ ºÐééæã ‚ ã`#­Ã +ƒ Ãv +ƒv Œ +ƒ¬Œ©Ö HƒÖ¢× Iƒ× ” +‚ ” U +‚ULJ +ƒJ¥˜ ‚ ˜8žéžõ…C ‚ C°>>Æ€ ‚ €`ã­( +ƒ(ÐÕÕ û +ƒJûL¼ +‚¼­â +ƒâÐÊÊ ¶ +ƒJ¶L +‚  ¸ +ƒJ¸…ú ‚ú†‰ ‚‰ = +ƒ!=  ±é ‚ éªPˆ‘±þ ‚ þ`Ò „Z ‚Z„€ ‚€±Í ‚ Í8é0õ‚,‚É +•°+(+  +ƒH<¥ ‚¦½ ‚½ ‚&° ‚°´ ‚´&¡ ‚¡eÌ ‚Ì…K ‚KŠÙe´ ‚´…à ‚àV ‚V&Ó ‚Óh{ec ‚c…æ ‚æÛÑÛæy ‚y°xÍx¥M ‚M¦Ú ‚Ú`¦¬Ë +ƒËîà +ƒà™œ +ƒœ` ©‹ Hƒ‹¢z IƒzªGmªµ +ƒªµÐÐèlLÕ +‚ Õ¥‡ ‚ ‡¦£ ‚ £L­ +‚ ­ ½ +ƒ ½î­ +ƒ ­Ð›ø›î +ƒ Ðôóô`j  +ƒ¬­¼ +ƒ'¼® +ƒ' ˆ +‚ ˆ­› +ƒ)›®b +ƒ)b Y +‚ YL¥ +ƒ¥„ ‚ © +‚© – +ƒž–¥ƒ ‚ƒL +‚„ ‚ Ò +‚Ò ® +ƒž®¥þ ‚þL3 +‚3H® ¹¨ +‚ ¨™t +ƒtˆwå÷åh²…« ‚ «†) ‚ ) ª +‚ +ª…« ‚ «†í ‚ í · +‚ +·…è ‚ è†ù ‚ ù©¶¨E‘ ‚ ÈT‘Ô ‚ ÔÈÂ±á ‚ á¼ +ƒ¼È—± ‚ æ +ƒæ¥ ‚ …à ‚Ã¥» ‚ »…g ‚g u±Í ‚ Íðá áÉ%Žð::È¢ÐØõØæö ‚ öÐÇñǘ’¨Ge¨µ ‚ ¨µ…ÿ ‚ ÿÔÔæi ‚ i8ÄåÄõ ‚Äõ…ß ‚ ß¥ó ‚ óåØ ‚Ø…p ‚ pº ‚ ºðä%ä Î +‚ΠХ ‚ ‘– ‚–ˆâ¥‰ ‚ ‰‘¸ ‚¸ˆI¥" ‚"‘ + ‚ +ˆ¬¥‚ ‚‚‘º ‚ºˆ±¥Ü ‚ Ü‘/ ‚/ˆ¿¥ê ‚ ê‘• ‚• ‡ +ƒ‡ ß +ƒßª}С ¡¢Ç½ +ƒ •§ ‚ §Ê»´ø´`¾É%ßШ ¨±£ ‚ £É%™Ðƒ ƒ š +ƒš ð +ƒðLæ +ƒ&æ©¢É É› +ƒ›Ê¯×ú×±Ó ‚ ÓÉ-çÐSSŽž +ƒžðÆÆÉ+†ÐÊÊŽÂ +ƒÂð““É ÈÐÂÂŽ +ƒ ðµµÉ#Ñй ¹Žÿ +ƒ +ÿ ” +ƒ”LÞ +ƒ«Þ¢ ÌÉ0ôЮ®ªñ ð +ƒð±† ‚ †Žš +ƒ šÉ*2ÐÅ Å Ž +ƒŽ ² +ƒJ²L’ +ƒô’ Š +ƒVŠA +ƒ AŽ² +ƒ ²ŒÏ +ƒÏŒ +ƒ±Û ‚ ÛÉ.êЈˆ ¥ +ƒ¥±§ ‚ §É*ÔÐÞ Þ × +ƒ×  +ƒJLœ +ƒœ ’ +ƒV’ñ +ƒñŽ± +ƒ±±ž ‚ žÉz…ðÝÝÉhœðÉtÁð00ÉjÌð——ÉLRð­­ÉlÀЀ €©ÿÉX +ƒX ‰ +ƒ‰L7 +ƒ!7ŒÅ +ƒÅ¢ HƒŽÄ +ƒ'Ä¢ï IƒïŽ‚ +ƒ'‚ n +ƒnÉc~Ð ¿ +ƒJ¿™ +ƒ™©kü +ƒüL¿ +ƒE¿ÉdŠð%%ÉiÒз-·¢À­ì +ƒ ìð  ¢ Ë­Ÿ +ƒŸð99¢+ïŽý +ƒý … +ƒ8…¤„ ‚„0¢ ¢¬m +ƒmðŒq +ƒqîó +ƒó  +³ B +ƒÙBL… +ƒE…ÉnDЄ„ ä +ƒJä… ‚†˜ ‚˜ è±™ ‚ ™‘f ‚fÈä±· ‚ ·‘' ‚'Là +ƒ&ÃÉoŽÐª'ª Í +ƒ8ͬƒ +ƒ +ƒð˜˜Hù† ‚  ‚ 5 ‚5Ï ‚Ï ø +ƒø \ +ƒ\ðÚÚ©0  +ƒ”h– È © +ƒÙ©La +ƒEaÉp&ÐŒ Œ¢ŸŽ8 +ƒ8èNŽ +ƒ +©x¥Ðs'sÉs¹ÐÖ Ö  +ƒJÎ +ƒ'ÎŽç +ƒ'çL +ƒEÉu”ÐÁ Á á +ƒ-á  +@ Ó +ƒæÓL` +ƒE`Éx¤ðÜÜÉXìЧ)§Hí­  +ƒ + ðî +î©0Æ © +ƒ”©©XF d +ƒ”d ] +ƒ-] Ë Œ +ƒæŒhüÉxо ¾­- +ƒ'-® +ƒ' ³ +‚³LÝ +ƒEÝLš +ƒ&š­ö +ƒ'ö®Ú +ƒ'Ú ë +‚ë* +ƒ)*ŽÉ +ƒ)É­¸ +ƒ¸  +ƒðÑÑ®ˆ +ƒˆì +ƒ)­• +ƒ•¨úí“ +ƒ)“°  Žø +ƒ)øŒà +ƒ)à8Ù­¢ +ƒ ¢í“ +ƒ)“ª¡­‹ +ƒ ‹íÇ +ƒ)Ç°÷÷©Àª¬Iÿ.µ +ƒ µŠ£Iÿò +ƒ ­å +ƒåÐÏÏ  +ƒ¶ _ +ƒÁ_­H +ƒHðÆÆ ‘ +ƒ¶‘Lo +ƒ&oj[k+ „³,Q¦ç«h¯1ÄL »Å ÛlLõmn—ë—³Þ3Þ!¼! !U!Î!©Ò!”Õ­ˆY!ª·6°Ø±¨§ ò ÝÝ4ûZ€½°´¡ÌK´àVÓcæyMÚ˜f'rú‰„5Ïr–¸ +º/•¸ƒóë^êÆ—ÅàÇ“ÒÜŠÌmá\äĈ|ôÒ論ꃊæÅ© Ë-ƒ‚ЯPÿ¢ùÃÒÔ€¬êÀÞÖ¦ø‡lHò³œG¢Œ…ãÊ?‚ž×)oú׈Ž>“&ÜÖyÈ ØôËÕ–†´¬ þ³Éú³–ï鼘 Ú÷¢9øš™°•8Ûó¿Ú}»òÍÖªÝøOѥؗp°ìÕÆ–EîðÆÅõ‰Õܧž¿ ü°„±‚¼ôÿɯ‘ä”Þ®bkÏŸ•ÃŽüÙí’3éçäàÉÛ릎ºå¸«œçó²;ÃÄĺú  Ú§ñÇJ§ù˜üªn»ð‰€‚êñ£ ºÈ©æ°‡­Œq˜I¨ëߣϥºÓd¯ŠxµüÐåÇ®=¬Ç ¼ù—þ¨¾F¯•»ùÙûâìÝýÍÅ耋´õ‘[„Éß*ãÑ…åÓÁ(“°‡Šª£‹Õ£aÁ²©r†Á´®€¨ºŸˆÑÐÂ뱤Â,¾2—æ¹Ô¡ûƒwŽ¤ÈÆ™¡ŸÀ½cRûé±z¨ÎŒÏ¼È²¾:Ô®Ç盯¼š~ÞÖ©«¦ÔѹΌŸ½»í¡×ÀöʶþÏØ¢ÿ'Ðý›ŒÄ‹…§—½†S‰DøˆÓŽž¸­ƒ¿‘ýZ‰ {ÃÓÄ–ƒ”Qà<» ˜ø’›¹’”YX­Òò‡†+o __SIM6502__common/_printf.s +ca65 V2.15-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace__printfpopaxpushaxpusheaxdecsp6push1axlongaxulong_ltoa_ultoa _strlower_strlen,/home/hugg/compilers/cc65/asminc/generic.macArgListFormatOutDataBaseFSaveFCount GetFormatChar.size IncFormatPtr@L1 OutputPadCharPadCharOutput1CharArg PushOutData CallOutFunc DecArgList2GetUnsignedArgIsLong +GetLongArg GetIntArg GetSignedArgReadInt@Loop@L9PutBufBufIdxBuf +PushBufPtrPadLoop OutputPaddingWidth OutputArgStrArgLenltoaultoaSaveRegSaveMainLoop@L2@L3@L4NotDoneRest +FormatSpec FormatVarSize +FormatVars ReadFlagsLeftJustAddSignAddBlank ReadPaddingAltForm ReadWidthPrecReadModReadPrecDoFormatCheckIntHaveArg +CheckCountLeader@Int1 +CheckOctal CheckPointer@Oct1 CheckStringIsHex CheckUnsignedCheckHex UnknownFormatCODERODATABSSDATAZEROPAGENULLUzna` k{Q.Ì.8111e{E>¹J1ºJ@‘ø¯äü‹\¦ŠfaXÈ_,´¬Š  ç +‚ 祹 ‚)¹¦¾ ‚)¾ # +‚ # t ­ +‚­¸ +ƒ¸Ž– +ƒ– ç Æ +‚Æ° +ƒ°Žâ +ƒâ ˆ ¼ +‚¼¢ +ƒ¢Ž +ƒ©³% +ƒ%Ç +ƒÇz +ƒz +ƒ ˜ +ƒ ˜©˜ Hƒ˜¢Œ IƒŒ Í +‚'ÍÉíð®é®éL® +ƒ×®  +ƒ‡ÂLÑ +ƒËÑ­· +ƒ ·É%¢ðö"ö¢¬ º +‚#ºªÂð,, î +ƒÛîLÙ +ƒËÙ­[ +ƒ[®Ö +ƒÖ Ç +‚ Ç­u +ƒ u 8 +‚8ðºÔºL4 +ƒ×4 ’ +ƒ’É%yð(å(­¢ +ƒ ¢É*: · +‚·” +ƒ”­š +ƒšðçç  +ƒ©ÿ×½ +ƒ½á +ƒá­¢ +ƒ ¢¢Ï æ +‚$æ· +ƒ=·­“ +ƒ=“ðÚ3Ú©áà +ƒàö +ƒö­õ +ƒõ®ö +ƒö – +‚–…ü ‚(ü†¨ ‚(¨­– +ƒ –)k¤eà ‚(æÀ ‚(Àææè‹‘ +ƒ‘ŽH +ƒH ˆ +ƒˆ¢å ‘ +‚$‘ªëÐôÕô­è +ƒè å +ƒåЬ¬©é Ë +‚%ËLó +ƒêó­« +ƒ«®÷ +ƒ÷ Š +‚Šç +ƒçŽœ +ƒœ©ß  +ƒ ­µ +ƒ µÉL*ð©V©Éh²ð¤¤ÉjæðˆIˆÉlÏðÿ+ÿÉt´ð˜F˜Éz ð¸B¸LÁ +ƒbÁ­ÿ +ƒÿ…Ö ‚(Ö­ +ƒ…ã ‚(ã ³±† ‚(†ÉhûÐÍ-ÍŒ +ƒ îá +ƒáÐá%áî¶ +ƒ¶L© +ƒ_©­ù +ƒù…ª ‚(ª­ê +ƒê…? ‚(? ’± ‚(Él¬ÐÛÛîÕ +ƒÕÐîØ +ƒØ©Š¡ +ƒ¡ ˜ +ƒ˜­È +ƒ ÈÉA@ÐùùLù¼ +ƒ»ù¼ÉCµÐ¶¶L¶¼ +ƒ»¶¼ÉEeÐððLð¼ +ƒ»ð¼ÉFÏÐvvLv¼ +ƒ»v¼ÉG±ÐL¼ +ƒ»¼ÉSžÐÞÞLÞ¼ +ƒ»Þ¼ÉX—ðkÉ[¶Ð››L›¼ +ƒ›¼ÉaûÐÙÙLÙ¼ +ƒ»Ù¼ÉcßÐ’’L’¼ +ƒ“’¼Éd1ð³:³Ée–Ð’’L’¼ +ƒ»’¼Éf…ÐXXLX¼ +ƒ»X¼ÉgÝб±L±¼ +ƒ»±¼Éi¯ð¡)¡Én¾Ð˜˜L˜¼ +ƒn˜¼ÉoôðÂ&ÂÉpÙÐL¼ +ƒ@¼És×ð—+—Éuƒð33Éx ðÐÐLÆ +ƒÃÆ© +" Å +ƒ ÅLÖ +ƒËÖ©â Î +ƒ ÎL• +ƒË•© “ +ƒ “L° +ƒË°©Ã ç +ƒ çLó +ƒËó í +ƒÛí ° +ƒÐ°©Í» +ƒ»­‹ +ƒ‹ÐÛ9Û­æ +ƒæ8‡é…s +ƒs°žžÎ÷ +ƒ÷®» +ƒ» á +‚á…Ù ‚)Ù†ì ‚)ìLç +ƒOç­„ +ƒ„ÐÔÔ¥© ‚)©¦¹ ‚)¹…û ‚*û†¾ ‚*¾ ÿ +‚ÿ…j ‚)j†D ‚)D­† +ƒ† ²‘à ‚*à µ +ƒ‡µ­Ö +ƒÖÉÿÐÐœœ­Š +ƒŠÉÿ¢ðÐЭš +ƒš®² +ƒ² Ä +‚#ÄÉÊÐCCî” +ƒ”ÐîÊ +ƒÊ­Æ +ƒÆ Ž +ƒŽÐJ·J­ +ƒð³é³éL³ +ƒË³¨¼‘Ë ‚)Ëî‘ +ƒ‘ðýéýéLý +ƒËýî_ +ƒ_LÒ +ƒËÒ­ž +ƒ=žÐ“ +“¢ÿý©þÛ +ƒÛŽ— +ƒ— ‰ +ƒÐ‰©é +ƒ­­ +ƒ­Ð[­Ü +ƒÜ8Þé!§ +ƒ§°ÌÌν +ƒ½®Ð +ƒÐ ‘ +‚‘…„ ‚)„† ‚)L¥ +ƒæ¥ 7 +ƒÐ7¥ƒ ‚)ƒ¦« ‚)«…ô ‚*ô†– ‚*– ½ +‚½…— ‚)—†© ‚)©­ñ +ƒñ £‘¼ ‚*¼ O +ƒ‡OîÊ +ƒÊд´î‚ +ƒ‚­A +ƒA ¹ +ƒ¹ÐÔîú +ƒúð¸é¸éL¸ +ƒË¸î +ƒLŒ +ƒËŒ ö +ƒÐö Û +ƒ‡Ûîª +ƒªÐ¾¾î½ +ƒ½­Ï +ƒÏ ï +ƒïÐóêóLœ +ƒËœ œ©Þ™å +ƒåˆÂãúã ¯ +ƒ¯É^Ž Ó +‚Ó· +ƒ·­× +ƒ×ð   À +ƒÀ­ +ƒ É]ÌЙY™LÎ +ƒ‘Î­× +ƒ×…Ø ‚(Ø­ß +ƒß… + ‚( + §±9 ‚(9É-ðп;¿­¨ +ƒ ¨‰ +ƒ?‰î¬ +ƒ¬Ð¤¤îÞ +ƒÞ à +ƒàÉŒðGGÉ]ÁÐÈÈ­ò +ƒ?ò c +ƒc©-³ Ð +ƒÐL¼ +ƒš¼­ +ƒ? Å +ƒÅ­Ë +ƒ ËÍ} +ƒ?}ð¹ ¹îž +ƒ?žL‡ +ƒ}‡­Õ +ƒ Õ ï +ƒï å +ƒå­„ +ƒ „ðœœÉ]ÉÐΡέ£ +ƒ £Ð§§­ú +ƒú8ñéÿþ +ƒþ°''Ι +ƒ™­Å +ƒÅðþþ ¥ +ƒ@¥©»Õ +ƒ>Õ­Ý +ƒÝÐõAõ­û +ƒû8êéÜþ +ƒþ°ââÎ/ +ƒ/®® +ƒ® a +‚a…å ‚)å†Ü ‚)ÜL› +ƒ ›­‡ +ƒ‡ÐÔÔ¥ì ‚)ì¦á ‚)á…¥ ‚*¥†€ ‚*€ p +‚p…2 ‚)2†ï ‚)ï­& +ƒ& ‹‘ò ‚*ò©ú +ƒ¼ +ƒ>¼ Û +ƒ‡Û 0 +ƒ*0ªÚð¨¨îÔ +ƒÔÐîîîÞ +ƒÞ­÷ +ƒ÷ Î +ƒÎÐÆÄÆ­´ +ƒ>´Ð‘‘L‘¼ +ƒ×‘¼­ê +ƒêð.é.éL. +ƒË.¨˜‘® ‚)®îÉ +ƒÉð©é©éL© +ƒË©î +ƒLÄ +ƒËÄ ´ +ƒÛ´­Ó +ƒÓÉ0Qð’é’éL’ +ƒ×’©S¶ +ƒ¶ ä +ƒ‡ä­N +ƒNÉXÍðÁÁÉxªÐ‹w‹ ƒ +ƒ‡ƒ©« ¡ +ƒ;¡  +ƒÛLä +ƒËä­î +ƒ î®r +ƒ r £ +‚ £­Ë +ƒËÉÿ•Ð¡ ¡­ã +ƒãÉÿÀп¿©ŸLÍ +ƒŒÍ©‰ Ô +‚Ô § +‚§n +ƒnŽ“ +ƒ“¤~ ‚+~Œù +ƒù¤ ‚+Œd +ƒd  +ƒÛ­÷ +ƒ÷Ђ!‚­Ú +ƒÚ8´é—  +ƒ °ÎÓ +ƒÓLÝ +ƒËÝ© • ß +‚%ßLº +ƒêº©ê Ä +‚%ÄLU +ƒêU Ø +ƒØª’ðléléLl +ƒPlL› +ƒò›­¹ +ƒ¹Éÿ÷Ђ‚­ê +ƒêÉÿÐÁ Á­ê +ƒêÐïï©ÿŽ¯ +ƒ¯– +ƒ– ë +ƒNë­i +ƒi®è +ƒèH­ ­±‚ ‚,‚… ‚)ȱ‰ ‚,‰…È ‚)ÈhßLþ +‚þH†J¤JØJ¢ªîhæ)Ã¨È¹Ò +ƒÒLš +ƒš`  ¿ +‚¿ Œ +ƒ Œ| +ƒ|ú +ƒúL´ +‚´©¥®µ +ƒµÐ« «­… +ƒ… ¸ +ƒ ¸=Ç +ƒÇ¢±L¾ +ƒ?¾`ò Õ¹Ò +ƒÒIÿT™Ó +ƒÓˆà‰õ‰`®ˆ +ƒˆÐÃ3íƒ +ƒƒ ™ +‚™­À +ƒÀ…† ‚(†­6 +ƒ6…  ‚(  ‘±` ‚(`] +‚]ȱñ ‚(ñ¾ +‚¾ ù±ó ‚(óªÖˆò±Ì ‚(Ì ¶ +‚¶­¬ +ƒ ¬ÐÔÔβ +ƒ ²Î^ +ƒ ^`•­ï +ƒï…È ‚(È­Ï +ƒÏ…x ‚(x Î±§ ‚(§³ +‚³È‚±† ‚(†‡ +‚‡ î±î ‚(îªùˆÄ±ã ‚(ã Ÿ +‚Ÿ× +ƒ×Žˆ +ƒˆèÝðýýî„ +ƒ „Ðßßîø +ƒ ø`Ï B +‚BHw©\ Hƒ\¢™ Iƒ™ ¦ +‚¦h”¢²L½ +‚&½ · +‚·`b®M +ƒM𺺩›L† +ƒ»†`§L +ƒá è +ƒ‡è­” +ƒ”® +ƒ W +‚#WªÐñ`Ž­) +ƒ)É-óÐL +Lä +ƒä ü +ƒ‡ü©Òð› ›É+¨Ð‹‹Ý +ƒÝ ½ +ƒ‡½©…ø +ƒø`¦  +‚   =±è ‚,è¢Ç € +‚$€ðü ü¢¶¡É ‚,É 0fLö +ƒ3ö â±õ ‚,õ¢Ã » +‚!»¢Ñ W¤ ˆ +‚ ˆ¢âLÁ +‚ Á æ +‚ +æ©àÖ +ƒAÖ +ƒŠ +ƒŠÉ +ƒÉ‚ +ƒ‚L° +ƒ›°î +ƒA­Á +ƒÁ…ì ‚+ì­“ +ƒ“…¡ ‚+¡®Ü +ƒÜ­E +ƒE “ +‚ “ ®¢Ì±ë ‚,ë ¤ +‚¤ õ +‚õ 5 +‚5 ä +‚ ä¢­Ê +ƒ@Ê › +‚› ± +‚± ô +‚ôð +ƒðŽ« +ƒ«¤¬ ‚+¬Œ +ƒ¤ž ‚+žŒƒ +ƒƒ ø +ƒ‡ø­Æ +ƒÆ®Ó +ƒÓ ø +‚"øªëð"îµ +ƒµÐ€€îþ +ƒþ­… +ƒ… ý +ƒýðüü­¯ +ƒ¯ Ý +ƒÝ +ƒ@ ю ‚,ŽŠòéÑ„‰„­ +ƒAÐZZ©Æ ¥ +ƒ»¥©ŽÙ +ƒÙLÉ +‚É­º +ƒºÐ€+€­Œ +ƒŒ8¯éé® +ƒ®°ããÎÅ +ƒÅ®ø +ƒø × +‚×…µ ‚(µ†” ‚(”¬‹ +ƒ‹¹„ +ƒ„‘Î ‚(Έ¥ø¥îª +ƒªÐííî£ +ƒ£`Ä R +‚R ° +ƒÛ° ð +ƒîð ð±Ò ‚,ÒÐÑBÑ­ƒ +ƒƒÉ0Ðì5ì é +ƒ‡é­š +ƒšÉXÜðÙÙÉxìÐóó©À €‘¿ ‚,¿©šŸ +ƒŸ ¸ +ƒ‡¸Lõ +ƒ[õ©å Ê‘Ó ‚,Ó ¦ +ƒN¦¢m©0ä² +ƒ²ŽÌ +ƒÌL· +ƒ[·© +Å‘Ë ‚,Ë é±ü ‚,ü ÿ +ƒ;ÿ­¨ +ƒ¨Ðñ#ñ­o +ƒo…‡ ‚+‡­Ä +ƒÄ…« ‚+«®¹ +ƒ¹­Ò +ƒÒ ­ +‚­€ +ƒ€Žò +ƒò¤ñ ‚+ñŒ +ƒ¤° ‚+°ŒÃ +ƒÃ  +ƒÛL< +‚<­Ð +ƒÐ…Û ‚*Û­Â +ƒÂ…ã ‚*ãîÚ +ƒÚКšî¯ +ƒ¯ ¿±ï ‚*Ÿ +ƒ Ÿ`Y5µíªgÇ ž@쀮¶BB££ÕÕËˉ‰‰‰‰£qq÷÷ŠŠŠŠèèÍÔ¡¿¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦Ñ ;+Õ·¸¹-ŠÑ<²Ñ­‰ÑRYÑ׊ÑÉ¥Ñô¤Ñ5ƒÑõ±£Ñ¤›¢Ñ“ä‰ÑæŠÑÁш‰Ñ ŠÑ·0Ѧ‰ÑBѳ‡ŸÑ]¾¶ŽÑ™ŠÑ´‰Ñ¿†ÑþƒÑ§‚ÑÔ\Ñÿ½pYÑá‘aDÑŠ@Ñ–<Ñ·Ó:Ñ81ѭƼ0Ñç#Ç£À»øâWºÄ¦€æ‘ºË߼õÍ Iµ”ÎÈx§†îㆠ`ñóÌü¨ÃÀÖㆪ?Ø +9•¹¾Ù쩹jDË„ƒ«—©åÜìá2ï®È• Ûãïû¾àô–¼¥€ò• +‡«ñ°ì¡¬ž~• Ò¿ÓËüëŽèÉõ‚‰¸ƒ‹ +ñ¸øÆ—Åà̭׉ǜ“Ò·ÐŽ–Üh–ŠÌ¦ÿm•žûÐá‘\äjáĈµ½ñ|²ôÒèúß…Œ²êƒžŠU—ѱÚæù÷Ŷ…¨© Ë-·Ž‚õýãÿš¯P¤ÿ°®ù¶ÃÒµÔ€¬ŸêØÌÀµ¢²ýš‰Þ0¦]‚íøÕ‡lò³œê £¢Œç…·Šãââ§óÊ?òÛ‚¢‚ž)oúí׈åµáŽ>“&ßÜü’¼ÖØ”yÃs¥™ˆ¿ØôËÕ–†´¬ fþ³ðɧÜú‚Óå”ö³Î–ïé¼è™˜ÊùÊÚ÷©¢9€Cøš™¨¸°•›8Ûó¿Ú}»ëLãñ’Ù¶ÁÄ͹֡´ÝäøéΥضà—6Íp°ì ´±ÕÆ–îðÆÅõõ‰Ü§¡¦‘g¾Š°¿ °Ò„±ö‚ä‘ÂÎ÷¼ôÿú„ɯäƒô”€tÞ®±bkª³ÏˆŸ•ÃÀ³ºüÙó€’3²éçîäàÉøÛá૦ŽT„º1ðÓݸˆ«œAÌ›4Éçó²Õ;ÃÄžćº¢ÚÛeÚ·§ñǧ¸§æù˜üªü¥nóá»ïð¯â‰¿.À‚Âêñ‚Œ£^!«þîÿi¤ºÖÈ©æ„„¬°â‡­ßµð½×Œ€q˜ì¥Þç¨ëßËâáï£ØÏË¥ºÌÓdÍùÝ­¯ìÙð¬”ìà帊¶ŠœxµœÞüФåÇÊó ý®¬ì‘=¬Ç †Ãœ¼ùþ¨††5 +¾Ùõ¯³®Þ—•»ãÛóÙÑûâ%ß7ìÝ݇ĔýÍÅ耋_´ÁÝ ‘[@¥„§š‹Æɇßüú*ãѽ…å«Ó›Á(“Š°«ò¦„¾ŠçœªÚ‹Õ£aÁ²·­ër܆“Áª´®‹€¨™ºäëŸÑÐÂÔ“Ùë®À±¤Â,¾¡ö2©¨¥¬þ—Ì¡òä ª¹Ôþ³ƒwŽ¤ÈÆ™¡¾µÀÂƽcRÂûûŸév÷±z¨Îï¹”“©Œ¤Õȯ/ȼȲ¾:ÏÔ®uŽ›¯˜¼™š~×ÞÖ©ñ«¦ÔÑ’þ¹Á¸¡ÅΉ Œ­Ÿ’½»íø¡è×Àö…£Ê†ž¶˜æþÏت¢û½ÿ'±èúÐý›ŒÄ`‹…—Á»½BöSƒ‰Ô£éDׇø…ˆ•ÓŽžÔ¸­ñƒ¿‘ýZ™ô¿‰ ò¹{•Ã’šÓ÷ă–ƒÖ”Qàû<·» ˆ˜ß¦í›¹’”Ç‹÷YÒ­©ÜÒæò‘‡†Û+îº __SIM6502__../libwrk/sim6502/_scanf.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_memset__setjmp_longjmp +__seterrno_isdigit_isspace _isxdigit_tolower__scanf_Bits.size_format_D__ap_JumpBuf_F +_CharCount_C_Width_IntVal _Assignments _IntBytes +_Converted _Positive _NoAssign_Invert_CharSetL017EL017FL0180pushaxldaxyspL018DL0190 _ReadCharL0194L0192L0196L0198 +_SkipWhitetosicmp0 +_GetFormatbooleqL01A6L01B3L01B2mulax10L0316L01BAL031DcomplaxL01DEL01CBL0303L01D4L0304L02D3L01F6L0246L0309L01E8L01EEL02C3L01F2L02A9L01FCL02EC_ScanInt _CheckEndL020DL020AldaxiL0305L0214incax1L0317L0308L0212L0221L0240L0231L0234L0232L0236L023EL0242L024CL030AL030BL025EL0258L0263L0268L0270 _AddCharToSetL0302L030FL027EL031A_InvertCharSetL0293L0290L0310L0311 _IsCharInSetL0314L0296L02B8_ReadInt +_AssignIntL02C9L02CBtossuba0axulongL02F4 _PushBackincsp8_FindBitL0010pushaincsp1L1L002DL0055pusha0jmpvecL0082L00B6_ErrorL00D1L00D7L00D5 _ReadSignL00E3L00ECL00F1_HexValL00FEL031EdecaxyL0105L0106L010CL0320pusheaxaulong tosmuleax tosaddeaxL0323L0110L0324L013EL012AL0131L0328L0327L0325L0326L0161L0166negeaxL0173CODERODATABSSDATAZEROPAGENULLUzna` ixbÚâ íð¡‘JÛïÜ@‘ø¯äfaX‘faX€ +  +‚©  +‚ `!"#$% ¸ƒ   + "  & __SIM6502__common/_seterrno.s +ca65 V2.15*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq€ñ  öbst@‘ø¯äfaX¬ ID<… ‚†" ‚" ± ‚ +‚ˆ ± ‚ +‚(ˆ+hQ, ‚,)0Q$ ‚$H + -±& ‚&H ȱ ‚ª*ȱ ‚¨'h(%  +‚0H!˜ .‘ ‚ ˆ/Š‘# ‚#ˆh‘ ‚ h)‘ ‚(`  +    ",$& # ¸ƒ1U-P0HG")& C8L6ET1A J$.!I= F%7(2K/ #'BD< __SIM6502__ common/_sys.s +ca65 V2.15__sysjmpvecptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzD¾ Þ êíƒpxìy@‘ø¯äü‹\’faXÈw¢Š   +‚© Hƒ¢ Iƒ  +‚­ +‚® +‚  +‚¢©L +‚ œA +B +N +O +R +M +A +L +  +P +R +O +G +R +A +M + TERMINATION +   ¸ƒ -0)&1$.  +%*(,#'+ __SIM6502__../libwrk/sim6502/abort.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stderr_fputs_abort_exit_raiseL0005.sizepushaxCODERODATABSSDATAZEROPAGENULLUzna` iqŽÿ + &)[„ií(î@‘ø¯äfaXüW  q ‚‘ ‚H ÈŠq ‚‘ ‚ªh`  +    ¸ƒ  +¸ƒ +    + __SIM6502__runtime/addeqsp.s +ca65 V2.15addeq0spaddeqyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq‰ú  #LoiØ"Ù@‘ø¯äfaX¢R ÈH ˜e ‚… + ‚ +æ ‚h` +     +¸ƒ ¸ƒ      + __SIM6502__runtime/addysp.s +ca65 V2.15addysp1addyspsp.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix€ø#&ºà€`%a@‘ø¯äfaXÇ faXËI ¢  1 ‚ÈH!Š1 ‚ªhL +‚ !" ¸ƒ¸ƒ%    # __SIM6502__ runtime/and.s +ca65 V2.15tosanda0tosandaxaddysp1spptr4(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzš)= IL¡í K +@‘ø¯äü‹\åfaXÈÍ/%  +‚© Hƒ¢ Iƒ  +‚©  +‚© Hƒ¢ Iƒ  +‚   +‚  +‚† ‚ ‚ ð© Hƒ ¢ Iƒ L +‚ª +L +‚%c +ˆ !   ¸ƒ/  -0)&96314$. 5 +%7*(,2/: '+" __SIM6502__../libwrk/sim6502/asctime.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_asctime _strftimeL000A.sizeL0005pushaxpusha0ldaxyspL000Dincsp2CODERODATABSSDATAZEROPAGENULLUzna` iqeÖ ßöù3,f’ø“@‘ø¯äfaXž.† ‚ +& ‚¦ ‚`   +   ¸ƒ¸ƒ +    + __SIM6502__runtime/aslax1.s +ca65 V2.15aslax1shlax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqtå +ï =Ff¬­@‘ø¯äfaX­=  † ‚ +& ‚  +& ‚ ¦ ‚`  +    ¸ƒ¸ƒ +    + __SIM6502__runtime/aslax2.s +ca65 V2.15aslax2shlax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqƒô ÿG`fÆÇ@‘ø¯äfaXÔL† ‚ +& ‚  +& ‚  + & ‚¦ ‚`  +    + ¸ƒ¸ƒ     + __SIM6502__runtime/aslax3.s +ca65 V2.15aslax3shlax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq’ &)Qzfà(á@‘ø¯äfaXü[† ‚ + & ‚  +& ‚ + & ‚ +& ‚¦ ‚`  +     ¸ƒ +¸ƒ +    + __SIM6502__runtime/aslax4.s +ca65 V2.15aslax4shlax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqðB\nÊË@‘ø¯äfaXËH  † ‚ + +& ‚& ‚ & ‚¦ ‚` +      ¸ƒ¸ƒ      + __SIM6502__runtime/asleax1.s +ca65 V2.15asleax1shleax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq¨,CFVœn +E @‘ø¯äfaXžq † ‚  + & ‚& ‚& ‚  +& ‚& ‚& ‚¦ ‚` +       ¸ƒ +¸ƒ +    + __SIM6502__runtime/asleax2.s +ca65 V2.15asleax2shleax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqÑBXorjÜnJqK@‘ø¯äfaXñš † + ‚ + +& ‚& ‚& ‚  +& ‚& ‚& ‚ +& ‚ & ‚& ‚¦ ‚` +     +   ¸ƒ ¸ƒ     + __SIM6502__runtime/asleax3.s +ca65 V2.15asleax3shleax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq”,/Q€rò.ó@‘ø¯äfaXÿ] +† ‚ ¢  +& ‚& ‚ & ‚ÊÐö¦ ‚`       ¸ƒ +¸ƒ +    + __SIM6502__runtime/asleax4.s +ca65 V2.15asleax4shleax4sregtmp1.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iq•ahkÎ9ŽÇjÈ@‘ø¯äfaX… ^ ÞÞ@EÐ@ 0"E3Ð@ @  E 3 Ð  @   @E³Ð@ "D3ÐŒD&"&D&3&Ð&Œ&D&š&"D3Ð@ $"$D$3$Ð$$@$ $b""x"©"!‚YM‘'’'†'J'…'',),#($YX$$Š#]‹¡Š#‹¡)®i¨#$(S((#($(S((¡(  [ [ ¥ i $ $ ®®¨­)|œmœ¥i)S„##4##¥#i### #Ø!b!Z!H!&!b!”!ˆ!TDÈThDè”´„t´(ntôÌJrò¤Š ª ¢ ¢ t t t r Dh²2²"  & & r r ˆ È Ä Ê & H D D ¢ È  ¸ ƒž¸ƒ^%¸ƒX¸ƒR¸ƒD¸ƒ +)-") 986314$.!=5 +%7*(,2/'+ __SIM6502__ dbg/asmtab.s +ca65 V2.15 OffsetTab +AdrFlagTab +SymbolTab1 +SymbolTab2 MnemoTab1 MnemoTab2.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqH¹ÊçêçÑ€QéR@‘ø¯äfaX™<4… ‚  +‚ ¤ ‚H'˜$)ð8é*ð&&¨h +Š(É€ j ˆ-Ð!ú!ðh`"hŠ¢É€ %%Ê`,i¨h)† ‚ à€+f ‚jˆÐø¦ ‚` # ¸ƒ¸ƒ.-MHG)&9C8L6E1A;!F%7@N*,2: 'BD<+ __SIM6502__ runtime/asr.s +ca65 V2.15tosasraxasraxypopaxtmp1.sizeL2L3L6L1L4L5L7CODERODATABSSDATAZEROPAGENULLUzna` iqkÜ å ñô3'_†ó‡@‘ø¯äfaX¨4 + † ‚à€f ‚j¦ ‚`   +  ¸ƒ +    + __SIM6502__runtime/asrax1.s +ca65 V2.15asrax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq€ñ +û  +BL_« ¬@‘ø¯äfaXéI † ‚ à€f ‚j +à€f ‚ j¦ ‚`  +     ¸ƒ      + __SIM6502__runtime/asrax2.s +ca65 V2.15asrax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq•   Qq_ÐÑ@‘ø¯äfaXÁ^† ‚à€ +f ‚ jà€f ‚ jà€f ‚j¦ ‚`   +   ¸ƒ     __SIM6502__runtime/asrax3.s +ca65 V2.15asrax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqª ' 36`–_õ5ö@‘ø¯äfaXþs† ‚à€ f ‚jà€f ‚ jà€f ‚jà€ f + ‚ +j¦ ‚`  +    +¸ƒ     __SIM6502__runtime/asrax4.s +ca65 V2.15asrax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq• #&GmfÓ%Ô@‘ø¯äfaXû^† ‚¦ ‚à€ f ‚f ‚ f ‚ j¦ ‚`  +    +  + ¸ƒ     + __SIM6502__runtime/asreax1.s +ca65 V2.15asreax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqÄ5I UX`¸fW@‘ø¯äfaX‘† ‚¦ + ‚ +à€f ‚f ‚f ‚ jà€f ‚f ‚f ‚j ¦ ‚`  +       +¸ƒ     + __SIM6502__runtime/asreax2.s +ca65 V2.15asreax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqód{ ‡Šyfi‰j@‘ø¯äfaX›¼"† ‚¦ ‚ à€f ‚f ‚f ‚j à€f ‚f ‚f + ‚ +j à€f ‚f ‚f ‚j¦ ‚`  +    + ¸ƒ     + __SIM6502__runtime/asreax3.s +ca65 V2.15asreax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqª, 8;V‘jû:ü@‘ø¯äfaX»s † ‚¦ ‚   à€f ‚f ‚ f ‚jˆÐô¦ ‚` +       ¸ƒ +    + __SIM6502__runtime/asreax4.s +ca65 V2.15asreax4sregtmp1.size@L1CODERODATABSSDATAZEROPAGENULLUzna` i<» Èçꥣ2é3@‘ø¯äfaXŸ faX€ "faXËý;8+¬ +ƒÀ +ð™ +ƒÈEŠ=™ +ƒ È*Œ +ƒ©ªF`&©77  +‚¢ÿ4ŠS`;¬ +ƒðˆD¹$ +ƒ$ªPˆ.¹ +ƒŒ +ƒ  2 +‚2LM +ƒ M` <=   +O>?@ 32¹0ƒ -M¸ƒ %T PG?")> 9C86TA;$. +I="@ *(,R :# DQ<+A __SIM6502__common/atexit.s +ca65 V2.15_atexitdoatexitcallax*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510exitfunc_index exitfunc_max@Errorexitfunc_table.size@L9CODERODATABSSDATAZEROPAGENULLUzna` ixkãF)@CCKŽB@‘ø¯äfaX™ faXä4$–‰… ‚† ‚ '„/ ‚/„A ‚A„W ‚W„ ‚±8 ‚8ª½Z +‚Z)€Uð55ÈÐVóVæ2 ‚2Ð?ï?Š¢DÉ+dðIIÉ- +Ð33ÊQÈÐ--æJ ‚J†# ‚#± ‚ª½R +‚R).ð`F` B +ƒB¥Y ‚YH¥\ ‚\H%¥> ‚>H¥ ‚H9 M +ƒM  +ƒ Ch"e ‚ …_ ‚_hLe[ ‚[…, ‚,heG ‚G… ‚hbea ‚a…^ ‚^Š48@é0XFe+ ‚+…K ‚K: +:æ0 ‚0Ðæ& ‚&Ðæ6 ‚6ÈÐ1´1æ ‚Ð$°$¥* ‚*¦S ‚S¤ ‚ðO OLT +‚T) ‚)& ‚&< ‚<& ‚`%&'() =# +=/A> _[,+K0*S) =82J= WY\Ga^&6<ZRT¸ƒ;¸ƒ;ehmˆ…ŠU-P0‡HG")oy fW9C8LO6pEg„tbT1;en$.^!i Id† +F%_@N*aV,2cRKz/:u~ #`BSDZQ<YX+* __SIM6502__ common/atoi.s +ca65 V2.15_atoi_atolnegeax__ctypesregptr1ptr2tmp1*/home/hugg/compilers/cc65/asminc/ctype.incCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.sizeL1L2L3L5L6L8mul2L7L9CODERODATABSSDATAZEROPAGENULLUzna` iqwèé BKt¿À@‘ø¯äfaXÎ@  à ЪР+ +©` ¢Š`  ¸ƒ ¸ƒ     + __SIM6502__runtime/bneg.s +ca65 V2.15bnegabnegaxreturn0return1.sizeL0L1CODERODATABSSDATAZEROPAGENULLUzna` iqWÈ Õòõ3(q™ôš@‘ø¯äfaX¡  ± ‚L +‚  +    ¸ƒ¸ƒ +    __SIM6502__runtime/bpushbsp.s +ca65 V2.15bpushbsp bpushbysppushasp.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzxò„v ƒ†"¨)…*@‘ø¯äü‹\ÐfaXÈA*Ú–  +‚ ] +‚] T +‚ T  +‚    8  +‚  b +‚ b \ +‚\L6 +ƒœ6  ^ +‚ ^3 Cq ‚H_ŠLÈqJ ‚JªlhQ  + +‚ + + 4 Y +‚ Y    , +‚, R * +‚* . @ +‚@ " D +‚ D  +‚  +‚ Z +‚Z / h +‚ hH> ± ‚H +‚HÈ-±a ‚a +‚hd $ +‚$ B +‚B   +‚ à€:1 1  W  +‚    +‚ IL! +ƒ™!    g +‚ g V +‚ V c +‚c +± ‚ÈP ‚Ðkkªj©f G  +‚   5 +‚5 E ` +‚ ` N +‚N(M(ML(= +ƒ(=ÐUULUF +ƒUF <±0 ‚0ˆ% ‚%ð 7  +‚ )  +‚  2 +‚ 2  +‚ # +‚#L9 +ƒÕ9ªO L' +‚'+,-./)S'&SN%Sc#S!SB SH$S#SS,*@5SYS +SbVS^Dh g`2ST S]S\ZAJa0%¸ƒÚ&?mhm\jU -P0M]lHG?")o>&sfW9C8LO6pEgtbk3T1A4;eJn$.^!iqId= 5 +F%7_ [@N*(arV,2wcRKv/: #'`BSDZQ<YX+0 __SIM6502__../libwrk/sim6502/bsearch.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_bsearchpushaxdecsp4push0ldaxyspdecax1L0007L0005.sizeasrax1staxysppushwysp tosumulaxtosaddaxjmpvecincsp2L0012incax1L0025stax0sptosicmpL0020L0001addyspCODERODATABSSDATAZEROPAGENULLUzna` iqaÒ Û çê$|Šé™@‘ø¯äfaXò*… ‚† ‚l +‚  +   ¸ƒ   + __SIM6502__runtime/call.s +ca65 V2.15callaxptr1.size"jmp (abs)" across page borderCODERODATABSSDATAZEROPAGENULL H‚ÿUzna` iqÚKe?¤§ˆ/צ@‘ø¯äfaXᣠ H‚ˆ ¹ +‚ +ƒˆ ¹ +‚ +ƒŒ +ƒ ÿÿ° ÿ Ðæ`   + ±)‚± ‚€¸ƒ +¸ƒ ?")>&9C86A4;$!=5%7@(: B< __SIM6502__runtime/callirq.s +ca65 V2.15callirq callirq_y __CALLIRQ__irq_initirq_done__INTERRUPTOR_TABLE____INTERRUPTOR_COUNT__initirqdoneirq.sizeloopjmpvecindexdoneCODERODATABSSDATAZEROPAGENULLUzna` iq­,,X[V±y*Z+@‘ø¯äfaXéj +­ +ƒ® +ƒ  +‚­ +ƒ® +ƒ   +‚ L +‚     ¸ƒ ¸ƒ¸ƒ +  $(# __SIM6502__runtime/callmain.s +ca65 V2.15callmain__argc__argv_mainpushax.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqÂ3L X[oÊ‹UZV@‘ø¯äfaX» ‡ !  +‚ +ƒŽ +ƒ  +‚àÐ + +ÉÐ`  +‚­ +ƒ ® +ƒL +‚  +   ¸ƒ!  0?& 31$5 +%*2/#< __SIM6502__common/calloc.s +ca65 V2.15_calloc_malloc__bzero tosumulaxpushaxSize +ClearBlock.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix³+A MPˆØõOö@‘ø¯äfaXófaXÑ|H  ± ‚™ +‚ˆø©e ‚… ‚æ ‚ hL +‚   +  ¸ƒ &  $!  #' __SIM6502__common/cc65_idiv32by16r16.s +ca65 V2.15_cc65_idiv32by16r16 idiv32by16r16incsp4-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace@L1.size@L2CODERODATABSSDATAZEROPAGENULLUzna` ixkã÷ V\mn@‘ø¯äfaXàfaXÑ4 +… ‚† ‚  +‚L +‚   +   ¸ƒ +     __SIM6502__common/cc65_imul16x16r32.s +ca65 V2.15_cc65_imul16x16r32 imul16x16r32popax-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq[Ìß ëî)˜í™@‘ø¯äfaX¬$ … ‚  +‚L +‚ +   ¸ƒ  __SIM6502__common/cc65_imul8x8r16.s +ca65 V2.15_cc65_imul8x8r16 +imul8x8r16popaptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq1¢£ÁÄF +™£Ã¤@‘ø¯äfaX£GS< iZ))èà"ÐÉh00éh;°!!ÊÊ à%ÐÉ´°::ÉZ&&Iÿi´-ÉW¢©`¨¢¹1 +ƒ1`.89é´ÉZ2Iÿ#i´7¢ÿ$ÉW=©*`<¨ Š6Y +ƒ i'è+`¹WW,, , ,,,,,$,(,,15:>BGKOSX\`dhlptx|€„ˆ‹“–šž¡¥8¨8«8¯8²8µ8¸8»8¾8Á8Ä3Ç3Ê3Ì3Ï3Ò3Ô3×3Ù3Û3Þàâäæèêìíïñ ò ó õ ö ÷ ø ù ú û ü5ý5þ5þ5ÿ5ÿ5ÿ5¸ƒ0¸ƒ(>hm|UP¢0?ž"o>“s98O tb31Jn!iœ=7‹‘NVŸ,2—¡cv¤:u~ #Œ{Q<˜’ __SIM6502__common/cc65_sincos.s +ca65 V2.15 _cc65_cos _cc65_sin _cc65_sintab.size@L1@L2@L3L3L4L1L2L5L6L7CODERODATABSSDATAZEROPAGENULLUzna` ixÃ;X dgˆï f@‘ø¯äfaXëfaXÑŒ… ‚ † ‚ ± ‚™ +‚ˆø©e ‚… ‚  æ ‚L +‚   +   + ¸ƒ "&  $!  ' __SIM6502__common/cc65_udiv32by16r16.s +ca65 V2.15_cc65_udiv32by16r16udiv32by16r16mincsp4-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace@L1.size@L2CODERODATABSSDATAZEROPAGENULLUzna` ixkã÷ V\mn@‘ø¯äfaXäfaXÑ4 +… ‚† ‚  +‚L +‚    ¸ƒ +  +    __SIM6502__common/cc65_umul16x16r32.s +ca65 V2.15_cc65_umul16x16r32 umul16x16r32popax-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixqé [lz{@‘ø¯äfaXØfaXÑ:  … ‚©… ‚  +‚ L +‚  +    ¸ƒ      __SIM6502__common/cc65_umul16x8r32.s +ca65 V2.15_cc65_umul16x8r32 umul8x16r24popax-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq[Ìß ëî)˜í™@‘ø¯äfaX˜$ … ‚  +‚L +‚ +   ¸ƒ __SIM6502__common/cc65_umul8x8r16.s +ca65 V2.15_cc65_umul8x8r16 +umul8x8r16popaptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞ. q}Ý~@‘ø¯äfaX×  +‚L +‚  +   ¸ƒ   + __SIM6502__common/chdir.s +ca65 V2.15_chdir +__syschdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqbÓÔ àã8Zuâv@‘ø¯äfaX…+ Iÿ HŠIÿªh +`  + ¸ƒ     + __SIM6502__runtime/compl.s +ca65 V2.15complax.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix›.$RUnøfTg@‘ø¯äfaXî faXËI%   . H‚.ð  © H‚¢) I‚)L +ƒ`&'Ô(%2 +ƒ 2Ž +ƒ 4 +ƒ4Ž +ƒˆ"¹ÿÿ  +ƒ ˆ!¹ÿÿ+ +ƒ+Œ +ƒ  ÿÿ + ÿ&Ðè`)*I+    H‚ð33©/ H‚/¢ I‚L +ƒ`0 +. )/¸ƒ%% ¸ƒ  ¸ƒ  8-P0MHG" CLO6E3T14J!IF%@N 2RK/ #BD, __SIM6502__runtime/condes.s +ca65 V2.15initlibdonelibcondes__CONSTRUCTOR_TABLE____CONSTRUCTOR_COUNT____DESTRUCTOR_TABLE____DESTRUCTOR_COUNT__(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510exit.sizefetch1fetch2loopjmpvecindexCODERODATABSSDATAZEROPAGENULLONCEUzna` iqB³/â îñ—ˆ¡)ð*@‘ø¯äfaX’ -,© H‚… + ‚ +© I‚… ‚© H‚ … ‚© I‚… ‚ ¢ HB‚© IB‚… ‚ èð ± ‚‘ ‚ÈÐöæ ‚æ ‚Ððæ ‚Ðï` +   + ¸ƒ 0"& 1 $! %,#'+ __SIM6502__common/copydata.s +ca65 V2.15copydata __DATA_LOAD__ __DATA_RUN__ __DATA_SIZE__ptr1ptr2tmp1.size@L1@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` ix ƒ%¨ ´·¡X¶¶@‘ø¯äfaXÅ +faX¼Ð*$Œ +ƒˆˆ˜e ‚… ‚¦ ‚è† ‚ ± ‚ªˆ± ‚  +‚¥ ‚ ¦ ‚  + +‚ +¬ +ƒL +‚ +       +¸ƒ -0">& 94$.!=5%@,/ #'+ __SIM6502__conio/cprintf.s +ca65 V2.15_cprintfpushaxaddysp _vcprintfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iq²#2PSyÌwCRD@‘ø¯äfaXú{ HŠ  +ƒ hHJ J +JJ¨¹ +‚  +‚h) ¨¹ +‚L +‚ +   ¸ƒ ¸ƒ   + ' __SIM6502__conio/cputhex.s +ca65 V2.15 _cputhex8 +_cputhex16_cputc__hextab.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix“  %(’ºò¬'­@‘ø¯äfaXfaXÜ\HŠH©2¢  +‚hªh   +‚ L +‚ ¸ƒ -"   $ %*( #' __SIM6502__common/creat.s +ca65 V2.15_creat_openpushax*/home/hugg/compilers/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCL.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixÑI;„¢¥’7J¤‚@‘ø¯äfaXñfaXÑ !"#$%Ø¢ÿ š © H‚‚‚ ¢ I‚‚‚… ‚† ‚  +‚  +‚  +‚H  +‚hL +‚  +       + €¸ƒ        + & __SIM6502__sim6502/crt0.s +ca65 V2.15_exit __STARTUP__zerobsscallmaininitlibdonelibexit__MAIN_START__ __MAIN_SIZE__ __STACKSIZE__-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLSTARTUPUzna` i Š%¯ »¾Ä‚7¹½º@‘ø¯äfaX  +faX¼ faXÑÐ*$Œ +ƒˆ ˆ˜¦ ‚  e ‚è… ‚†$ ‚$ !± ‚ªˆ ±" ‚"  +‚¥ ‚¦ ‚  +‚¬ +ƒL +‚ +  ! $" +# ¸ƒ '->&6 1$=5 +%( ,#' <" __SIM6502__conio/cscanf.s +ca65 V2.15_cscanfpushaxaddysp_vcscanf,/home/hugg/compilers/cc65/asminc/generic.mac-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeArgSize@L1CODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞ)lsÝt@‘ø¯äfaX›  +‚L +‚  +   ¸ƒ  __SIM6502__common/ctime.s +ca65 V2.15_ctime +_localtime_asctime.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixNÆÇ ÒÕöË Ô ÔÕ @‘ø¯äfaXßCfaX䀀LxIyFÐWP{PaPP`h Gt>i;AT1X,'uB‰ R]?~(‚3UNDo.  ^ 0   ˆ n € =  + e&Ž„\H +Z +} +c +8 +m +OC%4J9E2Md#7vqkQ!r…-w  : †   6S Y|V<Š[Œ ‡+$j‹*)@P@zffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff¸ƒl‘hm\jˆ|…ƒŠU-P0M‚‡lHG?")o>“ys–fW9Cš™•8}LO6pEg„tbk€3ŽT1A›4;eJn$.^!i qIdœx=†5F%7‹_‘[@N *(arVŸ,2—wcRKvz/:u~ #'Œ`BS‰DZ{”Q<˜’YX+ __SIM6502__sim6502/ctype.s +ca65 V2.15*/home/hugg/compilers/cc65/asminc/ctype.inc__ctypeCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqaÒÚ æé8!`è‚@‘ø¯äfaX‡* +¨ ¢­ + +‚ +Œ +‚`  +   +¸ƒ +    __SIM6502__conio/cursor.s +ca65 V2.15_cursorcursor.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqf×pG gjãM hii@‘ø¯äfaXº=/Bä©…œ ‚œ * +‚*…š ‚š†Þ ‚Þ § +‚§… ‚†q ‚q©¹… ‚ b +ƒb¥_ ‚_8eå‡ ‚‡ðL Lª¤C ‚C© <‘º ‚ºÈgÊÖЄú„©,‘& ‚&ð– –…ˆ ‚ˆ†# ‚# !±{ ‚{ k +ƒük¦G ‚G芘¢J` 8 +ƒG8 Û +ƒGÛ© •„ ‚¤s ‚sÄ’ ‚’°ËË‘Ÿ ‚ŸÈZ„³ ‚³¤~ ‚~`hŠ  [ +ƒ^[˜ †y ‚y„¡ ‚¡¤1 ‚1HYJ»J·J¯J‚ª0½¸ +‚¸‘Ò ‚ÒÈ hE)¼ª½^ +‚^‘Ó ‚ÓÈ„ ‚¤X ‚X¦ ‚`†¤Ê ‚ʦ‰ ‚‰ a +ƒYa ' +ƒD' ×±” ‚” Ú +ƒüÚH-¦Ô ‚ÔèÙÊ@?? d +ƒAdL +ƒ§±Á ‚Á ) +ƒ^) ¤ +ƒG¤ÈªÀÏêÏ — +ƒD—h¢Æ ` +ƒB`¢©àAÐSS¤  ‚ ð99¥² ‚²ÉèI±j ‚j°¿¿ ­ +ƒ^­ˆ|ЊòŠ + ‚ +°°½3 +‚ 3 r +ƒIr½¾ +‚ +¾ð¦¦ ] +ƒI]ÊÐPÕP`  +ƒðUiÅЃƒè›¨L} +ƒY}¦4 ‚4¨.ÂÂÊ/e€ ‚€è(`¨¬J7 Jf°É"¶ð)F €zJªt½o +‚ o°ppJ½J«J%JV)QÐÃà€:©>ªl½ +‚  …µ ‚µ)n…È ‚ȘÄ)ª=˜Ž TàŠ®ðv vJÝwwJØJ ˆÌÐ$ú$È ˆ+ÐÕòÕ`6¨¹m +‚ m…2 ‚2¹™ +‚™…B ‚B©c DÐ ‚Ð&\ ‚\*5ˆ¨Ð;ø;i?ž ¥ +ƒI¥ÊKÐìLR +ƒGRCDEFGWÎWWxWÀWWÉ W“ W± H™ +Hm H¾H3… …o…¸^i*§¸ƒ/OŒ¸ƒ/njߗ̉ÇÒÜ\j½|ú…ƒÚæ©-Pÿê¢0M¦]‚ílHGŒó?Ûž)Ž>“ÖØys™¿Õ åW³÷¢9€øš™°›8}ëL¶O¥6p–EÆõ§±‚Îô„tbkŸÃ€3«Ž1œ›4ç;e ·Jù˜üïð.À^îi„‡qìIºÓdÍÙœxÐ= †5F»ã%7Åè‹_‘[@¥Nš*Ñ(Š£a²r¨VŸ¤Â,¡¬¡ò乃w¾µcKûévz/:u~ñÁ¸×öþϪ'ýŒ`‹B£žZ{”<ˆ˜’YX†+H __SIM6502__ dbg/dbgdasm.s +ca65 V2.15popax__hextab OffsetTab +AdrFlagTab +SymbolTab1 +SymbolTab2 MnemoTab1 MnemoTab2sregtmp1tmp2tmp3tmp4ptr1ptr2ptr3BufIndex +OperandLenBufLen +AdrFlagBufYSaveXSaveBufPtrMemPtrMnemoBuf +_DbgDisAsm _DbgDisAsmLen +DisAssLineL2L1.size disassret AnalyzeOPCode +Put3SpacesPutSpace +Put2SpacesPutCharPC9PutHex16PutHex8L2083L208CL2094PutMnemoL20A4L20BAL20AC GetBranchAdrL20CCL20DDL20D9L20E3L20E8L20F8L2107L2103L210BL212BL2120L2124L213AL213ECODERODATABSSDATAZEROPAGENULLUzna` iqUÆE  A[¨@‘ø¯äfaXÙl] &± ‚…2 ‚2È"± ‚… ‚ȱ ‚… ‚ȱ, ‚,…9 ‚9ȱ7 ‚7…3 ‚3  +‚©…; ‚;…6 ‚6¥ ‚  * +ƒN*¥ ‚  8 +ƒN8 0 +ƒh0Æ/ ‚/0?? 1 +ƒh1¤ ‚æ! ‚!±5 ‚5  +ƒNL +ƒ0©¤ ‚‘' ‚'¥ ‚¦+ ‚+`H>J%J J +J-ª½: +‚:  +ƒah<)ª)½ +‚ ¤ ‚æ# ‚#‘ ‚`4© .Ðõ (93 5 ('+ +(2/ (6!(;#(,7 : $¸ƒ@-0MHG?>& C8O6E31A4 J$.I= 5 +F%7@N*(,K/ 'BDQ<+ __SIM6502__ dbg/dbgdump.s +ca65 V2.15 _DbgMemDumpaddysp1__hextabsptmp2tmp3tmp4ptr3ptr4.sizedumpputspacedump1dump9putcCODERODATABSSDATAZEROPAGENULLUzna` iq‰¢ ®±¦WŽå°æ@‘ø¯äfaXéÍ+%… ‚† ‚ x ± ‚H +¢ ½ +ƒ  +ƒ&Ð +Êõh ‘ ‚(L +‚h‘ ‚(L +‚‘ ‚Ñ ‚`Uª3Ì ¸ƒ! -0")& 4 .! 57(/ ' __SIM6502__dbg/dbgisram.s +ca65 V2.15 _DbgIsRAMpopaxreturn0return1ptr1.sizeL1TestVal CheckCellL2CODERODATABSSDATAZEROPAGENULLUzna` ix^Ö× ãæ=#‹®å¯@‘ø¯äfaXçfaX¼'8 +é +°Ê `   +   ¸ƒ   __SIM6502__runtime/decax1.s +ca65 V2.15decax1,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^Ö× ãæ=#‹®å¯@‘ø¯äfaXçfaX¼'8 +é +°Ê `   +   ¸ƒ   __SIM6502__runtime/decax2.s +ca65 V2.15decax2,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^Ö× ãæ=#‹®å¯@‘ø¯äfaXçfaX¼'8 +é +°Ê `   +   ¸ƒ   __SIM6502__runtime/decax3.s +ca65 V2.15decax3,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^Ö× ãæ=#‹®å¯@‘ø¯äfaXçfaX¼'8 +é +°Ê `   +   ¸ƒ   __SIM6502__runtime/decax4.s +ca65 V2.15decax4,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^Ö× ãæ=#‹®å¯@‘ø¯äfaXçfaX¼'8 +é +°Ê `   +   ¸ƒ   __SIM6502__runtime/decax5.s +ca65 V2.15decax5,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^Ö× ãæ=#‹®å¯@‘ø¯äfaXçfaX¼'8 +é +°Ê `   +   ¸ƒ   __SIM6502__runtime/decax6.s +ca65 V2.15decax6,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^Ö× ãæ=#‹®å¯@‘ø¯äfaXçfaX¼'8 +é +°Ê `   +   ¸ƒ   __SIM6502__runtime/decax7.s +ca65 V2.15decax7,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^Ö× ãæ=#‹®å¯@‘ø¯äfaXçfaX¼'8 +é +°Ê `   +   ¸ƒ   __SIM6502__runtime/decax8.s +ca65 V2.15decax8,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixmåí ùüLHØûÙ@‘ø¯äfaX¥faX¼6  „ ‚8å ‚°  Ê` +    ¸ƒ  +   __SIM6502__runtime/decaxy.s +ca65 V2.15decaxytmp1,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqpá ê öù81a’ø“@‘ø¯äfaX˜9  ¤ ‚ÐÆ ‚Æ + ‚ +`  +    +¸ƒ     + __SIM6502__runtime/decsp1.s +ca65 V2.15decsp1sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq€ñ ú  GPa±²@’ø¯äfaX¼I  ¥ ‚8 +é… ‚ `Æ ‚`  +     ¸ƒ     + __SIM6502__runtime/decsp2.s +ca65 V2.15decsp2sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq€ñ ú  GPa±²@’ø¯äfaX¼I  ¥ ‚8 +é… ‚ `Æ ‚`  +     ¸ƒ     + __SIM6502__runtime/decsp3.s +ca65 V2.15decsp3sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq€ñ ú  GPa±²@’ø¯äfaX¼I  ¥ ‚8 +é… ‚ `Æ ‚`  +     ¸ƒ     + __SIM6502__runtime/decsp4.s +ca65 V2.15decsp4sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq€ñ ú  GPa±²@’ø¯äfaX¼I  ¥ ‚8 +é… ‚ `Æ ‚`  +     ¸ƒ     + __SIM6502__runtime/decsp5.s +ca65 V2.15decsp5sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq€ñ ú  GPa±²@’ø¯äfaX¼I  ¥ ‚8 +é… ‚ `Æ ‚`  +     ¸ƒ     + __SIM6502__runtime/decsp6.s +ca65 V2.15decsp6sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq€ñ ú  GPa±²@’ø¯äfaXºI  ¥ ‚8 é… ‚   `Æ ‚`  +    + ¸ƒ     + __SIM6502__runtime/decsp7.s +ca65 V2.15decsp7sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq€ñ ú  GPa±²@’ø¯äfaX¼I  ¥ ‚8 +é… ‚ `Æ ‚`  +     ¸ƒ     + __SIM6502__runtime/decsp8.s +ca65 V2.15decsp8sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq=®µ ÀÃØmEÂF@’ø¯äfaXñ  + ‚  + __SIM6502__common/doesclrscr.s +ca65 V2.15_doesclrscrafterexitreturn0CODERODATABSSDATAZEROPAGENULLUzna` iü{ ›»VY bÕ7X8@’ø¯äfaXòfaXâ&1faX‹?q@Q?eVmVdVVK +ƒK… ‚ Ž/ +ƒ/†R ‚R (±+ ‚+Ù: +ƒ:Ð ˆ>ö a©9 H‚9‘ ‚È©B I‚B‘* ‚*  ¢;è  +ƒ< 5 +ƒ<5À-ÐOõOL +ƒ ©N¢[`)±d ‚dc +ƒcÈ^èA` , +ƒ,©0 +ƒ0 +ƒª` +A VBLY +‚YL +‚LU +‚ULL +‚LL + +‚ +L3 +‚3L +‚LZ +‚ZCD8 R+*d.9B.YUL +3Z ¸*ƒD6¸)ƒe¸&ƒG!¸%ƒZ¸$ƒ¸#ƒ3¸"ƒ  +¸!ƒ L¸ ƒU¸ƒ,¸ƒY ¸ƒK/0hhm\j/ - -hM[lHG?cB)(>P+8)&(6'EgE-DaOA3TA4eJ.i:g+Id4=5Fif75[@**2 U, 1 dT,@RKb. /Q`#JeSV0 ZRQ<SYX+C3 E __SIM6502__em/em-kernel.s +ca65 V2.15return0 em_librefptr1./home/hugg/compilers/cc65/asminc/em-kernel.incEMD_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALL PAGECOUNTMAPUSEMAPCLEANCOPYFROMCOPYTOEMD_API_VERSIONEM_COPYBUFOFFSPAGECOUNTUNUSED_em_drv emd_install emd_uninstall emd_pagecountemd_mapemd_use +emd_commit emd_copyfrom +emd_copyto em_clear_ptr_em_load_driver +_em_unload _em_install _em_uninstall _em_pagecount_em_map_em_use +_em_commit _em_copyfrom +_em_copyto-/home/hugg/compilers/cc65/asminc/em-error.inc EM_ERR_OKEM_ERR_NO_DRIVEREM_ERR_CANNOT_LOADEM_ERR_INV_DRIVEREM_ERR_NO_DEVICEEM_ERR_INSTALLED EM_ERR_COUNT emd_vectorsemd_sig@L0inv_drv@L1copyCODERODATABSSDATAZEROPAGENULLUzna` ix=µ¼ +ÆÉØ¡ø™Èš@’ø¯äfaX¯faXâ&./0123  +‚ +/ - h[cB)P(EDaOA:g+4if5*2 U, 1 dT@b. Q`JeV0 RSC3 4 __SIM6502__em/em_commit.s +ca65 V2.15./home/hugg/compilers/cc65/asminc/em-kernel.incEMD_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALL PAGECOUNTMAPUSEMAPCLEANCOPYFROMCOPYTOEMD_API_VERSIONEM_COPYBUFOFFSPAGECOUNTUNUSED_em_drv emd_install emd_uninstall emd_pagecountemd_mapemd_use +emd_commit emd_copyfrom +emd_copyto em_clear_ptr_em_load_driver +_em_unload _em_install _em_uninstall _em_pagecount_em_map_em_use +_em_commit _em_copyfrom +_em_copytoCODERODATABSSDATAZEROPAGENULLUzna` ix=µ¼ +ÆÉØ¡ú›Èœ@’ø¯äfaXˆfaXâ&./0123!,‚+/ - h[cB)P(EDaOA:g+4 +if5*2 U, 1 dT@b. Q`JeV0 RSC3 4 __SIM6502__em/em_copyfrom.s +ca65 V2.15./home/hugg/compilers/cc65/asminc/em-kernel.incEMD_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALL PAGECOUNTMAPUSEMAPCLEANCOPYFROMCOPYTOEMD_API_VERSIONEM_COPYBUFOFFSPAGECOUNTUNUSED_em_drv emd_install emd_uninstall emd_pagecountemd_mapemd_use +emd_commit emd_copyfrom +emd_copyto em_clear_ptr_em_load_driver +_em_unload _em_install _em_uninstall _em_pagecount_em_map_em_use +_em_commit _em_copyfrom +_em_copytoCODERODATABSSDATAZEROPAGENULLUzna` ix=µ¼ +ÆÉØ¡ø™Èš@’ø¯äfaX†faXâ&./0123"%-‚+/ - h[cB)P(EDaOA:g+4 +if5*2 U, 1 dT@b. Q`JeV0 RSC3 4 __SIM6502__em/em_copyto.s +ca65 V2.15./home/hugg/compilers/cc65/asminc/em-kernel.incEMD_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALL PAGECOUNTMAPUSEMAPCLEANCOPYFROMCOPYTOEMD_API_VERSIONEM_COPYBUFOFFSPAGECOUNTUNUSED_em_drv emd_install emd_uninstall emd_pagecountemd_mapemd_use +emd_commit emd_copyfrom +emd_copyto em_clear_ptr_em_load_driver +_em_unload _em_install _em_uninstall _em_pagecount_em_map_em_use +_em_commit _em_copyfrom +_em_copytoCODERODATABSSDATAZEROPAGENULLUzna` i$ô@Á ÌÏ|K'r Îs @’ø¯äfaX«faXâ&.faX‹6faX´EfaXܨ\ZE¬| +‚ |Ð``¬ +‚ ð<<©hhÐ I  ) +‚)©LL " +‚"  k +‚k: +ƒ:Žx +ƒxŠO0919©I HƒI¢ Iƒ  +‚HD­Q +ƒQ®( +ƒ(  +‚ hÐ\\­N +ƒN® +ƒ  +‚ªWð66H,­ +‚ ®> +‚ >  +‚ 7 +‚7h¢`;©YY¢`4]^_ + +‚c  + B  q`a +U T-cS?kQ&"PH)>t=!&f#7o|>¸$ƒZhm\j/ - U-PhK0][lHGcB)(&sP 92+<8J)&(O6'gE-DaGOtAbkA;n. i:g+I40x Fif75[@*N*12 U, a1 rdTV,I@vb. /H/:Q4`Je3VB0 R< FS+C3 b __SIM6502__ em/em_load.s +ca65 V2.15./home/hugg/compilers/cc65/asminc/em-kernel.incEMD_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALL PAGECOUNTMAPUSEMAPCLEANCOPYFROMCOPYTOEMD_API_VERSIONEM_COPYBUFOFFSPAGECOUNTUNUSED_em_drv emd_install emd_uninstall emd_pagecountemd_mapemd_use +emd_commit emd_copyfrom +emd_copyto em_clear_ptr_em_load_driver +_em_unload _em_install _em_uninstall _em_pagecount_em_map_em_use +_em_commit _em_copyfrom +_em_copyto-/home/hugg/compilers/cc65/asminc/em-error.inc EM_ERR_OKEM_ERR_NO_DRIVEREM_ERR_CANNOT_LOADEM_ERR_INV_DRIVEREM_ERR_NO_DEVICEEM_ERR_INSTALLED EM_ERR_COUNT,/home/hugg/compilers/cc65/asminc/modload.incMOD_CTRLREAD +CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_READ MLOAD_ERR_HDR MLOAD_ERR_OS MLOAD_ERR_FMT MLOAD_ERR_MEM*/home/hugg/compilers/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCLpushaxpusha0incsp2_open_read_closectrl@L0@L1@L4@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` ix=µ¼ +ÆÉØ¡õ–È—@’ø¯äfaXÏfaXâ&./0123')‚+/ - h[cB)P(EDaOA :g+4if5*2 U, 1 dT@b. Q`JeV0 RSC3 4 __SIM6502__ em/em_map.s +ca65 V2.15./home/hugg/compilers/cc65/asminc/em-kernel.incEMD_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALL PAGECOUNTMAPUSEMAPCLEANCOPYFROMCOPYTOEMD_API_VERSIONEM_COPYBUFOFFSPAGECOUNTUNUSED_em_drv emd_install emd_uninstall emd_pagecountemd_mapemd_use +emd_commit emd_copyfrom +emd_copyto em_clear_ptr_em_load_driver +_em_unload _em_install _em_uninstall _em_pagecount_em_map_em_use +_em_commit _em_copyfrom +_em_copytoCODERODATABSSDATAZEROPAGENULLUzna` ix=µ¼ +ÆÉØ¡ûœÈ@’ø¯äfaXfaXâ&./0123!(‚+/ - h[cB)P(EDaOA:g+4 +if5*2 U, 1 dT@b. Q`JeV0 RSC3 4 __SIM6502__em/em_pagecount.s +ca65 V2.15./home/hugg/compilers/cc65/asminc/em-kernel.incEMD_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALL PAGECOUNTMAPUSEMAPCLEANCOPYFROMCOPYTOEMD_API_VERSIONEM_COPYBUFOFFSPAGECOUNTUNUSED_em_drv emd_install emd_uninstall emd_pagecountemd_mapemd_use +emd_commit emd_copyfrom +emd_copyto em_clear_ptr_em_load_driver +_em_unload _em_install _em_uninstall _em_pagecount_em_map_em_use +_em_commit _em_copyfrom +_em_copytoCODERODATABSSDATAZEROPAGENULLUzna` i†©/K VY}Öe;X<@’ø¯äfaXîfaXâ&.faX‹6faX´rF­7 +‚7 ! +‚!ð  +‚­ +‚® +‚  , +‚,L +‚ª©$`GHIJK>E, A7! (¸%ƒL/ - hKcB)(P2+<J)&('E-DaGOA:g+40if5**12 U, 1 dTI@b. H/Q4`Je3VB0 RFSC3 L __SIM6502__em/em_unload.s +ca65 V2.15 em_clear_ptr./home/hugg/compilers/cc65/asminc/em-kernel.incEMD_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALL PAGECOUNTMAPUSEMAPCLEANCOPYFROMCOPYTOEMD_API_VERSIONEM_COPYBUFOFFSPAGECOUNTUNUSED_em_drv emd_install emd_uninstall emd_pagecountemd_mapemd_use +emd_commit emd_copyfrom +emd_copyto_em_load_driver +_em_unload _em_install _em_uninstall _em_pagecount_em_map_em_use +_em_commit _em_copyfrom +_em_copyto-/home/hugg/compilers/cc65/asminc/em-error.inc EM_ERR_OKEM_ERR_NO_DRIVEREM_ERR_CANNOT_LOADEM_ERR_INV_DRIVEREM_ERR_NO_DEVICEEM_ERR_INSTALLED EM_ERR_COUNT,/home/hugg/compilers/cc65/asminc/modload.incMOD_CTRLREAD +CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_READ MLOAD_ERR_HDR MLOAD_ERR_OS MLOAD_ERR_FMT MLOAD_ERR_MEM no_driverCODERODATABSSDATAZEROPAGENULLUzna` ix=µ¼ +ÆÉØ¡õ–È—@’ø¯äfaXõfaXâ&./0123(*‚+/ - h[cB)P(EDaOA:g+4if5*2 U, 1 dT@b. Q`JeV0 RSC3 4 __SIM6502__ em/em_use.s +ca65 V2.15./home/hugg/compilers/cc65/asminc/em-kernel.incEMD_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALL PAGECOUNTMAPUSEMAPCLEANCOPYFROMCOPYTOEMD_API_VERSIONEM_COPYBUFOFFSPAGECOUNTUNUSED_em_drv emd_install emd_uninstall emd_pagecountemd_mapemd_use +emd_commit emd_copyfrom +emd_copyto em_clear_ptr_em_load_driver +_em_unload _em_install _em_uninstall _em_pagecount_em_map_em_use +_em_commit _em_copyfrom +_em_copytoCODERODATABSSDATAZEROPAGENULLUzna` iq…ö + =L^ª«@’ø¯äfaXÚN ˜ +¤ ‚ÐÆ ‚ Æ ‚  ‘ ‚`  +    ¸ƒ +    + __SIM6502__runtime/enter.s +ca65 V2.15entersp.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` iq]Î Û.  8D~ Ã@’ø¯äfaXñ& +©¢  +‚L +‚ ¸ƒ +¸ƒ ¸ƒ    __SIM6502__ runtime/eq.s +ca65 V2.15toseq00toseqa0toseqaxtosicmpbooleqsptmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixC»¼ ÇʈRF˜É™@’ø¯äfaX¾faX€  ! "#$%¸ƒ + + "  & __SIM6502__common/errno.s +ca65 V2.15*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz–  nŽ [é +ê +@’ø¯äü‹\»faXÈ'_(ôá +ƒ- +ƒ& +ƒ +ƒË +ƒ# +ƒ·1 +ƒqA +ƒï +ƒY> +ƒH8 +ƒj +ƒ`( +ƒ‰ +ƒ@C +ƒ;= +ƒT' +ƒ +ƒÝ? +ƒ¡%No such file or d@i@r@e@c@t@o@r@y@@Function not impl4e4m4e4n4t4e4d44N6o6 6s6p6a6c6e6 6l6e6f6t6 6o6n6 deviceD;e;v;i;c;e; ;o;r; ;r;e;s;o;u;r;ce busyI7n7t7e7r7r7u7p7t7e7d7 7s7y7s7t7em callU,n,k,n,o,w,n, ,O,S, ,e,r,r,o,r, codeToo many open filesP"e"r"m"i"s"s"i"o"n" "d"e"n"i"e"dGGExec format error  I n v a l i d   a r g u m e n t BBEaEdE EfEiElEeE EnEuEmEbEeErEEN.o. .s.u.c.h. .d.e.v.i.c.e..O +u +t +  +o +f +  +m +e +m +o +r +y + +U$n$k$n$o$w$n$ $e$r$r$o$r$$Illegal seekF3i3l3e3 3e3x3i3s3t3s33Range errorI9/9O9 9e9r9r9o9r99Try again)*+,¸ƒ+IU -P0MHG?")>&9C8LO6E3T1A4;J$.!I= 5 +F%7@N*(,2RK/: #'BSDQ<+- __SIM6502__../libwrk/sim6502/errormsg.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac __sys_errlist.sizeL0001L0003L0005L0007L0009L000BL000DL000FL0011L0013L0015L0017L0019L001BL001DL001FL0021L0023L0025CODERODATABSSDATAZEROPAGENULLUzna` iqL½¾ ËÎÞeCÍD@’ø¯äfaX€  +  €  __SIM6502__sim6502/exehdr.s +ca65 V2.15 +__EXEHDR__.sizeCODERODATABSSDATAZEROPAGENULLEXEHDRUzna` iÓRi ux#›Ûvww@’ø¯äfaXÍfaX€ "faXÔœ/"… ‚† ‚ 3±- ‚-)Ð ©  +‚ ©ÿ4ª`"©  ‘$ ‚$ *± ‚¢L1 +‚101234 # -$1¸ƒ": -") 1$.! + +"% * ,2/ #5 __SIM6502__common/fclose.s +ca65 V2.15_fclose_closeptr1*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX*/home/hugg/compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags +f_pushback_FCLOSED_FOPEN_FEOF_FERROR +_FPUSHBACK __filetab@L1CODERODATABSSDATAZEROPAGENULLUzna` kz›2G SVÄ(U)@’ø¯äü‹\ÆfaXÈd>3  +‚¥ ‚¦ ‚  +‚ % +‚%…" ‚"† ‚ ‚ð## ± ‚ ‘$ ‚$©È‘ ‚L& +ƒ*&©  +‚¥ ‚¦ ‚ H  ± ‚… ‚ ȱ ‚… ‚ hL +‚  % + "$ ¸ƒ>' -0")&86314;$.! 5 +%7*(,2/: #'+ __SIM6502__../libwrk/sim6502/fdopen.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fdopen +__seterrno__fdescpushaxL0003L000B.sizeincsp6CODERODATABSSDATAZEROPAGENULLUzna` kzÉCF‰ –™}<R˜S@’ø¯äü‹\Ï faXÈ’"Œh > +‚> 8¢ & +‚&  +‚ C±= ‚=)%ð±? ‚?)#ð--¢ÿŠ@L4 +ƒ|4± ‚)3ðKK±6 ‚6)÷‘$ ‚$È;¢± ‚L7 +ƒ|7ˆ± ‚ * +‚*© . +‚.  +‚¢©<  +‚ àHÐ((Éð  L1 +ƒv1àÿÐBBÉÿÐEE ±, ‚,  ‘ + ‚ +Š'L" +ƒ|" :± ‚ ‘2 ‚2ÊŠLG +ƒ|G 9±D ‚D¢H 5± ‚…J ‚JÈI±F ‚F…0 ‚0hL +‚ #$%&' !A A.A*AA&A> + =?6$, +2J0+DF¸ƒŒ!)L\U -P0M]HG?")>&W9C8LO6E3T1A4;J$.!I= 5 +F%7_[@N*(V,2RK/: #'`BSDZQ<YX+( __SIM6502__../libwrk/sim6502/fgetc.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fgetc_readpushaxregswap2decsp1L0025L0027.sizeL0016L000Cpusha0leaa0spL0023L001DL0021incsp3CODERODATABSSDATAZEROPAGENULLUzna` kzüvE» ÇÊ—a:›Éœ@’ø¯äü‹\ˆfaXÈÅ4$  +‚  +‚   +‚  +‚    +‚  +‚   +‚  +‚¢ÿ † ‚ +† ‚ +Š  +‚ð¢ŠL +‚¢ÿŠ L +‚ !"#$  ¸ƒ4 + -")&1$.!  +%*(,2/ #'+% __SIM6502__../libwrk/sim6502/fgetpos.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fgetpos_ftellpushaxpushw0spldaxysp +steaxspidxldax0spldeaxipusheaxtosneeaxL0005incsp4.sizeCODERODATABSSDATAZEROPAGENULLUzna` kztîlZ gjáKoºi»@’ø¯äü‹\°faXÈ=(³ˆ L +‚L  ¢5  +‚¥W ‚ W¦R ‚ R 3 +‚3  S +‚S…0 ‚ 0†> ‚ >  +‚ T±F ‚ FÈE ‚ EÐ_ +_©I  +‚ ¢1LP +ƒœP¢ +Š) J ' +‚'L+ +ƒ…+¥; ‚ ;¦ ‚   ? +‚ +?  +‚àÿÐQQÉÿ,Ð\\ 9± ‚ )ÐCCÈ*±V ‚ VÈY ‚ YÐ"5"©=¨‘ ‚ è7L. +ƒœ. O± ‚ ‘ ‚  æD ‚ DÐæ ‚  [¢N©X ( +‚( ±H ‚ HÉ +ð^^¢]©Z B  +‚† ‚  2 ‚ 2Ð@©@©U¨G‘% ‚ %  M 8 +‚8H-† ‚  #¢±4 ‚ 4• ‚ ˆ&Ê ø¦/ ‚ /h  !L6 +‚6)*+,-'$6%$$$($$'$$S8$$L3K:?  2/< WR0>;  D%<FEVYH4¸ƒ³A`hm\jU -P0M]lHG?")o>&sfW9C8LO6pEgtbk3T1A4;eJn$.^!iqId= 5 +F%7_[@N*(aV,2cRK/: #'`BSDZQ<YX+. __SIM6502__../libwrk/sim6502/fgets.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fgetc_fgets +__seterrnopushaxregswap2ldaxyspdecsp4L0004L0002.sizestaxyspL002BL000Bstax0spL001EL002AL000CL0022addeqyspsubeqyspL0029addyspCODERODATABSSDATAZEROPAGENULLUzna` ifåÿONQªû +P@’ø¯äfaXØ faXÔfaX€ /6D9… ‚† ‚ ±& ‚&)55`I E +ƒEð,,± ‚)FùF‘* ‚*`4  +ƒð++±C ‚C)  ¢#`; D +ƒDð%%±Q ‚Q)11¢`  +ƒð   .±( ‚(¢>`© P +‚P©ÿ=ªK`"789:;P +(QC*& 06‚6)¸ƒ/2)¸ƒ# )¸ƒ :)¸ƒ J)U U-P0]HG?">& 9L3T1; J$.! I=F%[@,2RK/: # S +Q<"< __SIM6502__common/fmisc.s +ca65 V2.15 _clearerr_feof_ferror_fileno_fflushreturn0ptr1*/home/hugg/compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags +f_pushback_FCLOSED_FOPEN_FEOF_FERROR +_FPUSHBACK __filetab*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXgetferr@L1errorCODERODATABSSDATAZEROPAGENULLUzna` ix™* 69Ó p|8}@’ø¯äfaX¾ faX€ b&  +‚  +‚É'Ð" "àЩ + + & +‚&ª` L +‚'()*+ &¸ƒ* 0")&1.! + +" (  ', __SIM6502__common/fopen.s +ca65 V2.15_fopen__fopen__fdescpushaxreturn0*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix ƒ%¨ ´·—N» ¶ +@’ø¯äfaXï +faX¼Ð+$Œ +ƒ  +‚­ +ƒe ‚… ‚¦ ‚è† ‚ ± ‚ ‘ ‚ ˆ +ù +¥ ‚¦ ‚  +‚¬ +ƒL +‚ +     ¸ƒ-?) C6E34;$.5*(,2:D+ __SIM6502__common/fprintf.s +ca65 V2.15_fprintfaddyspdecsp4 _vfprintfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz¼6:p |ûz$ž~Ÿ@’ø¯äü‹\½ faXÈ…W@ + +‚+ '¢  +‚ ±/ ‚/)*ð+± ‚),Ð%ˆ ± + ‚ + - +‚-©$  +‚ # +‚#¢1©%  +‚àÐ((Éð &± ‚ ‘ ‚¢ÿŠ!L +ƒG   ±) ‚)H 0± ‚… ‚ ȱ" ‚"… ‚h.L +‚  !"# -+#/ + )"¸ƒW2 -0?")>&9C86E31A4;$.!= 5 +F%7@*(,2/: #'B<+$ __SIM6502__../libwrk/sim6502/fputc.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fputc_writepushaxregswap2L000Bpusha0leaa0spL0017L000C.sizeL0002incsp4CODERODATABSSDATAZEROPAGENULLUzna` kzdÞB  ,/Îý/,.-@’ø¯äü‹\ÇfaXÈ-D2  +‚  ¢  +‚ &±# ‚#)ð±$ ‚$)ð¢ÿŠ%L +ƒ4ˆ± ‚ ( +‚(   +‚  ! +‚!  +‚  +‚H  ± ‚ … ‚È ± ‚ … + ‚ +h L" +‚" !"#$ +"!(  #$ +¸ƒD) -0")&986314$.!= 5 +%7*(,2/: #'<+% __SIM6502__../libwrk/sim6502/fputs.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fputs_strlen_writepushaxregswap2L0011L0003.sizeL0002pusha0pushwyspldaxyspincsp4CODERODATABSSDATAZEROPAGENULLUzna` i† “`ó ?BÒ +Ó +@’ø¯äfaX¼+faX€ ,faXÔ8faX¼ÍHÓ¨¤M ‚MŒc +ƒc¤ ‚Œ +ƒ…› ‚›†r ‚r ±F ‚F)ssðBB±d ‚d)++ð' '©[[  +‚ªLh +ƒÆhª±2 ‚2)__ð± ‚)R÷R‘L ‚Lè~Ž- +ƒ-  ±– ‚– } +‚ }  E  +‚ ’ g +‚g    +‚ N +‚NÉ=Ð| |àUÐH H O +‚ +O  +‚L> +ƒÆ>¬ +ƒð1,1H<  ±€ ‚€…“ ‚“…i$‘, ‚,ȃ± ‚…A ‚Ai”‘ ‚ ± ‚ ‘ ‚h8˜mé˜a°ffÊ™ÉЕ•à*ð## ( +‚ (àÿÐppÉÿ8Ðv vèD©KK ] + ‚ +‘Œ ‚ŒŠCðtt)…m)$ +ƒ)$99èoÉ/ÐJJà†Ðww©Ðyäy @ +‚ @ G e +‚e 3 +‚3¬ +ƒ„P ‚P¬% +ƒ%„Y ‚YLS +‚ SIJ T „KLM9Ž‡i7€,7“Ax3 xN .g \ +\e ISIO @ }^(¸ƒÓzZœÇ\jˆ½|ŠU© P0]‚‡HG?žo>“&yÕ–É9š°•8}L¶pEÆ  ±tbkÀ3«¦T1Äe ·§J$^iÈ +IËÓdÍÊ= ¨ +F"%7Å‘[@  ²Ÿ,2¬¡¹¾cRKz ~Ô¸ ª'‰DZ{”Q’+N __SIM6502__common/fread.s +ca65 V2.15_fread_readpusha0pushaxincsp4incsp6ldaxyspldax0sppushwysp tosumulax tosudivaxptr1sp*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX*/home/hugg/compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags +f_pushback_FCLOSED_FOPEN_FEOF_FERROR +_FPUSHBACK __filetab,/home/hugg/compilers/cc65/asminc/generic.macregbankfilesave@L1@L2@L99@L3pb@L4@L6@L5@L8@L7@L9@L10CODERODATABSSDATAZEROPAGENULLUzna` i€Ó +S k Š  ’½OŒ P@’ø¯äfaX®ƒ +faXðfaX¼œ +&Ó¥…% ‚%†† ‚†! ‚!У£`Mƶ ‚¶ ÿ:±‡ ‚‡ª†ˆ÷±¡ ‚¡† ‚…" ‚" ž±ë ‚ë…° ‚°ˆb±È ‚È…‰ ‚‰(e  ‚ ¨€¥ ‚ec ‚cÌ$ +‚$ÐeÍx +‚xÐ.`.¥` ‚`Ø +‚Ø¥Ë ‚Ë +‚­ +‚ …I ‚I Ü +‚ÜðB­j +‚j…û ‚û ±] ‚](e  ‚ ª“È#± + ‚ +eî ‚îÍ +‚Ðê+êì• +‚•Ðp&p¥„ ‚„3 +‚3¥ÿ ‚ÿF +‚F D±C ‚C…r ‚r +‚ˆá±- ‚-…¸ ‚¸W +‚W À +‚ÀÐo +‚ov +‚v`n©‹ˆE‘Y ‚Yˆ±‘< ‚<`³­ò +‚ò…f ‚f­6 +‚6…¿ ‚¿B ‚BЯ¯ µÈ‘ª ‚ªÀ¨ÐŒùŒ¥¼ ‚¼¦Ù ‚ÙX +‚XŽÌ +‚Ìs +‚sŽ7 +‚7`©{…g ‚g…í ‚í É¦ú ‚ú¥ ‚ÅS ‚SÐwwäÔ ‚Ô𥥰*%*† ‚…› ‚›ˆe±é ‚骹ȱ§ ‚§†Á ‚Á…R ‚RK ‚KÐá‘š ‚šˆ–‘ ‚¥ ‚™ +‚™¥¦ ‚¦^ +‚^L +ƒr¥T ‚T}(e}  ‚} ªˆ¥˜ ‚˜eø ‚øä; ‚;Ð[@[ÅL ‚LÐ< ö¥’ ‚’è(qè8 ‚è8‘´ ‚´È€¥~ ‚~q_ ‚_‘‚ ‚‚ÈV±© ‚©‘… ‚……Ñ ‚ÑȬ±ñ ‚ñ‘P ‚P…? ‚?õ ‚õðl lÈý¥ì ‚ì‘… ‚…ÈÚ¥Û ‚Û‘ƒ ‚ƒL +ƒZ¥ù ‚ùÇ +‚Ç¥ç ‚ç +‚LÄ +ƒZĠХd ‚d‘q ‚qÈ¥ó ‚ó‘× ‚×ÈO¥a ‚a‘Õ ‚ÕÈ'¥Ÿ ‚Ÿ‘1 ‚1¥u ‚uy ‚yÐÓӠ䑲 ‚²È»‘t ‚t¥U ‚U¤ +‚¤¥ ‚Å +‚Å`A ˆ±º ‚ºÝ(eÝ  ‚Ý ª Èð± ‚e® ‚®ä/ ‚/Ðæ;æÅi ‚iÐG7Gˆ± ‚ Ž(qŽ8 ‚Ž8‘ ‚ È)±J ‚Jq· ‚·‘0 ‚0Èm±| ‚|‘‡ ‚‡… ‚È‚±‰ ‚‰‘> ‚>…ƒ ‚ƒô ‚ôð, ,ÈZ¥ü ‚ü‘ï ‚ïÈ‘¥9 ‚9‘Ê ‚Ê`h¥œ ‚œŠ +‚Š¥ ‚þ +‚þ`¢È¥­ ‚­‘à ‚àÈ ¥Ã ‚Ñ„ ‚„ÈϥΠ‚Α— ‚—È=¥N ‚N‘@ ‚@`Æ'()*+k ÜjWÀs7™^ÇŠþ”ovò6X̤ÅÖ$xØ•3F2gí›uyºÝ® J0‡>ü9œà„ÎN2f¿Búé§ÁRK;Lè_©ñdóÕ127%†!¶‡¡"ëÈ`Ër¸Y<ª¼ÙSÔš¦T˜´‚…PìÛùçq×aŸ²tU/iŽ·|‰­Ã—@2°‰cIû] +î„ÿC-}ø’~Ñ?õ…ƒƒôïʸ ƒ”H+.¸ƒ%+Š×œhŠÌmá\jáˆ|Òß…êƒùŨ‚ÒÔ¬µ¢ÞM]‡lH³âÊ?òžo×åµ>“! ³úWö³–ï˜Ê¢š™°•Ú}ãÖøO—° ÕÆðʼn °±ö÷„äƒt±bkªÏŸÀüÙ€#’髦Ž«›²Ãº§Çn»‰¿êñ‚£i©„ð˜IëÏd¯¬ìàœÇùþ†"Þ•óâÝÍ€‹_´[„NÆÉãÓ«Šª‹Õ£a²Á´€¨VäŸÑЮ¾¡¡ÔwŽ¤È™¡cÂûv±ï”“©Œ¼È² ®u¯™š~ѹΌÀØ¢ÿÐŒ`—Á‰øÓŽž­ñ‘ýZô Ã÷–ƒ”ßí›’‹YXòî, __SIM6502__ common/free.s +ca65 V2.15ptr1ptr2ptr3ptr4_freeheapadd*/home/hugg/compilers/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast,/home/hugg/compilers/cc65/asminc/generic.mac@L1@L3@L9@L8SearchFreeList@L2@LoopCheckRightMergeCheckLeftMerge2 NoRightMergeCheckLeftMerge NoLeftMergeCODERODATABSSDATAZEROPAGENULLUzna` kzXÒ@ !Óô0$ %@’ø¯äü‹\› faXÈ!K4  +‚  +‚… ‚†( ‚( $± ‚)Ð% +%©  +‚¢ L& +‚&  +‚… ‚† ‚ )± ‚¢  +‚à€"¢Š L +‚   +‚    +‚    + +‚ + # +‚#L +‚ !"#  +&#!  (¸ƒK'* -0")>&986314;$.!= 5 +%7*(,2/: #'+$ __SIM6502__../libwrk/sim6502/freopen.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_freopen_close +__seterrno__fopenpushaxldax0spL0011incsp6.sizeL0009pushwyspldaxyspCODERODATABSSDATAZEROPAGENULLUzna` ix ƒ%¨ ´·—N¸¶@’ø¯äfaXÅ +faX¼Ð+$Œ +ƒ  +‚­ +ƒe ‚… ‚¦ ‚  è † ‚ ± ‚‘ ‚ˆù¥ ‚¦ ‚  +‚¬ +ƒL +‚ +    + +¸ƒ P0G?>& 98O6A45F7@K:'BQ __SIM6502__common/fscanf.s +ca65 V2.15_fscanfaddyspdecsp4_vfscanfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz~ønf sv_Õi>u?@’ø¯äü‹\€ faXÈG&` 5 +‚ +5 ¢#  +‚  > +‚> :±" ‚ ") Ð;;©  * +‚ *L +ƒm±< ‚ <)0ð   /±E ‚EÈ2 ‚Ð! !ª8… ‚… ‚©3È  +‚ '± ‚  + +‚+    +‚ 9 +‚9   C +‚C % +‚ %  +‚  +‚ ¥- ‚-0  =± ‚ )õ@‘ ‚ ¢)L + +ƒo + ±$ ‚ $ ‘7 ‚ 7¢ÿŠH.  +± ‚…B ‚ BÈ6±? ‚?… ‚ hÈ1L +‚'()*+%A"A !A ACA9AA+AA>AA54%*( "<$7B(-(E?¸ƒ,&FU -P0MHG?")>&W9C8LO6E3T1A4;J$.!I= 5 +F%7@N*(V,2RK/: #'BSDZQ<Y+, __SIM6502__../libwrk/sim6502/fseek.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fseek +__seterrno_lseekpushaxregswap2decsp4L0022L0026.sizeL000A lsubeqysppusha0ldeaxysppusheaxldaxyspsteax0spldeax0spL0016L0027addyspCODERODATABSSDATAZEROPAGENULLUzna` kz›+@ LO`¯ÇNÈ@’ø¯äü‹\÷faXÈd  +‚    +‚  +  +‚  +‚  +‚¢ ©  +‚L +‚ ¸ƒ  "&$!  + #'! __SIM6502__../libwrk/sim6502/fsetpos.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fsetpos_fseekpushaxpushwyspldaxyspldeaxipusheaxincsp4.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzõojÙ åè\]ç^@’ø¯äü‹\‘ +faXȾ$gL , +‚ +, ¢  +‚  4 +‚4 0± ‚ ) Ð11© # +‚ #¢ÿ †2 ‚2†( ‚(Š +L' +ƒW'ˆ7±) ‚ )  +‚  +‚ . +‚ .  +‚  +‚ * +‚*¢† ‚† ‚ © $ +‚$ð  ±/ ‚ /)ð66¢˜   +‚ & +‚&H 3± ‚…5 ‚ 5ȱ" ‚"… ‚ hL +‚%&'()#" $*&4,+.#!)/5!2( !"¸ƒg%8 -0HG?")>&9C8L6E31A4;$.!I= 5 +F%7@*(,2K/: #'BD<+* __SIM6502__../libwrk/sim6502/ftell.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_ftell +__seterrno_lseekpushaxregswap2decsp4L0003L0002.sizepusha0pushl0steax0spldeax0sppusheaxtosgeeaxL000F lsubeq0spincsp6CODERODATABSSDATAZEROPAGENULLUzna` i.­J÷ æì.@’ø¯äfaX²faX€ *faXÔó;{[K +ƒK… ‚ Ž2 +ƒ2† ‚ ±U ‚U)..Ð; ;© @ +‚@ª`LG +‚G± ‚ )((ÐHñH ±< ‚<¢  +‚  * ^ +‚^ ) Y +‚Y   [ +‚[  +‚à4Ð--ÉOÐ +  ] +‚]  +NLZ +‚Z  +‚ àÿ>ÐÉÿÐ//­M +ƒM…5 ‚5­+ +ƒ+… ‚  ± ‚ 00‘ ‚Ð&¥& 3 +‚3 E  +‚ % +‚%LS +‚S< += >?@ +?@ U <5 ,% , +^Y []ZGS38¸ƒ{=7ah\j P0]")sfW9C8}L6Eg tk1A;e J$^i +qId +"%7[ * r,2wcRK u~#BSDQ<+A __SIM6502__common/fwrite.s +ca65 V2.15_fwrite_writepushaxincsp6addyspldaxysppushwyspreturn0 tosumulax tosudivaxptr1*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX*/home/hugg/compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags +f_pushback_FCLOSED_FOPEN_FEOF_FERROR +_FPUSHBACK __filetabfile@L2@L1@L3@L4CODERODATABSSDATAZEROPAGENULLUzna` iq]Î Û.  3?vµ ¶@’ø¯äfaXØ& + +©¢  +‚L +‚   ¸ƒ ¸ƒ¸ƒ +    __SIM6502__ runtime/ge.s +ca65 V2.15tosge00tosgea0tosgeaxtosicmpboolge.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzaÛé õø=5ñ&÷'@’ø¯äü‹\ÎfaXÈ* ­ +‚ ® +‚L +‚ ¸ƒ    +  __SIM6502__../libwrk/sim6502/getchar.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stdin_fgetc_getchar.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq­9 EHj²šLGM@’ø¯äfaXöv… ‚† ‚  +‚ L +‚¦ ‚ ˜8e ‚è` +     ¸ƒ )&  $.  +%*(,' __SIM6502__common/getenv.s +ca65 V2.15_getenv __environ +__envcount searchenvreturn0ptr1ptr3tmp1found.size@L9CODERODATABSSDATAZEROPAGENULLUzna` kz; µ ÷¬w#&Áçþå%æ@’ø¯äü‹\¬%faXÈ  ?›“ w +‚ +w¥ï ‚ï¦L ‚L ó +‚ +ó­^ +ƒ^…¥ ‚¥­- +ƒ-…+ ‚+ ’±~ ‚~ÐÒwÒ­X +ƒX %ѳ ‚³­[ +ƒ[Èñû ‚ûpÑÑI€ð0t@t­ +ƒ®¿ +ƒ¿ H +‚ Hƒ ‚qõ ‚õH±Š È&qˆ ‚ˆª¯hì ¹ +‚¹l +ƒlŽÐ +ƒÐ…˜ ‚˜†{ ‚{ C±a ‚aÉ-Ћ‹î +ƒÐmmî* +ƒ*­ + +ƒ +…‚ ‚‚­6 +ƒ6…\ ‚\± ‚м¼¢ÿ=ŠkLÙ +ƒ Ù­Õ +ƒÕ…Ì ‚Ì­ +ƒ…< ‚<±Ö ‚ÖÉ-öÐîV +ƒVÐÚÚî +ƒ ¢ÿpŠøL' +ƒ '­ +ƒ®j +ƒj… ‚†£ ‚£ ) +‚) +ƒŽñ +ƒñ± ‚® +ƒ®Œë +ƒë ¦ s +‚s­1 +ƒ1®ý +ƒý ° +‚ °…€ ‚€†8 ‚8 ù +‚ùðR`R­A +ƒA…Ä ‚Ä­ÿ +ƒÿ…O ‚O N±x ‚xÐœœîã +ƒãÐ33îÀ +ƒÀ c Å +‚Å # +‚#­ò +‚ò®× +‚× ² +‚ ²©r Hƒ"r¢} Iƒ"} ¢ +‚ +¢­ +‚®è +‚è q +‚ q­Ã +ƒÃ®» +ƒ» ¾ +‚ +¾­š +‚š®Q +‚Q d +‚ d© +º I +‚I­½ +‚½®Ï +‚Ï Z +‚ Z¢|©?ßLÉ +ƒ Éæ– ‚–Ч§æg ‚g ±Í ‚ÍÉ:?ð‡‡˜ÞÁ +ƒÁo +ƒo­z +ƒz…¬ ‚¬­_ +ƒ_… ‚±Œ ‚ŒðE„E„LE +ƒE LŸ +ƒýŸ­” +ƒ”… ‚­™ +ƒ™…f ‚f±ç ‚çðžž­µ +ƒµ +ƒ­— +ƒ—Ý +ƒÝL@ +ƒó@  : ä +‚äî; +ƒ;Л›î +ƒ­2 +ƒ2® +ƒ ª +‚ªðÛÛ“R“© Hƒ!• +ƒ•©/ Iƒ!/¨ +ƒ¨ Ç G +‚G  +‚­y +‚y®­ +‚­ Ô +‚ Ô©! Hƒ!¢W IƒW ‘ +‚ +‘­( +‚(®Š +‚Š „ +‚ „­… +ƒ…®Ü +ƒÜ Æ +‚ +Æ­0 +‚0®h +‚h ` +‚ `© +å J +‚J­M +‚M® +‚  +‚ ¢Ó©?Lê +ƒ ê­æ +ƒæ® +ƒ K +‚ K« eqË ‚ËHŽŠîÈ…q ‚ªþh ¸ +‚¸í +ƒíŽ. +ƒ.© Hƒ!7 +ƒ7©ú Iƒ!úF +ƒFî +ƒ Ð÷÷î· +ƒ·­ +ƒ®n +ƒnH] ±€ ‚€…> ‚>È´±S ‚S…v ‚vhULô +‚ô;@77:‰ ‰o‰p‰t‰i‰o‰n‰ ‰r‰e‰q‰u‰i‰r‰e‰s4 4a4n4 4a4r4g4u4m4e4n4t4 4-4-4 ââ:© ©i©l©l©e©g©a©l© ©o©p©t©i©o©n© 9-9-9 99A††$$Bá" +ƒ! CD>Âô;ª3ÂIJ2Â#1ÂÅG.Âù-Âsä,Â)'¹¸&ÂHK"Âw󢾑ưʲqÔ„YdZ`¡ò×èšQ½Ïy­(Š0hM ¥+~˜{a‚\Ì<ÖÄOx¬Œfç¤ ïL€8–gÍ>v¤£¤³ûõˆË€S¸ƒ›Ti¸ƒ D®ë1ýû…Ün¸ƒ ¸ƒÎPX[¿V ãÀ;2æ ·¸ƒØbÁoÝí.†—à̉ÇÒÜhm‘\jˆ½|ú…ƒŠUÚæ© -Pÿê¢0M]‚í‡lHGŒâóÛž")oŽ“&ÖØys™¿Õ– fÉåW³÷€Cøš™°•›8}ëL¶Op–EÆõg ±‚μô„tbk•Ã€«¦ŽTœA›çÄe·§Jù˜ün$ïð.À^!îiÈ„‡qìIßËáºÓdٜͯxÐÊ= ¨† +F»ã%ÝÅè‹_‘[¥NšÑ(“Ša²­r´®VŸÂ¡¬—¡òä ¹ƒw¾µcRKûévz¤/u~ÞñÔÁ¸ #×öþϪ'ýŒ`‹…BS‰£DžZ{’”Q<ˆ˜’”YX†E __SIM6502__../libwrk/sim6502/getopt.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stderr_fputc_fputs_strchr_optarg_optind_opterr_optopt_getopt.sizeL004EL002AL0048L005EL0004L0005pushaxL0012L0064L0067aslax1ldaxiL000EL0009L0003L0015incax1pushwyspbnegaxL0018L0022ldaxysppushwpusha0L0037L0035L003EL006BL003FL0059L0046tosicmpL0066L0044incsp8CODERODATABSSDATAZEROPAGENULLUzna` kzïi_È ÕØ}UIž×Ÿ@’ø¯äü‹\Ó faXȸ$o 9 +‚9¥ ‚ +¦% ‚ +%  +‚ C > +‚>…$ ‚ +$† ‚ + ? +‚? " +‚"­, +‚,® +‚ @ +‚@ 4  +‚àÿ3ÐK)KÉÿ6Ð%©#¨<‘ ‚ +­ +‚…7 ‚ 7­ +‚… ‚ È)± ‚ è-)ðŠ=L +ƒ ±H ‚ Hˆ' ‚ ð . L1 +ƒz1 ±B ‚ BÉ +ÐEE©¨+‘ ‚ + L + +ƒz +±& ‚ & !‘; ‚ +;æ ‚ +Ðæ2 ‚ +2¢© G +‚GL: +ƒ: D  +‚H 5± ‚ …J ‚ +JÈI±F ‚ F…0 ‚ +0hL +‚ %&'() #A "AGAA"A?A>A9@(, 7* %$ ;2J0*HB&F¸ƒ/8L\U -P0M]HG?")>&W9C8LO6E3T1A4;J$.!I= 5 +F%7_[@N*(V,2RK/: #'`BSDZQ<YX+* __SIM6502__../libwrk/sim6502/gets.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stdin_fgetc_getspushaxldaxyspdecsp2push0L0005.sizestaxyspL0018L0026L0002L0006L001AL0022addeq0spincsp8CODERODATABSSDATAZEROPAGENULLUzna` iq]Î Û.  8Dvº »@’ø¯äfaXÜ& + +©¢  +‚L +‚   ¸ƒ +¸ƒ ¸ƒ    __SIM6502__ runtime/gt.s +ca65 V2.15tosgt00tosgta0tosgtaxtosicmpboolgt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq#”©ÆÉ¡jzäÈå@’ø¯äfaXêì .(¢… ‚† ‚  ± ‚ª +æ ‚ Ðæ ‚± ‚æ ‚Ðæ ‚8å ‚Ð ä ‚ ðiÿ `PýIÿ `   ¸ƒ ¸ƒ -"&  $! %*(,/#'+ __SIM6502__runtime/icmp.s +ca65 V2.15tosicmptosicmp0spsreg.size@L1@L2@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` ix+£,Ï ÛÞ¿¸Ý¹@’ø¯äfaX© +faXÑô3+†# ‚#à    +‚… ‚† ‚¥$ ‚$E ‚… ‚$ ‚!!¢" 8µ ‚Iÿ%i• ‚èˆÐô  +‚ $ ‚ 0  `L +‚ !#   $  ¸ƒ&-0?") 984 .! @*(,/: #'+" __SIM6502__runtime/idiv32by16r16.s +ca65 V2.15 idiv32by16r16negaxudiv32by16r16m-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L1@L3@L2@L4CODERODATABSSDATAZEROPAGENULLUzna` ixŒ.º ÆÉ¡j…Ȇ@’ø¯äfaXífaXÑÝ+&† ‚à  +‚… ‚† ‚¥ ‚E ‚… ‚ ¥ ‚¦ ‚    +‚… ‚† ‚  +‚¤ ‚L +‚` !  +  +¸ƒ -")&  $! %*(, #'+" __SIM6502__runtime/imul16x16r32.s +ca65 V2.15 imul16x16r32negax umul16x16r32mnegeax-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L1@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` ixº2Mjm†ÂHlI@’ø¯äfaXÊ faX¼ƒGC…% ‚%¢1$, ‚,ʆ ‚ 5¢0¥ ‚0  2 2˜# e ‚¨3Š(e ‚ª'* ‚*& ‚F ‚°.ï.Ð)ö)˜+`Iÿ… ‚æ/ ‚/Ð) )˜!8å ‚¨ Š&å ‚ª46 ‚6& ‚F" ‚"° +ï +Ð)ö)˜`- %,*6/"¸ƒ ¸ƒ 8-0HG?")>& 98E3A;J.!=F%7@*(0,2K/: #'BD __SIM6502__runtime/imul8x8r16.s +ca65 V2.15 +imul8x8r16 imul8x8r16mptr1ptr3tmp1,/home/hugg/compilers/cc65/asminc/generic.mac.size@L7NegMult@L2@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` i^ÝÞ êí¡Ž™'ì(@’ø¯äfaXùfaX¼faXË'iè` ¸ƒ    ! __SIM6502__runtime/incax1.s +ca65 V2.15incax1,/home/hugg/compilers/cc65/asminc/generic.mac(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^Ö× ãæ=#‹®å¯@’ø¯äfaXçfaX¼' i è +`  +   ¸ƒ    __SIM6502__runtime/incax2.s +ca65 V2.15incax2,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ýa^Ó_@’ø¯äfaXÑ L +‚  +  ¸ƒ   + __SIM6502__runtime/incax3.s +ca65 V2.15incax3incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ýa^Ó_@’ø¯äfaXÑ L +‚  +  ¸ƒ   + __SIM6502__runtime/incax5.s +ca65 V2.15incax5incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ýa^Ó_@’ø¯äfaXÑ L +‚  +  ¸ƒ   + __SIM6502__runtime/incax6.s +ca65 V2.15incax6incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ýa^Ó_@’ø¯äfaXÑ L +‚  +  ¸ƒ   + __SIM6502__runtime/incax7.s +ca65 V2.15incax7incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ýa^Ó_@’ø¯äfaXÑ L +‚  +  ¸ƒ   + __SIM6502__runtime/incax8.s +ca65 V2.15incax8incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqf×ß ëî3!a‚íƒ@’ø¯äfaX…/æ ‚Ðæ ‚`   +   ¸ƒ +   + __SIM6502__runtime/incsp1.s +ca65 V2.15incsp1sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ýa^Ó_@’ø¯äfaXë L +‚  +  ¸ƒ   + __SIM6502__runtime/incsp3.s +ca65 V2.15incsp3addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ýa^Ó_@’ø¯äfaXë L +‚  +  ¸ƒ   + __SIM6502__runtime/incsp4.s +ca65 V2.15incsp4addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ýa^Ó_@’ø¯äfaXë L +‚  +  ¸ƒ   + __SIM6502__runtime/incsp5.s +ca65 V2.15incsp5addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ýa^Ó_@’ø¯äfaXë L +‚  +  ¸ƒ   + __SIM6502__runtime/incsp6.s +ca65 V2.15incsp6addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ýa^Ó_@’ø¯äfaXë L +‚  +  ¸ƒ   + __SIM6502__runtime/incsp7.s +ca65 V2.15incsp7addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ýa^Ó_@’ø¯äfaXà L +‚  +  ¸ƒ   + __SIM6502__runtime/incsp8.s +ca65 V2.15incsp8addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixwïö ˆ¤¥@’ø¯äfaXÌfaXä@ àÐ  ¨¹ +‚ )`©ª` ¸ƒ     +  __SIM6502__common/isalnum.s +ca65 V2.15_isalnum*/home/hugg/compilers/cc65/asminc/ctype.inc__ctypeCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixwïö ˆ¤¥@’ø¯äfaXÆfaXä@ àÐ  ¨¹ +‚ )`©ª` ¸ƒ     +  __SIM6502__common/isalpha.s +ca65 V2.15_isalpha*/home/hugg/compilers/cc65/asminc/ctype.inc__ctypeCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixwïö ˆ¤¥@’ø¯äfaXßfaXä@ àШ¹ +‚)€ +`©ª ` ¸ƒ     __SIM6502__common/isblank.s +ca65 V2.15_isblank*/home/hugg/compilers/cc65/asminc/ctype.inc__ctypeCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixwïö ˆ¤¥@’ø¯äfaXÍfaXä@ àÐ  ¨¹ +‚ )`©ª` ¸ƒ     +  __SIM6502__common/iscntrl.s +ca65 V2.15_iscntrl*/home/hugg/compilers/cc65/asminc/ctype.inc__ctypeCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixwïö ˆ¤¥@’ø¯äfaXÁfaXä@ àÐ  ¨¹ +‚ )`©ª` ¸ƒ     +  __SIM6502__common/isdigit.s +ca65 V2.15_isdigit*/home/hugg/compilers/cc65/asminc/ctype.inc__ctypeCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix‰ —®ÅÆ@’ø¯äfaXšfaXäRàÐ ¨ +¹ +‚)0É © é`©ª`¸ƒ      __SIM6502__common/isgraph.s +ca65 V2.15_isgraph*/home/hugg/compilers/cc65/asminc/ctype.inc__ctypeCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixwïö ˆ¤¥@’ø¯äfaXÆfaXä@ àÐ  ¨¹ +‚ )`©ª` ¸ƒ     +  __SIM6502__common/islower.s +ca65 V2.15_islower*/home/hugg/compilers/cc65/asminc/ctype.inc__ctypeCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix}õü  ˜¯ +°@’ø¯äfaXýfaXäF àÐ ¨¹ +‚I)` +©ª` ¸ƒ     +  __SIM6502__common/isprint.s +ca65 V2.15_isprint*/home/hugg/compilers/cc65/asminc/ctype.inc__ctypeCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix‰ —®ÅÆ@’ø¯äfaX¥faXäRàÐ ¨ +¹ +‚)7É © é`©ª`¸ƒ      __SIM6502__common/ispunct.s +ca65 V2.15_ispunct*/home/hugg/compilers/cc65/asminc/ctype.inc__ctypeCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixwïö ˆ¤¥@’ø¯äfaXÎfaXä@ àÐ  ¨¹ +‚ )``©ª` ¸ƒ     +  __SIM6502__common/isspace.s +ca65 V2.15_isspace*/home/hugg/compilers/cc65/asminc/ctype.inc__ctypeCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixwïö ˆ¤¥@’ø¯äfaXÆfaXä@ àÐ  ¨¹ +‚ )`©ª` ¸ƒ     +  __SIM6502__common/isupper.s +ca65 V2.15_isupper*/home/hugg/compilers/cc65/asminc/ctype.inc__ctypeCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixwïö ˆ¦§@’ø¯äfaXÅfaXä@ àÐ  ¨¹ +‚ )`©ª` ¸ƒ     +  __SIM6502__common/isxdigit.s +ca65 V2.15 _isxdigit*/home/hugg/compilers/cc65/asminc/ctype.inc__ctypeCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iq.ŸEä# +®¸°h i@’ø¯äfaXÁÔ”~…* ‚* ;±J ‚J… ‚…H ‚HÈ?± ‚ …0 ‚0… ‚ÈL±G ‚G…. ‚.ȱI ‚I…, ‚,L9 +‚9 T +ƒT¤ + ‚ +À +'Ð=<=É%Ð((à€6Ð  ¹ +ƒ‘D ‚Dˆ)RøRL5 +ƒ5¥K ‚K#©-N  ‘8 ‚8æ ‚Ðæ2 ‚2¥B ‚BIÿ i<… ‚¥ ‚IÿQiA…M ‚ML& +ƒc& O +ƒO©-H: @©3+ ‚+& ‚*!Å ‚//å ‚æ$ ‚$ˆ Ð𨹠+‚H1¥ ‚# ‚#ÐEáE hC‘P ‚PðÈÐFøF¥ ‚ ¦ ‚`")->3>2>7>6>8>> * + H  +0D82P  .,KBM+$#J GI79¸ƒ`O4¸ƒT4Uhmj|ƒ P0M‚lHG"oys f9C8}LO6pEg„tk3T14;e$^!iqId=5 +F%_N2cRKz:u~ #BSDZ{Q<’+ __SIM6502__ common/itoa.s +ca65 V2.15_itoa_utoaaddysp1__hextabspsregptr2ptr3tmp1specval.sizedopoputoaL2L1L10L3L5L6L7L9CODERODATABSSDATAZEROPAGENULLUzna` iqf× äûþ86n¤ý¥@’ø¯äfaXù/ +¤ + ‚ +L +‚`     +¸ƒ¸ƒ   + __SIM6502__ common/labs.s +ca65 V2.15_labs_imaxabsnegeaxsreg.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` ixûs"•²µñ¦ˆ.´/@’ø¯äfaX® +faXËÄ%" „ ‚„ ‚ 'q# ‚#È… ‚Š+q& ‚&ªÈ¥( ‚(q ‚… ‚È ¥* ‚*q ‚ … ‚ ¥ ‚L/ +‚/ !"#   (*  #& /¸ƒ¸ƒ"0")&  $!% *(, #'+$ __SIM6502__runtime/ladd.s +ca65 V2.15 tosadd0ax tosaddeaxaddysp1spsregtmp1(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqôe|™œ)qš››@’ø¯äfaXÓ½ #" q ‚ ‘ ‚HÈ +Šq ‚‘ ‚ª È ¥ ‚q ‚‘ ‚… ‚È¥ ‚q ‚‘ ‚… ‚h` +    ¸ƒ ¸ƒ " !  +  __SIM6502__runtime/laddeqsp.s +ca65 V2.15 laddeq0sp laddeqyspspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqÒC\ hkoÚrLjM@’ø¯äfaX › )… ‚  +‚ ¤ ‚ð† ‚¦ ‚à€f + ‚ +f ‚f ‚j ˆ Ðô¦ ‚`     + ¸ƒ"&$!%*, #+ __SIM6502__runtime/lasr.s +ca65 V2.15 tosasreaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` iq LkhÓÔ@’ø¯äfaXœY † ‚¢ ‚  ‚ ‚Ð + +©`Š` +      ¸ƒ      + __SIM6502__runtime/lbneg.s +ca65 V2.15bnegeaxsregtmp1.size@L0CODERODATABSSDATAZEROPAGENULLUzna` iqXÉ!ê öùÉÂ|>ø?@’ø¯äfaXÀ !;4… ‚†! ‚! ± ‚ 8å ‚ Ð"ˆ±% ‚%Å ‚Ð" "ˆ± ‚Å ‚Ð&&ˆ± ‚Å# ‚#  +‚ ($ð°©ÿ`'©`PIÿ    +‚(`!#  % + ¸ƒ(-0")& 86314.! 5 +%*(2#'+ __SIM6502__runtime/lcmp.s +ca65 V2.15toslcmpincsp4spsregptr1.sizeL4L1L2L3L5CODERODATABSSDATAZEROPAGENULLUzna` iq¢ + ),[‡aè+é@’ø¯äfaX‹kIÿ HŠIÿ ª¥ ‚Iÿ… ‚¥ ‚Iÿ… ‚h`  +   ¸ƒ  +   __SIM6502__runtime/lcompl.s +ca65 V2.15compleaxsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq{ì õ BFa§¨@’ø¯äfaXºD  … ‚† ‚¢ +± ‚  Ê`  +    ¸ƒ       + __SIM6502__runtime/ldai.s +ca65 V2.15ldaidxptr1@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix‹03°ã|_2`@’ø¯äfaX—faXËT ± ‚… ‚ˆ ± + ‚ +… ‚¢¡ ‚` ! +¸ƒ ¸ƒ#    " __SIM6502__runtime/ldau0sp.s +ca65 V2.15ldau00spldau0yspspptr1(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqlÝ æ òõ3(_‡ôˆ@’ø¯äfaX¢5 … ‚† ‚¢± ‚`   +  ¸ƒ  +    + __SIM6502__runtime/ldaui.s +ca65 V2.15ldauidxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq•36VŒnú5û@’ø¯äfaXÉ^  ± ‚ … ‚ˆ± ‚ … ‚Š¨¢± ‚` +      ¸ƒ  +¸ƒ +    + __SIM6502__runtime/ldauisp.s +ca65 V2.15ldaui0spldauiyspspptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq€ñ +ûB]eÂÃ@’ø¯äfaXÃI    … ‚† + ‚ +± ‚ª ˆ± ‚`  +     +¸ƒ¸ƒ      + __SIM6502__runtime/ldaxi.s +ca65 V2.15ldaxildaxidxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqf×ßüÿ=<f¢þ£@’ø¯äfaXÒ/   +± ‚ ªˆ± ‚`  +     ¸ƒ¸ƒ    __SIM6502__runtime/ldaxsp.s +ca65 V2.15ldax0spldaxyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq¸)<Y\`¼m)[*@’ø¯äfaXà  … + ‚ +† ‚± ‚ˆ… ‚ ± ‚ˆ… ‚± ‚ˆª ± ‚` +     +  ¸ƒ ¸ƒ     + __SIM6502__runtime/ldeaxi.s +ca65 V2.15ldeaxidxldeaxisregptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqž =@[›o +? @’ø¯äfaX€g  ± ‚… ‚ˆ± ‚… ‚ ˆ +± ‚ ªˆ± ‚` +       ¸ƒ ¸ƒ   __SIM6502__runtime/ldeaxysp.s +ca65 V2.15ldeax0spldeaxyspsregsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqÂ3.a~eæ•{€|@’ø¯äfaX•‹ „ ‚ „ ‚  +‚  +‚¦ ‚ ¥ ‚E ‚¥ ‚L +‚ ¥ ‚`  +  + + +   +  ¸ƒ ¸ƒ  & ! +%(  __SIM6502__runtime/ldiv.s +ca65 V2.15 tosdiv0ax tosdiveax poplsargsudiv32negeaxsregptr1tmp1tmp2.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq]Î Û.  8Dvº »@’ø¯äfaXØ& + +©¢  + +‚ +L +‚    +¸ƒ¸ƒ¸ƒ     + __SIM6502__ runtime/le.s +ca65 V2.15tosle00toslea0tosleaxtosicmpboolle.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq{ìôL`gÇÈ@’ø¯äfaXÓD  ¢ e ‚HŠ e ‚ªh`  +    +¸ƒ ¸ƒ    + __SIM6502__runtime/leaaxsp.s +ca65 V2.15leaaxspleaa0spsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞ$hjÝk@’ø¯äfaX•  +‚L +‚  +   ¸ƒ   + __SIM6502__ runtime/leq.s +ca65 V2.15toseqeaxtoslcmpbooleq.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞ$hjÝk@’ø¯äfaXŽ  +‚L +‚  +   ¸ƒ   + __SIM6502__ runtime/lge.s +ca65 V2.15tosgeeaxtoslcmpboolge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞ$hjÝk@’ø¯äfaXŽ  +‚L +‚  +   ¸ƒ   + __SIM6502__ runtime/lgt.s +ca65 V2.15tosgteaxtoslcmpboolgt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq˜  $'Qxgß&à@’ø¯äfaXía „ ‚ e ‚ è Ðæ ‚Ðæ ‚` +    + +¸ƒ    + __SIM6502__runtime/linc.s +ca65 V2.15inceaxyptr4sreg@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞ$hjÝk@’ø¯äfaXŽ  +‚L +‚  +   ¸ƒ   + __SIM6502__ runtime/lle.s +ca65 V2.15tosleeaxtoslcmpboolle.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞýheÝf@’ø¯äfaXŒ  +‚L +‚  +   ¸ƒ   + __SIM6502__ runtime/llt.s +ca65 V2.15toslteaxtoslcmpboollt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞ$hjÝk@’ø¯äfaX  +‚L +‚  +   ¸ƒ   + __SIM6502__ runtime/lne.s +ca65 V2.15tosneeaxtoslcmpboolne.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq¿0 +: FIo¸]H@’ø¯äfaX܈IÿiH Š Iÿiª¥ + ‚ +Iÿ i… ‚¥ ‚Iÿi… ‚h `  +   +¸ƒ  + __SIM6502__runtime/lneg.s +ca65 V2.15negeaxsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz™+Äáä_C/rãs@’ø¯äü‹\õ faXÈuJ=© Hƒ¢9 Iƒ9` & +‚& !±8 ‚8È ‚ ð020  +‚… ‚ †B ‚B 7±@ ‚@ÉCÐ 3 +‚3… ‚†D ‚D C±A ‚Að//L +ƒ0  +‚ …# ‚#†- ‚- >±2 ‚2ð¢6Š'L +‚ © Hƒ¢ IƒL +‚.EEC e! +ƒ +ƒ +ƒ. +ƒ= +ƒ +ƒ; +ƒ5 +ƒ + +ƒ% +ƒÿ?ÿ:ÿ$ÿÿ<ÿ"ÿ,ÿ"# 3 &  B@DA#-2+8 ¸ƒE¸ƒ*)Fh\jU -PM]"&fW9LOEgbkT;eJ$^!Id= 5 +%_[N*aV,cRK: #`SZQYX+$ __SIM6502__../libwrk/sim6502/locale.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac _localeconv +_setlocale _EmptyString.size_lcL0003L0022pushaxL002Aldax0spL002Cincsp4CODERODATABSSDATAZEROPAGENULLUzna` iqÎ?9x „‡ñxˆ†@’ø¯äfaX¤ —RA $ +‚$¥ ‚ … ‚!,¥ ‚Iÿ)i%… ‚¥ ‚Iÿi-…( ‚(¥ ‚Iÿi*… ‚¥ ‚Iÿi+…! ‚!¥ ‚ …/ ‚/"!"¥& ‚&Iÿi…# ‚#¥ ‚Iÿi… ‚ ¥ ‚Iÿ i +…' ‚'¥ ‚Iÿ.i… ‚`  ' +&#  (/ !$¸ƒ 0 0">&98631A4; $.!=5 +%7@*(,2/: #'<+ __SIM6502__runtime/lshelp.s +ca65 V2.15 poplsargsgetlopsregtmp1tmp2ptr1ptr3ptr4.sizeL1L2CODERODATABSSDATAZEROPAGENULLUzna` iq¼-E\_jÉ|E^F@’ø¯äfaXÌ… )… ‚  +‚¤ ‚ð† ‚ +& + ‚ +& ‚& ‚ˆ Ð ö ¦ ‚`    + ¸ƒ¸ƒ")$!%*, # __SIM6502__runtime/lshl.s +ca65 V2.15 tosasleax tosshleaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` iq¼-E QTe¹r+S,@’ø¯äfaX´… )… ‚  +‚ ¤ ‚ð† ‚F ‚f ‚f + ‚ +jˆÐ ö ¦ ‚ `    +   ¸ƒ0")$!( # __SIM6502__runtime/lshr.s +ca65 V2.15 tosshreaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` iqqˆ¥¨—?q°§±@’ø¯äfaX¡É '$ 8Iÿ q ‚‘ ‚H +ÈŠIÿq ‚ ‘ ‚ ªÈ± ‚å ‚‘ ‚… ‚ȱ ‚å ‚‘ ‚… ‚h` +    ¸ƒ ¸ƒ " $!  + # __SIM6502__runtime/lsubeqsp.s +ca65 V2.15 lsubeq0sp lsubeqyspspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq]Î Û.  8Dvº »@’ø¯äfaX×& + +©¢  + +‚ +L +‚    +¸ƒ¸ƒ¸ƒ     + __SIM6502__ runtime/lt.s +ca65 V2.15toslt00toslta0tosltaxtosicmpboollt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqŠû +!$LpnÞ#ß@’ø¯äfaX£S +¨† ‚  ‚ ‚ + ‚ +ð˜ `       +¸ƒ  ¸ƒ     + __SIM6502__runtime/ltest.s +ca65 V2.15utsteaxtsteaxsregtmp1.sizeL9CODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞ$kmÝn@’ø¯äfaX–  +‚L +‚  +   ¸ƒ   + __SIM6502__runtime/luge.s +ca65 V2.15 tosugeeaxtoslcmpbooluge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞ$kmÝn@’ø¯äfaX–  +‚L +‚  +   ¸ƒ   + __SIM6502__runtime/lugt.s +ca65 V2.15 tosugteaxtoslcmpboolugt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞ$kmÝn@’ø¯äfaX–  +‚L +‚  +   ¸ƒ   + __SIM6502__runtime/lule.s +ca65 V2.15 tosuleeaxtoslcmpboolule.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞýkhÝi@’ø¯äfaX”  +‚L +‚  +   ¸ƒ   + __SIM6502__runtime/lult.s +ca65 V2.15 tosulteaxtoslcmpboolult.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqˆù 3QzËÌ@’ø¯äfaXª  +   G © H‚¢ I‚  +‚ +‚Ž +‚`   ¹ƒ +    + __SIM6502__sim6502/mainargs.s +ca65 V2.15 initmainargs__argc__argvargs.sizeCODERODATABSSDATAZEROPAGENULLONCEUzna` iý|ˆ Ôè +«“ ” @’ø¯äfaXÚRfaXðfaX¼Æ%Žñ…‡ ‚‡†b ‚b ‚ð6_6¥¡ ‚¡ io… ‚ CCæ + ‚ +¦e ‚eÐÉ°ŸŸ© …m ‚m­" +‚"…¥ ‚¥­n +‚n…¦ ‚¦L‚ +ƒF‚ 4±3 ‚38KåKZ ‚KZªaÈ”±# ‚#å{ ‚{°=@=ȱp ‚pªJÈP±d ‚d† ‚…™ ‚™I ‚IÐâ­5 +‚5? e?o ‚?o¨x­. +‚.ey ‚y°ˆ ˆÍO +‚OГ“Ì… +‚…^^ðhh©Wª’`® +‚†Y ‚Y®+ +‚+†c ‚cŒ +‚_ +‚_LA +ƒíAÐ%S%à`°O ±] ‚]…! ‚!ˆi±„ ‚„…- ‚-ˆL ‚Lðl l± ‚‘X ‚XˆT±U ‚U‘‘ ‚‘Lƒ +ƒ¨ƒ±0 ‚02 +‚2ˆR± ‚‰ +‚‰± ‚…1 ‚1Èj±@ ‚@…† ‚†È\œ ‚œð§ §±› ‚›‘ ‚È ±$ ‚$‘£ ‚£L, +ƒø,±F ‚F: +‚:ȱS ‚S' +‚'Lq +ƒøqˆw±~ ‚~88å8Z ‚8Z‘ ‚ª<Èz±[ ‚[åu ‚u‘t ‚tŠ>‹ e‹o ‚‹oªM±* ‚*e7 ‚7† ‚… ‚ /¥ž ‚ž‘€ ‚€ÈV¥G ‚G‘ ‚ ¢¥ ‚‘9 ‚9ÈQ¥ ‚‘r ‚r¥k ‚k¦Œ ‚ŒD iDoššè|`&'()*H:'g"n2‰)O…5.+_ +!-LX‘1†œ£(¥¦3#pd™IYc]„U0@›$FS~[t‹*7€9rkŒ‡b¡ +emK{?y8užG¸ƒŠ¨—àÌÇmˆ|ú…ƒŠÚæŶ©ÿÒµ¦‚í‡lŒâžŽØ™¿!³Éå³¼÷€øš™°}´¥Æ–Ƨ °±‚΄ϟ•À#«¦›ç²·§Çù˜ïð¿ÀîÈ©„áºÍÙœxʨ†"»ãÍè‹‘¥šÉÓ«ª£²´¨ŸÑ¤Â¾¬—ò乃wµûv±Î¤È ñÁ¸×ªÐ‹…Á½‰ÃÄ»’†+ __SIM6502__common/malloc.s +ca65 V2.15ptr1ptr2ptr3_malloc*/home/hugg/compilers/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast,/home/hugg/compilers/cc65/asminc/generic.macDone@L1@L2@L4@L3 +BlockFoundOutOfHeapSpace@L5 TakeFromTopFillSizeAndRet +SliceBlock +RetUserPtr@L9CODERODATABSSDATAZEROPAGENULLUzna` iqH¹9ò(2Oªùú@’ø¯äfaXç]Y…4 ‚4† ‚¢2ð--… ‚†6 ‚6 1 +‚1ª  ±3 ‚3…* ‚*ˆ ±) ‚)…< ‚<F ‚f ‚/ /Š,‘ ‚æ ‚Ð  æ ‚¥ ‚e0 ‚0… ‚¥9 ‚9e ‚… + ‚ +Š'¦ ‚ð55‘% ‚%‘ ‚È‘% ‚%‘ ‚ÈÐ.ô.æ ‚æ ‚Ê(Ðí¤7 ‚7ðˆ+‘ ‚ ‘; ‚;Ð:ù:L& +‚&  +4607 +  +;  *<9  3)1&¸ƒ$¸ƒ¸ƒ=-0M]H)>&W98LOI63TA4;J.!=5F%7G[@N*(V2K/: 'BSZ<YX+ __SIM6502__common/memset.s +ca65 V2.15_memset_bzero__bzeropopaxspptr1ptr2ptr3.sizecommon evenCountoddCountL2L1leaveL3CODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞ)qxÝy@’ø¯äfaXÐ  +‚L +‚  +   ¸ƒ  + __SIM6502__common/mkdir.s +ca65 V2.15_mkdir +__sysmkdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq=®µ ÀÃØ]5Â6@’ø¯äfaX„  + ‚&$# __SIM6502__common/modfree.s +ca65 V2.15 _mod_free_freeCODERODATABSSDATAZEROPAGENULLUzna` i%Ž¹ GEŒ € ®ÎŸÏ@’ø¯äfaX·€faXå9VfaX´efaXÑ~faX¼: ¦…š .±¸ ‚¸ªìˆÔ±ƒ ‚ƒL‡ +‚‡¢½ˆ +ƒˆ•3 ‚3Ê Ð¬ø¬`AÉ Ð9ÐÉG𯯰æ3æ¥& ‚&¦‘ ‚‘`è© H‚¢Ø I‚Ø`2 [ +ƒ[©I HƒI¢™ Iƒ™ ð +‚ð¢Y©W‹ +ƒ!‹Žw +ƒ!w › +ƒ›Íî +ƒ!îЙ™ì§ +ƒ!§ð×שÐÎέˆ +ƒˆ`Ë©e®• +ƒ•šŽH¥Ã ‚æ ‚ÐÇǨ~ðÌÌ Ò +‚Ò À +ƒ À¢FhÍ` Ä +‚Ä…; ‚;†ß ‚ß O +ƒ*OðÙÉÿéЬ¬¥0 ‚0¹¦iþ¹„…¯ ‚¯°î°æ¿ ‚¿Lž +ƒtžÉ¦eÉ„ ‚É„…S ‚SVVæª ‚ª Ë +ƒ*Ë)% U +ƒUå +ƒåŽ} +ƒ}­ü +ƒü)à¾É€Õð8#8É@ðE EÉ ëÐM M Œn­ +ƒ« « a +ƒ*a à‹mJ +ƒJ­T +ƒTq” ‚”‘j ‚jL- +ƒt- øÎ­É +ƒÉq‘ ‚‘‘º ‚ºÈyЮé®Hï Q¹Ù +‚Ù™– +ƒ–ˆ²Ð÷„Ø ‚Ø„ª ‚ªhç…¨ ‚¨†· ‚·º Žç +ƒç '±ö ‚öŸ +ƒŸÈm±f ‚f +ƒ ] +ƒ]©s Hƒs¢ã Iƒã Û +‚Û©ò¢˜  +ƒ8  õ¹9 +ƒ9ÙÐ +ƒÐÐÛRÛˆõȶ„ú ‚ú à +ƒ*àðåCå…" ‚"ÉAÆÖ ‚Ö Ï +ƒ*ÏɉÐñ%ñ¥‚ ‚‚ɼÐô)ô û +ƒ*ûÉCÐq"q ù +ƒ*ùд´ ß +ƒ*ß l‘R ‚R ã +ƒ*ã  ’‘ ‚æ ‚ L× +ƒ"×Æ ‚ð³Ã³  +ƒ*LÆ +ƒ[Æ©¢LÆ +ƒUÆ¥Š ‚ŠÐŸŸ©kL† +ƒU†­Ã +ƒ +Ã¥¦m¥„ +ƒ¥„…® ‚®­¶ +ƒ +¶mó +ƒó…u ‚u¥v ‚vǦmÇ„ +ƒÇ„H… ‘¢ ‚¢¥ ‚mp +ƒpÈð‘Ó ‚Óª£h€ Å +‚Å…Ž ‚Ž†Á ‚Á Þ‘( ‚(ŠÿȾ‘B ‚BÍ ‚ÍЩhL+ +ƒU+¥c ‚cŠ¦eŠ„ ‚Š„HD¥» ‚»e– ‚–ªh• µ +‚µ­Â +ƒÂ®Ï +ƒÏ ó +‚ó ` +ƒ`¥ ‚¦Ù ‚Ù | +‚|¥é ‚é¦Ü ‚Ü Õ +ƒ8Õ # +ƒ*#Ðëë È +ƒ*Èð!!Lê +ƒSê¥Ý ‚ݦ± ‚±  +ƒm¥¡ ‚¡À¦mÀ„ +ƒ +À„Hš¥t ‚tm +ƒ +ª²h± Ü +ƒmÜ ¤ +ƒ ¤©*`Ó-§iio$6$5$쨨#í Ô Ú š©Lÿÿ©ª«}ñØ|@ó{@Òz@Åy÷Äu÷‡ðÛµ|qŒ˜“¡3Ù¸]ƒÛ:€<—àÌ×Çœ“ŠÌym•á\j /Ä-ôè…êž?ÚGæù©‚õÿPÿÒÔhšÞp¦][íj‡lHœ‚Œç·â 3cž)o׈åŽØyH– P=4åX¼÷¢€øšH™7•uÛKóIãB¶Ö1ÝO¥°Õ–Eʼn’Ü‘¾¿ E°Daö‚ÎúɯƒO}±bk;ªŸ•ÃÀÙ€’3Léç8঎T/Z¸«œ4ÃGƒº§Çæù˜nŠ»ïð‰¿6êñ£^îiæ„ ‡g+ëËáϥͭ4¯xÙ¬ìxzÐÇ=ùþ¨†õiÞ•{~ãóf5Ý„mÍ‹èK€_‘¥NÆ*q½…åÓ(«‘F_2ªrÕU,£a1ÁdT®€äŸÐÂë®|>¤Â¾¡2—¡2<òÔwŽ¤È™¾@µRKÂtév±zb”“©Œ.¼ÈQ¯^WÖñÔÑ’¹I`ŸÀsö0þÏتÿ莛`‹M—Á½BéøˆÓŽž“0‘…ô{Ã÷ƒQ<ˆ»˜ßí›SJ”‹ò‡†‰C3¬ __SIM6502__common/modload.s +ca65 V2.15(/home/hugg/compilers/cc65/asminc/o65.incO65_HDRMARKER.sizeMAGICVERSIONMODETBASETLENDBASEDLENBBASEBLENZBASEZLENSTACK O65_MARKER_0 O65_MARKER_1 O65_MAGIC_0 O65_MAGIC_1 O65_MAGIC_2 O65_VERSION O65_CPU_65816 O65_CPU_6502 O65_CPU_MASKO65_RELOC_PAGEO65_RELOC_BYTEO65_RELOC_MASKO65_SIZE_32BITO65_SIZE_16BIT O65_SIZE_MASK O65_FTYPE_OBJ O65_FTYPE_EXEO65_FTYPE_MASKO65_ADDR_SIMPLEO65_ADDR_DEFAULT O65_ADDR_MASK O65_CHAINO65_CHAIN_MASK O65_BSSZEROO65_BSSZERO_MASK O65_CPU2_6502O65_CPU2_65C02O65_CPU2_65SC02O65_CPU2_65CE02O65_CPU2_6502XO65_CPU2_65816_EMU O65_CPU2_MASK O65_ALIGN_1 O65_ALIGN_2 O65_ALIGN_4 O65_ALIGN_256O65_ALIGN_MASK O65_MODE_CC65O65_RTYPE_WORDO65_RTYPE_HIGH O65_RTYPE_LOWO65_RTYPE_SEGADDR O65_RTYPE_SEGO65_RTYPE_MASKO65_SEGID_UNDEF O65_SEGID_ABSO65_SEGID_TEXTO65_SEGID_DATA O65_SEGID_BSS O65_SEGID_ZPO65_SEGID_MASKO65_OPT_FILENAME +O65_OPT_OS O65_OPT_ASMO65_OPT_AUTHORO65_OPT_TIMESTAMP O65_OS_OSA65 O65_OS_LUNIX O65_OS_CC65O65_OS_OPENCBM O65_LOAD_OKO65_LOAD_ERR_READO65_LOAD_ERR_HDRO65_LOAD_ERR_OSO65_LOAD_ERR_FMTO65_LOAD_ERR_MEM,/home/hugg/compilers/cc65/asminc/modload.incMOD_CTRLREAD +CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_READ MLOAD_ERR_HDR MLOAD_ERR_OS MLOAD_ERR_FMT MLOAD_ERR_MEM-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespacepushaxpusha0push0push1decax1_malloc_free_bzero __ZP_START__,/home/hugg/compilers/cc65/asminc/generic.macModuleCtrlTPtrStack RegBankSaveHeader InputByteRelocValRead ExpectedHdrExpectedHdrSizePushCallerDataRestoreRegBank@L1GetReloc FormatErrorReadSizeReadByteReadAndCheckError@L2CleanupAndExitDoneRelocSegLoop RelocWord RelocHighRelocLow AddCommonAddHighValidateHeader HeaderErrorOptOptDoneSkipOptOSError CalcSizesGotMemUndefRelocCODERODATABSSDATAZEROPAGENULLUzna` iqÒCR ^aoÐa1`2@’ø¯äfaX›… ‚† ‚  +& ‚  + +& ‚e ‚… ‚ Š e ‚ ‚*ª¥ ‚`  +     ¸ƒ     __SIM6502__runtime/mulax10.s +ca65 V2.15mulax10ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq½.< HKe°_J@’ø¯äfaXÕ†… ‚† ‚  +& ‚  +e ‚… ‚Še ‚  ‚ *ª¥ ‚`  +    ¸ƒ    __SIM6502__runtime/mulax6.s +ca65 V2.15mulax6ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq]Î Û.  8Dvº »@’ø¯äfaXÒ& + +©¢  + +‚ +L +‚    +¸ƒ¸ƒ¸ƒ     + __SIM6502__ runtime/ne.s +ca65 V2.15tosne00tosnea0tosneaxtosicmpboolne.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq=®¯Iøû)$s—ú˜@’ø¯äfaXÏ +     õÿ ôÿ óÿ òÿ ñÿ ðÿ  + __SIM6502__sim6502/paravirt.s +ca65 V2.15argsexit_open_close_read_writeCODERODATABSSDATAZEROPAGENULLUzna` kz¾8=u „ìp3£ƒ¤@’ø¯äü‹\ã faXÈ_T; ) +‚)­ +‚® +‚  +‚ * +‚* #± ‚ˆ". ‚.ð$$­ +‚® +‚ ' +‚'© Hƒ¢ Iƒ % +‚%    +‚    +‚  L + +ƒN +­ +‚®( +‚(  +‚©- Hƒ-¢ Iƒ  +‚  ! +‚!  + +‚+L +‚ . %s: %s +!"#$  !)*'% +(.¸ƒT,&/ -0?)>&9C86E31A4;$.= 5 +F%7@*(,2/:#'B<+% __SIM6502__../libwrk/sim6502/perror.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stderr_fprintf_perror _strerror__errnoL0008.sizeL000FpushaxL0004pushwyspL0012incsp4CODERODATABSSDATAZEROPAGENULLUzna` kzR Ì 0ü   ›« ¬@’ø¯äü‹\’"faXÈ ,‚› Ù +‚ Ù  +‚ ¥“ ‚“¦ ‚ û +‚ û¥ì ‚ì¦ ‚ 3 +‚ 3¥í ‚í¦‡ ‚‡ ® +‚ ®  9±ô ‚ôÈ¿4 ‚4н½ ‘ Ì +‚ Ì… ‚†Š ‚Š©ã¨!‘w ‚wÈΑr ‚rª{©¨L] +ƒï]ȯ±T ‚TÈKä ‚äð}} ˆ ¤ +‚ +¤¢7©/ ¹ y +‚ y ú +‚úàMÐÿÿÉ`𪪠+ ) +‚ )…– ‚–†‚ ‚‚©Ý¨X‘" ‚"È»‘[ ‚[ª©‡LÜ +ƒïÜ ü v +‚ v  ÉqG ‚GHŠŽÈq¸ ‚¸ª h$ Œ +‚Œ…µ ‚µ†÷ ‚÷àÃÐllÉÛÐœœ  C +‚ C…c ‚c† ‚©¨ ‘m ‚mÈ(‘ ‚ ª†©5L^ +ƒï^ ” Æ +‚ +Æ = k +‚ kåeà ‚à…× ‚׊¡e< ‚<…á ‚á ‚  +‚  V +‚V%æ ‚æHŠq%„ ‚„ª%h j  +‚…§ ‚§†' ‚'… ‚ †ý ‚ý   ´ +‚ ´öe« ‚«…u ‚uŠ0e‰ ‚‰…· ‚·¥Œ ‚Œ¦8 ‚8 … +‚… R A +‚A…Ð ‚І‹ ‚‹ P±O ‚Oªzˆ ±î ‚î  +2 Ê +‚Ê d +‚ d¥Ñ ‚Ñ8 åþ ‚þH⥺ ‚ºåt ‚tªh¦  ó +‚ó s +‚s Ï Å +‚ÅÉÈŠžéQe8e Ä H +‚ HÉÇŠÚéZ€,€  ë Ô +‚ Ô š‘¬ ‚¬ÈhŠ‘Ø ‚Ø¥? ‚?¦‹ ‚‹Èê‘Ë ‚ËÈpŠ~‘² ‚²¥a ‚a¦ ‚  +‚ D +‚D £ ˜ +‚ ˜  +  +‚¥g ‚g8òå¢ ‚¢H¾¥ ‚å› ‚›ªéh@ : +‚: ï ; +‚;ÉŸŠé1M  ° ç +‚ ç8— ñ™ ‚™H-Š­ÈÓñF ‚Fªh|ɳŠßéW5W • +‚ • &‘Ž ‚ŽÈˆŠ‰‘è ‚è¥Ò ‚Ò¦. ‚.Èi‘b ‚bÈðŠI‘N ‚N¥ƒ ‚ƒ¦ ‚ Þ +‚Þ … +‚… õ ñ +‚ ñ  + L +‚ L¥± ‚±¦f ‚f Ö +‚Ö…‘ ‚‘†ù ‚ù   ’ +‚ ’ Š‘ ‚ÈÁŠø‘, ‚,¥ ‚¦6 ‚6 † +‚†…E ‚E† + ‚ +¥ƒ ‚ƒÈÀ‘ ‚Èo¥_ ‚_‘ ‚¢„Š>H¼ S±x ‚x™U +‚UÈ€ÀnÐBöBhÍ JL +‚Â-./01+#Â(#Þ&#s%#ÊóÅ;$#A##…:Ö†"#!#V#ú#yL#¤Æ#Ì)vCk´HÔ˜ç•ñ’##Ùû3®dYD…¥Œ Šwr–‚"[cm ×áæ„ ý«‰E +©7“ì퇵÷à<§'u·Œ8ЋOîÑþºt¬Ø?‹Ë²ag¢›ŽèÒ.bNƒ±f‘ù,6ƒ_U© ô4TäG¸™Fx¸ƒ‚¶Õ’—à̉ÇÒÜhm‘\jˆ½|ú…ƒŠUÚæ© -Pÿê¢0M¦]‚í‡lHGŒâó?Ûž")oŽ>“&ÖØys™¿Õ– fÉåW³÷¢9€Cøš™°•›8}ëL¶O¥6p–EÆõg ±‚μô„tbkŸ•Ã€3«¦ŽT1œA›4ç;Äe·§Jù˜ün$ïð.À^!îiÈ„‡qìIßËáºÓdٜͯxÐÊ= ¨†5 +F»ã%7ÝÅè‹_‘[@¥Nš*Ñ(“Š£a²­r´®VŸÂ,¡2¬—¡ò乃w¾µcRKûévz¤/:u~ÞñÔÁ¸ #×öþϪ'ýŒ`‹…BS‰£DžZ{’”Q<ˆ˜’”YX†+2 __SIM6502__../libwrk/sim6502/pmemalign.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_malloc_free_posix_memalignpushaxdecsp6L0002ldaxyspL0001.sizeL0009pushwyspsubeqysptosandaxL0008L0014complax staxspidxdecax4ldaxidxstaxysptossubaxL002Bincax4L003AL004FaddyspCODERODATABSSDATAZEROPAGENULLUzna` ix{ó ü  ¦±k +@’ø¯äfaXðfaXËD    ± + ‚ +æ ‚ð`æ ‚`  +¸ƒ !   ! __SIM6502__runtime/popa.s +ca65 V2.15popasp(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixŠ #&°ÖyO%P@’ø¯äfaX faXËSH  ± ‚… ‚ˆ± ‚… ‚hL +‚ !¸ƒ#    " __SIM6502__runtime/popsreg.s +ca65 V2.15popsregincsp2spsreg(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix*¢-Ï ÛÞ¦„½AÝB@’ø¯äfaXß faX¼ï3)Œ +ƒ­ +‚® +‚  +‚¥ ‚¦ ‚m +ƒ  è… ‚ † ‚  ± ‚ªˆ± ‚  +‚¥ ‚ ¦ ‚  +‚¬ +ƒL +‚ +  +   ¸ƒ!0) 98L31A4;J.=F*(2K/:B< __SIM6502__common/printf.s +ca65 V2.15_printf_stdoutpushaxaddysp _vfprintfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ý_\Ó]@’ø¯äfaX©L +‚  +  ¸ƒ  __SIM6502__runtime/push1.s +ca65 V2.15push1pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ý_\Ó]@’ø¯äfaX©L +‚  +  ¸ƒ  __SIM6502__runtime/push2.s +ca65 V2.15push2pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ý_\Ó]@’ø¯äfaX©L +‚  +  ¸ƒ  __SIM6502__runtime/push3.s +ca65 V2.15push3pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ý_\Ó]@’ø¯äfaX©L +‚  +  ¸ƒ  __SIM6502__runtime/push4.s +ca65 V2.15push4pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ý_\Ó]@’ø¯äfaX©L +‚  +  ¸ƒ  __SIM6502__runtime/push5.s +ca65 V2.15push5pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ý_\Ó]@’ø¯äfaX©L +‚  +  ¸ƒ  __SIM6502__runtime/push6.s +ca65 V2.15push6pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ý_\Ó]@’ø¯äfaX©L +‚  +  ¸ƒ  __SIM6502__runtime/push7.s +ca65 V2.15push7pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix©! ..\_µ“^”@’ø¯äfaX¿faXËr ± ‚¤ ‚ ðÆ + ‚ + ‘ ‚`Æ ‚Æ ‚‘ ‚` !" +¸ƒ ¸ƒ¸ƒ$  # __SIM6502__runtime/pusha.s +ca65 V2.15pusha0sppushaysppushasp(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ýc`Óa@’ø¯äfaX¶¢ÿL +‚  +  ¸ƒ  __SIM6502__runtime/pushaff.s +ca65 V2.15pushaFFpushax.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqµ& 1._bjÌn:a;@’ø¯äfaXî~ +© ¢H¥ ‚8é… ‚°Æ ‚ Š‘ ‚ hˆ‘ ‚` +     ¸ƒ ¸ƒ ¸ƒ   ! + # __SIM6502__runtime/pushax.s +ca65 V2.15push0pusha0pushaxsp.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix¨ 1OR¿~Q@’ø¯äfaXüfaXËq„ ‚e ‚è… ‚† ‚ ¢¡ ‚ÊL +‚ !"  ¸ƒ¸ƒ&    # __SIM6502__runtime/pushb.s +ca65 V2.15pushbpushbidxpushaxptr1(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` iqWÈ Õòõ3(o—ô˜@’ø¯äfaXÝ  ± ‚L +‚  +    ¸ƒ¸ƒ +    __SIM6502__runtime/pushbsp.s +ca65 V2.15pushbsppushbysppusha0sp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ý`]Ó^@’ø¯äfaXŽ©L +‚  +  ¸ƒ  __SIM6502__runtime/pushc0.s +ca65 V2.15pushc0pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ý`]Ó^@’ø¯äfaXŽ©L +‚  +  ¸ƒ  __SIM6502__runtime/pushc1.s +ca65 V2.15pushc1pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾Å ÑÔ)ý`]Ó^@’ø¯äfaXŽ©L +‚  +  ¸ƒ  __SIM6502__runtime/pushc2.s +ca65 V2.15pushc2pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq¬4 @Cj­nB@’ø¯äfaXÙu Èȱ ‚ È… ‚± ‚… ‚ˆˆ ± ‚ˆª± ‚L +‚ +    ¸ƒ +    + __SIM6502__runtime/pushlysp.s +ca65 V2.15pushlysppusheaxsregsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq…ö.47Lƒyü6ý@’ø¯äfaXƒN +   … ‚† ‚± ‚ªˆ± ‚L +‚    ¸ƒ  +¸ƒ  +¸ƒ  +    __SIM6502__runtime/pushw.s +ca65 V2.15pushwpushwidx pushptr1idxpushaxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixÅ= Jgjƒíš‡iˆ@’ø¯äfaXýfaX¼Ž + ¥ ‚8 +é … ‚°Æ ‚± ‚ª ˆ ± ‚ ‘ ‚ÈŠ‘ ‚`   ¸ƒ¸ƒ   __SIM6502__runtime/pushwsp.s +ca65 V2.15pushwysppushw0spsp,/home/hugg/compilers/cc65/asminc/generic.mac.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqkÜð üÿ87r©þª@’ø¯äfaX÷4   +‚­ +‚® +‚L +‚ +    ¸ƒ +   + __SIM6502__common/putchar.s +ca65 V2.15_putcharpushax_stdout_fputc.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix<´e &)¨ó›(œ@’ø¯äfaXÛ#faX€ ú9©‰… ‚c +ƒc†Z ‚ZŽ +ƒ  ÿ4ȱd ‚dÐ22©CCL +ƒ¢É=iÐLòL„S ‚S©‘3 ‚3 = +‚ +=¤ ‚©=a‘. ‚.ŠHdH®? +‚?èì +‚7I7­! +‚!Ð  ©s +[0lal- +ƒ- +w¢v p +‚ p…G ‚G† ‚k ‚kðNPN¢/½ +‚•# ‚#µ ‚5 +‚5Ê)ó)­ +ƒ" +‚"­( +‚( +b¨]LY +ƒqY±; ‚;‘ ‚ˆ^qùq¥ ‚ ¦* ‚* r +‚ r  +‚ î +‚®D +‚DŠj +A¨,©‘t ‚tÈF‘u ‚uÊŠU +e¨­Q +ƒQ‘$ ‚$ÈW­ +ƒ‘n ‚nL1 +‚1©++ T +‚T©ÿOªP`9:;X8<=> ITS#; * Gktu$n Zd3. <1 0!" +0?(D 05=>r>p¸ƒ©Eyh\j…Š -P¢HG?ž"o&y –f9Opg ±¼tk€«ŽT;e §$.!i +Iº¯œx 5 +F"%‹‘[@ (a­®Ÿ,¬—¡¹wRvz :u#'Œ`S‰£Z{Q’YX? __SIM6502__common/putenv.s +ca65 V2.15_putenv_malloc_free searchenv +copyenvptr __environ +__envcount __envsizereturn0ptr1ptr2ptr3tmp1*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXname@L0.size@L1erroraddentry addnewentry@L2nomemnewsize@L3@L5@L4CODERODATABSSDATAZEROPAGENULLUzna` kzòlIµ ÁÄâ&à @’ø¯äü‹\¯ +faXȶiL  +‚­ + +‚ +…2 ‚2­ +‚…' ‚'  ±3 ‚3 + +‚+   * +‚* 8 , +‚,  +‚  +‚à€0°)­ +‚…- ‚-­ +‚… ‚ $± ‚ ( +‚(© Hƒ¢ Iƒ 1 +‚1¢©7 " +‚"à€ °  ¢)ŠL5 +‚5­ +‚…6 ‚6­ +‚…& ‚& ± ‚ !‘ ‚¢ÿ/ŠL +‚  ! + "# 5,*+(1".# +  +2'3-6&¸ƒi49 -P0MHG?")>&9C8LO6E31A4;J$.!I= 5 +F%7@*(,2K/:#'BD<+$ __SIM6502__../libwrk/sim6502/puts.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stdout_puts_strlen_writeL0003.sizepushaxpusha0pushwyspldaxyspL0013incsp2CODERODATABSSDATAZEROPAGENULLUzna` kz0 ª –@NQ$uôiPj@’ø¯äü‹\Ð)faXÈù ;…æ ” +‚” ù & +‚&É©Š 馓+“    = +‚= • +‚•  ™ Æ +‚Æ B +‚B œ +‚œ  Ú > +‚> Ö +‚Ö Â +‚  í  +‚    † +‚† ) +ƒ=)L‡ +‚‡ 9 +‚9 Ñ¢‰ ¥ +‚¥ X¢ª l +‚l  +‚ ÂL3 +ƒV3  1 ¬ +‚ ¬”eý ‚ýHbŠ*eÓ ‚Óªfh! ¶ ü +‚ ü  § † +‚ †  +‚ +Lè +ƒnè¥R ‚R¦À ‚À ¿ ® +‚ ® Ð  +‚  , Ÿ +‚ Ÿ Í +‚Íð  áHá z û +‚û¥³ ‚³¦ ‚ M +‚M p  +‚  ¢ +‚¢  +‚¥{ ‚{¦0 ‚0  +‚   ˜ ? +‚ ? i +‚iHª ä±F ‚Fy +‚yȈ± ‚÷ +‚÷hº E +‚E ƒ +‚ƒŠ¯¨L` +ƒÔ`¥‹ ‚‹¦# ‚#  +‚ ² - +‚-  x +‚ x  +‚ðÀÀ/?/  ¨ +‚¨¥ ‚¦Ì ‚Ì Ÿ +‚Ÿ Ã … +‚ … : +‚: ¸ +‚¸¥Ï ‚Ϧ¼ ‚¼ A +‚A ´ ] +‚ ] K +‚KHñ º±[ ‚[Z +‚ZÈŠ±¹ ‚¹– +‚–h< é +‚é q +‚qà€ò°(©( © … +‚… Ò „ +‚ „ ’ +‚’ð¿¿9 › ƒ +‚ ƒðeã ‚ãH抶e\ ‚\ªshâ S +‚S å ú +‚ úde‘ ‚‘HŠõe± ‚±ªÄhv  +‚¥ø ‚ø¦I ‚I ž +‚ž¥ ‚¦ì ‚ì   +‚ ¥Ê ‚ʦm ‚m  +‚ ¤ O +‚O ¼ ® +‚ ®  +‚´Þ´ÞL´½ +ƒ{´½ÐuuLuÎ +ƒ{uÎ š +‚š  +»Ñ× ‚×Њ²ÈŽÑJ ‚JðC'C — +‚—De· ‚·HŠ;e ‚ªÇhŒ ­ +‚­   ¯ +‚ ¯6eÅ ‚ÅHôŠQe ‚ª‹hË € +‚€¥% ‚%¦a ‚a « +‚« . +‚. ¡ +‚¡ š +‚š  ›  +‚ ó  +7qw ‚wHnŠ˜ÈUqY ‚Yª•h ÿ +‚ÿ—?—ðž=ž¥™ ‚™¦" ‚" W +‚W È t +‚ töe¦ ‚¦H¢ŠÁe§ ‚§ª¹h Ü +‚Ü ¡ 4 +‚4¥ ‚¦@ ‚@ µ +‚µ  P  +‚   ± +ƒ=± Û +‚Û8½å~ ‚~HkŠå– ‚–ªGhÔ ^Lˆ +ƒSˆ¥_ ‚_¦¬ ‚¬ } +‚} L ï +‚ï V à +‚ à8ëåh ‚hH+Šoåç ‚çª¥hß Ý +‚Ý¥¸ ‚¸¦µ ‚µ ê +‚ê  ‰ r +‚ r ‚ +ƒ=‚ Œ +‚ŒNee ‚eH'Še5 ‚5ª­h»  +£ · +‚ ·  T ¤ +‚¤  î œ +‚ œ € +‚€ð££0þHþHLþ’ +ƒTþ’  °±³ ‚³… ‚Èj±“ ‚“…‡ ‚‡ Õ±8 ‚8… ‚È +±É ‚É…„ ‚„ |L +‚<=>?@:Ù6Ù¡3Ùš—.ÛŒ/Ù-Ùƒq,Ùy÷EZ–é+Ù¢i:K(ÙÍ’ÿ€Ù û-¨…O4ï¤&Ù®#Ù"Ùü·Ù¬†Ÿ?x…]„ƒú®¯t àrœÙÂÙ¥lÙ9M Ÿ¸AS­€šWܵ}ÝêÙ‡ÙÖÙBÙ•Ù= Ù&Æ>†Ù”œÂcž«Á2ýÓRÀ³{0‹#Ìϼã\‘±øIìÊm·Å%a™"¦§@~–_¬h縵e5‡„Á F[¹×JwY³“8ɸƒ=Ž¾Ã—à̉ÇÒÜhÌm‘\jˆ½|ú…ƒŠUÚæŶ© Ë-PÿÒêµ¢0M¦]‚í‡lHGŒ·âóÊ?Ûž")oŽ“&ÖØys™)¿Õ– f³ÉåW³¼÷¢€Cøš™°•›}ëL¶´O#¥pÆ–EÆõ§g °±‚μô„tbkÏŸ•ÃÀ€3«¦ŽT1œA›ç²;Äe·§ÇJù˜ün$ïð¿.À^!îiºÈ©„‡(qìIßËáºÓdÍ­¯Ù¬œxÐÊ ¨† +F»ã%ÝÍÅè‹_ ‘[@¥NšÉ*ÑÓ(“Š«ª£a²­r´®¨VŸ®¤Â,¾¡¬—¡ò乃w¾µcRKÂûév±zΤ/Èu¯&~ÞñÔÁ¸* #×öþϪ'ÐýŒ`‹…Á½BS‰£Dž¸Z{Ã’Ä”Q»ˆ˜¹’”YX†+A __SIM6502__../libwrk/sim6502/qsort.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_qsort__swappushaxldaxyspL0048pushwysppush0decax1 tosumulax +_QuickSortincsp8.sizeregswap2decsp4L0004L0002staxyspstax0spL000CL000EaddeqyspL0010tosicmpL0055L001Atosaddaxjmpvecincsp2L0018subeq0spL0056L0053L0057ldax0spL005AL002Cshlax1L0032L0054L0058addyspCODERODATABSSDATAZEROPAGENULLUzna` ixýuŽ ™œÄ`ùY›Z@’ø¯äfaXÁ faXãÆ+ àÐ & É° " H% +ª#½! +‚! +‚½ +‚ +‚© H‚ +‚© I‚$ +‚$h&¢  +‚©ª `!$¸ƒ'--)&7(%6314$6+4%5*,1,2.'+ __SIM6502__common/raise.s +ca65 V2.15jmpvec+/home/hugg/compilers/cc65/asminc/signal.incSIG_ERRSIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERMSIGCOUNTsigtable __sig_ign __sig_dfl_signal_raise.size +invalidsigCODERODATABSSDATAZEROPAGENULLUzna` kz#Îky|ª& ´Ú {Û @’ø¯äü‹\ˆfaXÈì1Ň  +‚  ¢” W +‚ +W¥ ‚¦– ‚– T +‚ T j +‚ j  #±™ ‚™ˆt ‚Ðs +s¥­ ‚­¦~ ‚~  +‚LU +ƒ.U¥Ž ‚Ž ‚ÐJ JÈ E +‚E M +‚M¢eŠ8Lk +ƒ.k©2+e ‚…N ‚N§§æa ‚a¥! ‚!ÉÐpp¥K ‚KÉœ°,,¢¡©:…g ‚g† ‚È [ +‚[ R +‚R Š 4 +‚4… ‚†r ‚r 7± ‚ª¦ˆ‰±ž ‚ž I  +‚ {e) ‚)H¬Š«e¢ ‚¢ªohì +‚ ÐVVVÍm +‚ mЛQ›­u +‚ u8B ˆñ] ‚]HO­( +‚ (È;ñ ‚ªXhCe ‚HŠSe ‚ ª9hZ x +‚x8%íA +‚ A… ‚Š‹í… +‚ …` ‚`ð$$°Œ$Œ £ +‚£ +‚ Ž3 +‚ 3¥‘ ‚‘ ‘D ‚DȤ¥ ‚‘ ‚ ¥@ ‚@¦ ‚Èd‘ ‚ÈŠŸ‘ + ‚ +  lLš +ƒ+š¥h ‚h¦H ‚H  +‚ ¨ n +‚n†ª ‚ª" ‚"ð¥=¥¢1©'  © +‚©¥. ‚.8- Lñ_ ‚_…— ‚—¥ ‚È|ñ= ‚=‚ ‚‚ ð    +‚…q ‚q†G ‚G Q c +‚c   ˜ +‚˜¥F ‚F¦€ ‚€ w +‚w  z ^ +‚^ 0 +‚0 > v +‚vH*†y ‚y  ‡¢6±P ‚P•“ ‚“ˆƒÊ\iøi¦? ‚?h  †L& +‚&234560}&.}c˜,}©)}£'}x%} n$}4#}R}E[^v}j}W}T/A…<mu(3Yw„M0b  `ª"—‚y?f&–­~ŽNa!Kgrž)¢ ‘D @ +hH.qGF€“f™]_=P¸ƒÅ•5®hm\jˆ½|…ƒŠU© -P¢0M]‚‡lHG?ž")o>“&ys¿–fW³9Cš™°•8}L¶O6pEg ±¼„tbk€3«¦ŽT1A›4;e·§Jn$.^!iqIºd¯œx= ¨†5 +F»%7‹_‘[@¥N*(a²­r´®VŸÂ,2¬—¡¹w¾µcRKvz¤/:u~Á¸ #ª'Œ`BS‰£DZ{”Q<˜’YX+7 __SIM6502__../libwrk/sim6502/realloc.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_malloc_realloc_free_memcpy __heapptr __heapendpushaxregswap2decsp6L0002L0001.sizeL0006ldaxyspL000EL0011L000Fdecax4ldaxidxstaxyspL0021stax0spL003Eldax0spL003FL002BsubeqyspL0031pushwyspL003CaddyspCODERODATABSSDATAZEROPAGENULLUzna` iqœ # /2[pý1þ@’ø¯äfaXñe +… ‚ µ ‚ H± ‚• ‚ h‘ ‚èÈÆ ‚Ðð`        ¸ƒ +  + __SIM6502__runtime/regswap.s +ca65 V2.15regswapspregbanktmp1@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqtåô BEi®¯@’ø¯äfaXô=  µ ‚H +± ‚• ‚ h‘ ‚`  +      ¸ƒ      + __SIM6502__runtime/regswap1.s +ca65 V2.15regswap1spregbank.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq·(; GJe¯iI@’ø¯äfaX€µ ‚H± ‚ • ‚h‘ ‚È µ ‚H± ‚• ‚h‘ + ‚ +`  +       +¸ƒ ! +# __SIM6502__runtime/regswap2.s +ca65 V2.15regswap2spregbank.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞ. t€Ý@’ø¯äfaXÅ  +‚L +‚  +   ¸ƒ  + __SIM6502__common/remove.s +ca65 V2.15_remove __sysremove __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞ. t€Ý@’ø¯äfaXÝ  +‚L +‚  +   ¸ƒ  + __SIM6502__common/rename.s +ca65 V2.15_rename __sysrename __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM¾¿ ËÎ)÷\SÍT@’ø¯äfaX¿©ª`  + ¸ƒ     __SIM6502__runtime/return0.s +ca65 V2.15return0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqN¿À ÌÏ)ø\TÎU@’ø¯äfaXÆ¢©`  + ¸ƒ     __SIM6502__runtime/return1.s +ca65 V2.15return1.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz +4 @C[ž¶B·@’ø¯äü‹\ÏfaXÈX  +‚  +‚¢  +‚©  +‚  +‚  +‚L +‚  ¸ƒ   "&!  +% #! __SIM6502__../libwrk/sim6502/rewind.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac _clearerr_fseek_rewindpushaxpushw0sppushl0ldax0spincsp2.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞ)qxÝy@’ø¯äfaX¶  +‚L +‚  +   ¸ƒ  + __SIM6502__common/rmdir.s +ca65 V2.15_rmdir +__sysrmdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix*¢-Ï ÛÞ«‰·@ÝA@’ø¯äfaX€ faX¼ï3)Œ +ƒ­ +‚® +‚  +‚¥ ‚¦ ‚ m +ƒè… ‚†! ‚! ± ‚ªˆ± ‚   +‚¥ ‚ ¦ + ‚ +  +‚¬ +ƒL +‚ +  +! +  ¸ƒ " 0H)&9831A4J!I= +%*(2/ 'B+ __SIM6502__common/scanf.s +ca65 V2.15_scanf_stdinpushaxaddysp_vfscanfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac.sizeArgSize@L1CODERODATABSSDATAZEROPAGENULLUzna` iq=®&Ôòõº¯žMôN@’ø¯äfaXÞ4.  +ƒ) ® +‚Ê"0Š +¨!± ‚… ‚ȱ$ ‚$… ‚  ± ‚ð  Ñ ‚ÐçÈ +Ðõ± ‚É=#ÐÞ`­ +‚… ‚­ +‚… ‚ ` +  $¸ƒ)  ¸ƒ)%PM)& CLO63T1A4;J=5%7N*(,2R '<+ __SIM6502__common/searchenv.s +ca65 V2.15 searchenv +copyenvptr __environ +__envcountptr1ptr2ptr3@L0.size@L9@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` iqùj„ “—*k•’–@’ø¯äfaXé %#… ‚ † ‚ ¥ ‚‘ + ‚ +È ¥ ‚‘ ‚Ⱥè芑 ‚ Èhªh‘ ‚ÈHŠ‘ ‚H L +‚ +     + ¸ƒ -")&.! +*(,2 '+ __SIM6502__common/setjmp.s +ca65 V2.15__setjmpreturn0spptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix'Ÿ°9éìA-›ÈëÉ@’ø¯äfaX€ +faXËð$3.… ‚ ) +‚)¤9 ‚9H˜:)6ð  8 é7ð ((¨h, +.ˆÐüª4˜`h%`hª ©*`i&¨ h †# ‚# +&1 ‚1ˆÐú¦> ‚>`0%&'() !9#1>/)¸ƒ¸ƒ"¸ƒ¸ƒ@-0MHG?")> L61AJ$.!I=5F%@ *,RK/: #SQ* __SIM6502__ runtime/shl.s +ca65 V2.15tosaslaxtosshlaxaslaxyshlaxypopaxtmp1(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeL2L3L4L1L5L9CODERODATABSSDATAZEROPAGENULLUzna` iq(™ªÇÊÓzÉ@’ø¯äfaXÍñ4.… ‚  +‚ ¤ ‚H$˜!)ð8é'ð##¨h +Š%JˆÐ)ü)¢`h`hŠ¢` i¨ h† ‚F ‚j&ˆ Ð(ú(¦ ‚`  ¸ƒ¸ƒ*-H?)>&9C861A!I=%7@*,2K 'BD+ __SIM6502__ runtime/shr.s +ca65 V2.15tosshraxshraxypopaxtmp1.sizeL2L3L4L1L5CODERODATABSSDATAZEROPAGENULLUzna` iqeÖ ß ëî._{í|@’ø¯äfaXñ.† ‚F ‚j¦ ‚`  +  ¸ƒ    + __SIM6502__runtime/shrax1.s +ca65 V2.15shrax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqtå +ï ûþ86_•ý–@’ø¯äfaXž=  † ‚ F ‚jF ‚j¦ + ‚ +`  +    +¸ƒ     + __SIM6502__runtime/shrax2.s +ca65 V2.15shrax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqƒô ÿ BP_¯ °@’ø¯äfaXÅL† ‚ F ‚jF + ‚ +jF ‚ j¦ ‚`  +    + ¸ƒ     + __SIM6502__runtime/shrax3.s +ca65 V2.15shrax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq’  Lj_ÉÊ@’ø¯äfaXí[† ‚ F ‚jF ‚ jF ‚j +F ‚j¦ ‚`  +     ¸ƒ      + __SIM6502__runtime/shrax4.s +ca65 V2.15shrax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqð =Lf²³@’ø¯äfaX¹H  † ‚F ‚f ‚ f ‚j ¦ ‚`  +    ¸ƒ +    + __SIM6502__runtime/shreax1.s +ca65 V2.15shreax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq¨, 8;QŒfò:ó@’ø¯äfaXŒq† ‚F ‚ f ‚ f ‚jF ‚ f ‚f ‚j¦ ‚`  +      ¸ƒ +    + __SIM6502__runtime/shreax2.s +ca65 V2.15shreax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqÑBX dgeÌf2f3@’ø¯äfaXßš† ‚F + ‚ +f ‚f ‚jF ‚ f ‚f ‚jF ‚f ‚f ‚ j¦ ‚`  +       + ¸ƒ     + __SIM6502__runtime/shreax3.s +ca65 V2.15shreax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq” !$LpjÚ#Û@’ø¯äfaXí] † ‚¢F ‚ f ‚f ‚j +ÊÐö¦ ‚` +      ¸ƒ     + __SIM6502__runtime/shreax4.s +ca65 V2.15shreax4sregtmp1.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iš¹+äçiPóCæD@’ø¯äfaXª faXãfaX€ ä10'… ‚†: ‚:  +‚àÐ@@É9°$$ +ª=x ½- +‚-HG¥1 ‚1 +‚½" +‚"H7¥ ‚  +‚X2hª)h`8©  + +‚+ª `23456+/-"(:1 !¸ƒ>¸ƒ/?¸ƒ(H --0?))>&9C78(%61A.6!+475@**,1,2./:  'BD +"+7 __SIM6502__common/signal.s +ca65 V2.15popaxptr1+/home/hugg/compilers/cc65/asminc/signal.incSIG_ERRSIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERMSIGCOUNTsigtable __sig_ign __sig_dfl_signal_raise*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.size +invalidsigCODERODATABSSDATAZEROPAGENULLUzna` ix[Ó ß ëîo]êGíH@’ø¯äfaXæfaXã$  +‚ +‚ +‚ +‚ +‚ + +‚   + ¸ƒ -)7(%6+45*,. __SIM6502__common/sigtable.s +ca65 V2.15sigtable+/home/hugg/compilers/cc65/asminc/signal.incSIG_ERRSIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERMSIGCOUNT __sig_ign __sig_dfl_signal_raise.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz=·¸¹¼ÌÒž»Ÿ@’ø¯äü‹\faXÈ  + __SIM6502__../libwrk/sim6502/sleep.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.macCODERODATABSSDATAZEROPAGENULLUzna` ix ƒ%¨ ´·—NŶ@’ø¯äfaX faX¼Ð+$Œ +ƒ  +‚­ +ƒe ‚… ‚¦ ‚è† ‚ ± ‚ ‘ ‚ ˆ +ù +¥ ‚¦ ‚  +‚¬ +ƒL +‚ +   +   ¸ƒ-?) C6E34;$.5*(,2:D+ __SIM6502__common/snprintf.s +ca65 V2.15 _snprintfpushaxaddyspdecsp6 +_vsnprintfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` ix ƒ%¨ ´·—N¶@’ø¯äfaXý faX¼Ð+$Œ +ƒ  +‚­ +ƒe ‚… ‚¦ ‚è† ‚ ± ‚ ‘ ‚ ˆ +ù +¥ ‚¦ ‚  +‚¬ +ƒL +‚ +   +   ¸ƒ-?) C6E34;$.5*(,2:D+ __SIM6502__common/sprintf.s +ca65 V2.15_sprintfpushaxaddyspdecsp4 _vsprintfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` ix ƒ%¨ ´·—N¸¶@’ø¯äfaXã +faX¼Ð+$Œ +ƒ  +‚­ +ƒe ‚… ‚¦ ‚   è† ‚ ± ‚‘ ‚ˆ +ù +¥ ‚¦ ‚  +‚ ¬ +ƒL +‚ +     ¸ƒPHG? 9C8L61A;57@(R:'BQ __SIM6502__common/sscanf.s +ca65 V2.15_sscanfaddyspdecsp4_vsscanfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` iq¨6 BE`¥rD@’ø¯äfaX…q +H„ ‚ ± ‚ … ‚ˆ± ‚… ‚¤ ‚ h +‘ ‚L +‚      ¸ƒ     __SIM6502__runtime/staspidx.s +ca65 V2.15staspidxincsp2sptmp1ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqpáé GPf¶·@’ø¯äfaX£9  + ‘ ‚ ÈH Š ‘ ‚h`  +    + ¸ƒ ¸ƒ    + __SIM6502__runtime/staxsp.s +ca65 V2.15staxyspstax0spsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq¨*GJe¯nI@’ø¯äfaX¡q  ‘ ‚ÈHŠ ‘ ‚È¥ ‚‘ ‚È¥ ‚ ‘ ‚h` +      ¸ƒ ¸ƒ +     + __SIM6502__runtime/steaxsp.s +ca65 V2.15steaxyspsteax0spspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` i±0I)rudÙÝtÞ@’ø¯äfaX faX¼ faXËÒ')!º8à BB`'­ +ƒ Å% ‚%°  `5Э +ƒÅA ‚A°44`>­D +ƒD…@ ‚@­* +ƒ*… ‚©-¢L3 +‚3()*+,’-¥9 ‚9! +ƒ!8)é) H‚) +ƒ¥; ‚;, +ƒ,é I‚ i7 +ƒ7` .  +  +%A@9; 3)¹ƒ#¸ƒ?$¸ƒ8$G \-P0lH)o&Ob;J$!I=%[*(ar,2cRK/:#' SDZQ<YX/ __SIM6502__runtime/stkchk.s +ca65 V2.15stkchkcstkchk +initstkchk __STACKSIZE__pusha0_exitsp,/home/hugg/compilers/cc65/asminc/generic.mac(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510 initialsplowwater.sizeFail@L0@L1CStackOverflowDoneCODERODATABSSDATAZEROPAGENULLONCEINITUzna` iq=®µ ÀÃØ^6Â7@’ø¯äfaX€  + ‚  + __SIM6502__common/strcoll.s +ca65 V2.15_strcoll_strcmpCODERODATABSSDATAZEROPAGENULLUzna` iqçXr ~oðp`€a@’ø¯äfaXã° … ‚ † ‚  +‚… ‚† ‚  ± ‚‘ ‚ð +  +È Ð÷æ ‚æ ‚Ðñ¥ ‚`   ¸ƒ      __SIM6502__common/strcpy.s +ca65 V2.15_strcpypopaxptr1ptr2.sizeL1L9CODERODATABSSDATAZEROPAGENULLUzna` i4³8ë ÷ú-'ßù@’ø¯äfaXµfaXË!faX¼ý%6.H& 4 +‚4 Š!‘ ‚h5ˆ1‘ ‚  +‚ i(  è/… ‚† ‚  +‚ :‘" ‚"… ‚Š È'‘ ‚ ‚ð$$¥, ‚,¦ ‚L + +‚ +ª+L6 +‚6&'()*  +  + #6#4,"¸ ƒ<U -M?")>  8LE3A4 $.= +F@ RK/ #SQ<+ __SIM6502__common/strdup.s +ca65 V2.15sptmp1ptr4pushaxdecsp4incsp4_strlen_malloc_memcpy_strdup(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510,/home/hugg/compilers/cc65/asminc/generic.mac.size@L1 OutOfMemoryCODERODATABSSDATAZEROPAGENULLUzna` ix¬$3 ?BÓi~A@’ø¯äfaXöfaX€ u$àÐÉ + + +©  +‚ ©& +‚& +¨¾' +‚'¹! +‚!`%&'()$ &'!¸ƒ* ! + "   #* __SIM6502__common/strerror.s +ca65 V2.15 _strerror __sys_errlist*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` ix „žµ¸Ø8È·É@’ø¯äfaXØ +faXäÕ($… ‚ † ‚… ‚† ‚ &±# ‚#𪽠+‚)ð''Š"8éà +‘$ ‚$ÈÐëæ ‚ Ð%ç%¥* ‚*¦ ‚` ! * #$ ¸ƒ¸ƒ+ -0"& $!  %, #'+" __SIM6502__common/strlower.s +ca65 V2.15 _strlower_strlwrpopax__ctypeptr1ptr2*/home/hugg/compilers/cc65/asminc/ctype.incCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.sizeloopL9L1CODERODATABSSDATAZEROPAGENULLUzna` ix=µÓ ßâµ—±HáI@’ø¯äfaX¦ faX¼ 0.… ‚  H‚„ ‚  I‚„ ‚ ± ‚ð  ȱ ‚Å + ‚ +ð  ˆ#¥ ‚q ‚… ‚éæ ‚°å¦ ‚¥ ‚ i   è`  + + ¸ƒ!$-0"& 9861;$.!= +%7,2/: '+ __SIM6502__common/stroserr.s +ca65 V2.15 __stroserror__sys_oserrlistptr1tmp1,/home/hugg/compilers/cc65/asminc/generic.mac.size@L1DoneCODERODATABSSDATAZEROPAGENULLUzna` kzSÍS  -0nžq +/ +@’ø¯äü‹\¾faXÈý*ê¹ Z +‚Z  ¢? b +‚b¥ ‚8 ‚8Ð[#[­5 +ƒ5…: ‚:­J +ƒJ…, ‚,­O +ƒOÉ"'Ð##Lc +ƒŒc­; +ƒ;ÐssªGL +ƒÚæ ‚ÐTTæ9 ‚9 j +‚j $±m ‚m. +ƒ.¢L  +‚† ‚D ‚DÐ=Ü=­_ +ƒ_É")ð7¥U ‚U+ +ƒ+¥ ‚ r +ƒrL^ +ƒb^æk ‚kÐ77æ + ‚ + Y±" ‚"w +ƒwÉ"vðnn S +‚S­ +ƒ¢ @ +‚@†Q ‚Qi ‚iðWÞW­2 +ƒ2Ð]<]LE +ƒÊEæ< ‚<Ð  æ/ ‚/©B +ƒB¥ ‚3 +ƒ3¥ ‚ +ƒ¥> ‚>¦ ‚ - +‚-¢C©"X  +‚…1 ‚1†d ‚dà`Ð\\ÉFÐ +©a Hƒao +ƒo© IƒL( +ƒÑ(©e¨‘4 ‚4æp ‚pÐæ ‚¥0 ‚0 +ƒ¥I ‚I +ƒ­ +ƒ®l +ƒlH  P±h ‚h…M ‚MÈ6± ‚…t ‚thRLu +‚u +,VV- +ƒA./)&u!&jS&b&Z-H@  DQiK8:,9mU k +"1d4p0IMtKh¸ƒê*xhm\jˆ|…ƒŠU -P0M]‚‡lHG?o>&ysfW9C•8}LO6pEg„tbk€3ŽT1A4;eJn.^!iqIdx= †5 +F%7‹_‘[@N(arV,2wcRKvz/:u~ 'Œ`BS‰DZ{”Q<’YX0 __SIM6502__../libwrk/sim6502/strqtok.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_strchr_strqtokL003E.sizeL0004L0005L0002L0003pushaxregswap2L0011L004CL000FL0016L0001pushw0spL001DL0022L0020L004BL0036L002EL004Eincsp4CODERODATABSSDATAZEROPAGENULLUzna` iq=®µ ÀÃÓb5Â6@’ø¯äfaXÈ  + ‚ __SIM6502__common/strtoimax.s +ca65 V2.15_strtol +_strtoimaxCODERODATABSSDATAZEROPAGENULLUzna` kzYÓa4 AD M{ÈCÉ@’ø¯äü‹\–faXÈ+ËŸ ^ +‚^ Y¢6  +‚ Z +‚Z¥3 ‚ 3A ‚ AÐ +­[ +ƒ[…H ‚ H­ +ƒ…G ‚ G g±L ‚ LÐ ª4LU +ƒ»Uæ ‚  Ð,,æM ‚ M *±. ‚ . >‘# ‚ +#ªBð  V +‚V /±d ‚ +d¢<  +‚àÐEÝEÉ-Ð]Ù] ±` ‚ +`Ð%%¥@ ‚ @ +ƒ¥ ‚ 9 +ƒ9Š1LR +ƒ»R¥ ‚  ¦ ‚   F +‚FL" +ƒr"æ ‚  ÐccæQ ‚ Q _±+ ‚ + ‘K ‚ +Kªðff e a +‚a D± ‚ +¢  5 +‚5àCÐ\\ÉIð(Ù( P±: ‚ +:Ð0 0¥ ‚ & +ƒ&¥ ‚ 7 +ƒ7L +ƒ¸©)¨‘ ‚ ¥2 ‚ 2¦ ‚  $ +‚$8 +ƒ8ŽJ +ƒJ  +‚H' W±S ‚ +S…N ‚ NÈ;± ‚ +…T ‚ ThbL +‚,- ./0 * +) +( +$! +F +Va +Z + +^=5?3AHGL M.@ Q+2NT?#d`K:S¸ƒËO!hhm\j|U -P0M]lHG?")o>&ysfW9C8LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 +F%7_[@N*(arV,2wcRKvz/:u~ #'`BSDZ{Q<YX+1 __SIM6502__../libwrk/sim6502/strtok.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_strchr_strtok_Last.sizepushaxregswap2decsp3L0003L0039L0002L000BL0017L003FpushwyspL0018stax0spL0021L001FL0040L0037L002CL0030incax1ldax0spincsp7CODERODATABSSDATAZEROPAGENULLUzna` kz/ © 6DG²ùzsFt@’ø¯äü‹\‰(faXÈø MåÒ  +‚ ¥• ‚•¦… ‚… › +‚› 9 ‡ +‚‡…• ‚•†À ‚À ? +‚? Ž +‚Ž Ñ +‚Ñ : +‚: Ï +‚ÏL° +ƒ+°æã ‚ãÐæ˜ ‚˜ û±& ‚&¢ƒ å +‚å†~ ‚~ˆ ‚ˆÐºëº¨f±Á ‚ÁÉ+\ðR +RÉ-üЋ ‹©¤  ¶‘= ‚=æ5 ‚5ÐËËæ† ‚† ”±T ‚TÈ™i ‚iм4¼ª0¡. ‚.É0¦Ð$æô ‚ôÐ``æ' ‚'¡Í ‚ÍÉxdð  ÉX£Ðó óæ– ‚–Ђ‚æ ‚©ÞLN +ƒ‡N©­ˆ¬  +‚LÊ +ƒ·Ê© + ˆ) š +‚šLÇ +ƒ·Ç±‘ ‚‘Ð×%׈x±ò ‚òɬРI±m ‚mÉ0Ðȱy ‚yÉx-ð + +ÉX”Ð; ;©g¤eÚ ‚Ú…C ‚Cwwæý ‚ý  ÷±ï ‚ïð³ ³¢B†ù ‚ù©€žL +ƒÌ¢ÿ^†ÿ ‚ÿ©"…} ‚}Š  *  +‚ v  +‚  ¹ +‚ ¹ ,  +‚ — +‚ —  +‚ + Æ‘ ‚ ½  +‚  6 +‚ 6 ¦ É +‚É © +‚ © > +‚ > ¡ Z +‚Z G±ç ‚碨 W +‚W†V ‚V‡ ‚‡ð² ²¢ˆ¡8 ‚8 0ßLo +ƒIo¨è±% ‚%¢˜ ú +‚ú†Ì ‚Ì€ ‚€ð ¢¸¡ ‚ 7L +ƒI¨æ±Ù ‚Ù¢Ü ¯ +‚¯†Y ‚Yq ‚qÐØØLØÈ +ƒØØÈ¢O¡Û ‚Û Wñ b +‚b Ž‘„ ‚„ ìѪ ‚ª©¾Ètñ ‚°ð}ð  E ™ +‚ ™ ƒ +‚ ƒ â | +‚ | Œ +‚ŒÐÄ#Ä  j  +‚  Ÿ +‚ Ÿ K µ +‚ µ ¨ +‚¨ð ­±s ‚s8Œ ´ñÐ ‚Ð… ‚¥« ‚«ð‚‚FF©@ ‰‘A ‚A °± ‚Ð707    +‚  € +‚ € §  +‚ © +‚ © 3 +‚3 ¿ +‚ ¿  ë¢M± ‚ ‰ +‚‰ Å +‚Å  +ö # +‚# _¢¥©+ œ +‚œæ– ‚–ð—®—®L— +ƒ— æ ‚Lé +ƒé 4±u ‚uˆkŠ ‚ŠðP4P U±‘ ‚‘Èõ ‚õð““  ‹ +‚‹…! ‚!†S ‚S¥Ã ‚àr‘î ‚îÈ¢¥“ ‚“L¯ +ƒ¯ £ § +‚§… ‚†Ó ‚Ó ’ 1 +‚1 ‘< ‚<È¢ŠL‘ ‚  Ÿ±Ò ‚Òðª#ª©{ h +‚h  ±’ ‚’ðD D¢Î†[ ‚[©€……] ‚]Š›Lz +ƒSz¢ÿH†ä ‚ä©Q…Ö ‚ÖŠáLe +ƒSeÈ(±l ‚lðÝ Ý  ¡ Õ +‚ Õ Ô +‚ÔL± +ƒS±  ® à +‚ àHþ p±ø ‚ø…Š ‚ŠÈJ±c ‚c…$ ‚$h 2Lœ +‚œNOPQRL¥œK¥ÔC¥œB¥ÅA¥‰@¥3=¥¨;¥Œ:¥b4¥>3¥2¥—©©1¥¹6ƒŸ€¿0¥ ™|µÂÕà/¥Z#*¥š¥Ï¥:¥ŽÑ¥?¥‡É‹§1¥ ›nh úíåa¯·W  +~ˆV‡Ì€Yq«»!•…•Àã˜&Á5†.ô'Í–myÚCýç8%ÙۖÓŠ$»ùÿ}!SîÓ< []äÖ»=Ti‘òsÐAuŠ‘õÒ’løc¸ƒå†X±—à̉ÇÒÜhm‘\jˆ½|ú…ƒŠUÚ涩 -Pÿêµ¢0M¦]‚í‡lHGŒ·âó?Ûž")oŽ>“&ÖØys™¿Õ– f³ÉåW³÷¢9€Cøš™°•›8}ëL¶´O¥6p–EÆõ§g °±‚μô„tbkŸ•Ã€3«¦ŽT1œA›4ç²;Äe·§Jù˜ün$ïð.À^!îiºÈ©„‡qìIßËáºÓdÍ­¯Ù¬œxÐÊ= ¨†5 +F»ã%7ÝÅè‹_ ‘[@¥Nš*Ñ(“Š«ª£a²­r´®¨VŸ®¤Â,¡2¬—¡ò 乃w¾µcRKûév±z¤/:u¯~ÞñÔÁ¸ #×öþϪ'ýŒ`‹…BS‰£Dž¸Z{’”Q<»ˆ˜’”YX†+S __SIM6502__../libwrk/sim6502/strtol.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_isdigit_islower_isspace_isupper +__seterrno_strtolpushaxldaxysppushl0pushapush0decsp6L000AL0008.sizeL0017L0011L0091L0090L0020L008EL008FL0025L00A2staxyspL002FL0096L003BL00AAsteaxyspldeaxysppusheaxaxlong +tosumodeax +tosudiveaxL0047L004BL00A8L0051L0048decaxy tosugteaxL0062toseqeaxL0061L0069 +tosumuleaxaxulong tosaddeaxaddeqyspL0078L0073L00A5L0083L007FL0088L0085negeaxaddyspCODERODATABSSDATAZEROPAGENULLUzna` kzm ç mT b e :Ÿj d  +@’ø¯äü‹\×%faXÈ6 J¸´  +‚ ¥ƒ ‚ƒ¦ó ‚ó “ +‚“ 6 õ +‚õ… ‚†´ ‚´ < +‚< ü +‚ü Å +‚Å 7 +‚7 à +‚ÃLœ +ƒ+œæÓ ‚ÓÐæ ‚ ê±$ ‚$¢| Õ +‚Õ†w ‚w ‚Ю뮨`±µ ‚µÉ+XðN +NÉ-ëЃ ƒ©‘  ª‘: ‚:æ2 ‚2п¿æ ‚ ‚±P ‚Pȇc ‚cа4°ª.¡, ‚,É0œÐˆ$ˆæä ‚äÐ\\æ% ‚%¡Á ‚ÁÉx_ðÉXÐã ãæ„ ‚„Ð{{æ ‚©ÏLJ +ƒ‡J©™ˆ˜ Š +‚ŠL¾ +ƒ·¾© + ˆ' ’ +‚’L» +ƒ·»±ÿ ‚ÿÐÉ%Ɉq±â ‚âɢЅ… F±g ‚gÉ0Е•È±r ‚rÉx+ð + +ÉXŒÐ8 8©ašeÌ ‚Ì…@ ‚@ppæì ‚ì¢ÿç†ß ‚߆§ ‚§Š? è +‚è ‹  +‚ Z +‚ Z í +‚ í !‘v ‚v¢ÿ†( ‚(† ‚Šo  +‚ ­ * +‚*  +‚  … +‚ …  º +‚ +º þ±± ‚±¢z 3 +‚3†’ ‚’½ ‚½ð• •¢;¡Ž ‚Ž 0VLD +ƒ0D¨×±” ‚”¢S R +‚R†€ ‚€¦ ‚¦ðö ö¢5¡Ð ‚Р7iLØ +ƒ0ب#±† ‚†¢é À +‚À†y ‚y‡ ‚‡Ð¬¬L¬¼ +ƒ¿¬¼¢¡û ‚û Wx Ö +‚ Ö Ë‘Î ‚Π¤ÑU ‚U©jÈÊñK ‚K°Í}Í  á ^ +‚^ † +‚† ò Ü +‚Ü   +‚ Ð²#²  m  +‚ à +‚à B ‘ +‚‘ ñ +‚ñðÒÒ u±„ ‚„8¸ dñ ‚…– ‚–¥G ‚Gð©©žž© £‘l ‚l ú±¨ ‚¨ÐÄ0Ä   ¡ +‚¡ ð +‚ð C = +‚= ÷ +‚ ÷ > +‚> ¥ +‚¥  ¢4± ‚ ¶ +‚¶ î +‚î  +  +‚ + Ÿ¢0©³ Û +‚ÛæI ‚IðššL +ƒê æ‚ ‚‚L¹ +ƒê¹ æ±" ‚"ˆ[› ‚›ð)4) ”±Ž ‚ŽÈï ‚ïðÙÙ 1 n +‚n…e ‚e†ø ‚ø¥L ‚L Q‘‰ ‚‰È¥å ‚åL‹ +ƒú‹ ý ù +‚ù… ‚ †O ‚O · k +‚k Þ‘˜ ‚˜ÈŠ›‘™ ‚™ “± ‚ðÇÇ©€ / +‚/¢ÿ†9 ‚9† ‚ŠHL +ƒ& ÈŒ±Æ ‚Æð– –  t b +‚b  +‚LŠ +ƒ&Š  A  +‚ÂHW ~±Y ‚Y…‰ ‚‰Ès±E ‚E…Ô ‚ÔhM ÈLÑ +‚ÑKLMNOIfÑHfAfÛ@fî?f¶>f>;fñ9f 8f^Ü‘¡bÂ7fÖ1fº0f…/fí.fZ÷-fè†àð¥*fŠ’fÃf7füÅf<fõ*=nùkf “h/—RÝÕ]À«3  +w’½€¦y‡–G¯!ƒó´Ó$µ2,ä%Á„grÌ@챎”ІûI‚Lå‰Ô¯ ߧ(eø‰ O˜™9¯:PcÿâvÎUK„l¨"›ŽïÆYE¸ƒ¸ôT—à̉ÇÒÜhm‘\jˆ½|ú…ƒŠUÚæ© -Pÿê¢0M¦]‚í‡lHGŒâó?Ûž")oŽ>“&ÖØys™¿Õ– fÉåW³÷¢9€Cøš™°•›8}ëL¶O6p–EÆõ§g ±‚μô„tbkŸ•Ã€3«¦ŽT1œA›4ç;Äe·§Jù˜ün$ïð.À^!îiÈ„‡qìIßËáºÓdٜͯxÐÊ= ¨†5 +F»ã%7ÝÅè‹_ ‘[@¥Nš*Ñ(“Š£a²­r´®VŸ¤Â,¡2¬—¡ò 乃w¾µcRKûévz¤/:u~ÞñÔÁ¸ #×öþϪ'ýŒ`‹…BS‰£DžZ{’”Q<ˆ˜’”YX†+P __SIM6502__../libwrk/sim6502/strtoul.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_isdigit_islower_isspace_isupper +__seterrno_strtoulpushaxldaxysppushl0pushapush0decsp6L000AL0008.sizeL0017L0011L0083L0082L0020L0080L0081L0025L0094staxyspL002FL0088pusheaxaxlong +tosumodeax +tosudiveaxsteaxyspL003FL0043L0099L0049L0040decaxyldeaxysp tosugteaxL005AtoseqeaxL0059L0061 +tosumuleaxaxulong tosaddeaxaddeqyspL0070L006BL0096L0073L007BL0078negeaxaddyspCODERODATABSSDATAZEROPAGENULLUzna` iq=®µ ÀÃÓc6Â7@’ø¯äfaXË  + ‚ __SIM6502__common/strtoumax.s +ca65 V2.15_strtoul +_strtoumaxCODERODATABSSDATAZEROPAGENULLUzna` ix „žµ¸Ø8È·É@’ø¯äfaXØ +faXäÕ($… ‚ † ‚… ‚† ‚ &±# ‚#𪽠+‚)ð''Š"ià +‘$ ‚$ÈÐëæ ‚ Ð%ç%¥* ‚*¦ ‚` ! * #$ ¸ƒ¸ƒ+ -0"& $!  %, #'+" __SIM6502__common/strupper.s +ca65 V2.15 _strupper_struprpopax__ctypeptr1ptr2*/home/hugg/compilers/cc65/asminc/ctype.incCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.sizeloopL9L1CODERODATABSSDATAZEROPAGENULLUzna` kz¥'F RUj¿ÒTÓ@’ø¯äü‹\¸faXÈn   +‚   + +‚ +   +‚   +‚   +‚   +‚  +‚ L +‚  +  ¸ƒ  ")&$!  +%( # __SIM6502__../libwrk/sim6502/strxfrm.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_strlen_strncpy_strxfrmpushaxpushwyspldaxyspincsp6.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix‘ 47É{{6|@’ø¯äfaXåfaXËZ¢8Iÿ #q ‚È HŠIÿq$ ‚$ªhL +‚  ! $ ¸ƒ¸ƒ("  !  #" __SIM6502__ runtime/sub.s +ca65 V2.15tossuba0tossubaxaddysp1sp(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqš  +25eši4@’ø¯äfaXñc 8Iÿq ‚‘ ‚ HÈŠIÿq ‚‘ ‚ ªh`  +      ¸ƒ + ¸ƒ     + __SIM6502__runtime/subeqsp.s +ca65 V2.15subeq0spsubeqyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq€ñ ú  GPa±²@’ø¯äfaXßI  ˜ Iÿ8 e ‚ … ‚°Æ ‚`  +    ¸ƒ  +   __SIM6502__runtime/subysp.s +ca65 V2.15subyspsp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz”# /2[õ‚1ƒ@’ø¯äü‹\®faXÈ]  +‚ ± ‚ È ‚ ЪL +‚¢ÿŠL +‚  ¸ƒ + "&!  +% # __SIM6502__../libwrk/sim6502/system.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_systempushaxL0002incsp2.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzq뜇 ”—ìƒ +– +@’ø¯äü‹\„faXÈ:*¢Ä O +‚ +O   ~ +‚ ~©x L +‚L   y +‚y8I  +[ñ$ ‚$…z ‚zŠeÈ ñd ‚d ‚iiðŽŽL +ƒ¢J t± ‚AÈjq> ‚>DDèWÉ4Š\é/**© uLE +ƒAE©ˆ T‘" ‚"  b +‚b C±} ‚} + +‚+  6 +‚6 Y +‚ Y  +‚   +‚ Q G +‚G q 1 +‚1 ±c ‚c 3 +‚3  ‡ +‚‡ p +‚ p  +‚  @ +‚@   h +‚h )± ‚¢Œ  ƒ a +‚a    +‚  +KÑ^ ‚^Š|Èfñ; ‚;oo R +‚R  F ( +‚(©7 ‘M ‚M  < +‚< ± ‚ H +‚H ! 5 +‚5 P +‚ P g +‚ g & +‚& : v +‚v r n +‚n S±% ‚% s +‚s „  +‚  0 +‚ 0 w +‚ w  +‚ = … +‚…    +‚   9  + +‚ +  V  +‚   € +‚€  +‚  ] { +‚{ Z ? +‚?  ‰ +‚‰ ` Š +‚Š #±† ‚†Ð..L._ +ƒƒ._ 'Lk +‚k+,-./),k',a%,@$,Gh(v…?Š#,&",+3Hs!,b1"}c^;M%†¸ƒ¢2hm\jˆ|…ƒŠU -P0M]‚‡lHG?")o>“&ys–fW9Cš™•8}LO6pEg„tbk€3ŽT1A4;eJn$.^!iqIdx= †5 +F%7‹_ ‘[@N*(arV,2— wcRKvz/:u~ #'Œ`BS‰DZ{”Q<’YX+0 __SIM6502__../libwrk/sim6502/tgi_arc.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac _tgi_line_tgi_arc_tgi_imulround _cc65_sin _cc65_cospushaxsubysppushaldaxyspL0005L0019.sizeL0037L0039L003Apushwysppusha0tosaddaxstaxysptossubaxL0018addeqyspL001DaddyspCODERODATABSSDATAZEROPAGENULLUzna` iq=®µ ÀÃÓqDÂE@’ø¯äfaXš  + °‚  + __SIM6502__tgi/tgi_free_vectorfont.s +ca65 V2.15_free_tgi_free_vectorfontCODERODATABSSDATAZEROPAGENULLUzna` ixä\x•˜°H`—a@’ø¯äfaXí faXÑ­%… ‚† ‚  +‚   +‚É€Š"¤ ‚0 +i¨¥ ‚iª˜`é¨ ¥ ‚ 骘!`  + +    ¸ƒ¸ƒ#-0?"& 98314;  = 57*,2/:<+ __SIM6502__tgi/tgi_imulround.s +ca65 V2.15_tgi_imulround tgi_imulroundpopax imul16x16r32-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L1CODERODATABSSDATAZEROPAGENULLUzna` kz—ÃÔ áä—{ +ÌG ãH @’ø¯äü‹\faXÈK2Ää s +‚ s ! +‚ ! r +‚ +r « +‚ «©} +‚  U Ž +‚Ž© J +‚J ~ E +‚E N f +‚fà€9j„j„LjZ +ƒ,jZ 3 , +‚,©  O +‚O £ +‚ £¢b©#  +‚àoðL©L©LL +ƒ,LÉ™ð-©-©L- +ƒ,-© ; +‚; h +‚ h© Hƒ¢ Iƒ \ +‚ \¢R©Š 5 +‚5àðq©q©Lq +ƒ,qÉ8ð©©L +ƒ,  ¢ ‰ +‚‰ š +‚š I  +‚ à{Ð* *ɨЧ§©žn +‚ nL +ƒ,  V +‚V l ˜ +‚˜ t B +‚B ˆ +‚ˆ  ]ÑP ‚PÐ((Š<ÈÑX ‚Xð  C  +‚  +‚LS +ƒ,S " : +‚: [ +‚[© w& Aq ‚H‹©†Èaq% ‚%ªŒhŸ  4 +‚4©‘¨‘D ‚DÉ_ °D   @ +‚@ b e +‚e… ‚† ‚¢›¡ + ‚ + +k——èiHe ‚H¤Šme¦ ‚¦ª$h¡ 2 +‚ 2 ' +‚'…€ ‚€†¥ ‚¥ / . +‚.Me` ‚`H•Še| ‚|ª>h  œ +‚œ©pqG ‚GLQ +ƒ×QŒd +‚ d   – +‚–LF +ƒ?F  v +‚vŠz0^^ 1 ? +‚? u +‚u¢+Šy ‡L7 +‚73TWC H”T45671ƒ7.ƒœ-ƒ'+ƒe%ƒ ‰B:@.–v?$ƒO;"ƒf 4!ƒJ ƒŽ,V˜ƒ«ƒrƒ!ƒs£h\2)nd0ˆ=[uYE…56cš  ¦€¥`|gPX%D +G¸ƒÄ¬hm\jˆ|…ƒŠU© -P¢0M]‚‡lHG?ž")o>“ys–fW³9Cš™°•8}L¶O6pEg ±„tbk€3«¦ŽT1A›4;e§Jn$.^!i5qId¯1œx= ¨†5 +F7‹_‘[@¥N*(a²­r3´®VŸ,2¬—¡ ¹4wµcRKvz¤/:u~¸ #ªŒ`BS‰£DZ{”Q<˜’YX.+8 __SIM6502__'../libwrk/sim6502/tgi_load_vectorfont.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_malloc_free_memcmp_open_close_read_tgi_load_vectorfont +_tgi_errorL000B.sizepushaxdecsp8push0decsp3pushwysppusha0staxyspL0019leaa0spldaxyspL002CL0055L0031L0052L0054incaxyL0053ldaxi staxspidxL0009L004BaddyspCODERODATABSSDATAZEROPAGENULLUzna` kzžvŽ ›ž›9aš›@’ø¯äü‹\ÄfaXÈg!µu  +‚  I C +‚C  )  +‚   E±& ‚ & 1 +‚1  ±F ‚ F 8 +‚8   7 +‚7  Q ; +‚;  +‚   ' A +‚A    +‚  <  +‚  "±. ‚ .  +‚  2  +‚  +‚ B +‚ +B # +‚# N +‚N ,  +‚   ±5 ‚ 5 ! +‚!  H  +‚ K +‚ K  +‚ + 0 +‚0  +‚      + +‚+  % @ +‚@   +‚  6± ‚   +‚  M ? +‚? J +‚J  +‚ +  +‚ : +‚:  P +‚P  O±L ‚ L 4 +‚4    +‚ ( +‚ ( 3 +‚ +3 G +‚G 9 +‚ 9  +L> +‚>"#$%&>0G#!4;?18 C 7A +@PN:JK(*B3- 9/&F.5L¸ƒµD=R\U -P0M]HG?")>&fW9C8LO6Eb3T1A4;eJ$.^!I= 5 +F%7_[@N*(aV,2cRK/: #'`BSDZQ<YX+' __SIM6502__ ../libwrk/sim6502/tgi_pieslice.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac _tgi_line_tgi_arc _tgi_pieslice_tgi_imulround _cc65_sin _cc65_cospushaxpushwysppushaldaxysppusha0tosaddaxtossubaxaddysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz|ö÷ =Cà#$@’ø¯äü‹\‹faXÈE UTCUTC +¸ƒ    + __SIM6502__../libwrk/sim6502/timezone.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac__tz.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq€ñø LSgº»@’ø¯äfaX¡I àÐ ¨ ¹ +‚JJ +˜éà`  +    ¸ƒ      + __SIM6502__common/tolower.s +ca65 V2.15_tolower__ctype.sizeL9CODERODATABSSDATAZEROPAGENULLUzna` ix $'ºárS&T@’ø¯äfaXäfaXËYH ± ‚  ‘ ‚ˆ± ‚ ‘ ‚hL! +‚!  +!¸ƒ%  ! ! __SIM6502__runtime/tosint.s +ca65 V2.15tosintincsp2sp(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix#›²ÏÒ2“Ñ”@’ø¯äfaXŠ +faXËì8,H!  +‚ ± ‚ 6‘ ‚ 2± ‚ ‘7 ‚7©1È +‘3 ‚3È‘% ‚%h `5H) < +‚< +± ‚ ,‘ ‚ ± ‚&à& ‘ ‚©ÿ0ÐÞ !"# +73%#<¸ƒ ¸ƒ-=-")&  986314;$.!%7 *,2: #'<+$ __SIM6502__runtime/toslong.s +ca65 V2.15tosulongtoslongdecsp2sp(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizetoslong1toslong2CODERODATABSSDATAZEROPAGENULLUzna` iq€ñø LSgº»@’ø¯äfaXœI àÐ ¨ ¹ +‚J˜ +ià`  +    ¸ƒ      + __SIM6502__common/toupper.s +ca65 V2.15_toupper__ctype.sizeL9CODERODATABSSDATAZEROPAGENULLUzna` iq]Î Û.  8D{¿ À@’ø¯äfaXä& + +©¢  +‚L +‚   ¸ƒ +¸ƒ ¸ƒ    __SIM6502__ runtime/uge.s +ca65 V2.15tosuge00tosugea0tosugeaxtosicmpbooluge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq]Î Û.  8D{¿ À@’ø¯äfaXá& + +©¢  +‚L +‚   ¸ƒ +¸ƒ ¸ƒ    __SIM6502__ runtime/ugt.s +ca65 V2.15tosugt00tosugta0tosugtaxtosicmpboolugt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq]Î Û.  8D{¿ À@’ø¯äfaXâ& + +©¢  + +‚ +L +‚    +¸ƒ¸ƒ¸ƒ     + __SIM6502__ runtime/ule.s +ca65 V2.15tosule00tosulea0tosuleaxtosicmpboolule.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqWÈÛ'38ƒ»¼@’ø¯äfaXƒ ¢  +‚L +‚   ¸ƒ ¸ƒ‚ +   __SIM6502__ runtime/ult.s +ca65 V2.15tosult00tosulta0tosultaxtosicmpboolultreturn0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq¸):WZe¿€?Y@@’ø¯äfaXÅ … ‚©  F ‚e ‚jf ‚ ˆÐõª† + ‚ +¥ ‚`     +¸ƒ ¸ƒ "! # __SIM6502__runtime/umul8x8r16.s +ca65 V2.15 +umul8x8r16 umul8x8r16mptr1ptr3.size@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iqQÂ Ï ÛÞ. q}Ý~@’ø¯äfaX  +‚L +‚  +   ¸ƒ  + __SIM6502__common/uname.s +ca65 V2.15_uname +__sysuname __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzŒÊV cfåK ™ä +eå +@“ø¯äü‹\‘faXÈÛ*¬Ù l +‚l  +‚  K  +‚…} ‚}†v ‚v I± ‚)wÉFðXŒXŒLX +ƒ#X  " y +‚y…b ‚b† ‚ a± ‚) fð Œ ŒL  +ƒ#   G r +‚r… ‚†> ‚> g±; ‚;ªA˜T 2 +‚2  Y - +‚-…( ‚(†s ‚s B±† ‚† Q +‚Q  +‚ © _ +‚ _†@ ‚@| ‚|ð)Œ)ŒL) +ƒ#) € 4 +‚ 4 V  +‚   M +‚M D +‚ D o +‚o /  +‚ + ` 1 +‚ 1   … +‚…n  +~q= ‚=H ŠeÈ'q‹ ‚‹ªŠh ^ +‚^   +‚ + H +‚H [ +‚[ { +‚{ c +‚c 8 m +‚ m  N C +‚C & +‚& 5 +‚5¢¡J ‚J  +‚ 9  +‚… ‚†E ‚E ±3 ‚3 L +‚LÐdSd $ +‚$Š7 t +‚t p k +‚k…P ‚P†# ‚# q±‚ ‚‚  +‚Ð.:. u +‚u¥ ‚ : +‚: ƒ  +‚… ‚ †6 ‚6 ±S ‚S  +‚Ð   +‚¥ + ‚ + Z +‚Z z W +‚W…< ‚<† ‚¢‡¡] ‚] ‰ +‚‰Ð!!¢„Š,L% +ƒ'%¢ÿh©ýˆ +L* +‚*+,-./)x*&x$u%xL‰$xt:Z#x5"xc!x[ xHx^x1xxDx4mx_xQx yr-M…CkWxxl2 j{&Ro  }vb>;(s†E3P#‚ 6S<]  @|U +U=‹J¸ƒ¬\0Žhm\jˆ|…ƒŠU -P0M]‚‡lHG?")o>“&ys–fW9Cš™•8}LO6pEg„tbk€3ŽT1A4;eJn$.^!iqIdœx= †5 +F%7‹_‘[@N*(arV,2— wcRKvz/:u~ #'Œ`BS‰DZ{”Q<˜’YX+0 __SIM6502__../libwrk/sim6502/uncompress.s +ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac _inflatemem _uncompress_adler32pushaxdecsp8ldaxyspL0023tosora0 tosumoda0pushwyspincax2staxysp staxspidxdecax4pushl0push0pusheaxsteax0sppusha0tosicmp0ldeax0spL0001.sizeaddyspCODERODATABSSDATAZEROPAGENULLUzna` iŽ­ ¹¼Fáã»ä@“ø¯äfaXö +faXÔfaX€ Ø0.(…6 ‚6† ‚  +‚… ‚Š Ð22 5±) ‚))  ð((± ‚ 11) ý ‘ ‚ "¥ ‚‘& ‚&¢`=©''  +‚©ÿ7ª`9123456)&#¸ƒ.!A  0G")C61A; . 5 +F7@*(/# 'BD +<"6 __SIM6502__common/ungetc.s +ca65 V2.15_ungetcpopaxptr1tmp1*/home/hugg/compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags +f_pushback_FCLOSED_FOPEN_FEOF_FERROR +_FPUSHBACK __filetab*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXerrorCODERODATABSSDATAZEROPAGENULLUzna` iq=®µ ÀÃØ\4Â5@“ø¯äfaXÛ  + ‚  __SIM6502__common/unlink.s +ca65 V2.15_unlink_removeCODERODATABSSDATAZEROPAGENULLUzna` ixúr‰ •˜Ä\ïK—L@“ø¯äfaXæfaXÿª$…& ‚&† ‚¢† ‚ ¤ ‚ Àð  æ ‚¹ +ƒ¨ +½ +‚‘ ‚è!Éð%ê%ÈÐó©`$#", &¸ƒ$'))>9C8(6E31'A4;.!+= 5@*&,2/: #<+ __SIM6502__common/utscopy.s +ca65 V2.15utscopyutsdataptr1tmp1,/home/hugg/compilers/cc65/asminc/utsname.incutsnamesysname.sizenodenamereleaseversionmachine fieldoffs +fieldcountnextdoneloopCODERODATABSSDATAZEROPAGENULLUzna` ixIÁ%æøûäßЯú°@“ø¯äfaXè +faXæú<-® +ƒ ð,,Ê'Ž +ƒ­ +ƒ`"  +‚H(  +‚h+¢`¢Ž +ƒ  +‚ +ƒ`%HŠH¢Ž! +ƒ!©& Hƒ&¢# Iƒ#  +‚  +‚ hª)hL +‚ +ƒ +ƒ    +    ¸ƒ$$-j0HGo>y  }6p€1; Jni +qIx= + *r2wcKv/:~<+ __SIM6502__conio/vcscanf.s +ca65 V2.15_vcscanf_cgetc_cputcpopaxpushaxswapstkconio/../common/_scanf.inc SCANFDATAGET.sizeUNGETDATA__scanfpushedbackgetL1ungetdCODERODATABSSZEROPAGENULLUzna` ix‡2¹ËÎ3ÛÜÍÝ@“ø¯äfaXò faX¼ÇaI &  +‚ ) +‚)   +‚­/ +ƒ/®! +ƒ! 9 +‚9…% ‚%† ‚3 ‚3Щÿ  +ƒÐ   ¥8 ‚8-m- +ƒ-4 +ƒ4Š m +ƒ, +ƒ,L +‚H©0 +ƒ0. +ƒ. 6± ‚ +ƒ©1 Hƒ1‘ ‚ȱ7 ‚7 + +ƒ +© Iƒ‘ ‚h 5 +‚5­( +ƒ(® +ƒ` " +ƒ* 2  %38 +7 '5'9)¸ƒ8$;ˆ|ƒU M‚HGo> W9C8}L6p„t€ŽT;I=5 +7‘VRv:u~BS‰{Q< __SIM6502__common/vfprintf.s +ca65 V2.15 _vfprintfpush1pushwyspincsp6_fwrite__printfspptr1,/home/hugg/compilers/cc65/asminc/generic.macoutdesc.sizeccountoutptr@Ok@DoneCODERODATABSSDATAZEROPAGENULLUzna` iqÓDc orƒõxmqn@“ø¯äfaXëœ +$H  +‚ ± ‚ ‘ ‚  ± ‚ ‘ ‚È­ +‚‘ ‚ È­ +‚‘ ‚hL +‚    ¸ƒ$ "& 31$ +%/ #'+ __SIM6502__common/vprintf.s +ca65 V2.15_vprintf _vfprintf_stdoutdecsp2sp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixÓKj vy¡ÿx@“ø¯äfaX— faXÑœ$H  +‚ ± ‚ ‘ ‚ ± ‚ ‘ ‚È­ +‚‘ ‚È­ +‚‘ ‚ hL + +‚ +    +¸ƒ -0"&  61 $.! 5 +%7(,/#' __SIM6502__common/vscanf.s +ca65 V2.15_vscanf_vfscanf_stdindecsp2-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` i ŠLÖóöõë ø +õù +@“ø¯äfaXø(faX€ )faX¼·<Ú­HƒŠaH©x +ƒ8 +ƒ8 $±z ‚z…: ‚:©N HƒN‘ ‚ÈZ±9 ‚90†a†…% ‚%©* Iƒ*‘S ‚S¤? ‚?¦r ‚rÐ&&ˆÊ\Ž( +ƒ(Œ +ƒ  7  +‚f +ƒfŽ" +ƒ",Y +ƒY0  +ƒðBO;BOh0ªqhG < +‚<® +ƒ01$1­ +ƒì +ƒÐ@@Í +ƒ))­E +ƒE®d +ƒdm/ +ƒ/…{ ‚{Štmm +ƒm…K ‚K©u¨‰‘ ‚­3 +ƒ3®Š +ƒŠL +‚ Q, Xh…hU˜6  +‚L‹ +‚‹­k +ƒk8í‡ +ƒ‡…v ‚v­[ +ƒ[055í> +ƒ>…P ‚P°  ©‚…4 ‚4…i ‚i­, +ƒ,cm# +ƒ# e‘p ‚p­= +ƒ=m| +ƒ|Èl‘F ‚F n +‚nHh2m; +ƒ;W +ƒWŠ+m +ƒC +ƒCh!äH ‚HÐ--Å€ ‚€LL¥^ ‚^¦ ‚L +‚=>#? +ƒ‰}o@A D  +:%?r{KvP4iH€^  +z9SpF R< +R  ‹  n ¸ƒAM¸ƒMÇÒm\j|U© P¢0M]‚‡l)o>&Ös ÉW³9CLOpEƱÎtbkÀ«¦ŽT1A;Äe·§Jn.^È +qºdÍÙœxÐ=5¨† +F"Å‹[@¥N Ñ(²r´V¬¡¹w¾µcKvz¤/ :u¸Ïª'ŒB£{B __SIM6502__common/vsnprintf.s +ca65 V2.15 +_vsnprintf vsnprintfldaxysppopaxincsp2incsp6_memcpy__printfspptr1*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX,/home/hugg/compilers/cc65/asminc/generic.macoutdesc.sizeccountfuncoutbufptrbufsizeL9L1L5L0L4L2L3@L9@L0@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` iq|í L[yÔÕ@“ø¯äfaXÍE  HŠH  +‚ ©ÿ¢ +   +‚L +‚  +       ¸ƒ $% __SIM6502__common/vsprintf.s +ca65 V2.15 _vsprintfpushw0spstaxysp vsnprintf.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixjâ2&)¼åË°(±@“ø¯äfaX»! +faX¼m[…S ‚S†A ‚A '±B ‚B…% ‚%È+±5 ‚5 8 q8 ‚8… ‚ˆP±3 ‚3¨± + ‚ +ЩÿLª`6ª/˜G  i‘: ‚:ȱ ‚iO‘F ‚FŠ@¢`R…# ‚#† ‚ ±1 ‚18=$é=(‘ ‚È"±I ‚IéH‘E ‚ELN +‚NH .±4 ‚4 +ƒ©K HƒK‘& ‚&ÈC±< ‚<? +ƒ?©2 Iƒ2‘ ‚©; +ƒ> +ƒ>hJLD +‚D +ƒ +ƒ4 +ƒ* +  -% +-#1IESAB583:F-4&<DN¸ƒK" T© P¢Ml?ž)>s –W³Cš™°8}LO6pE¼tk3«1›4 §Jiq¯=¨5F»7N²­r´®V,2¬¹wRKvu¸ªDZ{Q<X+ __SIM6502__common/vsscanf.s +ca65 V2.15_vsscanfpopax__scanfspptr1ptr2,/home/hugg/compilers/cc65/asminc/generic.mac +SSCANFDATASTR.sizeINDEXgetL1ungetsddCODERODATABSSDATAZEROPAGENULLUzna` iqüm† ’•~…˜”™@“ø¯äfaXºÅ #"© H‚… ‚ © + I‚ +… ‚©¨¢ I‚ð +‘ ‚ÈÐûæ ‚ÊÐöÀ H‚ð  ‘ ‚ÈÐ÷`  +¸ƒ  & $%#'+ __SIM6502__common/zerobss.s +ca65 V2.15zerobss __BSS_RUN__ __BSS_SIZE__ptr1.sizeL1L3L2L4CODERODATABSSDATAZEROPAGENULLUzna` ixmå满¤e ãì£í@“ø¯äfaX†faXÑ6           +   ¸ƒ¸ƒ¸ƒ +¸ ƒ ¸ ƒ¸ ƒ¸ +ƒ ¸ ƒ +¸ƒ ¸ƒ¸ƒ¸ƒ     __SIM6502__runtime/zeropage.s +ca65 V2.15-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLß +_afailed.oü‹\êÍ _cursor.oü‹\Ûí2_cwd.o‹m\ Ë_directerrno.oü‹\ ïX +_environ.oü‹\eó¿_fdesc.o‹m\×þ_file.o‹m\Õ¾_fopen.oü‹\$õ_heap.oü‹\Bý· +_heapadd.oü‹\ù¤_heapblocksize.oü‹\±_heapmaxavail.oü‹\N +N_heapmemavail.oü‹\œ0 _hextab.oü‹\Ìk _longminstr.oü‹\7_mappederrno.oü‹\KÄ +_oserror.oü‹\< _poserror.oü‹\Kš _printf.oü‹\å#¶&_scanf.oü‹\›J»J _seterrno.oü‹\V•Ý_swap.o‹m\“ _sys.oü‹\3˜uabort.oü‹\¨›zabs.o‹m\­kadd.o‹m\¬ addeqsp.oü‹\"Ÿïaddysp.oü‹\¡Ú adler32.o‹m\Ä>along.o‹m\àand.oü‹\ë¢b asctime.oü‹\M¦ aslax1.oü‹\Xª”aslax2.oü‹\ì«®aslax3.oü‹\š­Èaslax4.oü‹\b¯â asleax1.oü‹\D±Ì asleax2.oü‹\³  asleax3.oü‹\µL asleax4.oü‹\h·ôasmtab.oü‹\\¹Éasr.oü‹\%ÀSasrax1.oü‹\xÈasrax2.oü‹\Å­asrax3.oü‹\­ÆÒasrax4.oü‹\È÷ asreax1.oü‹\vÊÕ asreax2.oü‹\KÌ  asreax3.oü‹\kÎk asreax4.oü‹\ÖÐýatexit.oü‹\ÓÒ4atoi.oü‹\Ùaxlong.o‹m\âèbneg.oü‹\—àÁ +bpushbsp.oü‹\Xâ› bsearch.oü‹\óã+call.oü‹\ìš callirq.oü‹\¸í +callmain.oü‹\Àð,calloc.oü‹\ìòWcc65_idiv32by16r16.oü‹\Cõ÷cc65_imul16x16r32.oü‹\:øocc65_imul8x8r16.oü‹\©úš cc65_sincos.oü‹\Cü¥cc65_udiv32by16r16.oü‹\ècc65_umul16x16r32.oü‹\÷occ65_umul16x8r32.oü‹\f|cc65_umul8x8r16.oü‹\â šchdir.oü‹\| compl.oü‹\û wcondes.oü‹\rh +copydata.oü‹\Ú+ cprintf.oü‹\ cputhex.oü‹\Ecputs.o‹m\ʘcrc32.o‹m\b÷creat.oü‹\Z®crt0.oü‹\ƒcscanf.oü‹\‹"»ctime.oü‹\F&uctype.oü‹\»'Ö cursor.oü‹\‘1ƒdbg.o‹m\Y'¹ dbgdasm.oü‹\3j dbgdump.oü‹\~B +dbgisram.oü‹\ƒGç dbgsupp.o‹m\_à€ decax1.oü‹\jJ°decax2.oü‹\L°decax3.oü‹\ÊM°decax4.oü‹\zO°decax5.oü‹\*Q°decax6.oü‹\ÚR°decax7.oü‹\ŠT°decax8.oü‹\:V°decaxy.oü‹\êWÚdecsp1.oü‹\ÄY”decsp2.oü‹\X[³decsp3.oü‹\ ]³decsp4.oü‹\¾^³decsp5.oü‹\q`³decsp6.oü‹\$b³decsp7.oü‹\×c³decsp8.oü‹\Še³div.o‹m\ßëHdivt.o‹m\'îÿ doesclrscr.oü‹\=gG em-kernel.oü‹\„h9 em_commit.oü‹\½p› em_copyfrom.oü‹\Xt em_copyto.oü‹\õw› em_load.oü‹\{t em_map.oü‹\…˜em_pagecount.oü‹\œˆž em_unload.oü‹\:Œ=em_use.oü‹\w’˜enter.oü‹\–¬eq.oü‹\»—Äerrno.oü‹\™š +errormsg.oü‹\œë +exehdr.oü‹\§Efclose.oü‹\I¨xfdopen.oü‹\Á¬*fgetc.oü‹\ë°T fgetpos.oü‹\?·fgets.oü‹\ܺ¼fmisc.oü‹\˜Âfopen.oü‹\ŸÈ~ fprintf.oü‹\Ì fputc.oü‹\(Ï fputs.oü‹\ÈÓ.fread.oü‹\ö×Ô +free.oü‹\ÊâQ freopen.oü‹\÷&fscanf.oü‹\Aûfseek.oü‹\Iþ@ fsetpos.oü‹\‰Éftell.oü‹\R_fwrite.oü‹\± ge.oü‹\Í· getchar.oü‹\„(getcpu.o‹m\&ðágetcwd.o‹m\òxgetenv.oü‹\¬Ngetopt.oü‹\úçgets.oü‹\á0 gmtime.o‹m\ö gt.oü‹\7¼icmp.oü‹\=9æidiv32by16r16.oü‹\#<ºimul16x16r32.oü‹\Ý?‡ imul8x8r16.oü‹\dCJincax1.oü‹\®G)incax2.oü‹\×J°incax3.oü‹\‡L`incax5.oü‹\çM`incax6.oü‹\GO`incax7.oü‹\§P`incax8.oü‹\R`incaxy.o‹m\Œúóincsp1.oü‹\gS„incsp2.o‹m\üšincsp3.oü‹\ëT`incsp4.oü‹\KV`incsp5.oü‹\«W`incsp6.oü‹\ Y`incsp7.oü‹\kZ`incsp8.oü‹\Ë[` inflatemem.o‹m\O$ interrupt.o‹m\h$5 isalnum.oü‹\+]¦ isalpha.oü‹\Ñ_¦ isblank.oü‹\wb¦ iscntrl.oü‹\e¦ isdigit.oü‹\Ãg¦ isgraph.oü‹\ijÇ islower.oü‹\0m¦ isprint.oü‹\Öo± ispunct.oü‹\‡rÇ isspace.oü‹\Nu¦ isupper.oü‹\ôw¦ +isxdigit.oü‹\šz¨itoa.oü‹\B}jjmpvec.o‹m\)6 joy-kernel.o‹m\Ó*ú joy_count.o‹m\Í2Ö +joy_load.o‹m\£5m +joy_read.o‹m\>Õ joy_unload.o‹m\å@žlabs.oü‹\¬ƒ¦ladd.oü‹\R…0laddeq.o‹m\ƒF +laddeqsp.oü‹\‚‰œland.o‹m\ŠI­lasr.oü‹\ŒNlbneg.oü‹\lŽÕlcmp.oü‹\A@lcompl.oü‹\“êldai.oü‹\k•© ldau0sp.oü‹\—aldaui.oü‹\uš‰ ldauisp.oü‹\þ›üldaxi.oü‹\úÄldaxsp.oü‹\¾Ÿ¤ldeaxi.oü‹\b¡+ +ldeaxysp.oü‹\£ ldec.o‹m\7Lldiv.oü‹\™¥}le.oü‹\¨¼ leaaxsp.oü‹\Ò©Éleave.o‹m\SN²leq.oü‹\›«llge.oü‹\­llgt.oü‹\s®llinc.oü‹\߯álle.oü‹\À±lllt.oü‹\,³glmod.o‹m\Q²lmul.o‹m\·S lne.oü‹\“´llneg.oü‹\ÿµlocale.oü‹\¸t localtime.o‹m\ÃXõ longjmp.o‹m\¸_ólor.o‹m\«bªlpop.o‹m\Ueùlpush.o‹m\NgŸlrsub.o‹m\íiºlsave.o‹m\§l}lshelp.oü‹\Š½lshl.oü‹\ŒÁGlshr.oü‹\ÓÃ-lsub.o‹m\$o0lsubeq.o‹m\Ts +lsubeqsp.oü‹\Ʋlt.oü‹\²È¼ltest.oü‹\nÊàltoa.o‹m\lv2ludiv.o‹m\ž}luge.oü‹\NÌolugt.oü‹\½Íolule.oü‹\,Ïolult.oü‹\›Ðjlumod.o‹m\¶ƒdlxor.o‹m\†­ +mainargs.oü‹\ÒÍ +makebool.o‹m\Ljœmalloc.oü‹\ÒÓ• memchr.o‹m\cŒMmemcmp.o‹m\°zmemcpy.o‹m\*“é memmove.o‹m\—8memset.oü‹\gàûmkdir.oü‹\båzmktime.o‹m\Kœj*mod.o‹m\µÆ modfree.oü‹\Üæ7 modload.oü‹\èÐmouse-kernel.o‹m\ÓÈdmouse_buttons.o‹m\7×’mouse_getbox.o‹m\ÉÝ‘mouse_geterrormsg.o‹m\Zä¹ mouse_hide.o‹m\íæ mouse_info.o‹m\ùóÞ mouse_ioctl.o‹m\×úþ mouse_load.o‹m\Õª mouse_move.o‹m\ Ô mouse_pos.o‹m\SÝmouse_setbox.o‹m\0‘ mouse_show.o‹m\Á!õmouse_unload.o‹m\¶(¥mul.o‹m\[1Þmul8.o‹m\95¶ mulax10.oü‹\ã 3mulax3.o‹m\ï8ëmulax5.o‹m\Ú: mulax6.oü‹\ mulax7.o‹m\å<6mulax9.o‹m\?+ne.oü‹\' ¼neg.o‹m\FAŽor.o‹m\ÔB÷ +paravirt.oü‹\ã ™perror.oü‹\| ¥ pmemalign.oü‹\! ­popa.oü‹\Î'  popsreg.oü‹\ì* Qprintf.oü‹\=. Cpush1.oü‹\€1 ^push2.oü‹\Þ2 ^push3.oü‹\<4 ^push4.oü‹\š5 ^push5.oü‹\ø6 ^push6.oü‹\V8 ^push7.oü‹\´9 ^pusha.oü‹\; • pushaff.oü‹\§> bpushax.oü‹\ @ <pushb.oü‹\EB ‘ pushbsp.oü‹\ÖE ™pushc0.oü‹\oG _pushc1.oü‹\ÎH _pushc2.oü‹\-J _ +pushlysp.oü‹\ŒK pushw.oü‹\©M þ pushwsp.oü‹\§O ‰ putchar.oü‹\0R «putenv.oü‹\ÛS puts.oü‹\x\ +qsort.oü‹\‚a kraise.oü‹\íy [rand.o‹m\ËDS realloc.oü‹\H} Ü regswap.oü‹\$‹ ÿ +regswap1.oü‹\# ° +regswap2.oü‹\ÓŽ remove.oü‹\í ‚rename.oü‹\o’ ‚ return0.oü‹\ñ“ U return1.oü‹\F• Vrewind.oü‹\œ– ¸rmdir.oü‹\T™ zrsub.o‹m\Hscanf.oü‹\Κ B scrsize.o‹m\%J searchenv.oü‹\ž O ser-kernel.o‹m\6L½ ser_close.o‹m\óXÓ ser_get.o‹m\Æ_  ser_ioctl.o‹m\æfA +ser_load.o‹m\'na +ser_open.o‹m\ˆ{! ser_put.o‹m\©‚Ñ ser_status.o‹m\z‰# ser_unload.o‹m\W +setjmp.oü‹\_¡ —shelp.o‹m\ôšXshl.oü‹\ö£ Êshr.oü‹\À¨ shrax1.oü‹\Ù« }shrax2.oü‹\V­ —shrax3.oü‹\í® ±shrax4.oü‹\ž° Ë shreax1.oü‹\i² ´ shreax2.oü‹\´ ô shreax3.oü‹\¶ 4 shreax4.oü‹\E¸ Üsignal.oü‹\!º E +sigtable.oü‹\f¿ Isleep.oü‹\¯Á   +snprintf.oü‹\Oà  sprintf.oü‹\dÆ sscanf.oü‹\vÉ  +staspidx.oü‹\~Ì staxsp.oü‹\—Î ¸ staxspi.o‹m\LG steaxsp.oü‹\OÐ  +steaxspi.o‹m\“Ÿ¿stkchk.oü‹\nÒ ßstrcat.o‹m\R¢Kstrchr.o‹m\¥ästrcmp.o‹m\¨ strcoll.oü‹\MØ 8strcpy.oü‹\…Ù b strcspn.o‹m\«Estrdup.oü‹\çÛ  +strerror.oü‹\ïà € +strftime.o‹m\c®FC stricmp.o‹m\©ñ®strlen.o‹m\Wöû +strlower.oü‹\oä Ê strncat.o‹m\RøA strncmp.o‹m\“ü‡ strncpy.o‹m\Ô +strnicmp.o‹m\î +stroserr.oü‹\9è J strpbrk.o‹m\} œ strqtok.oü‹\ƒë  + strrchr.o‹m\ strspn.o‹m\Cstrstr.o‹m\\‰ strtoimax.oü‹\”õ 7strtok.oü‹\Ëö Êstrtol.oü‹\•ÿ u strtoul.oü‹\ + +  strtoumax.oü‹\- +8 +strupper.oü‹\M. +Ê strxfrm.oü‹\2 +Ôsub.oü‹\ë4 +} subeqsp.oü‹\h8 +subysp.oü‹\m: +³swap.o‹m\åsystem.oü‹\ < +„ tgi-kernel.o‹m\óƒ tgi_arc.oü‹\¤> + + tgi_bar.o‹m\v1Ž tgi_circle.o‹m\DG tgi_clear.o‹m\KP tgi_clippedline.o‹m\[\¯ tgi_curtoxy.o‹m\ +{Ù +tgi_done.o‹m\㇬ tgi_ellipse.o‹m\• tgi_free_vectorfont.oü‹\¹H +Ftgi_getaspectratio.o‹m\¢O tgi_getcolor.o‹m\]®= tgi_getcolorcount.o‹m\šºC tgi_getdefpalette.o‹m\ÝÆ tgi_geterror.o‹m\öÒ¾ tgi_geterrormsg.o‹m\´ß±tgi_getmaxcolor.o‹m\eðU tgi_getmaxx.o‹m\ºüG tgi_getmaxy.o‹m\ G tgi_getpagecount.o‹m\HA tgi_getpalette.o‹m\‰! tgi_getpixel.o‹m\ž-z tgi_getset.o‹m\:< tgi_gettextheight.oŒm\TGstgi_gettextwidth.oŒm\ÇV: tgi_getxres.oŒm\hH tgi_getyres.oŒm\ItH tgi_gotoxy.oŒm\‘€˜ tgi_imulround.oü‹\ÿI +b +tgi_init.oŒm\)tgi_install_vectorfont.oŒm\7X tgi_ioctl.oŒm\© +tgi_line.oŒm\¶É tgi_linepop.oŒm\ÙÂï tgi_lineto.oŒm\Èϵ +tgi_load.oŒm\}Üvtgi_load_vectorfont.oü‹\aM +I tgi_outcode.oŒm\óî> tgi_outtext.oŒm\1þ‘tgi_outtextxy.oŒm\ÂB tgi_pieslice.oü‹\ªY +œ tgi_popxy.oŒm\§ tgi_popxy2.oŒm\«+¨ tgi_setaspectratio.oŒm\S8U tgi_setcolor.oŒm\¨D tgi_setdrawpage.oŒm\)Qo tgi_setpalette.oŒm\˜]f tgi_setpixel.oŒm\þi` tgi_settextdir.oŒm\^v: tgi_settextstyle.oŒm\˜‚Òtgi_setviewpage.oŒm\j“o tgi_unload.oŒm\ÙŸVtgi_vectorchar.oŒm\/¯¡time.oŒm\ÐÅŒ +timezone.oü‹\F` +% tolower.oü‹\kb +¼tosint.oü‹\'d +U toslong.oü‹\|g +• toupper.oü‹\l +¼udiv.oŒm\\Êjudiv32by16r16.oŒm\ÆÎôuge.oü‹\Ím +Áugt.oü‹\Žo +Áule.oü‹\Oq +Áult.oü‹\s +½umod.oŒm\ºÒumul16x16r32.oŒm\ÂÔ + umul8x16r24.oŒm\ÌØ  umul8x8r16.oü‹\Ít +Auname.oü‹\w + uncompress.oü‹\x +æ +ungetc.oü‹\sƒ +åunlink.oü‹\Xˆ +6 utscopy.oü‹\Ž‰ +M +vcprintf.oŒm\ÙÜø vcscanf.oü‹\ÛŒ +± +vfprintf.oü‹\Œ +Þ vfscanf.oŒm\ÑâC vprintf.oü‹\j• +ovscanf.oü‹\Ù— + vsnprintf.oü‹\ôš +ú + +vsprintf.oü‹\î¥ +Ö vsscanf.oü‹\ħ +²xor.oŒm\èú zerobss.oü‹\v­ +š +zeropage.oü‹\° +î \ No newline at end of file diff --git a/src/worker/fs/fs65-sim6502.js b/src/worker/fs/fs65-sim6502.js new file mode 100644 index 00000000..2c8234da --- /dev/null +++ b/src/worker/fs/fs65-sim6502.js @@ -0,0 +1,209 @@ + +var Module = typeof Module !== 'undefined' ? Module : {}; + +if (!Module.expectedDataFileDownloads) { + Module.expectedDataFileDownloads = 0; + Module.finishedDataFileDownloads = 0; +} +Module.expectedDataFileDownloads++; +(function() { + var loadPackage = function(metadata) { + + var PACKAGE_PATH; + if (typeof window === 'object') { + PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/'); + } else if (typeof location !== 'undefined') { + // worker + PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/'); + } else { + throw 'using preloaded data can only be done on a web page or in a web worker'; + } + var PACKAGE_NAME = 'fs65-sim6502.data'; + var REMOTE_PACKAGE_BASE = 'fs65-sim6502.data'; + if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) { + Module['locateFile'] = Module['locateFilePackage']; + err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)'); + } + var REMOTE_PACKAGE_NAME = Module['locateFile'] ? Module['locateFile'](REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE; + + var REMOTE_PACKAGE_SIZE = metadata.remote_package_size; + var PACKAGE_UUID = metadata.package_uuid; + + function fetchRemotePackage(packageName, packageSize, callback, errback) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', packageName, true); + xhr.responseType = 'arraybuffer'; + xhr.onprogress = function(event) { + var url = packageName; + var size = packageSize; + if (event.total) size = event.total; + if (event.loaded) { + if (!xhr.addedTotal) { + xhr.addedTotal = true; + if (!Module.dataFileDownloads) Module.dataFileDownloads = {}; + Module.dataFileDownloads[url] = { + loaded: event.loaded, + total: size + }; + } else { + Module.dataFileDownloads[url].loaded = event.loaded; + } + var total = 0; + var loaded = 0; + var num = 0; + for (var download in Module.dataFileDownloads) { + var data = Module.dataFileDownloads[download]; + total += data.total; + loaded += data.loaded; + num++; + } + total = Math.ceil(total * Module.expectedDataFileDownloads/num); + if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')'); + } else if (!Module.dataFileDownloads) { + if (Module['setStatus']) Module['setStatus']('Downloading data...'); + } + }; + xhr.onerror = function(event) { + throw new Error("NetworkError for: " + packageName); + } + xhr.onload = function(event) { + if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 + var packageData = xhr.response; + callback(packageData); + } else { + throw new Error(xhr.statusText + " : " + xhr.responseURL); + } + }; + xhr.send(null); + }; + + function handleError(error) { + console.error('package error:', error); + }; + + var fetchedCallback = null; + var fetched = Module['getPreloadedPackage'] ? Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null; + + if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) { + if (fetchedCallback) { + fetchedCallback(data); + fetchedCallback = null; + } else { + fetched = data; + } + }, handleError); + + function runWithFS() { + + function assert(check, msg) { + if (!check) throw msg + new Error().stack; + } +Module['FS_createPath']('/', 'include', true, true); +Module['FS_createPath']('/include', 'em', true, true); +Module['FS_createPath']('/include', 'mouse', true, true); +Module['FS_createPath']('/include', 'tgi', true, true); +Module['FS_createPath']('/include', 'geos', true, true); +Module['FS_createPath']('/include', 'sys', true, true); +Module['FS_createPath']('/include', 'joystick', true, true); +Module['FS_createPath']('/', 'asminc', true, true); +Module['FS_createPath']('/', 'cfg', true, true); +Module['FS_createPath']('/', 'lib', true, true); + + function DataRequest(start, end, audio) { + this.start = start; + this.end = end; + this.audio = audio; + } + DataRequest.prototype = { + requests: {}, + open: function(mode, name) { + this.name = name; + this.requests[name] = this; + Module['addRunDependency']('fp ' + this.name); + }, + send: function() {}, + onload: function() { + var byteArray = this.byteArray.subarray(this.start, this.end); + this.finish(byteArray); + }, + finish: function(byteArray) { + var that = this; + + Module['FS_createDataFile'](this.name, null, byteArray, true, true, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change + Module['removeRunDependency']('fp ' + that.name); + + this.requests[this.name] = null; + } + }; + + var files = metadata.files; + for (var i = 0; i < files.length; ++i) { + new DataRequest(files[i].start, files[i].end, files[i].audio).open('GET', files[i].filename); + } + + + function processPackageData(arrayBuffer) { + Module.finishedDataFileDownloads++; + assert(arrayBuffer, 'Loading data file failed.'); + assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData'); + var byteArray = new Uint8Array(arrayBuffer); + var curr; + + // copy the entire loaded file into a spot in the heap. Files will refer to slices in that. They cannot be freed though + // (we may be allocating before malloc is ready, during startup). + var ptr = Module['getMemory'](byteArray.length); + Module['HEAPU8'].set(byteArray, ptr); + DataRequest.prototype.byteArray = Module['HEAPU8'].subarray(ptr, ptr+byteArray.length); + + var files = metadata.files; + for (var i = 0; i < files.length; ++i) { + DataRequest.prototype.requests[files[i].filename].onload(); + } + Module['removeRunDependency']('datafile_fs65-sim6502.data'); + + }; + Module['addRunDependency']('datafile_fs65-sim6502.data'); + + if (!Module.preloadResults) Module.preloadResults = {}; + + Module.preloadResults[PACKAGE_NAME] = {fromCache: false}; + if (fetched) { + processPackageData(fetched); + fetched = null; + } else { + fetchedCallback = processPackageData; + } + + } + if (Module['calledRun']) { + runWithFS(); + } else { + if (!Module['preRun']) Module['preRun'] = []; + Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it + } + + Module['removeRunDependency']('fs65-sim6502.js.metadata'); + } + + function runMetaWithFS() { + Module['addRunDependency']('fs65-sim6502.js.metadata'); + var REMOTE_METADATA_NAME = Module['locateFile'] ? Module['locateFile']('fs65-sim6502.js.metadata', '') : 'fs65-sim6502.js.metadata'; + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function() { + if (xhr.readyState === 4 && xhr.status === 200) { + loadPackage(JSON.parse(xhr.responseText)); + } + } + xhr.open('GET', REMOTE_METADATA_NAME, true); + xhr.overrideMimeType('application/json'); + xhr.send(null); + } + + if (Module['calledRun']) { + runMetaWithFS(); + } else { + if (!Module['preRun']) Module['preRun'] = []; + Module["preRun"].push(runMetaWithFS); + } + +})(); diff --git a/src/worker/fs/fs65-sim6502.js.metadata b/src/worker/fs/fs65-sim6502.js.metadata new file mode 100644 index 00000000..8157a4e2 --- /dev/null +++ b/src/worker/fs/fs65-sim6502.js.metadata @@ -0,0 +1 @@ +{"files":[{"start":0,"audio":0,"end":10858,"filename":"/include/cbm.h"},{"start":10858,"audio":0,"end":14268,"filename":"/include/_6525.h"},{"start":14268,"audio":0,"end":16929,"filename":"/include/_pia.h"},{"start":16929,"audio":0,"end":20075,"filename":"/include/limits.h"},{"start":20075,"audio":0,"end":23183,"filename":"/include/plus4.h"},{"start":23183,"audio":0,"end":31082,"filename":"/include/serial.h"},{"start":31082,"audio":0,"end":34225,"filename":"/include/_pbi.h"},{"start":34225,"audio":0,"end":38187,"filename":"/include/_6526.h"},{"start":38187,"audio":0,"end":43225,"filename":"/include/apple2enh.h"},{"start":43225,"audio":0,"end":46775,"filename":"/include/fcntl.h"},{"start":46775,"audio":0,"end":47893,"filename":"/include/_heap.h"},{"start":47893,"audio":0,"end":54079,"filename":"/include/stdio.h"},{"start":54079,"audio":0,"end":56942,"filename":"/include/iso646.h"},{"start":56942,"audio":0,"end":59899,"filename":"/include/_6551.h"},{"start":59899,"audio":0,"end":66107,"filename":"/include/c128.h"},{"start":66107,"audio":0,"end":74998,"filename":"/include/conio.h"},{"start":74998,"audio":0,"end":80338,"filename":"/include/6502.h"},{"start":80338,"audio":0,"end":89144,"filename":"/include/mouse.h"},{"start":89144,"audio":0,"end":97246,"filename":"/include/lynx.h"},{"start":97246,"audio":0,"end":111086,"filename":"/include/atari.h"},{"start":111086,"audio":0,"end":121060,"filename":"/include/atari_screen_charmap.h"},{"start":121060,"audio":0,"end":126808,"filename":"/include/stdlib.h"},{"start":126808,"audio":0,"end":130508,"filename":"/include/pen.h"},{"start":130508,"audio":0,"end":133014,"filename":"/include/stdbool.h"},{"start":133014,"audio":0,"end":137914,"filename":"/include/cc65.h"},{"start":137914,"audio":0,"end":141255,"filename":"/include/signal.h"},{"start":141255,"audio":0,"end":144881,"filename":"/include/_sid.h"},{"start":144881,"audio":0,"end":155716,"filename":"/include/_vic2.h"},{"start":155716,"audio":0,"end":160025,"filename":"/include/unistd.h"},{"start":160025,"audio":0,"end":168458,"filename":"/include/ctype.h"},{"start":168458,"audio":0,"end":179616,"filename":"/include/_suzy.h"},{"start":179616,"audio":0,"end":186742,"filename":"/include/zlib.h"},{"start":186742,"audio":0,"end":192517,"filename":"/include/dbg.h"},{"start":192517,"audio":0,"end":198217,"filename":"/include/_gtia.h"},{"start":198217,"audio":0,"end":203300,"filename":"/include/errno.h"},{"start":203300,"audio":0,"end":208318,"filename":"/include/_ted.h"},{"start":208318,"audio":0,"end":213835,"filename":"/include/ace.h"},{"start":213835,"audio":0,"end":219104,"filename":"/include/joystick.h"},{"start":219104,"audio":0,"end":225392,"filename":"/include/em.h"},{"start":225392,"audio":0,"end":228527,"filename":"/include/device.h"},{"start":228527,"audio":0,"end":231354,"filename":"/include/_vdc.h"},{"start":231354,"audio":0,"end":234187,"filename":"/include/assert.h"},{"start":234187,"audio":0,"end":237033,"filename":"/include/setjmp.h"},{"start":237033,"audio":0,"end":243229,"filename":"/include/stdint.h"},{"start":243229,"audio":0,"end":249087,"filename":"/include/cbm264.h"},{"start":249087,"audio":0,"end":253207,"filename":"/include/vic20.h"},{"start":253207,"audio":0,"end":258560,"filename":"/include/_mikey.h"},{"start":258560,"audio":0,"end":262217,"filename":"/include/locale.h"},{"start":262217,"audio":0,"end":265998,"filename":"/include/_6522.h"},{"start":265998,"audio":0,"end":268830,"filename":"/include/_6545.h"},{"start":268830,"audio":0,"end":273779,"filename":"/include/cbm_filetype.h"},{"start":273779,"audio":0,"end":280255,"filename":"/include/nes.h"},{"start":280255,"audio":0,"end":283588,"filename":"/include/geos.h"},{"start":283588,"audio":0,"end":289058,"filename":"/include/dio.h"},{"start":289058,"audio":0,"end":297058,"filename":"/include/o65.h"},{"start":297058,"audio":0,"end":299971,"filename":"/include/stdarg.h"},{"start":299971,"audio":0,"end":303028,"filename":"/include/stddef.h"},{"start":303028,"audio":0,"end":308349,"filename":"/include/dirent.h"},{"start":308349,"audio":0,"end":312595,"filename":"/include/_pokey.h"},{"start":312595,"audio":0,"end":316965,"filename":"/include/supervision.h"},{"start":316965,"audio":0,"end":322564,"filename":"/include/atmos.h"},{"start":322564,"audio":0,"end":325672,"filename":"/include/peekpoke.h"},{"start":325672,"audio":0,"end":333263,"filename":"/include/apple2.h"},{"start":333263,"audio":0,"end":341073,"filename":"/include/inttypes.h"},{"start":341073,"audio":0,"end":346745,"filename":"/include/time.h"},{"start":346745,"audio":0,"end":351727,"filename":"/include/modload.h"},{"start":351727,"audio":0,"end":356768,"filename":"/include/string.h"},{"start":356768,"audio":0,"end":360935,"filename":"/include/pce.h"},{"start":360935,"audio":0,"end":363781,"filename":"/include/osic1p.h"},{"start":363781,"audio":0,"end":369724,"filename":"/include/cbm610.h"},{"start":369724,"audio":0,"end":373440,"filename":"/include/_vic.h"},{"start":373440,"audio":0,"end":377832,"filename":"/include/pet.h"},{"start":377832,"audio":0,"end":385228,"filename":"/include/gamate.h"},{"start":385228,"audio":0,"end":390577,"filename":"/include/_antic.h"},{"start":390577,"audio":0,"end":395317,"filename":"/include/atari5200.h"},{"start":395317,"audio":0,"end":398322,"filename":"/include/c16.h"},{"start":398322,"audio":0,"end":405051,"filename":"/include/c64.h"},{"start":405051,"audio":0,"end":415885,"filename":"/include/tgi.h"},{"start":415885,"audio":0,"end":422270,"filename":"/include/cbm510.h"},{"start":422270,"audio":0,"end":432106,"filename":"/include/atari_atascii_charmap.h"},{"start":432106,"audio":0,"end":435941,"filename":"/include/em/em-kernel.h"},{"start":435941,"audio":0,"end":439241,"filename":"/include/mouse/mouse-kernel.h"},{"start":439241,"audio":0,"end":443660,"filename":"/include/tgi/tgi-vectorfont.h"},{"start":443660,"audio":0,"end":447947,"filename":"/include/tgi/tgi-kernel.h"},{"start":447947,"audio":0,"end":451515,"filename":"/include/tgi/tgi-error.h"},{"start":451515,"audio":0,"end":453868,"filename":"/include/geos/gsprite.h"},{"start":453868,"audio":0,"end":455334,"filename":"/include/geos/gconst.h"},{"start":455334,"audio":0,"end":460766,"filename":"/include/geos/ggraph.h"},{"start":460766,"audio":0,"end":462013,"filename":"/include/geos/gmenu.h"},{"start":462013,"audio":0,"end":463139,"filename":"/include/geos/gmemory.h"},{"start":463139,"audio":0,"end":463722,"filename":"/include/geos/gprocess.h"},{"start":463722,"audio":0,"end":467212,"filename":"/include/geos/gdlgbox.h"},{"start":467212,"audio":0,"end":480042,"filename":"/include/geos/gsym.h"},{"start":480042,"audio":0,"end":482186,"filename":"/include/geos/gfile.h"},{"start":482186,"audio":0,"end":484499,"filename":"/include/geos/gdisk.h"},{"start":484499,"audio":0,"end":489697,"filename":"/include/geos/gstruct.h"},{"start":489697,"audio":0,"end":490903,"filename":"/include/geos/gsys.h"},{"start":490903,"audio":0,"end":494974,"filename":"/include/sys/utsname.h"},{"start":494974,"audio":0,"end":498205,"filename":"/include/sys/types.h"},{"start":498205,"audio":0,"end":502258,"filename":"/include/joystick/joy-kernel.h"},{"start":502258,"audio":0,"end":505401,"filename":"/asminc/time.inc"},{"start":505401,"audio":0,"end":549651,"filename":"/asminc/atari.inc"},{"start":549651,"audio":0,"end":551624,"filename":"/asminc/pet.inc"},{"start":551624,"audio":0,"end":552504,"filename":"/asminc/_heap.inc"},{"start":552504,"audio":0,"end":555745,"filename":"/asminc/atmos.inc"},{"start":555745,"audio":0,"end":558591,"filename":"/asminc/pce.inc"},{"start":558591,"audio":0,"end":561887,"filename":"/asminc/tgi-error.inc"},{"start":561887,"audio":0,"end":564970,"filename":"/asminc/em-error.inc"},{"start":564970,"audio":0,"end":569932,"filename":"/asminc/em-kernel.inc"},{"start":569932,"audio":0,"end":570653,"filename":"/asminc/zeropage.inc"},{"start":570653,"audio":0,"end":576413,"filename":"/asminc/lynx.inc"},{"start":576413,"audio":0,"end":586950,"filename":"/asminc/tgi-kernel.inc"},{"start":586950,"audio":0,"end":587175,"filename":"/asminc/get_tv.inc"},{"start":587175,"audio":0,"end":591195,"filename":"/asminc/modload.inc"},{"start":591195,"audio":0,"end":592191,"filename":"/asminc/ctype.inc"},{"start":592191,"audio":0,"end":594823,"filename":"/asminc/longbranch.mac"},{"start":594823,"audio":0,"end":595291,"filename":"/asminc/_file.inc"},{"start":595291,"audio":0,"end":598525,"filename":"/asminc/atari_gtia.inc"},{"start":598525,"audio":0,"end":599481,"filename":"/asminc/generic.mac"},{"start":599481,"audio":0,"end":602759,"filename":"/asminc/atari_antic.inc"},{"start":602759,"audio":0,"end":605802,"filename":"/asminc/signal.inc"},{"start":605802,"audio":0,"end":612028,"filename":"/asminc/c128.inc"},{"start":612028,"audio":0,"end":614834,"filename":"/asminc/nes.inc"},{"start":614834,"audio":0,"end":617719,"filename":"/asminc/joy-error.inc"},{"start":617719,"audio":0,"end":624446,"filename":"/asminc/ser-kernel.inc"},{"start":624446,"audio":0,"end":630427,"filename":"/asminc/c64.inc"},{"start":630427,"audio":0,"end":631715,"filename":"/asminc/apple2.mac"},{"start":631715,"audio":0,"end":633490,"filename":"/asminc/atari.mac"},{"start":633490,"audio":0,"end":636934,"filename":"/asminc/ser-error.inc"},{"start":636934,"audio":0,"end":638085,"filename":"/asminc/cbm_filetype.inc"},{"start":638085,"audio":0,"end":638433,"filename":"/asminc/fcntl.inc"},{"start":638433,"audio":0,"end":641037,"filename":"/asminc/cbm610.inc"},{"start":641037,"audio":0,"end":642772,"filename":"/asminc/atari_pokey.inc"},{"start":642772,"audio":0,"end":644180,"filename":"/asminc/errno.inc"},{"start":644180,"audio":0,"end":647878,"filename":"/asminc/atari5200.inc"},{"start":647878,"audio":0,"end":651186,"filename":"/asminc/stdio.inc"},{"start":651186,"audio":0,"end":655580,"filename":"/asminc/cbm510.inc"},{"start":655580,"audio":0,"end":656994,"filename":"/asminc/gamate.inc"},{"start":656994,"audio":0,"end":660917,"filename":"/asminc/tgi-vectorfont.inc"},{"start":660917,"audio":0,"end":661195,"filename":"/asminc/module.mac"},{"start":661195,"audio":0,"end":668592,"filename":"/asminc/o65.inc"},{"start":668592,"audio":0,"end":672701,"filename":"/asminc/joy-kernel.inc"},{"start":672701,"audio":0,"end":675516,"filename":"/asminc/utsname.inc"},{"start":675516,"audio":0,"end":683907,"filename":"/asminc/smc.inc"},{"start":683907,"audio":0,"end":684047,"filename":"/asminc/c16.inc"},{"start":684047,"audio":0,"end":684890,"filename":"/asminc/cpu.mac"},{"start":684890,"audio":0,"end":686215,"filename":"/asminc/cbm.mac"},{"start":686215,"audio":0,"end":698315,"filename":"/asminc/opcodes.inc"},{"start":698315,"audio":0,"end":700931,"filename":"/asminc/vic20.inc"},{"start":700931,"audio":0,"end":703765,"filename":"/asminc/plus4.inc"},{"start":703765,"audio":0,"end":705237,"filename":"/asminc/supervision.inc"},{"start":705237,"audio":0,"end":712937,"filename":"/asminc/mouse-kernel.inc"},{"start":712937,"audio":0,"end":715285,"filename":"/asminc/apple2.inc"},{"start":715285,"audio":0,"end":716546,"filename":"/cfg/sim6502.cfg"},{"start":716546,"audio":0,"end":1429340,"filename":"/lib/sim6502.lib"}],"remote_package_size":1429340,"package_uuid":"b2bb64bf-ed20-4863-85a4-4cec068d5c0a"} \ No newline at end of file diff --git a/src/worker/lib/nes/nesbanked.cfg b/src/worker/lib/nes/nesbanked.cfg index 04e2745f..2f18ae5e 100644 --- a/src/worker/lib/nes/nesbanked.cfg +++ b/src/worker/lib/nes/nesbanked.cfg @@ -57,8 +57,8 @@ SEGMENTS { DATA: load = PRG6, run = RAM, type = rw, define = yes; STARTUP: load = PRG6, type = ro, define = yes; CODE: load = PRG7, type = ro, define = yes; - VECTORS: load = VECTORS, type = rw; - CHARS: load = CHR, type = rw; + VECTORS: load = VECTORS, type = ro; + CHARS: load = CHR, type = ro; BSS: load = SRAM, type = bss, define = yes; } FEATURES { diff --git a/src/worker/lib/vector-ataricolor/crt0.o b/src/worker/lib/vector-ataricolor/crt0.o new file mode 100644 index 0000000000000000000000000000000000000000..26a68713544253bc9a63d64fbf8a6bc73055083e GIT binary patch literal 977 zcmYL`OHUI~6vxlGozAN*FAEfrI_2Rrw(?xKqCx{CXh~a$AtvK6jAddUlg?Z5Q~4`y*h~s{1f~3@S~a-dTc%T z8C7MPWYAmz>@sI={LD?9xk+-^nK#v`eV`RrU;@P`;4yU&NB>X*e2;O!PnghFF%%&J zCIF8xrLA?-6yR$#v=Gn$e1o822nT#v3N$dShbpGojq0I<)Z0Kw4`r0tCG}9jB;YEY zgwl*2Mll1phhu>2IG~3S8~||w*blgf!}LRN6=W0<9S`LLgHn|BLm5ZT^KlJ(P!|S> zIQEJ}O2ke@N9rXs9Kund5;H;}NP@GI@Yo1}OX`ua#GMpPod z7+hc%V_ahNsI=}nJ31*nI=dtz#sdRnV35-xMx1MLb_!#XGRUw?@W2>5m7z1HcyyTE z4aNw!ALSZd8-T&Jiwt^LfE2sSjGK&WAlt3rcGlNzYhm8ln#oSjM@?tn4PvHQuH;LV z%?;C3+D@yv(__PRGRAM_START__ + __PRGRAM_SIZE__) + sta sp + stx sp+1 + jsr zerobss + jsr copydata + jsr initlib + jsr callmain +_exit: pha + jsr donelib + pla + jmp exit + +nmi: + inc $0 + rti + +.segment "VECTORS" + + .word nmi ; $fffa nmi + .word start ; $fffc reset + .word nmi ; $fffe irq / brk diff --git a/src/worker/lib/vector-ataricolor/vector-color.cfg b/src/worker/lib/vector-ataricolor/vector-color.cfg new file mode 100644 index 00000000..eef65de4 --- /dev/null +++ b/src/worker/lib/vector-ataricolor/vector-color.cfg @@ -0,0 +1,49 @@ +SYMBOLS { + __STACKSIZE__: type = weak, value = $0200; +} +MEMORY { + ZP: file = "", start = $0002, size = $00FE, type = rw, define = yes; + PRGRAM: file = "", start = $0200, size = $600, define = yes; + DVGRAM: file = "", start = $2000, size = $800, define = yes; + + # PRG ROM @ $9000 - $FFFF + # - startup + # - code + # - rodata + # - data (load) + MAIN: file = %O, start = $9000, size = $6FFA, fill = yes, define = yes; + + # CPU vectors + VECTORS: file = %O, start = $FFFA, size = $0006, fill = yes; + + # DVG ROM @ $2800 - $5FFF + DVGROM: file = %O, start = $2800, size = $3800, fill = yes, define = yes; + +} +SEGMENTS { + ZEROPAGE: load = ZP, type = zp; + STARTUP: load = MAIN, type = ro, define = yes; + LOWCODE: load = MAIN, type = ro, optional = yes; + CODE: load = MAIN, type = ro, define = yes; + RODATA: load = MAIN, type = ro, define = yes; + DATA: load = MAIN, run = PRGRAM, type = rw, define = yes; + ONCE: load = MAIN, type = ro, define = yes, optional = yes; + VECTORS: load = VECTORS, type = ro; + DVGROM: load = DVGROM, type = ro, optional = yes; + BSS: load = PRGRAM, type = bss, define = yes; +} +FEATURES { + CONDES: type = constructor, + label = __CONSTRUCTOR_TABLE__, + count = __CONSTRUCTOR_COUNT__, + segment = ONCE; + CONDES: type = destructor, + label = __DESTRUCTOR_TABLE__, + count = __DESTRUCTOR_COUNT__, + segment = RODATA; + CONDES: type = interruptor, + label = __INTERRUPTOR_TABLE__, + count = __INTERRUPTOR_COUNT__, + segment = RODATA, + import = __CALLIRQ__; +} diff --git a/src/worker/workermain.ts b/src/worker/workermain.ts index 81aa3b71..cbd04ccf 100644 --- a/src/worker/workermain.ts +++ b/src/worker/workermain.ts @@ -128,6 +128,17 @@ var PLATFORM_PARAMS = { {name:'DVG RAM',start:0xa000,size:0x4000,type:'ram'}, ], }, + 'vector-ataricolor': { //TODO + define: '__VECTOR__', + cfgfile: 'vector-color.cfg', + libargs: ['crt0.o', 'sim6502.lib'], + extra_link_files: ['crt0.o', 'vector-color.cfg'], + extra_segments:[ + {name:'Switches/POKEY I/O',start:0x7800,size:0x1000,type:'io'}, + {name:'DVG I/O',start:0x8800,size:0x100,type:'io'}, + {name:'EAROM',start:0x8900,size:0x100,type:'ram'}, + ], + }, 'sound_williams-z80': { code_start: 0x0, rom_size: 0x4000, @@ -497,6 +508,7 @@ function loadNative(modulename:string) { // mount the filesystem at /share function setupFS(FS, name:string) { var WORKERFS = FS.filesystems['WORKERFS']; + if (name === '65-vector') name = '65-sim6502'; // TODO if (!fsMeta[name]) throw "No filesystem for '" + name + "'"; FS.mkdir('/share'); FS.mount(WORKERFS, { @@ -893,7 +905,6 @@ function assembleCA65(step:BuildStep) { function linkLD65(step:BuildStep) { loadNative("ld65"); var params = step.params; - var platform = step.platform; gatherFiles(step); var binpath = "main"; if (staleFiles(step, [binpath])) { @@ -906,7 +917,7 @@ function linkLD65(step:BuildStep) { printErr:function(s) { errors.push({msg:s,line:0}); } }); var FS = LD65['FS']; - setupFS(FS, '65-'+getRootBasePlatform(platform)); + setupFS(FS, '65-'+getRootBasePlatform(step.platform)); populateFiles(step, FS); populateExtraFiles(step, FS, params.extra_link_files); var libargs = params.libargs; @@ -960,8 +971,8 @@ function linkLD65(step:BuildStep) { let seglast = symbolmap['__'+seg+'_LAST__']; if (segstart >= 0 && segsize > 0 && !seg.startsWith('PRG') && seg != 'RAM') { // TODO var type = null; - if (seg.startsWith('CODE') || seg == 'STARTUP' || seg == 'RODATA') type = 'rom'; - else if (seg == 'ZP' || seg == 'RAM' || seg == 'DATA' || seg == 'BSS') type = 'ram'; + if (seg.startsWith('CODE') || seg == 'STARTUP' || seg == 'RODATA' || seg.endsWith('ROM')) type = 'rom'; + else if (seg == 'ZP' || seg == 'DATA' || seg == 'BSS' || seg.endsWith('RAM')) type = 'ram'; segments.push({name:seg, start:segstart, size:segsize, last:seglast, type:type}); } } @@ -1894,6 +1905,8 @@ var TOOL_PRELOADFS = { 'ca65-nes': '65-nes', 'cc65-atari8': '65-atari8', 'ca65-atari8': '65-atari8', + 'cc65-vector': '65-sim6502', + 'ca65-vector': '65-sim6502', 'sdasz80': 'sdcc', 'sdcc': 'sdcc', 'sccz80': 'sccz80', diff --git a/tools/vector/dvgfonts.c b/tools/vector/dvgfonts.c new file mode 100644 index 00000000..5415b4e8 --- /dev/null +++ b/tools/vector/dvgfonts.c @@ -0,0 +1,118 @@ + +#include +#include + +typedef unsigned char byte; +typedef unsigned short word; + +#define P(x,y) ((((x) & 0xF) << 4) | (((y) & 0xF) << 0)) +#define FONT_UP 0xFE +#define FONT_LAST 0xFF + +const byte vecfont[59][8] = { + /*' '*/{ FONT_LAST }, + /*'!'*/{ P(4,0), P(3,2), P(5,2), P(4,0), FONT_UP, P(4,4), P(4,12), FONT_LAST }, + /*'"'*/{ P(2,10), P(2,6), FONT_UP, P(6,10), P(6,6), FONT_LAST }, + /*'#'*/{ P(0,4), P(8,4), P(6,2), P(6,10), P(8,8), P(0,8), P(2,10), P(2,2) }, + /*'$'*/{ P(6,2), P(2,6), P(6,10), FONT_UP, P(4,12), P(4,0), FONT_LAST }, + /*'%'*/{ P(0,0), P(8,12), FONT_UP, P(2,10), P(2,8), FONT_UP, P(6,4), P(6,2) }, + /*'&'*/{ P(8,0), P(4,12), P(8,8), P(0,4), P(4,0), P(8,4), FONT_LAST }, + /*'''*/{ P(0,12), P(8,0), FONT_LAST }, + + /*'('*/{ P(6,0), P(2,4), P(2,8), P(6,12), FONT_LAST }, + /*')'*/{ P(2,0), P(6,4), P(6,8), P(2,12), FONT_LAST }, + /*'*'*/{ P(0,0), P(4,12), P(8,0), P(0,8), P(8,8), P(0,0), FONT_LAST }, + /*'+'*/{ P(1,6), P(7,6), FONT_UP, P(4,9), P(4,3), FONT_LAST }, + /*','*/{ P(2,0), P(4,2), FONT_LAST }, + /*'-'*/{ P(2,6), P(6,6), FONT_LAST }, + /*'.'*/{ P(3,0), P(4,0), FONT_LAST }, + /*'/'*/{ P(0,0), P(8,12), FONT_LAST }, + + /*'0'*/{ P(0,0), P(8,0), P(8,12), P(0,12), P(0,0), P(8,12), FONT_LAST }, + /*'1'*/{ P(4,0), P(4,12), P(3,10), FONT_LAST }, + /*'2'*/{ P(0,12), P(8,12), P(8,7), P(0,5), P(0,0), P(8,0), FONT_LAST }, + /*'3'*/{ P(0,12), P(8,12), P(8,0), P(0,0), FONT_UP, P(0,6), P(8,6), FONT_LAST }, + /*'4'*/{ P(0,12), P(0,6), P(8,6), FONT_UP, P(8,12), P(8,0), FONT_LAST }, + /*'5'*/{ P(0,0), P(8,0), P(8,6), P(0,7), P(0,12), P(8,12), FONT_LAST }, + /*'6'*/{ P(0,12), P(0,0), P(8,0), P(8,5), P(0,7), FONT_LAST }, + /*'7'*/{ P(0,12), P(8,12), P(8,6), P(4,0), FONT_LAST }, + + /*'8'*/{ P(0,0), P(8,0), P(8,12), P(0,12), P(0,0), FONT_UP, P(0,6), P(8,6), }, + /*'9'*/{ P(8,0), P(8,12), P(0,12), P(0,7), P(8,5), FONT_LAST }, + /*':'*/{ P(4,9), P(4,7), FONT_UP, P(4,5), P(4,3), FONT_LAST }, + /*';'*/{ P(4,9), P(4,7), FONT_UP, P(4,5), P(1,2), FONT_LAST }, + /*'<'*/{ P(6,0), P(2,6), P(6,12), FONT_LAST }, + /*'='*/{ P(1,4), P(7,4), FONT_UP, P(1,8), P(7,8), FONT_LAST }, + /*'>'*/{ P(2,0), P(6,6), P(2,12), FONT_LAST }, + /*'?'*/{ P(0,8), P(4,12), P(8,8), P(4,4), FONT_UP, P(4,1), P(4,0), FONT_LAST }, + + /*'@'*/{ P(8,4), P(4,0), P(0,4), P(0,8), P(4,12), P(8,8), P(4,4), P(3,6) }, + /*'A'*/{ P(0,0), P(0,8), P(4,12), P(8,8), P(8,0), FONT_UP, P(0,4), P(8,4) }, + /*'B'*/{ P(0,0), P(0,12), P(4,12), P(8,10), P(4,6), P(8,2), P(4,0), P(0,0) }, + /*'C'*/{ P(8,0), P(0,0), P(0,12), P(8,12), FONT_LAST }, + /*'D'*/{ P(0,0), P(0,12), P(4,12), P(8,8), P(8,4), P(4,0), P(0,0), FONT_LAST }, + /*'E'*/{ P(8,0), P(0,0), P(0,12), P(8,12), FONT_UP, P(0,6), P(6,6), FONT_LAST }, + /*'F'*/{ P(0,0), P(0,12), P(8,12), FONT_UP, P(0,6), P(6,6), FONT_LAST }, + /*'G'*/{ P(6,6), P(8,4), P(8,0), P(0,0), P(0,12), P(8,12), FONT_LAST }, + + /*'H'*/{ P(0,0), P(0,12), FONT_UP, P(0,6), P(8,6), FONT_UP, P(8,12), P(8,0) }, + /*'I'*/{ P(0,0), P(8,0), FONT_UP, P(4,0), P(4,12), FONT_UP, P(0,12), P(8,12) }, + /*'J'*/{ P(0,4), P(4,0), P(8,0), P(8,12), FONT_LAST }, + /*'K'*/{ P(0,0), P(0,12), FONT_UP, P(8,12), P(0,6), P(6,0), FONT_LAST }, + /*'L'*/{ P(8,0), P(0,0), P(0,12), FONT_LAST }, + /*'M'*/{ P(0,0), P(0,12), P(4,8), P(8,12), P(8,0), FONT_LAST }, + /*'N'*/{ P(0,0), P(0,12), P(8,0), P(8,12), FONT_LAST }, + /*'O'*/{ P(0,0), P(0,12), P(8,12), P(8,0), P(0,0), FONT_LAST }, + + /*'P'*/{ P(0,0), P(0,12), P(8,12), P(8,6), P(0,5), FONT_LAST }, + /*'Q'*/{ P(0,0), P(0,12), P(8,12), P(8,4), P(0,0), FONT_UP, P(4,4), P(8,0) }, + /*'R'*/{ P(0,0), P(0,12), P(8,12), P(8,6), P(0,5), FONT_UP, P(4,5), P(8,0) }, + /*'S'*/{ P(0,2), P(2,0), P(8,0), P(8,5), P(0,7), P(0,12), P(6,12), P(8,10) }, + /*'T'*/{ P(0,12), P(8,12), FONT_UP, P(4,12), P(4,0), FONT_LAST }, + /*'U'*/{ P(0,12), P(0,2), P(4,0), P(8,2), P(8,12), FONT_LAST }, + /*'V'*/{ P(0,12), P(4,0), P(8,12), FONT_LAST }, + /*'W'*/{ P(0,12), P(2,0), P(4,4), P(6,0), P(8,12), FONT_LAST }, + + /*'X'*/{ P(0,0), P(8,12), FONT_UP, P(0,12), P(8,0), FONT_LAST }, + /*'Y'*/{ P(0,12), P(4,6), P(8,12), FONT_UP, P(4,6), P(4,0), FONT_LAST }, + /*'Z'*/{ P(0,12), P(8,12), P(0,0), P(8,0), FONT_UP, P(2,6), P(6,6), FONT_LAST }, +}; + +//// + +static int frame = 0; + +void draw_char(char ch) { + const byte* p = vecfont[ch - ' ']; + byte bright = 0; + byte x = 0; + byte y = 0; + byte i; + if (ch < ' ' || ch > 'Z') return; + printf("const word VECFONT_%d[] = { ", ch); + for (i=0; i<8; i++) { + byte b = *p++; + if (b == FONT_LAST) break; // last move + else if (b == FONT_UP) bright = 0; // pen up + else { + byte x2 = b>>4; + byte y2 = b&15; + printf("_SVEC(%d,%d,%d), ", (char)(x2-x), (char)(y2-y), bright); + bright = 4; + x = x2; + y = y2; + } + } + printf("_SVEC(%d,%d,%d), _RTSL() };\n", (char)12-x, (char)-y, 0); +} + +void main(void) { + for (int i=' '; i<='Z'; i++) { + draw_char(i); + } + printf("const word* const VECFONT[] = { "); + for (int i=' '; i<='Z'; i++) { + printf("VECFONT_%d,", i); + } + printf(" };\n"); +}