diff --git a/src/worker/fs/fs65-sim6502.data b/src/worker/fs/fs65-none.data similarity index 50% rename from src/worker/fs/fs65-sim6502.data rename to src/worker/fs/fs65-none.data index 1b6a69b9..13a4f6fb 100644 --- a/src/worker/fs/fs65-sim6502.data +++ b/src/worker/fs/fs65-none.data @@ -1,15 +1,58 @@ /*****************************************************************************/ /* */ -/* cbm.h */ +/* lz4.h */ /* */ -/* CBM system-specific definitions */ +/* Decompression routine for the 'lz4' format */ /* */ /* */ /* */ -/* (C) 1998-2015, Ullrich von Bassewitz */ -/* Roemerstrasse 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ +/* (C) 2017 Mega Cat Studios */ +/* */ +/* 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 _LZ4_H +#define _LZ4_H + +void __fastcall__ decompress_lz4 (const unsigned char* src, unsigned char* const dst, + const unsigned short uncompressed_size); +/* Decompresses the source buffer into the destination buffer. +** The size of the decompressed data must be known in advance, LZ4 +** does not include any terminator in-stream. +*/ + +/* end of lz4.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 */ @@ -33,636 +76,132 @@ -#ifndef _CBM_H -#define _CBM_H +#ifndef _C64_H +#define _C64_H /* Check for errors */ -#if !defined(__CBM__) -# error This module may be used only when compiling for CBM machines! +#if !defined(__C64__) +# error This module may only be used when compiling for the C64! #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 */ -/* Rmerstrasse 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 +/* 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 -/* Data bit settings */ -#define SER_BITS_5 0x00 -#define SER_BITS_6 0x01 -#define SER_BITS_7 0x02 -#define SER_BITS_8 0x03 +/* 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 -/* Stop bit settings */ -#define SER_STOP_1 0x00 /* One stop bit */ -#define SER_STOP_2 0x01 /* Two stop bits */ +/* 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 -/* 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 +/* Masks for joy_read */ +#define JOY_UP_MASK 0x01 +#define JOY_DOWN_MASK 0x02 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x10 -/* 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 */ +/* Define hardware */ +#include <_vic2.h> +#define VIC (*(struct __vic2*)0xD000) -/* 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 */ +#include <_sid.h> +#define SID (*(struct __sid*)0xD400) -/* 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 */ +#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_65816_emd[]; +extern void c64_c256k_emd[]; +extern void c64_dqbb_emd[]; +extern void c64_georam_emd[]; +extern void c64_isepic_emd[]; +extern void c64_kerberos_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[] */ -/* 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 */ -}; /*****************************************************************************/ @@ -671,50 +210,13 @@ struct ser_params { -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. */ +unsigned char get_ostype (void); +/* Get the ROM version. Returns one of the C64_OS_xxx codes. */ -/* End of serial.h */ +/* End of c64.h */ #endif - - - /*****************************************************************************/ /* */ /* _pbi.h */ @@ -780,16 +282,13 @@ unsigned char __fastcall__ ser_ioctl (unsigned char code, void* data); /*****************************************************************************/ /* */ -/* _6526.h */ +/* apple2_filetype.h */ /* */ -/* Internal include file, do not use directly */ +/* Apple ][ file type definitions */ /* */ /* */ /* */ -/* (C) 1998-2000 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ -/* EMail: uz@musoftware.de */ +/* (C) 2017 Bill Chatfield, */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -813,89 +312,14 @@ unsigned char __fastcall__ ser_ioctl (unsigned char code, void* data); -#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 +#ifndef _APPLE2_FILETYPE_H +#define _APPLE2_FILETYPE_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 +#if !defined(__APPLE2__) +# error This module may only be used when compiling for the Apple ][! #endif @@ -906,32 +330,260 @@ struct __6526 { -/* Characters codes */ -#define CH_DEL 0x7F -#define CH_CURS_UP 0x0B -#define CH_CURS_DOWN 0x0A +/* ProDOS general file types */ +#define PRODOS_T_UNK 0x00 /* Unknown */ +#define PRODOS_T_BAD 0x01 /* Bad blocks */ +#define PRODOS_T_PCD 0x02 /* Pascal code */ +#define PRODOS_T_PTX 0x03 /* Pascal text */ +#define PRODOS_T_TXT 0x04 /* ASCII text */ +#define PRODOS_T_PDA 0x05 /* Pascal data */ +#define PRODOS_T_BIN 0x06 /* Binary */ +#define PRODOS_T_FNT 0x07 /* Apple III font */ +#define PRODOS_T_FOT 0x08 /* Hi-res, dbl hi-res graphics */ +#define PRODOS_T_BA3 0x09 /* Apple III BASIC program */ +#define PRODOS_T_DA3 0x09 /* Apple III BASIC data */ +#define PRODOS_T_WPF 0x0A /* Generic word processing */ +#define PRODOS_T_SOS 0x0B /* SOS system */ +#define PRODOS_T_DIR 0x0F /* ProDOS directory */ -/* 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 +/* ProDOS productivity file types */ +#define PRODOS_T_RPD 0x10 /* RPS data */ +#define PRODOS_T_RPI 0x11 /* RPS index */ +#define PRODOS_T_AFD 0x12 /* AppleFile discard */ +#define PRODOS_T_AFM 0x13 /* AppleFile model */ +#define PRODOS_T_AFR 0x14 /* AppleFile report */ +#define PRODOS_T_SCL 0x15 /* Screen library */ +#define PRODOS_T_PFS 0x16 /* PFS document */ +#define PRODOS_T_ADB 0x19 /* AppleWorks database */ +#define PRODOS_T_AWP 0x1A /* AppleWorks word processing */ +#define PRODOS_T_ASP 0x1B /* AppleWorks spreadsheet */ -/* Styles for textframe */ -#define TEXTFRAME_WIDE 0x00 -#define TEXTFRAME_TALL 0x04 +/* ProDOS code file types */ +#define PRODOS_T_TDM 0x20 /* Desktop Manager */ +#define PRODOS_T_IPS 0x21 /* Instant Pascal source */ +#define PRODOS_T_UPV 0x22 /* USCD Pascal volume */ +#define PRODOS_T_3SD 0x29 /* SOS directory */ +#define PRODOS_T_8SC 0x2A /* Source code */ +#define PRODOS_T_8OB 0x2B /* Object code */ +#define PRODOS_T_8IC 0x2C /* Interpreted code */ +#define PRODOS_T_8LD 0x2D /* Language data */ +#define PRODOS_T_P8C 0x2E /* ProDOS 8 code module */ -/* Video modes */ -#define VIDEOMODE_40x24 0x0011 -#define VIDEOMODE_80x24 0x0012 -#define VIDEOMODE_40COL VIDEOMODE_40x24 -#define VIDEOMODE_80COL VIDEOMODE_80x24 +/* ProDOS miscellaneous file types */ +#define PRODOS_T_OCR 0x41 /* Optical char recognition */ +#define PRODOS_T_FTD 0x42 /* File type definitions */ + +/* ProDOS Apple IIgs general file types */ +#define PRODOS_T_GWP 0x50 /* Apple IIgs word processing */ +#define PRODOS_T_GSS 0x51 /* Apple IIgs spreadsheet */ +#define PRODOS_T_GDB 0x52 /* Apple IIgs database */ +#define PRODOS_T_DRW 0x53 /* Object oriented graphics */ +#define PRODOS_T_GDP 0x54 /* Apple IIgs desktop publish */ +#define PRODOS_T_HMD 0x55 /* HyperMedia */ +#define PRODOS_T_EDU 0x56 /* Educational program data */ +#define PRODOS_T_STN 0x57 /* Stationary */ +#define PRODOS_T_HLP 0x58 /* Help */ +#define PRODOS_T_COM 0x59 /* Communications */ +#define PRODOS_T_CFG 0x5A /* Configuration */ +#define PRODOS_T_ANM 0x5B /* Animation */ +#define PRODOS_T_MUM 0x5C /* Multimedia */ +#define PRODOS_T_ENT 0x5D /* Entertainment */ +#define PRODOS_T_DVU 0x5E /* Development utility */ + +/* ProDOS PC Transporter file types */ +#define PRODOS_T_PRE 0x60 /* PC pre-boot */ +#define PRODOS_T_BIO 0x6B /* PC BIOS */ +#define PRODOS_T_NCF 0x66 /* ProDOS File Nav command file */ +#define PRODOS_T_DVR 0x6D /* PC driver */ +#define PRODOS_T_PRE2 0x6E /* PC pre-boot */ +#define PRODOS_T_HDV 0x6F /* PC hard disk image */ + +/* ProDOS Kreative Software file types */ +#define PRODOS_T_SN2 0x70 /* Sabine's Notebook 2.0 */ +#define PRODOS_T_KMT 0x71 +#define PRODOS_T_DSR 0x72 +#define PRODOS_T_BAN 0x73 +#define PRODOS_T_CG7 0x74 +#define PRODOS_T_TNJ 0x75 +#define PRODOS_T_SA7 0x76 +#define PRODOS_T_KES 0x77 +#define PRODOS_T_JAP 0x78 +#define PRODOS_T_CSL 0x79 +#define PRODOS_T_TME 0x7A +#define PRODOS_T_TLB 0x7B +#define PRODOS_T_MR7 0x7C +#define PRODOS_T_MLR 0x7D /* Mika City */ +#define PRODOS_T_MMM 0x7E +#define PRODOS_T_JCP 0x7F + +/* ProDOS GEOS file types */ +#define PRODOS_T_GES 0x80 /* GEOS system file */ +#define PRODOS_T_GEA 0x81 /* GEOS desk accessory */ +#define PRODOS_T_GEO 0x82 /* GEOS application */ +#define PRODOS_T_GED 0x83 /* GEOS document */ +#define PRODOS_T_GEF 0x84 /* GEOS font */ +#define PRODOS_T_GEP 0x85 /* GEOS printer driver */ +#define PRODOS_T_GEI 0x86 /* GEOS input driver */ +#define PRODOS_T_GEX 0x87 /* GEOS auxiliary driver */ +#define PRODOS_T_GEV 0x89 /* GEOS swap file */ +#define PRODOS_T_GEC 0x8B /* GEOS clock driver */ +#define PRODOS_T_GEK 0x8C /* GEOS interface card driver */ +#define PRODOS_T_GEW 0x8D /* GEOS formatting data */ + +/* ProDOS Apple IIgs BASIC file types */ +#define PRODOS_T_WP 0xA0 /* WordPerfect */ +#define PRODOS_T_GSB 0xAB /* Apple IIgs BASIC program */ +#define PRODOS_T_TDF 0xAB /* Apple IIgs BASIC TDF */ +#define PRODOS_T_BDF 0xAB /* Apple IIgs BASIC data */ + +/* ProDOS Apple IIgs system file types */ +#define PRODOS_T_SRC 0xB0 /* Apple IIgs source code */ +#define PRODOS_T_OBJ 0xB1 /* Apple IIgs object code */ +#define PRODOS_T_LIB 0xB2 /* Apple IIgs library */ +#define PRODOS_T_S16 0xB3 /* Apple IIgs application pgm */ +#define PRODOS_T_RTL 0xB4 /* Apple IIgs runtime library */ +#define PRODOS_T_EXE 0xB5 /* Apple IIgs shell script */ +#define PRODOS_T_PIF 0xB6 /* Apple IIgs permanent init */ +#define PRODOS_T_TIF 0xB7 /* Apple IIgs temporary init */ +#define PRODOS_T_NDA 0xB8 /* Apple IIgs new desk accesry */ +#define PRODOS_T_CDA 0xB9 /* Apple IIgs classic desk aces */ +#define PRODOS_T_TOL 0xBA /* Apple IIgs tool */ +#define PRODOS_T_DRV 0xBB /* Apple IIgs device driver */ +#define PRODOS_T_LDF 0xBC /* Apple IIgs generic load file */ +#define PRODOS_T_FST 0xBD /* Apple IIgs file sys translat */ +#define PRODOS_T_DOC 0xBF /* Apple IIgs document */ + +/* ProDOS graphics file types */ +#define PRODOS_T_PNT 0xC0 /* Apple IIgs packed sup hi-res */ +#define PRODOS_T_PIC 0xC1 /* Apple IIgs super hi-res */ +#define PRODOS_T_ANI 0xC2 /* PaintWorks animation */ +#define PRODOS_T_PAL 0xC3 /* PaintWorks palette */ +#define PRODOS_T_OOG 0xC5 /* Object-oriented graphics */ +#define PRODOS_T_SCR 0xC6 /* Script */ +#define PRODOS_T_CDV 0xC7 /* Apple IIgs control panel */ +#define PRODOS_T_FON 0xC8 /* Apple IIgs font */ +#define PRODOS_T_FND 0xC9 /* Apple IIgs Finder data */ +#define PRODOS_T_ICN 0xCA /* Apple IIgs icon */ + +/* ProDOS audio file types */ +#define PRODOS_T_MUS 0xD5 /* Music */ +#define PRODOS_T_INS 0xD6 /* Instrument */ +#define PRODOS_T_MID 0xD7 /* MIDI */ +#define PRODOS_T_SND 0xD8 /* Apple IIgs audio */ +#define PRODOS_T_DBM 0xDB /* DB master document */ + +/* ProDOS miscellaneous file types */ +#define PRODOS_T_LBR 0xE0 /* Archive */ +#define PRODOS_T_ATK 0xE2 /* AppleTalk data */ +#define PRODOS_T_R16 0xEE /* EDASM 816 relocatable code */ +#define PRODOS_T_PAR 0xEF /* Pascal area */ + +/* ProDOS system file types */ +#define PRODOS_T_CMD 0xF0 /* ProDOS command file */ +#define PRODOS_T_OVL 0xF1 /* User defined 1 */ +#define PRODOS_T_UD2 0xF2 /* User defined 2 */ +#define PRODOS_T_UD3 0xF3 /* User defined 3 */ +#define PRODOS_T_UD4 0xF4 /* User defined 4 */ +#define PRODOS_T_BAT 0xF5 /* User defined 5 */ +#define PRODOS_T_UD6 0xF6 /* User defined 6 */ +#define PRODOS_T_UD7 0xF7 /* User defined 7 */ +#define PRODOS_T_PRG 0xF8 /* User defined 8 */ +#define PRODOS_T_P16 0xF9 /* ProDOS-16 system file */ +#define PRODOS_T_INT 0xFA /* Integer BASIC program */ +#define PRODOS_T_IVR 0xFB /* Integer BASIC variables */ +#define PRODOS_T_BAS 0xFC /* Applesoft BASIC program */ +#define PRODOS_T_VAR 0xFD /* Applesoft BASIC variables */ +#define PRODOS_T_REL 0xFE /* EDASM relocatable code */ +#define PRODOS_T_SYS 0xFF /* ProDOS-8 system file */ + +/* The auxiliary type of a text file specifies its record length. +** A record length of 0 indicates a sequential text file, which is +** equivalent to text files of other operating systems like MacOS +** or Windows, except that lines are delimited by carriage returns +** only. An auxiliary type value greater than 0 for a text file, +** which is the record length, indicates a random access text file +** with fixed-length lines. +*/ +#define PRODOS_AUX_T_TXT_SEQ 0x0000 /* Sequential text */ + +/* 8IC auxiliary types */ +#define PRODOS_AUX_T_8IC_APEX_PGM 0x8003 /* Apex program */ + +/* GWP auxiliary types */ +#define PRODOS_AUX_T_GWP_TEACH 0x5445 /* Teach */ +#define PRODOS_AUX_T_GWP_DELUXEWRITE 0x8001 /* DeluxeWrite */ +#define PRODOS_AUX_T_GWP_APPLEWORKS_GS 0x8010 /* AppleWorks GS */ + +/* GSS auxiliary types */ +#define PRODOS_AUX_T_GSS_APPLEWORKS_GS 0x8010 /* AppleWorks GS */ + +/* GDB auxiliary types */ +#define PRODOS_AUX_T_GDB_APPLEWORKS_GS 0x8010 /* AppleWorks GS DB */ +#define PRODOS_AUX_T_GDB_AWGS_TMPL 0x8011 /* AWGS template */ +#define PRODOS_AUX_T_GDB_GSAS 0x8013 + +/* DRW auxiliary types */ +#define PRODOS_AUX_T_DRW_OO_GRAPHICS 0x8013 /* AWGS O-O graphics */ + +/* GDP auxiliary types */ +#define PRODOS_AUX_T_GDP_GRAPHICWRITER 0x8002 /* A2gs GraphicWriter */ +#define PRODOS_AUX_T_GDP_APPLEWORKS_GS 0x8010 /* A2gs AWGS */ + +/* HMD auxiliary types */ +#define PRODOS_AUX_T_HMD_HYPERCARD_GS 0x0001 /* HyperCard GS */ +#define PRODOS_AUX_T_HMD_TUTOR_TECH 0x8001 /* Tutor-Tech */ +#define PRODOS_AUX_T_HMD_HYPERSTUDIO 0x8002 /* HyperStudio */ +#define PRODOS_AUX_T_HMD_NEXUS 0x8003 /* Nexus */ + +/* COM auxiliary types */ +#define PRODOS_AUX_T_COM_APPLEWORKS_GS 0x8003 /* AppleWorks GS */ + +/* MLR auxiliary types */ +#define PRODOS_AUX_T_MLR_SCRIPT 0x005C /* Mika City script */ +#define PRODOS_AUX_T_MLR_COLOR_TABLE 0xC7AB /* Mika City color table */ +#define PRODOS_AUX_T_MLR_CHARACTER_DEF 0xCDEF /* Mika City character def */ + +/* LDF auxiliary types */ +#define PRODOS_AUX_T_LDF_NIFTY_LIST_MOD 0x4001 /* Nifty list module */ +#define PRODOS_AUX_T_LDF_SUPER_INFO_MOD 0x4002 /* Super info module */ +#define PRODOS_AUX_T_LDF_TWILIGHT_MOD 0x4004 /* Twilight module */ +#define PRODOS_AUX_T_LDF_MARINETTI_LLM 0x4004 /* Marinetti link layer mod */ + +/* PNT auxiliary types */ +#define PRODOS_AUX_T_PNT_PK_SUPER_HIRES 0x0001 /* Packed super hi-res */ +#define PRODOS_AUX_T_PNT_APPLE_PREF 0x0002 /* Apple preferred format */ +#define PRODOS_AUX_T_PNT_PK_QUICKDRAWII 0x0003 /* Packed QuickDraw II */ + +/* PIC auxiliary types */ +#define PRODOS_AUX_T_PIC_QUICKDRAW 0x0001 /* QuickDraw image */ +#define PRODOS_AUX_T_PIC_SHIRES_3200 0x0002 /* Super hi-res 3200 */ + +/* FON auxiliary types */ +#define PRODOS_AUX_T_FON_QUICKDRAW_BIT 0x0000 /* QuickDraw bitmap font */ +#define PRODOS_AUX_T_FON_POINTLESS_TT 0x0001 /* Pointless TrueType font */ + +/* SND auxiliary types */ +#define PRODOS_AUX_T_SND_AIFF 0x0000 /* AIFF */ +#define PRODOS_AUX_T_SND_AIFF_C 0x0001 /* AIFF-C */ +#define PRODOS_AUX_T_SND_ASIF_INSTR 0x0002 /* ASIF instrument */ +#define PRODOS_AUX_T_SND_SOUND_RSRC 0x0003 /* Sound resource */ +#define PRODOS_AUX_T_SND_MIDI_SYNTH_WAV 0x0004 /* MIDI synth wave */ +#define PRODOS_AUX_T_SND_HYPERSTUDIO 0x8001 /* HyperStudio sound */ + +/* LBR auxiliary types */ +#define PRODOS_AUX_T_LBR_ALU 0x0000 /* ALU */ +#define PRODOS_AUX_T_LBR_APPLE_SINGLE 0x0001 /* AppleSingle */ +#define PRODOS_AUX_T_LBR_APPLEDBL_HDR 0x0002 /* AppleDouble header */ +#define PRODOS_AUX_T_LBR_APPLEDBL_DATA 0x0003 /* AppleDouble data */ +#define PRODOS_AUX_T_LBR_BINARY_II 0x8000 /* Binary II */ +#define PRODOS_AUX_T_LBR_APPLELINK_ACU 0x8001 /* AppleLink ACU */ +#define PRODOS_AUX_T_LBR_SHRINKIT 0x8002 /* ShrinkIt */ + +/* LBR auxiliary types */ +#define PRODOS_AUX_T_ATK_EASYMNT_ALIAS 0x0000 /* EasyMount alias */ + +/* BAS auxiliary types */ +#define PRODOS_AUX_T_BAS_PGM_LOAD_ADDR 0x0801 /* Applesoft pgm load addr */ @@ -941,54 +593,24 @@ struct __6526 { -/* 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. +/* The file stream implementation and the POSIX I/O functions will use the +** following variables to determine the file type and auxiliary type to use. +** This applies specifically to the fopen and open functions. */ +extern unsigned char _filetype; /* Default: PRODOS_T_BIN */ +extern unsigned int _auxtype; /* Default: 0 */ -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 */ +/* End of apple2_filetype.h */ #endif /*****************************************************************************/ /* */ -/* fcntl.h */ +/* nes.h */ /* */ -/* File control operations */ +/* NES system specific definitions */ /* */ /* */ /* */ -/* (C) 1998-2004 Ullrich von Bassewitz */ -/* Rmerstrae 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ +/* (C) 2002-2003 Groepaz/Hitmen */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -1012,108 +634,168 @@ unsigned __fastcall__ videomode (unsigned mode); -#ifndef _FCNTL_H -#define _FCNTL_H +#ifndef _NES_H +#define _NES_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 */ +/* Check for errors */ +#if !defined(__NES__) +# error This module may only be used when compiling for the NES! #endif -/* -** _heap.h -** -** Ullrich von Bassewitz, 1998-06-03, 2004-12-19 -** -*/ +/* 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 -#ifndef __HEAP_H -#define __HEAP_H +/* Masks for joy_read */ +#define JOY_UP_MASK 0x10 +#define JOY_DOWN_MASK 0x20 +#define JOY_LEFT_MASK 0x40 +#define JOY_RIGHT_MASK 0x80 +#define JOY_BTN_1_MASK 0x01 +#define JOY_BTN_2_MASK 0x02 +#define JOY_BTN_3_MASK 0x04 +#define JOY_BTN_4_MASK 0x08 +#define JOY_BTN_A_MASK JOY_BTN_1_MASK +#define JOY_BTN_B_MASK JOY_BTN_2_MASK +#define JOY_SELECT_MASK JOY_BTN_3_MASK +#define JOY_START_MASK JOY_BTN_4_MASK +#define JOY_BTN_A(v) ((v) & JOY_BTN_A_MASK) +#define JOY_BTN_B(v) ((v) & JOY_BTN_B_MASK) +#define JOY_SELECT(v) ((v) & JOY_SELECT_MASK) +#define JOY_START(v) ((v) & JOY_START_MASK) -/* 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; +/* 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 + +/* 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) -/* 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; +/* 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[] */ -/* 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 */ +void waitvsync (void); +/* Wait for start of the next frame */ + +unsigned char get_tv (void); +/* Return the video mode the machine is using. */ -/* End of _heap.h */ - +/* End of nes.h */ #endif - - - /*****************************************************************************/ /* */ -/* stdio.h */ +/* assert.h */ /* */ -/* Input/output */ +/* Diagnostics */ /* */ /* */ /* */ -/* (C) 1998-2011, Ullrich von Bassewitz */ +/* (C) 1998-2015, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ @@ -1140,184 +822,33 @@ extern struct freeblock* _heaplast; /* Last free block in list */ -#ifndef _STDIO_H -#define _STDIO_H +#ifndef _ASSERT_H +#define _ASSERT_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) +#undef assert +#ifdef NDEBUG +# define assert(expr) #else -# define FILENAME_MAX (16+1) +extern void __fastcall__ _afailed (const char*, unsigned); +# define assert(expr) ((expr)? (void)0 : _afailed(__FILE__, __LINE__)) #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 */ +/* TODO: Guard with #if __CC65_STD__ >= __CC65_STD_C11__ if there +** is a C11 mode. +*/ +#if __CC65_STD__ > __CC65_STD_C99__ +# define static_assert _Static_assert #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 */ +/* End of assert.h */ #endif - - - /*****************************************************************************/ /* */ -/* _6551.h */ +/* _6545.h */ /* */ /* Internal include file, do not use directly */ /* */ @@ -1350,22 +881,294 @@ void __fastcall__ _poserror (const char* msg); /* cc65 */ -#ifndef __6551_H -#define __6551_H +#ifndef __6545_H +#define __6545_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 */ +/* Define a structure with the 6545 register offsets */ +struct __6545 { unsigned char ctrl; /* Control register */ + unsigned char data; /* Data register */ }; -/* End of _6551.h */ +/* End of _6545.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 + + + +/*****************************************************************************/ +/* */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* 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 @@ -1463,6 +1266,13 @@ struct __6551 { #define TGI_COLOR_LIGHTBLUE COLOR_LIGHTBLUE #define TGI_COLOR_GRAY3 COLOR_GRAY3 +/* Masks for joy_read */ +#define JOY_UP_MASK 0x01 +#define JOY_DOWN_MASK 0x02 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x10 + /* Video mode defines */ #define VIDEOMODE_40x25 0x00 #define VIDEOMODE_80x25 0x80 @@ -1506,6 +1316,7 @@ extern void c128_joy_mou[]; extern void c128_inkwell_mou[]; extern void c128_pot_mou[]; extern void c128_swlink_ser[]; +extern void c128_hi_tgi[]; extern void c128_vdc_tgi[]; /* Referred to by tgi_static_stddrv[] */ extern void c128_vdc2_tgi[]; @@ -1532,22 +1343,496 @@ void fast (void); void slow (void); /* Switch the CPU into 1MHz mode. */ - +unsigned char isfast (void); +/* Returns 1 if the CPU is in 2MHz mode. */ /* End of c128.h */ #endif /*****************************************************************************/ /* */ -/* conio.h */ +/* cx16.h */ /* */ -/* Direct console I/O */ +/* CX16 system-specific definitions */ +/* For prerelease 38 */ +/* */ +/* */ +/* 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 _CX16_H +#define _CX16_H + + + +/* Check for errors */ +#ifndef __CX16__ +# error This module may be used only when compiling for the CX16! +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Additional output character codes */ +#define CH_COLOR_SWAP 0x01 +#define CH_UNDERLINE 0x04 +#define CH_WHITE 0x05 +#define CH_BOLD 0x06 +#define CH_BACKSPACE 0x08 +#define CH_ITALIC 0x0B +#define CH_OUTLINE 0x0C +#define CH_FONT_ISO 0x0F +#define CH_RED 0x1C +#define CH_GREEN 0x1E +#define CH_BLUE 0x1F +#define CH_ORANGE 0x81 +#define CH_FONT_PET 0x8F +#define CH_BLACK 0x90 +#define CH_ATTR_CLEAR 0x92 +#define CH_BROWN 0x95 +#define CH_PINK 0x96 +#define CH_LIGHTRED CH_PINK +#define CH_GRAY1 0x97 +#define CH_GRAY2 0x98 +#define CH_LIGHTGREEN 0x99 +#define CH_LIGHTBLUE 0x9A +#define CH_GRAY3 0x9B +#define CH_PURPLE 0x9C +#define CH_VIOLET CH_PURPLE +#define CH_YELLOW 0x9E +#define CH_CYAN 0x9F +#define CH_SHIFT_SPACE 0xA0 + +/* Additional key defines */ +#define CH_SHIFT_TAB 0x18 +#define CH_HELP 0x84 +#define CH_F1 0x85 +#define CH_F2 0x89 +#define CH_F3 0x86 +#define CH_F4 0x8A +#define CH_F5 0x87 +#define CH_F6 0x8B +#define CH_F7 0x88 +#define CH_F8 0x8C +#define CH_F9 0x10 +#define CH_F10 0x15 +#define CH_F11 0x16 +#define CH_F12 0x17 + +/* 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_PINK 0x0A +#define COLOR_LIGHTRED COLOR_PINK +#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 + +/* NES controller masks for joy_read() */ + +#define JOY_BTN_1_MASK 0x80 +#define JOY_BTN_2_MASK 0x40 +#define JOY_BTN_3_MASK 0x20 +#define JOY_BTN_4_MASK 0x10 +#define JOY_UP_MASK 0x08 +#define JOY_DOWN_MASK 0x04 +#define JOY_LEFT_MASK 0x02 +#define JOY_RIGHT_MASK 0x01 + +#define JOY_BTN_A_MASK JOY_BTN_1_MASK +#define JOY_BTN_B_MASK JOY_BTN_2_MASK +#define JOY_SELECT_MASK JOY_BTN_3_MASK +#define JOY_START_MASK JOY_BTN_4_MASK + +#define JOY_BTN_A(v) ((v) & JOY_BTN_A_MASK) +#define JOY_BTN_B(v) ((v) & JOY_BTN_B_MASK) +#define JOY_SELECT(v) ((v) & JOY_SELECT_MASK) +#define JOY_START(v) ((v) & JOY_START_MASK) + +#define JOY_FIRE2_MASK JOY_BTN_2_MASK +#define JOY_FIRE2(v) ((v) & JOY_FIRE2_MASK) + +/* Additional mouse button mask */ +#define MOUSE_BTN_MIDDLE 0x02 + +/* get_tv() return codes +** set_tv() argument codes +*/ +enum { + TV_NONE = 0x00, + TV_VGA, + TV_NTSC_COLOR, + TV_RGB, + TV_NONE2, + TV_VGA2, + TV_NTSC_MONO, + TV_RGB2 +}; + +/* Video modes for videomode() */ +#define VIDEOMODE_40x30 0x00 +#define VIDEOMODE_80x60 0x02 +#define VIDEOMODE_40COL VIDEOMODE_40x30 +#define VIDEOMODE_80COL VIDEOMODE_80x60 +#define VIDEOMODE_320x200 0x80 +#define VIDEOMODE_SWAP (-1) + +/* VERA's address increment/decrement numbers */ +enum { + VERA_DEC_0 = ((0 << 1) | 1) << 3, + VERA_DEC_1 = ((1 << 1) | 1) << 3, + VERA_DEC_2 = ((2 << 1) | 1) << 3, + VERA_DEC_4 = ((3 << 1) | 1) << 3, + VERA_DEC_8 = ((4 << 1) | 1) << 3, + VERA_DEC_16 = ((5 << 1) | 1) << 3, + VERA_DEC_32 = ((6 << 1) | 1) << 3, + VERA_DEC_64 = ((7 << 1) | 1) << 3, + VERA_DEC_128 = ((8 << 1) | 1) << 3, + VERA_DEC_256 = ((9 << 1) | 1) << 3, + VERA_DEC_512 = ((10 << 1) | 1) << 3, + VERA_DEC_40 = ((11 << 1) | 1) << 3, + VERA_DEC_80 = ((12 << 1) | 1) << 3, + VERA_DEC_160 = ((13 << 1) | 1) << 3, + VERA_DEC_320 = ((14 << 1) | 1) << 3, + VERA_DEC_640 = ((15 << 1) | 1) << 3, + VERA_INC_0 = ((0 << 1) | 0) << 3, + VERA_INC_1 = ((1 << 1) | 0) << 3, + VERA_INC_2 = ((2 << 1) | 0) << 3, + VERA_INC_4 = ((3 << 1) | 0) << 3, + VERA_INC_8 = ((4 << 1) | 0) << 3, + VERA_INC_16 = ((5 << 1) | 0) << 3, + VERA_INC_32 = ((6 << 1) | 0) << 3, + VERA_INC_64 = ((7 << 1) | 0) << 3, + VERA_INC_128 = ((8 << 1) | 0) << 3, + VERA_INC_256 = ((9 << 1) | 0) << 3, + VERA_INC_512 = ((10 << 1) | 0) << 3, + VERA_INC_40 = ((11 << 1) | 0) << 3, + VERA_INC_80 = ((12 << 1) | 0) << 3, + VERA_INC_160 = ((13 << 1) | 0) << 3, + VERA_INC_320 = ((14 << 1) | 0) << 3, + VERA_INC_640 = ((15 << 1) | 0) << 3 +}; + +/* VERA's interrupt flags */ +#define VERA_IRQ_VSYNC 0b00000001 +#define VERA_IRQ_RASTER 0b00000010 +#define VERA_IRQ_SPR_COLL 0b00000100 +#define VERA_IRQ_AUDIO_LOW 0b00001000 + + +/* Define hardware. */ + +/* A structure with the Video Enhanced Retro Adapter's external registers */ +struct __vera { + unsigned short address; /* Address for data ports */ + unsigned char address_hi; + unsigned char data0; /* Data port 0 */ + unsigned char data1; /* Data port 1 */ + unsigned char control; /* Control register */ + unsigned char irq_enable; /* Interrupt enable bits */ + unsigned char irq_flags; /* Interrupt flags */ + unsigned char irq_raster; /* Line where IRQ will occur */ + union { + struct { /* Visible when DCSEL flag = 0 */ + unsigned char video; /* Flags to enable video layers */ + unsigned char hscale; /* Horizontal scale factor */ + unsigned char vscale; /* Vertical scale factor */ + unsigned char border; /* Border color (NTSC mode) */ + }; + struct { /* Visible when DCSEL flag = 1 */ + unsigned char hstart; /* Horizontal start position */ + unsigned char hstop; /* Horizontal stop position */ + unsigned char vstart; /* Vertical start position */ + unsigned char vstop; /* Vertical stop position */ + }; + } display; + struct { + unsigned char config; /* Layer map geometry */ + unsigned char mapbase; /* Map data address */ + unsigned char tilebase; /* Tile address and geometry */ + unsigned int hscroll; /* Smooth scroll horizontal offset */ + unsigned int vscroll; /* Smooth scroll vertical offset */ + } layer0; + struct { + unsigned char config; + unsigned char mapbase; + unsigned char tilebase; + unsigned int hscroll; + unsigned int vscroll; + } layer1; + struct { + unsigned char control; /* PCM format */ + unsigned char rate; /* Sample rate */ + unsigned char data; /* PCM output queue */ + } audio; /* Pulse-Code Modulation registers */ + struct { + unsigned char data; + unsigned char control; + } spi; /* SD card interface */ +}; +#define VERA (*(volatile struct __vera *)0x9F20) + +#include <_6522.h> +#define VIA1 (*(volatile struct __6522 *)0x9F60) +#define VIA2 (*(volatile struct __6522 *)0x9F70) + +#define RAM_BANK (VIA1.pra) +#define ROM_BANK (VIA1.prb) + +/* A structure with the x16emu's settings registers */ +struct __emul { + unsigned char debug; /* Boolean: debugging enabled */ + unsigned char vera_action; /* Boolean: displaying VERA activity */ + unsigned char keyboard; /* Boolean: displaying typed keys */ + unsigned char echo; /* How to send Kernal output to host */ + unsigned char save_on_exit; /* Boolean: save machine state on exit */ + unsigned char gif_method; /* How GIF movie is being recorded */ + unsigned char const unused1[2]; + unsigned long const cycle_count; /* Running total of CPU cycles (8 MHz.) */ + unsigned char const unused2[1]; + unsigned char const keymap; /* Keyboard layout number */ + char const detect[2]; /* "16" if running on x16emu */ +}; +#define EMULATOR (*(volatile struct __emul *)0x9FB0) + +/* An array window into the half Mebibyte or two Mebibytes of banked RAM */ +#define BANK_RAM ((unsigned char *)0xA000) + + + +/* The addresses of the static drivers */ + +extern void cx16_std_joy[]; /* Referenced by joy_static_stddrv[] */ +extern void cx16_std_mou[]; /* Referenced by mouse_static_stddrv[] */ +extern void cx320p1_tgi[]; /* Referenced by tgi_static_stddrv[] */ + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +unsigned short get_numbanks (void); +/* Return the number of RAM banks that the machine has. */ + +signed char get_ostype (void); +/* Get the ROM build version. +** -1 -- custom build +** Negative -- prerelease build +** Positive -- release build +*/ + +unsigned char get_tv (void); +/* Return the video signal type that the machine is using. +** Return a TV_xx constant. +*/ + +void __fastcall__ set_tv (unsigned char type); +/* Set the video signal type that the machine will use. +** Call with a TV_xx constant. +*/ + +unsigned char __fastcall__ vera_layer_enable (unsigned char layers); +/* Display the layers that are "named" by the bit flags in layers. +** A value of 0b01 shows layer 0, a value of 0b10 shows layer 1, +** a value of 0b11 shows both layers. Return the previous value. +*/ + +unsigned char __fastcall__ vera_sprites_enable (unsigned char mode); +/* Enable the sprite engine when mode is non-zero (true); +** disable sprites when mode is zero. Return the previous mode. +*/ + +signed char __fastcall__ videomode (signed char mode); +/* Set the video mode, return the old mode. +** Return -1 if Mode isn't valid. +** Call with one of the VIDEOMODE_xx constants. +*/ + +unsigned char __fastcall__ vpeek (unsigned long addr); +/* Get a byte from a location in VERA's internal address space. */ + +void __fastcall__ vpoke (unsigned char data, unsigned long addr); +/* Put a byte into a location in VERA's internal address space. +** (addr is second instead of first for the sake of code efficiency.) +*/ + + + +/* End of cX16.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 + +/*****************************************************************************/ +/* */ +/* c16.h */ +/* */ +/* C16 system specific definitions */ /* */ /* */ /* */ -/* (C) 1998-2007 Ullrich von Bassewitz */ -/* Roemerstrasse 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ +/* (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 */ @@ -1571,210 +1856,102 @@ void slow (void); -/* -** 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 _C16_H +#define _C16_H -#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 +/* 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 + + + +/* 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 /*****************************************************************************/ -/* Functions */ +/* */ +/* _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. */ +/* */ /*****************************************************************************/ -void clrscr (void); -/* Clear the whole screen and put the cursor into the top left corner */ +#ifndef __6525_H +#define __6525_H -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. +/* 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. */ - -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... */ +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 */ +}; -/*****************************************************************************/ -/* 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 */ +/* End of _6525.h */ #endif /*****************************************************************************/ /* */ -/* 6502.h */ +/* stdio.h */ /* */ -/* 6502 specific declarations */ +/* Input/output */ /* */ /* */ /* */ -/* (C) 1998-2012, Ullrich von Bassewitz */ +/* (C) 1998-2011, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ @@ -1801,325 +1978,105 @@ void __fastcall__ cputhex16 (unsigned val); -#ifndef _6502_H -#define _6502_H +#ifndef _STDIO_H +#define _STDIO_H -/* We need size_t */ -#ifndef _HAVE_size_t -#define _HAVE_size_t -typedef unsigned size_t; +#include +#include +#include + + + +/* 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 + +#define FILENAME_MAX PATH_MAX +#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 */ -/* 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 */ +/* End of stdio.h */ #endif /*****************************************************************************/ /* */ @@ -2210,6 +2167,20 @@ unsigned char __fastcall__ mouse_ioctl (unsigned char code, void* data); #define TGI_COLOR_LIGHTBLUE COLOR_LIGHTBLUE #define TGI_COLOR_WHITE COLOR_WHITE +/* Masks for joy_read */ +#define JOY_UP_MASK 0x80 +#define JOY_DOWN_MASK 0x40 +#define JOY_LEFT_MASK 0x20 +#define JOY_RIGHT_MASK 0x10 +#define JOY_BTN_1_MASK 0x01 +#define JOY_BTN_2_MASK 0x02 + +#define JOY_BTN_A_MASK JOY_BTN_1_MASK +#define JOY_BTN_B_MASK JOY_BTN_2_MASK + +#define JOY_BTN_A(v) ((v) & JOY_BTN_A_MASK) +#define JOY_BTN_B(v) ((v) & JOY_BTN_B_MASK) + /* No support for dynamically loadable drivers */ #define DYN_DRV 0 @@ -2232,6 +2203,8 @@ extern void lynx_160_102_16_tgi[]; /* Referred to by tgi_static_stddrv[] */ /* Sound support */ /*****************************************************************************/ + + void lynx_snd_init (void); /* Initialize the sound driver */ @@ -2253,6 +2226,8 @@ void __fastcall__ lynx_snd_stop_channel (unsigned char channel); unsigned char lynx_snd_active(void); /* Show which channels are active */ + + /*****************************************************************************/ /* Accessing the cart */ /*****************************************************************************/ @@ -2318,19 +2293,21 @@ unsigned __fastcall__ lynx_eewrite (unsigned cell, unsigned val); #define SUZY (*(struct __suzy*)0xFC00) + /* End of lynx.h */ #endif /*****************************************************************************/ /* */ -/* atari.h */ +/* 6502.h */ /* */ -/* Atari system specific definitions */ +/* 6502 specific declarations */ /* */ /* */ /* */ -/* (C) 2000-2006 Mark Keates */ -/* Freddy Offenga */ -/* Christian Groessler */ +/* (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 */ @@ -2354,104 +2331,724 @@ unsigned __fastcall__ lynx_eewrite (unsigned cell, unsigned val); -#ifndef _ATARI_H -#define _ATARI_H +#ifndef _6502_H +#define _6502_H -/* Check for errors */ -#if !defined(__ATARI__) -# error This module may only be used when compiling for the Atari! +/* We need size_t */ +#ifndef _HAVE_size_t +#define _HAVE_size_t +typedef unsigned size_t; #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 +/* Possible returns of getcpu() */ +#define CPU_6502 0 +#define CPU_65C02 1 +#define CPU_65816 2 +#define CPU_4510 3 +#define CPU_65SC02 4 +#define CPU_65CE02 5 +#define CPU_HUC6280 6 +#define CPU_2A0x 7 +#define CPU_45GS02 8 -#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 */ +unsigned char getcpu (void); +/* Detect the CPU the program is running on */ -/* 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 */ +/* Macros for CPU instructions */ +#define BRK() __asm__ ("brk") +#define CLI() __asm__ ("cli") +#define SEI() __asm__ ("sei") -/* 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 +/* 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 */ +}; -/* 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) +/* 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 +/*****************************************************************************/ +/* */ +/* 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__ strpbrk (const char* str, const char* set); +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 +/*****************************************************************************/ +/* */ +/* 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[] */ + +/* masks for joy_read */ +#define JOY_UP_MASK 0x01 +#define JOY_DOWN_MASK 0x02 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x10 + +/* character codes */ +#define CH_ULCORNER 0x0B /* '+' sign */ +#define CH_URCORNER 0x0B +#define CH_LLCORNER 0x0B +#define CH_LRCORNER 0x0B +#define CH_HLINE 0x0D /* dash */ +#define CH_VLINE 0x01 /* exclamation mark */ + +/* get_tv return values */ +#define AT_NTSC 0 +#define AT_PAL 1 + +/* Define variables used by the OS*/ +#include <_atari5200os.h> +#define OS (*(struct __os*)0x0000) + +/* 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) + +/* conio color defines */ +#define COLOR_WHITE 0x00 +#define COLOR_RED 0x01 +#define COLOR_GREEN 0x02 +#define COLOR_BLACK 0x03 + +/* The following #define will cause the matching function calls in conio.h +** to be overlaid by macros with the same names, saving the function call +** overhead. +*/ +#define _bordercolor(color) 0 + +/* wait for start of next frame */ +extern void waitvsync (void); + +/* end of atari5200.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 + + + +/*****************************************************************************/ +/* */ +/* 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 + + +/*****************************************************************************/ +/* */ +/* 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_HEADER) +#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 +/*****************************************************************************/ +/* */ +/* vic20.h */ +/* */ +/* VIC-20 system-specific definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-2004 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 _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 +/* Only the background and multi-color characters can have these colors. */ +#define COLOR_ORANGE 0x08 +#define COLOR_LIGHTORANGE 0x09 +#define COLOR_PINK 0x0A +#define COLOR_LIGHTCYAN 0x0B +#define COLOR_LIGHTVIOLET 0x0C +#define COLOR_LIGHTGREEN 0x0D +#define COLOR_LIGHTBLUE 0x0E +#define COLOR_LIGHTYELLOW 0x0F /* TGI color defines */ #define TGI_COLOR_BLACK COLOR_BLACK @@ -2462,213 +3059,60 @@ unsigned __fastcall__ lynx_eewrite (unsigned cell, unsigned val); #define TGI_COLOR_GREEN COLOR_GREEN #define TGI_COLOR_BLUE COLOR_BLUE #define TGI_COLOR_YELLOW COLOR_YELLOW +/* Only the background and multi-color graphics can have these colors. */ #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_LIGHTORANGE COLOR_LIGHTORANGE +#define TGI_COLOR_PINK COLOR_PINK +#define TGI_COLOR_LIGHTCYAN COLOR_LIGHTCYAN +#define TGI_COLOR_LIGHTVIOLET COLOR_LIGHTVIOLET #define TGI_COLOR_LIGHTGREEN COLOR_LIGHTGREEN #define TGI_COLOR_LIGHTBLUE COLOR_LIGHTBLUE -#define TGI_COLOR_GRAY3 COLOR_GRAY3 +#define TGI_COLOR_LIGHTYELLOW COLOR_LIGHTYELLOW -/* 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 */ +/* tgi_ioctl() commands */ +#define TGI_IOCTL_VIC20_SET_PATTERN 0x01 /* Set 8-byte pattern for tgi_bar(). */ -/* 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 +/* Masks for joy_read */ +#define JOY_UP_MASK 0x01 +#define JOY_DOWN_MASK 0x02 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x10 -/* 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 <_vic.h> +#define VIC (*(struct __vic*)0x9000) -#include <_pbi.h> +#include <_6522.h> +#define VIA1 (*(struct __6522*)0x9110) +#define VIA2 (*(struct __6522*)0x9120) -#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) +/* Define special memory areas */ +#define COLOR_RAM ((unsigned char*)0x9600) -/* 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 */ +/* The addresses of the static drivers */ +extern void vic20_ptvjoy_joy[]; +extern void vic20_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ -/* End of atari.h */ -#endif /* #ifndef _ATARI_H */ +extern void vic20_rama_emd[]; +extern void vic20_georam_emd[]; + +extern void vic20_hi_tgi[]; /* Referred to by tgi_static_stddrv[] */ + + + +/* End of vic20.h */ +#endif /*****************************************************************************/ /* */ /* atari_screen_charmap.h */ @@ -2979,6 +3423,567 @@ struct __iocb { #pragma charmap (0xFE, 0xFE) #pragma charmap (0xFF, 0xFF) +/*****************************************************************************/ +/* */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* locale.h */ +/* */ +/* Localization */ +/* */ +/* */ +/* */ +/* (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 _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 + + + +/*****************************************************************************/ +/* */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* 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 (const 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 + + + +/*****************************************************************************/ +/* */ +/* 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__ 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__ 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__ imul8x8r16 (signed char lhs, signed char rhs); +/* Multiplicate two signed 8 bit to yield an signed 16 bit result */ + +long __fastcall__ imul16x16r32 (int lhs, int rhs); +/* Multiplicate two signed 16 bit to yield a signed 32 bit result */ + +unsigned __fastcall__ umul8x8r16 (unsigned char lhs, unsigned char rhs); +/* Multiplicate two unsigned 8 bit to yield an unsigned 16 bit result */ + +unsigned long __fastcall__ 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__ umul16x16r32 (unsigned lhs, unsigned rhs); +/* Multiplicate two unsigned 16 bit to yield an unsigned 32 bit result */ + +unsigned int __fastcall__ mul20 (unsigned char value); +/* Multiply an 8 bit unsigned value by 20 and return the 16 bit unsigned +** result +*/ + +unsigned int __fastcall__ mul40 (unsigned char value); +/* Multiply an 8 bit unsigned value by 40 and return the 16 bit unsigned +** result +*/ + +int __fastcall__ _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__ _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 + + + +/*****************************************************************************/ +/* */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* 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 /*****************************************************************************/ /* */ /* stdlib.h */ @@ -3029,6 +4034,18 @@ typedef unsigned size_t; #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 +#if __CC65_STD__ == __CC65_STD_CC65__ + +/* Those non-standard cc65 exit constants definitions are in addition +** to the EXIT_SUCCESS and EXIT_FAILURE constants, which should not be +** redefined +*/ +#define EXIT_ASSERT 2 +#define EXIT_ABORT 3 + +#endif + + /* Return type of the div function */ typedef struct { int rem; @@ -3117,11 +4134,614 @@ int __fastcall__ putenv (char* s); /*****************************************************************************/ /* */ -/* pen.h */ +/* atari.h */ /* */ -/* Lightpen API */ +/* Atari system specific definitions */ /* */ /* */ +/* */ +/* (C) 2000-2021 Mark Keates */ +/* Freddy Offenga */ +/* Christian Groessler */ +/* Bill Kendrick */ +/* et al. */ +/* */ +/* */ +/* 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 + + +/*****************************************************************************/ +/* Masks for joy_read */ +/*****************************************************************************/ + +#define JOY_UP_MASK 0x01 +#define JOY_DOWN_MASK 0x02 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x10 + +#define JOY_FIRE_MASK JOY_BTN_1_MASK +#define JOY_FIRE(v) ((v) & JOY_FIRE_MASK) + + +/*****************************************************************************/ +/* Keyboard values returned by kbcode / CH */ +/*****************************************************************************/ + +#define KEY_NONE ((unsigned char) 0xFF) + +#define KEY_0 ((unsigned char) 0x32) +#define KEY_1 ((unsigned char) 0x1F) +#define KEY_2 ((unsigned char) 0x1E) +#define KEY_3 ((unsigned char) 0x1A) +#define KEY_4 ((unsigned char) 0x18) +#define KEY_5 ((unsigned char) 0x1D) +#define KEY_6 ((unsigned char) 0x1B) +#define KEY_7 ((unsigned char) 0x33) +#define KEY_8 ((unsigned char) 0x35) +#define KEY_9 ((unsigned char) 0x30) + +#define KEY_A ((unsigned char) 0x3F) +#define KEY_B ((unsigned char) 0x15) +#define KEY_C ((unsigned char) 0x12) +#define KEY_D ((unsigned char) 0x3A) +#define KEY_E ((unsigned char) 0x2A) +#define KEY_F ((unsigned char) 0x38) +#define KEY_G ((unsigned char) 0x3D) +#define KEY_H ((unsigned char) 0x39) +#define KEY_I ((unsigned char) 0x0D) +#define KEY_J ((unsigned char) 0x01) +#define KEY_K ((unsigned char) 0x05) +#define KEY_L ((unsigned char) 0x00) +#define KEY_M ((unsigned char) 0x25) +#define KEY_N ((unsigned char) 0x23) +#define KEY_O ((unsigned char) 0x08) +#define KEY_P ((unsigned char) 0x0A) +#define KEY_Q ((unsigned char) 0x2F) +#define KEY_R ((unsigned char) 0x28) +#define KEY_S ((unsigned char) 0x3E) +#define KEY_T ((unsigned char) 0x2D) +#define KEY_U ((unsigned char) 0x0B) +#define KEY_V ((unsigned char) 0x10) +#define KEY_W ((unsigned char) 0x2E) +#define KEY_X ((unsigned char) 0x16) +#define KEY_Y ((unsigned char) 0x2B) +#define KEY_Z ((unsigned char) 0x17) + +#define KEY_COMMA ((unsigned char) 0x20) +#define KEY_PERIOD ((unsigned char) 0x22) +#define KEY_SLASH ((unsigned char) 0x26) +#define KEY_SEMICOLON ((unsigned char) 0x02) +#define KEY_PLUS ((unsigned char) 0x06) +#define KEY_ASTERISK ((unsigned char) 0x07) +#define KEY_DASH ((unsigned char) 0x0E) +#define KEY_EQUALS ((unsigned char) 0x0F) +#define KEY_LESSTHAN ((unsigned char) 0x36) +#define KEY_GREATERTHAN ((unsigned char) 0x37) + +#define KEY_ESC ((unsigned char) 0x1C) +#define KEY_TAB ((unsigned char) 0x2C) +#define KEY_SPACE ((unsigned char) 0x21) +#define KEY_RETURN ((unsigned char) 0x0C) +#define KEY_DELETE ((unsigned char) 0x34) +#define KEY_CAPS ((unsigned char) 0x3C) +#define KEY_INVERSE ((unsigned char) 0x27) +#define KEY_HELP ((unsigned char) 0x11) + +/* Function keys only exist on the 1200XL model. */ +#define KEY_F1 ((unsigned char) 0x03) +#define KEY_F2 ((unsigned char) 0x04) +#define KEY_F3 ((unsigned char) 0x13) +#define KEY_F4 ((unsigned char) 0x14) + +/* N.B. Cannot read Ctrl key alone */ +#define KEY_CTRL ((unsigned char) 0x80) + +/* N.B. Cannot read Shift key alone via KBCODE; +** instead, check "Shfit key press" bit of SKSTAT register. +** Also, no way to tell left Shift from right Shift. +*/ +#define KEY_SHIFT ((unsigned char) 0x40) + + +/* Composed keys +** (Other combinations are possible, including Shift+Ctrl+key, +** though not all such combinations are available.) +*/ + +#define KEY_EXCLAMATIONMARK (KEY_1 | KEY_SHIFT) +#define KEY_QUOTE (KEY_2 | KEY_SHIFT) +#define KEY_HASH (KEY_3 | KEY_SHIFT) +#define KEY_DOLLAR (KEY_4 | KEY_SHIFT) +#define KEY_PERCENT (KEY_5 | KEY_SHIFT) +#define KEY_AMPERSAND (KEY_6 | KEY_SHIFT) +#define KEY_APOSTROPHE (KEY_7 | KEY_SHIFT) +#define KEY_AT (KEY_8 | KEY_SHIFT) +#define KEY_OPENINGPARAN (KEY_9 | KEY_SHIFT) +#define KEY_CLOSINGPARAN (KEY_0 | KEY_SHIFT) +#define KEY_UNDERLINE (KEY_DASH | KEY_SHIFT) +#define KEY_BAR (KEY_EQUALS | KEY_SHIFT) +#define KEY_COLON (KEY_SEMICOLON | KEY_SHIFT) +#define KEY_BACKSLASH (KEY_PLUS | KEY_SHIFT) +#define KEY_CIRCUMFLEX (KEY_ASTERISK | KEY_SHIFT) +#define KEY_OPENINGBRACKET (KEY_COMMA | KEY_SHIFT) +#define KEY_CLOSINGBRACKET (KEY_PERIOD | KEY_SHIFT) +#define KEY_QUESTIONMARK (KEY_SLASH | KEY_SHIFT) +#define KEY_CLEAR (KEY_LESSTHAN | KEY_SHIFT) +#define KEY_INSERT (KEY_GREATERTHAN | KEY_SHIFT) + +#define KEY_UP (KEY_DASH | KEY_CTRL) +#define KEY_DOWN (KEY_EQUALS | KEY_CTRL) +#define KEY_LEFT (KEY_PLUS | KEY_CTRL) +#define KEY_RIGHT (KEY_ASTERISK | KEY_CTRL) + + +/*****************************************************************************/ +/* Color register functions */ +/*****************************************************************************/ + +extern void __fastcall__ _setcolor (unsigned char color_reg, unsigned char hue, unsigned char luminance); +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 void waitvsync (void); /* wait for start of next frame */ +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 + + +/*****************************************************************************/ +/* 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 REALDOS 1 +#define BWDOS 2 +#define OSADOS 3 +#define XDOS 4 +#define ATARIDOS 5 +#define MYDOS 6 +#define NODOS 255 + + +/*****************************************************************************/ +/* Define hardware and where they're mapped in memory */ +/*****************************************************************************/ + +#include <_atarios.h> +#define OS (*(struct __os*)0x0000) +#define BASIC (*(struct __basic*)0x0080) + +#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) + + +/*****************************************************************************/ +/* conio and TGI color defines */ +/*****************************************************************************/ + +/* Note that the conio color implementation is monochrome +** (textcolor just sets text brightness low or high, depending on background +** color) +** These values can be used with bordercolor(), bgcolor(), and _setcolor_low() +*/ +#define COLOR_BLACK GTIA_COLOR_BLACK +#define COLOR_WHITE GTIA_COLOR_WHITE +#define COLOR_RED GTIA_COLOR_RED +#define COLOR_CYAN GTIA_COLOR_CYAN +#define COLOR_VIOLET GTIA_COLOR_VIOLET +#define COLOR_GREEN GTIA_COLOR_GREEN +#define COLOR_BLUE GTIA_COLOR_BLUE +#define COLOR_YELLOW GTIA_COLOR_YELLOW +#define COLOR_ORANGE GTIA_COLOR_ORANGE +#define COLOR_BROWN GTIA_COLOR_BROWN +#define COLOR_LIGHTRED GTIA_COLOR_LIGHTRED +#define COLOR_GRAY1 GTIA_COLOR_GRAY1 +#define COLOR_GRAY2 GTIA_COLOR_GRAY2 +#define COLOR_LIGHTGREEN GTIA_COLOR_LIGHTGREEN +#define COLOR_LIGHTBLUE GTIA_COLOR_LIGHTBLUE +#define COLOR_GRAY3 GTIA_COLOR_GRAY3 + +/* 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 + + +/*****************************************************************************/ +/* PIA PORTA and PORTB register bits */ +/*****************************************************************************/ + +/* See also: "JOY_xxx_MASK" in "atari.h" */ + +/* Paddle 0-3 triggers (per PORTA bits) */ +#define PORTA_PTRIG3 0x80 +#define PORTA_PTRIG2 0x40 +#define PORTA_PTRIG1 0x08 +#define PORTA_PTRIG0 0x04 + + +/* On the Atari 400/800, PORTB is the same as PORTA, but for controller ports 3 & 4. */ + +/* Paddle 4-7 triggers (per PORTB bits); only 400/800 had four controller ports */ +#define PORTB_PTRIG7 0x80 +#define PORTB_PTRIG6 0x40 +#define PORTB_PTRIG5 0x08 +#define PORTB_PTRIG4 0x04 + + +/* On the XL series of computers, PORTB has been changed to a memory and +** LED control (1200XL model only) register (read/write): +*/ + +/* If set, the built-in OS is enabled, and occupies the address range $C000-$FFFF +** (except that the area $D000-$D7FF will only access the hardware registers.) +** If clear, RAM is enabled in this area (again, save for the hole.) +*/ +#define PORTB_OSROM 0x01 + +/* If set, RAM is enabled for the address range $A000-$BFFF. +** If clear, the built-in BASIC ROM is enabled at this address. +** And if there is a cartridge installed in the computer, it makes no difference. +*/ +#define PORTB_BASICROM 0x02 + +/* If set, the corresponding LED is turned off. If clear, the LED will be on. +** (1200XL only) +*/ +#define PORTB_LED1 0x04 +#define PORTB_LED2 0x08 + + +/* On the XE series of computers, PORTB is a bank-selected memory control register (read/write): */ + +/* These bits determine which memory bank is visible to the CPU and/or ANTIC chip +** when their Bank Switch bit is set. There are four possible banks of 16KB each. +*/ +#define PORTB_BANKSELECT1 0x00 +#define PORTB_BANKSELECT2 0x04 +#define PORTB_BANKSELECT3 0x08 +#define PORTB_BANKSELECT4 0x0C + +/* If set, the CPU and/or ANTIC chip will access bank-switched memory mapped to the +** address range $4000-$7FFF. +** If clear, the CPU and/or ANTIC will see normal memory in this region. +*/ +#define PORTB_BANKSWITCH_CPU 0x10 +#define PORTB_BANKSWITCH_ANTIC 0x20 + +/* If set, RAM is enabled for the address range $5000-$57FF. +** If clear, the self-test ROM (physically located at $D000-$D7FF, under the hardware registers) +** is remapped to this memory area. +*/ +#define PORTB_SELFTEST 0x80 + + +/*****************************************************************************/ +/* PACTL and PBCTL register bits */ +/*****************************************************************************/ + +/* (W) Peripheral PA1/PB1 interrupt (IRQ) ("peripheral proceed line available") enable. +** One equals enable. Set by the OS but available to the user; reset on powerup. +** (PxCTL_IRQ_STATUS (R) bit will get set upon interrupt occurance) +*/ +#define PxCTL_IRQ_ENABLE 0x01 /* bit 0 */ + +/* Note: Bit 1 is always set to */ + +/* (W) Controls PORTA/PORTB addressing +** 1 = PORTA/PORTB register; read/write to controller port +** 0 = direction control register; write to direction controls +** (allows setting data flow; write 0s & 1s to PORTA/PORTB bits +** to set which port's pins are read (input), or write (output), +** respectively) +*/ +#define PxCTL_ADDRESSING 0x04 /* bit 2 */ + +/* (W) Peripheral motor control line; Turn the cassette on or off +** (PACTL-specific register bit) +** 0 = on +** 1 = off +*/ +#define PACTL_MOTOR_CONTROL 0x08 /* bit 3 */ + +/* Peripheral command identification (serial bus command line) +** (PBCTL-specific register bit) +*/ +#define PBCTL_PERIPH_CMD_IDENT 0x08 /* bit 3 */ + +/* Note: Bits 4 & 5 are always set to 1 */ + +/* Note: Bit 6 is always set to 0 */ + +/* (R) Peripheral interrupt (IRQ) status bit. +** Set by Peripherals (PORTA / PORTB). Reset by reading from PORTA / PORTB. +** PACTL's is interrupt status of PROCEED +** PBCTL's is interrupt status of SIO +*/ +#define PxCTL_IRQ_STATUS 0x80 + + +/* The following #define will cause the matching function calls in conio.h +** to be overlaid by macros with the same names, saving the function call +** overhead. +*/ +#define _textcolor(color) COLOR_WHITE + +/* End of atari.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 + + + +/*****************************************************************************/ +/* */ +/* cbm_petscii_charmap.h */ +/* */ +/* CBM system standard string mapping (ISO-8859-1 -> PetSCII) */ +/* */ +/* */ +/* 2019-03-10, 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. */ @@ -3131,10 +4751,312 @@ int __fastcall__ putenv (char* s); /* 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 */ +/* 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 */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice must not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +/* No include guard here! Multiple use in one file might be intentional. */ + +#pragma warn (remap-zero, push, off) + +#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, 0x07) +#pragma charmap (0x08, 0x14) +#pragma charmap (0x09, 0x09) +#pragma charmap (0x0A, 0x0D) +#pragma charmap (0x0B, 0x11) +#pragma charmap (0x0C, 0x93) +#pragma charmap (0x0D, 0x0A) +#pragma charmap (0x0E, 0x0E) +#pragma charmap (0x0F, 0x0F) +#pragma charmap (0x10, 0x10) +#pragma charmap (0x11, 0x0B) +#pragma charmap (0x12, 0x12) +#pragma charmap (0x13, 0x13) +#pragma charmap (0x14, 0x08) +#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, 0xC1) +#pragma charmap (0x42, 0xC2) +#pragma charmap (0x43, 0xC3) +#pragma charmap (0x44, 0xC4) +#pragma charmap (0x45, 0xC5) +#pragma charmap (0x46, 0xC6) +#pragma charmap (0x47, 0xC7) +#pragma charmap (0x48, 0xC8) +#pragma charmap (0x49, 0xC9) +#pragma charmap (0x4A, 0xCA) +#pragma charmap (0x4B, 0xCB) +#pragma charmap (0x4C, 0xCC) +#pragma charmap (0x4D, 0xCD) +#pragma charmap (0x4E, 0xCE) +#pragma charmap (0x4F, 0xCF) +#pragma charmap (0x50, 0xD0) +#pragma charmap (0x51, 0xD1) +#pragma charmap (0x52, 0xD2) +#pragma charmap (0x53, 0xD3) +#pragma charmap (0x54, 0xD4) +#pragma charmap (0x55, 0xD5) +#pragma charmap (0x56, 0xD6) +#pragma charmap (0x57, 0xD7) +#pragma charmap (0x58, 0xD8) +#pragma charmap (0x59, 0xD9) +#pragma charmap (0x5A, 0xDA) +#pragma charmap (0x5B, 0x5B) +#pragma charmap (0x5C, 0xBF) +#pragma charmap (0x5D, 0x5D) +#pragma charmap (0x5E, 0x5E) +#pragma charmap (0x5F, 0xA4) + +#pragma charmap (0x60, 0xAD) +#pragma charmap (0x61, 0x41) +#pragma charmap (0x62, 0x42) +#pragma charmap (0x63, 0x43) +#pragma charmap (0x64, 0x44) +#pragma charmap (0x65, 0x45) +#pragma charmap (0x66, 0x46) +#pragma charmap (0x67, 0x47) +#pragma charmap (0x68, 0x48) +#pragma charmap (0x69, 0x49) +#pragma charmap (0x6A, 0x4A) +#pragma charmap (0x6B, 0x4B) +#pragma charmap (0x6C, 0x4C) +#pragma charmap (0x6D, 0x4D) +#pragma charmap (0x6E, 0x4E) +#pragma charmap (0x6F, 0x4F) +#pragma charmap (0x70, 0x50) +#pragma charmap (0x71, 0x51) +#pragma charmap (0x72, 0x52) +#pragma charmap (0x73, 0x53) +#pragma charmap (0x74, 0x54) +#pragma charmap (0x75, 0x55) +#pragma charmap (0x76, 0x56) +#pragma charmap (0x77, 0x57) +#pragma charmap (0x78, 0x58) +#pragma charmap (0x79, 0x59) +#pragma charmap (0x7A, 0x5A) +#pragma charmap (0x7B, 0xB3) +#pragma charmap (0x7C, 0xDD) +#pragma charmap (0x7D, 0xAB) +#pragma charmap (0x7E, 0xB1) +#pragma charmap (0x7F, 0xDF) + +#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, 0x0C) +#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, 0x60) +#pragma charmap (0xC1, 0x61) +#pragma charmap (0xC2, 0x62) +#pragma charmap (0xC3, 0x63) +#pragma charmap (0xC4, 0x64) +#pragma charmap (0xC5, 0x65) +#pragma charmap (0xC6, 0x66) +#pragma charmap (0xC7, 0x67) +#pragma charmap (0xC8, 0x68) +#pragma charmap (0xC9, 0x69) +#pragma charmap (0xCA, 0x6A) +#pragma charmap (0xCB, 0x6B) +#pragma charmap (0xCC, 0x6C) +#pragma charmap (0xCD, 0x6D) +#pragma charmap (0xCE, 0x6E) +#pragma charmap (0xCF, 0x6F) +#pragma charmap (0xD0, 0x70) +#pragma charmap (0xD1, 0x71) +#pragma charmap (0xD2, 0x72) +#pragma charmap (0xD3, 0x73) +#pragma charmap (0xD4, 0x74) +#pragma charmap (0xD5, 0x75) +#pragma charmap (0xD6, 0x76) +#pragma charmap (0xD7, 0x77) +#pragma charmap (0xD8, 0x78) +#pragma charmap (0xD9, 0x79) +#pragma charmap (0xDA, 0x7A) +#pragma charmap (0xDB, 0x7B) +#pragma charmap (0xDC, 0x7C) +#pragma charmap (0xDD, 0x7D) +#pragma charmap (0xDE, 0x7E) +#pragma charmap (0xDF, 0x7F) + +#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) + +#pragma warn (remap-zero, pop) +/*****************************************************************************/ +/* */ +/* 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. */ @@ -3143,23 +5065,29 @@ int __fastcall__ putenv (char* s); -#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. +/* +** 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. */ -extern void __fastcall__ (*pen_adjuster) (unsigned char *pValue); + + + +#ifndef _CONIO_H +#define _CONIO_H + + + +#include +#include @@ -3169,95 +5097,170 @@ extern void __fastcall__ (*pen_adjuster) (unsigned char *pValue); -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 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. */ -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. +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 */ + +char cpeekc (void); +/* Return the character from the current cursor position */ + +unsigned char cpeekcolor (void); +/* Return the color from the current cursor position */ + +unsigned char cpeekrevers (void); +/* Return the reverse attribute from the current cursor position. +** If the character is reversed, then return 1; return 0 otherwise. */ +void __fastcall__ cpeeks (char* s, unsigned int length); +/* Return a string of the characters that start at the current cursor position. +** Put the string into the buffer to which "s" points. The string will have +** "length" characters, then will be '\0'-terminated. +*/ + +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... */ -/* End of pen.h */ + +/*****************************************************************************/ +/* 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. +*/ + +#ifdef _textcolor +# define textcolor(color) _textcolor(color) +#endif +#ifdef _bgcolor +# define bgcolor(color) _bgcolor(color) +#endif +#ifdef _bordercolor +# define bordercolor(color) _bordercolor(color) +#endif +#ifdef _cpeekcolor +# define cpeekcolor() _cpeekcolor() +#endif +#ifdef _cpeekrevers +# define cpeekrevers() _cpeekrevers() #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 */ +/* End of conio.h */ #endif - - - /*****************************************************************************/ /* */ -/* cc65.h */ +/* dio.h */ /* */ -/* Target independent but cc65 specific utility functions */ +/* Low-Level diskette I/O functions */ /* */ /* */ /* */ -/* (C) 2009-2011, Ullrich von Bassewitz */ -/* Roemerstrasse 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ +/* (C) 2005 Christian Groessler */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -3281,8 +5284,32 @@ typedef unsigned char _Bool; -#ifndef _CC65_H -#define _CC65_H +#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; @@ -3292,201 +5319,52 @@ typedef unsigned char _Bool; -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 __fastcall__ dio_query_sectsize (dhandle_t handle); +/* returns sector size */ -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. -*/ +unsigned __fastcall__ dio_query_sectcount (dhandle_t handle); +/* returns sector count */ -int __fastcall__ cc65_imul8x8r16 (signed char lhs, signed char rhs); -/* Multiplicate two signed 8 bit to yield an signed 16 bit result */ +dhandle_t __fastcall__ dio_open (unsigned char device); +/* open device for subsequent dio access */ -long __fastcall__ cc65_imul16x16r32 (int lhs, int rhs); -/* Multiplicate two signed 16 bit to yield a signed 32 bit result */ +unsigned char __fastcall__ dio_close (dhandle_t handle); +/* close device, returns oserror (0 for success) */ -unsigned __fastcall__ cc65_umul8x8r16 (unsigned char lhs, unsigned char rhs); -/* Multiplicate two unsigned 8 bit to yield an unsigned 16 bit result */ +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 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 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 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 */ -/* Rmerstrae 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 +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 */ /*****************************************************************************/ /* */ /* _vic2.h */ @@ -3679,4353 +5557,6 @@ struct __vic2 { -/*****************************************************************************/ -/* */ -/* 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 */ -/* Rmerstrasse 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 */ -/* Rmerstrasse 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 */ -/* Rmerstrae 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 */ -/* Rmerstrasse 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 */ -/* Rmerstrasse 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 Jrome, */ -/* (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 */ -/* Rmerstrasse 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 */ @@ -8080,9 +5611,10 @@ typedef unsigned size_t; typedef unsigned long time_t; typedef unsigned long clock_t; +typedef unsigned char clockid_t; /* Structure for broken down time */ -struct tm { +struct tm { int tm_sec; int tm_min; int tm_hour; @@ -8094,6 +5626,12 @@ struct tm { int tm_isdst; }; +/* Structure for seconds and nanoseconds */ +struct timespec { + time_t tv_sec; + long tv_nsec; +}; + /* Timezone representation, default is UTC */ extern struct _timezone { char daylight; /* True if daylight savings time active */ @@ -8104,56 +5642,35 @@ extern struct _timezone { -#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 */ +#if defined(__ATARI5200__) +# define CLOCKS_PER_SEC 60 #elif defined(__ATMOS__) -# define CLK_TCK 100 /* POSIX */ -# define CLOCKS_PER_SEC 100 /* ANSI */ +# define CLOCKS_PER_SEC 100 #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 */ +# define CLOCKS_PER_SEC 50 # else -# define CLK_TCK 60 /* POSIX */ -# define CLOCKS_PER_SEC 60 /* ANSI */ +# define CLOCKS_PER_SEC 60 # endif #elif defined(__NES__) -# define CLK_TCK 50 /* POSIX */ -# define CLOCKS_PER_SEC 50 /* ANSI */ +# define CLOCKS_PER_SEC 50 #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() +# define CLOCKS_PER_SEC 60 +#elif defined(__GAMATE__) +# define CLOCKS_PER_SEC 135 /* FIXME */ +#elif defined(__GEOS__) +# define CLOCKS_PER_SEC 1 +#elif defined(__ATARI__) || defined (__LYNX__) +/* Read the clock rate at runtime */ +clock_t _clocks_per_sec (void); +# define CLOCKS_PER_SEC _clocks_per_sec() #endif +#define CLK_TCK CLOCKS_PER_SEC +#define CLOCK_REALTIME 0 -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); @@ -8166,1599 +5683,16 @@ time_t __fastcall__ time (time_t* t); +/* POSIX function prototypes */ +int __fastcall__ clock_getres (clockid_t clock_id, struct timespec *res); +int __fastcall__ clock_gettime (clockid_t clock_id, struct timespec *tp); +int __fastcall__ clock_settime (clockid_t clock_id, const struct timespec *tp); + + + /* 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 */ @@ -9853,6 +5787,13 @@ int __fastcall__ tgi_imulround (int rhs, int lhs); #define COLOR_LIGHTBLUE 0x0E #define COLOR_GRAY3 0x0F +/* Masks for joy_read */ +#define JOY_UP_MASK 0x01 +#define JOY_DOWN_MASK 0x02 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x10 + /* Define hardware */ #include <_vic2.h> #define VIC (*(struct __vic2*)0xD800) @@ -10225,6 +6166,8003 @@ void __fastcall__ pokewsys (unsigned addr, unsigned val); #pragma charmap (0xFE, 0xFE) #pragma charmap (0xFF, 0xFF) +/*****************************************************************************/ +/* */ +/* 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 + + + +#include + + + +/*****************************************************************************/ +/* 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 + +/* Macros that evaluate the return code of joy_read */ +#define JOY_UP(v) ((v) & JOY_UP_MASK) +#define JOY_DOWN(v) ((v) & JOY_DOWN_MASK) +#define JOY_LEFT(v) ((v) & JOY_LEFT_MASK) +#define JOY_RIGHT(v) ((v) & JOY_RIGHT_MASK) +#define JOY_BTN_1(v) ((v) & JOY_BTN_1_MASK) /* Universally available */ +#define JOY_BTN_2(v) ((v) & JOY_BTN_2_MASK) /* Second button if available */ +#define JOY_BTN_3(v) ((v) & JOY_BTN_3_MASK) /* Third button if available */ +#define JOY_BTN_4(v) ((v) & JOY_BTN_4_MASK) /* Fourth button if available */ + +/* 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 (const 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 +/*****************************************************************************/ +/* */ +/* _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 + +/*****************************************************************************/ +/* */ +/* 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 + + + +#include +#include + + + +/*****************************************************************************/ +/* 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 (const 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. Zero means 256 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 +** behave unexpectedly). +*/ + +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 +/*****************************************************************************/ +/* */ +/* 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 (const 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 + + + +/*****************************************************************************/ +/* */ +/* 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 (unsigned char* dest, + const unsigned 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 (unsigned char* dest, unsigned* destLen, + const unsigned 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 unsigned 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 unsigned 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 + + + +/*****************************************************************************/ +/* */ +/* _atari5200os.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* 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 __ATARI5200OS_H +#define __ATARI5200OS_H + + +struct __os { + + /*Page zero*/ + unsigned char pokmsk; // = $00 System mask for POKEY IRQ enable + unsigned char rtclok[2]; // = $01,$02 Real time clock + unsigned char critic; // = $03 Critical section flag + unsigned char atract; // = $04 Attract mode counter + + union { + struct { + unsigned char sdlstl; // = $05 Save display list LO + unsigned char sdlsth; // = $06 Save display list HI + }; + void* sdlst; // = $05,$06 Display list shadow + }; + + unsigned char sdmctl; // = $07 DMACTL shadow + unsigned char pcolr0; // = $08 PM color 0 + unsigned char pcolr1; // = $09 PM color 1 + unsigned char pcolr2; // = $0A PM color 2 + unsigned char pcolr3; // = $0B PM color 3 + unsigned char color0; // = $0C PF color 0 + unsigned char color1; // = $0D PF color 1 + unsigned char color2; // = $0E PF color 2 + unsigned char color3; // = $0F PF color 3 + unsigned char color4; // = $10 PF color 4 + unsigned char _free_1[0xEF]; // = $11-$FF User space + + /*Stack*/ + unsigned char stack[0x100]; // = $100-$1FF Stack + + /*Page 2 OS variables*/ + void (*vinter)(void); // = $200 Immediate IRQ vector + void (*vvblki)(void); // = $202 Immediate VBI vector + void (*vvblkd)(void); // = $204 Deferred VBI vector + void (*vdslst)(void); // = $206 DLI vector + void (*vkeybd)(void); // = $208 Keyboard IRQ vector + void (*vkeypd)(void); // = $20A Keyboard continuation vector + void (*vbrkky)(void); // = $20C Break key interrupt vector + void (*vbreak)(void); // = $20E BRK instruction interrupt vector + void (*vserin)(void); // = $210 Serial input ready vector + void (*vseror)(void); // = $212 Serial output data needed vector + void (*vseroc)(void); // = $214 Serial output completed vector + void (*vtimr1)(void); // = $216 POKEY timer 1 IRQ vector + void (*vtimr2)(void); // = $218 POKEY timer 2 IRQ vector + void (*vtimr4)(void); // = $21A POKEY timer 4 IRQ vector + +}; + +#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 + + + +/*****************************************************************************/ +/* */ +/* 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 CIA1 (*(struct __6526*)0xDB00) +#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 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 +#define _cpeekcolor(color) COLOR_WHITE + + + +/* End of cbm610.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 + +/* Masks for joy_read */ +#define JOY_UP_MASK 0x01 +#define JOY_DOWN_MASK 0x02 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x10 + +/* 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 +#define _cpeekcolor(color) COLOR_WHITE + + + +/* End of pet.h */ +#endif +/*****************************************************************************/ +/* */ +/* Atari VCS 2600 TIA registers addresses */ +/* */ +/* Source: DASM - vcs.h */ +/* */ +/* Florent Flament (contact@florentflament.com), 2017 */ +/* */ +/*****************************************************************************/ + +/* TIA write / read registers */ +struct __tia { + union { + unsigned char vsync; + unsigned char cxm0p; + }; + union { + unsigned char vblank; + unsigned char cxm1p; + }; + union { + unsigned char wsync; + unsigned char cxp0fb; + }; + union { + unsigned char rsync; + unsigned char cxp1fb; + }; + union { + unsigned char nusiz0; + unsigned char cxm0fb; + }; + union { + unsigned char nusiz1; + unsigned char cxm1fb; + }; + union { + unsigned char colup0; + unsigned char cxblpf; + }; + union { + unsigned char colup1; + unsigned char cxppmm; + }; + union { + unsigned char colupf; + unsigned char inpt0; + }; + union { + unsigned char colubk; + unsigned char inpt1; + }; + union { + unsigned char ctrlpf; + unsigned char inpt2; + }; + union { + unsigned char refp0; + unsigned char inpt3; + }; + union { + unsigned char refp1; + unsigned char inpt4; + }; + union { + unsigned char pf0; + unsigned char inpt5; + }; + unsigned char pf1; + unsigned char pf2; + unsigned char resp0; + unsigned char resp1; + unsigned char resm0; + unsigned char resm1; + unsigned char resbl; + unsigned char audc0; + unsigned char audc1; + unsigned char audf0; + unsigned char audf1; + unsigned char audv0; + unsigned char audv1; + unsigned char grp0; + unsigned char grp1; + unsigned char enam0; + unsigned char enam1; + unsigned char enabl; + unsigned char hmp0; + unsigned char hmp1; + unsigned char hmm0; + unsigned char hmm1; + unsigned char hmbl; + unsigned char vdelp0; + unsigned char vdelp1; + unsigned char vdelbl; + unsigned char resmp0; + unsigned char resmp1; + unsigned char hmove; + unsigned char hmclr; + unsigned char cxclr; +}; +/*****************************************************************************/ +/* */ +/* 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 + +/* 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__ isascii (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 + +/* End of ctype.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 + + + +/*****************************************************************************/ +/* */ +/* _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 + + + +/* + 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 + + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + +#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 + +#define JOY_UP_MASK 0x01 +#define JOY_DOWN_MASK 0x02 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x10 + + + +/* End of geos.h */ +#endif +/*****************************************************************************/ +/* */ +/* Atari VCS 2600 TIA & RIOT registers addresses */ +/* */ +/* Source: DASM Version 1.05 - vcs.h */ +/* */ +/* Florent Flament (contact@florentflament.com), 2017 */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ATARI2600_H +#define _ATARI2600_H + + + +/* Check for errors */ +#if !defined(__ATARI2600__) +# error This module may only be used when compiling for the Atari 2600! +#endif + +#include <_tia.h> +#define TIA (*(struct __tia*)0x0000) + +#include <_riot.h> +#define RIOT (*(struct __riot*)0x0280) + + + +/* End of atari2600.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 + + + +#ifndef _HAVE_size_t +typedef unsigned size_t; +#define _HAVE_size_t +#endif + + + +/*****************************************************************************/ +/* 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 +/*****************************************************************************/ +/* */ +/* 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 + +/* Masks for joy_read */ +#define JOY_UP_MASK 0x10 +#define JOY_DOWN_MASK 0x40 +#define JOY_LEFT_MASK 0x80 +#define JOY_RIGHT_MASK 0x20 +#define JOY_BTN_1_MASK 0x01 +#define JOY_BTN_2_MASK 0x02 +#define JOY_BTN_3_MASK 0x04 +#define JOY_BTN_4_MASK 0x08 + +#define JOY_BTN_I_MASK JOY_BTN_1_MASK +#define JOY_BTN_II_MASK JOY_BTN_2_MASK +#define JOY_SELECT_MASK JOY_BTN_3_MASK +#define JOY_RUN_MASK JOY_BTN_4_MASK + +#define JOY_BTN_I(v) ((v) & JOY_BTN_I_MASK) +#define JOY_BTN_II(v) ((v) & JOY_BTN_II_MASK) +#define JOY_SELECT(v) ((v) & JOY_SELECT_MASK) +#define JOY_RUN(v) ((v) & JOY_RUN_MASK) + +/* 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[] */ + +void waitvsync (void); +/* Wait for start of the next frame */ + +/* NOTE: all PCEs are NTSC. */ +#define get_tv() TV_NTSC +/* Return the video mode the machine is using. */ + +/* End of pce.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 + + + +#include + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Characters codes */ +#define CH_DEL 0x7F +#define CH_CURS_UP 0x0B +#define CH_CURS_DOWN 0x0A + +#define CH_HLINE 0x5F +#define CH_VLINE 0xDF +#define CH_ULCORNER 0x5F +#define CH_URCORNER 0x20 +#define CH_LLCORNER 0xD4 +#define CH_LRCORNER 0xDF +#define CH_TTEE 0x5F +#define CH_BTEE 0xD4 +#define CH_LTEE 0xD4 +#define CH_RTEE 0xDF +#define CH_CROSS 0xD4 + +/* 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 + +/* 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 */ +/*****************************************************************************/ + + + +unsigned __fastcall__ videomode (unsigned mode); +/* Set the video mode, return the old mode. Call with one of the VIDEOMODE_xx +** constants. +*/ + +void waitvsync (void); +/* Wait for start of next frame */ + + + +/* End of apple2enh.h */ +#endif +/*****************************************************************************/ +/* */ +/* cbm264.h */ +/* */ +/* System specific definitions for the C16, C116 and Plus/4 */ +/* */ +/* */ +/* */ +/* (C) 1998-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 _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) + + + +/* Masks for joy_read */ +#define JOY_UP_MASK 0x01 +#define JOY_DOWN_MASK 0x02 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x80 + + + +/* Define hardware */ +#include <_ted.h> +#define TED (*(struct __ted*)0xFF00) + +/* Define special memory areas */ +#define COLOR_RAM ((unsigned char*)0x0800) + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + +void fast (void); +/* Switch the CPU into double-clock mode. */ + +void slow (void); +/* Switch the CPU into single-clock mode. */ + +unsigned char isfast (void); +/* Returns 1 if the CPU is in double-clock mode. */ + + + +/* End of cbm264.h */ +#endif +/*****************************************************************************/ +/* */ +/* plus4.h */ +/* */ +/* Plus/4 system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-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 _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 + +/* 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 +/*****************************************************************************/ +/* */ +/* Atari VCS 2600 RIOT registers addresses */ +/* */ +/* Source: DASM - vcs.h */ +/* */ +/* Florent Flament (contact@florentflament.com), 2017 */ +/* */ +/*****************************************************************************/ + +/* RIOT registers */ +struct __riot { + unsigned char swcha; + unsigned char swacnt; + unsigned char swchb; + unsigned char swbcnt; + unsigned char intim; + unsigned char timint; + + unsigned char unused[14]; + + unsigned char tim1t; + unsigned char tim8t; + unsigned char tim64t; + unsigned char t1024t; +}; +/*****************************************************************************/ +/* */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* peekpoke.h */ +/* */ +/* PEEK and POKE macros for those who want to write BASIC code in C */ +/* */ +/* */ +/* */ +/* (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 _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 + + + +/*****************************************************************************/ +/* */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* 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 + + + + +/*****************************************************************************/ +/* */ +/* _antic.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* "ANTIC, Alphanumeric Television Interface Controller, is responsible for */ +/* the generation of playfield graphics which is delivered as a datastream */ +/* to the related CTIA/GTIA chip. The CTIA/GTIA provides the coloring of the */ +/* playfield graphics, and is responsible for adding overlaid sprite */ +/* (referred to as "Player/Missile graphics" by Atari). Atari advertised it */ +/* as a true microprocessor, in that it has an instruction set to run */ +/* programs (called display lists) to process data. ANTIC has no capacity */ +/* for writing back computed values to memory, it merely reads data from */ +/* memory and processes it for output to the screen, therefore it is not */ +/* Turing complete." - Wikipedia article on "ANTIC" (with edits) */ +/* */ +/* (C) 2000 Freddy Offenga */ +/* 24-Jan-2011: Christian Krueger: Added defines for Antic instruction set */ +/* 2019-01-16: Bill Kendrick : More defines for registers */ +/* */ +/* */ +/* 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 coprocessor's register offsets */ +/*****************************************************************************/ + +struct __antic { + unsigned char dmactl; /* (W) direct memory access control */ + unsigned char chactl; /* (W) character mode control */ + unsigned char dlistl; /* display list pointer low-byte */ + unsigned char dlisth; /* display list pointer high-byte */ + unsigned char hscrol; /* (W) horizontal scroll enable */ + unsigned char vscrol; /* (W) vertical scroll enable */ + unsigned char unuse0; /* unused */ + unsigned char pmbase; /* (W) msb of p/m base address (for when DMACTL has player and/or missile DMA enabled) */ + unsigned char unuse1; /* unused */ + unsigned char chbase; /* (W) msb of character set base address */ + unsigned char wsync; /* (W) wait for horizontal synchronization */ + unsigned char vcount; /* (R) vertical line counter */ + unsigned char penh; /* (R) light pen horizontal position */ + unsigned char penv; /* (R) light pen vertical position */ + unsigned char nmien; /* (W) non-maskable interrupt enable */ + union { + /* (W) ("NMIRES") nmi reset -- clears the interrupt request register; + ** resets all of the NMI status together + */ + unsigned char nmires; + + /* (R) ("NMIST") nmi status -- holds cause for the NMI interrupt */ + unsigned char nmist; + }; +}; + + +/*****************************************************************************/ +/* DMACTL register options */ +/*****************************************************************************/ + +/* Initialized to 0x22: DMA fetch, normal playfield, no PMG DMA, double-line PMGs */ + +/* Playfield modes: */ +#define DMACTL_PLAYFIELD_NONE 0x00 +#define DMACTL_PLAYFIELD_NARROW 0x01 /* e.g., 32 bytes per scanline with thick borders */ +#define DMACTL_PLAYFIELD_NORMAL 0x02 /* e.g., 40 bytes per scanline with normal borders */ +#define DMACTL_PLAYFIELD_WIDE 0x03 /* e.g., 48 bytes per scanline with no borders (overscan) */ + +/* Other options: */ + +/* If not set, GTIA's GRAFP0 thru GRAFP3, and/or GRAFM registers are used for +** player & missile shapes, respectively. (Modify the registers during the horizontal blank +** (Display List Interrupt), a la "racing the beam" on an Atari VCS/2600, ) +** if set, ANTIC's PMBASE will be used to fetch shapes from memory via DMA. +*/ +#define DMACTL_DMA_MISSILES 0x04 +#define DMACTL_DMA_PLAYERS 0x08 + +/* Unless set, PMGs (as fetched via DMA) will be double-scanline resolution */ +#define DMACTL_PMG_SINGLELINE 0x10 + +/* Unless set, ANTIC operation is disabled, since it cannot fetch +** Display List instructions +*/ +#define DMACTL_DMA_FETCH 0x20 + + +/*****************************************************************************/ +/* CHACTL register options */ +/*****************************************************************************/ + +/* Initialized to 2 (CHACTL_CHAR_NORMAL | CHACTL_INV_PRESENT) */ + +/* Inverted (upside-down) characters */ +#define CHACTL_CHAR_NORMAL 0x00 +#define CHACTL_CHAR_INVERTED 0x04 + +/* Inverse (reverse-video) characters */ +#define CHACTL_INV_TRANS 0x00 /* chars with high-bit shown */ +#define CHACTL_INV_OPAQUE 0x01 /* chars with high-bit appear as space */ +#define CHACTL_INV_PRESENT 0x02 /* chars with high-bit are reverse-video */ + + +/*****************************************************************************/ +/* Values for NMIEN (enabling interrupts) & NMIST (cause for the interrupt) */ +/*****************************************************************************/ + +/* Display List Interrupts +** Called on a modeline when "DL_DLI" bit is set the ANTIC instruction, +** and jumps through VDSLST vector. +*/ +#define NMIEN_DLI 0x80 + +/* Vertical Blank Interrupt +** Called during every vertical blank; see SYSVBV, VVBLKI, CRITIC, and VVBLKD, +** as well as the SETVBV routine. +*/ +#define NMIEN_VBI 0x40 + +/* [Reset] key pressed */ +#define NMIEN_RESET 0x20 + + +/*****************************************************************************/ +/* ANTIC instruction set */ +/*****************************************************************************/ + +/* Absolute instructions (non mode lines) */ +#define DL_JMP ((unsigned char) 1) +#define DL_JVB ((unsigned char) 65) + +#define DL_BLK1 ((unsigned char) 0) /* 1 blank scanline */ +#define DL_BLK2 ((unsigned char) 16) /* 2 blank scanlines */ +#define DL_BLK3 ((unsigned char) 32) /* ...etc. */ +#define DL_BLK4 ((unsigned char) 48) +#define DL_BLK5 ((unsigned char) 64) +#define DL_BLK6 ((unsigned char) 80) +#define DL_BLK7 ((unsigned char) 96) +#define DL_BLK8 ((unsigned char) 112) + + +/* Absolute instructions (mode lines) */ + +/* Note: Actual width varies (e.g., 40 vs 32 vs 48) depending on +** normal vs narrow vs wide (overscan) playfield setting; see DMACTL +*/ + +/* Character modes (text, tile graphics, etc.) */ + +/* monochrome, 40 character & 8 scanlines per mode line (aka Atari BASIC GRAPHICS 0 via OS's CIO routines) */ +#define DL_CHR40x8x1 ((unsigned char) 2) + +/* monochrome, 40 character & 10 scanlines per mode line (like GR. 0, with descenders) */ +#define DL_CHR40x10x1 ((unsigned char) 3) + +/* colour, 40 character & 8 scanlines per mode line (GR. 12) */ +#define DL_CHR40x8x4 ((unsigned char) 4) + +/* colour, 40 character & 16 scanlines per mode line (GR. 13) */ +#define DL_CHR40x16x4 ((unsigned char) 5) + +/* colour (duochrome per character), 20 character & 8 scanlines per mode line (GR. 1) */ +#define DL_CHR20x8x2 ((unsigned char) 6) + +/* colour (duochrome per character), 20 character & 16 scanlines per mode line (GR. 2) */ +#define DL_CHR20x16x2 ((unsigned char) 7) + + +/* Bitmap modes */ + +/* colour, 40 pixel & 8 scanlines per mode line (GR. 3) */ +#define DL_MAP40x8x4 ((unsigned char) 8) + +/* 'duochrome', 80 pixel & 4 scanlines per mode line (GR.4) */ +#define DL_MAP80x4x2 ((unsigned char) 9) + +/* colour, 80 pixel & 4 scanlines per mode line (GR.5) */ +#define DL_MAP80x4x4 ((unsigned char) 10) + +/* 'duochrome', 160 pixel & 2 scanlines per mode line (GR.6) */ +#define DL_MAP160x2x2 ((unsigned char) 11) + +/* 'duochrome', 160 pixel & 1 scanline per mode line (GR.14) */ +#define DL_MAP160x1x2 ((unsigned char) 12) + +/* 4 colours, 160 pixel & 2 scanlines per mode line (GR.7) */ +#define DL_MAP160x2x4 ((unsigned char) 13) + +/* 4 colours, 160 pixel & 1 scanline per mode line (GR.15) */ +#define DL_MAP160x1x4 ((unsigned char) 14) + +/* monochrome, 320 pixel & 1 scanline per mode line (GR.8) */ +#define DL_MAP320x1x1 ((unsigned char) 15) + + +/* Equivalents, for people familiar with Atari 8-bit OS */ + +#define DL_GRAPHICS0 DL_CHR40x8x1 +#define DL_GRAPHICS1 DL_CHR20x8x2 +#define DL_GRAPHICS2 DL_CHR20x16x2 +#define DL_GRAPHICS3 DL_MAP40x8x4 +#define DL_GRAPHICS4 DL_MAP80x4x2 +#define DL_GRAPHICS5 DL_MAP80x4x4 +#define DL_GRAPHICS6 DL_MAP160x2x2 +#define DL_GRAPHICS7 DL_MAP160x2x4 +#define DL_GRAPHICS8 DL_MAP320x1x1 +#define DL_GRAPHICS9 DL_MAP320x1x1 /* N.B.: GRAPHICS 9, 10, and 11 also involve GTIA's PRIOR register */ +#define DL_GRAPHICS10 DL_MAP320x1x1 +#define DL_GRAPHICS11 DL_MAP320x1x1 +#define DL_GRAPHICS12 DL_CHR40x8x4 /* N.B.: Atari 400/800 OS didn't have GRAPHICS 12 or 13 */ +#define DL_GRAPHICS13 DL_CHR40x16x4 +#define DL_GRAPHICS14 DL_MAP160x1x2 +#define DL_GRAPHICS15 DL_MAP160x1x4 + +/* Atari 400/800 OS didn't have GRAPHICS 14 or 15, so they were known by "6+" and "7+" */ +#define DL_GRAPHICS6PLUS DL_GRAPHICS14 +#define DL_GRAPHICS7PLUS DL_GRAPHICS15 + +/* Neither Atari 400/800 nor XL OS supported 10-scanline (descenders) text mode via CIO */ +#define DL_GRAPHICS0_DESCENDERS DL_CHR40x10x1 + +/* Modifiers to mode lines */ +#define DL_HSCROL(x) ((unsigned char)((x) | 16)) /* enable smooth horizontal scrolling on this line; see HSCROL */ +#define DL_VSCROL(x) ((unsigned char)((x) | 32)) /* enable smooth vertical scrolling on this line; see VSCROL */ +#define DL_LMS(x) ((unsigned char)((x) | 64)) /* Load Memory Scan (next two bytes must be the LSB/MSB of the data to load) */ + +/* General modifier */ +#define DL_DLI(x) ((unsigned char)((x) | 128)) /* enable Display List Interrupt on this mode line */ + + +/* End of _antic.h */ +#endif /* #ifndef __ANTIC_H */ +/*****************************************************************************/ +/* */ +/* target.h */ +/* */ +/* Target specific definitions */ +/* */ +/* */ +/* */ +/* 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 _TARGET_H +#define _TARGET_H + + + +/* Include the correct target specific file */ +#if defined(__APPLE2ENH__) +# include +#elif defined(__APPLE2__) +# include +#elif defined(__ATARI__) +# include +#elif defined(__ATARI2600__) +# include +#elif defined(__ATARI5200__) +# include +#elif defined(__ATMOS__) +# include +#elif defined(__CBM__) +# include +#elif defined(__CREATIVISION__) +# include +#elif defined(__GAMATE__) +# include +#elif defined(__GEOS__) +# include +#elif defined(__LYNX__) +# include +#elif defined(__NES__) +# include +#elif defined(__OSIC1P__) +# include +#elif defined(__PCE__) +# include +#elif defined(__SUPERVISION__) +# include +#elif defined(__TELESTRAT__) +# include +#endif + + + +/* End of target.h */ +#endif +/*****************************************************************************/ +/* */ +/* _gtia.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* "GTIA, Graphic Television Interface Adaptor, is a custom chip used in the */ +/* Atari 8-bit family of computers and in the Atari 5200 console. In these */ +/* systems, GTIA chip works together with ANTIC to produce video display. */ +/* ANTIC generates the playfield graphics (text and bitmap) while GTIA */ +/* provides the color for the playfield and adds overlay objects known as */ +/* player/missile graphics (sprites)" - Wikipedia article on "GTIA" */ +/* */ +/* */ +/* (C) 2000 Freddy Offenga */ +/* 2019-01-16: Bill Kendrick : More defines for registers */ +/* */ +/* */ +/* 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 for write (W) */ +/*****************************************************************************/ + +struct __gtia_write { + unsigned char hposp0; /* 0x00: horizontal position of player 0 */ + unsigned char hposp1; /* 0x01: horizontal position of player 1 */ + unsigned char hposp2; /* 0x02: horizontal position of player 2 */ + unsigned char hposp3; /* 0x03: horizontal position of player 3 */ + unsigned char hposm0; /* 0x04: horizontal position of missile 0 */ + unsigned char hposm1; /* 0x05: horizontal position of missile 1 */ + unsigned char hposm2; /* 0x06: horizontal position of missile 2 */ + unsigned char hposm3; /* 0x07: horizontal position of missile 3 */ + + unsigned char sizep0; /* 0x08: size of player 0 */ + unsigned char sizep1; /* 0x09: size of player 1 */ + unsigned char sizep2; /* 0x0A: size of player 2 */ + unsigned char sizep3; /* 0x0B: size of player 3 */ + unsigned char sizem; /* 0x0C: size of missiles */ + + unsigned char grafp0; /* 0x0D: graphics shape player 0 (used when ANTIC is not instructed to use DMA; see DMACTL) */ + unsigned char grafp1; /* 0x0E: graphics shape player 1 */ + unsigned char grafp2; /* 0x0F: graphics shape player 2 */ + unsigned char grafp3; /* 0x10: graphics shape player 3 */ + unsigned char grafm; /* 0x11: graphics shape missiles */ + + unsigned char colpm0; /* 0x12: color player and missile 0 */ + unsigned char colpm1; /* 0x13: color player and missile 1 */ + unsigned char colpm2; /* 0x14: color player and missile 2 */ + unsigned char colpm3; /* 0x15: color player and missile 3 */ + unsigned char colpf0; /* 0x16: color playfield 0 */ + unsigned char colpf1; /* 0x17: color playfield 1 */ + unsigned char colpf2; /* 0x18: color playfield 2 */ + unsigned char colpf3; /* 0x19: color playfield 3 */ + unsigned char colbk; /* 0x1A: color background */ + + unsigned char prior; /* 0x1B: priority selection */ + + unsigned char vdelay; + /* 0x1C: vertical delay -- one-line resolution movement of + ** vertical position of an object when two line resolution display is enabled + */ + + unsigned char gractl; /* 0x1D: stick/paddle latch, p/m control */ + + unsigned char hitclr; /* 0x1E: clear p/m collision */ + unsigned char consol; /* 0x1F: builtin speaker */ +}; + + +/*****************************************************************************/ +/* (W) Values for SIZEP0-SIZEP3 and SIZEM registers: */ +/*****************************************************************************/ + +#define PMG_SIZE_NORMAL 0x0 /* one color clock per pixel */ +#define PMG_SIZE_DOUBLE 0x1 /* two color clocks per pixel */ +#define PMG_SIZE_QUAD 0x3 /* four color clocks per pixel */ + + +/* COLPM0-COLPM3, COLPF0-COLPF3, COLBK color registers */ + +/*****************************************************************************/ +/* Color definitions */ +/*****************************************************************************/ + +/* Make a GTIA color value */ +#define _gtia_mkcolor(hue,lum) (((hue) << 4) | ((lum) << 1)) + +/* Luminance values go from 0 (black) to 7 (white) */ + +/* Hue values */ +/* (These can vary depending on TV standard (NTSC vs PAL), +** tint potentiometer settings, TV tint settings, emulator palette, etc.) +*/ +#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) */ +/* Hardware palette values (for GTIA colxxx registers) */ +#define GTIA_COLOR_BLACK _gtia_mkcolor(HUE_GREY,0) +#define GTIA_COLOR_WHITE _gtia_mkcolor(HUE_GREY,7) +#define GTIA_COLOR_RED _gtia_mkcolor(HUE_REDORANGE,1) +#define GTIA_COLOR_CYAN _gtia_mkcolor(HUE_CYAN,3) +#define GTIA_COLOR_VIOLET _gtia_mkcolor(HUE_PURPLE,4) +#define GTIA_COLOR_GREEN _gtia_mkcolor(HUE_GREEN,2) +#define GTIA_COLOR_BLUE _gtia_mkcolor(HUE_BLUE,2) +#define GTIA_COLOR_YELLOW _gtia_mkcolor(HUE_YELLOW,7) +#define GTIA_COLOR_ORANGE _gtia_mkcolor(HUE_ORANGE,5) +#define GTIA_COLOR_BROWN _gtia_mkcolor(HUE_YELLOW,2) +#define GTIA_COLOR_LIGHTRED _gtia_mkcolor(HUE_REDORANGE,6) +#define GTIA_COLOR_GRAY1 _gtia_mkcolor(HUE_GREY,2) +#define GTIA_COLOR_GRAY2 _gtia_mkcolor(HUE_GREY,3) +#define GTIA_COLOR_LIGHTGREEN _gtia_mkcolor(HUE_GREEN,6) +#define GTIA_COLOR_LIGHTBLUE _gtia_mkcolor(HUE_BLUE,6) +#define GTIA_COLOR_GRAY3 _gtia_mkcolor(HUE_GREY,5) + + +/*****************************************************************************/ +/* (W) PRIOR register values */ +/*****************************************************************************/ + +#define PRIOR_P03_PF03 0x01 /* Players 0-3, then Playfields 0-3, then background */ +#define PRIOR_P01_PF03_P23 0x02 /* Players 0-1, then Playfields 0-3, then Players 2-3, then background */ +#define PRIOR_PF03_P03 0x04 /* Playfields 0-3, then Players 0-3, then background */ +#define PRIOR_PF01_P03_PF23 0x08 /* Playfields 0-1, then Players 0-3, then Playfields 2-3, then background */ + +#define PRIOR_5TH_PLAYER 0x10 /* Four missiles combine to be a 5th player (uses COLPF3) */ + +/* Causes overlap of players 0 & 1 and of players 2 & 3 to result in a third color, +** the logical OR of the two players' colors, and other overlaps (e.g., players 0 and 2) +** to result in black (0x00). +*/ +#define PRIOR_OVERLAP_3RD_COLOR 0x20 + + +/*****************************************************************************/ +/* (W) GTIA special graphics mode options for GPRIOR */ +/*****************************************************************************/ + +/* Pixels are 2 color clocks wide, and one scanline tall +** (so 80x192 in normal playfield width). +** May be used with both bitmap and character modelines. +*/ + +/* 16 shade shades of the background (COLBK) hue; +** Note: brightnesses other than 0 (darkest) in COLBK cause additional effects +*/ +#define PRIOR_GFX_MODE_9 0x40 + +/* 9 color palette mode; +** COLPM0 (acts as background) thru COLPM3, followed by COLPF0 thru COLPF3, and COLBK +*/ +#define PRIOR_GFX_MODE_10 0x80 + +/* 16 hues of the background (COLBK) brightness; +** Note: hues other than 0 (greys) in COLBK caus additional effects +*/ +#define PRIOR_GFX_MODE_11 0xC0 + + +/*****************************************************************************/ +/* (W) VDELAY register values */ +/*****************************************************************************/ + +#define VDELAY_MISSILE0 0x01 +#define VDELAY_MISSILE1 0x02 +#define VDELAY_MISSILE2 0x04 +#define VDELAY_MISSILE3 0x08 +#define VDELAY_PLAYER0 0x10 +#define VDELAY_PLAYER1 0x20 +#define VDELAY_PLAYER2 0x40 +#define VDELAY_PLAYER3 0x80 + + +/*****************************************************************************/ +/* (W) GRACTL register values */ +/*****************************************************************************/ + +#define GRACTL_MISSLES 0x01 /* enable missiles */ +#define GRACTL_PLAYERS 0x02 /* enable players */ + +/* "Latch" triggers; once pressed, will give a continuous +** pressed input until this bit is cleared +*/ +#define GRACTL_LATCH_TRIGGER_INPUTS 0x04 + + +/*****************************************************************************/ +/* Define a structure with the GTIA register offsets for read (R) */ +/*****************************************************************************/ + +struct __gtia_read { + unsigned char m0pf; /* 0x00: missile 0 to playfield collision */ + unsigned char m1pf; /* 0x01: missile 1 to playfield collision */ + unsigned char m2pf; /* 0x02: missile 2 to playfield collision */ + unsigned char m3pf; /* 0x03: missile 3 to playfield collision */ + unsigned char p0pf; /* 0x04: player 0 to playfield collision */ + unsigned char p1pf; /* 0x05: player 1 to playfield collision */ + unsigned char p2pf; /* 0x06: player 2 to playfield collision */ + unsigned char p3pf; /* 0x07: player 3 to playfield collision */ + unsigned char m0pl; /* 0x08: missile 0 to player collision */ + unsigned char m1pl; /* 0x09: missile 1 to player collision */ + unsigned char m2pl; /* 0x0A: missile 2 to player collision */ + unsigned char m3pl; /* 0x0B: missile 3 to player collision */ + unsigned char p0pl; /* 0x0C: player 0 to player collision */ + unsigned char p1pl; /* 0x0D: player 1 to player collision */ + unsigned char p2pl; /* 0x0E: player 2 to player collision */ + unsigned char p3pl; /* 0x0F: player 3 to player collision */ + + unsigned char trig0; /* 0x10: joystick trigger 0 (0=pressed, 1=released) */ + unsigned char trig1; /* 0x11: joystick trigger 1 */ + unsigned char trig2; /* 0x12: joystick trigger 2 */ + unsigned char trig3; /* 0x13: joystick trigger 3 */ + + unsigned char pal; /* 0x14: pal/ntsc flag */ + + unsigned char unused[10]; + + unsigned char consol; /* 0x1F: console buttons */ +}; + + +/*****************************************************************************/ +/* (R) PAL register possible values */ +/*****************************************************************************/ + +/* Note: This only tells you whether the GTIA is PAL or NTSC; some NTSC +** systems are modded with PAL ANTIC chips; testing VCOUNT limits can be +** done to check for that. Seems like it's not possible to test for SECAM +*/ + +#define TV_STD_PAL 0x1 +#define TV_STD_NTSC 0xE + + +/*****************************************************************************/ +/* Macros for reading console keys (Start/Select/Option) via CONSOL register */ +/*****************************************************************************/ + +#define CONSOL_START(x) !((unsigned char)((x) & 1)) /* true if Start pressed */ +#define CONSOL_SELECT(x) !((unsigned char)((x) & 2)) /* true if Select pressed */ +#define CONSOL_OPTION(x) !((unsigned char)((x) & 4)) /* true if Option pressed */ + + +/* End of _gtia.h */ +#endif /* #ifndef __GTIA_H */ +/*****************************************************************************/ +/* */ +/* stdarg.h */ +/* */ +/* Variable arguments */ +/* */ +/* */ +/* */ +/* (C) 1998-2004 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 _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 + + + + +/*****************************************************************************/ +/* */ +/* 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: +*/ + +/* 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 + +#define JOY_DATA 0x4400 /* hw register to read the pad bits from */ + +/* Masks for joy_read */ +#define JOY_UP_MASK 0x01 +#define JOY_DOWN_MASK 0x02 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x10 +#define JOY_BTN_2_MASK 0x20 +#define JOY_BTN_3_MASK 0x40 +#define JOY_BTN_4_MASK 0x80 + +#define JOY_BTN_A_MASK JOY_BTN_1_MASK +#define JOY_BTN_B_MASk JOY_BTN_2_MASK +#define JOY_START_MASK JOY_BTN_3_MASK +#define JOY_SELECT_MASK JOY_BTN_4_MASK + +#define JOY_BTN_A(v) ((v) & JOY_BTN_A_MASK) +#define JOY_BTN_B(v) ((v) & JOY_BTN_B_MASK) +#define JOY_START(v) ((v) & JOY_START_MASK) +#define JOY_SELECT(v) ((v) & JOY_SELECT_MASK) + +/* The addresses of the static drivers */ +extern void gamate_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ + +void waitvsync (void); +/* Wait for start of next frame */ + +/* NOTE: all Gamate are "NTSC" */ +#define get_tv() TV_NTSC +/* Return the video mode the machine is using. */ + +/* End of gamate.h */ +#endif + +/*****************************************************************************/ +/* */ +/* fcntl.h */ +/* */ +/* File control operations */ +/* */ +/* */ +/* */ +/* (C) 1998-2004 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 _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 + + + +/*****************************************************************************/ +/* */ +/* sym1.h */ +/* */ +/* Sym-1 system-specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2020 Wayne Parham */ +/* EMail: wayne@parhamdata.com */ +/* */ +/* */ +/* 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 _SYM1_H +#define _SYM1_H + + + +/* Check for errors */ +#if !defined(__SYM1__) +# error This module may only be used when compiling for the Sym-1! +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Display character definitions */ +#define DISP_1 0x06 // '1' +#define DISP_2 0x5B // '2' +#define DISP_3 0x4F // '3' +#define DISP_4 0x66 // '4' +#define DISP_5 0x6D // '5' +#define DISP_6 0x7C // '6' +#define DISP_7 0x07 // '7' +#define DISP_8 0x7F // '8' +#define DISP_9 0x67 // '9' +#define DISP_0 0x3F // '0' +#define DISP_A 0x77 // 'A' +#define DISP_b 0x7C // 'b' +#define DISP_C 0x39 // 'C' +#define DISP_c 0x58 // 'c' +#define DISP_d 0x5E // 'd' +#define DISP_E 0x79 // 'E' +#define DISP_e 0x7B // 'e' +#define DISP_F 0x71 // 'F' +#define DISP_G 0x7D // 'G' +#define DISP_g 0x6F // 'g' +#define DISP_H 0x76 // 'H' +#define DISP_h 0x74 // 'h' +#define DISP_I 0x06 // 'I' +#define DISP_i 0x04 // 'i' +#define DISP_J 0x1E // 'J' +#define DISP_K 0x74 // 'K' +#define DISP_L 0x38 // 'L' +#define DISP_M_1 0x33 // 'M' +#define DISP_M_2 0x27 // 2nd half +#define DISP_n 0x54 // 'n' +#define DISP_O 0x3F // 'O' +#define DISP_o 0x5C // 'o' +#define DISP_P 0x73 // 'P' +#define DISP_q 0x67 // 'q' +#define DISP_r 0x50 // 'r' +#define DISP_S 0x6D // 'S' +#define DISP_t 0x46 // 't' +#define DISP_U 0x3E // 'U' +#define DISP_u 0x1C // 'u' +#define DISP_V_1 0x64 // 'V' +#define DISP_V_2 0x52 // 2nd half +#define DISP_W_1 0x3C // 'W' +#define DISP_W_2 0x1E // 2nd half +#define DISP_Y 0x6E // 'Y' +#define DISP_Z 0x5B // 'Z' +#define DISP_SPACE 0x00 // ' ' +#define DISP_PERIOD 0x80 // '.' +#define DISP_HYPHEN 0x40 // '-' +#define DISP_APOSTR 0x20 // ''' +#define DISP_EQUAL 0x41 // '=' +#define DISP_3_BAR 0x49 // '=' +#define DISP_BOTTOM 0x08 // '_' +#define DISP_TOP 0x01 // Top segment +#define DISP_LEFT 0x30 // '|' Left side, both segments +#define DISP_RIGHT 0x06 // '|' Right side, both segments +#define DISP_DEGREE 0x63 // 'o' An 'o' character in the upper segments +#define DISP_HAT 0x23 // 'n' An 'n' character in the upper segments +#define DISP_FORK 0x62 // 'u' A 'u' character in the upper segments +#define DISP_SLASH 0x51 // '/' +#define DISP_BACKSLASH 0x34 // '\' +#define DISP_TOP_RIGHT 0x02 // Top right segment +#define DISP_TOP_LEFT 0x20 // Top left segment +#define DISP_LOW_RIGHT 0x04 // Lower right segment +#define DISP_LOW_LEFT 0x10 // Lower left segment + + +/*****************************************************************************/ +/* Hardware */ +/*****************************************************************************/ + + + +#include <_6522.h> +#define VIA1 (*(struct __6522*)0xA000) // U25 +#define VIA2 (*(struct __6522*)0xA800) // U28 +#define VIA3 (*(struct __6522*)0xAC00) // U29 + + +struct _display { + unsigned char d0; // left-most seven-segment display + unsigned char d1; // second seven-segment display + unsigned char d2; // third seven-segment display + unsigned char d3; // fouth seven-segment display + unsigned char d4; // fifth seven-segment display + unsigned char d5; // sixth seven-segment display + unsigned char d6; // buffer byte to the right +}; +#define DISPLAY (*(struct _display*)0xA640) + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +void beep (void); +/* Beep sound. */ + +void fdisp (void); +/* Flash display */ + +int __fastcall__ loadt (unsigned char); +/* Read from tape */ + +int __fastcall__ dumpt (unsigned char, const void*, const void*); +/* Write to tape */ + + + +/* End of sym1.h */ +#endif +/*****************************************************************************/ +/* */ +/* creativision.h */ +/* */ +/* Creativision system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2013 cvemu */ +/* (C) 2017 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 _CVISION_H +#define _CVISION_H + +/* Character codes */ +#define CH_VLINE 33 +#define CH_HLINE 34 +#define CH_ULCORNER 35 +#define CH_URCORNER 36 +#define CH_LLCORNER 37 +#define CH_LRCORNER 38 + +/* Masks for joy_read */ +#define JOY_UP_MASK 0x10 +#define JOY_DOWN_MASK 0x04 +#define JOY_LEFT_MASK 0x20 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x01 +#define JOY_BTN_2_MASK 0x02 + +/* no support for dynamically loadable drivers */ +#define DYN_DRV 0 + +/* Colours - from TMS9918 */ +#define COLOR_TRANSPARENT 0 +#define COLOR_BLACK 1 +#define COLOR_MED_GREEN 2 +#define COLOR_LIGHT_GREEN 3 +#define COLOR_DARK_BLUE 4 +#define COLOR_LIGHT_BLUE 5 +#define COLOR_DARK_RED 6 +#define COLOR_CYAN 7 +#define COLOR_MED_RED 8 +#define COLOR_LIGHT_RED 9 +#define COLOR_DARK_YELLOW 10 +#define COLOR_LIGHT_YELLOW 11 +#define COLOR_DARK_GREEN 12 +#define COLOR_MAGENTA 13 +#define COLOR_GREY 14 +#define COLOR_WHITE 15 + +/* Protos */ +void __fastcall__ psg_outb (unsigned char b); +void __fastcall__ psg_delay (unsigned char b); +void psg_silence (void); +void __fastcall__ bios_playsound (const void *a, unsigned char b); + +#endif /* #ifndef _CVISION_H */ +/*****************************************************************************/ +/* */ +/* telestrat.h */ +/* */ +/* Oric Telestrat system-specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2017 Debrune Jérome, */ +/* */ +/* */ +/* 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. */ +/* */ +/*****************************************************************************/ + + + + +/* 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_HLINE '-' +#define CH_VLINE '|' +#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 + +/* Masks for joy_read */ +#define JOY_UP_MASK 0x10 +#define JOY_DOWN_MASK 0x08 +#define JOY_LEFT_MASK 0x02 +#define JOY_RIGHT_MASK 0x01 +#define JOY_BTN_1_MASK 0x04 + +#define JOY_FIRE_MASK JOY_BTN_1_MASK +#define JOY_FIRE(v) ((v) & JOY_FIRE_MASK) + + +/* The addresses of the static drivers */ +extern void telestrat_joy[]; /* Referred to by joy_static_stddrv[] */ +extern void telestrat_228_200_3_tgi[]; +extern void telestrat_240_200_2_tgi[]; /* Referred to by tgi_static_stddrv[] */ + + +void oups(); +void ping(); +void zap(); +void shoot(); +void explode(); + +void kbdclick1(); + +/* 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 _bordercolor(color) COLOR_BLACK +/*****************************************************************************/ +/* */ +/* 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 + + + +/* Masks for joy_read */ +#define JOY_UP_MASK 0x10 +#define JOY_DOWN_MASK 0x08 +#define JOY_LEFT_MASK 0x01 +#define JOY_RIGHT_MASK 0x02 +#define JOY_BTN_1_MASK 0x20 + +#define JOY_FIRE_MASK JOY_BTN_1_MASK +#define JOY_FIRE(v) ((v) & JOY_FIRE_MASK) + + + +/* 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_ijk_joy[]; +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 +/*****************************************************************************/ +/* */ +/* _atarios.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* 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 __ATARIOS_H +#define __ATARIOS_H + + +/* 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 */ + + +/* Device control block */ + +struct __dcb { + unsigned char ddevic; /* device id */ + unsigned char dunit; /* unit number */ + unsigned char dcomnd; /* command */ + unsigned char dstats; /* command type / status return */ + void *dbuf; /* pointer to buffer */ + unsigned char dtimlo; /* device timeout in seconds */ + unsigned char dunuse; /* - unused - */ + unsigned int dbyt; /* # of bytes to transfer */ + union { + struct { + unsigned char daux1; /* 1st command auxiliary byte */ + unsigned char daux2; /* 2nd command auxiliary byte */ + }; + unsigned int daux; /* auxiliary as word */ + }; +}; + +typedef struct __dcb dcb_t; + + +/* 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 */ +}; + +typedef struct __iocb iocb_t; + + +/* DOS 2.x zeropage variables */ + +struct __dos2x { + unsigned char* zbufp; /* points to user filename */ + unsigned char* zdrva; /* points to serveral buffers (mostly VTOC) */ + unsigned char* zsba; /* points to sector buffer */ + unsigned char errno; /* number of occured error */ +}; + +typedef struct __dos2x dos2x_t; + + +/* A single device handler formed by it's routines */ + +struct __devhdl { + void *open; /* address of OPEN routine -1 */ + void *close; /* address of CLOSE routine -1 */ + void *get; /* address of GET BYTE routine -1 */ + void *put; /* address of PUT BYTE routine -1 */ + void *status; /* address of GET STATUS routine -1 */ + void *special; /* address od SPECIAL routine -1 */ + unsigned char jmp_inst; /* a "JMP" byte, should be $4C */ + void (*init)(void); /* init routine (JMP INIT) */ + unsigned char reserved; /* unused */ +}; + +typedef struct __devhdl devhdl_t; + + +/* List of device handlers, as managed in HATABS */ + +struct __hatabs { + unsigned char id; /* ATASCII code of handler e.g. 'C','D','E','K','P','S','R' */ + devhdl_t* devhdl; /* Pointer to routines of device */ +}; + +typedef struct __hatabs hatabs_t; + + +/* Floating point register */ + +struct __fpreg { +#ifdef OS_REV2 + unsigned char fr; + unsigned char frm[5]; /* 5-byte register mantissa */ +#else + unsigned char fr[6]; /* 6 bytes for single register */ +#endif +}; + +typedef struct __fpreg fpreg_t; + +enum { /* enum for access of floating point registers */ + FPIDX_R0 = 0, /* (to use as index) */ + FPIDX_RE = 1, + FPIDX_R1 = 2, + FPIDX_R2 = 3 +}; + + +/* Define a structure with atari os register offsets */ + +struct __os { + + // --- Zero-Page --- + +#ifdef OSA + unsigned char* linzbs; // = $00/$01 LINBUG RAM (WILL BE REPLACED BY MONITOR RAM) +#else + unsigned char linflg; // = $00 LNBUG FLAG (0 = NOT LNBUG) + unsigned char ngflag; // = $01 MEMORY STATUS (0 = FAILURE) +#endif + unsigned char* casini; // = $02/$03 CASSETTE INIT LOCATION + unsigned char* ramlo; // = $04/$05 RAM POINTER FOR MEMORY TEST + +#ifdef OSA + unsigned char tramsz; // = $06 FLAG FOR LEFT CARTRIDGE + unsigned char tstdat; // = $07 FLAG FOR RIGHT CARTRIDGE +#else + unsigned char trnsmz; // = $06 TEMPORARY REGISTER FOR RAM SIZE + unsigned char tstdat; // = $07 UNUSED (NOT TOUCHED DURING RESET/COLD START) +#endif + + // Cleared upon Coldstart only + + unsigned char warmst; // = $08 WARM START FLAG + unsigned char bootq; // = $09 SUCCESSFUL BOOT FLAG + void (*dosvec)(void); // = $0A/$0B DISK SOFTWARE START VECTOR + void (*dosini)(void); // = $0C/$0D DISK SOFTWARE INIT ADDRESS + unsigned char* appmhi; // = $0E/$0F APPLICATIONS MEMORY HI LIMIT + + // Cleared upon Coldstart or Warmstart + + unsigned char pokmsk; // = $10 SYSTEM MASK FOR POKEY IRQ ENABLE + unsigned char brkkey; // = $11 BREAK KEY FLAG + unsigned char rtclok[3]; // = $12-$14 REAL TIME CLOCK (IN 16 MSEC UNITS) + unsigned char* bufadr; // = $15/$16 INDIRECT BUFFER ADDRESS REGISTER + unsigned char iccomt; // = $17 COMMAND FOR VECTOR + unsigned char* dskfms; // = $18/$19 DISK FILE MANAGER POINTER + unsigned char* dskutl; // = $1A/$1B DISK UTILITIES POINTER +#ifdef OSA + unsigned char ptimot; // = $1C PRINTER TIME OUT REGISTER + unsigned char pbpnt; // = $1D PRINT BUFFER POINTER + unsigned char pbufsz; // = $1E PRINT BUFFER SIZE + unsigned char ptemp; // = $1F TEMPORARY REGISTER +#else + unsigned char abufpt[4]; // = $1C-$1F ACMI BUFFER POINTER AREA +#endif + iocb_t ziocb; // = $20-$2F ZERO PAGE I/O CONTROL BLOCK + + unsigned char status; // = $30 INTERNAL STATUS STORAGE + unsigned char chksum; // = $31 CHECKSUM (SINGLE BYTE SUM WITH CARRY) + unsigned char* bufr; // = $32/$33 POINTER TO DATA BUFFER + unsigned char* bfen; // = $34/$35 NEXT BYTE PAST END OF THE DATA BUFFER LO +#ifdef OSA + unsigned char cretry; // = $36 NUMBER OF COMMAND FRAME RETRIES + unsigned char dretry; // = $37 NUMBER OF DEVICE RETRIES +#else + unsigned int ltemp; // = $36/$37 LOADER TEMPORARY +#endif + unsigned char bufrfl; // = $38 DATA BUFFER FULL FLAG + unsigned char recvdn; // = $39 RECEIVE DONE FLAG + unsigned char xmtdon; // = $3A TRANSMISSION DONE FLAG + unsigned char chksnt; // = $3B CHECKSUM SENT FLAG + unsigned char nocksm; // = $3C NO CHECKSUM FOLLOWS DATA FLAG + unsigned char bptr; // = $3D CASSETTE BUFFER POINTER + unsigned char ftype; // = $3E CASSETTE IRG TYPE + unsigned char feof; // = $3F CASSETTE EOF FLAG (0 // = QUIET) + + unsigned char freq; // = $40 CASSETTE BEEP COUNTER + unsigned char soundr; // = $41 NOISY I/0 FLAG. (ZERO IS QUIET) + unsigned char critic; // = $42 DEFINES CRITICAL SECTION (CRITICAL IF NON-Z) + dos2x_t fmszpg; // = $43-$49 DISK FILE MANAGER SYSTEM ZERO PAGE +#ifdef OSA + unsigned char ckey; // = $4A FLAG SET WHEN GAME START PRESSED + unsigned char cassbt; // = $4B CASSETTE BOOT FLAG +#else + void* zchain; // = $4A/$4B HANDLER LINKAGE CHAIN POINTER +#endif + unsigned char dstat; // = $4C DISPLAY STATUS + unsigned char atract; // = $4D ATRACT FLAG + unsigned char drkmsk; // = $4E DARK ATRACT MASK + unsigned char colrsh; // = $4F ATRACT COLOR SHIFTER (EOR'ED WITH PLAYFIELD + + unsigned char tmpchr; // = $50 TEMPORARY CHARACTER + unsigned char hold1; // = $51 TEMPORARY + unsigned char lmargn; // = $52 LEFT MARGIN (NORMALLY 2, CC65 C STARTUP CODE SETS IT TO 0) + unsigned char rmargn; // = $53 RIGHT MARGIN (NORMALLY 39 IF NO XEP80 IS USED) + unsigned char rowcrs; // = $54 1CURSOR ROW + unsigned int colcrs; // = $55/$56 CURSOR COLUMN + unsigned char dindex; // = $57 DISPLAY MODE + unsigned char* savmsc; // = $58/$59 SAVED MEMORY SCAN COUNTER + unsigned char oldrow; // = $5A PRIOR ROW + unsigned int oldcol; // = $5B/$5C PRIOR COLUMN + unsigned char oldchr; // = $5D DATA UNDER CURSOR + unsigned char* oldadr; // = $5E/$5F SAVED CURSOR MEMORY ADDRESS + +#ifdef OSA + unsigned char newrow; // = $60 POINT DRAW GOES TO + unsigned int newcol; // = $61/$62 COLUMN DRAW GOES TO +#else + unsigned char* fkdef; // = $60/$61 FUNCTION KEY DEFINITION TABLE + unsigned char palnts; // = $62 PAL/NTSC INDICATOR (0 // = NTSC) +#endif + unsigned char logcol; // = $63 POINTS AT COLUMN IN LOGICAL LINE + unsigned char* adress; // = $64/$65 TEMPORARY ADDRESS + unsigned int mlttmp; // = $66/$67 TEMPORARY / FIRST BYTE IS USED IN OPEN AS TEMP + unsigned int savadr; // = $68/$69 SAVED ADDRESS + unsigned char ramtop; // = $6A RAM SIZE DEFINED BY POWER ON LOGIC + unsigned char bufcnt; // = $6B BUFFER COUNT + unsigned char* bufstr; // = $6C/$6D EDITOR GETCH POINTER + unsigned char bitmsk; // = $6E BIT MASK + unsigned char shfamt; // = $6F SHIFT AMOUNT FOR PIXEL JUSTIFUCATION + + unsigned int rowac; // = $70/$71 DRAW WORKING ROW + unsigned int colac; // = $72/$73 DRAW WORKING COLUMN + unsigned char* endpt; // = $74/$75 END POINT + unsigned char deltar; // = $76 ROW DIFFERENCE + unsigned int deltac; // = $77/$78 COLUMN DIFFERENCE +#ifdef OSA + unsigned char rowinc; // = $79 ROWINC + unsigned char colinc; // = $7A COLINC +#else + unsigned char* keydef; // = $79/$7A 2-BYTE KEY DEFINITION TABLE ADDRESS +#endif + unsigned char swpflg; // = $7B NON-0 1F TXT AND REGULAR RAM IS SWAPPED + unsigned char holdch; // = $7C CH IS MOVED HERE IN KGETCH BEFORE CNTL & SH + unsigned char insdat; // = $7D 1-BYTE TEMPORARY + unsigned int countr; // = $7E/$7F 2-BYTE DRAW ITERATION COUNT + + unsigned char _free_1[0xD4-0x7F-1]; // USER SPACE + + // Floating Point Package Page Zero Address Equates + fpreg_t fpreg[4]; // = $D4-$EB 4 REGSITERS, ACCCESS LIKE "fpreg[FPIDX_R0].fr" + unsigned char frx; // = $EC 1-BYTE TEMPORARY + unsigned char eexp; // = $ED VALUE OF EXP +#ifdef OS_REV2 + unsigned char frsign; // = $EE ##REV2## 1-BYTE FLOATING POINT SIGN + unsigned char plycnt; // = $EF ##REV2## 1-BYTE POLYNOMIAL DEGREE + unsigned char sgnflg; // = $F0 ##REV2## 1-BYTE SIGN FLAG + unsigned char xfmflg; // = $F1 ##REV2## 1-BYTE TRANSFORM FLAG +#else + unsigned char nsign; // = $EE SIGN OF # + unsigned char esign; // = $EF SIGN OF EXPONENT + unsigned char fchrflg; // = $F0 1ST CHAR FLAG + unsigned char digrt; // = $F1 # OF DIGITS RIGHT OF DECIMAL +#endif + unsigned char cix; // = $F2 CURRENT INPUT INDEX + unsigned char* inbuff; // = $F3/$F4 POINTS TO USER'S LINE INPUT BUFFER + unsigned int ztemp1; // = $F5/$F6 2-BYTE TEMPORARY + unsigned int ztemp4; // = $F7/$F8 2-BYTE TEMPORARY + unsigned int ztemp3; // = $F9/$FA 2-BYTE TEMPORARY + + union { + unsigned char degflg; // = $FB ##OLD## SAME AS RADFLG + unsigned char radflg; // = $FB ##OLD## 0=RADIANS, 6=DEGREES + }; + + fpreg_t* flptr; // = $FC/$FD 2-BYTE FLOATING POINT NUMBER POINTER + fpreg_t* fptr2; // = $FE/$FF 2-BYTE FLOATING POINT NUMBER POINTER + + // --- Page 1 --- + + unsigned char stack[0x100]; // STACK + + // --- Page 2 --- + + void (*vdslst)(void); // = $0200/$0201 DISPLAY LIST NMI VECTOR + void (*vprced)(void); // = $0202/$0203 PROCEED LINE IRQ VECTOR + void (*vinter)(void); // = $0204/$0205 INTERRUPT LINE IRQ VECTOR + void (*vbreak)(void); // = $0206/$0207 SOFTWARE BREAK (00) INSTRUCTION IRQ VECTOR + void (*vkeybd)(void); // = $0208/$0209 POKEY KEYBOARD IRQ VECTOR + void (*vserin)(void); // = $020A/$020B POKEY SERIAL INPUT READY IRQ + void (*vseror)(void); // = $020C/$020D POKEY SERIAL OUTPUT READY IRQ + void (*vseroc)(void); // = $020E/$020F POKEY SERIAL OUTPUT COMPLETE IRQ + void (*vtimr1)(void); // = $0210/$0201 POKEY TIMER 1 IRQ + void (*vtimr2)(void); // = $0212/$0203 POKEY TIMER 2 IRQ + void (*vtimr4)(void); // = $0214/$0205 POKEY TIMER 4 IRQ + void (*vimirq)(void); // = $0216/$0207 IMMEDIATE IRQ VECTOR + unsigned int cdtmv1; // = $0218/$0210 COUNT DOWN TIMER 1 + unsigned int cdtmv2; // = $021A/$021B COUNT DOWN TIMER 2 + unsigned int cdtmv3; // = $021C/$021D COUNT DOWN TIMER 3 + unsigned int cdtmv4; // = $021E/$021F COUNT DOWN TIMER 4 + unsigned int cdtmv5; // = $0220/$0221 COUNT DOWN TIMER 5 + void (*vvblki)(void); // = $0222/$0223 IMMEDIATE VERTICAL BLANK NMI VECTOR + void (*vvblkd)(void); // = $0224/$0224 DEFERRED VERTICAL BLANK NMI VECTOR + void (*cdtma1)(void); // = $0226/$0227 COUNT DOWN TIMER 1 JSR ADDRESS + void (*cdtma2)(void); // = $0228/$0229 COUNT DOWN TIMER 2 JSR ADDRESS + unsigned char cdtmf3; // = $022A COUNT DOWN TIMER 3 FLAG + unsigned char srtimr; // = $022B SOFTWARE REPEAT TIMER + unsigned char cdtmf4; // = $022C COUNT DOWN TIMER 4 FLAG + unsigned char intemp; // = $022D IAN'S TEMP + unsigned char cdtmf5; // = $022E COUNT DOWN TIMER FLAG 5 + unsigned char sdmctl; // = $022F SAVE DMACTL REGISTER + union { + struct { + unsigned char sdlstl; // = $0230 SAVE DISPLAY LIST LOW BYTE + unsigned char sdlsth; // = $0231 SAVE DISPLAY LIST HI BYTE + }; + void* sdlst; // = $0230/$0231 (same as above as pointer) + }; + unsigned char sskctl; // = $0232 SKCTL REGISTER RAM +#ifdef OSA + unsigned char _spare_1; // = $0233 No OS use. +#else + unsigned char lcount; // = $0233 ##1200xl## 1-byte relocating loader record +#endif + unsigned char lpenh; // = $0234 LIGHT PEN HORIZONTAL VALUE + unsigned char lpenv; // = $0235 LIGHT PEN VERTICAL VALUE + void (*brkky)(void); // = $0236/$0237 BREAK KEY VECTOR +#ifdef OSA + unsigned char spare2[2]; // = $0238/$0239 No OS use. +#else + void (*vpirq)(void); // = $0238/$0239 ##rev2## 2-byte parallel device IRQ vector +#endif + unsigned char cdevic; // = $023A COMMAND FRAME BUFFER - DEVICE + unsigned char ccomnd; // = $023B COMMAND + union { + struct { + unsigned char caux1; // = $023C COMMAND AUX BYTE 1 + unsigned char caux2; // = $023D COMMAND AUX BYTE 2 + }; + unsigned int caux; // = $023C/$023D (same as above as word) + }; + unsigned char temp; // = $023E TEMPORARY RAM CELL + unsigned char errflg; // = $023F ERROR FLAG - ANY DEVICE ERROR EXCEPT TIME OUT + unsigned char dflags; // = $0240 DISK FLAGS FROM SECTOR ONE + unsigned char dbsect; // = $0241 NUMBER OF DISK BOOT SECTORS + unsigned char* bootad; // = $0242/$0243 ADDRESS WHERE DISK BOOT LOADER WILL BE PUT + unsigned char coldst; // = $0244 COLDSTART FLAG (1=IN MIDDLE OF COLDSTART> +#ifdef OSA + unsigned char spare3; // = $0245 No OS use. +#else + unsigned char reclen; // = $0245 ##1200xl## 1-byte relocating loader record length +#endif + unsigned char dsktim; // = $0246 DISK TIME OUT REGISTER +#ifdef OSA + unsigned char linbuf[40]; // = $0247-$026E ##old## CHAR LINE BUFFER +#else + unsigned char pdvmsk; // = $0247 ##rev2## 1-byte parallel device selection mask + unsigned char shpdvs; // = $0248 ##rev2## 1-byte PDVS (parallel device select) + unsigned char pdimsk; // = $0249 ##rev2## 1-byte parallel device IRQ selection + unsigned int reladr; // = $024A/$024B ##rev2## 2-byte relocating loader relative adr. + unsigned char pptmpa; // = $024C ##rev2## 1-byte parallel device handler temporary + unsigned char pptmpx; // = $024D ##rev2## 1-byte parallel device handler temporary + unsigned char _reserved_1[29]; // = $024E-$026A RESERVED + unsigned char chsalt; // = $026B ##1200xl## 1-byte character set alternate + unsigned char vsflag; // = $026C ##1200xl## 1-byte fine vertical scroll count + unsigned char keydis; // = $026D ##1200xl## 1-byte keyboard disable + unsigned char fine; // = $026E ##1200xl## 1-byte fine scrolling mode +#endif + unsigned char gprior; // = $026F GLOBAL PRIORITY CELL + unsigned char paddl0; // = $0270 1-BYTE POTENTIOMETER 0 + unsigned char paddl1; // = $0271 1-BYTE POTENTIOMETER 1 + unsigned char paddl2; // = $0272 1-BYTE POTENTIOMETER 2 + unsigned char paddl3; // = $0273 1-BYTE POTENTIOMETER 3 + unsigned char paddl4; // = $0274 1-BYTE POTENTIOMETER 4 + unsigned char paddl5; // = $0275 1-BYTE POTENTIOMETER 5 + unsigned char paddl6; // = $0276 1-BYTE POTENTIOMETER 6 + unsigned char paddl7; // = $0277 1-BYTE POTENTIOMETER 7 + unsigned char stick0; // = $0278 1-byte joystick 0 + unsigned char stick1; // = $0279 1-byte joystick 1 + unsigned char stick2; // = $027A 1-byte joystick 2 + unsigned char stick3; // = $027B 1-byte joystick 3 + unsigned char ptrig0; // = $027C 1-BYTE PADDLE TRIGGER 0 + unsigned char ptrig1; // = $027D 1-BYTE PADDLE TRIGGER 1 + unsigned char ptrig2; // = $027E 1-BYTE PADDLE TRIGGER 2 + unsigned char ptrig3; // = $027F 1-BYTE PADDLE TRIGGER 3 + unsigned char ptrig4; // = $0280 1-BYTE PADDLE TRIGGER 4 + unsigned char ptrig5; // = $0281 1-BYTE PADDLE TRIGGER 5 + unsigned char ptrig6; // = $0281 1-BYTE PADDLE TRIGGER 6 + unsigned char ptrig7; // = $0283 1-BYTE PADDLE TRIGGER 7 + unsigned char strig0; // = $0284 1-BYTE JOYSTICK TRIGGER 0 + unsigned char strig1; // = $0285 1-BYTE JOYSTICK TRIGGER 1 + unsigned char strig2; // = $0286 1-BYTE JOYSTICK TRIGGER 2 + unsigned char strig3; // = $0287 1-BYTE JOYSTICK TRIGGER 3 +#ifdef OSA + unsigned char cstat; // = $0288 ##old## cassette status register +#else + unsigned char hibyte; // = $0288 ##1200xl## 1-byte relocating loader high byte +#endif + unsigned char wmode; // = $0289 1-byte cassette WRITE mode + unsigned char blim; // = $028A 1-byte cassette buffer limit +#ifdef OSA + unsigned char _reserved_2[5]; // = $028B-$028F RESERVED +#else + unsigned char imask; // = $028B ##rev2## (not used) + void (*jveck)(void); // = $028C/$028D 2-byte jump vector + unsigned newadr; // = $028E/028F ##1200xl## 2-byte relocating address +#endif + unsigned char txtrow; // = $0290 TEXT ROWCRS + unsigned txtcol; // = $0291/$0292 TEXT COLCRS + unsigned char tindex; // = $0293 TEXT INDEX + unsigned char* txtmsc; // = $0294/$0295 FOOLS CONVRT INTO NEW MSC + unsigned char txtold[6]; // = $0296-$029B OLDROW & OLDCOL FOR TEXT (AND THEN SOME) +#ifdef OSA + unsigned char tmpx1; // = $029C ##old## 1--byte temporary register +#else + unsigned char cretry; // = $029C ##1200xl## 1-byte number of command frame retries +#endif + unsigned char hold3; // = $029D 1-byte temporary + unsigned char subtmp; // = $029E 1-byte temporary + unsigned char hold2; // = $029F 1-byte (not used) + unsigned char dmask; // = $02A0 1-byte display (pixel location) mask + unsigned char tmplbt; // = $02A1 1-byte (not used) + unsigned char escflg; // = $02A2 ESCAPE FLAG + unsigned char tabmap[15]; // = $02A3-$02B1 15-byte (120 bit) tab stop bit map + unsigned char logmap[4]; // = $02B2-$02B5 LOGICAL LINE START BIT MAP + unsigned char invflg; // = $02B6 INVERSE VIDEO FLAG (TOGGLED BY ATARI KEY) + unsigned char filflg; // = $02B7 RIGHT FILL FLAG FOR DRAW + unsigned char tmprow; // = $02B8 1-byte temporary row + unsigned tmpcol; // = $02B9/$02BA 2-byte temporary column + unsigned char scrflg; // = $02BB SET IF SCROLL OCCURS + unsigned char hold4; // = $02BC TEMP CELL USED IN DRAW ONLY +#ifdef OSA + unsigned char hold5; // = $02BD ##old## DITTO +#else + unsigned char dretry; // = $02BD ##1200xl## 1-byte number of device retries +#endif + unsigned char shflok; // = $02BE 1-byte shift/control lock flags + unsigned char botscr; // = $02BF BOTTOM OF SCREEN 24 NORM 4 SPLIT + unsigned char pcolr0; // = $02C0 1-byte player-missile 0 color/luminance + unsigned char pcolr1; // = $02C1 1-byte player-missile 1 color/luminance + unsigned char pcolr2; // = $02C2 1-byte player-missile 2 color/luminance + unsigned char pcolr3; // = $02C3 1-byte player-missile 3 color/luminance + unsigned char color0; // = $02C4 1-byte playfield 0 color/luminance + unsigned char color1; // = $02C5 1-byte playfield 1 color/luminance + unsigned char color2; // = $02C6 1-byte playfield 2 color/luminance + unsigned char color3; // = $02C7 1-byte playfield 3 color/luminance + unsigned char color4; // = $02C8 1-byte background color/luminance +#ifdef OSA + unsigned char _spare_2[23]; // = $02C9-$02DF No OS use. +#else + union { + unsigned char parmbl[6]; // = $02C9 ##rev2## 6-byte relocating loader parameter + struct { + void (*runadr)(void); // = $02C9 ##1200xl## 2-byte run address + unsigned int hiused; // = $02CB ##1200xl## 2-byte highest non-zero page address + unsigned int zhiuse; // = $02CD ##1200xl## 2-byte highest zero page address + }; + }; + union { + unsigned char oldpar[6]; // = $02CF ##rev2## 6-byte relocating loader parameter + struct { + void (*gbytea)(void); // = $02CF ##1200xl## 2-byte GET-BYTE routine address + unsigned int loadad; // = $02D1 ##1200xl## 2-byte non-zero page load address + unsigned int zloada; // = $02D3 ##1200xl## 2-byte zero page load address + }; + }; + unsigned int dsctln; // = $02D5 ##1200xl## 2-byte disk sector length + unsigned int acmisr; // = $02D7 ##1200xl## 2-byte ACMI interrupt service routine + unsigned char krpdel; // = $02D9 ##1200xl## 1-byte auto-repeat delay + unsigned char keyrep; // = $02DA ##1200xl## 1-byte auto-repeat rate + unsigned char noclik; // = $02DB ##1200xl## 1-byte key click disable + unsigned char helpfg; // = $02DC ##1200xl## 1-byte HELP key flag (0 = no HELP) + unsigned char dmasav; // = $02DD ##1200xl## 1-byte SDMCTL save/restore + unsigned char pbpnt; // = $02DE ##1200xl## 1-byte printer buffer pointer + unsigned char pbufsz; // = $02DF ##1200xl## 1-byte printer buffer size +#endif + union { + unsigned char glbabs[4]; // = $02E0-$02E3 byte global variables for non-DOS users + struct { + void (*runad)(void); // = $02E0 ##map## 2-byte binary file run address + void (*initad)(void); // = $02E2 ##map## 2-byte binary file initialization address + }; + }; + unsigned char ramsiz; // = $02E4 RAM SIZE (HI BYTE ONLY) + void* memtop; // = $02E5 TOP OF AVAILABLE USER MEMORY + void* memlo; // = $02E7 BOTTOM OF AVAILABLE USER MEMORY +#ifdef OSA + unsigned char _spare_3; // = $02E9 No OS use. +#else + unsigned char hndlod; // = $02E9 ##1200xl## 1-byte user load flag +#endif + unsigned char dvstat[4]; // = $02EA-$02ED STATUS BUFFER + union { + unsigned int cbaud; // = $02EE/$02EF 2-byte cassette baud rate + struct { + unsigned char cbaudl; // = $02EE 1-byte low cassette baud rate + unsigned char cbaudh; // = $02EF 1-byte high cassette baud rate + }; + }; + unsigned char crsinh; // = $02F0 CURSOR INHIBIT (00 = CURSOR ON) + unsigned char keydel; // = $02F1 KEY DELAY + unsigned char ch1; // = $02F2 1-byte prior keyboard character + unsigned char chact; // = $02F3 CHACTL REGISTER RAM + unsigned char chbas; // = $02F4 CHBAS REGISTER RAM +#ifdef OSA + unsigned char _spare_4[5]; // = $02F5-$02F9 No OS use. +#else + unsigned char newrow; // = $02F5 ##1200xl## 1-byte draw destination row + unsigned int newcol; // = $02F6/$02F7 ##1200xl## 2-byte draw destination column + unsigned char rowinc; // = $02F8 ##1200xl## 1-byte draw row increment + unsigned char colinc; // = $02F9 ##1200xl## 1-byte draw column increment +#endif + unsigned char char_; // = $02FA 1-byte internal character (naming changed due to do keyword conflict) + unsigned char atachr; // = $02FB ATASCII CHARACTER + unsigned char ch; // = $02FC GLOBAL VARIABLE FOR KEYBOARD + unsigned char fildat; // = $02FD RIGHT FILL DATA + unsigned char dspflg; // = $02FE DISPLAY FLAG DISPLAY CNTLS IF NON-ZERO + unsigned char ssflag; // = $02FF START/STOP FLAG FOR PAGING (CNTL 1). CLEARE + + // --- Page 3 --- + + dcb_t dcb; // = $0300-$030B DEVICE CONTROL BLOCK + unsigned int timer1; // = $030C/$030D INITIAL TIMER VALUE +#ifdef OSA + unsigned char addcor; // = $030E ##old## ADDITION CORRECTION +#else + unsigned char jmpers; // = $030E ##1200xl## 1-byte jumper options +#endif + unsigned char casflg; // = $030F CASSETTE MODE WHEN SET + unsigned int timer2; // = $0310/$0311 2-byte final baud rate timer value + unsigned char temp1; // = $0312 TEMPORARY STORAGE REGISTER +#ifdef OSA + unsigned char _spare_5; // = $0313 unused + unsigned char temp2; // = $0314 ##old## TEMPORARY STORAGE REGISTER +#else + unsigned char temp2; // = $0313 ##1200xl## 1-byte temporary + unsigned char ptimot; // = $0314 ##1200xl## 1-byte printer timeout +#endif + unsigned char temp3; // = $0315 TEMPORARY STORAGE REGISTER + unsigned char savio; // = $0316 SAVE SERIAL IN DATA PORT + unsigned char timflg; // = $0317 TIME OUT FLAG FOR BAUD RATE CORRECTION + unsigned char stackp; // = $0318 SIO STACK POINTER SAVE CELL + unsigned char tstat; // = $0319 TEMPORARY STATUS HOLDER +#ifdef OSA + hatabs_t hatabs[12]; // = $031A-$033D handler address table + unsigned int zeropad; // = $033E/$033F zero padding +#else + hatabs_t hatabs[11]; // = $031A-$033A handler address table + unsigned int zeropad; // = $033B/$033C zero padding + unsigned char pupbt1; // = $033D ##1200xl## 1-byte power-up validation byte 1 + unsigned char pupbt2; // = $033E ##1200xl## 1-byte power-up validation byte 2 + unsigned char pupbt3; // = $033F ##1200xl## 1-byte power-up validation byte 3 +#endif + + iocb_t iocb[8]; // = $0340-$03BF 8 I/O Control Blocks + unsigned char prnbuf[40]; // = $03C0-$3E7 PRINTER BUFFER +#ifdef OSA + unsigned char _spare_6[151]; // = $03E8-$047F unused +#else + unsigned char superf; // = $03E8 ##1200xl## 1-byte editor super function flag + unsigned char ckey; // = $03E9 ##1200xl## 1-byte cassette boot request flag + unsigned char cassbt; // = $03EA ##1200xl## 1-byte cassette boot flag + unsigned char cartck; // = $03EB ##1200xl## 1-byte cartridge equivalence check + unsigned char derrf; // = $03EC ##rev2## 1-byte screen OPEN error flag + unsigned char acmvar[11]; // = $03ED-$03F7 ##1200xl## reserved for ACMI, not cleared upon reset + unsigned char basicf; // = $03F8 ##rev2## 1-byte BASIC switch flag + unsigned char mintlk; // = $03F9 ##1200xl## 1-byte ACMI module interlock + unsigned char gintlk; // = $03FA ##1200xl## 1-byte cartridge interlock + void* chlink; // = $03FB/$03FC ##1200xl## 2-byte loaded handler chain link + unsigned char casbuf[131]; // = $03FD-$047F CASSETTE BUFFER +#endif + + // --- Page 4 --- + + unsigned char usarea[128]; // = $0480 128 bytes reserved for application + + // --- Page 5 --- + + unsigned char _spare_7[126]; // = $0500-$057D reserved for FP package / unused + unsigned char lbpr1; // = $057E LBUFF PREFIX 1 + unsigned char lbpr2; // = $057F LBUFF PREFIX 2 + unsigned char lbuff[128]; // = $0580-$05FF 128-byte line buffer +}; + + +/* Define a structure with the zero page atari basic register offsets */ + +struct __basic { + void* lowmem; // = $80/$81 POINTER TO BASIC'S LOW MEMORY + void* vntp; // = $82/$83 BEGINNING ADDRESS OF THE VARIABLE NAME TABLE + void* vntd; // = $84/$85 POINTER TO THE ENDING ADDRESS OF THE VARIABLE NAME TABLE PLUS ONE + void* vvtp; // = $86/$87 ADDRESS FOR THE VARIABLE VALUE TABLE + void* stmtab; // = $88/$89 ADDRESS OF THE STATEMENT TABLE + void* stmcur; // = $8A/$8B CURRENT BASIC STATEMENT POINTER + void* starp; // = $8C/$8D ADDRESS FOR THE STRING AND ARRAY TABLE + void* runstk; // = $8E/$8F ADDRESS OF THE RUNTIME STACK + void* memtop; // = $90/$91 POINTER TO THE TOP OF BASIC MEMORY + + unsigned char _internal_1[0xBA-0x91-1]; // INTERNAL DATA + + unsigned int stopln; // = $BA/$BB LINE WHERE A PROGRAM WAS STOPPED + + unsigned char _internal_2[0xC3-0xBB-1]; // INTERNAL DATA + + unsigned char errsav; // = $C3 NUMBER OF THE ERROR CODE + + unsigned char _internal_3[0xC9-0xC3-1]; // INTERNAL DATA + + unsigned char ptabw; // = $C9 NUMBER OF COLUMNS BETWEEN TAB STOPS + unsigned char loadflg; // = $CA LIST PROTECTION + + unsigned char _internal_4[0xD4-0xCA-1]; // INTERNAL DATA + + unsigned int binint; // = $D4/$D5 USR-CALL RETURN VALUE +}; + +#endif +/*****************************************************************************/ +/* */ +/* 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. */ +#include + +/* 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 +#elif defined(__CX16__) && !defined(_CX16_H) +# include +#endif + +/* Include definitions for CBM file types */ +#include + + + +#define JOY_FIRE_MASK JOY_BTN_1_MASK +#define JOY_FIRE(v) ((v) & JOY_FIRE_MASK) + + + +/*****************************************************************************/ +/* 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 +#define CH_FONT_LOWER 14 +#define CH_FONT_UPPER 142 + + + +/*****************************************************************************/ +/* 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. */ + +#define KBREPEAT_CURSOR 0x00 +#define KBREPEAT_NONE 0x40 +#define KBREPEAT_ALL 0x80 + +unsigned char __fastcall__ kbrepeat (unsigned char mode); +/* Changes which keys have automatic repeat. */ + +#if !defined(__CBM610__) +void waitvsync (void); +/* Wait for the start of the next video field. */ +#endif + +/*****************************************************************************/ +/* 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); +unsigned char cbm_k_chrin (void); +void __fastcall__ cbm_k_chrout (unsigned char C); +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_second (unsigned char addr); +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_settim (unsigned long timer); +void __fastcall__ cbm_k_talk (unsigned char dev); +void __fastcall__ cbm_k_tksa (unsigned char addr); +void cbm_k_udtim (void); +void cbm_k_unlsn (void); +void cbm_k_untlk (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", +** "blocks used", or "mb free". Return codes: +** 0 = read file-name +** 1 = couldn't read directory +** 2 = read "blocks free", "blocks used", or "mb free" +** 3 = couldn't find start of file-name +** 4 = couldn't find end of file-name +** 5 = couldn't read file-type +** 6 = premature end of file +*/ + +void __fastcall__ cbm_closedir (unsigned char lfn); +/* Closes directory by cbm_close(lfn) */ + + + +/* End of cbm.h */ +#endif +/*****************************************************************************/ +/* */ +/* signal.h */ +/* */ +/* Signal handling definitions */ +/* */ +/* */ +/* */ +/* (C) 2002-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 _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 + + + +/*****************************************************************************/ +/* */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* 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 + +#include + + + +/*****************************************************************************/ +/* 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 + +#if !defined(__APPLE2ENH__) +#define CH_HLINE '-' +#define CH_VLINE '!' +#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 '+' +#endif + +/* Masks for joy_read */ +#define JOY_UP_MASK 0x10 +#define JOY_DOWN_MASK 0x20 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x40 +#define JOY_BTN_2_MASK 0x80 + +/* 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 0x32 /* Apple //e Option Card */ +#define APPLE_IIC 0x40 /* Apple //c */ +#define APPLE_IIC35 0x41 /* Apple //c (3.5 ROM) */ +#define APPLE_IICEXP 0x43 /* Apple //c (Mem. Exp.) */ +#define APPLE_IICREV 0x44 /* Apple //c (Rev. Mem. Exp.) */ +#define APPLE_IICPLUS 0x45 /* 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 +** ProDOS 8 2.4.x - 0x24 +*/ + + + +/*****************************************************************************/ +/* Variables */ +/*****************************************************************************/ + + + +/* The file stream implementation and the POSIX I/O functions will use the +** following struct to set the date and time stamp on files. This specificially +** applies to the open and fopen functions. +*/ +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 +#define _cpeekcolor() COLOR_WHITE +#define _cpeekrevers() 0 + + + +/* End of apple2.h */ +#endif +/*****************************************************************************/ +/* */ +/* accelerator.h */ +/* */ +/* Accelerator specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2018 Marco van den Heuvel */ +/* EMail: blackystardust68@yahoo.com */ +/* */ +/* */ +/* 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 _ACCELERATOR_H +#define _ACCELERATOR_H + +/*****************/ +/* Speed defines */ +/*****************/ + +#define SPEED_SLOW 0x00 +#define SPEED_FAST 0xFF + +#define SPEED_1X SPEED_SLOW +#define SPEED_2X 2 - 1 /* C64 Chameleon, C64DTV, C128, PET 65816, Apple2 Fast Chip, Apple2 TransWarp, Apple2 Zip Chip */ +#define SPEED_3X 3 - 1 /* C64 Chameleon, C65, PET 65816, Apple2 Booster, Apple 2 Fast Chip, Apple2 Titan, Apple2 TransWarp, Apple2 Zip Chip */ +#define SPEED_4X 4 - 1 /* C64 Chameleon, C64 TurboMaster, C64 TurboProcess, PET 65816, Apple2 Fast Chip, Apple2 Zip Chip */ +#define SPEED_5X 5 - 1 /* C64 Chameleon, PET 65816, Apple2 Fast Chip */ +#define SPEED_6X 6 - 1 /* C64 Chameleon, PET 65816, Apple2 Fast Chip */ +#define SPEED_7X 7 - 1 /* PET 65816, Apple2 Fast Chip */ +#define SPEED_8X 8 - 1 /* C64 Flash8, PET 65816, Apple 2 Fast Chip */ +#define SPEED_10X 10 - 1 /* PET 65816, Apple2 Fast Chip */ +#define SPEED_12X 12 - 1 /* Apple2 Fast Chip */ +#define SPEED_16X 16 - 1 /* Apple2 Fast Chip */ +#define SPEED_20X 20 - 1 /* C64/C128 SuperCPU */ + +/***********************************/ +/* Accelerator function prototypes */ +/***********************************/ + +/* C64/C128 SuperCPU cartridge */ + +unsigned char __fastcall__ set_scpu_speed (unsigned char speed); + +/* Set the speed of the SuperCPU cartridge, using SPEED_SLOW will switch to + * 1 Mhz mode, SPEED_20X or SPEED_FAST will switch to 20 Mhz mode. + * + * Note that any value lower than SPEED_20X will switch to 1 Mhz mode, and + * any value higher or equal to SPEED_20X will switch to 20 Mhz mode. + * + * This function will return the actual speed the CPU is at after trying + * to set the requested speed, if this is not the speed that was requested + * then possibly the hardware speed switch prevented any software speed + * switching. + * + * This function does not check for the presence of the SuperCPU cartridge, + * make sure you use 'detect_scpu();' before using. + */ + +unsigned char get_scpu_speed (void); + +/* Get the speed of the SuperCPU cartridge. + * + * Possible return values: + * SPEED_1X : 1 Mhz mode + * SPEED_20X : 20 Mhz mode + * + * This function does not check for the presence of the SuperCPU cartridge, + * make sure you use 'detect_scpu();' before using. + */ + +unsigned char detect_scpu (void); + +/* Check for the presence of the SuperCPU cartridge. + * + * Possible return values: + * 0x00 : SuperCPU cartridge not present + * 0x01 : SuperCPU cartridge present + */ + + +/* C64DTV */ + +unsigned char __fastcall__ set_c64dtv_speed (unsigned char speed); + +/* Set the speed of the C64DTV, using SPEED_SLOW will switch to + * slow mode, SPEED_2X or SPEED_FAST will switch to fast mode. + * + * Note that any value higher or equal to SPEED_2X will switch to fast mode. + * + * This function will return the actual speed the CPU is at after trying + * to set the requested speed, to my knowledge the switch should not fail. + * + * This function does not check for the presence of the C64DTV, + * make sure you use 'detect_c64dtv();' before using. + */ + +unsigned char get_c64dtv_speed (void); + +/* Get the speed of the C64DTV. + * + * Possible return values: + * SPEED_1X : slow mode + * SPEED_2X : fast mode + * + * This function does not check for the presence of the C64DTV, + * make sure you use 'detect_c64dtv();' before using. + */ + +unsigned char detect_c64dtv (void); + +/* Check for the presence of the C64DTV. + * + * Possible return values: + * 0x00 : C64DTV not present + * 0x01 : C64DTV present + */ + + +/* C128 8502 CPU */ + +unsigned char __fastcall__ set_c128_speed (unsigned char speed); + +/* Set the speed of the C128 8502 CPU, using SPEED_SLOW will switch to + * 1 Mhz (slow) mode, SPEED_2X or SPEED_FAST will switch to 2Mhz (fast) mode. + * + * Note that any value higher or equal to SPEED_2X will switch to fast mode. + * + * This function will return the actual speed the CPU is at after trying + * to set the requested speed, to my knowledge the switching should not fail. + * + * This function does not check if the C128 CPU is the current CPU, make sure + * you use 'detect_c128();' before using. + */ + +unsigned char get_c128_speed (void); + +/* Get the speed of the C128 8502 CPU. + * + * Possible return values: + * SPEED_SLOW : Slow mode + * SPEED_2X : Fast mode + * + * This function does not check if the C128 CPU is the current CPU, make sure + * you use 'detect_c128();' before using. + */ + +unsigned char detect_c128 (void); + +/* Check if the C128 CPU is the current CPU. + * + * Possible return values: + * 0x00 : C128 CPU is not the current CPU + * 0x01 : C128 CPU is the current CPU + */ + + +/* C64 Chameleon cartridge */ + +unsigned char __fastcall__ set_chameleon_speed (unsigned char speed); + +/* Set the speed of the C64 Chameleon cartridge, the following inputs + * are accepted: + * SPEED_SLOW : 1 Mhz mode + * SPEED_1X : 1 Mhz mode + * SPEED_2X : 2 Mhz mode + * SPEED_3X : 3 Mhz mode + * SPEED_4X : 4 Mhz mode + * SPEED_5X : 5 Mhz mode + * SPEED_6X : 6 Mhz mode + * SPEED_FAST : Maximum speed mode + * + * Note that any value higher or equal to SPEED_7X will switch to maximum + * speed mode. + * + * This function will return the actual speed the CPU is at after trying + * to set the requested speed, to my knowledge the switching should not fail. + * + * This function does not check for the presence of the C64 Chameleon cartridge, + * make sure you use 'detect_chameleon();' before using. + */ + +unsigned char get_chameleon_speed (void); + +;/* Get the speed of the C64 Chameleon cartridge. +; * +; * Possible return values: +; * SPEED_SLOW : Slow mode +; * SPEED_2X : 2Mhz mode +; * SPEED_3X : 3Mhz mode +; * SPEED_4X : 4Mhz mode +; * SPEED_5X : 5Mhz mode +; * SPEED_6X : 6Mhz mode +; * SPEED_FAST : Maximum speed mode +; * +; * This function does not check for the presence of the C64 Chameleon cartridge, +; * make sure you use 'detect_chameleon();' before using. +; */ + +unsigned char detect_chameleon (void); + +/* Check for the presence of the C64 Chameleon cartridge. + * + * Possible return values: + * 0x00 : C64 Chameleon cartridge not present + * 0x01 : C64 Chameleon cartridge present + */ + + +/* C65/C64DX in C64 mode */ + +unsigned char __fastcall__ set_c65_speed (unsigned char speed); + +/* Set the speed of the C65/C64DX CPU, using SPEED_SLOW will switch to + * 1 Mhz mode, SPEED_3X or SPEED_FAST will switch to 3.5 Mhz (fast) mode. + * + * Note that any value higher or equal to SPEED_3X will switch to fast mode. + * + * This function will return the actual speed the CPU is at after trying + * to set the requested speed, to my knowledge the switching should not fail. + * + * This function does not check for the presence of a C65/C64DX in C64 mode, + * make sure you use 'detect_c65();' before using. + */ + +unsigned char get_c65_speed (void); + +/* Get the speed of the C65/C64DX CPU. + * + * Possible return values: + * SPEED_SLOW : Slow mode + * SPEED_3X : Fast mode + * + * This function does not check for the presence of a C65/C64DX in C64 mode, + * make sure you use 'detect_c65();' before using. + */ + +unsigned char detect_c65 (void); + +/* Check for the presence of a C65/C64DX in C64 mode. + * + * Possible return values: + * 0x00 : C65/C64DX in C64 mode not present + * 0x01 : C65/C64DX in C64 mode present + */ + + +/* C64 Turbo Master cartridge */ + +unsigned char __fastcall__ set_turbomaster_speed (unsigned char speed); + +/* Set the speed of the Turbo Master cartridge, using SPEED_SLOW will switch to + * 1 Mhz mode, SPEED_4X or SPEED_FAST will switch to 4 Mhz mode. + * + * Note that any value higher or equal to SPEED_4X will switch to 4 Mhz mode, + * any value lower than SPEED_4X will switch to 1 Mhz mode. + * + * This function will return the actual speed the CPU is at after trying + * to set the requested speed, if the speed is different it might indicate + * that the hardware switch has locked the speed. + * + * This function does not check for the presence of a Turbo Master cartridge, + * make sure you use 'detect_turbomaster();' before using. + */ + +unsigned char get_turbomaster_speed (void); + +/* Get the speed of the Turbo Master cartridge. + * + * Possible return values: + * SPEED_SLOW : 1 Mhz mode + * SPEED_4X : 4 Mhz mode + * + * This function does not check for the presence of a Turbo Master cartridge, + * make sure you use 'detect_turbomaster();' before using. + */ + +unsigned char detect_turbomaster (void); + +/* Check for the presence of a C64 Turbo Master cartridge. + * + * Possible return values: + * 0x00 : C64 Turbo Master cartridge not present + * 0x01 : C64 Turbo Master cartridge present + */ + +/* End of accelerator.h */ +#endif + +/*****************************************************************************/ +/* */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* 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 + +/* These defines that are platform dependent */ +#if defined(__APPLE2__) +# define PATH_MAX (64+1) +#elif defined(__ATARI__) +# define PATH_MAX (63+1) +#elif defined(__CBM__) +# define PATH_MAX (255) /* should be 256+1, see libsrc/common/_cmd.s why it's not */ +#elif defined(__LUNIX__) +# define PATH_MAX (80+1) +#elif defined(__TELESTRAT__) +# define PATH_MAX (50+1) +#else +# define PATH_MAX (16+1) +#endif + + +/* End of limits.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* _pokey.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* POKEY, Pot Keyboard Integrated Circuit, is a digital I/O chip designed */ +/* for the Atari 8-bit family of home computers; it combines functions for */ +/* sampling (ADC) potentiometers (such as game paddles) and scan matrices of */ +/* switches (such as a computer keyboard) as well as sound generation. */ +/* It produces four voices of distinctive square wave sound, either as clear */ +/* tones or modified with a number of distortion settings. - Wikipedia */ +/* "POKEY" article. */ +/* */ +/* */ +/* (C) 2000 Freddy Offenga */ +/* 2019-01-16: Bill Kendrick : More defines for registers */ +/* */ +/* */ +/* 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 for write (W) */ +/*****************************************************************************/ + +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.; + ** Reset BITs 5 - 7 of the serial port status register (SKCTL) to "1" + */ + + unsigned char potgo; /* start paddle scan sequence (see "ALLPOT") */ + unsigned char unuse1; /* unused */ + unsigned char serout; /* serial port data output */ + unsigned char irqen; /* interrupt request enable */ + unsigned char skctl; /* serial port control */ +}; + + +/*****************************************************************************/ +/* (W) AUDC1-4 register values */ +/*****************************************************************************/ + +/* Meaningful values for the distortion bits. +** The first process is to divide the clock value by the frequency, +** then mask the output using the polys in the order below; +** finally, the result is divided by two. +*/ +#define AUDC_POLYS_5_17 0x00 +#define AUDC_POLYS_5 0x20 /* Same as 0x60 */ +#define AUDC_POLYS_5_4 0x40 +#define AUDC_POLYS_17 0x80 +#define AUDC_POLYS_NONE 0xA0 /* Same as 0xE0 */ +#define AUDC_POLYS_4 0xC0 + +/* When set, the volume value in AUDC1-4 bits 0-3 is sent directly to the speaker; +** it is not modulated with the frequency specified in the AUDF1-4 registers. +** (See "De Re Atari" Chapter 7: Sound) +*/ +#define AUDC_VOLUME_ONLY 0x10 + + +/*****************************************************************************/ +/* (W) AUDCTL register values */ +/*****************************************************************************/ + +#define AUDCTL_CLOCKBASE_15HZ 0x01 /* Switch main clock base from 64 KHz to 15 KHz */ +#define AUDCTL_HIGHPASS_CHAN2 0x02 /* Insert high pass filter into channel two, clocked by channel four */ +#define AUDCTL_HIGHPASS_CHAN1 0x04 /* Insert high pass filter into channel one, clocked by channel two */ +#define AUDCTL_JOIN_CHAN34 0x08 /* Join channels four and three (16 bit) */ +#define AUDCTL_JOIN_CHAN12 0x10 /* Join channels two and one (16 bit) */ +#define AUDCTL_CLOCK_CHAN3_179MHZ 0x20 /* Clock channel three with 1.79 MHz */ +#define AUDCTL_CLOCK_CHAN1_179MHZ 0x40 /* Clock channel one with 1.79 MHz */ +#define AUDCTL_9BIT_POLY 0x80 /* Makes the 17 bit poly counter into nine bit poly (see also: RANDOM) */ + + +/*****************************************************************************/ +/* (W) IRQEN register values */ +/*****************************************************************************/ + +#define IRQEN_TIMER_1 0x01 /* The POKEY timer one interrupt is enabled */ +#define IRQEN_TIMER_2 0x02 /* The POKEY timer two interrupt is enabled */ +#define IRQEN_TIMER_4 0x04 /* The POKEY timer four interrupt is enabled */ +#define IRQEN_SERIAL_TRANS_FINISHED 0x08 /* The serial out transmission finished interrupt is enabled */ +#define IRQEN_SERIAL_OUT_DATA_REQUIRED 0x10 /* The serial output data required interrupt is enabled */ +#define IRQEN_SERIAL_IN_DATA_READY 0x20 /* The serial input data ready interrupt is enabled. */ +#define IRQEN_OTHER_KEY 0x40 /* The "other key" interrupt is enabled */ +#define IRQEN_BREAK_KEY 0x80 /* The BREAK key is enabled */ + + +/*****************************************************************************/ +/* (W) SKCTL register values */ +/*****************************************************************************/ + +#define SKCTL_KEYBOARD_DEBOUNCE 0x01 /* Enable keyboard debounce circuits */ +#define SKCTL_KEYBOARD_SCANNING 0x02 /* Enable keyboard scanning circuit */ + +/* Fast pot scan +** The pot scan counter completes its sequence in two TV line times instead of +** one frame time (228 scan lines). Not as accurate as the normal pot scan +*/ +#define SKCTL_FAST_POT_SCAN 0x04 + +/* POKEY two-tone mode +** Serial output is transmitted as a two-tone signal rather than a logic true/false. +*/ +#define SKCTL_TWO_TONE_MODE 0x08 + +/* Force break (serial output to zero) */ +#define SKCTL_FORCE_BREAK 0x80 + + +/* Bits 4, 5, and 6 of SKCTL set Serial Mode Control: */ + +/* Trans. & Receive rates set by external clock; Also internal clock phase reset to zero. */ +#define SKCTL_SER_MODE_TX_EXT_RX_EXT 0x00 + +/* Trans. rate set by external clock; Receive asynch. (ch. 4) (CH3 and CH4). */ +#define SKCTL_SER_MODE_TX_EXT_RX_ASYNC 0x10 + +/* Trans. & Receive rates set by Chan. 4; Chan. 4 output on Bi-Direct. clock line. */ +#define SKCTL_SER_MODE_TX_CH4_RX_CH4_BIDIR 0x20 + +/* N.B.: Bit combination 0,1,1 not useful */ + +/* Trans. rate set by Chan. 4; Receive rate set by external clock. */ +#define SKCTL_SER_MODE_TX_CH4_RX_EXT 0x40 + +/* N.B.: Bit combination 1,0,1 not useful */ + +/* Trans. rate set by Chan. 2; Receive rate set by Chan. 4; Chan. 4 out on Bi-Direct. clock line. */ +#define SKCTL_SER_MODE_TX_CH2_RX_CH4_BIDIR 0x60 + +/* Trans. rate set by Chan. 2; Receive asynch. (chan 3 & 4); Bi-Direct. clock not used (tri-state condition). */ +#define SKCTL_SER_MODE_TX_CH4_RX_ASYNC 0x70 + + +/*****************************************************************************/ +/* Define a structure with the POKEY register offsets for read (R) */ +/*****************************************************************************/ + +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 (see "POTGO") */ + 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 */ +}; + + +/*****************************************************************************/ +/* (R) SKSTAT register values */ +/*****************************************************************************/ + +#define SKSTAT_SERIN_SHIFTREG_BUSY 0x02 /* Serial input shift register busy */ +#define SKSTAT_LASTKEY_PRESSED 0x04 /* the last key is still pressed */ +#define SKSTAT_SHIFTKEY_PRESSED 0x08 /* the [Shift] key is pressed */ +#define SKSTAT_DATA_READ_INGORING_SHIFTREG 0x10 /* Data can be read directly from the serial input port, ignoring the shift register. */ +#define SKSTAT_KEYBOARD_OVERRUN 0x20 /* Keyboard over-run; Reset BITs 7, 6 and 5 (latches) to 1, using SKREST */ +#define SKSTAT_INPUT_OVERRUN 0x40 /* Serial data input over-run. Reset latches as above. */ +#define SKSTAT_INPUT_FRAMEERROR 0x80 /* Serial data input frame error caused by missing or extra bits. Reset latches as above. */ + + +/* KBCODE, internal keyboard codes for Atari 8-bit computers, +** are #defined as "KEY_..." in "atari.h". +** Note some keys are not read via KBCODE: +** - Reset +** - Start, Select, and Option; see CONSOL in "gtia.h" +** - Break +*/ + + +/* End of _pokey.h */ +#endif /* #ifndef __POKEY_H */ +/*****************************************************************************/ +/* */ +/* _pia.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* The Peripheral Interface Adapter (PIA) chip (a 6520 or 6820) provides */ +/* parallel I/O interfacing; it was used in Atari 400/800 and Commodore PET */ +/* family of computers, for joystick and some interrupts. */ +/* Sources; various + Wikpedia article on "Peripheral Interface Adapter". */ +/* */ +/* */ +/* (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 */ +}; + +/* (Some specific register values for Atari defined in atari.h) */ + +/* End of _pia.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 +/*****************************************************************************/ +/* */ +/* ascii_charmap.h */ +/* */ +/* No translations, encodings are stored as they were typed in the host. */ +/* */ +/* */ +/* 2019-09-07, 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 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 must not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +/* No include guard here. Each charnap header +** may be included many times in a source file. +*/ + +#pragma warn (remap-zero, push, off) + +/* ASCII */ +#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, 0x07) +#pragma charmap (0x08, 0x08) +#pragma charmap (0x09, 0x09) +#pragma charmap (0x0A, 0x0A) +#pragma charmap (0x0B, 0x0B) +#pragma charmap (0x0C, 0x0C) +#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) + +/* beyond ASCII */ +#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) + +#pragma warn (remap-zero, pop) +/*****************************************************************************/ +/* */ +/* 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; + +/* Masks for joy_read */ +#define JOY_UP_MASK 0x08 +#define JOY_DOWN_MASK 0x04 +#define JOY_LEFT_MASK 0x02 +#define JOY_RIGHT_MASK 0x01 +#define JOY_BTN_1_MASK 0x20 +#define JOY_BTN_2_MASK 0x10 +#define JOY_BTN_3_MASK 0x80 +#define JOY_BTN_4_MASK 0x40 + +#define JOY_BTN_A_MASK JOY_BTN_1_MASK +#define JOY_BTN_B_MASk JOY_BTN_2_MASK +#define JOY_START_MASK JOY_BTN_3_MASK +#define JOY_SELECT_MASK JOY_BTN_4_MASK + +#define JOY_BTN_A(v) ((v) & JOY_BTN_A_MASK) +#define JOY_BTN_B(v) ((v) & JOY_BTN_B_MASK) +#define JOY_START(v) ((v) & JOY_START_MASK) +#define JOY_SELECT(v) ((v) & JOY_SELECT_MASK) + +/* No support for dynamically loadable drivers */ +#define DYN_DRV 0 + +/* The addresses of the static drivers */ +extern void supervision_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ + + + +/* End of supervision.h */ +#endif +/*****************************************************************************/ +/* */ +/* _ted.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (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 __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 + + + +/*****************************************************************************/ +/* */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* _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 + + + +/*****************************************************************************/ +/* */ +/* cbm_screen_charmap.h */ +/* */ +/* (c) Copyright 2019, Gerhard W. Gruber (sparhawk@gmx.at) */ +/* */ +/* When using CBM mode, this include converts character literals */ +/* from ASCII to screen-code mapping, so you can write directly */ +/* to the screen memory. */ +/* */ +/* If this include is used, no additional macros are needed. */ +/* */ +/*****************************************************************************/ + +/* No include guard here! Multiple use in one file may be intentional. */ + +#pragma warn (remap-zero, push, off) + +// Char $00 -> c + 128 +#pragma charmap (0x00, 0x80) + +// Char $01 ... $1A -> c + 128 + 64 (control alphabet) +#pragma charmap (0x01, 0xC1) +#pragma charmap (0x02, 0xC2) +#pragma charmap (0x03, 0xC3) +#pragma charmap (0x04, 0xC4) +#pragma charmap (0x05, 0xC5) +#pragma charmap (0x06, 0xC6) +#pragma charmap (0x07, 0xC7) +#pragma charmap (0x08, 0xC8) +#pragma charmap (0x09, 0xC9) +#pragma charmap (0x0A, 0xCA) +#pragma charmap (0x0B, 0xCB) +#pragma charmap (0x0C, 0xCC) +#pragma charmap (0x0D, 0xCD) +#pragma charmap (0x0E, 0xCE) +#pragma charmap (0x0F, 0xCF) +#pragma charmap (0x10, 0xD0) +#pragma charmap (0x11, 0xD1) +#pragma charmap (0x12, 0xD2) +#pragma charmap (0x13, 0xD3) +#pragma charmap (0x14, 0xD4) +#pragma charmap (0x15, 0xD5) +#pragma charmap (0x16, 0xD6) +#pragma charmap (0x17, 0xD7) +#pragma charmap (0x18, 0xD8) +#pragma charmap (0x19, 0xD9) +#pragma charmap (0x1A, 0xDA) + +// Char $1B ... $1F -> c + 128 +#pragma charmap (0x1B, 0x9B) +#pragma charmap (0x1C, 0x9C) +#pragma charmap (0x1D, 0x9D) +#pragma charmap (0x1E, 0x9E) +#pragma charmap (0x1F, 0x9F) + +// Char $20 ... $3F -> c +#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) + +// Char $40 -> c - 64 +#pragma charmap (0x40, 0x00) + +// Char $41 ... $5A -> c (upper-case alphabet) +#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) + +// Char $5B ... $5F -> c - 64 +#pragma charmap (0x5B, 0x1B) +#pragma charmap (0x5C, 0x1C) +#pragma charmap (0x5D, 0x1D) +#pragma charmap (0x5E, 0x1E) +#pragma charmap (0x5F, 0x1F) + +// Char $60 -> c - 32 +#pragma charmap (0x60, 0x40) + +// Char $61 ... $7A -> c - 32 - 64 (lower-case alphabet) +#pragma charmap (0x61, 0x01) +#pragma charmap (0x62, 0x02) +#pragma charmap (0x63, 0x03) +#pragma charmap (0x64, 0x04) +#pragma charmap (0x65, 0x05) +#pragma charmap (0x66, 0x06) +#pragma charmap (0x67, 0x07) +#pragma charmap (0x68, 0x08) +#pragma charmap (0x69, 0x09) +#pragma charmap (0x6A, 0x0A) +#pragma charmap (0x6B, 0x0B) +#pragma charmap (0x6C, 0x0C) +#pragma charmap (0x6D, 0x0D) +#pragma charmap (0x6E, 0x0E) +#pragma charmap (0x6F, 0x0F) +#pragma charmap (0x70, 0x10) +#pragma charmap (0x71, 0x11) +#pragma charmap (0x72, 0x12) +#pragma charmap (0x73, 0x13) +#pragma charmap (0x74, 0x14) +#pragma charmap (0x75, 0x15) +#pragma charmap (0x76, 0x16) +#pragma charmap (0x77, 0x17) +#pragma charmap (0x78, 0x18) +#pragma charmap (0x79, 0x19) +#pragma charmap (0x7A, 0x1A) + +// Char $7B ... $7F -> c - 32 +#pragma charmap (0x7B, 0x5B) +#pragma charmap (0x7C, 0x5C) +#pragma charmap (0x7D, 0x5D) +#pragma charmap (0x7E, 0x5E) +#pragma charmap (0x7F, 0x5F) + +// Char $80 -> c + 64 +#pragma charmap (0x80, 0xC0) + +// Char $81 ... $9A -> c (control alphabet) +#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) + +// Char $9B ... $9F -> c + 64 +#pragma charmap (0x9B, 0xDB) +#pragma charmap (0x9C, 0xDC) +#pragma charmap (0x9D, 0xDD) +#pragma charmap (0x9E, 0xDE) +#pragma charmap (0x9F, 0xDF) + +// Char $A0 ... $BF -> c - 64 +#pragma charmap (0xA0, 0x60) +#pragma charmap (0xA1, 0x61) +#pragma charmap (0xA2, 0x62) +#pragma charmap (0xA3, 0x63) +#pragma charmap (0xA4, 0x64) +#pragma charmap (0xA5, 0x65) +#pragma charmap (0xA6, 0x66) +#pragma charmap (0xA7, 0x67) +#pragma charmap (0xA8, 0x68) +#pragma charmap (0xA9, 0x69) +#pragma charmap (0xAA, 0x6A) +#pragma charmap (0xAB, 0x6B) +#pragma charmap (0xAC, 0x6C) +#pragma charmap (0xAD, 0x6D) +#pragma charmap (0xAE, 0x6E) +#pragma charmap (0xAF, 0x6F) +#pragma charmap (0xB0, 0x70) +#pragma charmap (0xB1, 0x71) +#pragma charmap (0xB2, 0x72) +#pragma charmap (0xB3, 0x73) +#pragma charmap (0xB4, 0x74) +#pragma charmap (0xB5, 0x75) +#pragma charmap (0xB6, 0x76) +#pragma charmap (0xB7, 0x77) +#pragma charmap (0xB8, 0x78) +#pragma charmap (0xB9, 0x79) +#pragma charmap (0xBA, 0x7A) +#pragma charmap (0xBB, 0x7B) +#pragma charmap (0xBC, 0x7C) +#pragma charmap (0xBD, 0x7D) +#pragma charmap (0xBE, 0x7E) +#pragma charmap (0xBF, 0x7F) + +// Char $C0 ... $DF -> c - 128 +#pragma charmap (0xC0, 0x40) + +// Char $C1 ... $DA -> c - 128 - 64 (lower-case alphabet) +#pragma charmap (0xC1, 0x01) +#pragma charmap (0xC2, 0x02) +#pragma charmap (0xC3, 0x03) +#pragma charmap (0xC4, 0x04) +#pragma charmap (0xC5, 0x05) +#pragma charmap (0xC6, 0x06) +#pragma charmap (0xC7, 0x07) +#pragma charmap (0xC8, 0x08) +#pragma charmap (0xC9, 0x09) +#pragma charmap (0xCA, 0x0A) +#pragma charmap (0xCB, 0x0B) +#pragma charmap (0xCC, 0x0C) +#pragma charmap (0xCD, 0x0D) +#pragma charmap (0xCE, 0x0E) +#pragma charmap (0xCF, 0x0F) +#pragma charmap (0xD0, 0x10) +#pragma charmap (0xD1, 0x11) +#pragma charmap (0xD2, 0x12) +#pragma charmap (0xD3, 0x13) +#pragma charmap (0xD4, 0x14) +#pragma charmap (0xD5, 0x15) +#pragma charmap (0xD6, 0x16) +#pragma charmap (0xD7, 0x17) +#pragma charmap (0xD8, 0x18) +#pragma charmap (0xD9, 0x19) +#pragma charmap (0xDA, 0x1A) + +// Char $DB ... $DF -> c - 128 +#pragma charmap (0xDB, 0x5B) +#pragma charmap (0xDC, 0x5C) +#pragma charmap (0xDD, 0x5D) +#pragma charmap (0xDE, 0x5E) +#pragma charmap (0xDF, 0x5F) + +// Char $E0 ... $FF -> c - 128 +#pragma charmap (0xE0, 0x60) +#pragma charmap (0xE1, 0x61) +#pragma charmap (0xE2, 0x62) +#pragma charmap (0xE3, 0x63) +#pragma charmap (0xE4, 0x64) +#pragma charmap (0xE5, 0x65) +#pragma charmap (0xE6, 0x66) +#pragma charmap (0xE7, 0x67) +#pragma charmap (0xE8, 0x68) +#pragma charmap (0xE9, 0x69) +#pragma charmap (0xEA, 0x6A) +#pragma charmap (0xEB, 0x6B) +#pragma charmap (0xEC, 0x6C) +#pragma charmap (0xED, 0x6D) +#pragma charmap (0xEE, 0x6E) +#pragma charmap (0xEF, 0x6F) +#pragma charmap (0xF0, 0x70) +#pragma charmap (0xF1, 0x71) +#pragma charmap (0xF2, 0x72) +#pragma charmap (0xF3, 0x73) +#pragma charmap (0xF4, 0x74) +#pragma charmap (0xF5, 0x75) +#pragma charmap (0xF6, 0x76) +#pragma charmap (0xF7, 0x77) +#pragma charmap (0xF8, 0x78) +#pragma charmap (0xF9, 0x79) +#pragma charmap (0xFA, 0x7A) +#pragma charmap (0xFB, 0x7B) +#pragma charmap (0xFC, 0x7C) +#pragma charmap (0xFD, 0x7D) +#pragma charmap (0xFE, 0x7E) +#pragma charmap (0xFF, 0x7F) + +#pragma warn (remap-zero, pop) /*****************************************************************************/ /* */ /* em-kernel.h */ @@ -10279,6 +14217,7 @@ typedef struct { /* Driver header */ char id[3]; /* Contains 0x65, 0x6d, 0x64 ("emd") */ unsigned char version; /* Interface version */ + void* libreference; /* Library reference */ /* Jump vectors. Note that these are not C callable */ void* install; /* INSTALL routine */ @@ -10301,867 +14240,6 @@ 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 */ -/* Rmerstrae 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 @@ -11171,9 +14249,7 @@ typedef void dlgBoxStr; #ifndef _GSYM_H #define _GSYM_H -#ifndef _GSTRUCT_H #include -#endif #define r0 (*(unsigned*)(R_BASE + 0x00)) #define r0L (*(char*)(R_BASE + 0x00)) @@ -11503,161 +14579,6 @@ typedef void dlgBoxStr; #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 @@ -11787,8 +14708,8 @@ struct VLIR_info { /* VLIR information */ }; 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} */ + unsigned pointer; /* (like: struct process proctab[2]= ... */ + unsigned jiffies; /* last entry MUST BE {0,0} */ }; struct iconpic { /* icon/encoded bitmap description */ @@ -11796,7 +14717,7 @@ struct iconpic { /* icon/encoded bitmap description */ char x; /* position in cards (*8 pixels) */ char y; char width; /* in cards */ - char heigth; /* in lines (pixels) */ + char height; /* in lines (pixels) */ }; struct icondef { /* icon definition for DoIcons */ @@ -11804,7 +14725,7 @@ struct icondef { /* icon definition for DoIcons */ char x; /* position in cards (*8 pixels) */ char y; char width; /* of icon (in cards) */ - char heigth; /* of icon in lines (pixels) */ + char height; /* of icon in lines (pixels) */ unsigned proc_ptr; /* pointer to function handling that icon */ }; @@ -11832,6 +14753,181 @@ struct inittab { /* use struct inittab mytab[n] for initram char values[]; /* actual string of bytes */ }; +#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 functions from disk driver + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GDISK_H +#define _GDISK_H + +#include + +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 system functions @@ -11866,9 +14962,13 @@ char get_ostype(void); #define GEOS4 0x04 /* plus4 geos is not or'ed with version */ #define GEOS128 0x80 /* version flags */ +#define MEGAPATCH3 0x03 +#define GATEWAY 0x08 #define GEOS_V10 0x10 #define GEOS_V11 0x11 -#define GEOS_V12 0x12 /* ??? not sure */ +#define GEOS_V12 0x12 +#define GEOS_V13 0x13 +#define GEOS_V15 0x15 #define GEOS_V20 0x20 #define WHEELS 0x40 /* only Wheels? */ @@ -11883,6 +14983,985 @@ char get_tv(void); #define TV_NTSC 0x80 #endif +/* + GEOS menu and icon functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GMENU_H +#define _GMENU_H + +#include + +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 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 memory and string functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GMEMORY_H +#define _GMEMORY_H + +#include + +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 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 filesystem functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GFILE_H +#define _GFILE_H + +#include + +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 graphic (non icon/menu/sprite) functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GGRAPH_H +#define _GGRAPH_H + +#include + +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(const void *myGfxString); + +#ifdef __GEOS_CBM__ +void SetNewMode(void); +#endif + +/* 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 processes (~multitasking) functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GPROCESS_H +#define _GPROCESS_H + +#include + +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 +/*****************************************************************************/ +/* */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* 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-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 + + + +/*****************************************************************************/ +/* */ +/* mouse-kernel.h */ +/* */ +/* Internally used mouse functions */ +/* */ +/* */ +/* */ +/* (C) 2003-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 _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 + + + +/*****************************************************************************/ +/* */ +/* 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 */ + void* libreference; /* Library reference */ + + /* 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 */ + +} 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 +/*****************************************************************************/ +/* */ +/* types.h */ +/* */ +/* Primitive system data types for cc65 */ +/* */ +/* */ +/* */ +/* (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 _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 + + + /*****************************************************************************/ /* */ /* utsname.h */ @@ -11982,14 +16061,14 @@ int __fastcall__ uname (struct utsname* buf); /*****************************************************************************/ /* */ -/* types.h */ +/* stat.h */ /* */ -/* Primitive system data types for cc65 */ +/* Constants for the mode argument of open and creat */ /* */ /* */ /* */ /* (C) 2003 Ullrich von Bassewitz */ -/* Rmerstrasse 52 */ +/* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ @@ -12015,8 +16094,8 @@ int __fastcall__ uname (struct utsname* buf); -#ifndef _TYPES_H -#define _TYPES_H +#ifndef _STAT_H +#define _STAT_H @@ -12026,11 +16105,8 @@ int __fastcall__ uname (struct utsname* buf); -/* off_t is also defined in unistd.h */ -#ifndef _HAVE_off_t -#define _HAVE_off_t -typedef long int off_t; -#endif +#define S_IREAD 0x01 +#define S_IWRITE 0x02 @@ -12040,113 +16116,1371 @@ typedef long int off_t; -/* End of types.h */ +/* End of stat.h */ #endif +;**************************************************************************** +;* * +;* 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. * +;* * +;**************************************************************************** -/*****************************************************************************/ -/* */ -/* 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. */ -/* */ -/*****************************************************************************/ +;------------------------------------------------------------------------------ +; 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 + +; +; C128 generic definitions. Stolen from Elite128 +; + + +; --------------------------------------------------------------------------- +; Zero page, Commodore stuff + +TXTPTR := $3D ; Pointer into BASIC source code +STATUS := $90 ; Kernal I/O completion status +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 (bit 7: 80 columns) +GRAPHM := $D8 ; Graphics mode flags (bits 5-7) +CHARDIS := $D9 ; Bit 2 shadow for location $01 +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 := $0200 ; Location of command-line +BASIC_BUF_LEN = 162 ; Maximum length of command-line + +FETCH := $02A2 ; Fetch subroutine in RAM +FETVEC := $02AA ; Vector patch location for FETCH +STASH := $02AF ; Stash routine in RAM +STAVEC := $02B9 ; Vector patch location for STASH +IRQInd := $02FD ; JMP $0000 -- used as indirect IRQ vector +PALFLAG := $0A03 ; $FF=PAL, $00=NTSC +INIT_STATUS := $0A04 ; Flags: Reset/Restore initiation status +VM2 := $0A2D ; VIC-IIe shadow for $D018 -- graphics mode +FKEY_LEN := $1000 ; Function key lengths +FKEY_TEXT := $100A ; Function key texts + +KBDREPEAT := $028a +KBDREPEATRATE := $028b +KBDREPEATDELAY := $028c + +; --------------------------------------------------------------------------- +; 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 ; register address port +VDC_DATA := $D601 ; data port + +; Registers +VDC_DATA_HI = 18 ; video RAM address (big endian) +VDC_DATA_LO = 19 +VDC_CSET = 28 +VDC_RAM_RW = 31 ; RAM port + +; --------------------------------------------------------------------------- +; I/O: Complex Interface Adapters + +CIA1 := $DC00 +CIA1_PRA := $DC00 ; Port A +CIA1_PRB := $DC01 ; Port B +CIA1_DDRA := $DC02 ; Data direction register for port A +CIA1_DDRB := $DC03 ; Data direction register for port B +CIA1_TA := $DC04 ; 16-bit timer A +CIA1_TB := $DC06 ; 16-bit timer B +CIA1_TOD10 := $DC08 ; Time-of-day tenths of a second +CIA1_TODSEC := $DC09 ; Time-of-day seconds +CIA1_TODMIN := $DC0A ; Time-of-day minutes +CIA1_TODHR := $DC0B ; Time-of-day hours +CIA1_SDR := $DC0C ; Serial data register +CIA1_ICR := $DC0D ; Interrupt control register +CIA1_CRA := $DC0E ; Control register for timer A +CIA1_CRB := $DC0F ; Control register for timer B + +CIA2 := $DD00 +CIA2_PRA := $DD00 +CIA2_PRB := $DD01 +CIA2_DDRA := $DD02 +CIA2_DDRB := $DD03 +CIA2_TA := $DD04 +CIA2_TB := $DD06 +CIA2_TOD10 := $DD08 +CIA2_TODSEC := $DD09 +CIA2_TODMIN := $DD0A +CIA2_TODHR := $DD0B +CIA2_SDR := $DD0C +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 +; Atari 2600 TIA read / write registers +; +; Source: DASM - vcs.h +; Details available in: Stella Programmer's Guide by Steve Wright +; +; Florent Flament (contact@florentflament.com), 2017 + +; Read registers +VSYNC := $00 +VBLANK := $01 +WSYNC := $02 +RSYNC := $03 +NUSIZ0 := $04 +NUSIZ1 := $05 +COLUP0 := $06 +COLUP1 := $07 +COLUPF := $08 +COLUBK := $09 +CTRLPF := $0A +REFP0 := $0B +REFP1 := $0C +PF0 := $0D +PF1 := $0E +PF2 := $0F +RESP0 := $10 +RESP1 := $11 +RESM0 := $12 +RESM1 := $13 +RESBL := $14 +AUDC0 := $15 +AUDC1 := $16 +AUDF0 := $17 +AUDF1 := $18 +AUDV0 := $19 +AUDV1 := $1A +GRP0 := $1B +GRP1 := $1C +ENAM0 := $1D +ENAM1 := $1E +ENABL := $1F +HMP0 := $20 +HMP1 := $21 +HMM0 := $22 +HMM1 := $23 +HMBL := $24 +VDELP0 := $25 +VDELP1 := $26 +VDELBL := $27 +RESMP0 := $28 +RESMP1 := $29 +HMOVE := $2A +HMCLR := $2B +CXCLR := $2C + +; Write registers +CXM0P := $00 +CXM1P := $01 +CXP0FB := $02 +CXP1FB := $03 +CXM0FB := $04 +CXM1FB := $05 +CXBLPF := $06 +CXPPMM := $07 +INPT0 := $08 +INPT1 := $09 +INPT2 := $0A +INPT3 := $0B +INPT4 := $0C +INPT5 := $0D +; +; _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 +; +; 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 + +; 80-Column CBMs +KBDREPEAT80 := $E4 +KBDRPTRATE80 := $E5 +KBDRPTDELAY80 := $E6 + +BASIC_BUF := $200 ; Location of command-line +BASIC_BUF_LEN = 81 ; Maximum length of command-line + +KEY_BUF := $26F ; Keyboard buffer + +; 40-Column PETs/CBMs +KBDRPTDELAY40 := $3E9 +KBDRPTRATE40 := $3EA +KBDREPEAT40 := $3EE +KBDREPEAT40B := $3F8 + +;---------------------------------------------------------------------------- +; 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 base address +VIA_PB := VIA+$0 ; Port register B +VIA_PA1 := VIA+$1 ; Port register A +VIA_PRB := VIA+$0 ; *** Deprecated *** +VIA_PRA := VIA+$1 ; *** Deprecated *** +VIA_DDRB := VIA+$2 ; Data direction register B +VIA_DDRA := VIA+$3 ; Data direction register A +VIA_T1CL := VIA+$4 ; Timer 1, low byte +VIA_T1CH := VIA+$5 ; Timer 1, high byte +VIA_T1LL := VIA+$6 ; Timer 1 latch, low byte +VIA_T1LH := VIA+$7 ; Timer 1 latch, high byte +VIA_T2CL := VIA+$8 ; Timer 2, low byte +VIA_T2CH := VIA+$9 ; Timer 2, high byte +VIA_SR := VIA+$A ; Shift register +VIA_CR := VIA+$B ; Auxiliary control register +VIA_PCR := VIA+$C ; Peripheral control register +VIA_IFR := VIA+$D ; Interrupt flag register +VIA_IER := VIA+$E ; Interrupt enable register +VIA_PA2 := VIA+$F ; Port register A w/o handshake +; opcodes.inc +; ca65 6502 - opcode definitions, mainly for self modifying code +; +; Christian Krger, 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_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 + +.if (.cpu .bitand ::CPU_ISET_6502DTV) + +OPC_BRA = $12 +OPC_SAC_imm = $32 +OPC_SIR_imm = $42 + +.endif + +.endif +;*****************************************************************************/ +;* */ +;* stdio.inc */ +;* */ +;* Mirror definitions for stdio.h */ +;* */ +;* */ +;* */ +;* (C) 2003-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 _JOY_KERNEL_H -#define _JOY_KERNEL_H +;---------------------------------------------------------------------------- +; Constants + +_IOFBF = 0 +_IOLBF = 1 +_IONBF = 2 +BUFSIZ = 256 +EOF = -1 +.if .defined(__APPLE2__) +FILENAME_MAX = 64+1 +.elseif .defined(__ATARI__) +FILENAME_MAX = 63+1 +.elseif .defined(__CBM__) +FILENAME_MAX = 255 +.elseif .defined(__LUNIX__) +FILENAME_MAX = 80+1 +.elseif .defined(__TELESTRAT__) +FILENAME_MAX = 50+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 -/*****************************************************************************/ -/* Data */ -/*****************************************************************************/ +;*****************************************************************************/ +;* */ +;* 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. */ +;* */ +;*****************************************************************************/ -/* A structure that describes the header of a joystick driver loaded into -** memory. -*/ -typedef struct { +;------------------------------------------------------------------------------ +; Vectorfont constants - /* Driver header */ - char id[3]; /* Contains 0x6a, 0x6f, 0x79 ("joy") */ - unsigned char version; /* Interface version */ +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) - /* Bitmasks for the joystick states. See joystick.h for indices */ - unsigned char masks[8]; +;------------------------------------------------------------------------------ +; TCH file header and font data structures - /* 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 */ +; TCH file header +.struct TGI_VF_HDR + MAGIC .byte 3 ; "TCH" + VERSION .byte 1 ; Version number + SIZE .word 1 ; Font data size +.endstruct -} joy_drv_header; +; 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 -/* JOY kernel variables */ -extern joy_drv_header* joy_drv; /* Pointer to driver */ +; +; 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 + +;------------------------------------------------------------------------- +; 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 + +;------------------------------------------------------------------------- +; CONIO CHARACTER DEFS +;------------------------------------------------------------------------- + +CH_ULCORNER = $0B ; '+' sign +CH_URCORNER = $0B +CH_LLCORNER = $0B +CH_LRCORNER = $0B +CH_HLINE = $0D ; dash +CH_VLINE = $01 ; exclamation mark + +;------------------------------------------------------------------------- +; 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 -/*****************************************************************************/ -/* Code */ -/*****************************************************************************/ +;------------------------------------------------------------------------- +; CTIA/GTIA Address Equates +;------------------------------------------------------------------------- +GTIA = $C000 ; CTIA/GTIA area +.include "atari_gtia.inc" +;------------------------------------------------------------------------- +; ANTIC Address Equates +;------------------------------------------------------------------------- -void joy_clear_ptr (void); -/* Clear the joy_drv pointer */ +ANTIC = $D400 ; ANTIC area +.include "atari_antic.inc" +;------------------------------------------------------------------------- +; POKEY Address Equates +;------------------------------------------------------------------------- +POKEY = $E800 ; POKEY area +.include "atari_pokey.inc" -/* End of joy-kernel.h */ -#endif +;------------------------------------------------------------------------- +; conio color defines +;------------------------------------------------------------------------- +COLOR_WHITE = 0 +COLOR_RED = 1 +COLOR_GREEN = 2 +COLOR_BLACK = 3 +;------------------------------------------------------------------------- +; 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 ;/*****************************************************************************/ ;/* */ -;/* time.inc */ +;/* signal.inc */ ;/* */ -;/* Date and time */ +;/* Signal handling definitions */ ;/* */ ;/* */ ;/* */ -;/* (C) 2009 Ullrich von Bassewitz */ -;/* Roemerstrasse 52 */ -;/* D-70794 Filderstadt */ -;/* EMail: uz@cc65.org */ +;/* (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 */ @@ -12170,30 +17504,1717 @@ void joy_clear_ptr (void); -;------------------------------------------------------------------------------ -; Struct tm - must match the struct defined in time.h +; Standard signal handling functions +SIG_ERR = $0000 -.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 +; 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 + + +; +; Accelerator definitions. +; + +; --------------------------------------------------------------------------- +; Speed definitions for all accelerator, to be used as input for the 'set' +; functions. + + +SPEED_SLOW = $00 +SPEED_FAST = $FF + +SPEED_1X = SPEED_SLOW +SPEED_2X = 2 - 1 +SPEED_3X = 3 - 1 +SPEED_4X = 4 - 1 +SPEED_5X = 5 - 1 +SPEED_6X = 6 - 1 +SPEED_7X = 7 - 1 +SPEED_8X = 8 - 1 +SPEED_10X = 10 - 1 +SPEED_12X = 12 - 1 +SPEED_16X = 16 - 1 +SPEED_20X = 20 - 1 + + +; --------------------------------------------------------------------------- +; C64/C128 Super CPU cartridge + +SuperCPU_Slow := $D07A +SuperCPU_Fast := $D07B +SuperCPU_Speed_Mode := $D0B8 +SuperCPU_Detect := $D0BC + + +; --------------------------------------------------------------------------- +; C64DTV + +C64DTV_Extended_Regs := $D03F + +C64DTV_Slow = $00 +C64DTV_Fast = $03 + + +; --------------------------------------------------------------------------- +; C128 native and C128 in C64 mode + +C128_VICIIE_CLK := $D030 + + +; --------------------------------------------------------------------------- +; C64 Chameleon cartridge + +CHAMELEON_CFGTUR := $D0F3 +CHAMELEON_CFGENA := $D0FE + +CHAMELEON_ENABLE_REGS = $2A +CHAMELEON_DISABLE_REGS = $FF + +CHAMELEON_CFGTUR_LIMIT_1MHZ = %00001100 +CHAMELEON_CFGTUR_LIMIT_NONE = %10000000 + + +; --------------------------------------------------------------------------- +; C65/C64DX in C64 mode + +C65_VICIII_KEY := $D02F +C65_VICIII_CTRL_B := $D031 + +C65_VICIII_UNLOCK_1 = $A5 +C65_VICIII_UNLOCK_2 = $96 + + +; --------------------------------------------------------------------------- +; C64 Turbo Master cartridge + +TURBOMASTER_DETECT := $BF53 + +TURBOMASTER_SPEED_REG := $00 + +; ctype.inc +; +; This file is part of +; cc65 - a freeware C compiler for 6502 based systems +; +; https://cc65.github.io +; +; See "LICENSE" file for legal information. +; +; Definitions for the character type tables +; +; Ullrich von Bassewitz, 08.09.2001 +; + +; Define bitmapped constants for the table entries + +CT_NONE = %00000000 ; Nothing special +CT_LOWER = %00000001 ; 0 - Lower case char +CT_UPPER = %00000010 ; 1 - Upper case char +CT_DIGIT = %00000100 ; 2 - Numeric digit +CT_XDIGIT = %00001000 ; 3 - Hex digit (both, lower and upper) +CT_CTRL = %00010000 ; 4 - Control character +CT_SPACE = %00100000 ; 5 - The space character itself +CT_OTHER_WS = %01000000 ; 6 - Other whitespace ('\f', '\n', '\r', '\t' and '\v') +CT_SPACE_TAB = %10000000 ; 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) +;*****************************************************************************/ +;* */ +;* 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 + .endstruct +.endstruct + +;------------------------------------------------------------------------------ +; The TGI API version, stored at TGI_HDR_VERSION + +TGI_API_VERSION = $06 + +;------------------------------------------------------------------------------ +; 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 +; +; CX16 r38 definitions +; + +; --------------------------------------------------------------------------- +; Constants + +.enum COLOR + BLACK = $00 + WHITE + RED + CYAN + VIOLET + PURPLE = VIOLET + GREEN + BLUE + YELLOW + ORANGE + BROWN + PINK + LIGHTRED = PINK + GRAY1 + GRAY2 + LIGHTGREEN + LIGHTBLUE + GRAY3 +.endenum + +; Special characters +.enum CH +COLOR_SWAP = $01 +STOP = $03 +UNDERLINE +WHITE +BOLD +BELL +BACKSPACE +TAB +LINEFEED +ITALIC +OUTLINE +ENTER +FONT_LOWER +FONT_ISO +F9 +CURS_DOWN +REVERSE +HOME +DEL +F10 +F11 +F12 +SHIFT_TAB +RED = $1C +CURS_RIGHT +GREEN +BLUE +LIRA = $5C +ORANGE = $81 +RUN = $83 +HELP +F1 +F3 +F5 +F7 +F2 +F4 +F6 +F8 +SHIFT_ENTER +FONT_UPPER +FONT_PET +BLACK +CURS_UP +ATTR_CLEAR +SCRN_CLEAR +INS +BROWN +PINK +LIGHTRED = PINK +GRAY1 +GRAY2 +LIGHTGREEN +LIGHTBLUE +GRAY3 +PURPLE +VIOLET = PURPLE +CURS_LEFT +YELLOW +CYAN +SHIFT_SPACE +LTEE = $AB +LLCORNER = $AD +URCORNER +ULCORNER = $B0 +BTEE +TTEE +RTEE +LRCORNER = $BD +HLINE = $C0 +CROSS = $DB +VLINE = $DD +PI +.endenum + +; --------------------------------------------------------------------------- +; Zero page + +; GEOS and graphics pseudo-registers +.struct gREG + .org $02 + .union + r0 .word + .struct + r0L .byte + r0H .byte + .endstruct + .endunion + .union + r1 .word + .struct + r1L .byte + r1H .byte + .endstruct + .endunion + .union + r2 .word + .struct + r2L .byte + r2H .byte + .endstruct + .endunion + .union + r3 .word + .struct + r3L .byte + r3H .byte + .endstruct + .endunion + .union + r4 .word + .struct + r4L .byte + r4H .byte + .endstruct + .endunion + .union + r5 .word + .struct + r5L .byte + r5H .byte + .endstruct + .endunion + .union + r6 .word + .struct + r6L .byte + r6H .byte + .endstruct + .endunion + .union + r7 .word + .struct + r7L .byte + r7H .byte + .endstruct + .endunion + .union + r8 .word + .struct + r8L .byte + r8H .byte + .endstruct + .endunion + .union + r9 .word + .struct + r9L .byte + r9H .byte + .endstruct + .endunion + .union + r10 .word + .struct + r10L .byte + r10H .byte + .endstruct + .endunion + .union + r11 .word + .struct + r11L .byte + r11H .byte + .endstruct + .endunion + .union + r12 .word + .struct + r12L .byte + r12H .byte + .endstruct + .endunion + .union + r13 .word + .struct + r13L .byte + r13H .byte + .endstruct + .endunion + .union + r14 .word + .struct + r14L .byte + r14H .byte + .endstruct + .endunion + .union + r15 .word + .struct + r15L .byte + r15H .byte + .endstruct + .endunion +.endstruct + +; Kernal +KTEMP2 := $80 ; 2 bytes for temporary storage +IMPARM := $82 ; Pointer for PRIMM function +FNAM := $8C ; Pointer to filename + +; BASIC +TXTPTR := $EE ; Pointer into BASIC source code + +; Page two + +BASIC_BUF := $0200 ; Location of command-line +BASIC_BUF_LEN = 81 ; Maximum length of command-line + +SCREEN_MODE := $0261 ; Current screen mode (set by SCREEN_SET_MODE) +SCREEN_PTR := $0262 ; Pointer to current row on text screen (16 bits) +STATUS := $0286 ; Status from previous I/O operation +IN_DEV := $028A ; Current input device number +OUT_DEV := $028B ; Current output device number +FNAM_LEN := $028E ; Length of filename +SECADR := $0290 ; Secondary address +DEVNUM := $0291 ; Device number +CURS_COLOR := $0373 ; Color under the cursor +CHARCOLOR := $0376 ; Cursor's color nybbles (high: background, low: foreground) +RVS := $0377 ; Reverse flag +CURS_FLAG := $037B ; 1 = cursor off +CURS_BLINK := $037C ; Blink counter +CURS_CHAR := $037D ; Character under the cursor +CURS_STATE := $037E ; Cursor blink state +CURS_X := $0380 ; Cursor column +CURS_Y := $0383 ; Cursor row +LLEN := $0386 ; Line length +NLINES := $0387 ; Number of screen lines + +; BASIC +VARTAB := $03E2 ; Pointer to start of BASIC variables +MEMSIZE := $03EA ; Pointer to highest BASIC RAM location (+1) + +; --------------------------------------------------------------------------- +; Vector and other locations + +IRQVec := $0314 +BRKVec := $0316 +NMIVec := $0318 + +; --------------------------------------------------------------------------- +; I/O locations + +; Video Enhanced Retro Adapter +; Has audio and SPI. +.scope VERA + + ; External registers + + .struct + .org $9F20 + ADDR .faraddr ; Address for data port access + DATA0 .byte ; First data port + DATA1 .byte ; Second data port + CTRL .byte ; Control register + IRQ_EN .byte ; Interrupt enable bits + IRQ_FLAGS .byte ; Interrupt flags + IRQ_RASTER .byte ; Line where IRQ will occur + .endstruct + .enum ; Address automatic increment amounts + DEC0 = (($00 << 1) | $01) << 3 + DEC1 = (($01 << 1) | $01) << 3 + DEC2 = (($02 << 1) | $01) << 3 + DEC4 = (($03 << 1) | $01) << 3 + DEC8 = (($04 << 1) | $01) << 3 + DEC16 = (($05 << 1) | $01) << 3 + DEC32 = (($06 << 1) | $01) << 3 + DEC64 = (($07 << 1) | $01) << 3 + DEC128 = (($08 << 1) | $01) << 3 + DEC256 = (($09 << 1) | $01) << 3 + DEC512 = (($0A << 1) | $01) << 3 + DEC40 = (($0B << 1) | $01) << 3 + DEC80 = (($0C << 1) | $01) << 3 + DEC160 = (($0D << 1) | $01) << 3 + DEC320 = (($0E << 1) | $01) << 3 + DEC640 = (($0F << 1) | $01) << 3 + INC0 = (($00 << 1) | $00) << 3 + INC1 = (($01 << 1) | $00) << 3 + INC2 = (($02 << 1) | $00) << 3 + INC4 = (($03 << 1) | $00) << 3 + INC8 = (($04 << 1) | $00) << 3 + INC16 = (($05 << 1) | $00) << 3 + INC32 = (($06 << 1) | $00) << 3 + INC64 = (($07 << 1) | $00) << 3 + INC128 = (($08 << 1) | $00) << 3 + INC256 = (($09 << 1) | $00) << 3 + INC512 = (($0A << 1) | $00) << 3 + INC40 = (($0B << 1) | $00) << 3 + INC80 = (($0C << 1) | $00) << 3 + INC160 = (($0D << 1) | $00) << 3 + INC320 = (($0E << 1) | $00) << 3 + INC640 = (($0F << 1) | $00) << 3 + .endenum + .enum ; Interrupt request flags + VERT_SYNC = %00000001 + RASTER_IRQ = %00000010 + SPR_COLLIDED = %00000100 + AUDIO_LOW = %00001000 + .endenum + .scope DISP ; Display controller + SELECT1 = %00000010 + .union + .org $9F29 + .struct + ; These four registers are visible when the DCSEL flag = %0 + VIDEO .byte + HSCALE .byte + VSCALE .byte + FRAME .byte + .endstruct + .struct + ; These four registers are visible when the DCSEL flag = %1 + HSTART .byte + HSTOP .byte + VSTART .byte + VSTOP .byte + .endstruct + .endunion + .enum MODE ; Output mode + DISABLE = $00 + VGA + NTSC + RGB ; Interlaced, composite sync + .endenum + .enum DISABLE + COLOR = %00000100 ; NTSC monochrome + .endenum + .enum ENABLE + LAYER0 = %00010000 + LAYER1 = %00100000 + SPRITES = %01000000 + .endenum + .endscope + .struct L0 ; Display layer 0 + .org $9F2D + CONFIG .byte + MAP_BASE .byte + TILE_BASE .byte + HSCROLL .word + VSCROLL .word + .endstruct + .struct L1 ; Display layer 1 + .org $9F34 + CONFIG .byte + MAP_BASE .byte + TILE_BASE .byte + HSCROLL .word + VSCROLL .word + .endstruct + .enum ; Layer display modes + TILE1BPP = %00000000 | $00 + TILE2BPP + TILE4BPP + TILE8BPP + T256C = %00001000 + BITMAP1BPP = %00000100 | $00 + BITMAP2BPP + BITMAP4BPP + BITMAP8BPP + .endenum + .enum MAP ; Map geometry + WIDTH32 = $00 << 4 + WIDTH64 = $01 << 4 + WIDTH128 = $02 << 4 + WIDTH256 = $03 << 4 + HEIGHT32 = $00 << 6 + HEIGHT64 = $01 << 6 + HEIGHT128 = $02 << 6 + HEIGHT256 = $03 << 6 + .endenum + .enum TILE ; Tile geometry + WIDTH8 = $00 + WIDTH16 = $01 + WIDTH320 = WIDTH8 + WIDTH640 = WIDTH16 + HEIGHT8 = $00 << 1 + HEIGHT16 = $01 << 1 + .endenum + .scope PCM ; Pulse-Code Modulator + .struct + .org $9F3B + CTRL .byte + RATE .byte + DATA .byte + .endstruct + .enum + STEREO = %00010000 + BITS16 = %00100000 + RESET = %10000000 + .endenum + .endscope + .scope SPI + .struct + .org $9F3E + DATA .byte + CTRL .byte + .endstruct + .enum + SELECT = %00000001 + SLOW = %00000010 + .endenum + .endscope + + ; Internal RAM and registers + + .struct + .org $000000 + VRAM .res $020000 ; 128 Kibibytes + .endstruct + .scope PSG ; Programmable Sound Generator + .struct + PITCH .word + VOL .byte ; Right, left sides; volume + WAVEFORM .byte ; Wave shape, pulse width + .endstruct + LEFT = %01 << 6 + RIGHT = %10 << 6 + .enum + PULSE = $00 << 6 + SAWTOOTH = $01 << 6 + TRIANGLE = $02 << 6 + NOISE = $03 << 6 + .endenum + .struct + .org $01F9C0 + VOICES .res $10 * 4 + .endstruct + .endscope + .struct + .org $01FA00 + PALETTE .word $0100 + .endstruct + .scope SPRITE + .struct ; Sprite attributes + ADDR .addr ; Address and color mode + XX .word ; Co-ordinates + YY .word + Z_FLIP .byte ; Collision mask, Z-depth, flip bits + SIZE_PAL .byte + .endstruct + .enum FLIP + NONE = %00000000 + HORIZ + VERT + BOTH + .endenum + .enum DEPTH + DISABLE = $00 << 2 + CANVAS = $01 << 2 + LAYER0 = $02 << 2 + LAYER1 = $03 << 2 + .endenum + .enum ; Sprite geometry + WIDTH8 = $00 << 4 + WIDTH16 = $01 << 4 + WIDTH32 = $02 << 4 + WIDTH64 = $03 << 4 + HEIGHT8 = $00 << 6 + HEIGHT16 = $01 << 6 + HEIGHT32 = $02 << 6 + HEIGHT64 = $03 << 6 + COLORS16 = $00 << 7 + COLORS256 = $01 << 7 + .endenum + .endscope + .struct + .org $01FC00 + SPRITES .res 128 * 8 + .endstruct +.endscope + +; 65C22 +.struct VIA1 ; Versatile Interface Adapter + .org $9F60 + PRB .byte ; ROM bank, IEC (Port Register B) + PRA .byte ; RAM bank (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 ; RAM bank (Port Register A without handshaking) +.endstruct + +; 65C22 +.struct VIA2 + .org $9F70 + PRB .byte ; Mouse communication ? + PRA .byte ; NES controller communication + DDRB .byte + DDRA .byte + T1 .word + T1L .word + T2 .word + SR .byte + ACR .byte + PCR .byte + IFR .byte + IER .byte + PRA2 .byte +.endstruct + +; Real-Time Clock + +; X16 Emulator device +; This device doesn't exist on the real machine. +.struct EMULATOR + .org $9FB0 + DEBUG .byte ; Boolean: debugging enabled + VERALOG .byte ; Boolean: log VERA activity + KEYBOARDLOG .byte ; Boolean: log keyboard data + ECHO .byte ; Type of echo that's enabled + SAVEXIT .byte ; Boolean: save machine state on exit + GIFREC .byte ; Method of recording GIF movie + .res 2 + CYCLECOUNT .dword ; Running count of CPU cycles (Read-Only) + .res 1 + KEYMAP .byte ; Current keyboard layout number (Read-Only) + DETECT .byte 2 ; If is "16" string, then running on emulator (RO) +.endstruct + +; --------------------------------------------------------------------------- +; Banked RAM and ROM + +KEY_COUNT := $A00A ; (bank 0) Number of keys in input buffer +TIMER := $A037 ; (bank 0) 60 Hz. timer (3 bytes, big-endian) + +.struct BANK + .org $A000 + RAM .res $2000 ; 8 Kibibyte window into 512 Kibibytes or 2048 Kibibytes + ROM .res $4000 ; 16 Kibibyte window into 128 Kibibytes +.endstruct +; +; Oric TELEMON definition +; TELEMON 2.4 & TELEMON 3.x +; For TELEMON 3.x check http://orix.oric.org +; + +; --------------------------------------------------------------------------- +; Constants + +SCREEN_XSIZE = 40 ; Screen columns +SCREEN_YSIZE = 28 ; Screen rows + +FUNCTKEY = $A5 + +FNAME_LEN = 11 ; Maximum length of file-name + +; --------------------------------------------------------------------------- +; I/O Identifier +; Theses identifers are used for channel management +; + +XKBD = $80 ; Keyboard +XRSE = $83 ; RS232 in +XSCR = $88 ; Screen +XRSS = $90 ; RS232 out + +; --------------------------------------------------------------------------- +; Zero page + +; --------------------------------------------------------------------------- +; Page 00 +RES := $00 +RESB := $02 + +DECDEB := $04 +DECFIN := $06 +DECCIB := $08 +DECTRV := $0A + +TR0 := $0C +TR1 := $0D +TR2 := $0E +TR3 := $0F +TR4 := $10 +TR5 := $11 +TR6 := $12 +TR7 := $13 + +DEFAFF := $14 + +IRQSVA := $21 ; Used to save A when a BRK call occurs +IRQSVX := $22 ; Used to save X when a BRK call occurs +IRQSVY := $23 ; Used to save Y when a BRK call occurs +IRQSVP := $24 ; Used to save P when a BRK call occurs + +ADSCR := $26 +SCRNB := $28 ; Id of the current window + +ADKBD := $2A ; Address ASCII conversion table + + +PTR_READ_DEST := $2C ; Used for XFREAD and XWRITE only in TELEMON 3.x + +ADCLK := $40 ; Address for clock display +TIMEUS := $42 +TIMEUD := $44 ; Counter clock (1/10 of a second) + + +HRSX := $46 +HRSY := $47 + +XLPRBI := $48 ; Printer flag (b7) + +HRSX40 := $49 +HRSX6 := $4A + +ADHRS := $4B ; Hires screen address (word) + +HRS1 := $4D +HRS2 := $4F +HRS3 := $51 +HRS4 := $53 +HRS5 := $55 + +HRSFB := $57 + +VABKP1 := $58 + +; RS232T +; b0-b3 : speed +; 1111 => 19200 bps (please note that telestrat can't handle this speed without stopping all IRQ except ACIA's one) +; 1100 => 9600 bps (default from TELEMON) +; 1110 => 4800 bps +; 1010 => 2400 bps +; 1000 => 1200 bps +; 0111 => 600 bps +; 0110 => 300 bps +; 0101 => 150 bps +; 0010 => 75 bps + +; b4 : 0 external clock, 1 internal clock +; b6-b5 : 00 8 bits +; 01 7 bits +; 10 6 bits +; 11 5 bits +; b7 : 0 a stop + +RS232T := $59 + +; RS232C +; b0-b3 : 0 +; b4 : 1 if echo +; b5 : 1 if parity +; b7-b6 : 00 in/out parity odd +; : 01 on/out parity even +; : 10 parity sent, answer not tested +; : 11 SPACE SENT, reception not tested + +RS232C := $5A +INDRS := $5B + +; Float and integer management +ACC1E := $60 +ACC1M := $61 +ACC1S := $65 +ACC1EX := $66 +ACC1J := $67 +ACC2E := $68 +ACC2M := $69 +ACC2S := $6D +ACCPS := $6E +ACC3 := $6F + +ACC4E := $73 +ACC4M := $74 + + +FLDT0 := $74 +FLDT1 := $75 +FLDT2 := $76 +FLSVY := $77 +FLTR0 := $7D +FLTR1 := $7E + +; Menu management +MENDDY := $62 +MENDFY := $63 +MENX := $64 +MENDY := $66 +FLGMEN := $68 +ADMEN := $69 + +FLSGN := $8A +FLINT := $88 +FLSVS := $89 +FLERR := $8B + +VARLNG := $8C +VARAPL := $D0 + +; --------------------------------------------------------------------------- +; Low memory +IRQVec := $02FB ; "fast" interrupt vector + +; --------------------------------------------------------------------------- +; 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 +.struct VIA2 ; Versatile Interface Adapter + .res $0320 +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 + +; TELEMON primitives (2.4 & 3.x) + +; all values are used to call bank 7 of telestrat cardridge. It works with 'brk value' +XOP0 = $00 ; Open device on channel 0 +XOP1 = $01 ; Open device on channel 1 +XOP2 = $02 ; Open device on channel 2 +XOP3 = $03 ; Open device on channel 3 + +XCL0 = $04 ; Close channel 0 +XCL1 = $05 ; Close channel 1 +XCL2 = $06 ; Close channel 2 +XCL3 = $07 ; Close channel 3 + +XRD0 = $08 +XRDW0 = $0C + +XWR0 = $10 ; Write a char in channel 0 +XWR1 = $11 ; Write a char in channel 1 +XWR2 = $12 ; Write a char in channel 2 +XWR3 = $13 ; Write a char in channel 3 + +XWSTR0 = $14 ; Write a string in text mode channel 0 +XWSTR1 = $15 ; Write a string in text mode channel 1 +XWSTR2 = $16 ; Write a string in text mode channel 2 +XWSTR3 = $17 ; Write a string in text mode channel 3 + +XDECAL = $18 + +XTEXT = $19 +XHIRES = $1A +XEFFHI = $1B ; Clear hires screen +XFILLM = $1C +XMINMA = $1F +XVARS = $24 ; Only in TELEMON 3.x, in TELEMON 2.4, it's XNOMFI ($24) +XCRLF = $25 ; Jump a line and return to the beginning of the line +XDECAY = $26 +XFREAD = $27 ; Only in TELEMON 3.x (bank 7 of Orix) +XBINDX = $28 ; Convert a number into hex and displays on channel 0 +XDECIM = $29 +XHEXA = $2A ; Convert a number into hex + +XEDT = $2D ; Launch editor +XINSER = $2E + +XSCELG = $2F ; Search a line in editor mode +XOPEN = $30 ; Only in TELEMON 3.x (bank 7 of Orix) +XECRPR = $33 ; Displays prompt +XCOSCR = $34 ; Switch off cursor +XCSSCR = $35 ; Switch on cursor +XSCRSE = $36 +XSCROH = $37 ; Scroll up text screen +XSCROB = $38 ; Scroll down text screen +XSCRNE = $39 ; Load charset from rom to ram +XCLOSE = $3A ; Only in TELEMON 3.x close file (bank 7 of Orix) +XFWRITE = $3B ; Only in TELEMON 3.x write file (bank 7 of Orix) + +; Clock primitive +XRECLK = $3C ; Reset clock +XCLCL = $3D ; Close clock +XWRCLK = $3E ; Displays clock in the adress in A & Y registers + +; Sound primitives +XSONPS = $40 ; Send data to PSG register (14 values) +XOUPS = $42 ; Send Oups sound into PSG +XPLAY = $43 ; Play a sound +XSOUND = $44 +XMUSIC = $45 +XZAP = $46 ; Send Zap sound to PSG +XSHOOT = $47 + +; Path Management +XGETCWD = $48 ; Get current CWD +XPUTCWD = $49 ; Chdir + +; File management +XMKDIR = $4B ; Create a folder. Only available in TELEMON 3.x (bank 7 of Orix) + +XHCHRS = $4C ; Hard copy hires + +; File management +XRM = $4D ; Remove a folder or a file. Only available in TELEMON 3.x (bank 7 of Orix) + +XFWR = $4E ; Put a char on the first screen. Only available in TELEMON 3.x (bank 7 of Orix) + +; Keyboard primitives +XALLKB = $50 ; Read Keyboard, and populate KBDCOL +XKBDAS = $51 ; Ascii conversion +XGOKBD = $52 ; Swap keyboard type (Qwerty, French ...) + +; Buffer management +XECRBU = $54 ; Write A or AY in the buffer +XLISBU = $55 ; Read A or AY in the buffer +XTSTBU = $56 +XVIDBU = $57 ; Flush the buffer +XINIBU = $58 ; Initialize the buffer X +XDEFBU = $59 ; Reset all value of the buffer +XBUSY = $5A ; Test if the buffer is empty + +XMALLOC = $5B ; Only in TELEMON 3.x (bank 7 of Orix) + +; RS232 primitives +XSDUMP = $5C ; RS232 input dump +XCONSO = $5D ; Swap screen into RS232 terminal +XSLOAD = $5E ; Read a file from RS232 +XSSAVE = $5F ; Write a file to RS232 + +; Minitel primitives +XMLOAD = $60 ; Read a file from Minitel +XMSAVE = $61 ; Write a file to Minitel + +XFREE = $62 ; Only in TELEMON 3.x (bank 7 of Orix) + +; Next Minitel primitives +XWCXFI = $63 ; Wait connection +XLIGNE = $64 ; +XDECON = $65 ; Minitel disconnection +XMOUT = $66 ; Send a byte to minitel (from A) + +XSOUT = $67 ; Send accumulator value (A) to RS232, available in TELEMON 2.4 & 3.x : if RS232 buffer is full, the Oric Telestrat freezes + +XHRSSE = $8C ; Set hires position cursor +XDRAWA = $8D ; Draw a line absolute +XDRAWR = $8E ; Draw a line (relative) +XCIRCL = $8F ; Draw a circle +XCURSE = $90 ; Plot a pixel +XCURMO = $91 ; Move to x,y pos in Hires +XPAPER = $92 +XINK = $93 +XBOX = $94 ; Draw a box +XABOX = $95 +XFILL = $96 +XCHAR = $97 ; Display a char on the screen in Hires +XSCHAR = $98 ; Draw a string in hires +XEXPLO = $9C ; Send Explode sound to PSG +XPING = $9D ; Send Ping sound to PSG + +; --------------------------------------------------------------------------- +; ROM entries variables + +PWD_PTR = $00 + +; --------------------------------------------------------------------------- +; +BUFTRV := $100 + + +; --------------------------------------------------------------------------- +; Page $200 +BNKST := $200 ; Used to store signature of 8 bank (length : 8 bytes) +TABDRV := $208 + +DRVDEF := $20C +FLGTEL := $20D +KOROM := $20E ; Used to compute the size of all rom bank. The result is store here. The value is in KB +KORAM := $20F ; Used to compute the size of all ram bank. The result is store here. The value is in KB +; Time management +TIMED := $210 ; Clock (1/10 of seconds) +TIMES := $211 +TIMEM := $212 +TIMEH := $213 +FLGCLK := $214 +FLGCLK_FLAG := $215 +FLGCUR := $216 ; Cursor management flag +; screens position managements + +FLGCUR_STATE := $217 ; Cursor state flag + +ADSCRL := $218 +ADSCRH := $21C +SCRX := $220 +SCRY := $224 + +SCRDX := $228 +SCRFX := $22C +SCRDY := $230 +SCRFY := $234 +SCRBAL := $238 +SCRBAH := $23C +SCRCT := $240 +SCRCF := $244 +FLGSCR := $248 +CURSCR := $24C + +HARD_COPY_HIRES := $250 ; Hard copy vector + +SCRTXT := $256 +SCRHIR := $25C +SCRTRA := $262 ; 6 bytes lenfth + +; Keyboard management +KBDCOL := $268 ; 8 bytes length +KBDFLG_KEY := $270 ; 0 if no key pressed +KBDVRR := $272 + +KBDVRL := $273 +FLGKBD := $275 +KBDFCT := $276 +KBDSHT := $278 + +KBDKEY := $279 +KBDCTC := $27E +LPRX := $286 +LPRY := $287 +LPRFX := $288 +LPRFY := $289 +FLGLPR := $28A + +; Joysticks management +FLGJCK := $28C +JCGVAL := $28D +JCDVAL := $28E +JCKTAB := $29D + + +HRSPAT := $2AA ; Hires pattern : it's used to draw pattern for a line or a circle +HRSERR := $2AB + +IOTAB0 := $2AE +IOTAB1 := $2B2 +IOTAB2 := $2B6 +IOTAB3 := $2BA +ADIOB := $2BE ; 48 bytes length +FLGRST := $2EE +CSRND := $2EF +VNMI := $2F4 +ADIODB_VECTOR := $2f7 ; 3 bytes length + +IRQVECTOR := $2FA +VAPLIC := $2FD + +; --------------------------------------------------------------------------- +; Page $400 +EXBNK := $40C +VEXBNK := $414 +BNKCIB := $417 + +; --------------------------------------------------------------------------- +; Page $500 + +DRIVE := $500 +ERRNB := $512 +SAVES := $513 +BUFNOM := $517 +VSALO0 := $528 +VSALO1 := $529 +FTYPE := $52C ; File type +DESALO := $52D +FISALO := $52F +EXSALO := $531 +EXTDEF := $55D ; Default extension. At the start of telemon, it's set to ".COM" +BUFEDT := $590 ; Buffer edition + +MAX_BUFEDT_LENGTH=110 + +; --------------------------------------------------------------------------- +; Hardware +CH376_DATA := $340 +CH376_COMMAND := $341 + +; RAM overlays buffer +BUFBUF := $c080 + +; --------------------------------------------------------------------------- +; Stratsed vectors +; Stratsed is the main OS for Telestrat +XMERGE := $FF0E +XFST := $FF11 +XSPUT := $FF14 +XSTAKE := $FF17 +XTAKE := $FF20 +XOPENS := $FF1A ; XOPEN from Stratsed +XCLOSES := $FF1D ; XCLOSE from Stratsed +XPUT := $FF23 +XREWIN := $FF29 +XJUMP := $FF2C +XLGBUF := $FF2F +XERVEC := $FF32 +XESAVE := $FF35 +XCOPY := $FF38 +XDNAME := $FF3B +XSTATU := $FF3E +XUPDAT := $FF41 +XFORMA := $FF44 +XDELBK := $FF4A +XDELN := $FF4D +XPROT := $FF50 +XUNPRO := $FF53 +XDIRN := $FF56 +XBKP := $FF59 +XINITI := $FF5C +XERREU := $FF5F +XLOAD := $FF62 +XDEFSA := $FF65 +XDEFLO := $FF68 +XSAVE := $FF6B +XNOMDE := $FF6E +XCREAY := $FF71 +XDETSE := $FF74 +XLIBSE := $FF77 +XTRVCA := $FF7A +XTRVNM := $FF7D +XTRVNX := $FF80 +XBUCA := $FF86 +XVBUF1 := $FF89 +XSVSEC := $FF8C +XSAY := $FF8F +XSBUF1 := $FF92 +XSBUF2 := $FF95 +XSBUF3 := $FF98 +XSCAT := $FF9B +XPRSEC := $FFA1 +XPBUF1 := $FFA4 +XPMAP := $FFA7 +XRWTS := $FFAA + +; --------------------------------------------------------------------------- +; MACRO + +.macro BRK_TELEMON value + .byte $00,value +.endmacro +;------------------------------------------------------------------------- +; 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 +.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 +;/*****************************************************************************/ +;/* */ +;/* 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. */ +;/* */ +;/*****************************************************************************/ + + + + ;------------------------------------------------------------------------------ -; Exported functions +; Error codes -.global __systime -.global _mktime +.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 = $06 + +;------------------------------------------------------------------------------ +; 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 ;------------------------------------------------------------------------- ; Atari System Equates ; by Freddy Offenga, Christian Groessler, and Christian Krueger @@ -12203,6 +19224,7 @@ void joy_clear_ptr (void); ; - Atari OS manual - XL addendum ; - Atari XL/XE rev.2 source code, Atari 1984 ; - Mapping the Atari - revised edition, Ian Chadwick 1985 +; - SpartaDOS-X User Guide (Aug-8-2016) ; ; ##old## old OS rev.B label - moved or deleted ; ##1200xl## new label introduced in 1200XL OS (rev.10/11) @@ -12953,6 +19975,34 @@ FPSCR1 = $05EC ;6-byte floating point temporary DOS = $0700 +;------------------------------------------------------------------------- +; SpartaDOS-X Definitions +;------------------------------------------------------------------------- + +SDX_FLAG = DOS ; 'S' for SpartaDOS +SDX_VERSION = $0701 ; SD version (e.g. $32 = 3.2, $40 = 4.0) + ; address $0702 contains sub-version, e.g. + ; 8 in case of SDX 4.48 +SDX_KERNEL = $0703 ; SDX kernel entry point +SDX_BLOCK_IO = $0706 ; block I/O entry point +SDX_MISC = $0709 ; "misc" entry point +SDX_DEVICE = $0761 +SDX_DATE = $077B ; day, month, year (3 bytes) +SDX_TIME = $077E ; hour, min, sec (3 bytes) +SDX_DATESET = $0781 +SDX_PATH = $07A0 ; 64 bytes +SDX_IFSYMBOL = $07EB ; only valid on SDX 4.40 or newer +SDX_S_LOOKUP = SDX_IFSYMBOL ; alternative name for SDX_IFSYMBOL + +; values for SDX_DEVICE + +SDX_CLK_DEV = $10 ; clock device + +; clock device functions + +SDX_KD_GETTD = 100 ; get time and date +SDX_KD_SETTD = 101 ; set time and date + ;------------------------------------------------------------------------- ; Cartridge Address Equates ;------------------------------------------------------------------------- @@ -12998,6 +20048,104 @@ PDVS = $D1FF ;##rev2## parallel device select POKEY = $D200 ;POKEY area .include "atari_pokey.inc" +; POKEY KBCODE Values + +KEY_NONE = $FF + +KEY_0 = $32 +KEY_1 = $1F +KEY_2 = $1E +KEY_3 = $1A +KEY_4 = $18 +KEY_5 = $1D +KEY_6 = $1B +KEY_7 = $33 +KEY_8 = $35 +KEY_9 = $30 + +KEY_A = $3F +KEY_B = $15 +KEY_C = $12 +KEY_D = $3A +KEY_E = $2A +KEY_F = $38 +KEY_G = $3D +KEY_H = $39 +KEY_I = $0D +KEY_J = $01 +KEY_K = $05 +KEY_L = $00 +KEY_M = $25 +KEY_N = $23 +KEY_O = $08 +KEY_P = $0A +KEY_Q = $2F +KEY_R = $28 +KEY_S = $3E +KEY_T = $2D +KEY_U = $0B +KEY_V = $10 +KEY_W = $2E +KEY_X = $16 +KEY_Y = $2B +KEY_Z = $17 + +KEY_COMMA = $20 +KEY_PERIOD = $22 +KEY_SLASH = $26 +KEY_SEMICOLON = $02 +KEY_PLUS = $06 +KEY_ASTERISK = $07 +KEY_DASH = $0E +KEY_EQUALS = $0F +KEY_LESSTHAN = $36 +KEY_GREATERTHAN = $37 + +KEY_ESC = $1C +KEY_TAB = $2C +KEY_SPACE = $21 +KEY_RETURN = $0C +KEY_DELETE = $34 +KEY_CAPS = $3C +KEY_INVERSE = $27 +KEY_HELP = $11 + +KEY_F1 = $03 +KEY_F2 = $04 +KEY_F3 = $13 +KEY_F4 = $14 + +KEY_SHIFT = $40 +KEY_CTRL = $80 + +; Composed keys + +KEY_EXCLAMATIONMARK = KEY_1 | KEY_SHIFT +KEY_QUOTE = KEY_2 | KEY_SHIFT +KEY_HASH = KEY_3 | KEY_SHIFT +KEY_DOLLAR = KEY_4 | KEY_SHIFT +KEY_PERCENT = KEY_5 | KEY_SHIFT +KEY_AMPERSAND = KEY_6 | KEY_SHIFT +KEY_APOSTROPHE = KEY_7 | KEY_SHIFT +KEY_AT = KEY_8 | KEY_SHIFT +KEY_OPENINGPARAN = KEY_9 | KEY_SHIFT +KEY_CLOSINGPARAN = KEY_0 | KEY_SHIFT +KEY_UNDERLINE = KEY_DASH | KEY_SHIFT +KEY_BAR = KEY_EQUALS | KEY_SHIFT +KEY_COLON = KEY_SEMICOLON | KEY_SHIFT +KEY_BACKSLASH = KEY_PLUS | KEY_SHIFT +KEY_CIRCUMFLEX = KEY_ASTERISK | KEY_SHIFT +KEY_OPENINGBRACKET = KEY_COMMA | KEY_SHIFT +KEY_CLOSINGBRACKET = KEY_PERIOD | KEY_SHIFT +KEY_QUESTIONMARK = KEY_SLASH | KEY_SHIFT +KEY_CLEAR = KEY_LESSTHAN | KEY_SHIFT +KEY_INSERT = KEY_GREATERTHAN | KEY_SHIFT + +KEY_UP = KEY_DASH | KEY_CTRL +KEY_DOWN = KEY_EQUALS | KEY_CTRL +KEY_LEFT = KEY_PLUS | KEY_CTRL +KEY_RIGHT = KEY_ASTERISK | KEY_CTRL + ;------------------------------------------------------------------------- ; ANTIC Address Equates ;------------------------------------------------------------------------- @@ -13199,10 +20347,12 @@ diopp_size = 5 ; size of structure ;------------------------------------------------------------------------- SPARTADOS = 0 -OSADOS = 1 ; OS/A+ -XDOS = 2 -ATARIDOS = 3 -MYDOS = 4 +REALDOS = 1 +BWDOS = 2 +OSADOS = 3 ; OS/A+ +XDOS = 4 +ATARIDOS = 5 +MYDOS = 6 NODOS = 255 ; The DOSes with dos_type below or equal MAX_DOS_WITH_CMDLINE do support ; command line arguments. @@ -13234,303 +20384,311 @@ XGNUM = $087A ; get number ;------------------------------------------------------------------------- ; End of atari.inc ;------------------------------------------------------------------------- -; -; PET generic definitions. -; +;/*****************************************************************************/ +;/* */ +;/* cbm_screen_charmap.inc */ +;/* */ +;/* c Copyright 2019, Gerhard W. Gruber (sparhawk@gmx.at) */ +;/* */ +;/* When using CBM mode, this include converts character literals */ +;/* from ASCII to screen-code mapping, so you can write directly */ +;/* to the screen memory. */ +;/* */ +;/* If this include is used, no additional macros are needed. */ +;/* */ +;/*****************************************************************************/ +; Char $00 -> c + 128 +.charmap $00, $80 -; --------------------------------------------------------------------------- -; Zero page, Commodore stuff +; Char $01 ... $1A -> c + 128 + 64 control alphabet +.charmap $01, $C1 +.charmap $02, $C2 +.charmap $03, $C3 +.charmap $04, $C4 +.charmap $05, $C5 +.charmap $06, $C6 +.charmap $07, $C7 +.charmap $08, $C8 +.charmap $09, $C9 +.charmap $0A, $CA +.charmap $0B, $CB +.charmap $0C, $CC +.charmap $0D, $CD +.charmap $0E, $CE +.charmap $0F, $CF +.charmap $10, $D0 +.charmap $11, $D1 +.charmap $12, $D2 +.charmap $13, $D3 +.charmap $14, $D4 +.charmap $15, $D5 +.charmap $16, $D6 +.charmap $17, $D7 +.charmap $18, $D8 +.charmap $19, $D9 +.charmap $1A, $DA -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 +; Char $1B ... $1F -> c + 128 +.charmap $1B, $9B +.charmap $1C, $9C +.charmap $1D, $9D +.charmap $1E, $9E +.charmap $1F, $9F -BASIC_BUF := $200 ; Location of command-line -BASIC_BUF_LEN = 81 ; Maximum length of command-line +; Char $20 ... $3F -> c +.charmap $20, $20 +.charmap $21, $21 +.charmap $22, $22 +.charmap $23, $23 +.charmap $24, $24 +.charmap $25, $25 +.charmap $26, $26 +.charmap $27, $27 +.charmap $28, $28 +.charmap $29, $29 +.charmap $2A, $2A +.charmap $2B, $2B +.charmap $2C, $2C +.charmap $2D, $2D +.charmap $2E, $2E +.charmap $2F, $2F +.charmap $30, $30 +.charmap $31, $31 +.charmap $32, $32 +.charmap $33, $33 +.charmap $34, $34 +.charmap $35, $35 +.charmap $36, $36 +.charmap $37, $37 +.charmap $38, $38 +.charmap $39, $39 +.charmap $3A, $3A +.charmap $3B, $3B +.charmap $3C, $3C +.charmap $3D, $3D +.charmap $3E, $3E +.charmap $3F, $3F -KEY_BUF := $26F ; Keyboard buffer +; Char $40 -> c - 64 +.charmap $40, $00 -;---------------------------------------------------------------------------- -; PET ROM type detection +; Char $41 ... $5A -> c upper-case alphabet +.charmap $41, $41 +.charmap $42, $42 +.charmap $43, $43 +.charmap $44, $44 +.charmap $45, $45 +.charmap $46, $46 +.charmap $47, $47 +.charmap $48, $48 +.charmap $49, $49 +.charmap $4A, $4A +.charmap $4B, $4B +.charmap $4C, $4C +.charmap $4D, $4D +.charmap $4E, $4E +.charmap $4F, $4F +.charmap $50, $50 +.charmap $51, $51 +.charmap $52, $52 +.charmap $53, $53 +.charmap $54, $54 +.charmap $55, $55 +.charmap $56, $56 +.charmap $57, $57 +.charmap $58, $58 +.charmap $59, $59 +.charmap $5A, $5A -PET_DETECT := $FFFB -PET_2000 = $CA -PET_3000 = $FC -PET_4000 = $FD +; Char $5B ... $5F -> c - 64 +.charmap $5B, $1B +.charmap $5C, $1C +.charmap $5D, $1D +.charmap $5E, $1E +.charmap $5F, $1F +; Char $60 -> c - 32 +.charmap $60, $40 -;---------------------------------------------------------------------------- -; Vector and other locations +; Char $61 ... $7A -> c - 32 - 64 lower-case alphabet +.charmap $61, $01 +.charmap $62, $02 +.charmap $63, $03 +.charmap $64, $04 +.charmap $65, $05 +.charmap $66, $06 +.charmap $67, $07 +.charmap $68, $08 +.charmap $69, $09 +.charmap $6A, $0A +.charmap $6B, $0B +.charmap $6C, $0C +.charmap $6D, $0D +.charmap $6E, $0E +.charmap $6F, $0F +.charmap $70, $10 +.charmap $71, $11 +.charmap $72, $12 +.charmap $73, $13 +.charmap $74, $14 +.charmap $75, $15 +.charmap $76, $16 +.charmap $77, $17 +.charmap $78, $18 +.charmap $79, $19 +.charmap $7A, $1A -IRQVec := $0090 -BRKVec := $0092 -NMIVec := $0094 +; Char $7B ... $7F -> c - 32 +.charmap $7B, $5B +.charmap $7C, $5C +.charmap $7D, $5D +.charmap $7E, $5E +.charmap $7F, $5F -; --------------------------------------------------------------------------- -; I/O: 6522 VIA2 +; Char $80 -> c + 64 +.charmap $80, $C0 -VIA := $E840 -VIA_PRB := $E840 -VIA_PRA := $E841 -VIA_DDRB := $E842 -VIA_DDRA := $E843 +; Char $81 ... $9A -> c control alphabet +.charmap $81, $81 +.charmap $82, $82 +.charmap $83, $83 +.charmap $84, $84 +.charmap $85, $85 +.charmap $86, $86 +.charmap $87, $87 +.charmap $88, $88 +.charmap $89, $89 +.charmap $8A, $8A +.charmap $8B, $8B +.charmap $8C, $8C +.charmap $8D, $8D +.charmap $8E, $8E +.charmap $8F, $8F +.charmap $90, $90 +.charmap $91, $91 +.charmap $92, $92 +.charmap $93, $93 +.charmap $94, $94 +.charmap $95, $95 +.charmap $96, $96 +.charmap $97, $97 +.charmap $98, $98 +.charmap $99, $99 +.charmap $9A, $9A +; Char $9B ... $9F -> c + 64 +.charmap $9B, $DB +.charmap $9C, $DC +.charmap $9D, $DD +.charmap $9E, $DE +.charmap $9F, $DF -; -; _heap.inc -; -; (c) Copyright 2003, Ullrich von Bassewitz (uz@cc65.org) -; +; Char $A0 ... $BF -> c - 64 +.charmap $A0, $60 +.charmap $A1, $61 +.charmap $A2, $62 +.charmap $A3, $63 +.charmap $A4, $64 +.charmap $A5, $65 +.charmap $A6, $66 +.charmap $A7, $67 +.charmap $A8, $68 +.charmap $A9, $69 +.charmap $AA, $6A +.charmap $AB, $6B +.charmap $AC, $6C +.charmap $AD, $6D +.charmap $AE, $6E +.charmap $AF, $6F +.charmap $B0, $70 +.charmap $B1, $71 +.charmap $B2, $72 +.charmap $B3, $73 +.charmap $B4, $74 +.charmap $B5, $75 +.charmap $B6, $76 +.charmap $B7, $77 +.charmap $B8, $78 +.charmap $B9, $79 +.charmap $BA, $7A +.charmap $BB, $7B +.charmap $BC, $7C +.charmap $BD, $7D +.charmap $BE, $7E +.charmap $BF, $7F -; Assembler include file that makes the constants and structures in _heap.h -; available for asm code. +; Char $C0 ... $DF -> c - 128 +.charmap $C0, $40 -; 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 +; Char $C1 ... $DA -> c - 128 - 64 lower-case alphabet +.charmap $C1, $01 +.charmap $C2, $02 +.charmap $C3, $03 +.charmap $C4, $04 +.charmap $C5, $05 +.charmap $C6, $06 +.charmap $C7, $07 +.charmap $C8, $08 +.charmap $C9, $09 +.charmap $CA, $0A +.charmap $CB, $0B +.charmap $CC, $0C +.charmap $CD, $0D +.charmap $CE, $0E +.charmap $CF, $0F +.charmap $D0, $10 +.charmap $D1, $11 +.charmap $D2, $12 +.charmap $D3, $13 +.charmap $D4, $14 +.charmap $D5, $15 +.charmap $D6, $16 +.charmap $D7, $17 +.charmap $D8, $18 +.charmap $D9, $19 +.charmap $DA, $1A -; Struct usedblock -; See notes above -.struct usedblock - size .word - start .addr -.endstruct +; Char $DB ... $DF -> c - 128 +.charmap $DB, $5B +.charmap $DC, $5C +.charmap $DD, $5D +.charmap $DE, $5E +.charmap $DF, $5F -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 +; Char $E0 ... $FF -> c - 128 +.charmap $E0, $60 +.charmap $E1, $61 +.charmap $E2, $62 +.charmap $E3, $63 +.charmap $E4, $64 +.charmap $E5, $65 +.charmap $E6, $66 +.charmap $E7, $67 +.charmap $E8, $68 +.charmap $E9, $69 +.charmap $EA, $6A +.charmap $EB, $6B +.charmap $EC, $6C +.charmap $ED, $6D +.charmap $EE, $6E +.charmap $EF, $6F +.charmap $F0, $70 +.charmap $F1, $71 +.charmap $F2, $72 +.charmap $F3, $73 +.charmap $F4, $74 +.charmap $F5, $75 +.charmap $F6, $76 +.charmap $F7, $77 +.charmap $F8, $78 +.charmap $F9, $79 +.charmap $FA, $7A +.charmap $FB, $7B +.charmap $FC, $7C +.charmap $FD, $7D +.charmap $FE, $7E +.charmap $FF, $7F ;*****************************************************************************/ ;* */ ;* tgi-error.inc */ @@ -13583,15 +20741,201 @@ CDR_MEM_ENABLE = $1807 TGI_ERR_COUNT ; Special: Number of error messages .endenum +; --------------------------------------------------------------------------- +; +; SYM-1 definitions +; +; --------------------------------------------------------------------------- + + +RAMSTART := $0200 ; Entry point + + +; --------------------------------------------------------------------------- +; Monitor Functions +; --------------------------------------------------------------------------- +WARM := $8003 ; Monitor entry +SVNMI := $809B ; Save NMI entry +INBYTE := $81D9 ; Get two HEX characters and pack +ASCNIB := $8275 ; Test for carriage-return +INCCMP := $82B2 ; Increment pointer +CHKSAD := $82DD ; Compute checksum +OUTPC := $82EE ; Display program counter +OUTBYT := $82FA ; Print byte as two ASCII characters +OUTS2 := $8319 ; Print pointer +INSTAT := $8386 ; Determine if key is pressed +GETKEY := $88AF ; Get key (disregarding monitor login) +SCAND := $8906 ; Flash LED display (once) +KEYQ := $8923 ; Test for keypress +BEEP := $8972 ; Make a beep +CONFIG := $89A5 ; Configure I/O +OUTDSP := $89C1 ; Output to on-board LED display +INCHR := $8A1B ; Input character and convert to uppercase +OUTCHR := $8A47 ; Output character +INTCHR := $8A58 ; Input character without case conversion +DLYF := $8AE6 ; Delay 1 bit time +DLYH := $8AE9 ; Delay 1/2 bit time +RESET := $8B4A ; Hard reset +ACCESS := $8B86 ; Unlock lowest 4K memory +NACCES := $8B9C ; Lock lowest 4K memory +L8C78 := $8C78 ; Link to tape +DUMPT := $8E87 ; Dump memory to tape +LOADT := $8C78 ; Load memory from tape +TAPEMODE := $00FD ; Top bit on for high-speed + + +; --------------------------------------------------------------------------- +; System Memory +; --------------------------------------------------------------------------- +DISBUF := $A640 ; On-Board Display Buffer +DISBUF0 := $A640 ; Left-Most digit +DISBUF1 := $A641 ; Second digit +DISBUF2 := $A642 ; Third +DISBUF3 := $A643 ; Fourth +DISBUF4 := $A644 ; Fifth +DISBUF5 := $A645 ; Sixth and right-most digit +DISBUF6 := $A646 ; Not-used / right of display (shift buffer) +RDIG := $A645 ; Right-most digit (same as DISBUF5) +P3L := $A64A ; Parameter 3 (low-byte) +P3H := $A64B ; (high-byte) +P2L := $A64C ; Parameter 2 +P2H := $A64D ; +P1L := $A64E ; Parameter 1 +P1H := $A64F +PARNR := $A649 ; Number of Parameters Entered +PADBIT := $A650 ; Pad Bits for Carriage Return +SDBYT := $A651 ; Baud Rate for RS232 (01-4800,06-2400,10-1200,24-600,4C-300,D5-110) +ERCNT := $A652 ; Error Count (Max FF) +TECHO := $A653 ; Terminal Echo (bit-7=ECHO/NO, 6=CTL-O TOGGLE) +TOUTFL := $A654 ; Output Flags (bit-7=CRT IN, 6=TTY IN, 5=TTY OUT, 4=CRT OUT) +KSHFL := $A655 ; Keyboard Shift Flag +TV := $A656 ; Trace Velocity (0=Single Step) +LSTCOM := $A657 ; Last Monitor Command +MAXRC := $A658 ; Maximum Record Length for Memory Dump + + +; --------------------------------------------------------------------------- +; Register Followers +; --------------------------------------------------------------------------- +PCLR := $A659 ; Program Counter (low-byte) +PCHR := $A65A ; (high-byte) +SR := $A65B ; Stack Pointer +FR := $A65C ; Status Register Flags +AR := $A65D ; A Register +XR := $A65E ; X Register +YR := $A65F ; Y Register + + +; --------------------------------------------------------------------------- +; I/O Vectors (3 bytes each) +; --------------------------------------------------------------------------- +INVEC := $A660 ; Input Character +OUTVEC := $A663 ; Output Character +INSVEC := $A666 ; Input Status +URSVEC := $A669 ; Unrecognized Syntax +URCVEC := $A66C ; Unrecognized Command / Error +SCNVEC := $A66F ; Scan On-board Display + + +; --------------------------------------------------------------------------- +; Trace and Interrupt Vectors (2 bytes each) +; --------------------------------------------------------------------------- +EXEVEC := $A672 ; Exec and Alternate InVec +TRCVEC := $A674 ; Trace +UBRKVC := $A676 ; User Break after Monitor +UIRQVC := $A678 ; User non-break IRQ after Monitor +NMIVEC := $A67A ; Non-Maskable Interrupt +RSTVEC := $A67C ; Reset +IRQVEC := $A67E ; Interrupt Request + + +; --------------------------------------------------------------------------- +; I/O Registers +; --------------------------------------------------------------------------- +; +; 6532 (U27) +; +PADA := $A400 ; Keyboard / Display +P3DA := $A402 ; Serial I/O +DDPADA := $A401 ; Data-Direction Register for PADA +DDP3DA := $A403 ; Data-Direction Register for P3DA +WEDRTA := $A404 ; Write-Edge Detect Read Timer A +WEDRFA := $A405 ; Write-Edge Detect Read-Int Flags A +WEDRTB := $A406 ; Write-Edge Detect Read Timer B +WEDRFB := $A407 ; Write-Edge Detect Read-Int Flags B +TIM0001 := $A41C ; Timer / 1 +TIM0008 := $A41D ; Timer / 8 +TIM0064 := $A41E ; Timer / 64 +TIM1024 := $A41F ; Timer / 1024 +; +; 6522 (U25) +; +OR1A := $A001 ; Input / Output Register for 1A +DDR1A := $A003 ; Data-Direction Register for 1A +OR1B := $A000 ; Input / Output Register for 1B +DDR1B := $A002 ; Data-Direction Register for 1B +TIC1L := $A004 ; +TIC1H := $A005 ; +TIL1L := $A006 ; +TIL1H := $A007 ; +T2L1L := $A008 ; +T2C1L := $A008 ; +T2C1H := $A009 ; +SR1 := $A00A ; +ACR1 := $A00B ; +PCR1 := $A00C ; +IFR1 := $A00D ; +IER1 := $A00E ; +DR1A := $A00F ; +; +; 6522 (U28) +; +OR2A := $A801 ; Input / Output Register for 2A +DDR2A := $A803 ; Data-Direction Register for 2A +OR2B := $A800 ; Input / Output Register for 2B +DDR2B := $A802 ; Data-Direction Register for 2B +TIC2L := $A804 ; +TIC2H := $A805 ; +TIL2L := $A806 ; +TIL2H := $A807 ; +T2L2L := $A808 ; +T2C2L := $A808 ; +T2C2H := $A809 ; +SR2 := $A80A ; +ACR2 := $A80B ; +PCR2 := $A80C ; +IFR2 := $A80D ; +IER2 := $A80E ; +DR2A := $A80F ; +; +; 6522 (U29) +; +OR3A := $AC01 ; Write-Protect RAM, Debug On/Off, I/O-3A +DDR3A := $AC03 ; Data-Direction Register for 3A +OR3B := $AC00 ; Input / Output Register for 3B +DDR3B := $AC02 ; Data-Direction Register for 3B +TIC3L := $AC04 ; +TIC3H := $AC05 ; +TIL3L := $AC06 ; +TIL3H := $AC07 ; +T2L3L := $AC08 ; +T2C3L := $AC08 ; +T2C3H := $AC09 ; +SR3 := $AC0A ; +ACR3 := $AC0B ; +PCR3 := $AC0C ; +IFR3 := $AC0D ; +IER3 := $AC0E ; +DR3A := $AC0F ; ;/*****************************************************************************/ ;/* */ -;/* em-error.inc */ +;/* joy-kernel.inc */ ;/* */ -;/* EM error codes */ +;/* Internally used joystick functions */ ;/* */ ;/* */ ;/* */ -;/* (C) 2002-2012, Ullrich von Bassewitz */ +;/* (C) 2002-2006, Ullrich von Bassewitz */ ;/* Roemerstrasse 52 */ ;/* D-70794 Filderstadt */ ;/* EMail: uz@cc65.org */ @@ -13618,30 +20962,389 @@ CDR_MEM_ENABLE = $1807 -; 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 +;------------------------------------------------------------------------------ +; Driver header stuff + +.struct JOY_HDR + ID .byte 3 ; $6A, $6F, $79 ("joy") + VERSION .byte 1 ; Interface version + LIBREF .addr ; Library reference + JUMPTAB .struct + INSTALL .addr ; INSTALL routine + UNINSTALL .addr ; UNINSTALL routine + COUNT .addr ; COUNT routine + READ .addr ; READ routine + .endstruct +.endstruct + +;------------------------------------------------------------------------------ +; The JOY API version, stored in JOY_HDR::VERSION + +JOY_API_VERSION = $05 + +;------------------------------------------------------------------------------ +; 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 ;/*****************************************************************************/ ;/* */ -;/* em-kernel.inc */ +;/* atari_atascii_charmap.inc */ ;/* */ -;/* EM kernel interface */ +;/* Atari system standard string mapping ISO-8859-1 -> AtASCII */ ;/* */ ;/* */ ;/* */ -;/* (C) 2002-2003 Ullrich von Bassewitz */ -;/* Rmerstrasse 52 */ +;/* 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. */ +;/* */ +;/*****************************************************************************/ + +.charmap $00, $00 +.charmap $01, $01 +.charmap $02, $02 +.charmap $03, $03 +.charmap $04, $04 +.charmap $05, $05 +.charmap $06, $06 +.charmap $07, $FD +.charmap $08, $08 +.charmap $09, $7F +.charmap $0A, $9B +.charmap $0B, $0B +.charmap $0C, $7D +.charmap $0D, $0D +.charmap $0E, $0E +.charmap $0F, $0F + +.charmap $10, $10 +.charmap $11, $11 +.charmap $12, $12 +.charmap $13, $13 +.charmap $14, $14 +.charmap $15, $15 +.charmap $16, $16 +.charmap $17, $17 +.charmap $18, $18 +.charmap $19, $19 +.charmap $1A, $1A +.charmap $1B, $1B +.charmap $1C, $1C +.charmap $1D, $1D +.charmap $1E, $1E +.charmap $1F, $1F + +.charmap $20, $20 +.charmap $21, $21 +.charmap $22, $22 +.charmap $23, $23 +.charmap $24, $24 +.charmap $25, $25 +.charmap $26, $26 +.charmap $27, $27 +.charmap $28, $28 +.charmap $29, $29 +.charmap $2A, $2A +.charmap $2B, $2B +.charmap $2C, $2C +.charmap $2D, $2D +.charmap $2E, $2E +.charmap $2F, $2F + +.charmap $30, $30 +.charmap $31, $31 +.charmap $32, $32 +.charmap $33, $33 +.charmap $34, $34 +.charmap $35, $35 +.charmap $36, $36 +.charmap $37, $37 +.charmap $38, $38 +.charmap $39, $39 +.charmap $3A, $3A +.charmap $3B, $3B +.charmap $3C, $3C +.charmap $3D, $3D +.charmap $3E, $3E +.charmap $3F, $3F + +.charmap $40, $40 +.charmap $41, $41 +.charmap $42, $42 +.charmap $43, $43 +.charmap $44, $44 +.charmap $45, $45 +.charmap $46, $46 +.charmap $47, $47 +.charmap $48, $48 +.charmap $49, $49 +.charmap $4A, $4A +.charmap $4B, $4B +.charmap $4C, $4C +.charmap $4D, $4D +.charmap $4E, $4E +.charmap $4F, $4F + +.charmap $50, $50 +.charmap $51, $51 +.charmap $52, $52 +.charmap $53, $53 +.charmap $54, $54 +.charmap $55, $55 +.charmap $56, $56 +.charmap $57, $57 +.charmap $58, $58 +.charmap $59, $59 +.charmap $5A, $5A +.charmap $5B, $5B +.charmap $5C, $5C +.charmap $5D, $5D +.charmap $5E, $5E +.charmap $5F, $5F + +.charmap $60, $60 +.charmap $61, $61 +.charmap $62, $62 +.charmap $63, $63 +.charmap $64, $64 +.charmap $65, $65 +.charmap $66, $66 +.charmap $67, $67 +.charmap $68, $68 +.charmap $69, $69 +.charmap $6A, $6A +.charmap $6B, $6B +.charmap $6C, $6C +.charmap $6D, $6D +.charmap $6E, $6E +.charmap $6F, $6F + +.charmap $70, $70 +.charmap $71, $71 +.charmap $72, $72 +.charmap $73, $73 +.charmap $74, $74 +.charmap $75, $75 +.charmap $76, $76 +.charmap $77, $77 +.charmap $78, $78 +.charmap $79, $79 +.charmap $7A, $7A +.charmap $7B, $7B +.charmap $7C, $7C +.charmap $7D, $7D +.charmap $7E, $7E +.charmap $7F, $7F + +.charmap $80, $80 +.charmap $81, $81 +.charmap $82, $82 +.charmap $83, $83 +.charmap $84, $84 +.charmap $85, $85 +.charmap $86, $86 +.charmap $87, $87 +.charmap $88, $88 +.charmap $89, $89 +.charmap $8A, $8A +.charmap $8B, $8B +.charmap $8C, $8C +.charmap $8D, $8D +.charmap $8E, $8E +.charmap $8F, $8F + +.charmap $90, $90 +.charmap $91, $91 +.charmap $92, $92 +.charmap $93, $93 +.charmap $94, $94 +.charmap $95, $95 +.charmap $96, $96 +.charmap $97, $97 +.charmap $98, $98 +.charmap $99, $99 +.charmap $9A, $9A +.charmap $9B, $9B +.charmap $9C, $9C +.charmap $9D, $9D +.charmap $9E, $9E +.charmap $9F, $9F + +.charmap $A0, $A0 +.charmap $A1, $A1 +.charmap $A2, $A2 +.charmap $A3, $A3 +.charmap $A4, $A4 +.charmap $A5, $A5 +.charmap $A6, $A6 +.charmap $A7, $A7 +.charmap $A8, $A8 +.charmap $A9, $A9 +.charmap $AA, $AA +.charmap $AB, $AB +.charmap $AC, $AC +.charmap $AD, $AD +.charmap $AE, $AE +.charmap $AF, $AF + +.charmap $B0, $B0 +.charmap $B1, $B1 +.charmap $B2, $B2 +.charmap $B3, $B3 +.charmap $B4, $B4 +.charmap $B5, $B5 +.charmap $B6, $B6 +.charmap $B7, $B7 +.charmap $B8, $B8 +.charmap $B9, $B9 +.charmap $BA, $BA +.charmap $BB, $BB +.charmap $BC, $BC +.charmap $BD, $BD +.charmap $BE, $BE +.charmap $BF, $BF + +.charmap $C0, $C0 +.charmap $C1, $C1 +.charmap $C2, $C2 +.charmap $C3, $C3 +.charmap $C4, $C4 +.charmap $C5, $C5 +.charmap $C6, $C6 +.charmap $C7, $C7 +.charmap $C8, $C8 +.charmap $C9, $C9 +.charmap $CA, $CA +.charmap $CB, $CB +.charmap $CC, $CC +.charmap $CD, $CD +.charmap $CE, $CE +.charmap $CF, $CF + +.charmap $D0, $D0 +.charmap $D1, $D1 +.charmap $D2, $D2 +.charmap $D3, $D3 +.charmap $D4, $D4 +.charmap $D5, $D5 +.charmap $D6, $D6 +.charmap $D7, $D7 +.charmap $D8, $D8 +.charmap $D9, $D9 +.charmap $DA, $DA +.charmap $DB, $DB +.charmap $DC, $DC +.charmap $DD, $DD +.charmap $DE, $DE +.charmap $DF, $DF + +.charmap $E0, $E0 +.charmap $E1, $E1 +.charmap $E2, $E2 +.charmap $E3, $E3 +.charmap $E4, $E4 +.charmap $E5, $E5 +.charmap $E6, $E6 +.charmap $E7, $E7 +.charmap $E8, $E8 +.charmap $E9, $E9 +.charmap $EA, $EA +.charmap $EB, $EB +.charmap $EC, $EC +.charmap $ED, $ED +.charmap $EE, $EE +.charmap $EF, $EF + +.charmap $F0, $F0 +.charmap $F1, $F1 +.charmap $F2, $F2 +.charmap $F3, $F3 +.charmap $F4, $F4 +.charmap $F5, $F5 +.charmap $F6, $F6 +.charmap $F7, $F7 +.charmap $F8, $F8 +.charmap $F9, $F9 +.charmap $FA, $FA +.charmap $FB, $FB +.charmap $FC, $FC +.charmap $FD, $FD +.charmap $FE, $FE +.charmap $FF, $FF +; CPU bitmask constants +CPU_ISET_NONE = $0001 +CPU_ISET_6502 = $0002 +CPU_ISET_6502X = $0004 +CPU_ISET_6502DTV = $0008 +CPU_ISET_65SC02 = $0010 +CPU_ISET_65C02 = $0020 +CPU_ISET_65816 = $0040 +CPU_ISET_SWEET16 = $0080 +CPU_ISET_HUC6280 = $0100 +;CPU_ISET_M740 = $0200 not actually implemented +CPU_ISET_4510 = $0400 + +; CPU capabilities +CPU_NONE = CPU_ISET_NONE +CPU_6502 = CPU_ISET_6502 +CPU_6502X = CPU_ISET_6502|CPU_ISET_6502X +CPU_6502DTV = CPU_ISET_6502|CPU_ISET_6502X|CPU_ISET_6502DTV +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 +;/*****************************************************************************/ +;/* */ +;/* time.inc */ +;/* */ +;/* Date and time */ +;/* */ +;/* */ +;/* */ +;/* (C) 2009 Ullrich von Bassewitz */ +;/* Roemerstrasse 52 */ ;/* D-70794 Filderstadt */ ;/* EMail: uz@cc65.org */ ;/* */ @@ -13668,101 +21371,1516 @@ CDR_MEM_ENABLE = $1807 ;------------------------------------------------------------------------------ -; The driver header +; Struct tm - must match the struct defined in time.h -.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 +.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 -;------------------------------------------------------------------------------ -; The EMD API version, stored in EMD_HDR::VERSION - -EMD_API_VERSION = $02 ;------------------------------------------------------------------------------ -; The asm equivalent to the C em_copy structure +; Struct timespec - must match the struct defined in time.h -.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 +.struct timespec + tv_sec .dword + tv_nsec .dword .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 +; Exported functions +.global _clock_getres +.global _clock_gettime +.global _clock_settime +.global _localtime +.global _mktime ; -; zeropage.inc +; Olli Savia +; Greg King ; -; (C) Copyright 2002-2012, Ullrich von Bassewitz (uz@cc65.org) +; Commodore-compatibles Kernal functions ; -; Assembler include file that imports the runtime zero page locations used -; by the compiler, ready for usage in asm code. +.if .def(__CX16__) + ; CX16 extended jump table + ENTROPY_GET := $FECF + KEYBRD_BUF_PUT := $FED2 + CONSOLE_SET_PAGE_MSG := $FED5 + CONSOLE_PUT_IMAGE := $FED8 + CONSOLE_INIT := $FEDB + CONSOLE_PUT_CHAR := $FEDE + CONSOLE_GET_CHAR := $FEE1 + MEMORY_FILL := $FEE4 + MEMORY_COPY := $FEE7 + MEMORY_CRC := $FEEA + MEMORY_DECOMPRESS := $FEED + SPRITE_SET_IMAGE := $FEF0 + SPRITE_SET_POSITION := $FEF3 + FB_INIT := $FEF6 + FB_GET_INFO := $FEF9 + FB_SET_PALETTE := $FEFC + FB_CURSOR_POSITION := $FEFF + FB_CURSOR_NEXT_LINE := $FF02 + FB_GET_PIXEL := $FF05 + FB_GET_PIXELS := $FF08 + FB_SET_PIXEL := $FF0B + FB_SET_PIXELS := $FF0E + FB_SET_8_PIXELS := $FF11 + FB_SET_8_PIXELS_OPAQUE := $FF14 + FB_FILL_PIXELS := $FF17 + FB_FILTER_PIXELS := $FF1A + FB_MOVE_PIXELS := $FF1D + GRAPH_INIT := $FF20 + GRAPH_CLEAR := $FF23 + GRAPH_SET_WINDOW := $FF26 + GRAPH_SET_COLORS := $FF29 + GRAPH_DRAW_LINE := $FF2C + GRAPH_DRAW_RECT := $FF2F + GRAPH_MOVE_RECT := $FF32 + GRAPH_DRAW_OVAL := $FF35 + GRAPH_DRAW_IMAGE := $FF38 + GRAPH_SET_FONT := $FF3B + GRAPH_GET_CHAR_SIZE := $FF3E + GRAPH_PUT_CHAR := $FF41 + MULTI_ACPTR := $FF44 + RESTORE_BASIC := $FF47 + CLOCK_SET_DATE_TIME := $FF4D + CLOCK_GET_DATE_TIME := $FF50 + JOYSTICK_SCAN := $FF53 + JOYSTICK_GET := $FF56 + SCREEN_SET_MODE := $FF5F + SCREEN_SET_CHARSET := $FF62 + MOUSE_CONFIG := $FF68 + MOUSE_GET := $FF6B +.endif + +.if .def(__C128__) + ; C128 extended jump table + C64MODE := $FF4D + SWAPPER := $FF5F + SETBNK := $FF68 +.endif + +.if .def(__C128__) || .def(__CX16__) + ; Extended jump table + CLSALL := $FF4A + LKUPLA := $FF59 + LKUPSA := $FF5C + PFKEY := $FF65 + JSRFAR := $FF6E + INDFET := $FF74 + INDSTA := $FF77 + INDCMP := $FF7A + PRIMM := $FF7D +.endif + +.if .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__) + CINT := $FF81 + IOINIT := $FF84 + RAMTAS := $FF87 +.elseif .def(__VIC20__) + CINT := $E518 ; No entries are in the Kernal jump table of the VIC-20 for these three (3) functions. + IOINIT := $FDF9 ; The entries for these functions have been set to point directly to the functions + RAMTAS := $FD8D ; in the Kernal, to maintain compatibility with the other Commodore platforms. +.elseif .def(__CBM510__) || .def(__CBM610__) + IOINIT := $FF7B + CINT := $FF7E +.endif + +.if .def(__VIC20__) || .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__) + RESTOR := $FF8A + VECTOR := $FF8D +.elseif .def(__CBM510__) || .def(__CBM610__) + VECTOR := $FF84 + RESTOR := $FF87 +.endif + +.if .def(__CBM510__) || .def(__CBM610__) || .def(__VIC20__) || .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__) + SETMSG := $FF90 + SECOND := $FF93 + TKSA := $FF96 + MEMTOP := $FF99 + MEMBOT := $FF9C + SCNKEY := $FF9F + SETTMO := $FFA2 + ACPTR := $FFA5 + CIOUT := $FFA8 + UNTLK := $FFAB + UNLSN := $FFAE + LISTEN := $FFB1 + TALK := $FFB4 + READST := $FFB7 + SETLFS := $FFBA + SETNAM := $FFBD + OPEN := $FFC0 + CLOSE := $FFC3 +.endif + +; Available on all platforms including PET +CHKIN := $FFC6 +CKOUT := $FFC9 +CHKOUT := $FFC9 +CLRCH := $FFCC +CLRCHN := $FFCC +BASIN := $FFCF +CHRIN := $FFCF +BSOUT := $FFD2 +CHROUT := $FFD2 + +.if .def(__CBM510__) || .def(__CBM610__) || .def(__VIC20__) || .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__) + LOAD := $FFD5 + SAVE := $FFD8 + SETTIM := $FFDB + RDTIM := $FFDE +.endif + +; Available on all platforms including PET +STOP := $FFE1 +GETIN := $FFE4 +CLALL := $FFE7 +UDTIM := $FFEA + +.if .def(__CBM510__) || .def(__CBM610__) || .def(__VIC20__) || .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__) + SCREEN := $FFED + PLOT := $FFF0 + IOBASE := $FFF3 +.endif + +; --------------------------------------------------------------------------- +; Kernal routines, direct entries +; +; Unlike the above, these are not standard functions with entries in the jump +; table. They do not exist in all Kernals, and where they do the entry point is +; specific to that particular machine and possibly even Kernal version. +; +; This list is not comprehensive: missing items for particular machines +; should be added as needed. +; +; UPDCRAMPTR: Updates the color RAM pointer to match the screen RAM pointer. +; + +.if .def(__VIC20__) + CLRSCR := $E55F + KBDREAD := $E5CF + UPDCRAMPTR := $EAB2 +.elseif .def(__C64__) + CLRSCR := $E544 + KBDREAD := $E5B4 + NMIEXIT := $FEBC + UPDCRAMPTR := $EA24 +.elseif .def(__C128__) + CLRSCR := $C142 + KBDREAD := $C006 + NMIEXIT := $FF33 + NEWLINE := $C363 + PRINT := $C322 + CURS_SET := $CD57 + CURS_ON := $CD6F + CURS_OFF := $CD9F +.elseif .def(__C16__) + CLRSCR := $D88B + KBDREAD := $D8C1 +.endif +; 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 +; +; Plus/4 generic definitions. +; - .globalzp sp, sreg, regsave - .globalzp ptr1, ptr2, ptr3, ptr4 - .globalzp tmp1, tmp2, tmp3, tmp4 - .globalzp regbank - -; The size of the register bank -regbanksize = 6 +; --------------------------------------------------------------------------- +; Zero page, Commodore stuff -; The total amount of zero page space used -zpspace = 26 +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 +STATUS := $90 ; Kernal I/O completion status +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 + +KBDREPEAT := $540 +KBDREPEATRATE := $541 +KBDREPEATDELAY := $542 + +; --------------------------------------------------------------------------- +; 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_CLK := $FF13 +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 +; 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 + +; +; C16 generic definitions. +; +; The C16 and Plus/4 are identical, so just include the Plus/4 include file. + + +.include "plus4.inc" + + +; +; 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 + + +; +; PCE definitions. By Groepaz/Hitmen. +; + +; FIXME: Screen dimensions can change according to the 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 +VDC_VRR = 2 ; VRAM Read Register +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_VSR = 12 ; Vertical sync Register +VDC_VDR = 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: The zero-page addressing mode is redirected to page $20. +; We avoid it by using mirror locations that are outside of the zero page. + +VDC_CTRL := $0200 +VDC_DATA_LO := $0202 +VDC_DATA_HI := $0203 + +; HuC6260 -- Video Color Encoder (VCE) + +; The DAC has a palette of 512 colours. +; The bitmap of that data is 0000000gggrrrbbb (Green, Red, Blue). +; 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 to a VDC register. +.macro VREG arg1, arg2 + st0 #arg1 + st1 #<(arg2) + st2 #>(arg2) +.endmacro +;/*****************************************************************************/ +;/* */ +;/* cbm_petscii_charmap.inc */ +;/* */ +;/* CBM system standard string mapping ISO-8859-1 -> PetSCII */ +;/* */ +;/* */ +;/* 2019-03-10, 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 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 must not be removed or altered from any source */ +;/* distribution. */ +;/* */ +;/*****************************************************************************/ + +.charmap $00, $00 +.charmap $01, $01 +.charmap $02, $02 +.charmap $03, $03 +.charmap $04, $04 +.charmap $05, $05 +.charmap $06, $06 +.charmap $07, $07 +.charmap $08, $14 +.charmap $09, $09 +.charmap $0A, $0D +.charmap $0B, $11 +.charmap $0C, $93 +.charmap $0D, $0A +.charmap $0E, $0E +.charmap $0F, $0F +.charmap $10, $10 +.charmap $11, $0B +.charmap $12, $12 +.charmap $13, $13 +.charmap $14, $08 +.charmap $15, $15 +.charmap $16, $16 +.charmap $17, $17 +.charmap $18, $18 +.charmap $19, $19 +.charmap $1A, $1A +.charmap $1B, $1B +.charmap $1C, $1C +.charmap $1D, $1D +.charmap $1E, $1E +.charmap $1F, $1F + +.charmap $20, $20 +.charmap $21, $21 +.charmap $22, $22 +.charmap $23, $23 +.charmap $24, $24 +.charmap $25, $25 +.charmap $26, $26 +.charmap $27, $27 +.charmap $28, $28 +.charmap $29, $29 +.charmap $2A, $2A +.charmap $2B, $2B +.charmap $2C, $2C +.charmap $2D, $2D +.charmap $2E, $2E +.charmap $2F, $2F +.charmap $30, $30 +.charmap $31, $31 +.charmap $32, $32 +.charmap $33, $33 +.charmap $34, $34 +.charmap $35, $35 +.charmap $36, $36 +.charmap $37, $37 +.charmap $38, $38 +.charmap $39, $39 +.charmap $3A, $3A +.charmap $3B, $3B +.charmap $3C, $3C +.charmap $3D, $3D +.charmap $3E, $3E +.charmap $3F, $3F + +.charmap $40, $40 +.charmap $41, $C1 +.charmap $42, $C2 +.charmap $43, $C3 +.charmap $44, $C4 +.charmap $45, $C5 +.charmap $46, $C6 +.charmap $47, $C7 +.charmap $48, $C8 +.charmap $49, $C9 +.charmap $4A, $CA +.charmap $4B, $CB +.charmap $4C, $CC +.charmap $4D, $CD +.charmap $4E, $CE +.charmap $4F, $CF +.charmap $50, $D0 +.charmap $51, $D1 +.charmap $52, $D2 +.charmap $53, $D3 +.charmap $54, $D4 +.charmap $55, $D5 +.charmap $56, $D6 +.charmap $57, $D7 +.charmap $58, $D8 +.charmap $59, $D9 +.charmap $5A, $DA +.charmap $5B, $5B +.charmap $5C, $BF +.charmap $5D, $5D +.charmap $5E, $5E +.charmap $5F, $A4 + +.charmap $60, $AD +.charmap $61, $41 +.charmap $62, $42 +.charmap $63, $43 +.charmap $64, $44 +.charmap $65, $45 +.charmap $66, $46 +.charmap $67, $47 +.charmap $68, $48 +.charmap $69, $49 +.charmap $6A, $4A +.charmap $6B, $4B +.charmap $6C, $4C +.charmap $6D, $4D +.charmap $6E, $4E +.charmap $6F, $4F +.charmap $70, $50 +.charmap $71, $51 +.charmap $72, $52 +.charmap $73, $53 +.charmap $74, $54 +.charmap $75, $55 +.charmap $76, $56 +.charmap $77, $57 +.charmap $78, $58 +.charmap $79, $59 +.charmap $7A, $5A +.charmap $7B, $B3 +.charmap $7C, $DD +.charmap $7D, $AB +.charmap $7E, $B1 +.charmap $7F, $DF + +.charmap $80, $80 +.charmap $81, $81 +.charmap $82, $82 +.charmap $83, $83 +.charmap $84, $84 +.charmap $85, $85 +.charmap $86, $86 +.charmap $87, $87 +.charmap $88, $88 +.charmap $89, $89 +.charmap $8A, $8A +.charmap $8B, $8B +.charmap $8C, $8C +.charmap $8D, $8D +.charmap $8E, $8E +.charmap $8F, $8F +.charmap $90, $90 +.charmap $91, $91 +.charmap $92, $92 +.charmap $93, $0C +.charmap $94, $94 +.charmap $95, $95 +.charmap $96, $96 +.charmap $97, $97 +.charmap $98, $98 +.charmap $99, $99 +.charmap $9A, $9A +.charmap $9B, $9B +.charmap $9C, $9C +.charmap $9D, $9D +.charmap $9E, $9E +.charmap $9F, $9F + +.charmap $A0, $A0 +.charmap $A1, $A1 +.charmap $A2, $A2 +.charmap $A3, $A3 +.charmap $A4, $A4 +.charmap $A5, $A5 +.charmap $A6, $A6 +.charmap $A7, $A7 +.charmap $A8, $A8 +.charmap $A9, $A9 +.charmap $AA, $AA +.charmap $AB, $AB +.charmap $AC, $AC +.charmap $AD, $AD +.charmap $AE, $AE +.charmap $AF, $AF +.charmap $B0, $B0 +.charmap $B1, $B1 +.charmap $B2, $B2 +.charmap $B3, $B3 +.charmap $B4, $B4 +.charmap $B5, $B5 +.charmap $B6, $B6 +.charmap $B7, $B7 +.charmap $B8, $B8 +.charmap $B9, $B9 +.charmap $BA, $BA +.charmap $BB, $BB +.charmap $BC, $BC +.charmap $BD, $BD +.charmap $BE, $BE +.charmap $BF, $BF + +.charmap $C0, $60 +.charmap $C1, $61 +.charmap $C2, $62 +.charmap $C3, $63 +.charmap $C4, $64 +.charmap $C5, $65 +.charmap $C6, $66 +.charmap $C7, $67 +.charmap $C8, $68 +.charmap $C9, $69 +.charmap $CA, $6A +.charmap $CB, $6B +.charmap $CC, $6C +.charmap $CD, $6D +.charmap $CE, $6E +.charmap $CF, $6F +.charmap $D0, $70 +.charmap $D1, $71 +.charmap $D2, $72 +.charmap $D3, $73 +.charmap $D4, $74 +.charmap $D5, $75 +.charmap $D6, $76 +.charmap $D7, $77 +.charmap $D8, $78 +.charmap $D9, $79 +.charmap $DA, $7A +.charmap $DB, $7B +.charmap $DC, $7C +.charmap $DD, $7D +.charmap $DE, $7E +.charmap $DF, $7F + +.charmap $E0, $E0 +.charmap $E1, $E1 +.charmap $E2, $E2 +.charmap $E3, $E3 +.charmap $E4, $E4 +.charmap $E5, $E5 +.charmap $E6, $E6 +.charmap $E7, $E7 +.charmap $E8, $E8 +.charmap $E9, $E9 +.charmap $EA, $EA +.charmap $EB, $EB +.charmap $EC, $EC +.charmap $ED, $ED +.charmap $EE, $EE +.charmap $EF, $EF +.charmap $F0, $F0 +.charmap $F1, $F1 +.charmap $F2, $F2 +.charmap $F3, $F3 +.charmap $F4, $F4 +.charmap $F5, $F5 +.charmap $F6, $F6 +.charmap $F7, $F7 +.charmap $F8, $F8 +.charmap $F9, $F9 +.charmap $FA, $FA +.charmap $FB, $FB +.charmap $FC, $FC +.charmap $FD, $FD +.charmap $FE, $FE +.charmap $FF, $FF +;* +;** VTech Creativision Definitions +;* + +;** Screen +SCREEN_ROWS = 24 +SCREEN_COLS = 32 +SCREEN_PTR := $3A +CURSOR_X := $3C +CURSOR_Y := $3D + +;** VDP +VDP_DATA_R := $2000 +VDP_STATUS_R := $2001 +VDP_DATA_W := $3000 +VDP_CONTROL_W := $3001 + +;** PIA +PIA0_DATA := $1000 +PIA0_STATUS := $1001 +PIA1_DATA := $1002 +PIA1_STATUS := $1003 + +;** General +CH_VLINE = 33 +CH_HLINE = 34 +CH_ULCORNER = 35 +CH_URCORNER = 36 +CH_LLCORNER = 37 +CH_LRCORNER = 38 + +;** I/O (Zero-page variables) +ZP_KEYBOARD := $10 +ZP_JOY0_DIR := $11 +ZP_JOY1_DIR := $13 +ZP_JOY0_BUTTONS := $16 +ZP_JOY1_BUTTONS := $17 + +;** Joystick direction values (ZP_JOY0_DIR/ZP_JOY1_DIR) +JOY_N = $49 +JOY_NNE = $48 +JOY_NE = $47 +JOY_ENE = $46 +JOY_E = $45 +JOY_ESE = $44 +JOY_SE = $43 +JOY_SSE = $42 +JOY_S = $41 +JOY_SSW = $40 +JOY_SW = $4F +JOY_WSW = $4E +JOY_W = $4D +JOY_WNW = $4C +JOY_NW = $4B +JOY_NNW = $4A + +;** BIOS routines +BIOS_NMI_RESET_ADDR := $F808 +BIOS_PLAY_TUNE1 := $FBD6 +BIOS_PLAY_SONG := $FBED +BIOS_PLAY_TUNE2 := $FCE6 +BIOS_WRITE_VDP_REG := $FE1F +BIOS_QUIET_PSG := $FE54 +BIOS_POKE_PSG := $FE77 +BIOS_IRQ1_ADDR := $FF3F +BIOS_IRQ2_ADDR := $FF52 +;/*****************************************************************************/ +;/* */ +;/* ascii_charmap.inc */ +;/* */ +;/* No translations, encodings are stored as they were typed in the host. */ +;/* */ +;/* */ +;/* 2019-09-07, 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 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 must not be removed or altered from any source */ +;/* distribution. */ +;/* */ +;/*****************************************************************************/ + +;/* ASCII */ +.charmap $00, $00 +.charmap $01, $01 +.charmap $02, $02 +.charmap $03, $03 +.charmap $04, $04 +.charmap $05, $05 +.charmap $06, $06 +.charmap $07, $07 +.charmap $08, $08 +.charmap $09, $09 +.charmap $0A, $0A +.charmap $0B, $0B +.charmap $0C, $0C +.charmap $0D, $0D +.charmap $0E, $0E +.charmap $0F, $0F +.charmap $10, $10 +.charmap $11, $11 +.charmap $12, $12 +.charmap $13, $13 +.charmap $14, $14 +.charmap $15, $15 +.charmap $16, $16 +.charmap $17, $17 +.charmap $18, $18 +.charmap $19, $19 +.charmap $1A, $1A +.charmap $1B, $1B +.charmap $1C, $1C +.charmap $1D, $1D +.charmap $1E, $1E +.charmap $1F, $1F +.charmap $20, $20 +.charmap $21, $21 +.charmap $22, $22 +.charmap $23, $23 +.charmap $24, $24 +.charmap $25, $25 +.charmap $26, $26 +.charmap $27, $27 +.charmap $28, $28 +.charmap $29, $29 +.charmap $2A, $2A +.charmap $2B, $2B +.charmap $2C, $2C +.charmap $2D, $2D +.charmap $2E, $2E +.charmap $2F, $2F +.charmap $30, $30 +.charmap $31, $31 +.charmap $32, $32 +.charmap $33, $33 +.charmap $34, $34 +.charmap $35, $35 +.charmap $36, $36 +.charmap $37, $37 +.charmap $38, $38 +.charmap $39, $39 +.charmap $3A, $3A +.charmap $3B, $3B +.charmap $3C, $3C +.charmap $3D, $3D +.charmap $3E, $3E +.charmap $3F, $3F +.charmap $40, $40 +.charmap $41, $41 +.charmap $42, $42 +.charmap $43, $43 +.charmap $44, $44 +.charmap $45, $45 +.charmap $46, $46 +.charmap $47, $47 +.charmap $48, $48 +.charmap $49, $49 +.charmap $4A, $4A +.charmap $4B, $4B +.charmap $4C, $4C +.charmap $4D, $4D +.charmap $4E, $4E +.charmap $4F, $4F +.charmap $50, $50 +.charmap $51, $51 +.charmap $52, $52 +.charmap $53, $53 +.charmap $54, $54 +.charmap $55, $55 +.charmap $56, $56 +.charmap $57, $57 +.charmap $58, $58 +.charmap $59, $59 +.charmap $5A, $5A +.charmap $5B, $5B +.charmap $5C, $5C +.charmap $5D, $5D +.charmap $5E, $5E +.charmap $5F, $5F +.charmap $60, $60 +.charmap $61, $61 +.charmap $62, $62 +.charmap $63, $63 +.charmap $64, $64 +.charmap $65, $65 +.charmap $66, $66 +.charmap $67, $67 +.charmap $68, $68 +.charmap $69, $69 +.charmap $6A, $6A +.charmap $6B, $6B +.charmap $6C, $6C +.charmap $6D, $6D +.charmap $6E, $6E +.charmap $6F, $6F +.charmap $70, $70 +.charmap $71, $71 +.charmap $72, $72 +.charmap $73, $73 +.charmap $74, $74 +.charmap $75, $75 +.charmap $76, $76 +.charmap $77, $77 +.charmap $78, $78 +.charmap $79, $79 +.charmap $7A, $7A +.charmap $7B, $7B +.charmap $7C, $7C +.charmap $7D, $7D +.charmap $7E, $7E +.charmap $7F, $7F + +;/* beyond ASCII */ +.charmap $80, $80 +.charmap $81, $81 +.charmap $82, $82 +.charmap $83, $83 +.charmap $84, $84 +.charmap $85, $85 +.charmap $86, $86 +.charmap $87, $87 +.charmap $88, $88 +.charmap $89, $89 +.charmap $8A, $8A +.charmap $8B, $8B +.charmap $8C, $8C +.charmap $8D, $8D +.charmap $8E, $8E +.charmap $8F, $8F +.charmap $90, $90 +.charmap $91, $91 +.charmap $92, $92 +.charmap $93, $93 +.charmap $94, $94 +.charmap $95, $95 +.charmap $96, $96 +.charmap $97, $97 +.charmap $98, $98 +.charmap $99, $99 +.charmap $9A, $9A +.charmap $9B, $9B +.charmap $9C, $9C +.charmap $9D, $9D +.charmap $9E, $9E +.charmap $9F, $9F +.charmap $A0, $A0 +.charmap $A1, $A1 +.charmap $A2, $A2 +.charmap $A3, $A3 +.charmap $A4, $A4 +.charmap $A5, $A5 +.charmap $A6, $A6 +.charmap $A7, $A7 +.charmap $A8, $A8 +.charmap $A9, $A9 +.charmap $AA, $AA +.charmap $AB, $AB +.charmap $AC, $AC +.charmap $AD, $AD +.charmap $AE, $AE +.charmap $AF, $AF +.charmap $B0, $B0 +.charmap $B1, $B1 +.charmap $B2, $B2 +.charmap $B3, $B3 +.charmap $B4, $B4 +.charmap $B5, $B5 +.charmap $B6, $B6 +.charmap $B7, $B7 +.charmap $B8, $B8 +.charmap $B9, $B9 +.charmap $BA, $BA +.charmap $BB, $BB +.charmap $BC, $BC +.charmap $BD, $BD +.charmap $BE, $BE +.charmap $BF, $BF +.charmap $C0, $C0 +.charmap $C1, $C1 +.charmap $C2, $C2 +.charmap $C3, $C3 +.charmap $C4, $C4 +.charmap $C5, $C5 +.charmap $C6, $C6 +.charmap $C7, $C7 +.charmap $C8, $C8 +.charmap $C9, $C9 +.charmap $CA, $CA +.charmap $CB, $CB +.charmap $CC, $CC +.charmap $CD, $CD +.charmap $CE, $CE +.charmap $CF, $CF +.charmap $D0, $D0 +.charmap $D1, $D1 +.charmap $D2, $D2 +.charmap $D3, $D3 +.charmap $D4, $D4 +.charmap $D5, $D5 +.charmap $D6, $D6 +.charmap $D7, $D7 +.charmap $D8, $D8 +.charmap $D9, $D9 +.charmap $DA, $DA +.charmap $DB, $DB +.charmap $DC, $DC +.charmap $DD, $DD +.charmap $DE, $DE +.charmap $DF, $DF +.charmap $E0, $E0 +.charmap $E1, $E1 +.charmap $E2, $E2 +.charmap $E3, $E3 +.charmap $E4, $E4 +.charmap $E5, $E5 +.charmap $E6, $E6 +.charmap $E7, $E7 +.charmap $E8, $E8 +.charmap $E9, $E9 +.charmap $EA, $EA +.charmap $EB, $EB +.charmap $EC, $EC +.charmap $ED, $ED +.charmap $EE, $EE +.charmap $EF, $EF +.charmap $F0, $F0 +.charmap $F1, $F1 +.charmap $F2, $F2 +.charmap $F3, $F3 +.charmap $F4, $F4 +.charmap $F5, $F5 +.charmap $F6, $F6 +.charmap $F7, $F7 +.charmap $F8, $F8 +.charmap $F9, $F9 +.charmap $FA, $FA +.charmap $FB, $FB +.charmap $FC, $FC +.charmap $FD, $FD +.charmap $FE, $FE +.charmap $FF, $FF +; +; 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 + +;----------------------------------------------------------------------------- +; Zero page + +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 +CURLIN := $75 ; Current line number being executed + +;----------------------------------------------------------------------------- +; 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 +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 +CLRALTCHAR := $C00E ; Normal Apple II char set +SETALTCHAR := $C00F ; Norm/inv LC, no flash +ALTCHARSET := $C01E ; >127 if alt charset switched in + +; Language card +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 + +; Vertical blanking +RDVBLBAR := $C019 ; >127 if not vertical blanking +RDVBLMSK := $C041 ; >127 if VBL interrupts enabled +DISVBL := $C05A ; Disable VBL interrupts +ENVBL := $C05B ; Enable VBL interrupts + +; Video mode +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 +DHIRESON := $C05E ; Enable double-width graphics +DHIRESOFF := $C05F ; Disable double-width graphics + +; Game controller +TAPEIN := $C060 ; Read casette input / Switch input 3 +BUTN0 := $C061 ; Switch input 0 / Open-Apple key +BUTN1 := $C062 ; Switch input 1 / Closed-Apple key +BUTN2 := $C063 ; Switch input 2 / Shift key +PADDL0 := $C064 ; Analog input 0 +PADDL1 := $C065 ; Analog input 1 +PADDL2 := $C066 ; Analog input 2 +PADDL3 := $C067 ; Analog input 3 +PTRIG := $C070 ; Analog input reset + +; Input/Output Unit +IOUDISON := $C07E ; Disable IOU +IOUDISOFF := $C07F ; Enable IOU + +; Control Your Apple +CYAREG := $C036 ; Bits 0-3=disk detect 4=shadow all banks 7=fast +; ctype_common.inc +; +; This file is part of +; cc65 - a freeware C compiler for 6502 based systems +; +; https://cc65.github.io +; +; See "LICENSE" file for legal information. +; +; Character specification table for some common targets. +; + + .include "ctypetable.inc" + .export __ctypeidx + +; The tables are readonly, put them into the rodata segment + +.rodata + +__ctypeidx: + ct_mix CT_CTRL_IDX, CT_CTRL_IDX ; 0/00 ___ctrl_@___, 1/01 ___ctrl_A___ + ct_mix CT_CTRL_IDX, CT_CTRL_IDX ; 2/02 ___ctrl_B___, 3/03 ___ctrl_C___ + ct_mix CT_CTRL_IDX, CT_CTRL_IDX ; 4/04 ___ctrl_D___, 5/05 ___ctrl_E___ + ct_mix CT_CTRL_IDX, CT_CTRL_IDX ; 6/06 ___ctrl_F___, 7/07 ___ctrl_G___ + ct_mix CT_CTRL_IDX, CT_CTRL_WS_SPACETAB_IDX ; 8/08 ___ctrl_H___, 9/09 ___ctrl_I___ + ct_mix CT_CTRL_WS_IDX, CT_CTRL_WS_IDX ; 10/0a ___ctrl_J___, 11/0b ___ctrl_K___ + ct_mix CT_CTRL_WS_IDX, CT_CTRL_WS_IDX ; 12/0c ___ctrl_L___, 13/0d ___ctrl_M___ + ct_mix CT_CTRL_IDX, CT_CTRL_IDX ; 14/0e ___ctrl_N___, 15/0f ___ctrl_O___ + ct_mix CT_CTRL_IDX, CT_CTRL_IDX ; 16/10 ___ctrl_P___, 17/11 ___ctrl_Q___ + ct_mix CT_CTRL_IDX, CT_CTRL_IDX ; 18/12 ___ctrl_R___, 19/13 ___ctrl_S___ + ct_mix CT_CTRL_IDX, CT_CTRL_IDX ; 20/14 ___ctrl_T___, 21/15 ___ctrl_U___ + ct_mix CT_CTRL_IDX, CT_CTRL_IDX ; 22/16 ___ctrl_V___, 23/17 ___ctrl_W___ + ct_mix CT_CTRL_IDX, CT_CTRL_IDX ; 24/18 ___ctrl_X___, 25/19 ___ctrl_Y___ + ct_mix CT_CTRL_IDX, CT_CTRL_IDX ; 26/1a ___ctrl_Z___, 27/1b ___ctrl_[___ + ct_mix CT_CTRL_IDX, CT_CTRL_IDX ; 28/1c ___ctrl_\___, 29/1d ___ctrl_]___ + ct_mix CT_CTRL_IDX, CT_CTRL_IDX ; 30/1e ___ctrl_^___, 31/1f ___ctrl_____ + + ct_mix CT_SPACE_SPACETAB_IDX, CT_NONE_IDX ; 32/20 ___SPACE___, 33/21 _____!_____ + ct_mix CT_NONE_IDX, CT_NONE_IDX ; 34/22 _____"_____, 35/23 _____#_____ + ct_mix CT_NONE_IDX, CT_NONE_IDX ; 36/24 _____$_____, 37/25 _____%_____ + ct_mix CT_NONE_IDX, CT_NONE_IDX ; 38/26 _____&_____, 39/27 _____'_____ + ct_mix CT_NONE_IDX, CT_NONE_IDX ; 40/28 _____(_____, 41/29 _____)_____ + ct_mix CT_NONE_IDX, CT_NONE_IDX ; 42/2a _____*_____, 43/2b _____+_____ + ct_mix CT_NONE_IDX, CT_NONE_IDX ; 44/2c _____,_____, 45/2d _____-_____ + ct_mix CT_NONE_IDX, CT_NONE_IDX ; 46/2e _____._____, 47/2f _____/_____ + ct_mix CT_DIGIT_XDIGIT_IDX, CT_DIGIT_XDIGIT_IDX ; 48/30 _____0_____, 49/31 _____1_____ + ct_mix CT_DIGIT_XDIGIT_IDX, CT_DIGIT_XDIGIT_IDX ; 50/32 _____2_____, 51/33 _____3_____ + ct_mix CT_DIGIT_XDIGIT_IDX, CT_DIGIT_XDIGIT_IDX ; 52/34 _____4_____, 53/35 _____5_____ + ct_mix CT_DIGIT_XDIGIT_IDX, CT_DIGIT_XDIGIT_IDX ; 54/36 _____6_____, 55/37 _____7_____ + ct_mix CT_DIGIT_XDIGIT_IDX, CT_DIGIT_XDIGIT_IDX ; 56/38 _____8_____, 57/39 _____9_____ + ct_mix CT_NONE_IDX, CT_NONE_IDX ; 58/3a _____:_____, 59/3b _____;_____ + ct_mix CT_NONE_IDX, CT_NONE_IDX ; 60/3c _____<_____, 61/3d _____=_____ + ct_mix CT_NONE_IDX, CT_NONE_IDX ; 62/3e _____>_____, 63/3f _____?_____ + + ct_mix CT_NONE_IDX, CT_UPPER_XDIGIT_IDX ; 64/40 _____@_____, 65/41 _____A_____ + ct_mix CT_UPPER_XDIGIT_IDX, CT_UPPER_XDIGIT_IDX ; 66/42 _____B_____, 67/43 _____C_____ + ct_mix CT_UPPER_XDIGIT_IDX, CT_UPPER_XDIGIT_IDX ; 68/44 _____D_____, 69/45 _____E_____ + ct_mix CT_UPPER_XDIGIT_IDX, CT_UPPER_IDX ; 70/46 _____F_____, 71/47 _____G_____ + ct_mix CT_UPPER_IDX, CT_UPPER_IDX ; 72/48 _____H_____, 73/49 _____I_____ + ct_mix CT_UPPER_IDX, CT_UPPER_IDX ; 74/4a _____J_____, 75/4b _____K_____ + ct_mix CT_UPPER_IDX, CT_UPPER_IDX ; 76/4c _____L_____, 77/4d _____M_____ + ct_mix CT_UPPER_IDX, CT_UPPER_IDX ; 78/4e _____N_____, 79/4f _____O_____ + ct_mix CT_UPPER_IDX, CT_UPPER_IDX ; 80/50 _____P_____, 81/51 _____Q_____ + ct_mix CT_UPPER_IDX, CT_UPPER_IDX ; 82/52 _____R_____, 83/53 _____S_____ + ct_mix CT_UPPER_IDX, CT_UPPER_IDX ; 84/54 _____T_____, 85/55 _____U_____ + ct_mix CT_UPPER_IDX, CT_UPPER_IDX ; 86/56 _____V_____, 87/57 _____W_____ + ct_mix CT_UPPER_IDX, CT_UPPER_IDX ; 88/58 _____X_____, 89/59 _____Y_____ + ct_mix CT_UPPER_IDX, CT_NONE_IDX ; 90/5a _____Z_____, 91/5b _____[_____ + ct_mix CT_NONE_IDX, CT_NONE_IDX ; 92/5c _____\_____, 93/5d _____]_____ + ct_mix CT_NONE_IDX, CT_NONE_IDX ; 94/5e _____^_____, 95/5f _UNDERLINE_ + + ct_mix CT_NONE_IDX, CT_LOWER_XDIGIT_IDX ; 96/60 ___grave___, 97/61 _____a_____ + ct_mix CT_LOWER_XDIGIT_IDX, CT_LOWER_XDIGIT_IDX ; 98/62 _____b_____, 99/63 _____c_____ + ct_mix CT_LOWER_XDIGIT_IDX, CT_LOWER_XDIGIT_IDX ; 100/64 _____d_____, 101/65 _____e_____ + ct_mix CT_LOWER_XDIGIT_IDX, CT_LOWER_IDX ; 102/66 _____f_____, 103/67 _____g_____ + ct_mix CT_LOWER_IDX, CT_LOWER_IDX ; 104/68 _____h_____, 105/69 _____i_____ + ct_mix CT_LOWER_IDX, CT_LOWER_IDX ; 106/6a _____j_____, 107/6b _____k_____ + ct_mix CT_LOWER_IDX, CT_LOWER_IDX ; 108/6c _____l_____, 109/6d _____m_____ + ct_mix CT_LOWER_IDX, CT_LOWER_IDX ; 110/6e _____n_____, 111/6f _____o_____ + ct_mix CT_LOWER_IDX, CT_LOWER_IDX ; 112/70 _____p_____, 113/71 _____q_____ + ct_mix CT_LOWER_IDX, CT_LOWER_IDX ; 114/72 _____r_____, 115/73 _____s_____ + ct_mix CT_LOWER_IDX, CT_LOWER_IDX ; 116/74 _____t_____, 117/75 _____u_____ + ct_mix CT_LOWER_IDX, CT_LOWER_IDX ; 118/76 _____v_____, 119/77 _____w_____ + ct_mix CT_LOWER_IDX, CT_LOWER_IDX ; 120/78 _____x_____, 121/79 _____y_____ + ct_mix CT_LOWER_IDX, CT_NONE_IDX ; 122/7a _____z_____, 123/7b _____{_____ + ct_mix CT_NONE_IDX, CT_NONE_IDX ; 124/7c _____|_____, 125/7d _____}_____ + ct_mix CT_NONE_IDX, CT_WS_IDX ; 126/7e _____~_____, 127/7f ____DEL____ + +.repeat 64 + ct_mix CT_NONE_IDX, CT_NONE_IDX ; 128-255 +.endrepeat +; +; 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 -; 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 @@ -14043,620 +23161,6 @@ 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 ;------------------------------------------------------------------------- @@ -14692,16 +23196,16 @@ NMIRES = ANTIC + $0F ;NMI interrupt reset ; ScreenDL: ; .byte DL_BLK8 ; .byte DL_BLK8 -; .byte DL_CHR40x8x1 + DL_LMS + DL_DLI +; .byte DL_CHR40x8x1 | DL_LMS | DL_DLI ; .word ScreenAlignment -; .byte DL_BLK1 + DL_DLI -; .byte DL_MAP320x1x1 + DL_LMS +; .byte DL_BLK1 | DL_DLI +; .byte DL_MAP320x1x1 | DL_LMS ; .word Screen ; ; .repeat 99 ; .byte DL_MAP320x1x1 ; .endrepeat -; .byte DL_MAP320x1x1 + DL_LMS +; .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 @@ -14714,6 +23218,8 @@ NMIRES = ANTIC + $0F ;NMI interrupt reset DL_JMP = 1 DL_JVB = 65 +; DL_BLKn display n empty lines (just background) + DL_BLK1 = 0 DL_BLK2 = 16 DL_BLK3 = 32 @@ -14750,18 +23256,82 @@ DL_LMS = 64 ; general modifier... DL_DLI = 128 +;------------------------------------------------------------------------------- +; 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 ;/*****************************************************************************/ ;/* */ -;/* signal.inc */ +;/* em-kernel.inc */ ;/* */ -;/* Signal handling definitions */ +;/* EM kernel interface */ ;/* */ ;/* */ ;/* */ -;/* (C) 2002 Ullrich von Bassewitz */ -;/* Wacholderweg 14 */ -;/* D-70597 Stuttgart */ -;/* EMail: uz@musoftware.de */ +;/* (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 */ @@ -14785,351 +23355,89 @@ DL_DLI = 128 -; Standard signal handling functions -SIG_ERR = $0000 +;------------------------------------------------------------------------------ +; The driver header -; Signal numbers -SIGABRT = 0 -SIGFPE = 1 -SIGILL = 2 -SIGINT = 3 -SIGSEGV = 4 -SIGTERM = 5 -SIGCOUNT = 6 ; Number of signals +.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 -; Table with signal handlers (asm code only) -.global sigtable +;------------------------------------------------------------------------------ +; The EMD API version, stored in EMD_HDR::VERSION -; Function declarations -.global __sig_ign -.global __sig_dfl -.global _signal -.global _raise +EMD_API_VERSION = $02 +;------------------------------------------------------------------------------ +; The asm equivalent to the C em_copy structure -; -; C128 generic definitions. Stolen from Elite128 -; +.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 -; --------------------------------------------------------------------------- -; Zero page, Commodore stuff + .global _em_drv ; Pointer to driver -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 +;------------------------------------------------------------------------------ +; 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 -CHARCOLOR := $F1 -RVS := $F3 ; Reverse output flag -SCROLL := $F8 ; Disable scrolling flag +;------------------------------------------------------------------------------ +; ASM functions -BASIC_BUF := $200 ; Location of command-line -BASIC_BUF_LEN = 162 ; Maximum length of command-line + .global em_clear_ptr -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 +;------------------------------------------------------------------------------ +; C callable functions -; --------------------------------------------------------------------------- -; 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 + .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 ;/*****************************************************************************/ ;/* */ -;/* joy-error.inc */ +;/* em-error.inc */ ;/* */ -;/* Joystick error codes */ +;/* EM error codes */ ;/* */ ;/* */ ;/* */ -;/* (C) 2002 Ullrich von Bassewitz */ -;/* Wacholderweg 14 */ -;/* D-70597 Stuttgart */ -;/* EMail: uz@musoftware.de */ +;/* (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 */ @@ -15153,12 +23461,17 @@ CH_ESC = 27 -; 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 +; 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 @@ -15171,7 +23484,7 @@ JOY_ERR_NO_DEVICE = 4 ; Device (hardware) not found ;* * ;* * ;*(C) 2003-2006, Ullrich von Bassewitz * -;* Rmerstrasse 52 * +;* Roemerstrasse 52 * ;* D-70794 Filderstadt * ;*EMail: uz@cc65.org * ;* * @@ -15205,15 +23518,15 @@ JOY_ERR_NO_DEVICE = 4 ; Device (hardware) not found 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 + SER_INSTALL .addr ; SER_INSTALL routine + SER_UNINSTALL .addr ; SER_UNINSTALL routine + SER_OPEN .addr ; SER_OPEN routine + SER_CLOSE .addr ; SER_CLOSE routine + SER_GET .addr ; SER_GET routine + SER_PUT .addr ; SER_PUT routine + SER_STATUS .addr ; SER_STATUS routine + SER_IOCTL .addr ; SER_IOCTL routine + SER_IRQ .addr ; SER_IRQ routine .endstruct .endstruct @@ -15324,6 +23637,51 @@ SER_STATUS_DSR = $40 ; NOT data set ready .global _ser_ioctl .global _ser_clear_ptr +;/*****************************************************************************/ +;/* */ +;/* utsname.inc */ +;/* */ +;/* 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. */ +;/* */ +;/*****************************************************************************/ + + + +; Struct utsname +.struct utsname + sysname .byte 17 + nodename .byte 9 + release .byte 9 + version .byte 9 + machine .byte 25 +.endstruct + + ; ; C64 generic definitions. Stolen from Elite128 @@ -15336,6 +23694,7 @@ SER_STATUS_DSR = $40 ; NOT data set ready VARTAB := $2D ; Pointer to start of BASIC variables MEMSIZE := $37 ; Pointer to highest BASIC RAM location (+1) TXTPTR := $7A ; Pointer into BASIC source code +STATUS := $90 ; Kernal I/O completion status TIME := $A0 ; 60 HZ clock FNAM_LEN := $B7 ; Length of filename SECADR := $B9 ; Secondary address @@ -15360,14 +23719,9 @@ 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 +KBDREPEAT := $28a +KBDREPEATRATE := $28b +KBDREPEATDELAY := $28c ; --------------------------------------------------------------------------- ; Vector and other locations @@ -15408,6 +23762,8 @@ VIC_SPR_EXP_Y := $D017 VIC_SPR_EXP_X := $D01D VIC_SPR_MCOLOR := $D01C VIC_SPR_BG_PRIO := $D01B +VIC_SPR_COLL := $D01E +VIC_SPR_BG_COLL := $D01F VIC_SPR_MCOLOR0 := $D025 VIC_SPR_MCOLOR1 := $D026 @@ -15489,30 +23845,36 @@ VDC_INDEX := $D600 VDC_DATA := $D601 ; --------------------------------------------------------------------------- -; I/O: CIAs +; I/O: Complex Interface Adapters 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 +CIA1_PRA := $DC00 ; Port A +CIA1_PRB := $DC01 ; Port B +CIA1_DDRA := $DC02 ; Data direction register for port A +CIA1_DDRB := $DC03 ; Data direction register for port B +CIA1_TA := $DC04 ; 16-bit timer A +CIA1_TB := $DC06 ; 16-bit timer B +CIA1_TOD10 := $DC08 ; Time-of-day tenths of a second +CIA1_TODSEC := $DC09 ; Time-of-day seconds +CIA1_TODMIN := $DC0A ; Time-of-day minutes +CIA1_TODHR := $DC0B ; Time-of-day hours +CIA1_SDR := $DC0C ; Serial data register +CIA1_ICR := $DC0D ; Interrupt control register +CIA1_CRA := $DC0E ; Control register for timer A +CIA1_CRB := $DC0F ; Control register for timer B CIA2 := $DD00 CIA2_PRA := $DD00 CIA2_PRB := $DD01 CIA2_DDRA := $DD02 CIA2_DDRB := $DD03 +CIA2_TA := $DD04 +CIA2_TB := $DD06 CIA2_TOD10 := $DD08 CIA2_TODSEC := $DD09 CIA2_TODMIN := $DD0A CIA2_TODHR := $DD0B +CIA2_SDR := $DD0C CIA2_ICR := $DD0D CIA2_CRA := $DD0E CIA2_CRB := $DD0F @@ -15540,202 +23902,6 @@ 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 ; @@ -15757,392 +23923,6 @@ 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 */ -;* Rmerstrasse 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 ; @@ -16341,153 +24121,811 @@ 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 +; Oric Atmos definitions +; BASIC 1.1 addresses ; -; (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. */ -;* */ -;*****************************************************************************/ +; --------------------------------------------------------------------------- +; Constants -;------------------------------------------------------------------------------ -; Vectorfont constants +SCREEN_XSIZE = 40 ; screen columns +SCREEN_YSIZE = 28 ; screen rows -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) +FUNCTKEY = $A5 -;------------------------------------------------------------------------------ -; TCH file header and font data structures +FNAME_LEN = 16 ; maximum length of file-name -; TCH file header -.struct TGI_VF_HDR - MAGIC .byte 3 ; "TCH" - VERSION .byte 1 ; Version number - SIZE .word 1 ; Font data size + +; --------------------------------------------------------------------------- +; 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 -; 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 +; 6551 +.struct ACIA ; Asynchronous Communications Interface Adapter + .res $031C +DATA .byte +STATUS .byte +CMD .byte ; Command register +CTRL .byte ; Control register .endstruct -;------------------------------------------------------------------------------ -; C callable functions - - .global _tgi_vectorchar +SCREEN := $BB80 +; --------------------------------------------------------------------------- +; ROM entries -.ifndef DYN_DRV - DYN_DRV = 1 -.endif +GETLINE := $C592 +TEXT := $EC21 +HIRES := $EC33 +CURSET := $F0C8 +CURMOV := $F0FD +DRAW := $F110 +CHAR := $F12D +POINT := $F1C8 +PAPER := $F204 +INK := $F210 +PRINT := $F77C -.macro module_header module_label - .if DYN_DRV - .segment "HEADER" +; Sound Effects +PING := $FA9F +PING1 := $FA85 +SHOOT := $FAB5 +SHOOT1 := $FA9B +EXPLODE := $FACB +EXPLODE1 := $FAB1 +ZAP := $FAE1 +ZAP1 := $FAC7 +TICK := $FB14 +TICK1 := $FAFA +TOCK := $FB2A +TOCK1 := $FB10 +; Atari 2600 TIA & RIOT read / write registers +; +; Florent Flament (contact@florentflament.com), 2017 + +; TIA & RIOT registers mapping +.include "atari2600_tia.inc" +.include "atari2600_riot.inc" +; +; 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 + + +; Convert characters to screen codes + +; Macro that converts one character. +; scrbyte() can be used as an instruction operand +.define scrbyte(code) (<(.strat ("h@dbdlhh", code >> 5) << 4) ^ code) + +; Helper macro that stores one character +.macro _scrcode char + .if (char < 256) + .byte scrbyte {char} .else - .data - .export module_label - module_label: + .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 +; +; 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 + +;------------------------------------------------------------------------- +; 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 + + +; Hue values + +HUE_GREY = 0 +HUE_GOLD = 1 +HUE_GOLDORANGE = 2 +HUE_REDORANGE = 3 +HUE_ORANGE = 4 +HUE_MAGENTA = 5 +HUE_PURPLE = 6 +HUE_BLUE = 7 +HUE_BLUE2 = 8 +HUE_CYAN = 9 +HUE_BLUEGREEN = 10 +HUE_BLUEGREEN2 = 11 +HUE_GREEN = 12 +HUE_YELLOWGREEN = 13 +HUE_YELLOW = 14 +HUE_YELLOWRED = 15 + +; Color defines, similar to c64 colors (untested) + +GTIA_COLOR_BLACK = (HUE_GREY << 4) +GTIA_COLOR_WHITE = (HUE_GREY << 4 | 7 << 1) +GTIA_COLOR_RED = (HUE_REDORANGE << 4 | 1 << 1) +GTIA_COLOR_CYAN = (HUE_CYAN << 4 | 3 << 1) +GTIA_COLOR_VIOLET = (HUE_PURPLE << 4 | 4 << 1) +GTIA_COLOR_GREEN = (HUE_GREEN << 4 | 2 << 1) +GTIA_COLOR_BLUE = (HUE_BLUE << 4 | 2 << 1) +GTIA_COLOR_YELLOW = (HUE_YELLOW << 4 | 7 << 1) +GTIA_COLOR_ORANGE = (HUE_ORANGE << 4 | 5 << 1) +GTIA_COLOR_BROWN = (HUE_YELLOW << 4 | 2 << 1) +GTIA_COLOR_LIGHTRED = (HUE_REDORANGE << 4 | 6 << 1) +GTIA_COLOR_GRAY1 = (HUE_GREY << 4 | 2 << 1) +GTIA_COLOR_GRAY2 = (HUE_GREY << 4 | 3 << 1) +GTIA_COLOR_LIGHTGREEN = (HUE_GREEN << 4 | 6 << 1) +GTIA_COLOR_LIGHTBLUE = (HUE_BLUE << 4 | 6 << 1) +GTIA_COLOR_GRAY3 = (HUE_GREY << 4 | 5 << 1) +; 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 +;/*****************************************************************************/ +;/* */ +;/* atari_screen_charmap.inc */ +;/* */ +;/* 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. */ +;/* */ +;/*****************************************************************************/ + +.charmap $00, $40 +.charmap $01, $41 +.charmap $02, $42 +.charmap $03, $43 +.charmap $04, $44 +.charmap $05, $45 +.charmap $06, $46 +.charmap $07, $FD +.charmap $08, $48 +.charmap $09, $7F +.charmap $0A, $DB +.charmap $0B, $4B +.charmap $0C, $7D +.charmap $0D, $4D +.charmap $0E, $4E +.charmap $0F, $4F + +.charmap $10, $50 +.charmap $11, $51 +.charmap $12, $52 +.charmap $13, $53 +.charmap $14, $54 +.charmap $15, $55 +.charmap $16, $56 +.charmap $17, $57 +.charmap $18, $58 +.charmap $19, $59 +.charmap $1A, $5A +.charmap $1B, $5B +.charmap $1C, $5C +.charmap $1D, $5D +.charmap $1E, $5E +.charmap $1F, $5F + +.charmap $20, $00 + +.charmap $21, $01 +.charmap $22, $02 +.charmap $23, $03 +.charmap $24, $04 +.charmap $25, $05 +.charmap $26, $06 +.charmap $27, $07 +.charmap $28, $08 +.charmap $29, $09 +.charmap $2A, $0A +.charmap $2B, $0B +.charmap $2C, $0C +.charmap $2D, $0D +.charmap $2E, $0E +.charmap $2F, $0F + +.charmap $30, $10 +.charmap $31, $11 +.charmap $32, $12 +.charmap $33, $13 +.charmap $34, $14 +.charmap $35, $15 +.charmap $36, $16 +.charmap $37, $17 +.charmap $38, $18 +.charmap $39, $19 +.charmap $3A, $1A +.charmap $3B, $1B +.charmap $3C, $1C +.charmap $3D, $1D +.charmap $3E, $1E +.charmap $3F, $1F + +.charmap $40, $20 +.charmap $41, $21 +.charmap $42, $22 +.charmap $43, $23 +.charmap $44, $24 +.charmap $45, $25 +.charmap $46, $26 +.charmap $47, $27 +.charmap $48, $28 +.charmap $49, $29 +.charmap $4A, $2A +.charmap $4B, $2B +.charmap $4C, $2C +.charmap $4D, $2D +.charmap $4E, $2E +.charmap $4F, $2F + +.charmap $50, $30 +.charmap $51, $31 +.charmap $52, $32 +.charmap $53, $33 +.charmap $54, $34 +.charmap $55, $35 +.charmap $56, $36 +.charmap $57, $37 +.charmap $58, $38 +.charmap $59, $39 +.charmap $5A, $3A +.charmap $5B, $3B +.charmap $5C, $3C +.charmap $5D, $3D +.charmap $5E, $3E +.charmap $5F, $3F + +.charmap $60, $60 +.charmap $61, $61 +.charmap $62, $62 +.charmap $63, $63 +.charmap $64, $64 +.charmap $65, $65 +.charmap $66, $66 +.charmap $67, $67 +.charmap $68, $68 +.charmap $69, $69 +.charmap $6A, $6A +.charmap $6B, $6B +.charmap $6C, $6C +.charmap $6D, $6D +.charmap $6E, $6E +.charmap $6F, $6F + +.charmap $70, $70 +.charmap $71, $71 +.charmap $72, $72 +.charmap $73, $73 +.charmap $74, $74 +.charmap $75, $75 +.charmap $76, $76 +.charmap $77, $77 +.charmap $78, $78 +.charmap $79, $79 +.charmap $7A, $7A +.charmap $7B, $7B +.charmap $7C, $7C +.charmap $7D, $7D +.charmap $7E, $7E +.charmap $7F, $7F + +.charmap $80, $C0 +.charmap $81, $C1 +.charmap $82, $C2 +.charmap $83, $C3 +.charmap $84, $C4 +.charmap $85, $C5 +.charmap $86, $C6 +.charmap $87, $C7 +.charmap $88, $C8 +.charmap $89, $C9 +.charmap $8A, $CA +.charmap $8B, $CB +.charmap $8C, $CC +.charmap $8D, $CD +.charmap $8E, $CE +.charmap $8F, $CF + +.charmap $90, $D0 +.charmap $91, $D1 +.charmap $92, $D2 +.charmap $93, $D3 +.charmap $94, $D4 +.charmap $95, $D5 +.charmap $96, $D6 +.charmap $97, $D7 +.charmap $98, $D8 +.charmap $99, $D9 +.charmap $9A, $DA +.charmap $9B, $DB +.charmap $9C, $DC +.charmap $9D, $DD +.charmap $9E, $DE +.charmap $9F, $DF + +.charmap $A0, $80 +.charmap $A1, $81 +.charmap $A2, $82 +.charmap $A3, $83 +.charmap $A4, $84 +.charmap $A5, $85 +.charmap $A6, $86 +.charmap $A7, $87 +.charmap $A8, $88 +.charmap $A9, $89 +.charmap $AA, $8A +.charmap $AB, $8B +.charmap $AC, $8C +.charmap $AD, $8D +.charmap $AE, $8E +.charmap $AF, $8F + +.charmap $B0, $90 +.charmap $B1, $91 +.charmap $B2, $92 +.charmap $B3, $93 +.charmap $B4, $94 +.charmap $B5, $95 +.charmap $B6, $96 +.charmap $B7, $97 +.charmap $B8, $98 +.charmap $B9, $99 +.charmap $BA, $9A +.charmap $BB, $9B +.charmap $BC, $9C +.charmap $BD, $9D +.charmap $BE, $9E +.charmap $BF, $9F + +.charmap $C0, $A0 +.charmap $C1, $A1 +.charmap $C2, $A2 +.charmap $C3, $A3 +.charmap $C4, $A4 +.charmap $C5, $A5 +.charmap $C6, $A6 +.charmap $C7, $A7 +.charmap $C8, $A8 +.charmap $C9, $A9 +.charmap $CA, $AA +.charmap $CB, $AB +.charmap $CC, $AC +.charmap $CD, $AD +.charmap $CE, $AE +.charmap $CF, $AF + +.charmap $D0, $B0 +.charmap $D1, $B1 +.charmap $D2, $B2 +.charmap $D3, $B3 +.charmap $D4, $B4 +.charmap $D5, $B5 +.charmap $D6, $B6 +.charmap $D7, $B7 +.charmap $D8, $B8 +.charmap $D9, $B9 +.charmap $DA, $BA +.charmap $DB, $BB +.charmap $DC, $BC +.charmap $DD, $BD +.charmap $DE, $BE +.charmap $DF, $BF + +.charmap $E0, $E0 +.charmap $E1, $E1 +.charmap $E2, $E2 +.charmap $E3, $E3 +.charmap $E4, $E4 +.charmap $E5, $E5 +.charmap $E6, $E6 +.charmap $E7, $E7 +.charmap $E8, $E8 +.charmap $E9, $E9 +.charmap $EA, $EA +.charmap $EB, $EB +.charmap $EC, $EC +.charmap $ED, $ED +.charmap $EE, $EE +.charmap $EF, $EF + +.charmap $F0, $F0 +.charmap $F1, $F1 +.charmap $F2, $F2 +.charmap $F3, $F3 +.charmap $F4, $F4 +.charmap $F5, $F5 +.charmap $F6, $F6 +.charmap $F7, $F7 +.charmap $F8, $F8 +.charmap $F9, $F9 +.charmap $FA, $FA +.charmap $FB, $FB +.charmap $FC, $FC +.charmap $FD, $FD +.charmap $FE, $FE +.charmap $FF, $FF + +;/*****************************************************************************/ +;/* */ +;/* 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 + + + +; +; _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 + + ;*****************************************************************************/ ;* */ ;* o65.inc */ @@ -16638,998 +25076,565 @@ O65_LOAD_ERR_MEM = 5 ; Not enough memory -;/*****************************************************************************/ -;/* */ -;/* joy-kernel.inc */ -;/* */ -;/* Internally used joystick functions */ -;/* */ -;/* */ -;/* */ -;/* (C) 2002-2006, Ullrich von Bassewitz */ -;/* Rmerstrae 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 */ -;/* Rmerstrasse 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 +; add - Add without carry +.macro add Arg1, Arg2 + clc + .if .paramcount = 2 + adc Arg1, Arg2 .else - .error "scrcode: Character constant out of range" + adc Arg1 .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 +; sub - subtract without borrow +.macro sub Arg1, Arg2 + sec + .if .paramcount = 2 + sbc Arg1, Arg2 .else - - .error "scrcode: invalid argument type" - + sbc Arg1 .endif +.endmacro - ; Call the macro recursively with the remaining args - scrcode arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 +; 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 + +;*****************************************************************************/ +;* */ +;* 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 + + +; ctypetable.inc +; +; This file is part of +; cc65 - a freeware C compiler for 6502 based systems +; +; https://cc65.github.io +; +; See "LICENSE" file for legal information. +; +; Data covering all possible combinations of character flags for target specific definition +; + +.include "ctype.inc" +.export __ctype + +; Table definition covering all possible ctype combinations + +.rodata +__ctype: +ct_none: .byte CT_NONE +ct_lower: .byte CT_LOWER +ct_upper: .byte CT_UPPER +ct_digit_xdigit: .byte CT_DIGIT | CT_XDIGIT +ct_lower_xdigit: .byte CT_LOWER | CT_XDIGIT +ct_upper_xdigit: .byte CT_UPPER | CT_XDIGIT +ct_ctrl: .byte CT_CTRL +ct_ws: .byte CT_OTHER_WS +ct_ctrl_ws: .byte CT_CTRL | CT_OTHER_WS +ct_space_spacetab: .byte CT_SPACE | CT_SPACE_TAB +ct_ctrl_ws_spacetab: .byte CT_CTRL | CT_OTHER_WS | CT_SPACE_TAB + +; build indices out of the table above: + +CT_NONE_IDX = ct_none - __ctype +CT_LOWER_IDX = ct_lower - __ctype +CT_UPPER_IDX = ct_upper - __ctype +CT_DIGIT_XDIGIT_IDX = ct_digit_xdigit - __ctype +CT_LOWER_XDIGIT_IDX = ct_lower_xdigit - __ctype +CT_UPPER_XDIGIT_IDX = ct_upper_xdigit - __ctype +CT_CTRL_IDX = ct_ctrl - __ctype +CT_WS_IDX = ct_ws - __ctype +CT_CTRL_WS_IDX = ct_ctrl_ws - __ctype +CT_SPACE_SPACETAB_IDX = ct_space_spacetab - __ctype +CT_CTRL_WS_SPACETAB_IDX = ct_ctrl_ws_spacetab - __ctype + +.macro ct_mix lower, upper + .byte ((lower) & $0F) | ((upper) << 4) +.endmacro +; Atari 2600 RIOT read / write registers +; +; Source: DASM - vcs.h +; Details available in: Stella Programmer's Guide by Steve Wright +; +; Florent Flament (contact@florentflament.com), 2017 + +; Read registers +SWCHA := $0280 +SWACNT := $0281 +SWCHB := $0282 +SWBCNT := $0283 +INTIM := $0284 +TIMINT := $0285 + +; Write registers +TIM1T := $0294 +TIM8T := $0295 +TIM64T := $0296 +T1024T := $0297 +.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 +; 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 -; opcodes.inc -; ca65 6502 - opcode definitions, mainly for self modifying code -; -; Christian Krger, 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 -; +.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 +; +; VIC-20 generic definitions. Stolen mostly from c64.inc -- Steve Schmidtke +; ; --------------------------------------------------------------------------- ; Zero page, Commodore stuff @@ -17637,6 +25642,7 @@ OPC_ISC_abx = $FF VARTAB := $2D ; Pointer to start of BASIC variables MEMSIZE := $37 ; Pointer to highest BASIC RAM location (+1) TXTPTR := $7A ; Pointer into BASIC source code +STATUS := $90 ; Kernal I/O completion status TIME := $A0 ; 60HZ clock FNAM_LEN := $B7 ; Length of filename SECADR := $B9 ; Secondary address @@ -17659,6 +25665,11 @@ BASIC_BUF_LEN = 89 ; Maximum length of command-line CHARCOLOR := $286 CURS_COLOR := $287 ; Color under the cursor +KBDREPEAT := $28a +KBDREPEATRATE := $28b +KBDREPEATDELAY := $28c + +RSSTAT := $297 ; RS-232 device driver status ; --------------------------------------------------------------------------- ; Screen size @@ -17666,13 +25677,6 @@ CURS_COLOR := $287 ; Color under the cursor XSIZE = 22 YSIZE = 23 -; --------------------------------------------------------------------------- -; Kernal routines - -; Direct entries -CLRSCR := $E55F -KBDREAD := $E5CF - ; --------------------------------------------------------------------------- ; Vector and other locations @@ -17684,457 +25688,90 @@ 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 +VIC_CR0 := VIC+$0 +VIC_CR1 := VIC+$1 +VIC_CR2 := VIC+$2 +VIC_CR3 := VIC+$3 +VIC_LINES := VIC+$3 ; Screen lines, bit 7 is bit 0 from VIC_HLINE +VIC_CR4 := VIC+$4 +VIC_HLINE := VIC+$4 ; Rasterline, bits 1-8 +VIC_CR5 := VIC+$5 +VIC_CR6 := VIC+$6 +VIC_CR7 := VIC+$7 +VIC_CR8 := VIC+$8 +VIC_CR9 := VIC+$9 +VIC_CRA := VIC+$A +VIC_CRB := VIC+$B +VIC_CRC := VIC+$C +VIC_CRD := VIC+$D +VIC_CRE := VIC+$E +VIC_CRF := VIC+$F +VIC_COLOR := VIC+$F ; Border and background color ; --------------------------------------------------------------------------- ; I/O: 6522 VIA1 -VIA1 := $9110 -VIA1_JOY := $9111 -VIA1_DDRB := $9112 -VIA1_DDRA := $9113 +VIA1 := $9110 ; VIA1 base address +VIA1_JOY := VIA1+$0 ; *** Deprecated *** +VIA1_PB := VIA1+$0 ; Port register B +VIA1_PA1 := VIA1+$1 ; Port register A +VIA1_DDRB := VIA1+$2 ; Data direction register B +VIA1_DDRA := VIA1+$3 ; Data direction register A +VIA1_T1CL := VIA1+$4 ; Timer 1, low byte +VIA1_T1CH := VIA1+$5 ; Timer 1, high byte +VIA1_T1LL := VIA1+$6 ; Timer 1 latch, low byte +VIA1_T1LH := VIA1+$7 ; Timer 1 latch, high byte +VIA1_T2CL := VIA1+$8 ; Timer 2, low byte +VIA1_T2CH := VIA1+$9 ; Timer 2, high byte +VIA1_SR := VIA1+$A ; Shift register +VIA1_ACR := VIA1+$B ; Auxiliary control register +VIA1_PCR := VIA1+$C ; Peripheral control register +VIA1_IFR := VIA1+$D ; Interrupt flag register +VIA1_IER := VIA1+$E ; Interrupt enable register +VIA1_PA2 := VIA1+$F ; Port register A w/o handshake ; --------------------------------------------------------------------------- ; 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 +VIA2 := $9120 ; VIA2 base address +VIA2_JOY := VIA2+$0 ; *** Deprecated *** +VIA2_PB := VIA2+$0 ; Port register B +VIA2_PA1 := VIA2+$1 ; Port register A +VIA2_DDRB := VIA2+$2 ; Data direction register B +VIA2_DDRA := VIA2+$3 ; Data direction register A +VIA2_T1CL := VIA2+$4 ; Timer 1, low byte +VIA2_T1CH := VIA2+$5 ; Timer 1, high byte +VIA2_T1LL := VIA2+$6 ; Timer 1 latch, low byte +VIA2_T1LH := VIA2+$7 ; Timer 1 latch, high byte +VIA2_T2CL := VIA2+$8 ; Timer 2, low byte +VIA2_T2CH := VIA2+$9 ; Timer 2, high byte +VIA2_SR := VIA2+$A ; Shift register +VIA2_ACR := VIA2+$B ; Auxiliary control register +VIA2_PCR := VIA2+$C ; Peripheral control register +VIA2_IFR := VIA2+$D ; Interrupt flag register +VIA2_IER := VIA2+$E ; Interrupt enable register +VIA2_PA2 := VIA2+$F ; Port register A w/o handshake +FEATURES { + STARTADDRESS: default = $1000; +} SYMBOLS { - __EXEHDR__: type = import; - __STACKSIZE__: type = weak, value = $0800; # 2k stack + __STACKSIZE__: type = weak, value = $0800; # 2k stack + __STACKSTART__: type = weak, value = $8000; + __ZPSTART__: type = weak, value = $0080; } MEMORY { - ZP: file = "", start = $0000, size = $001A; - HEADER: file = %O, start = $0000, size = $0001; - MAIN: file = %O, define = yes, start = $0200, size = $FDF0 - __STACKSIZE__; + ZP: file = "", define = yes, start = __ZPSTART__, size = $001F; + MAIN: file = %O, start = %S, size = __STACKSTART__ - __STACKSIZE__ - %S; } 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; + ZEROPAGE: load = ZP, type = zp; + STARTUP: load = MAIN, type = ro, optional = yes; + LOWCODE: load = MAIN, type = ro, optional = yes; + ONCE: load = MAIN, type = ro, optional = yes; + CODE: load = MAIN, type = rw; + RODATA: load = MAIN, type = rw; + DATA: load = MAIN, type = rw; + BSS: load = MAIN, type = bss, define = yes; } FEATURES { CONDES: type = constructor, @@ -18151,2326 +25788,1153 @@ FEATURES { 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` iL[ gjji@۵faX\faX%9 +naUz  Uzna` kzy/" .1=0@ಏxa _2!  +  + + +  + H I   +   +   +   +    +L +ASSERTION FAILED IN %s:%u + 2 ! -0)&986314$. 5 +%*(,2/#'+!../libwrk/none/_afailed.sca65 V2.19 - Git 6ac4aa4e2cc65 v 2.19 - Git 6ac4aa4e2spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_raise_stderr_fprintf_exit __afailedS0001.sizepushaxpushwyspincsp4CODERODATABSSDATAZEROPAGENULLUzna` ixK%Q +@ಏ _a + < )F=7(E;'G 69:+4 +*2,@.0 common/_cwd.sca65 V2.19 - Git 6ac4aa4e2__cwd__cwd_buf_sizecwd_initinitcwd6/home/pzp/8bitworkshop-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` ia @ಏ _ _ a*4 +  + +-(`!56789+ 4  +"    +:common/_directerrno.sca65 V2.19 - Git 6ac4aa4e26/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` iL[ gjoi@ಏ _a _$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 +&&11L +/i H0 I0%`%&'()  0 $4<")& F=7( E;'G$6!9:+4%*(2 ,@. #0+*common/_fdesc.sca65 V2.19 - Git 6ac4aa4e2__fdescreturn06/home/pzp/8bitworkshop-compilers/cc65/asminc/stdio.inc_IOFBF_IOLBF_IONBFBUFSIZEOF FILENAME_MAXL_tmpnamSEEK_CURSEEK_ENDSEEK_SETTMP_MAX FOPEN_MAX_stdin_stdout_stderr6/home/pzp/8bitworkshop-compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags f_pushback_FCLOSED_FOPEN_FEOF_FERROR -_FPUSHBACK __filetabLoopFound@L1CODERODATABSSDATAZEROPAGENULLUzna` ikl?@۵faX\faX faX+,-.   000000000000000 +_FPUSHBACK __filetabLoopFound@L1CODERODATABSSDATAZEROPAGENULLUzna` ikl?'@ಏ _a _ _*+,- + + +333333333333333  - -/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 + +./0/! 7< )&F=7( E;'G$6!9: +4*2 ,@. # 00common/_file.sca65 V2.19 - Git 6ac4aa4e2 __filetab6/home/pzp/8bitworkshop-compilers/cc65/asminc/stdio.inc_IOFBF_IOLBF_IONBFBUFSIZEOF FILENAME_MAXL_tmpnamSEEK_CURSEEK_ENDSEEK_SETTMP_MAX FOPEN_MAX_stdin_stdout_stderr6/home/pzp/8bitworkshop-compilers/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCL6/home/pzp/8bitworkshop-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\ ) ]ij@۵\%L -`  -      - __SIM6502__ common/abs.s -ca65 V2.15_absnegax.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` ix1 <Y\4v[@۵\faXq& &Hq '" "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 2T  -7 7!!  8H8q9 9.. - -@//  50 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 -03Gzd2@۵\`   ` ɀ  `  -    -      __SIM6502__runtime/along.s -ca65 V2.15aulongalongsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq -03Lg2@۵\`    `   `   -    -    __SIM6502__runtime/axlong.s -ca65 V2.15axulongaxlongsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqbt@۵\#    -L -         -    `   - -  !  -# __SIM6502__ conio/cputs.s -ca65 V2.15_cputsxy_cputsgotoxy_cputcptr1tmp1.sizeL0L1L9CODERODATABSSDATAZEROPAGENULLUzna` iqe["@۵\;&   '2I IJb_ _JVI < < jeI^9 9 j`I6F F jaI N*MFk kfR Rf -  -j7[  . -.S S, -,0 0C -C# #G -G \ -\`iK//d f f E -E  4 4YKY -LL " -" X -X- -Q Q g -gJ JQ8 8Hc -cEO O* *W -WE> >3 3 +_FPUSHBACKCODERODATABSSDATAZEROPAGENULLUzna` i/ }X@ಏ _ _ _a+,*8 8 +' 'H H> >$ ? ?D0 0# #= e .  .HJ(e h-8% %HGI Ih*`",-./0>?0# 8'HI)L- ?")> !CE# A;J.!= +F"@*( +,K : #'BD<1common/_heapblocksize.sca65 V2.19 - Git 6ac4aa4e2ptr1ptr2__heapblocksize6/home/pzp/8bitworkshop-compilers/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast8/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510CODERODATABSSDATAZEROPAGENULLUzna` i| #< " @ಏ _ _  _aE6  +3 3  + - +-,`789:;-0 8  ! +5"  +  <common/_mappederrno.sca65 V2.19 - Git 6ac4aa4e26/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX8/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeokCODERODATABSSDATAZEROPAGENULLUzna` kz(<d psU[r@ಏxa  _OQ9 & +& +  +  +'   ,,! +! +  +$ H$ I  + "  +   + +L +K + + % +% H+ I+  +  +  +L( +(.%s: %s + !"# (  &%  ! Q)#- -0?)>&986E31A4;$.= 5 +%7@*(,2/:#'BD<+$../libwrk/none/_poserror.sca65 V2.19 - Git 6ac4aa4e2cc65 v 2.19 - Git 6ac4aa4e2spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_stderr_fprintf +__poserror __stroserror __oserrorS0001.sizeS0002pushaxL0002pushwyspL0004incsp4CODERODATABSSDATAZEROPAGENULLUzna` ia! "&&@ಏa _ _h      `$ + v +v  + H I  +  U +ULJ +J  8C  C??  `) +)  +JL + +  +JL +   +J   > +!>   P  `Z Z   80, +,(,  +H=   &  & e K Ke  V V& h{ec c y yxxM M ` + + +`! Hz IzGm +lL +     L +   +  +  + `j  + +' +'  +  +)b +)b Y + YL +   +  + L +   +  + L4 +4H + t +twh  *  *  + +      + +    E  T     +   +     g gu   %;;  Ge    i  i8     p  p %  +       I# # +  +    0 0    +  +}  +  `%   %   +  +L +&  +  -SS ++ +  + #  + +  +L + 0  +   + *3   +  +JL +  +VA + A +  + +  .  +  *   +  +JL +  +V + +  zht11jLRl X +X  +L8 +!8 + H +' I +' n +nc~  +J +k +L +Ed&&i- +     +::+ +  +8 0 m +mq +q + + B +BL +EnD  +J    f f  ( (L +&o'  +8 + +H  6 6   + \ +\0  +h  +La +Eap' 9 +9N + +xs'ss   +J +' +'L +Eu   +- +@  +L` +E`xX)H + + +0  +XF d +d ] +-]  +hx . +'. +'  +L +EL +& +' +'  ++ +)+ +) +  + + +) + +) +) +)8 +  +) +  +)I/ + I +  +  + _ +_H +H  +Lo +&oi[j+ -Qh2L  kLlm4"" "U"""Y"7 5ZKVcyMf(r6r +0^m\| -PlHG?)o>&y  98}OpEbk3;  Jn qIdx= F[*(ar,2wcRz:~'SDZ{Q<YX+ncommon/_printf.sca65 V2.19 - Git 6ac4aa4e29/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace__printfpopaxpushaxpusheaxdecsp6push1axlongaxulong_ltoa_ultoa _strlower_strlen8/home/pzp/8bitworkshop-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{.. 000] EI0I@ಏxa _, + R +R & &  + ; +; + +  + + +! r +r + + + + + +  +  H I  +$##L# +#  +uLw +w + %& +   +   +L + +  +L + +))L +  +{%W + *s 8 +8 +3 +3 v +{v& +: +: +   +! += +=1 + + + +  + % % + )e % % + + g +{g  +! +  +F  +"L + + +  + + + + + LVhjIl+t'F'zBL +d + % + % %h- + +% +L +a + % + %  %l + += +=  +{ + AL +CL +EL +FL +G>>L> +>SL +Xaka[L + atL +cL +d:eL +fL +gL +i/)/nL +\o&pTL +.s+uxL + +  +L + ~ +~L2 +2  +L +   +L +  +  + + +0 +8 + + +  + & &L +H +q q + & & &  +u + + +f +f B + B + + +  + +L + & +L +A +AL + += +I +I +  + + +R[ +[8 + + +  + & &L +  + + & & &  +u + + +  +77 +L + +L +  +  +u + + + M +ML + I? %? H % %  +{^  + + +  +{ + ]YL + + % + % %- +; + +  +? + +  +{] 9 +?9  + -  + L + +?  +  +? +  E +?EL +t +   +  _ +{_ + ] + x +x8 + + +  +. +> +8 +8 +%% + +  + & &L + +  + & &- &-] +] +>  +u  + + + + l +l11 +>$$L$ +$ +L + & +L +. +.L +  + +0L + +  +u +Xx,w  +u  +$  +L + +  +  O +O +P  +LL +z  +  + + + ( +p (p +  + +! +8 + +L +  j +"jL +y  +"L + ` +{`L +PL} +} + +  + + +  +<Q +Q +Hh ) & ) &hL +HJJJh) +L" +"`  +  + + +L + +  +  += +L +-`* +I +` +3 + 5 +5 + %\ +\X %X  % + % + % %  +Z + Z +  + `u +u % + % % + % + % %  + + + +  + `o  +H H I  +h^L +#  + `K +L +`L| +| S +uS + +  + ` +- + +  +u + +  +u +`  +  )  +!b b )0L + )  +W  + L + + ( + ( +A@ (@ ( + + ( + ( +L + +A + ( + ( + +  +C )  +  +  +4 +@4  +  + + + ( + ( +  +u + +  +" + + +  +{{ +  + +@ ) +A  +V +VL + ++ +8 + + +  + % % + + % + +`  +  +  +z )zB +05  +u +Xx ) +  +uL +Fi )  +<0 + +L +F + ) ) k +$k +# + ( + ( + +  + + + ( +< (< +  +L + + ' + ' + +U 'U+ + +`P c @eBBnn0*V(,5VA=88-;r,ROBj GX?-U<@p z hm\j|U -P0]l?)o>&ysfW9C8}L6pgtbk3T1A4;en.^!iqdx= 5 +%7_ [@*(arV,2 wcRvz/:u~ '`BSDZ{Q<YX+../libwrk/none/_scanf.sca65 V2.19 - Git 6ac4aa4e2cc65 v 2.19 - Git 6ac4aa4e2spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-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_CharSetpushaxldaxyspL0002L0003 _ReadCharL0022L0004L0007L0093 +_SkipWhiteL0008 +_GetFormatbooleqL000EM0001L0011L0010mulax10L008CL0013L00B6complaxL001EL0017L0094L001AL0095L00ABL0099L0047L009EL0096L0097L0074L0098L006DL0029L00AC_ScanInt _CheckEndL002EL002BldaxiL009AL0035L00B0L009DL0031L0039L0045L003BL003EL003CL0040L003FL0043L0046L008DL009FL00A1L00A0L004AM0003L0051L0054L0057 _AddCharToSetL0092L00A5L005CL00B3_InvertCharSetM0002L0063L0060L00A6L00A7 _IsCharInSetL00AAL0065L0070_ReadInt +_AssignIntL0076L0077tossuba0axulongL0086 _PushBackincsp8M0006M0009M000AM000B_FindBitL0001pushaincsp1L1pusha0jmpvec_Error _ReadSign_HexValdecaxyL000Cpusheax tosmuleax tosaddeaxL000FL0006L0005L000DL000BL0009L000AnegeaxCODERODATABSSDATAZEROPAGENULLUzna` ix;MjmEl@ಏ _ a +q& & q* *  i$ ! ! ` !"#&*! + -0)&631  $. + *(,2/'+$ runtime/add.sca65 V2.19 - Git 6ac4aa4e2tosadda0tosaddaxsptmp14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` iqg= !$<`!#"@ಏa0ma   ( (  +1 1T  +6 6    7H7 q8 8,, ++ +>..4/ /e $ $e' '  +5= ="    ) 9 9; ; & ! !3 3`*< <2 2:L- +- #/ +#(6 !3 #18# $'=9;<2-%?-0HG?")>&9C8L6ET1A4; J$.!I= 5 +F7@N*(V,2RK/: #'BSDQ<+zlib/adler32.sca65 V2.19 - Git 6ac4aa4e2_adler32incsp2incsp4popptr1popeaxsregptr1ptr2tmp1BASE.size@L1@L0@L2@RET@L3@L4@L5@L6@L7@L8@L9CODERODATABSSDATAZEROPAGENULLUzna` ix#&%@ಏ _aI   1 H"1  hL + !"# + &   +  $ runtime/and.sca65 V2.19 - Git 6ac4aa4e2tosanda0tosandaxaddysp1spptr44/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` i< pq@ಏ _  _ !a<8+ + + +E< + ( + F`$55  +2T`: +D" +"Q, + +  0 +0LL + L` =>   +P?@A +100 +L #U PG?")> 9C86TA;$. +I="@ *( ,R :#D +Q<+Bcommon/atexit.sca65 V2.19 - Git 6ac4aa4e2_atexitdoatexitcallax6/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510exitfunc_index exitfunc_max@Errorexitfunc_table.size@L9CODERODATABSSDATAZEROPAGENULLUzna` iqm87k@ಏa6    + +`  +      +runtime/bcast.sca65 V2.19 - Git 6ac4aa4e2bcastabcastax.sizeL1L0CODERODATABSSDATAZEROPAGENULLUzna` ix.$RUs%T@ಏ _ +aI&  / H/   H* I*L +`'()%3 + 3 + 5 +5 +"  + !, +, +   +&`*+I,   H440 H0 IL + `1 /*0%%   9-P0MHG"CLO6E3T14 J! +IF%@N 2RK/ #BD-runtime/condes.sca65 V2.19 - Git 6ac4aa4e2initlibdonelibcondes__CONSTRUCTOR_TABLE____CONSTRUCTOR_COUNT____DESTRUCTOR_TABLE____DESTRUCTOR_COUNT__4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510exit.sizefetch1fetch2loopjmpvecindexCODERODATABSSDATAZEROPAGENULLONCEUzna` iqPY@ಏa ' '1 1G_ J\TT  J;Ib b[ [j9I] ]6 6jDI^ ^L LjI Khh*PF +  +f7 7fX Xj.QQ, +,/ /A +A" "E +E   +Y00f +f`ac$ $C C  +4 4WKW +JJ ! +! V +V- -  O O d +dH HQ8 8F` +`EM M* *U +UE= =2 2 E% % : -: + +5 5 $$= =PP L) -)U U? ?LZ -Z  h   ( !]"#  F -SJO3  I*+  f-Q=  485 - _<9kR0#>%U? DXDEDZDg)R@lhm\jU -P0MlHG")o>&sfW9C8}O6pgtbk3T1A4;eJn$.^!iqdx 5 -F%7_[@N*(arV,2wcRKz/:~ #'`BDZ<X+$ __SIM6502__ zlib/crc32.s -ca65 V2.15_crc32compleaxincsp2incsp4popaxpopeaxsregptr1ptr2tmp1tmp2 +: + +5 5 ##< <NN L) +)S S> >Le +e   (   !"  @ 6^X/HM2 @L*+ @$C-O< +@485 @'1 b[] +7" =%S>3V33e3d)RIBihm\jU-P0MlH")o>&ysfW9C8O6pEgtbk3T14;e Jn$.^!iqdx= 5 +F%7_[@N*(arV,2wcRK/:~ #'`BDZ{<X+# zlib/crc32.sca65 V2.19 - Git 6ac4aa4e2_crc32compleaxincsp2incsp4popptr1popeaxsregptr1ptr2tmp1tmp2 POLYNOMIAL make_table.size@L1@L2@L3@L4table_0table_1table_2table_3table_initialisedRET@L0 -@dont_makeCODERODATABSSDATAZEROPAGENULLUzna` k{yll xIIxLx!6m -Kx@۵m\faXW! } -}  -9    -   - +#- + apfGgIoAOAp -Qt -+z oL -  - -  - L -  - -  - -h    -a - - - L - - -  -J L -  - L -7 H7 I  -L -   - L - - - - -L - - -  -  -a -  -  -L - - -  -m - -m - -L - L - L -   -  -  m -m  -  +-a-o#zv+vL - R m -  -L -# p pI8m -  - L -#  -:L -# - L -# -L -#l -  -L -  - L -  +@dont_makeCODERODATABSSDATAZEROPAGENULLUzna` i{ VY]NXO@ಏaa&0 _>q?Q?eUmUdUUJ +J  . +.Q Q'* *9 +9 =`8 H8 A IA) ):  +< 4 +<4,NNL + MZ`(c cb +b]@` + ++/ +/ +` +@ VALX +XL +LT +TLK +KL - - -  -  - - --  +  -  # a<o2z -EL - m - -m - -L - I 8m - -m -  -L -  -L - -8 -  -L - - - -m - -   -L - -  -L -  - -J -L -3 u -u -   -  -  -  +-'a Kg - 7 o =z PL -?  -mK -K - m - -L -F   -I8m - -Im - -L -F H I   - L -F  -@L -F  -8  -   -L -Fm - -  -L -F  L - - -  -L -  - -  -  @ -@  -  -   -  -  -  - - -L -  -  -    -   -  - -  -( 8 -J  -  - -   -  - - -   - - -  - -  -(8 - J  -  - - - - -   - -  - L -  -   - -   -    B  x0 :@hL #P.`Vl   p - -" -ɐɰ   -L -  -I L -  -I  -L - - -   - - -  -  - -4 -  m0 -0Hm -h -  -  - L -  -{L -   -WL - \ \ - -  -IL - - -  - - -  -   -  -  L -  -C - -  -   -  -   -   -  -  -     -  - L -  ` -`    -  -9   -   -   -J  -L -L -,$ -9$  L( -!(  - -9  -L -!  -  L -!  -J L - -! -  - -9i) -9  - -L -  -   -    -   -    -  +  -  -   L -  -    #      -    D D            -    -     -    - -   -   -  q    -     -   -   -   -    -   -    -    - ,         - L -l   -     -       -  -  -  -  -   - k k    -  -    -   -  -      - -~ -  H8 -  -h    -    & & L -}  -| 3    - i H  i I  -{   -z   -  -  -  -y   -5_ q L - L -x   -w  -v     -u    -t -   -  L -  - - -0 -  -  -si Hid Id  -r  -5  -t - -0 f  -[ -[  -si 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   -mL -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 UNq   -  L - -  -  -   -  -L -    -    - - -  - - -  -h  - -    -g  - -    -f  L -e " -d" -  -c  -b  -a  -d   - L -  y  -  L -  -a 2 -`2  -_L -   -^  -]  -_   -  -    - -  -80 L - -~ - -  -  -7  -\ ^  ! -[!  -Z   -Y            -   - -   -Y    -^     L -X   -W  - -   -W Q -VQ  -r   -  -U  -rL - -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 -  -  -  - HK IK  -Lo - o   -J   -       - L -   -      -J  -  -     -     LM -IM  -H H  I   -G   --  -F    ɀ     -F        -Eq L - L -D  -C  H   I    -B    -  -;  -A    ɀ55  -A  -@  -   H H     -   -  L -?   -> q L - -L -?  -= C   -<   -;P  I  -:G    -9  -88 H  hC  -7 D   -6  -C  -5 T   -  iLe  -  - e    D%  -6  -  -  - i ) D S -6SF W  - -D  -6F       0   )  8E 8) -ti   e e   -4L -4 J  -3L -n -HL -2* -  -1 -h  -0 -h -i  -0 - - - -  - -/ - j -a -j  -/ -hi   -h  L  -    - -. -  --  -/ -  -  -   -,  - -    -  -   >    -,   - - -  *      -, -  &  -!   -4  -0   -0  -- 8 -8   -L - -  -  -0 -    -0  --  E -E   -+ q L -f   -,. L -* - -   -)L -( -   -   -  -  =  -0 5@dL !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   - HR IR  -    -L - -  - - -`  - L -J)   - - -  - - - -  -i  -  -  -i  -9   -   -   - - - -  -  -  -  -  -  -B q L -   -.L -  - - ` -> ->  - -  - Lb - b  -    m -  : :  e -  -Hef fh   - - L -  -  -W  -L -   - - - -  -   -   -   -  r -Dr  -  - - -  -   -   -:  -  L -  -  -  -i H -i I  -   -  -     L -  -L -   -  L -s 182 -43 04 ,5 ( ?6cL - h - = qL - rL - s zu L - 1  -  -  - L -   -LL -  -{   L -  -/ -/ - -o - -   -  L -  -   - - S L - -  -   - -  @  -  -L - L - - e -e  -m - - m - -  -  L -  -  -L -   - =  - -  -  L - L - F3, u     Run until subroutine returnsCannot set breakpqoqiqnqtq q-q qpqrqeqsqsq qaq qkeyToo many breakpoints - press a keys                   S k i p   n ext instruction1 - 5               S e l e c t  active windowp                   U s e   a s  new PC valuef                   F o l l o w  instructionFw2w,w wtw w w w w wTwowgwgwlwew breakpointInvalid input - pFrFeFsFsF FaF FkFeFyFFP r e s s   a n y   k e y   t o  continueF4, h     Run to cursorr         Redraw  s c r e e n  a/z       Move up/downCursor    Move up/downo         Goto or i g i n  F7, space Step intoF 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 ue-         Page upPress F1 for helpq         QuitF1, ?     HelpGoto: SRCSHISP->PCX  AY  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 - - - - - - -  -  -  -  -  -    - -` -  - - - - -  - - - - - -  - - - -  - - -@ -  - - - - - -u - - - - - -m -  -  - -x - u -}: - -96 5  4  - 32 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   -    -   - -    -         - -tb -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 -    cRK -   - 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\? ~ [ @۵\&faX8' H': I:LG -GhT -Th -XP - a -4a H h Ih  g -Gg  - r -or  -4  -HD -DHs`A0 -f -Hf2 -2 -}`C=|W -WJJ&&6 -Q -Q > ->  -M M3Um0"<<`[  - -/ / - @ @ - -  -; ^0` d - .%u0,,L+ -+Z Z H Ipe7 7vv` l -lo oY Y-8 -8kk0))n -n{ {11L -L w wV`90y##LO -Oq q? H?H IHbe5 5S(`\9#:  e E   4;<= RZ7q5I M/@ -oY{*Kf _WQ>8nL?H $G -$ $+O$l3t/BE]e]]Nhmj| -P0Ml?")o&ys f }LOpEgtbk3T1A; e n!i qdx -%_@N*(ar,2wcRKz/:u~#'BSD{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 <?Gw>@۵\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*& #|vw@۵\ faX )0*I! !4I/ /  -   0 0   - 9 -9( ( -,,    -`.   -  -`"*+,-. #!/0( -90: -?">& 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` kzUQ  ,/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` ixsGZ@۵\faX< -  -  e   `     -     __SIM6502__runtime/incaxy.s -ca65 V2.15incaxyincax4tmp1,/home/hugg/compilers/cc65/asminc/generic.mac.size@L9CODERODATABSSDATAZEROPAGENULLUzna` ix% 1NQyP@۵\faXv   ! ! ##`  % %` !"! %)"& $! *(/ #'# __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` iy4L -Q -[M$ N$@۵\ʐ faXA v ~ ~ _      -J  -1(H H HQ Q hL -: D D   peX X n n     o o aa   `J, - W -P -PpE - -^1 -1v:j:  -i i  - + l -l   - - -= MM]]n -  -J   -q -quu  - -j 9  -i - ~ -  -J  -c c  !! `B - -  -   -- -  -  -8{Ie  s  -(Ie      -L H  I = -?''` `  -]    H I -]I -| -]} -]d I  '  -]  -|  -? -?   A -? -// `   - - -  - z z `6  -+*@8w -?JJ} -? -  -] -|  ` - -H -Th\H  h8  -+ be e0`F <<H   Z Z j h4`Yw  -      -  #+3;CScs777777 7 7GG!G1GAGaGGG VV V0V@V`VOOOOOOOOFFFFF   - -      2x  > U ,    ? yz{ %m % -%rk %%%C%j|U ?oysW 9C8O6pgtbkTA;^idx=5 -7_[@N aV,cKvz/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` iRh/7b34@۵\ faXfaX!S?x5* -*= -= - -- m( -( - 2m - -  -% -% -X`36 -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 Z45@۵\ L -   __SIM6502__runtime/jmpvec.s -ca65 V2.15jmpvec.sizeCODERODATABSSDATAZEROPAGENULLUzna` iuM@۵\\ "faX0mS - 2 2R -R  ,= = - ?;?; H B+ I+Y Y > 8 -8/O -aN [ -S[ * -S*II d -dc] -]A - AXXLF' - '`M4`0 0! -!6`H`^ -  T -T_ -  -`<1jWoWyWW2 -  -13LKL L5L`ZZZ45:2 =Y01+ -!c)[PJ 5 TKd-8 R F ZA'fhj/|-U-P0HNG?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 + +L2 +2L +LY +YBC7 Q*)c-8A-XTK +2Y )D5(d%G $Y#"2!  +  KT+X J./ghm\j/ - -hM[lHG?cB)(>P+8)&(6'EgE-DaOA3TA4eJ.i:g+Id4=5Fif75[@**2 U, 1 dT,@RKb. /Q`#JeSV0 ZRQ<SYX+C3 Dem/em-kernel.sca65 V2.19 - Git 6ac4aa4e2return0 em_librefptr1:/home/pzp/8bitworkshop-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_copyto9/home/pzp/8bitworkshop-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= +@ಏ _a&-./012**/ - h[cB)P(EDaOA:g+4if5*2 U, 1 dT@b. Q`JeV0 RSC3 3em/em_commit.sca65 V2.19 - Git 6ac4aa4e2:/home/pzp/8bitworkshop-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= + +@ಏ _a&-./012 +*/ - h[cB)P(EDaOA:g+4 +if5*2 U, 1 dT@b. Q`JeV0 RSC3 3em/em_copyfrom.sca65 V2.19 - Git 6ac4aa4e2:/home/pzp/8bitworkshop-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= +@ಏ _a&-./012!$,*/ - h[cB)P(EDaOA:g+4 +if5*2 U, 1 dT@b. Q`JeV0 RSC3 3em/em_copyto.sca65 V2.19 - Git 6ac4aa4e2:/home/pzp/8bitworkshop-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$@ wF[  @ಏ _a&- _5 _D _[ZE{ + {__ + ;;gg I  ( +(KK ! +! j +j9 +9w +wN0818H HH I  +HCP +P' +'  + h[[M +M +  +V55H+ + = + =  + 6 +6h`:XX`3\]^ + +b  + A  p_` +T S,bR>jP%!OG(=s< %e"6n{=#Z~hm\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 a em/em_load.sca65 V2.19 - Git 6ac4aa4e2:/home/pzp/8bitworkshop-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_copyto9/home/pzp/8bitworkshop-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_COUNT8/home/pzp/8bitworkshop-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_MEM6/home/pzp/8bitworkshop-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= +@ಏ _a&-./012&(*/ - h[cB)P(EDaOA :g+4if5*2 U, 1 dT@b. Q`JeV0 RSC3 3 em/em_map.sca65 V2.19 - Git 6ac4aa4e2:/home/pzp/8bitworkshop-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= + @ಏ _a&-./012 '*/ - h[cB)P(EDaOA:g+4 +if5*2 U, 1 dT@b. Q`JeV0 RSC3 3em/em_pagecount.sca65 V2.19 - Git 6ac4aa4e2:/home/pzp/8bitworkshop-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 VYx^X_@ಏ _a&- _5 _rE6 +6  +   + + + + ++L +#`FGHIJ=D+ @6 '$K/ - hKcB)(P2+<J)&('E-DaGOA:g+40if5**12 U, 1 dTI@b. H/Q4`Je3VB0 RFSC3 Kem/em_unload.sca65 V2.19 - Git 6ac4aa4e2 em_clear_ptr:/home/pzp/8bitworkshop-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_copyto9/home/pzp/8bitworkshop-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_COUNT8/home/pzp/8bitworkshop-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= +@ಏ _a&-./012')*/ - h[cB)P(EDaOA:g+4if5*2 U, 1 dT@b. Q`JeV0 RSC3 3 em/em_use.sca65 V2.19 - Git 6ac4aa4e2:/home/pzp/8bitworkshop-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$ PQ@ಏa  _ ((% 0+ +  + , , + + ! !5 +5&  +`3 3 ` +)*+,-  +,!3  ( 6 -")> 864$! +=5 +"7@ *, #B<+.common/getcwd.sca65 V2.19 - Git 6ac4aa4e2_getcwdpopptr1__cwdptr1ptr26/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXloop.size@L1overflowdoneCODERODATABSSDATAZEROPAGENULLUzna` i^ ef@ಏ _ _a'i ` !!    +"runtime/incax1.sca65 V2.19 - Git 6ac4aa4e2incax18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix% 1NQ$P@ಏ _av   + " " $$` & &` !"#"&  *"& $! + *(/ #'$runtime/incsp2.sca65 V2.19 - Git 6ac4aa4e2popaxincsp2sp4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` iGZucO@ಏaa _]*M; + 4 4N +N< <" "= +=   #00@ H@$ $J/ I/ EG  +8 1 +81   L' +'`I : +M`L  +& + +)`+jFoFyFF +, "- LCLLBL>./.4<"$(@/C,@85 >BC' NPj/ -?UP0HNG)(>FfPW9C)&O'E%gEDOb3L14;GeJi9+d4=5FN*(2 ,a1 V>,2.:QMBD0 Q<SYX+30joystick/joy-kernel.sca65 V2.19 - Git 6ac4aa4e2 +joy_librefptr1;/home/pzp/8bitworkshop-compilers/cc65/asminc/joy-kernel.incJOY_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLCOUNTREADJOY_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_count _joy_read_joy_clear_ptr:/home/pzp/8bitworkshop-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@L1copyCODERODATABSSDATAZEROPAGENULLUzna` ix= +~G@ಏ _a !/ -?NFPEDOLG9+4 +2 ,1 >.QM0 S3"joystick/joy_count.sca65 V2.19 - Git 6ac4aa4e2;/home/pzp/8bitworkshop-compilers/cc65/asminc/joy-kernel.incJOY_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLCOUNTREADJOY_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 kl@۵faX\ faX%faX3faXHWB H -H7 +_joy_count _joy_read_joy_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` i$qF @ಏ _a _" _0 _EWB G +G7 -7 Y +7 W  -Y   2 -2DD  -  \ -\4 -4g -gF0313C HC I  -H?G -G% -%  -hNN - -  9 - 9.WWH; +W   2 +2DD  + Z +Z4 +4d +dE0313C HC I  +H?F +F$ +$  + hLL + +  8 + 8.UUH: -; +:   / -/  - h6`,,`]IJK +/  +h6`--`[FGH  -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 +T  + =  _IJ @ ?(T><Z<#;BG)a/(g,28P7W:Wihm\j/ -?UPK0]lHNGo(&ysFP 92<8J)&O'%EDGOtbkL1A;Gn.^ i9+I40 F7@N*12 ,1 V>Iwc./H/:uQ4M3B0 < FS3Kjoystick/joy_load.sca65 V2.19 - Git 6ac4aa4e2;/home/pzp/8bitworkshop-compilers/cc65/asminc/joy-kernel.incJOY_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLCOUNTREADJOY_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_count _joy_read_joy_clear_ptr:/home/pzp/8bitworkshop-compilers/cc65/asminc/joy-error.inc +JOY_ERR_OKJOY_ERR_NO_DRIVERJOY_ERR_CANNOT_LOADJOY_ERR_INV_DRIVERJOY_ERR_NO_DEVICE8/home/pzp/8bitworkshop-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_MEM6/home/pzp/8bitworkshop-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= +~G@ಏ _a ! +/ -?NFPEDOLG9+4 +2 ,1 >.QM0 S3"joystick/joy_read.sca65 V2.19 - Git 6ac4aa4e2;/home/pzp/8bitworkshop-compilers/cc65/asminc/joy-kernel.incJOY_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLCOUNTREADJOY_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` iC^ ilKk@۵faX\ faX%faX6 -H  -  -H*  -h1h#  -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_count _joy_read_joy_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` iC^ il<k@ಏ _a _" _3 +H  +  +H)  +h0h#  +L8 +8 h6 `(456781'8):. ?/ -?KN"(FP2<J)&'%EDGOLG $!9+40 %12 ,1 >I.H/Q4#M3B0 FS39joystick/joy_unload.sca65 V2.19 - Git 6ac4aa4e2;/home/pzp/8bitworkshop-compilers/cc65/asminc/joy-kernel.incJOY_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLCOUNTREADJOY_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  Hq   q     q   h`        ! -0"&$.!5 -%*(,2 '+ __SIM6502__runtime/laddeq.s -ca65 V2.15laddeq1laddeqaladdeqsregptr1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqg"1z@۵\ $!   1    1  1   1   L -     - "  $  # __SIM6502__runtime/land.s -ca65 V2.15 tosand0ax tosandeaxaddysp1spsregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq0C ORecQ@۵\ 8 -         `  -          - __SIM6502__runtime/ldec.s -ca65 V2.15deceaxysregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq,<b$@۵\    -H 8e   h`   -    - - " $! % # __SIM6502__runtime/leave.s -ca65 V2.15leave00leave0leavey00leavey0leaveyleaveaddyspsp.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` iqM5o@۵\       -  - - -       $ L -`            - "  -,#'+ __SIM6502__runtime/lmod.s -ca65 V2.15 tosmod0ax tosmodeax poplsargsudiv32negeaxsregptr1ptr2tmp1tmp3tmp4.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq*Q9%((P -' @۵\ \W$ . .    ( (5 3 3/ ! !7 72 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  nh@۵m\ faX$j @ - @ : - -:#  <! !**  -  = -= 1 -1    -0HH3L" -" 8 -8  -4  - -' -'+ -+ -  - 9 -9E % -%  - .  -? -? - B -B  -Q) - $   7  - / -/ - -D6A -A -F2 - -2 - -G HGF IF C - C- H- IL -%`&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` iqg"1w@۵\ $!               L -     - "  $  # __SIM6502__ runtime/lor.s -ca65 V2.15tosor0axtosoreaxaddysp1spsregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq+ 7:Vg9@۵\l  -        L - -       -     __SIM6502__runtime/lpop.s -ca65 V2.15popeaxincsp4spsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqNg.%x@۵\ !  H   -     h `        -  " $! -% # __SIM6502__runtime/lpush.s -ca65 V2.15pushl0push0axpusheaxdecsp4spsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iql";}@۵\ %"  -  -8            L -      -    "& $! -% # __SIM6502__runtime/lrsub.s -ca65 V2.15 -tosrsub0ax -tosrsubeaxaddysp1spsregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqjj o{|@۵\   -  -      `       ` -     -         - __SIM6502__runtime/lsave.s -ca65 V2.15saveeaxresteaxsregregsave.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixu./@۵\ faX'"  8Iq 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!Iq  H"Iq           h`        # -0")&84$.! -*(,2/ #' __SIM6502__runtime/lsubeq.s -ca65 V2.15lsubeq1lsubeqalsubeqsregptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqVl#y01@۵\n# # / -/? ?T T Q Q G -G  5 5  -V VP P`4 S -SE E   -3LOL  + +F F((-: : > - M..L\ -\,U3U-Y" "< < 1 1IIiA A  I -i[H HW WI*iD D I^i]Z ZL@ -v@ B -B0H & & &2 2& *!6 6CC % %NJJ7 -HK  O O  ''$h9 9XX= =) )` # 6  VPE WDZ2O   5+F1A H% -?T"<9 Q=);;/GsB8S8_mj|U -P0MlHGoys fW9C8}LOpEtk3T1A4;eJn.!qx5 -F7[NarV,2RKvz/:u~ 'BSDZQ<YX __SIM6502__ common/ltoa.s -ca65 V2.15_ltoa_ultoapopax__hextab __longminstrsregptr1ptr2ptr3tmp1dopop.sizeultoaL2L1L10L3L5L6L7L9CODERODATABSSDATAZEROPAGENULLUzna` iqc\Ail@۵\zs!, ,   -  -5  `; ;7 7 ( ( ? ?&  < <$/ / =3 3 2G G5 5L -6  - - 0 & &: :&  *D&+ +& &  HA . .    ) )" "9 9 hC8 8H@  4 4 F FE EB 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` iqg"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" KL@۵\ !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/qtGs@۵\lA=  -)   " "  " "' '& &  ! !))  %L -    - ( (  $    ` #! -#& #'(#  ) -*-P0MH?")CLOE1AJ.! 5@N*K/ D+ __SIM6502__common/memcpy.s -ca65 V2.15_memcpymemcpy_upwardsmemcpy_getparamspopaxspptr1ptr2ptr3.sizeL2L1doneL3CODERODATABSSDATAZEROPAGENULLUzna` i< #;67@۵\ faXfaXPM  -1 1+   L  -   e 2 2% % e 3 39 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\CfaXUE  -  -  - "l $l_  - " "L -V "VR "  -<K  - "; "; # " # "+ "+ " " " "M "e "e "||L| -| " "  - "Q "fe "Het "th  - "r "  -< = -= " "N #N( "( #& "& "P "* "* " "` "e "me "yL - " "  - "c "e "HFe "h  -3 "3 "  -  - " " # " # " " " " " "v "e "e "L - " "  - " "e " Hex "xph q -q , ",b  "  -   -Z "Z " # "- #- " "B "B "O "O  " "]e "e "L -" "" "  -  "< "e "He "h  - "W%k "k)%  " " u  ule He  {h  -LL -  " " i I   H} }E 0 -0Y " "  -  -  -0OM  "/ " ^^5 " "  "L> -> " "  - " " " "  - " "8X $XH' $hL -, " "  -  "7 "  -.i H i I   - " "  -  -h  -  " "pI -/  " "   l e) )He  h  -\2 "2 " @ -@ " "  "Tj "jF  -  -m  -     " "E  -  -e He  h  - " "   - ? -? " " g -g  -  -  -o  -  I $ -$ " " [ -[i  -  -  ! - !  - -Q # #  -   - -a " "  -   - -  -  - 8 - -89 "96 "6  -<  -  -   -  - - "J "J  -   -L - # #H !  $H "HU !hA -L - : -: $G)z/z  -d  -  -  -DssL -L -Lw -wF$~ C;dZxne0NGHIJ%DwB3?:=:987685!4321?0/.+*)('@#"!0q$g[= 4u}) 4V;+t(&*3 x,ZBO"k2j 96JH N-lXhm\j|U PM]lHG?")o>&ysfW9C8}LOpEgtbk3TA;eJn$^!i5qId1x=  -F%7_ [@N*(ar3V4wcRKvz:u~ #'`BSDZ{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 %BEQD@۵\]    -  -  $ L -`  -  -    $ -%  __SIM6502__ runtime/mod.s -ca65 V2.15tosmoda0tosmodaxpopsargsudiv16negaxptr1tmp1.sizePosCODERODATABSSDATAZEROPAGENULLUzna` ixrR bc@۵faX, \<k}l -l7 7s -s3 3i i - ]yMM:m Hm a IaT T{6 -6L  -w , -w, w -ww  -0cS S ); ; Z -Z  F -F  UU, -$P%% D -dD f -f# ,J -$JL B -!B` -`v -!`n!L - 1 -1/N`e< <    `z,2 -$2>>  -j - --  -jA - -X`lmoum * Pn%L -L -L_ -_L -L -L -LY -YL -L -LW -WLr -r`"""op hS -h; h73iTh<VmaVVV _YWr]r\W[ZYYXW V U_T-SfRpGKFOCP6B*lsF !"&B<mj/-? UYjlHG?c"B >&ys F f= WXH 8uO6EgE D aO tA k;TA4G eJn$!i9:+Idxz=5F{%7K_@N_2U ,rdV> @ ctzb.Q W I` #J'eM S0<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</-? YjcB F = XH uE D aO A ;G  9:+z{K_2U ,d> @ tb.Q W I`JeM 0S 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+CW</-?  YjcB F = XH uE D aO A ;G 9:+z{K_2U ,d> @ tb.Q W I`JeM 0S 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`??!!QQ7% I% Hy -))0`Ga5 `03?DXkdNo errorHHNo driveqr availaqbleqqCannot lPoad drivPerPPInvalid  driver  Mouse ha4rdware n4ot found44Invalid Yioctl coYdeYYUnknown errorbcde? -s</-?  -Y0jc")B &F = XH uE D aO A ;1G $.!9:+z {%K*_2U ,d> ,@ tb./Q W I`#J'eM 0S +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]</-? YjcB F = XH uE D aO A ;G 9:+z {K_2U ,d> @ tb.Q W I`JeM 0S 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&]</-? YjcB F = XH uE D aO A ;G  9:+z{K_2U ,d> @ tb.Q W I`JeM 0S 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 4J -@_</-?  YjcB F = XH uE D aO A ;G 9:+z -{K_2U ,d> @ tb.Q W I`JeM 0S 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` iN X3u  @۵faX\_G=P9kOQ;Z#<hm\j /-? UGPY0]jlHG 3coB &yHF = 4X9H 8uKIB1OE D aO tA bk;/1A;G n.^i9: +Iz F{7K@N*F_2U ,dV> 2<w@ ctvb./:uQ W I`0JeM 0{<S JC  __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]</-? YjcB F = XH uE D aO A ;G  9:+z {K_2U ,d> @ tb.Q W I`JeM 0S 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&]</-? YjcB F = XH uE D aO A ;G  9:+z{K_2U ,d> @ tb.Q W I`JeM 0S 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\<UVWXYZNKBKW</-? YjcB F = XH uE D aO A ;G 9:+z{K_2U ,d> @ tb.Q W I`JeM 0S 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'A4^</-? YjcB F = XH uE D aO A ;G  9:+z  -{K_2U ,d> @ tb.Q W I`JeM 0S 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 Yj3c"B HF = 4XH uKIB1E D aO A ;/G !9:+z{KF_2U ,d> 2<@ tb.Q W I` #0JeM 0S JC 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` iq5E\_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` iqp99<;@۵\ 9:7    -  ))& &F  -*e% %He' ' hf( (j"f !,,# `F  e j f +_joy_count _joy_read_joy_clear_ptr:/home/pzp/8bitworkshop-compilers/cc65/asminc/joy-error.inc +JOY_ERR_OKJOY_ERR_NO_DRIVERJOY_ERR_CANNOT_LOADJOY_ERR_INV_DRIVERJOY_ERR_NO_DEVICE8/home/pzp/8bitworkshop-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` ixs"`a@ಏ _ a%"  (q$ $ ,q' ') )q   ++ +q    L0 +0 !"#$  )+ $' 0 #1")&  $! +% *(, #'+%runtime/ladd.sca65 V2.19 - Git 6ac4aa4e2 tosadd0ax tosaddeaxaddysp1spsregtmp14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix*.@ಏ _ a-*   1 1-q   .H 0q$ $  -$+ ` - &'( -  %  --?")> 98634;$.!=5 -%7*(,: #'<+ __SIM6502__runtime/mul8.s -ca65 V2.15 tosumula0tosmula0mul8x16mul8x16apopsregsregptr4.sizemul8x8@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iq  ,/[_.@۵\m     -&  e He h`  -     -   - __SIM6502__runtime/mulax3.s -ca65 V2.15mulax3ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq* 6 BEe_ D -@۵\    -&  - & e He h`  -     -   - __SIM6502__runtime/mulax5.s -ca65 V2.15mulax5ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqE R ^at_4`5@۵\   -&   - &  -& 8 -  HIe h`  -      !  __SIM6502__runtime/mulax7.s -ca65 V2.15mulax7ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq? L X[o_)Z*@۵\    -&   +"& q + + ' q   h`, !"#$ 1 $ ++16 -0")8634  .! +=5% *(,2/: #'%runtime/laddeq.sca65 V2.19 - Git 6ac4aa4e2laddeq1laddeqaladdeqsregptr1tmp14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixn"`a@ಏ _ a$!  1 -  1) )  1+ +" " +  11 1$ $ L( +( !"#$ " $)+1(,20")&  $.! + +% *(,/#'+%runtime/land.sca65 V2.19 - Git 6ac4aa4e2 tosand0ax tosandeaxaddysp1spsregtmp14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq =Rm@ಏaO       `  +      +     +runtime/lbcast.sca65 V2.19 - Git 6ac4aa4e2bcasteaxsregtmp1.sizeL0CODERODATABSSDATAZEROPAGENULLUzna` ix032@ಏ _aT       ` !"  +$   +  #runtime/ldau0sp.sca65 V2.19 - Git 6ac4aa4e2ldau00spldau0yspspptr14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix3Cb[\@ಏ _ a" $  +H! 8'e  "" h`#$%&' +#  ! +(*/-08314  . + 7 *,2/(runtime/leave.sca65 V2.19 - Git 6ac4aa4e2leave00leave0leavey00leavey0leaveyleaveaddyspsp4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` ixT5[\@ಏ _ +a%     ! +!  +$ $  & &  $ L +` &'()*    +$&!%+ ")3  $.! + +% *2 #+runtime/lmod.sca65 V2.19 - Git 6ac4aa4e2 tosmod0ax tosmodeax poplsargsudiv32negeaxsregptr1ptr2tmp1tmp3tmp44/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizePosCODERODATABSSDATAZEROPAGENULLUzna` ix*Q9,/.@ಏa a*\W $ $? ? (  G3 3 I I: 8 8Q< <  ' +'= " "/ / F4 4f f jDf# #fO Of. .f   5e! !J eK K 1 1e   +  +, ,e& &A A 66  `N+,-./ 081,03I!0?. 04&A 0" + 0/K 0$#O0 <'--F->-R-PMHG?")>& 9C8LO6E3A4; J.! +I=5 +F%7@N *(,2RK: #'BDQ<+0runtime/lmul.sca65 V2.19 - Git 6ac4aa4e2 +tosumul0ax +tosumuleax tosmul0ax tosmuleaxaddysp1spsregtmp1tmp2tmp3tmp4ptr1ptr3ptr44/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizemul32L0L1CODERODATABSSDATAZEROPAGENULLUzna` ixn"]^@ಏ _ a$!   -  ) )  + +" " +  1 1$ $ L( +( !"#$ " $)+1(,20")&  $.! + +% *(,/#'+% runtime/lor.sca65 V2.19 - Git 6ac4aa4e2tosor0axtosoreaxaddysp1spsregtmp14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix2 >A@@ಏ _al     +  +     L + !" + &   + + #runtime/lpop.sca65 V2.19 - Git 6ac4aa4e2popeaxincsp4spsreg4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixUn.RS@ಏ _ a!* *& &H / +/)  +  ++   -# #h  `  !"#$*& +#/ 3 -0")&1  $.! + % *(, #'%runtime/lpush.sca65 V2.19 - Git 6ac4aa4e2pushl0push0axpusheaxdecsp4spsreg4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixs"mn@ಏ _ a%" . .8 +  - -"   2 2$ $ ) )  L% +% !"#$. $-2)%&3 -0")&31  .! + % *(,2/ #'+%runtime/lrsub.sca65 V2.19 - Git 6ac4aa4e2 +tosrsub0ax +tosrsubeaxaddysp1spsregtmp14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixu +jk@ಏ _a'"   8(Iq .H I0q$ $ "4 4& & + +  h'L + !"# &$4+-5 -0")&314  .! + +% *(,2/ #'+$runtime/lsub.sca65 V2.19 - Git 6ac4aa4e2 tossub0ax tossubeaxaddysp1spsreg4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix6.@ಏ _ a1,  3 38/I*q +  +0 0H 2I(q  & &7 - -   " " $ $h` !"# 3 +0 &-"$3 8 -0?")&96314;  $.! +57 *(/ #'+$runtime/lsubeq.sca65 V2.19 - Git 6ac4aa4e2lsubeq1lsubeqalsubeqsregptr14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix,[#"%,-$.@ಏ _a/' ' 0 + 0C C[ [ Y Y P +P  + 8 8 `] @ +@H He e +L 9 5 5V V ..M+ + <# +#A ALW +WEE-/> 3 3QQ  F F" " c +c^ ^, ,L +\ D +DBH\ 92 && && &6 6*) ) 4 4$$J +H(S SO O: : TTXh * *aa  `_01234 + +'e)  +Y  +C[A3 *  + VF"^,&4SO  -&  -&  e  He h`  -         __SIM6502__runtime/mulax9.s -ca65 V2.15mulax9ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqs B6V@۵\< -I iH -Ii  h`  -      - __SIM6502__ runtime/neg.s -ca65 V2.15negax.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq-0Vo/@۵\S - -     L -             __SIM6502__ runtime/or.s -ca65 V2.15tosora0tosoraxaddysp1sptmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq#$ADbQCR@۵\ 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]faXr]F - ? -?w w1_ _, -,)+)BBd HdA A* I* RE ~ -C~ . -C.ff  - } -}L= +8H56: =#=cP0YD;@;fhmjU -0lG?oys f9C8LO6pEgtk3T1A eJn.i +dx5 +F%7_[@N *r,2wKvz/:~`SQ+5 common/ltoa.sca65 V2.19 - Git 6ac4aa4e2_ltoa_ultoapopaxpopptr1negeax__hextab __longminstrsregptr1ptr2ptr3tmp14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510dopop.sizeultoaL2L1L10L3L5L6L7L9CODERODATABSSDATAZEROPAGENULLUzna` ixj\A + @ಏ _a(zs # #  + P +5PH H +  +`4 Q Q/ /< < S S0 0N) )F F& &+8 8  =  LO +O? ?* *V V X! !&: :& &  *5&. .&K K& [J JW W' ' C C ] ]\\  1> >UB B$ $I I6 6- - " "2%%  `)*+,- 9$ 9?.WBI  9H +)&!:" 9V  +9*K6 9#/  90F8O57P7T77_mjU-]lHG?")o& fW98L6Egbk3T1A4 eJ$.^i +Id5 +F%7_@ aV,2cRK/:#'`BSDQYX.runtime/ludiv.sca65 V2.19 - Git 6ac4aa4e2 +tosudiv0ax +tosudiveaxgetlopudiv32addysp1spsregtmp3tmp4ptr1ptr2ptr3ptr44/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeL0L1CODERODATABSSDATAZEROPAGENULLUzna` ix6)_|H ~@ಏ _ a!     + ! +!    $ $  `"#$%& +$    ! #("  ! + +  'runtime/lumod.sca65 V2.19 - Git 6ac4aa4e2 +tosumod0ax +tosumodeaxgetlopudiv32sregtmp3tmp4ptr24/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixn"`a@ಏ _ a$!  Q - Q) )  Q+ +! !  Q1 1# # L( +( !"#$ !#)+1 (,2")&  $.! + +% *(,2/#'+%runtime/lxor.sca65 V2.19 - Git 6ac4aa4e2 tosxor0ax tosxoreaxaddysp1spsregtmp14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqH, LM@ಏa 4/     +     +   ""      L +`!`    # 0?)> 9C8E31A$%7@*2/: D+common/memcmp.sca65 V2.19 - Git 6ac4aa4e2_memcmppopaxpopptr1return0ptr1ptr2ptr3.sizeLoop BumpHiCntCompNotEqualGreaterCODERODATABSSDATAZEROPAGENULLUzna` ix476@ಏ _aS     L + !"#  &   + + $ runtime/or.sca65 V2.19 - Git 6ac4aa4e2tosora0tosoraxaddysp1sptmp14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz  @G V Y !z0X 1@ಏxa" _V +  +   +     +    2 + 2    +  8 3 3  +   !w wr r{L\ +\S SJ }}  +   + +61. .Hy1L Lh_**)  + W W" "Z  vL +F  +      +  $e He lh  + B Bc  m ( + (   4] < <kL +  +;  + e U Ue q q % + %  +%j jH%' ' h  +  u u/ /   + e7 7 Qe@ @  O O N +Nz  + 1 1d d   +  + t + t 8 Hs s h P +P e +e G +GY8  + h,  > + > p~ ~ ` ` C    g +g  +  +  +  + 8?9 9H: : h0  +  +,M,   + 8E| |HV Vh&5  + -i iaH HM M    K K  + f +f  +  +  +     +   +  + 5 D +    o +o^ ^  = Rx xT TnHAI I +[##hbL +,-./0*'g%e$PG#"No!  (%>2tXf wrW" &ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 +F%7_[@N*(arV,2wcRKvz/:u~ #'`BSDZ{Q<YX+1../libwrk/none/pmemalign.sca65 V2.19 - Git 6ac4aa4e2cc65 v 2.19 - Git 6ac4aa4e2spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_malloc_free_posix_memalignpushaxdecsp6L0002ldaxyspL0001.sizeL0006decax1L0014subeqyspL0009pushwyspcomplax staxspidxdecax4ldaxidxstaxysptossubaxL000Bincax4L000FL0013addyspCODERODATABSSDATAZEROPAGENULLUzna` ix{  N +O@ಏ _aD       ` ` ! "   + "runtime/popa.sca65 V2.19 - Git 6ac4aa4e2popasp4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix #&%@ಏ _aSH        hL + !" $   +  #runtime/popsreg.sca65 V2.19 - Git 6ac4aa4e2popsregincsp2spsreg4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix! ..\_^@ಏ _ar   +  +   `    ` !"# +   + %  + $runtime/pusha.sca65 V2.19 - Git 6ac4aa4e2pusha0sppushaysppushasp4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix 1ORQ@ಏ _aq e      L + !"# + '   +  $runtime/pushb.sca65 V2.19 - Git 6ac4aa4e2pushbpushbidxpushaxptr14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` ix9<;@ಏ _aX8   #  L! +! !"# !  '"  ! + +%  #$runtime/rsub.sca65 V2.19 - Git 6ac4aa4e2 tosrsuba0 tosrsubaxaddysp1sptmp14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix ' 365@ಏ _a]     +  +  # #` !"# #  +'   $! + + #$conio/scrsize.sca65 V2.19 - Git 6ac4aa4e2 _screensizepopptr1 +screensizeptr1ptr24/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` il$<  @ಏaa4\ _q]F + > +>v v0^ ^+ ++(+(AAc Hc@ @) I) QD } +C} - +C-ee  + | +|L<  -`tc`p p; -;|T`D F -F`2P -P9 - -X`!ss]e]r]] -t &kuL -L -L{ -{L - LO -OL -L -L -`LLLvwYw_ApGd*G{ O \S#UKTIQPON OM  L{KFJ I&?\L$} -P<ym\/ - UPYhlp0M][HN?3cB)(ys FPX9C+8)L(16pE-DaOt}bT/1ZA;GeJn.6.!gq+Id4 xxi~%f75m[@*N*q_2 rU, a1 T,V]|22w\cRKtvb. /:uQ^W` s50MBSDV0 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 +`sb`o o: +:{S`C E +E`1O +O8 + +W` rs\e\r\\ +s %ktL +L +Lz +zL + LN +NL +L +L +`KKKuvXv^@oFc)Fz N [S"TKSHPONM NL  KzJEI H%>\K#| +O<ym\/ - UPYhlp0M][HN?3cB)(ys FPX9C+8)L(16pE-DaOt}bT/1ZA;GeJn.6.!gq+Id4 xxi~%f75m[@*N*q_2 rU, a1 T,V]|22w\cRKtvb. /:uQ^W` s50MBSDV0 ZRSC3 wserial/ser-kernel.sca65 V2.19 - Git 6ac4aa4e2return0 +ser_librefptr1ser_irq;/home/pzp/8bitworkshop-compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_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 @@ -20480,11 +26944,11 @@ 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_ioctl_ser_clear_ptr:/home/pzp/8bitworkshop-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[NcB)FPX(EDaO}ZG6g+4 x -i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 ` __SIM6502__serial/ser_close.s -ca65 V2.15//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +r@ಏ _a4YZ[\]^H+S+V<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x +i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 _serial/ser_close.sca65 V2.19 - Git 6ac4aa4e2;/home/pzp/8bitworkshop-compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_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 @@ -20494,10 +26958,10 @@ 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 -\]^_`KS1VE]<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x -i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 a __SIM6502__serial/ser_get.s -ca65 V2.15ptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ixa uMN@ಏ _a4*Z  L +[\]^_JR0UD\<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x +i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 `serial/ser_get.sca65 V2.19 - Git 6ac4aa4e2ptr1;/home/pzp/8bitworkshop-compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_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 @@ -20507,12 +26971,12 @@ 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>+2Z -_<y/ - Yhlp[NcB) FPX(EDaO}ZG6g+4 xi~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 b __SIM6502__serial/ser_ioctl.s -ca65 V2.15popaptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ixk |no@ಏ _a44[ +* *   +L +\]^_`N=*1Y +^<y/ - Yhlp[NcB) FPX(EDaO}ZG6g+4 xi~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 aserial/ser_ioctl.sca65 V2.19 - Git 6ac4aa4e2popaptr1;/home/pzp/8bitworkshop-compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_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 @@ -20522,30 +26986,30 @@ 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\4ZfaXhfaXwfaXZE -  -  RR -I : -:ii 3 -3-  -N -N -m0M1Me He I  -H]o -o9 -9  - h }} +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` i$ J v<  @ಏ _a4Y _g _v _ZE +  +  QQ +I 9 +9hh 2 +2,  +M +M +l0L1Ld Hd I  +H\n +n8 +8  + h ||  - U -UGHW - W -  H -H  -hP`!((E` + T +TFHV + V +  G +G  +hO` ''D`  -  [   -0 >Y63c:pHo2Y^QaUE WOZ%<hym\j/ - U-PYhKlp0][lHNG3coB)(&ysFP X92+<8J)(1O6E-DaGOt}bk/ZA;Gn.6.^ ig+I4 x0 Fi~f75m@*N*q1_2 rU, 1 T,V]|,I2ww\ctb. /H/:uQ^W4`s50M3VB0 R< FS+C3  __SIM6502__serial/ser_load.s -ca65 V2.15//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +  Z   +/ =X52b9oGn1X]P`TD VNZ$<hym\j/ - U-PYhKlp0][lHNG3coB)(&ysFP X92+<8J)(1O6E-DaGOt}bk/ZA;Gn.6.^ ig+I4 x0 Fi~f75m@*N*q1_2 rU, 1 T,V]|,I2ww\ctb. /H/:uQ^W4`s50M3VB0 R< FS+C3 serial/ser_load.sca65 V2.19 - Git 6ac4aa4e2;/home/pzp/8bitworkshop-compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_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 @@ -20555,11 +27019,11 @@ 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 -\]^_`IQTD]<y/ - Yhlp[NcB) FPX(EDaO}ZG6g+4 xi~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 a __SIM6502__serial/ser_open.s -ca65 V2.15ptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +_ser_ioctl_ser_clear_ptr:/home/pzp/8bitworkshop-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_COUNT8/home/pzp/8bitworkshop-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_MEM6/home/pzp/8bitworkshop-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 vNO@ಏ _a4*Z  L +[\]^_HPSC\<y/ - Yhlp[NcB) FPX(EDaO}ZG6g+4 xi~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 `serial/ser_open.sca65 V2.19 - Git 6ac4aa4e2ptr1;/home/pzp/8bitworkshop-compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_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 @@ -20570,8 +27034,8 @@ SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_ 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[NcB)FPX(EDaO}ZG6g+4 x i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 ` __SIM6502__serial/ser_put.s -ca65 V2.15//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +p@ಏ _a4YZ[\]^JG*U*V<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 _serial/ser_put.sca65 V2.19 - Git 6ac4aa4e2;/home/pzp/8bitworkshop-compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_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 @@ -20581,9 +27045,9 @@ 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(X0]<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 a __SIM6502__serial/ser_status.s -ca65 V2.15ptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ixa xPQ@ಏ _a4*ZD D' 'L +[\]^_L!.D'W/\<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 `serial/ser_status.sca65 V2.19 - Git 6ac4aa4e2ptr1;/home/pzp/8bitworkshop-compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_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 @@ -20593,17 +27057,17 @@ 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` iC^ il8U -kV -@۵faX\4ZfaXhfaXz! -!H  -//6 -6HP  -he -h@  -Ly -yhr:`K{|}~xGyp|RE!6P*<y/ - YhKlp[N3c"B)(FPX2+<J)(1E-DaGO}/ZG $6.!g+4 x0 i~%f5m**q1_2 rU, 1 T,]|I2w\tb. H/Q^W4`#s50M3VB0 RFSC3  __SIM6502__serial/ser_unload.s -ca65 V2.15//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` iC^ il +k +@ಏ _a4Y _g _y + H  +..5 +5HO  +hd +h?  +Lx +xhq9`Jz{|}~wFxo{QD~ 5O)<y/ - YhKlp[N3c"B)(FPX2+<J)(1E-DaGO}/ZG $6.!g+4 x0 i~%f5m**q1_2 rU, 1 T,]|I2w\tb. H/Q^W4`#s50M3VB0 RFSC3 serial/ser_unload.sca65 V2.19 - Git 6ac4aa4e2;/home/pzp/8bitworkshop-compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_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 @@ -20613,2835 +27077,1823 @@ 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` iq9(a mpeVoW@۵\      -    - - -   -  `  -      -   - __SIM6502__runtime/shelp.s -ca65 V2.15popsargsnegaxpopaxsregtmp1tmp2ptr4.sizeL1L2CODERODATABSSDATAZEROPAGENULLUzna` iq2P \_trE^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 -.AL -7B  L  -W DL -wFL -HL -IL -(ML -]PL -}SL -UL -WL -X7L -YYL -ZL -aL -bL -cL -@d8L -jL -m\L -pppLp -7pwL -^xL -~yL -L - - -L -  -   ) - )  - i HPi I  - - -- --L -  -    -   - i~ H~,i I  - - -- --L - H I  - H. I.  -  -   -   -  -  -  -  l  -   - d  -  - -  -L - H I  - H` I` < -<  -   -   le He h ; -;  -   -   - B -B   -  -  -  -LV -V H I  - H - I -  -  -  -   -L - H I  - H - I -  -  -  -  1  -  -   -  -  -  -L -G HG I  - H -9 I -9  -  -  -   -L -  -   -  pI H IL - 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&  -  -   -   lIe HJe Fh  -  -L -  -    j  H - I -L - H I -- --L - H I c -c Hz Iz  - [ -[   -  } - }i Hi I  -  -L - HM IM  - Hb Ib  -  -   -   - i Hi I _ -_  -L - H I  - H I  -  - ^ * - *  - iL HLi I f -f  -   -   - i Hi I  -   -  -    -  -    -  -   - x -x  -   -   le He h  -  -L - H I  - H - I -  -  -%  - T  -L - Ho Io  -s Hs0 I0  -  -K  -   -  -  -L - HQ IQ  - H - I -  -  -   -  / -/  -  -L -  -  . - . WpSSI H IL -U H I -- --L - H I U -U H I  -  - A  -   -L - H I  - H I  - r -r   -   le He h  -  -   -   -  -   - - - i - i -  -L - H I  - H - I -  - : -: q R - Rd  -  -  -LY -Y - --D --D  - - -m - -m - - -E  - L -    - -- --  - - -  - - -d  -L -   -| |O O  -  - -  -L - h -hL - %.3s %.3s%3d %02d:%02d:%02d %d% 0 4 d - % 0 2 d - % 0 2 d  %]0]2]d]/]%]0]2]d]/]%]0]2]d]]%02d:%02d:%02dWednesdaySeptemberFebruarySaturdayNovemberThursdayDecemberJanuaryOgcgtgogbgegrggTuesdayAugustFridaySundayMondayMarchAprilJune%03d%.3sJNuNlNyNNMay%4dAMampmPmMmm//nn""""""""""""""""""""""""""""""""""""""""44& - - -u -L -{ - -i - -` - - - - - - -V - -r$ -66|6z6y6Xx6w6_fxs6r6q6iRp6o6}n6)>*.m6O6aN6 #/M6(?Z![r -:L6I6;<;Bye cU @ |O m\j|U -P0M]lHG?")o>&ysW9C8}LO6pEtk3T1A4;eJn$.!i5qI1x= 5 -F%7 [@N*(r3V,2 4wRKvz/:u #'BSDZ{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;@۵\ faXL E;    -  5 52 -2)-!i61 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[e8@۵\x   -  -     ` -     -      - __SIM6502__common/strlen.s -ca65 V2.15_strlenptr1.sizeL1L9CODERODATABSSDATAZEROPAGENULLUzna` iqi7 ?@@۵\ 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` iq3Q ]`B_@۵\ vHCI $I   -     - ) )  +''    - -("" ! !,,%  #   &&   `  -      )!   H- 0?")>& 9E314$! 5%@*(2/: 'B+ __SIM6502__common/strncpy.s -ca65 V2.15_strncpypopaxptr1ptr2tmp1tmp2tmp3L1.sizeL2L9L5L3L6L4CODERODATABSSDATAZEROPAGENULLUzna` ixn1i"k@۵\ faX$]OIB @I9  ? -?& &  A -A$ $. . %0%7 7! -!),/8 >" "+ + - )1  C8 D   - -)##2 F F;;5 50` :`*`%&'() "  -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` iq6* 698@۵\ 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  33 ( (``+ - -  %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` i0%2 -?I8  @۵\5\RfaXje -e  -{ {  f -f$S$ -6 H6a a I N  -X  -X9l  -  -l - p -p*I -9I==L -9, -,[[` o o} -}`H^ -^` -` -  -k k`w  -  -` -95 -5 - -`tgix( >          -    3    m u  T  K C<LtLLDLLXLL(L%LL~LLPL"LLSLLLL`qqqv { aok61wql7lf|$k`f4e6d3c0b-a*S`'_$"^!P]\~[Z%Y(XW XV UDTStN'CM%KL$K#TJ"I!uHGFmED3CBA @ ? -> =<;:9^8>e5F9q:I< ymj/ |- ? -PhMlHG")B )(&s F P= 9CH 7 +8u)}&L(O6'EE -D tA }bk; 38 T/1A4G eJn$6 .!i9 : gn+Id4xzo5Fi{~%f75K@*N*_2 , a1 r,]|> ,22ww\@ vcRKtv. u~WI `#0JeBSD0 {QXC 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` ixMa mpp -o@۵\\Rp pI I  -3 3M M  -    - u ul l' ' h h- -  ( (    [ [ X X] ]C C = =8 8 ^ ^  \ \ 09Y9$$ $!!yc c ? ?  -   - ZAZ$   -  -  R -R { -{b)bm m -  S S -   f -f) )D DN N -  - . -.  L -` - pI[XC8\N 3Ml-(mS)D ]=^ - u'h$c}.|f`VC#R{B p@< ym\j/ - ?  -Ph]lHG")oB )&yF P= 9CH 7 8uL(6pE D tA }bk; 38 T1A4;G eJn$6 !i9 : gn+Id4xxzo=5 -i{~%f75K[**(_2 , a1 ]|> ,2ww\@ vcRKtvz. :uWI `#J'eBS0 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 -&tuqF< y/ - ? hB ) F P= H 7 u(E D A }; 8 G 6 9 : gn+4xzoi{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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\RVTr< y/ - ? hB ) F P= H 7 u(E D A }; 8 G 6 9 : gn+4xzoi{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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` iq - -      @۵faXL\RfaXfaX - @ -@ -` H  - -` -I]is -s -I6i2 -`U -U8 -  - - -  - -- -  - -8 -Q -Q{ -{ - -M -1 -1, -AAL -`M. -.  0 - 0  `P P  a a_ _ `  -i - - W -W  -| - -  - $ Lz - z`  -i - - = -=  -| - - T - TL -^ -  -  -  -  -  - 7 7GGL - -- -`p -dd - g -(g\ -\OOL -lJy J,9 - 9 - 8Y - Y -  -  -   -mo -o -m -: -: -JJJ&& Jfx'x - - - - - -8 -8 -8 - -  -mt - t - m -  -  m -m -OOL -JDv vJ, -  - 8 - - - -  -m - -m - - - JJJ''4 4JEn'n - - - -~8 - - -u -u  -mZ -Z -mk -k -  - L -#     ) }a7P_n@bRw u{Q -ZkUP o:8O Yt H -G9L0T=Wg< hy\/ - ? U-h0]lHG?)oB )& F fP= WCH 7 uL(Eg E D tA }k; 38 A4G eJn6 ^i9 : gnq+Id4xzo5Fi{~f75K_[**(_2  , a1 r]|> 2w\@ vctv. WI `J e`B D0 ZYX+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\RtC -C\ \+ -+| |2 -2( ( -! !`6(!\|9W28}C+e< y/ - ?  hB ) F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzo i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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` iw   @۵faX\RfaX; -D -D__ + -+N -N`3S+7DNsc< y/ - ? hB )(F P= H 7 +u)&('E -D A }; 8 /G  6 .9 : gn+4xzo  -i{~f5K**_2 , 1 ,]|> 2w\@ vt. WI `0Je0 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 -ehL -VeV:ot  < y/ - ? hB )F P= H 7 u(E D A }; 8 G 6 9 : gn+4xzo i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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 sdM N @۵faX\R&' -'u -u`EJ'uu<< y/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzoi{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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`&:;vY< y/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzo  -i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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 sYA B @۵faX\R - <`UF w< y/ - ?  hB ) F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzo i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzoi{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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 -J1' -' 5 -5`>TJ6)'55[*y< y/ - ?  hB )F P= H 7 u(E D A }; 8 G 6 9 : gn+4xzo i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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` ix OV= @۵faX \RfaXu3 3_ _<, I , H $yA -AOO`5 W0x?\vNo errorNo driver availableCannot lLoad drivLerLLInvalid driverMode notI supportIed by drIiverIIInvalid MfunctionM argumenMtMMFunctions not supsportedssInvalid 6font fil6e66Out of rzesourceszzUnknown /error//A driver) is alre)ady inst)alled))zS< y/ - ? h0")B )(&F P= 9H 7 +8u)&(6'E -D A }; 38 /14;G  $.6 .9 : gn+4xzo5i{~%f75K***(_2 , 1 ,]|> ,22w\@ vt. /WI `#0J'e0 +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 }mS T @۵faX\R&( -(wG/`%F({>< y/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzoi{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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 scE F @۵faX\R&' -'u -u`ED;'u|<< y/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzoi{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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 scE F @۵faX\R&U -U' -'`uEaU'} < y/ - ?  hB )F P= H 7 u(E D A }; 8 G 6 9 : gn+4xzo i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzo  -i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzoi{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzo -i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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` ixV(~ E: ; @۵\\R M -M$7 70@@  -R -R -  -G Gg -g`7Gl0MCgBRf-< y/ - ?  h")B )&F P= H 7 u(E D A }; 8 G $6 9 : gn+4xzo -i{~%f5K*(_2 , 1 ]|> w\@ vt. WI `#Je0 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 qr@۵faX -\RfaXfaX.#( -(@@ -` - W -WR Rs -s" " } } T -T -L -R"}gDA~?rT=Ws;j(.0< y / - ? hC0 3"B )(&;F P= 4H 7 u)(1'E D A }; 98 4G :$.6 !9 :  gn+84xzoi{~%f5K***(_2 , 1 >]|> ,22<w\@ vt. /WI ` J'e0 =+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` iV  89@۵faX\RfaXfaXWJ" - -"   - -# #L -U U W - W A - A93 - 3iXX {i(( V 4 4 oo ] -]< <e @ @  T T   - -L -` ]7Gf#gN@>M=WA3;y"W< y / - ? U PhCMHG ?3")B )(>;F P= 49CH 7 u)L(1O6'E D A }; 98 T1A4;G :J6 9 :  gn+Id84xzo=5 -i{~f75K_[*N**(_2 , a1 >]|> 22<w\@ vRKt. :WI ` #J'eBS0 Z=Q<YC 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 sdF G @۵faX\R&; -;U -U`&B ;UY< y/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzo  -i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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 sdF G @۵faX\R&; -;U -U`&C;UY< y/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzo  -i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzo -i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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\RfaXfX= & -& @ -@ N - N -G -  -  -] -] - W -W x -x! -! -  -  Y - Y  - H HL L s - -s 6 - 6  M -M K -K  - + -+L -`RHLx+KzpMW0s&\ZrsXYWTN6Rl@E}!DQ]7614oX.< y/ - ?  -hH?"B )(&F P= CH 7 +u)&(6'E -D A }; 38 /A4;G  J$.6 .!9 : gn+4xzo5i{~%f5K@**_2 , 1 ,]|> ,22w\@ vt. :WI ` 0J'eBD0 +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 xiV W @۵faX\R& - -`2=r.< y/ - ? hB )F P= H 7 u(E D A }; 8 G 6 9 : gn+4xzoi{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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/ - ? hB )F P= H 7 u(E D A }; 8 G 6 9 : gn+4xzo i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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 -J1 -1 ' -' - - L5 -5^|'j*d5M<J1L A< y/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzo -i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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` ix3$W be d @۵faX\RZ -Z* -*{ -{I -I ' -' - 4 -4= -=i -i`'O/Z*Nm 49U{I8|=ij < y/ - ?  hB ) F P= H 7 u(E D A }; 8 G 6 9 : gn+4xzo i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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\RNH|J1 -1( -(!!h5 > ->Lj -jj>djL(8}1[< y/ - ?  hB )F P= H 7 u(E D A }; 8 G 6 9 : gn+4xzo i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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 -tu@۵faX\RfaXfaXfaXXC - - - -ii -, E -E < -<3  -` -` -0__ H I   -Hy -D -D  -h// - ` - -W -W  -L - L - -f - -f # -#LF -F - -  u   8NpA<E#:cF6=L5fX(< hym\/ - ? U-PhK0HGoB )(&F P= W 92H 7 +<8uJ)&(O6p'gE -D GA }b; 8 /A;G n.6 . 9 : gn+I4x0zo Fi{~f75K[@*N*1_2 , a1 r,V]|> ,I2w\@ vct. /H/:uWI 4`0Je3B0 < 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` i5I~6<=@۵faX\RfaXNA7 L -L0qqx -x3 -3. -.pIMmm$$ : -:0rr -c -cQ -QpI50 `+ +` `X [ ? 1 =+C3.BcQkAON1M?LxL[:< y\/ - ? -h0M]H?B )>F P= W9H 7 8uL(E E D A }b; 8 4;G J6 ^9 : gn+I4xzo=5Fi{~f75K@*_2  , 1 V]|> w\@ vRKt. /:WI `J e`0 Q<XC 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` iho} - @۵faX\RfaXfaX,z - ,w w+ +HrH  -  - hh  - - aa  -Dy -1 -1&y -f -f`! -  m - m H> >H H H v v  - [i k - ki99Q Q\  % p -pH, L -Lh  4 4 - - - -  - H -H  WWh h hd dh) `lp:V%w+%4Lg]ebK>Z=mk<;81f< ym\ / |- ? U-hClHG ?3"oB )(>;yF fP= 4WH 7 8u)}(1p'gE D A }bk; 398 1AG :e Jn$6 ^!9 :  gnq+Id84xxzo= i{~%f75K_[@***(_2 , a1 >V]|> ,22<ww\@ vcKtvz. uWI `#J'eB0 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` ixS, Q@ A @۵faX\R!H+$ $7 -7@o o -  -Q Q -h  -L -$oQb|9Y78!^< y/ - ?  h"B )F P= H 7 u(E D A }; 8 G $6 9 : gn+4xzo  -i{~%f5K*_2 , 1 ]|> w\@ vt. WI ` Je0 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 -J0 0& &`^){^0&Jl A< y/ - ? hB ) F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzo -i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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 -I0 0& &`]){]0&Im @< y/ - ? hB ) F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzo -i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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 xjS T @۵faX\R&( -(v -v`FJ(v=< y/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzoi{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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 -FhOFY,xF=:([< y/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzo  -i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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 -whNwX'G}= Z< y/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzo  -i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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 }zd e @۵faX\R+H H/ /L% -%?H/Z[%(< y/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzoi{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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' -'`wfI=] ' Z< y/ - ? hB )F P= H 7 u(E D A }; 8 G  6 9 : gn+4xzo  -i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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 sS8 9 @۵faX\R. -.`%<[.u< y/ - ? hB )F P= H 7 u(E D A }; 8 G 6 9 : gn+4xzoi{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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` isYSru t@۵faXfaX\RfaX7D3 -  - -  -q -q - g - g  -K -K -> Q -8Q, -0   -ppE  -8   -  -H] -ho`1 /[%YMqX?KNLK wn  8h\j UG C e0zG~3 "(; H A  ]f4 _C+x8K`)|I LtB 1 6E6 o- bD 9 \v / i1:  eJ..  gId8 u}{5 -Fn7? _f[*N*F a> , 2 < E cK/h@ y W50 P`Z= 7 wJY __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 -FhOFWwG}W < y/ - ?  hB )F P= H 7 u(E D A }; 8 G 6 9 : gn+4xzo i{~f5K*_2 , 1 ]|> w\@ vt. WI `Je0 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` iL"n z}1 T|U@۵faX\RfaXfaX - W -W99 -H#> ->HI  -hhL\ -\T -T`\6.T5W>j< y/ - ? hK"B )(F P= 2H 7 +<uJ)&('E -D GA }; 8 /G 6 .!9 : gn+4x0zo i{~f5K**1_2 , 1 ,]|> I2w\@ vt. H/WI 4` 0Je3B0 FC 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/\RfaXfaXfaX 1 1  -"fv vɀqjxV` -Z -Z R R  -Lu -u y$ - $Hy - hi`I8y - H9Iy - hQ` - H H6 HLI -Iwi" 0 -0i_ _ t t   - -  -b -b  -&@ -@7 -7  -  -2 - -L* -*y  -2 - -  - + -2+c -c[ -[$  - - ) -) - - -nn$; ;Phm mhA hG `     -ez,Rkjuh)PCZBhAI0@b<$B< y\ / |- ? PhC0]G 3)B )(;ysF P= 4CH 7 u)}L(16'EE D A }b; 398 T14G :e6 ^9 :  gn+84xxzo5 -i{~f5K_***(_2 , a1 >]|> 22<ww\@ vcKtvz. :u~WI `#J'e`D0 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/HH # -# h h82 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` iqe,/hi@۵\ 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` ixG9% @۵\ 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` ixE9   @۵\ faX.,   % % & &j)He " " 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@۵\faXt~i  - - -" "I6 - #- -I0 -0  -< <$ $ + -+  C C /e/ /  ) )e& &: : -F F9 9A!! 5 5  -LI -2ID -D44` ( (=; -;8 -8E >    -, H  B I1 1 G G 3 -3 - -`72 -@?  .CF5 .): ."-/& -.<$9(G . 13* -+*N'J\|UP0HG?o> W9C}O6pE3T14;JqI=5 -F7[V2wRKv:u~SDZ{QX __SIM6502__conio/vcprintf.s -ca65 V2.15 _vcprintfpushaxpopax__printf_cputcspptr1ptr2ptr3tmp1,/home/hugg/compilers/cc65/asminc/generic.macoutdesc.sizeout@L1@L4@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` iZ( KbAB@۵faXfaXfaX\23+H ' ' -8 H8 $ $ -  I  h ( -(   - - - --AA@=`&% %7 7`+34 -6 -356,( '$ -61"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-0Vr/@۵\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 Y01@faX -   -   __SIM6502__conio/_cursor.s -ca65 V2.15cursor.sizeCODERODATABSSDATAZEROPAGENULLUzna` ia [VW@faXfaX 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` iqM989@faX -    -   __SIM6502__common/_environ.s -ca65 V2.15 __environ -__envcount __envsizeinitenvenv_init.sizeCODERODATABSSDATAZEROPAGENULLUzna` ij1! -0Eu/@faX faX &faX1faX/E{f -a -ak k` `4 b bgJ JwGGs2sRRr 22]]a+SS)R)B __+-pp= EEb,jj  -9L0 -0! -o oWl* * O -OnDDL3 -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` ixEdY6@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` ia NT@faX - faXfaX! $ $  -      `#%  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\@faXfaXfaXfaX*,*8 8 -' 'G G> >$ ? ?D0 0# #= e .  .HI(e h-8% %HFH Hh*`"+,-./>?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` ij2 A`LM@faX faXfaXSI< -<8% -%8 82 -2 - & &$ -$  9 -9" ". .%# #855 5 - 1 1 +  7  ? ?, => > L( -(! !833%   --`` !*$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` iV4 AT./@faX faXfaXNE; 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 oij@\faXV0123 -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 $'@\faXB  -2147483648   - __SIM6502__../libwrk/sim6502/_longminstr.s -ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac __longminstr.sizeCODERODATABSSDATAZEROPAGENULLUzna` i| #7"@faXfaX faX faXE5  -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 psZ>r@\ faXOQ9 ' -' -  -  -(! !  --" -" -  -% 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` ib, "&&@faXԨfaX faXi      `# - v -v  - H I  -  U -ULJ -J  8C  C>>  `( -(  -JL - -  -JL -   -J   = -!=   P  `Z Z   80, -+(+  -H<   &  & e K Ke  V V& h{ec c y yxxM M ` - - -`  Hz IzGm -lL -     L -   -  -  - `j  - -' -'  -  -)b -)b Y - YL -   -  - L -   -  - L3 -3H - t -twh  )  )  - -      - -    E  T     -   -     g gu   %::  Ge    i  i8     p  p %  -      I" " -  -    / /    -  -}  -  `%   %   -  -L -&  -  -SS -+ -  - #  - -  -L - 0  -   - *2   -  -JL -  -VA - A -  - -  .  -  *   -  -JL -  -V - -  zht00jLRl X -X  -L7 -!7 - H -' I -' n -nc~  -J -k -L -Ed%%i- -     -99+ -  -8 0 m -mq -q - - B -BL -EnD  -J    f f  ' 'L -&o'  -8 - -H  5 5   - \ -\0  -h  -La -Eap& 8 -8N - -xs'ss   -J -' -'L -Eu   -- -@  -L` -E`xX)H - - -0  -XF d -d ] --]  -hx - -'- -'  -L -EL -& -' -'  -* -)* -) -  - - -) - -) -) -)8 -  -) -  -)I. - I -  -  - _ -_H -H  -Lo -&oj[k+ ,Qh1L  lLmn3!! !U!!!Y!6  4ZKVcyMf'r5r -/^m\| -PlHG?)o>&y  98}OpEbk3;  Jn qIdx= F[*(ar,2wcRz:~'SDZ{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>J1J@\faX_,   -  ) ) # - #t  - - -  - - -  - - -% -% -z -z -  -  H I  -'L -  -L - - %"  -#,,  -L -[ -[ -  - u - u 8 -8L4 -4  -%y(( - *:  - - -  - - - -   -$ -= -=3 - - - -  - ( ( - )ke ( ( -H -H  -  -$ -  -  -%L - - -  - - - - - L*VhjIl+tFz BL -b - ( - ( (h- -  -% -L -_ - ( -? (? (l - - -  - - A@L -CL -EeL -FvvLv -vGL -SL -Xk[L -aL -cL -d1:eL -fXXLX -XgL -i)nL -no&pL -@s+u33xL - -"  - L -  - L -  - L -  - L -  -  - - -9 -8s -s - -  - ) )L -O - ) ) * *  -j )jD )D - *  - - - - -  -#CC - - -  -JJ -L - ) -L -_ -_L - -= - - -  - - -[ -8! - - -  - ) )L - 7 -7 ) ) * *  - ) ) - * O -O - -A -A  - -L - -L -  -  - - - -  -L - -  -^  - - -    - - ]YL - - ( - - ( -9 (9-; -  -? - -  -GG] -? c -c-  -L - -?  - - } -?}  -?L -} -   -  - - ] -  -8 -'' - -  -@ -> -A -8 -/ -/ - a -a ) )L -  - ) ) * * p -p2 )2 )& -& * - ->  - 0 -*0 - - -  - ->L - -..L. -. ) -L - -L -  - -0QL -S -  -N -NXxw  -  -;  -L - - r - r  -  -  -L -  -  -n -n -~ +~ - +d -d  - -! -8 - -L -   -%L -  -%LU -U  -llLl -PlL - - -  - - -  -Ni -i -H , ) , )hL -HJJJh) -L -`  -  - | -| -L - -  -  - = -L -?` -IT -` -3 -  - - (6 -6 (` (`] -] ( - ( (  - -  - ^ - ^` - ( -x (x ( - ( - ( (  - - - -  - ` B -BHw\ H\ I  -hL -&  -`bM -ML -`L -  - - - W -#W`) -)-L -L -  - + -  - -`  -  = ,  -$  ,0fL -3 ,  -!W  - L -   - - -A - - - -L - -A - + - + -E -E  -  ,  -  - 5 -5  -  -@  -  -  - - - + - + -  - - -  -"" - - -  - -  - -@ , -AZZ  - -L - -+ -8 - - -  - ( ( - - ( - -` R -R  -  - ,B -05  - -Xx , -  -L -[ ,  -Nm0 - -L -[ - , ,  -; -#o -o + - + - -  - - - + - + -  -L< -< - * - * - - * - `Y5g @BBqq;+-<RY5 0B]\pYaD@<:810#W Ix`? -9jD2  -~  -hm\j|U -P0]l?)o>&ysf9C8}L6pgtbk3T1A4;en.^!iqdx= 5 -%7_ [@*(ar,2 wcRvz/:u~ '`BSDZ{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@faXfaX +  -  - `!"#$%    - "  & __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  pxy@\faXw   - 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(@faXW q  H q  h`  -      - -    - __SIM6502__runtime/addeqsp.s -ca65 V2.15addeq0spaddeqyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  #Loi"@faXR H e  -  - h` -     -       - __SIM6502__runtime/addysp.s -ca65 V2.15addysp1addyspsp.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix#&`%a@faX faXI  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@faXL  -&   -&   - &  `  -    -      - __SIM6502__runtime/aslax3.s -ca65 V2.15aslax3shlax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq &)Qzf(@faX[  - &   -&  - &  -&  `  -      - -    - __SIM6502__runtime/aslax4.s -ca65 V2.15aslax4shlax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqB\n@faXH    - -& &  &  ` -            - __SIM6502__runtime/asleax1.s -ca65 V2.15asleax1shleax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq,CFVn -E @faXq    - & & &   -& & &  ` -        - -    - __SIM6502__runtime/asleax2.s -ca65 V2.15asleax2shleax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqBXorjnJqK@faX  -  - -& & &   -& & &  -&  & &  ` -     -         - __SIM6502__runtime/asleax3.s -ca65 V2.15asleax3shleax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq,/Qr.@faX] -    -& &  &  `        - -    - __SIM6502__runtime/asleax4.s -ca65 V2.15asleax4shleax4sregtmp1.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqahk9j@faX ^ @E@ 0"E3@ @  E 3   @   @E@ "D3D&"&D&3&&&D&&"D3@ $"$D$3$$$@$ $b""x""!YM'''J''',),#($YX$$#]#)i#$(S((#($(S(((  [ [  i $ $ )|mi)S##4###i####!b!Z!H!&!b!!!TDThDt(ntJr    t t t r Dh2"  & & r r     & H D D     ^%XRD -)-") 986314$.!=5 -%7*(,2/'+ __SIM6502__ dbg/asmtab.s -ca65 V2.15 OffsetTab -AdrFlagTab -SymbolTab1 -SymbolTab2 MnemoTab1 MnemoTab2.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqHQR@faX<4   -  H'$)8*&&h -(ɀ j -!!h`"hɀ %%`,ih)  +f j ` # .-MHG)&9C8L6E1A;!F%7@N*,2: 'BD<+ __SIM6502__ runtime/asr.s -ca65 V2.15tosasraxasraxypopaxtmp1.sizeL2L3L6L1L4L5L7CODERODATABSSDATAZEROPAGENULLUzna` iqk 3'_@faX4 -  f j `   -   -    - __SIM6502__runtime/asrax1.s -ca65 V2.15asrax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq -  -BL_ @faXI   f j -f  j `  -           - __SIM6502__runtime/asrax2.s -ca65 V2.15asrax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq   Qq_@faX^  -f  jf  jf j `   -        __SIM6502__runtime/asrax3.s -ca65 V2.15asrax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq ' 36`_5@faXs  f jf  jf 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` iq5I UX`fW@faX  -  -f f f  jf f f j  `  -       -     - __SIM6502__runtime/asreax2.s -ca65 V2.15asreax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqd{ yfij@faX"   f f f j f f f -  -j f f f j `  -    -      - __SIM6502__runtime/asreax3.s -ca65 V2.15asreax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq, 8;Vj:@faXs     f f  f j ` -        -    - __SIM6502__runtime/asreax4.s -ca65 V2.15asreax4sregtmp1.size@L1CODERODATABSSDATAZEROPAGENULLUzna` i< 23@faX faX "faX;8+ - - -E= - * -F`&77  -4S`; -D$ -$P. - -  2 -2LM - M` <=   -O>?@ 320 -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` ixkF)@CCKB@faX faX4$  '/ /A AW W 8 8Z -Z)U55VV2 2??D+dII- -33Q--J J# # R -R).`F` B -BY YH\ \H%> >H H9 M -M  - Ch"e  _ _hLe[ [, ,heG G hbea a^ ^48@0XFe+ +K K: -:0 0& &6 611 $$* *S S O OLT -T) )& &< <& `%&'() =# -=/A> _[,+K0*S) =82J= WY\Ga^&6<ZRT;;ehmU-P0HG")oy fW9C8LO6pEgtbT1;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` kzxv ")*@\faXA*  - ] -] T - T  -   8  -  b - b \ -\L6 -6 ^ - ^3Cq H_LqJ JlhQ  - - - -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 kkjfG  -  5 -5E ` - ` N -N(M(ML(= -(=UULUF -UF<0 0% %7  -)  - 2 - 2  - # -#L9 -9OL' -'+,-./)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 HUzna` iqKe?/@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[Vy*Z+@faXj - - -  - - -   -L -       -  $(# __SIM6502__runtime/callmain.s -ca65 V2.15callmain__argc__argv_mainpushax.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq3L X[oUZV@faX  !  - - -  - - -`  - -  -L -  -   !  0?& 31$5 -%*2/#< __SIM6502__common/calloc.s -ca65 V2.15_calloc_malloc__bzero tosumulaxpushaxSize -ClearBlock.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix+A MPO@faXfaX|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@faXfaX4 -    -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` iq1F -@faXGS< iZ))"h00h;!! %ɴ::Z&&Ii-W`1 -1`.89Z2I#i7$W=*`< 6Y - i'+`WW,, , ,,,,,$,(,,15:>BGKOSX\`dhlptx|88888888883333333333          55555550(>hm|UP0?"o>s98Otb31Jn!i=7NV,2cv:u~ #{Q< __SIM6502__common/cc65_sincos.s -ca65 V2.15 _cc65_cos _cc65_sin _cc65_sintab.size@L1@L2@L3L3L4L1L2L5L6L7CODERODATABSSDATAZEROPAGENULLUzna` ix;X dg f@faXfaX     -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@faXfaX4 -    -L -     -  -    __SIM6502__common/cc65_umul16x16r32.s -ca65 V2.15_cc65_umul16x16r32 umul16x16r32popax-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixq [lz{@faXfaX:      - 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 8Zuv@faX+ I HIh -`  -      - __SIM6502__runtime/compl.s -ca65 V2.15complax.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix.$RUnfTg@faX faXI%  . H.   H) I)L -`&'(%2 - 2 - 4 -4 -"  - !+ -+ -   -&`)*I+   H33/ H/ IL -`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#2PSywCRD@faX{ H  - hHJ J -JJ -  -h)  -L - -       - ' __SIM6502__conio/cputhex.s -ca65 V2.15 _cputhex8 -_cputhex16_cputc__hextab.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix  %('@faXfaX\HH2  -hh   -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` ixI;7J@faXfaX !"#$%   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 )lst@faX  -L -  -     __SIM6502__common/ctime.s -ca65 V2.15_ctime -_localtime_asctime.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixN    @faXCfaXLxIyFWP{PaPP`h Gt>i;AT1X,'uBR]?~(3UNDo.  ^ 0    n  =  - e&\H -Z -} -c -8 -m -OC%4J9E2Md#7vqkQ!r-w  :    6S Y|V<[ +$j*)@P@zfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffflhm\j|U-P0MlHG?")o>ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!i qIdx=5F%7_[@N *(arV,2wcRKvz/:u~ #'`BSDZ{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* -  +_ser_ioctl_ser_clear_ptr:/home/pzp/8bitworkshop-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_COUNT8/home/pzp/8bitworkshop-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` ix'9F2@ಏ _ a%3.  ) +): :H;)78 8 (( h, +/5`h%`h *`i& +h # # +&2 2? ?`1&'()* :#2?0)"A-0MHG?")>L61A J$.! +I=5F%@ *,RK/: #SQ+ runtime/shl.sca65 V2.19 - Git 6ac4aa4e2tosaslaxtosshlaxaslaxyshlaxypopaxtmp14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeL2L3L4L1L5L9CODERODATABSSDATAZEROPAGENULLUzna` ix9W cfCe@ಏ _a H    '    ( (#h L$ +$ !"# ( $,"  ! + +%  #'$runtime/staxspi.sca65 V2.19 - Git 6ac4aa4e2 staxspidxincsp2sptmp1ptr14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` i0I)rui=t@ಏ _ + _ a()!8 CC`% + # #`4 +B B33`=E +E@ @( +( ,L2 +2)*+,-.9 9 +8'' H' +; ;* +* I  i7 +7` /  +  #B@9;2' !>"8"H \-P0lH)o&Ob;J$!I=%[*( ar,2cRK/:#'SDZ +Q<YX0runtime/stkchk.sca65 V2.19 - Git 6ac4aa4e2stkchkcstkchk +initstkchk __STACKSIZE__pusha0_exitsp8/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510 initialsplowwater.sizeFail@L0@L1CStackOverflowDoneCODERODATABSSDATAZEROPAGENULLONCEINITUzna` ixC# @ಏ _ a "1. ) )  +  ! !  22. .  % %  # #6''  --( (`#$%&'(!. )% 7-) 3 $.! + +% *(,2/ #'+(common/strcat.sca65 V2.19 - Git 6ac4aa4e2_strcatpopaxptr1ptr2tmp34/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.size findEndOfDestendOfDestFoundcopyBytedoneCODERODATABSSDATAZEROPAGENULLUzna` ix} bc@ಏ _ a!'$  ' +'   , ,( ( . .++    2 2%`&`"#$%&( .2 '3-& 314 $ + +% *,2 +'common/strchr.sca65 V2.19 - Git 6ac4aa4e2_strchrpopaxptr1tmp14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeLoopEOSFoundNotFoundCODERODATABSSDATAZEROPAGENULLUzna` i48 2,DE@ಏ _ a" _&6.H& 5 +5 ! h62   + i(0    +;" "  '  $$- - L  - -`  -   - -    __SIM6502__conio/cursor.s -ca65 V2.15_cursorcursor.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqfpG gjM hii@faX=/B  * -*    - q q  b -b_ _8e L LC C < g,& &  # #!{ { k -kG GJ` 8 -G8  -G  s s  Z ~ ~`h  [ -^[ y y 1 1HYJJJJ0 -  hE)^ -^  X X `   a -Ya ' -D'   -H- @?? d -AdL -  ) -^)  -G  -Dh ` -B`ASS 99 Ij j  -^| +,L7 +7'()*+  + + #7#5-" =U -M?")> 8LE3A4  $. += +F@ RK/ #SQ<,common/strdup.sca65 V2.19 - Git 6ac4aa4e2sptmp1ptr4pushaxdecsp4incsp4_strlen_malloc_memcpy_strdup4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_45108/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac.size@L1 OutOfMemoryCODERODATABSSDATAZEROPAGENULLUzna` ix' +1 =@ ?@ಏaax     $$ ! `# !" ( "&  $! +  #'#common/strlen.sca65 V2.19 - Git 6ac4aa4e2_strlenptr24/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeL1L9CODERODATABSSDATAZEROPAGENULLUzna` ix+8c orFq@ಏa + a|(HC2 2   +  ++ +: : 7; ; )) 99. .0 01 1%% **  6 6??# # +  +< < ' '`)*+,- +&2 &1&+:'&;.0 +<&#  $"AG?)>& 9C86E14; $ += 5 +F%7 (,2:'D<.common/strncat.sca65 V2.19 - Git 6ac4aa4e2_strncatpopaxpopptr1ptr1ptr2ptr3tmp1tmp24/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeL1L2L3L4L5L6L7CODERODATABSSDATAZEROPAGENULLUzna` iq68 DGF@ಏa ZB? "   +  +    # #( (%% & &  ' '   $ $! !   ) ) ` + +  +( +# +& $!) +' B* -0")>& C831$.= %7@(2/ #'<common/strncpy.sca65 V2.19 - Git 6ac4aa4e2_strncpypopaxpopptr1ptr1ptr2tmp1tmp2tmp3L1.sizeL2L9L5L3L6L4CODERODATABSSDATAZEROPAGENULLUzna` ix`?P @ಏa  _%YN   6 +60 0   + & & 4 ) )B B - +-)4e     " +")''e 5 5> >! !   ((:$ $ +  +   =1`9@@?`<`&'()* -" B! +5> &0) +$# #6/C\ -0M]HG?>& W98L6E314 .=5 +F%7@*,R/:SDZQ<YX++common/strnicmp.sca65 V2.19 - Git 6ac4aa4e2 _strnicmp _strncasecmppopaxpopptr1ptr1ptr2ptr3tmp1tmp2ctypemaskdirect6/home/pzp/8bitworkshop-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` ix 476@ಏ _aZ8 I$q !HIq% % hL + !" %)"  ! +  ## runtime/sub.sca65 V2.19 - Git 6ac4aa4e2tossuba0tossubaxaddysp1sp4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix0C ORQ@ಏ _a       +  + H# #  h`! !  #  + '  ! +   #"runtime/swap.sca65 V2.19 - Git 6ac4aa4e2swapstkspptr44/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` iK'r D @ಏa0 _Q _w` + b +b R  + I c""L H 2^ I^ 1  +N E +NE7 \ +\  +b +  +l((0@ +@7`< * +*T`w +`? +?`Wv +v  + ` r +r Q +Q + +Y +Y`tgiy(  q          +  |    n  i p  K  B9LLoLL:LLPLL%L#LLxLLGLLLJLLLsr {^0mhnbHi\ hVkcsb6a3`0_-J^*]'\$G[!ZxYX#W%VUPT S :RQoQP\K'BJ%I$KH#G"pF!iEDCBnA@+?> = < +; :9876q?Y5bv< hyj/ |- ? Ph0M[lHG?"B )(ysF = CH 7 +8u)}&L(O6p'EgE -D OtA }bk; 38 /1A4G J$6 .!i9 : gnq+I4xz5F{~%f75m_@*N*(_2 , a1 rd,V|> ,22w\@ vcRKtz. u~^I #s0Je`BDV0 {Q+C 3 tgi/tgi-kernel.sca65 V2.19 - Git 6ac4aa4e2 +tgi_librefptr1;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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/pzp/8bitworkshop-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@L4CODERODATABSSDATAZEROPAGENULLUzna` irYRqt s@ಏ _ _ _Qa6D3 +  + +  +p +p + f + f  +L +L +A R +8R, +0## +~ooF  +8   +  +H] +hn`4 3YYWBpVLLDJ"I vm  8h\jVUG [OC e0^zG ~3 "(; H A  f4 _C+x8)|ILtB 1 6E6 - bD 9 \v / 1:  eJ.. d gId8 u}{5 +Fn7? _f[*Nm*sF  +a> , 2 < E cK/h@ y 50 `Z= 7 wJYtgi/tgi_settextstyle.sca65 V2.19 - Git 6ac4aa4e29/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 umul8x16r24popapopax4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510process_onedimstore@L2@L1CODERODATABSSDATAZEROPAGENULLUzna` ix $'&@ಏ _aYH  !   hL" +" ! "&  ! + "runtime/tosint.sca65 V2.19 - Git 6ac4aa4e2tosintincsp2sp4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix#7 @ಏ _ +a8,H   + 7 3 8 82 4 4% %h `6H) = +=, -  && 1 !"#$ +84%#= +.>-")& 986314; $.! +%7 *,2: #'<+%runtime/toslong.sca65 V2.19 - Git 6ac4aa4e2tosulongtoslongdecsp2sp4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizetoslong1toslong2CODERODATABSSDATAZEROPAGENULLUzna` i@97Qg@ಏa  _a /-+   5 5' '=+ +j, ,e  # #e % % f2 2f j;!& & `701234 ,# 5+&  '%2  3-> -0">& 8631A4; .! =5%7@( ,2: 'BD +<+5runtime/umul8x16r24.sca65 V2.19 - Git 6ac4aa4e2 umul8x16r24 umul8x16r24m umul8x16r16 umul8x16r16m9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace4/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.size@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` ixr WVW@ಏ _a$% %        +  +  $$`##!, %$&))>9C8(6E31'A4;.!+= 5@*&,2/: #<+common/utscopy.sca65 V2.19 - Git 6ac4aa4e2utscopyutsdataptr1tmp18/home/pzp/8bitworkshop-compilers/cc65/asminc/utsname.incutsnamesysname.sizenodenamereleaseversionmachine fieldoffs +fieldcountnextdoneloopCODERODATABSSDATAZEROPAGENULLUzna` ixPnp@ಏa _Xxe  + ! !4 4# +#,0 +0  + $ +$C C* *"; ; >e> > .  e  ( ( + + +22  B55< <    +L3 +,3F +FEE`?& &  +7 +76 6@  8 + 8 H+ +  I= =/ /   + +A +A`1 +:9 + -;  -C* ( -!4>  +-<&/ -6+=)) $)8H'Gm|UP0MHGoys 9C}O6Et3T1A4;nI=5 +F7NV2Rzu~BSDZ{Q<YXconio/vcprintf.sca65 V2.19 - Git 6ac4aa4e2 _vcprintfpushaxpopaxpopptr1__printf_cputcspptr1ptr2ptr3tmp18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.macoutdesc.sizeout@L1@L4@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` iZ( Pgbc@ಏ _ _ _a13+H ( ( +: H: $ $ +  I   h ) +)   + + . +.BBA=`'& &9 9`,23 +8 +545-) ($ .82"C EU('PMH7G?; W C2<OEGbT=A;  I0+F@_[@N aV*::946 `B,)Z. +FYX6common/vfscanf.sca65 V2.19 - Git 6ac4aa4e2_vfscanf_fgetc_ungetc_ferror9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespacecommon/_scanf.inc SCANFDATAGET.sizeUNGETDATA__scanf6/home/pzp/8bitworkshop-compilers/cc65/asminc/stdio.inc_IOFBF_IOLBF_IONBFBUFSIZEOF FILENAME_MAXL_tmpnamSEEK_CURSEEK_ENDSEEK_SETTMP_MAX FOPEN_MAX_stdin_stdout_stderrcountdL1CODERODATABSSZEROPAGENULLUzna` ix476@ಏ _aSQ   Q  L + !"#  &   + + $ runtime/xor.sca65 V2.19 - Git 6ac4aa4e2tosxora0tosxoraxaddysp1sptmp14/home/pzp/8bitworkshop-compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_6502DTVCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_6502DTV +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqA \./@ _ +   +  conio/_cursor.sca65 V2.18 - Git e091fc00cursor.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM934@ _  +     +common/_environ.sca65 V2.18 - Git e091fc00 __environ +__envcount __envsizeinitenvenv_init.sizeCODERODATABSSDATAZEROPAGENULLUzna` ij1! -0@p>/?@ _ + _ % _0 _/D{f +` +`j j_ _3 a afI IwFFr2rQQr 11\\a*RR(R(A ^^+,oo< DDb+ii  +8L/ +/  +n nVk) ) N +NmCCL2 +2' +'U U9 +9- -# #44 0 0 `!E +F :GHIE . +_aIU-#0.jn)2/=N{B;sh\jU -P0]HG ?")o>f98Opg b3T1A;e Jn.^!i  +Idx= +F"7[@ *( rV,2cRz/ : #' BSZQ<+Jcommon/_fopen.sca65 V2.18 - Git e091fc00__fopen_openpushaxincsp4return0spptr16/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX6/home/pzp/8bitworkshop-compilers/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCL6/home/pzp/8bitworkshop-compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags +f_pushback_FCLOSED_FOPEN_FEOF_FERROR +_FPUSHBACK __filetabfile@L1@L3@L2invmodemodeok@L4openokCODERODATABSSDATAZEROPAGENULLUzna` ixEdYzE@ _ _* + + + + h8  H  +  I# +#`     $ +# %"& !#$!"%*(  #'common/_heap.sca65 V2.18 - Git e091fc00initheap __BSS_RUN__ __BSS_SIZE__ __STACKSIZE__sp6/home/pzp/8bitworkshop-compilers/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplastCODERODATABSSDATAZEROPAGENULLONCEUzna` ia Io@ _ + _ _! # #  +    `"$  L +  # % -"!#34 $.!  +"%,/ #'+common/_heapadd.sca65 V2.18 - Git e091fc00ptr1ptr2popaxheapadd __heapadd6/home/pzp/8bitworkshop-compilers/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast8/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac@L1CODERODATABSSDATAZEROPAGENULLUzna` ij2 <{bc@ _  _ _SI; +;8$ +$7 71 +1 + % %# +#  8 +8! !- - % " "844 4 + 0 0 *  6 > >+ <= = L' +'  822$   ,,`` )#8;15 &7%"> & + !-40=?U -P0M")!9C8LOE#3T1A;J$.! +F"7@N(2K/ :#BD<!common/_heapmaxavail.sca65 V2.18 - Git e091fc00ptr1ptr2__heapmaxavail6/home/pzp/8bitworkshop-compilers/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast8/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac@L1@L3@L2@L5@L4CODERODATABSSDATAZEROPAGENULLUzna` iV4 <oDE@ _  _ _NE: 6 6 +< <5 +5 ' ',> >/ e/* /* 2 2e   " ( 4 4L +  ) m)* +)* ; ;m +=$ $8  +   -3 - 3 r -Ir +! +0 `+&5)3 # 6/  ;$ +#<'>24? -0HG?&!9C8L6#1A;J.!I5 +F"%7@N*,K/ : BD+common/_heapmemavail.sca65 V2.18 - Git e091fc00ptr1ptr2__heapmemavail6/home/pzp/8bitworkshop-compilers/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast8/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz j@ _ _V0123 4 +56789AB CDEF   "!  + ../libwrk/none/_hextab.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac__hextab.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix+A MP#O@ _ _|H  +e    hL +  +    +&  $!  #'common/_idiv32by16r16.sca65 V2.18 - Git e091fc00_idiv32by16r16 idiv32by16r16incsp49/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace@L1.size@L2CODERODATABSSDATAZEROPAGENULLUzna` ixk QWno@ _ _4 +    +L + +    + +   common/_imul16x16r32.sca65 V2.18 - Git e091fc00 _imul16x16r32 imul16x16r32popax9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq[ ${@ _$   +L +  +    common/_imul8x8r16.sca65 V2.18 - Git e091fc00 _imul8x8r16 +imul8x8r16popaptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzy "()@ _ _B  -2147483648   +../libwrk/none/_longminstr.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac __longminstr.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqA a89@ _ +   +   common/_oserror.sca65 V2.18 - Git e091fc00 __oserror.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixb Y@ _ _ +  +  +` !"#$   + "  %common/_seterrno.sca65 V2.18 - Git e091fc006/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq4( n@ _ /+I   I   +    +         ` +   0")& 4 $! 5%*(/#'+common/_swap.sca65 V2.18 - Git e091fc00__swappopaxpopptr1ptr1ptr2ptr3.size@L1@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` iq   eqr@ _ ID< ! !   +   +'*hQ+ +)0Q# #H ,% %H ) &h($  +/H -  ." "h h( (`  +   + ! +#% "0U-P0HG")& C8L6ET1A J$.!I= F%7(2K/ #'BD< common/_sys.sca65 V2.18 - Git e091fc00__sysjmpvecptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix;X dg$f@ _ _    +e     L +    +   +"&  $!  'common/_udiv32by16r16.sca65 V2.18 - Git e091fc00_udiv32by16r16udiv32by16r16mincsp49/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace@L1.size@L2CODERODATABSSDATAZEROPAGENULLUzna` ixk QWno@ _ _4 +    +L + +   +     common/_umul16x16r32.sca65 V2.18 - Git e091fc00 _umul16x16r32 umul16x16r32popax9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixq Vg{|@ _ _:      +L +  +      +   common/_umul16x8r32.sca65 V2.18 - Git e091fc00 _umul16x8r32 umul8x16r24popax9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq[ ${@ _$   +L +  +   common/_umul8x8r16.sca65 V2.18 - Git e091fc00 _umul8x8r16 +umul8x8r16popaptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzD  ~k#@ _ _w +  + H I  + + +  +L + A B N O R M A L   P R O G R A M  TERMINATION +    -0)&1$.  +%*(,#'+../libwrk/none/abort.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_stderr_fputs_abort_exit_raiseL0005.sizepushaxCODERODATABSSDATAZEROPAGENULLUzna` iq + &)Vl(@ _W q  H +q  h`  +          + runtime/addeqsp.sca65 V2.18 - Git e091fc00addeq0spaddeqyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  #Gjl"@ _RH e     h`  +    +      +runtime/addysp.sca65 V2.18 - Git e091fc00addysp1addyspsp.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqx.?m@ _A  +ɀ  `  +      runtime/along.sca65 V2.18 - Git e091fc00aulongalongsreg.sizestoreCODERODATABSSDATAZEROPAGENULLUzna` kz)= IL7K @ _ _/%  + H I  +  +  H I  +  +  +   H  IL + L +%c +   / -0")&961$.!  +%7*(,2/: #'+!../libwrk/none/asctime.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_asctime _strftimeL000A.sizepushaxL0005pusha0ldaxyspL000Dincsp2CODERODATABSSDATAZEROPAGENULLUzna` iqe .'i@ _.  +&  `  +      + runtime/aslax1.sca65 V2.18 - Git e091fc00aslax1shlax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqt + 8Ai@ _=    +&  +& +  + `  +   +     + runtime/aslax2.sca65 V2.18 - Git e091fc00aslax2shlax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq B[i@ _L  +& +  + +&   +&  `  +    +       + runtime/aslax3.sca65 V2.18 - Git e091fc00aslax3shlax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq &)Lui(@ _[  +&   +&  + +&  +&  `  +           + runtime/aslax4.sca65 V2.18 - Git e091fc00aslax4shlax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq=Wq@ _H    + & &  &  `  +     +     +runtime/asleax1.sca65 V2.18 - Git e091fc00asleax1shleax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq,CFQqE @ _q  + & & & +  + +& & &  `  +      +       +runtime/asleax2.sca65 V2.18 - Git e091fc00asleax2shleax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqBXoreqHqI@ _   + & & &   +& & &  +& & &  `  +        + +    +runtime/asleax3.sca65 V2.18 - Git e091fc00asleax3shleax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq,/L{u.@ _]    +& & +  +&  ` +      +       +runtime/asleax4.sca65 V2.18 - Git e091fc00asleax4shleax4sregtmp1.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqahk4j@ _ +^ @E@ 0"E3@ @  E 3   @   @E@ "D3D%"%D%3%%%D%%"D3@ #"#D#3###@# #b!!x!!!YM&&&J&&&,),#($YX$$#]#)i#$'S''#'$'S'''[[i$$)|mi)S""4"""i"#"" b Z H & b   T D  T h D   t(ntJr    t t t r Dh2" + +& +& +r +r + + +&HDD  ^$XRD (-") 986314$.!=5 +%7*(,2/'+ dbg/asmtab.sca65 V2.18 - Git e091fc00 OffsetTab +AdrFlagTab +SymbolTab1 +SymbolTab2 MnemoTab1 MnemoTab2.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqHOP@ _<4   + + + H&#)8)%%h 'ɀj,  h`!hɀ $$`+ih(  *f j ` " + --MHG)&9C8L6E1A;!F%7@N*,2: 'BD<+ runtime/asr.sca65 V2.18 - Git e091fc00tosasraxasraxypopaxtmp1.sizeL2L3L6L1L4L5L7CODERODATABSSDATAZEROPAGENULLUzna` iqk ."b@ _4 +  f j `  +     + runtime/asrax1.sca65 V2.18 - Git e091fc00asrax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq +  +=Gb @ _I  +  +f j f  j `  +  +  +     + runtime/asrax2.sca65 V2.18 - Git e091fc00asrax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq   Llb@ _^  f  jf +  +jf j `  +  +     runtime/asrax3.sca65 V2.18 - Git e091fc00asrax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq ' 36[b5@ _s  +f  jf  jf jf  j `  +        runtime/asrax4.sca65 V2.18 - Git e091fc00asrax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq #&Bhi%@ _^   +f f  f j `  +           + runtime/asreax1.sca65 V2.18 - Git e091fc00asreax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq5I UX[iW@ _    f f f  jf f f j `  +       +    + runtime/asreax2.sca65 V2.18 - Git e091fc00asreax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqd{ tigh@ _"   f f f  jf f f  j +f f f j `  +         + runtime/asreax3.sca65 V2.18 - Git e091fc00asreax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq, 8;Qm:@ _s   f f +  +f j `  +      +      +runtime/asreax4.sca65 V2.18 - Git e091fc00asreax4sregtmp1.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix[F03j2@ _  _$$  # #+ +: :S S   1 +1)VVN00 OOR R+<<-`CC.LL  ) )  880 +M*C*  +( (HU HX! !H6 H - +- H +H h;e   h\eG GW Wh'e A Ahe^ ^] ]/e9 9T T? +?% %FF3 3,, && 2 2@ @J JE ELZ +Z[ [& & &$ $`%&'() 1 +5)J 5#+! GW9T%2@[5 R 5 :S(A^]3$Z4"4amjU -P0M]lHG?") fW9C8O6EbkTA4;eJ.^!qd +F7_N*arV,wcRKv/: #'`BSD{QYX+* common/atoi.sca65 V2.18 - Git e091fc00_atoi_atolnegeax__ctypesregptr1ptr2tmp1ctypemaskdirect6/home/pzp/8bitworkshop-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` iqx3Dp@ _A  +    `  +    +  runtime/axlong.sca65 V2.18 - Git e091fc00axulongaxlongsreg.sizestoreCODERODATABSSDATAZEROPAGENULLUzna` iqw =Fw@ _@ +  +  ` `    +     +runtime/bneg.sca65 V2.18 - Git e091fc00bnegabnegaxreturn0return1.sizeL0L1CODERODATABSSDATAZEROPAGENULLUzna` iqW .#t@ _  L +  +      runtime/bpushbsp.sca65 V2.18 - Git e091fc00bpushbsp bpushbysppushasp.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz '\]@ _ _Q)  + ^ +^ T + T  +   8  +  c + c ] +]L6 +6 _ + _3Dq H`MqK KmhR  + + +4 Y + +Y  , + , S * +*. A +A" E +E  +  Z +Z / +/ i +i?  + HI- -b +be e$ +$hC  +  +: 1 + 1W     J + J ! +! Lh +h V d + d + + +  +Q lk kggH 5 + 5F a +aO ( + ( U +U +<>00L0G +0G% %7 7)  + 2 +2 # + # 9 +9 P +PL +'[LX +X*+,-.(X%U$"! b$/PZ9*AEa2,15Yc+_Jd(#T ^] +iBK-ek%7&@nhm\jU -P0M]lHG?")o>&ysfW9C8LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 +F%7_ [@N*(arV,2cRKv/:u #'`BSDZQ<YX+/../libwrk/none/bsearch.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_bsearchpushaxdecsp4push0ldaxyspdecax1L0019L0005.sizetosdiva0staxysppushwysp tosumulaxtosaddaxjmpvecincsp2L0012incax1L0025stax0sptosicmpL0020L0001addyspCODERODATABSSDATAZEROPAGENULLUzna` iqa  @ _*  l +  +     + runtime/call.sca65 V2.18 - Git e091fc00callaxptr1.size"jmp (abs)" across page borderCODERODATABSSDATAZEROPAGENULL HUzna` iqKe?*@ _ H + +  + + +  +`  +   )   ?")>&9C86A4;$!=5%7@(: B<runtime/callirq.sca65 V2.18 - Git e091fc00callirq callirq_y __CALLIRQ__irq_initirq_done__INTERRUPTOR_TABLE____INTERRUPTOR_COUNT__initirqdoneirq.sizeloopjmpvecindexdoneCODERODATABSSDATAZEROPAGENULLUzna` iq,,X[Q|(Z)@ _j  + +  + + + + +  + L +  +     +   $(#runtime/callmain.sca65 V2.18 - Git e091fc00callmain__argc__argv_mainpushax.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq3L X[jSZT@ _  !  + + +  +   `  + + +L +  +    ! + 0?& 31$5 +%*2/#<common/calloc.sca65 V2.18 - Git e091fc00_calloc_malloc__bzero tosumulaxpushaxSize +ClearBlock.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqG m|@ _l +  +    + runtime/callptr4.sca65 V2.18 - Git e091fc00callptr4ptr4.size"jmp (abs)" across page borderCODERODATABSSDATAZEROPAGENULL HUzna` iqQ )t{|@ _  +L +  +    + common/chdir.sca65 V2.18 - Git e091fc00_chdir +__syschdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqb 3]st@ _+ IHIh `  + +     + runtime/compl.sca65 V2.18 - Git e091fc00complax.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqB/ '(@ _ -, H   I  H  I +  + HB IB       `  +   0"& 1 $! %,#'+common/copydata.sca65 V2.18 - Git e091fc00copydata __DATA_LOAD__ __DATA_RUN__ __DATA_SIZE__ptr1ptr2tmp1.size@L1@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` ix % S@ _  _ *$ +e         +     +  +L + +  +    -0">& 94$.!=5%@,/ #'+conio/cprintf.sca65 V2.18 - Git e091fc00_cprintfpushaxaddysp _vcprintfspptr18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac ParamSize.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iq#2PStzARB@ _{H  + + +hHJJ JJ +  +h)  +L +  +      +  + 'conio/cputhex.sca65 V2.18 - Git e091fc00 _cputhex8 +_cputhex16_cputc__hextab.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqbo@ _ #    +L +       +    ` + +     !  +# conio/cputs.sca65 V2.18 - Git e091fc00_cputsxy_cputsgotoxy_cputcptr1tmp1.sizeL0L1L9CODERODATABSSDATAZEROPAGENULLUzna` ix  %('@ _ _\HH2  +hh   +L + -"   $ %*( #'common/creat.sca65 V2.18 - Git e091fc00_creat_openpushax6/home/pzp/8bitworkshop-compilers/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCL.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix('Ompt2o@ _ + _ o! H I  +  +  +  +  + H   +h`   +         " none/crt0.sca65 V2.18 - Git e091fc00_exit __STARTUP__zerobss_maininitlibdonelib__STACKSTART__9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLSTARTUPUzna` i % }R@ _ + _ _*$ +  e  # #   +! !  +    + +L +  +   #! "  &->&6 1$=5 +%( ,#' <!conio/cscanf.sca65 V2.18 - Git e091fc00_cscanfpushaxaddysp_vcscanf8/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeArgSize@L1CODERODATABSSDATAZEROPAGENULLUzna` iqQ $oqr@ _  +L +  +    common/ctime.sca65 V2.18 - Git e091fc00_ctime +_localtime_asctime.sizeCODERODATABSSDATAZEROPAGENULLUzna` i;<(dgW fX @ _g _4 _  _,-8# _ O + 1@^Pgfaf;f +fJC )fXfLfAfWfSff:f-fh G0@6E3Q33b3F3Bj7<PU/U3%4","""K""M"+""i'&@DVDZ>.]*TceHD`pU 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2./01+ N ( %dPR$!?Ik</-?[NB)(!FP=H7+/)&('%EDOA;#L8'Z9:+4"5K**2U,1&T,>@#.$ QWIJMV0R"S$C32 none/ctype.sca65 V2.18 - Git e091fc00=/home/pzp/8bitworkshop-compilers/cc65/asminc/ctype_common.inc;/home/pzp/8bitworkshop-compilers/cc65/asminc/ctypetable.inc6/home/pzp/8bitworkshop-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__ctype.sizect_nonect_lowerct_upperct_digit_xdigitct_lower_xdigitct_upper_xdigitct_ctrlct_ws +ct_ctrl_wsct_space_spacetabct_ctrl_ws_spacetab CT_NONE_IDX CT_LOWER_IDX CT_UPPER_IDXCT_DIGIT_XDIGIT_IDXCT_LOWER_XDIGIT_IDXCT_UPPER_XDIGIT_IDX CT_CTRL_IDX CT_WS_IDXCT_CTRL_WS_IDXCT_SPACE_SPACETAB_IDXCT_CTRL_WS_SPACETAB_IDX +__ctypeidxCODERODATABSSDATAZEROPAGENULLUzna` iq* 7TWV@ _  J +  JJ +J J) +`8`    -0")&1$!%*(,2/ #'+common/ctypemask.sca65 V2.18 - Git e091fc00 ctypemaskctypemaskdirect__ctype +__ctypeidx.sizeSC @lowerNibble @upperNibbleCODERODATABSSDATAZEROPAGENULLUzna` iqa 3c@ _* + +  +`  +   + +   conio/cursor.sca65 V2.18 - Git e091fc00_cursorcursor.sizeCODERODATABSSDATAZEROPAGENULLUzna` k{ksl +qwIww6֭ +w@ _ _{W! y +y  +1    +   + +#- ++ +apfGgIo?O?p +Qt ++z oL +  + + + L +  + +  + +h    +Y + + + L + + +  +B L +  + L +6 H6 I  +L +   + L + + + +} +}L + + +   +  +Y +  +  +L + + +  +m + +m + +L + L + L +   +  +  h +h  +  +-a-o#zq+qL + O m +  +L +#k kI8m +  + L +#  +2L +# + L +# +L +#g +  +L +  + L +  + + + +  +  + + ++  +  -  # a<o2z +EL +  m + +m + +L + I 8m + +m +  +L +  +L + +8 +  +L + + + +m + +   +L + +  +L +  + +B +L +3 p +p +   +  +  +  +-'a +Kg + 7 o =z PL +?  +mI +I + m + +L +F   +I8m + +Im + +L +F H I   + L +F  +8L + +F + +8  +   +L +Fm + +  +L +F  L +   +L +  + +  +  > +>   +  +   +  +  +  + + +L +  +  +   +   +  + +  +( 8 +J  +   + +   +  + + +   + + +  + +  +(8 + J  +  + + + + +   + +  + L +  +   + +   +    B  +x0 :@hL #P.`Vl   p + " ɐɰ    +L +  +A L +  +A  +L + + +   + + +  +  + +4 +  m/ +/Hm +h +  +  + L +  +sL +   +OL + Y Y    +AL + + +  + + +  +   +  +  L +  +A + +  +   +  +   +   +  +  +     +  + L +  ] +]    +  +1   +   +   +B  +L +L +, +9 vv""L +!  +1 L +!   + L +! & +B&L + +! +  + +9 i ) + +9  +L +  +   +    +   +    +  +  +  +   L +  +    ! +  +    +    B B +           +    +     +    + +   +   +  q    +     +   +   +   +    +   +    +    + *         + L +b +  +      q    +    + +  +   fq   +   +   +  +      +~ + +  +H 8 h +   +       $L +}  +| 3  +    i H i I   +{  +z    +     + +y +  +5 \q  L +L +x  +w  +v    +u   +t  +  +  L +  +0   +  +  +s i Hi I`  +r  +5  +t + +0f + + + +  +sXi Hi I   +q    ;  i      +p    +o "   i8  +w     +w   % +% q L +;     +u  +5 +  +   +r       L +n H  IL +r + H + + I +L +r  +mL +l  + +k +  +j  +k  +  +k(  +  + + + S S  +k  +k  +i  +   + + +  +    +      +=   +   D   n n8  q   q  _ _     +q   +k  +k   +  q L +   5    . 8   +q  5 +k5  +k   G +G   +q    +k  + L +  +    q u uRq K K +  +L +    + +    L +  +   +   +   + + + + +  +h +  +   +g   +  +  +f  L +e  +d +  +c   +b   +a  +d  + L +     +t t L +  +a  +`1  +_L +  +^  +]   +_   +  +  +   +  80 +L +t  +  +  + + +7  +\  [   +[  +Z  +Y             +     +  +Y    +^     L +X  +W +  +  +W  +V N +rN  +   +U  +rL +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 I  +L + j  +J   +     +  L +   +      +J   +    +      L +I  +H H  I   +G   +-  +F    ɀ   +F        +E q L + L +D  +C H   I    +B     +  + +;  +A    ɀ 4 +A4  +@  +    F F  +    +  L +?   +> q L + +L +?  +=C   +<   +; M  I  +:G   +9   +88 H  hC  +7D   +6   +C  +5 Q  +  +i Je   +e    D  # +6#  +  +  +i )  D  +6FP T TD +  +6F        0    ) 8 E 8) +io e  e   +4L +,  H +3HL +f +HL +2*  + +1 + +h  +0 +hi +  +0 + +  +/  +  +Y + e +/e +hi   +h  L +   +.    +-  +/   + + +   +, +  +   -  +   >     +,  +  +  + *     +,  + &  + !  +  3 +03   +0  +-  +7  + L +  +  +0 +  +  +0   +-  + C   ++ q L +^   +,.L +*  + +  +) L +( +   +    + =   -0 5 @dL ! P ) `El + + +pɐɰ    `  + L + +  +  + +  +L +  +  +  +'  +& + +  +% +  +$  +#L +   m +     +"   +%L +  m +   +"  + +` + + + +`  + L +1  + +x + i   +!  i  +!  +x  +!   +! q    + + +  +    +!  q    + +  +   +! q    +  +  + i i  +!q +  +    + +   +     +!  q     + +  +     +!q    + +  + + +; ;  +! + +q    + + +  +    +!  q     + + +  + L + L +  +   +  + i   +  i  +  + +8   +  +8 +   OM     + +  +  +   +   +    + d q       + + + q   8L +    L +  +i: + `  +2L +  +  + z +zc +c i  +   + +8  8 +    +, + +* +    +    +  +  +  + +    + + +  8 + +L +_ +i  + +8   + H& I&  +   + L + + +  + +`  +L +B )  +  + +  + + + + i +  +  + + i  +9   +   +  +  + +  +  +  +  +  +  +@q  L +  + .L + + +` + + + < + < +L +    +    m +     9 e  H +e bh  + + L +    + +O +  +L +   + +    +  +   + +  +  +    +<  +  +   +    +   +2 m +m + L + + +  +i H   i I  +   + + +  +  L +  +  L +~  L +k 1 8 243 + 0 4,5 +(? 6c L + h = qL + rL + s + z uL + 1   +  +   +L +  +LL +  +s   L + + +  +  +o +- +-  +  L +   +  + +S  L +   +  + +@ + L +   L + + + + +  +m + + ma +a +  + L + +   +L +  +    +  L + L +  +) + +  +. +, +0 +#  + +   +  + + +(L +2 + +b   + +    +U +^ +>  +  +{ s +l +V +~ + + +& +B++++   +  +++ + +'   +  ++ ++ +  '   + +Z ++ ++ ' + +) + ++ ++   +' + ++ + + '&  +L +  +h +x + + + +F3, u     Run until subroutine returnsCannot set breakplolilnltl l-l lplrlelslsl lal lkeyToo many breakpoints - press a keys                   S k i p   n ext instruction1 - 5               S e l e c t  active windowp                   U s e   a s  new PC valuef                   F o l l o w  instructionFr2r,r rtr r r r r rTrorgrgrlrer breakpointInvalid input - pDrDeDsDsD DaD DkDeDyDDP r e s s   a n y   k e y   t o  continueF4, h     Run to cursorr         Redraw  s c r e e n  a/z       Move up/downCursor    Move up/downo         Goto or i g i n  F7, space Step intoF 8 ,   e n t e r   S t e p   o ver+                   P a g e   d o w n  c                   C o n t i n ue-         Page upPress F1 for helpq         QuitF1, ?     HelpGoto: SRCSHISP->PCX  AY  c::    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +    +    <    +  z             e3  +H #   4    +   w    + + 5       +wt     ]   + >  p +h  w ty9 + 8543 210  / +.  +a   /}-, + *) + +( ' & % $ +  +#%") !     + +        G 0      + ;     +    + +  _uK +   +   +  t + +' +    +     +       + + i +   ;    +  T    +    + S n          + B   + +Y +  + k +:~7   6       +  +   h m   +\  j   + +  | +   +   U    +         +  +  -    P  +   +       0  M]    lH +G   +  + +  + ?       +    ") o    > &    +y + +s  f  +  +W +      +C  +              }L   +  +   O   +    6 p      E   +   +g   +    +   +    +         + +tbk    + +        3       +  + T1 +    4    +;       e    J n   $  . +    ^! +i     5 +       + + q I + +    d  +  +   +1 +   + + x   +  +   =    5 + F   +    +  + +  + %        +  _    [ +N *     (                +   a   +r 3  +   V       + +   ,  2     +4            +w +     cRK +    + v z   + +     / +   :    u + ~   +         +      +#           '  +  + + `  +   +  +S    D    +      + +Z        {   +  + + Q   <  + + +  YX  .   + +    + ++ ../libwrk/none/dbg.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-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 _ActiveFrame.size _ActivePrompt_RegTextL0003L0007L000BL000FL0013L0017L001BL001F _HelpTextL0023L0027L002BL002FL0033L0037L003BL003FL0043L0047L004BL004FL0053L0057L005BL005FL0063L0067 _AsmFrame _AsmHandler _RegFrame _RegHandler _StackFrame _StackHandler _CStackFrame_CStackHandler +_DumpFrame _DumpHandler +_HelpFrame _HelpHandler_FramesL0208L021CL0203L016EL016AL01FDL0394_AsmAddr _DumpAddr _CStackAddr +_StackAddr _PromptColor _PromptLengthdecsp3L02DE +_UpdateAsmstax0sp _GetKeyUpdateL02E9L02EDL0305L02F7L02FAL02FEL0301L02F3L030BL04DBldax0sppushax_AsmBack_DbgToggleUserBreak +_AsmFollow +_InputGoto_AsmHomeincsp3decsp1pushaL0363L036CL0370L0377L0374L037AL04DCL036A +_StackHomeincsp2 _UpdateStackL039FL03A8L03ACL03B3L03B0L03B8L04DDL03A6 _CStackHome _UpdateCStackshlax3L03DBL03E4L03E8L03F3L03ECL03F0L03F8L04DEL03E2 _DumpHome _UpdateDumppusha0_ActivateFrame _AnyKeyPrompt_Redraw_DisplayPromptL014Fldaxysp _SingleStepL042EL0441L043CL0418L0439L041CL0416 _GetArg16L04DFldaxildaidxL0437incax2_DbgSetTmpBreak _SetRTSBreak _GetStack16tosaddax _RedrawStatic _DrawFrames _HelpPromptincsp1 +_UpdateRegL0466L04E0L0463L046CL046FL0472L0475L04E1 +_DrawFrameregswap2subyspL00CEL04E5staxyspL010BL0109ldaxidxaddeqyspaddyspL04E7L0116L04E8L0117pushw0spL04EBL0129L012Baslax1pushwL0131L013BL04EAtosicmp0incsp6 _IsAbortKey_Inputdecsp8L0189L018EL04EFL019CL04F6L01B2L04F4L04F5pushwyspbooleq _InputHexleaa0spL01F1L01C9L01D8L01D6shlax4L01E1L04F8decaxyaddeq0spL04F7 _ErrorPromptincsp4L04FE_BreakInRomErrorL0213L0223L0219L021F_DbgResetTmpBreaksL0500L022EL0235_DbgTmpBreaksOkL0501L0503L0244L0251mulax3tossubaxL025AL0507L0263L0509L026BL050BL0508L0271L0252L050EL027CL0288L0290L0296L02A0 _AsmArg16incax1L02BAL02B0L0513L0512L02B6L0514L0510L050F_InitAsm_InitRegL0518L0347L0516 +_InitStackL051AL051B _InitCStackL051CL03C5L051Ddecsp2L047CL047EL0522L048FcallaxL0521L04BFL04B7L0520L04A7L04AFL04D7L04D3L04CDL04AAL0498L0523CODERODATABSSDATAZEROPAGENULLUzna` iqdpE ehF dge@ _=-A  ) +)    + p p  a +a^ ^8d K KB B ; f+% %  " "!z z j +jF FI` 7 +G7  +G  r r  Y } }`g  Z +^Z x x 0 0HXJJJJ/ +  hD)] +]  W W `   ` +Y` & +D&   +H, ?>> c +AcL +  ( +^(  +G  +Dh _ +B_@RR 88 Hi i  +^{ +  +2 + 2 q +Iq  - ] -I]PP`  -UiL} -Y}4 4./e (`J7 Jf")F zJto - oppJJJ%JV)Q:>l -   )n )=Tv vJwwJJ $$ +`6m - m2 2 -B BcD &\ \*5;;i?  -IKLR -GRCDEFGWWWxWWW W W H -Hm HH3 o^i*/O/\j|-P0M]lHG?)>ysW98}LO6pEtbk314;e J.^iqIdx= 5F%7_[@N*(arV,wcKvz/:u~'`BZ{<YX+H __SIM6502__ dbg/dbgdasm.s -ca65 V2.15popax__hextab OffsetTab + \ +I\OO` ~ +~TiL| +Y|3 3-.e '`J6 Je")E yJsn + nooJJJ$JU)P9=k +   )m )<Su uJvvJJ ## *`5l + l1 1 +A AbC &[ [*4::i?  +IJLQ +GQBCDEFVVVwVV V V V +G GlGG2 n]h)/N/\j|-P0M]lHG?)>ysW98}LO6pEtbk314;e J.^iqIdx= 5F%7_[@N*(arV,wcKvz/:u~'`BZ{<YX+G dbg/dbgdasm.sca65 V2.18 - Git e091fc00popax__hextab OffsetTab AdrFlagTab SymbolTab1 SymbolTab2 MnemoTab1 MnemoTab2sregtmp1tmp2tmp3tmp4ptr1ptr2ptr3BufIndex @@ -23450,253 +28902,145 @@ AdrFlagBufYSaveXSaveBufPtrMemPtrMnemoBuf _DbgDisAsm _DbgDisAsmLen DisAssLineL2L1.size disassret AnalyzeOPCode Put3SpacesPutSpace -Put2SpacesPutCharPC9PutHex16PutHex8L2083L208CL2094PutMnemoL20A4L20BAL20AC GetBranchAdrL20CCL20DDL20D9L20E3L20E8L20F8L2107L2103L210BL212BL2120L2124L213AL213ECODERODATABSSDATAZEROPAGENULLUzna` iqUE  A[@faXl]& 2 2"    , ,9 97 73 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 -  `U3 ! -0")& 4 .! 57(/ ' __SIM6502__dbg/dbgisram.s -ca65 V2.15 _DbgIsRAMpopaxreturn0return1ptr1.sizeL1TestVal CheckCellL2CODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@faXfaX'8 - - `   -      __SIM6502__runtime/decax1.s -ca65 V2.15decax1,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@faXfaX'8 - - `   -      __SIM6502__runtime/decax2.s -ca65 V2.15decax2,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@faXfaX'8 - - `   -      __SIM6502__runtime/decax3.s -ca65 V2.15decax3,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@faXfaX'8 - - `   -      __SIM6502__runtime/decax4.s -ca65 V2.15decax4,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@faXfaX'8 - - `   -      __SIM6502__runtime/decax5.s -ca65 V2.15decax5,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@faXfaX'8 - - `   -      __SIM6502__runtime/decax6.s -ca65 V2.15decax6,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@faXfaX'8 - - `   -      __SIM6502__runtime/decax7.s -ca65 V2.15decax7,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@faXfaX'8 - - `   -      __SIM6502__runtime/decax8.s -ca65 V2.15decax8,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixm LH@faXfaX6   8   ` -      -   __SIM6502__runtime/decaxy.s -ca65 V2.15decaxytmp1,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqp 81a@faX9     -  -`  -    -     - __SIM6502__runtime/decsp1.s -ca65 V2.15decsp1sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPa@faXI   8 -  ` `  -          - __SIM6502__runtime/decsp2.s -ca65 V2.15decsp2sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPa@faXI   8 -  ` `  -          - __SIM6502__runtime/decsp3.s -ca65 V2.15decsp3sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPa@faXI   8 -  ` `  -          - __SIM6502__runtime/decsp4.s -ca65 V2.15decsp4sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPa@faXI   8 -  ` `  -          - __SIM6502__runtime/decsp5.s -ca65 V2.15decsp5sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPa@faXI   8 -  ` `  -          - __SIM6502__runtime/decsp6.s -ca65 V2.15decsp6sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPa@faXI   8     ` `  -    -      - __SIM6502__runtime/decsp7.s -ca65 V2.15decsp7sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPa@faXI   8 -  ` `  -          - __SIM6502__runtime/decsp8.s -ca65 V2.15decsp8sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq= mEF@faX  -   - __SIM6502__common/doesclrscr.s -ca65 V2.15_doesclrscrafterexitreturn0CODERODATABSSDATAZEROPAGENULLUzna` i{ VY b7X8@faXfaX&1faX?q@Q?eVmVdVVK -K  / -/R R(+ +: -: >a9 H9 B IB* * ;  -< 5 -<5-OOL - 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= -@faXfaX&./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= -@faXfaX&./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= -@faXfaX&./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 @faXfaX&.faX6faXEfaX\ZE| - |`` - <<hh I  ) -)LL " -" k -k: -:x -xO0919I HI I  -HDQ -Q( -(  - h\\N -N -  -W66H, - > - >  - 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= -@faXfaX&./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<@faXfaX&.faX6faXrF7 -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= -@faXfaX&./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^@faXN  -      `  -     -    - __SIM6502__runtime/enter.s -ca65 V2.15entersp.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D~ @faX& -  -L -  -     __SIM6502__ runtime/eq.s -ca65 V2.15toseq00toseqa0toseqaxtosicmpbooleqsptmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixC RF@faXfaX  ! "#$% - - "  & __SIM6502__common/errno.s -ca65 V2.15*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno -__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz  n [ - -@\faX'_( -- +Put2SpacesPutCharPC9PutHex16PutHex8L2083L208CL2094PutMnemoL20A4L20BAL20AC GetBranchAdrL20CCL20DDL20D9L20E3L20E8L20F8L2107L2103L210BL212BL2120L2124L213AL213ECODERODATABSSDATAZEROPAGENULLUzna` iqUE  <V@ _l]% 1 1!     + +8 86 62 2  +: :5 5  ) +N)   7 +N7 / +h/. .0>> 0 +h0   4 4  +NL +0 & & * *`H=J$J +J J,9 +9  +ah;)( + " " `3 - '82 4 +'&* '1.'5 ':"' +6 9#?-0MHG?>& C8O6E31A4 J$.I= 5 +F%7@N*(,K/ 'BDQ<+ dbg/dbgdump.sca65 V2.18 - Git e091fc00 _DbgMemDumpaddysp1__hextabsptmp2tmp3tmp4ptr3ptr4.sizedumpputspacedump1dump9putcCODERODATABSSDATAZEROPAGENULLUzna` iq R@ _ +%   x + H   +  +& +h (L +h (L +  `U3   -0")& 4 .! 57(/ 'dbg/dbgisram.sca65 V2.18 - Git e091fc00 _DbgIsRAMpopaxreturn0return1ptr1.sizeL1TestVal CheckCellL2CODERODATABSSDATAZEROPAGENULLUzna` ixt]f7:.h \ 9] @ _% _7% H%7 I7LD +DhQ +Qh +XM + ] +4] H d Id  c +Gc  + n +on  +4 ~ +~HA +AHo`>- +b +Hb/ +/ +y`@:xU +UGG$$3 +N +N ; +;  +J J0Ri0!99`X| +| +, , + = = + +  +8 Z0` ` + +#q0))L( +(W W H Ile4 4rr`} h +hkV +V**055g +g& &jjw +w. .I IsT\06Lu +uL L Hm Im<eE E^^2`P8"9  a B   1:;< OW4LEF J,= +&.'Hb [UN;|Vgwm +"D ""(u"h2p.?BYaYYKhmj| -P0Ml?")o&ys f }LOpEgtbk3T1A; e n!i qdx +%_@N*(ar,2wcRKz/:u~#'BSD{Q+= dbg/dbgsupp.sca65 V2.18 - Git e091fc00_DbgInit_DbgSP_DbgCS_DbgHIpopptr1return0 _DbgEntry_set_brk_end_brk +_DbgBreaks_brk_pc __ZP_START__9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeDbgBreakretsav DbgSwapZPDbgStackResetDbgBreaks SetDbgBreaksCTempSwap1 MaxBreaksL4L6L5L7L8_DbgGetBreakSlotL10L11L12 _DbgIsBreakL20L21L22L23CODERODATABSSDATAZEROPAGENULLUzna` ix^ 8@ _ _'8   +`  +     runtime/decax1.sca65 V2.18 - Git e091fc00decax18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ 8@ _ _'8   +`  +     runtime/decax2.sca65 V2.18 - Git e091fc00decax28/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ 8@ _ _'8   +`  +     runtime/decax3.sca65 V2.18 - Git e091fc00decax38/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ 8@ _ _'8   +`  +     runtime/decax4.sca65 V2.18 - Git e091fc00decax48/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ 8@ _ _'8   +`  +     runtime/decax5.sca65 V2.18 - Git e091fc00decax58/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ 8@ _ _'8   +`  +     runtime/decax6.sca65 V2.18 - Git e091fc00decax68/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ 8@ _ _'8   +`  +     runtime/decax7.sca65 V2.18 - Git e091fc00decax78/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ 8@ _ _'8   +`  +     runtime/decax8.sca65 V2.18 - Git e091fc00decax88/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixm GC@ _ _6   8      `  +        + runtime/decaxy.sca65 V2.18 - Git e091fc00decaxytmp18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqp 3,d@ _9      `  +     +   + runtime/decsp1.sca65 V2.18 - Git e091fc00decsp1sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  BKd@ _I   8   ` `  +     +    + runtime/decsp2.sca65 V2.18 - Git e091fc00decsp2sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  BKd@ _I   8   ` `  +     +    + runtime/decsp3.sca65 V2.18 - Git e091fc00decsp3sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  BKd@ _I   8   ` `  +     +    + runtime/decsp4.sca65 V2.18 - Git e091fc00decsp4sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  BKd@ _I   8   ` `  +     +    + runtime/decsp5.sca65 V2.18 - Git e091fc00decsp5sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  BKd@ _I   8   ` `  +     +    + runtime/decsp6.sca65 V2.18 - Git e091fc00decsp6sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  BKd@ _I   8 +  ` `  +          + runtime/decsp7.sca65 V2.18 - Git e091fc00decsp7sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  BKd@ _I   8   ` `  +     +    + runtime/decsp8.sca65 V2.18 - Git e091fc00decsp8sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq!0MPQ.O/@ _g    +  E    L +  `       $ +%# runtime/div.sca65 V2.18 - Git e091fc00tosdiva0tosdivaxpopsargsudiv16negaxptr1tmp1tmp2.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq5 ADGzC@ _q   +  +  +    $   L +`   +  "&$# common/divt.sca65 V2.18 - Git e091fc00_divtosdivaxnegaxsregptr1tmp1.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq= pCD@ _  +  + common/doesclrscr.sca65 V2.18 - Git e091fc00_doesclrscrafterexitreturn0CODERODATABSSDATAZEROPAGENULLUzna` iq + 8Ga@ _N      + `  +       + runtime/enter.sca65 V2.18 - Git e091fc00entersp.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` iq] .  3? @ _& +  +L +    +    runtime/eq.sca65 V2.18 - Git e091fc00toseq00toseqa0toseqaxtosicmpbooleqsptmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixC MU@ _ _   !"#$  + "  %common/errno.sca65 V2.18 - Git e091fc006/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz  i v + @ _ _&_' +- & - - -# -1 -qA + + +" +0 +q@  -Y> -H8 +Y= +H7 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 +@B +;< +T& + +> +$No such file or d?i?r?e?c?t?o?r?y??Function not impl3e3m3e3n3t3e3d33N5o5 5s5p5a5c5e5 5l5e5f5t5 5o5n5 deviceD:e:v:i:c:e: :o:r: :r:e:s:o:u:r:ce busyI6n6t6e6r6r6u6p6t6e6d6 6s6y6s6t6em 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!dFFExec format error  Invalid argumentABDaDdD DfDiDlDeD DnDuDmDbDeDrDDN-o- -s-u-c-h- -d-e-v-i-c-e--O u t   @@ -23710,2475 +29054,4089 @@ __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEB 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 eCD@faX  -    __SIM6502__sim6502/exehdr.s -ca65 V2.15 -__EXEHDR__.sizeCODERODATABSSDATAZEROPAGENULLEXEHDRUzna` iRi ux#vww@faXfaX "faX/"  3- -)   - 4`"  $ $* L1 -101234 # -$1": -") 1$.! +U#n#k#n#o#w#n# #e#r#r#o#r##Illegal seekF2i2l2e2 2e2x2i2s2t2s22Range errorI8/8O8 8e8r8r8o8r88Try again()*+*HU -P0MHG?")>&9C8LO6E3T1A4;J$.!I= 5 +F%7@N*(,2RK/: #'BSDQ<+,../libwrk/none/errormsg.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac __sys_errlist.sizeL0001L0003L0005L0007L0009L000BL000DL000FL0011L0013L0015L0017L0019L001BL001DL001FL0021L0023L0025CODERODATABSSDATAZEROPAGENULLUzna` iRi uxw@ _ _ ! _."  2, ,)   + + +3`!  # #) L0 +0/0123 +" +,#0"9 -") 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 +"% * ,2/ #4common/fclose.sca65 V2.18 - Git e091fc00_fclose_closeptr16/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX6/home/pzp/8bitworkshop-compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags f_pushback_FCLOSED_FOPEN_FEOF_FERROR -_FPUSHBACK __filetab@L1CODERODATABSSDATAZEROPAGENULLUzna` kz2G SV(U)@\faXd>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` kzCF }<RS@\ faX"h > ->8 & -&  -C= =)%? ?)#--@L4 -|4 )3KK6 6)$ $; L7 -|7  * -* . -.  -<  - H((  L1 -v1BBEE, ,   +_FPUSHBACK __filetab@L1CODERODATABSSDATAZEROPAGENULLUzna` kz2G SV)>U?@ _ _d>3  +    + $ +$! !  "" # # L% +*%  +  H       +  +hL +$  !# +>& -0")&86314;$.! 5 +%7*(,2/: #'+../libwrk/none/fdopen.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_fdopen +__seterrno__fdescpushaxL0003L000B.sizeincsp6CODERODATABSSDATAZEROPAGENULLUzna` kzCF xWhi@ _  _!h = +=7 % +%  +B< <)$  > >)",,?L3 +|3 )2JJ5 5)# #: L6 +|6  ) +) - +-  +;  +G''  L0 +v0AADD+ +    -'L" -|":  2 2LG -|G9D DH5 J JIF F0 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` kzvE a:@\faX4$  -  -  -  -   -  -   -  -  -  -  -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` kztlZ gjKoi@\faX=( L -L 5  -W  WR  R 3 -3 S -S0  0>  >  -TF FE E_ -_I  - 1LP -P -)J ' -'L+ -+;  ;    ? +&L! +|!9  1 1LF +|F8C CH4 I IHE E/ /hL + "#$%&  @ @-@)@@%@=* <>5#+ +1I/*CE (K\U -P0M]HG?")>&W9C8LO6E3T1A4;J$.!I= 5 +F%7_[@N*(V,2RK/: #'`BSDZQ<YX+'../libwrk/none/fgetc.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_fgetc_readpushaxregswap2decsp1L0025L0027.sizeL0016L000Cpusha0leaa0spL0023L001DL0021incsp3CODERODATABSSDATAZEROPAGENULLUzna` kzvE \U@ _ _4$  +  +  +   +   +  +   +  + + +  +  +L + L + !"#   4  -")&1$.!  +%*(,2/ #'+$../libwrk/none/fgetpos.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_fgetpos_ftellpushaxpushw0spldaxysp +steaxspidxldax0spldeaxipusheaxtosneeaxL0005incsp4.sizeCODERODATABSSDATAZEROPAGENULLUzna` kztlZ gjFi@ _ _=' K +K 4  +V  VQ  Q 2 +2 R +R/  /=  =  +SE ED D^ +^H  + 0LO +O +(I & +&L* +*:  :   > -?  -QQ,\\9  )CC*V VY Y"5"=  7L. -.O    D  D  [NX ( -(H H -^^]ZB  -  2 2@@UG%  % M 8 -8H- #4 4  & / /h !L6 -6)*+,-'$6%$$$($$'$$S8$$L3K:?  2/< WR0>;  D%<FEVYH4A`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` ifONQ -P@faX faXfaX /6D9  & &)55`I E -E,, )FF* *`4  -++C C)  #`; D -D%%Q Q)11`  -  .( (>` P -P=K`"789:;P -(QC*& 066)/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 +>  +PP+[[8  )BB)U UX X!5!<  6L- +-N    C  C  ZMW ' +'G G +]]\YA  +  1 1??TF$  $ L 7 +7H, "3 3  % . .h  L5 +5()*+,&#5$###'##&##R7##K2J9> 1.; VQ/=: C$;EDUXG3@_hm\jU -P0M]lHG?")o>&sfW9C8LO6pEgtbk3T1A4;eJn$.^!iqId= 5 +F%7_[@N*(aV,2cRK/: #'`BSDZQ<YX+-../libwrk/none/fgets.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_fgetc_fgets +__seterrnopushaxregswap2ldaxyspdecsp4L0004L0002.sizestaxyspL002BL000Bstax0spL001EL002AL000CL0022addeqyspsubeqyspL0029addyspCODERODATABSSDATAZEROPAGENULLUzna` ifONQ%P@ _ + _ _ /5D9  % %)44`H D +D++ )EE) )`3  +**B B)  "`: C +C$$P P)00`  +  -' '=` O +O<J`!6789:O 'PB)%/55(/1(# ( 9( I(T U-P0]HG?">& 9L3T1; J$.! I=F%[@,2RK/: # S +Q<";common/fmisc.sca65 V2.18 - Git e091fc00 _clearerr_feof_ferror_fileno_fflushreturn0ptr16/home/pzp/8bitworkshop-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.! +_FPUSHBACK __filetab6/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXgetferr@L1errorCODERODATABSSDATAZEROPAGENULLUzna` ix* 698@ _ _ 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` kz6:p |z$~@\ faXW@ + -+'  -/ /)*+ ),%  -  - - --$  - # -#1%  -((&   !L -G  ) )H0   " " 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` kzdB  ,//,.-@\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 ,faX8faXHM Mc -c  - r rF F)ssBBd d)++' '[[  -Lh -h2 2)__ )RRL L~- --   } - } E  - g -g   - N -N=| |UH H O - -O  -L> -> -1,1H<   i$, , A Ai   h8maff*## ( - (pp8v vDKK] -  - Ctt)m)$ -)$99o/JJwwyy @ - @G e -e 3 -3 -P P% -%Y YLS - SIJ T KLM9i7,7Ax3 xN .g \ -\e ISIO @ }^(zZ\j|U P0]HG?o>&y98}LpE tbk3T1e J$^i -Id=  -F"%7[@  ,2cRKz ~ '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 -faXfaX -&% % ! !`M :   " "  b  (e  ec c$ -$ex -x.`.` ` -  - - I I  -Bj -j ] ](e # -  -e  -+ -p&p 3 -3 F -FDC Cr r -- - W -W  -o -ov -v`nEY Y< <` -f f6 -6 B B   X -X -s -s7 -7`{g g   S Sww *%*  e   R RK K    - ^ -^L -rT T}(e} } e ; ;[@[L L< (q8 8 ~ ~q_ _ V    P P? ? l l    L -Z  -  -L -Zd dq q  Oa a ' 1 1u uy y t tU U -  -`A (e   e / /;i iG7G  (q8 8  )J Jq 0 0m| |   > >  , ,Z  9 9 `h  -  -`       =N N@ @`'()*+k jWs7^ov6X$x3F2guy J0>9N2fBRK;L_d127%!"`rY<STPqatU/i|@2cI] -C-}~? H+.%+hm\j|M]lH?o>!W}Otbk#niId"_[NaVwcv u~`ZYX, __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?@\ faXG&` 5 - -5#  -  > ->:"  ") ;;  * - *L -m<  <)0  /E E2 ! !8  3  -'   + -+   - 9 -9  C -C % - %  -  - - -0 =  )@  )L - -o -$  $ 7  7H. - B  B6? ?  h1L -'()*+%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@\faXd  -   - -  -  -  -   -L -   "&$!  - #'! __SIM6502__../libwrk/sim6502/fsetpos.s -ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fsetpos_fseekpushaxpushwyspldaxyspldeaxipusheaxincsp4.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzoj \]^@\ -faX$gL , - -,  -  4 -40  ) 11 # - # 2 2( ( -L' -W'7)  )  -  - . - .  -  - * -*    $ -$ /  /)66   - & -&H3 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 .@faXfaX *faX;{[K -K  2 -2 U U)..; ; @ -@`LG -G  )((HH< <  - * ^ -^) Y -Y  [ -[  -4--O - ] -] -NLZ -Z  - >//M -M5 5+ -+    00 && 3 -3E  - % -%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` iq9 EHjLGM@faXv    - L -  8e ` -      )&  $.  -%*(,' __SIM6502__common/getenv.s -ca65 V2.15_getenv __environ -__envcount searchenvreturn0ptr1ptr3tmp1found.size@L9CODERODATABSSDATAZEROPAGENULLUzna` kz; w#&%@\%faX ? w - -w L L  - -^ -^ - --+ +~ ~wX -X% [ -[ pI0t@t - - H - Hq H &q h  -l -l - { {Ca a- -mm* -* - - - 6 -6\ \ =kL -  -  -< < -V -V - pL' - ' -j -j   ) -) - -  - - s -s1 -1 -  -  8 8  -R`RA -A  -O ONx x -33 -c  - # -# - -  - r H"r} I"}  - - - - q - q - -  - - -Q -Q d - d - I -I - - Z - Z|?L -  g g :? -o -oz -z _ -_  EELE -E L - -  -f f  - - - -L@ -@ :  -; -; -2 -2 -  -R H! -/ I!/ - G -G  -y -y -  - ! H!W IW  - -( -( -  -  - -  - -0 -0h -h ` - ` - J -JM -M -  - ?L -  - - K - Keq Hq h  - -. -. H!7 -7 I!F -F -  - -n -nH] > >S Sv vhUL -;@77: option requires4 4a4n4 4a4r4g4u4m4e4n4t4 4-4-4 : illegal option 9-9-9 99A$$B" -!CD>;3IJ2#1G.-s,)'&HK"wqYdZ`Qy(0hM +~{a\<Oxf L8g>vSTi D1n PX[V ;2 bo.hm\j|U -P0M]lHG")o&ysfWC8}LOpEgtbkTAeJn$.^!iqIdx=  -F%_[N(arV wcRKvz/u~ #'`BSDZ{Q<YXE __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` kzi_ }UI@\ faX$o 9 -9  -%  -%  -C > ->$  -$  - ? -? " -", -, - @ -@4  -3K)K6%#<  - -7 7 -  ) -)=L - H H'  . L1 -z1B B -EE+  - L - -z -& &!;  -;  -2  -2 G -GL: -:D  -H5 J  -JIF F0  -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 `PI `     -"&  $! %*(,/#'+ __SIM6502__runtime/icmp.s -ca65 V2.15tosicmptosicmp0spsreg.size@L1@L2@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` ix+, @faX -faX3+# #    -  $ $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@faXfaX+&   -   E         -    - L -` !  -  - -")&  $! %*(, #'+" __SIM6502__runtime/imul16x16r32.s -ca65 V2.15 imul16x16r32negax umul16x16r32mnegeax-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L1@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` ix2MjmHlI@faX faXGC% %1$, , 50 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^ '(@faXfaXfaX'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^ =#@faXfaX' i  -`  -       __SIM6502__runtime/incax2.s -ca65 V2.15incax2,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )a^_@faXL -  -     - __SIM6502__runtime/incax3.s -ca65 V2.15incax3incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )a^_@faXL -  -     - __SIM6502__runtime/incax5.s -ca65 V2.15incax5incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )a^_@faXL -  -     - __SIM6502__runtime/incax6.s -ca65 V2.15incax6incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )a^_@faXL -  -     - __SIM6502__runtime/incax7.s -ca65 V2.15incax7incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )a^_@faXL -  -     - __SIM6502__runtime/incax8.s -ca65 V2.15incax8incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqf 3!a@faX/  `   -    -   - __SIM6502__runtime/incsp1.s -ca65 V2.15incsp1sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )a^_@faXL -  -     - __SIM6502__runtime/incsp3.s -ca65 V2.15incsp3addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )a^_@faXL -  -     - __SIM6502__runtime/incsp4.s -ca65 V2.15incsp4addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )a^_@faXL -  -     - __SIM6502__runtime/incsp5.s -ca65 V2.15incsp5addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )a^_@faXL -  -     - __SIM6502__runtime/incsp6.s -ca65 V2.15incsp6addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )a^_@faXL -  -     - __SIM6502__runtime/incsp7.s -ca65 V2.15incsp7addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )a^_@faXL -  -     - __SIM6502__runtime/incsp8.s -ca65 V2.15incsp8addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixw @faXfaX@    - )``      -  __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 @faXfaX@    - )``      -  __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 @faXfaX@  -) -` `      __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 @faXfaX@    - )``      -  __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 @faXfaX@    - )``      -  __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 @faXfaXR  - -)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 @faXfaX@    - )``      -  __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}   -@faXfaXF   -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 @faXfaXR  - -)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 @faXfaX@    - )```      -  __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 @faXfaX@    - )``      -  __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 @faXfaX@    - )``      -  __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 LG G. .I I, ,L9 -9 T -T -  - -'=<=%((6  -D D)RRL5 -5K K#-N 8 8 2 2B BI i<  IQiAM ML& -c& O -O-H:@3+ +& *! // $ $  -H1 # #EEhCP PFF   `")->3>2>7>6>8>> * - H  -0D82P  .,KBM+$#J GI79`O4T4Uhmj| P0MlHG"oys f9C8}LO6pEgtk3T14;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` ixs"./@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` iqe|)q@faX #"q   H -q     q    q   h` -      " !  -  __SIM6502__runtime/laddeqsp.s -ca65 V2.15 laddeq0sp laddeqyspspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqC\ hkorLjM@faX  )   -    f -  -f f j   `     - "&$!%*, #+ __SIM6502__runtime/lasr.s -ca65 V2.15 tosasreaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` iq Lkh@faXY       - -`` -            - __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+@faXkI HI  I  I h`  -     -   __SIM6502__runtime/lcompl.s -ca65 V2.15compleaxsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq{ BFa@faXD     -   `  -           - __SIM6502__runtime/ldai.s -ca65 V2.15ldaidxptr1@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix03|_2`@faXfaXT    -  -  ` ! - #    " __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(_@faX5    `   -    -    - __SIM6502__runtime/ldaui.s -ca65 V2.15ldauidxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq36Vn5@faX^        ` -        - -    - __SIM6502__runtime/ldauisp.s -ca65 V2.15ldaui0spldauiyspspptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq -B]e@faXI     -  -   `  -     -      - __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 -? @faXg       -   ` -           __SIM6502__runtime/ldeaxysp.s -ca65 V2.15ldeax0spldeaxyspsregsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq3.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@faXD   e H e h`  -    -     - __SIM6502__runtime/leaaxsp.s -ca65 V2.15leaaxspleaa0spsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $hjk@faX  -L -  -      - __SIM6502__ runtime/leq.s -ca65 V2.15toseqeaxtoslcmpbooleq.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $hjk@faX  -L -  -      - __SIM6502__ runtime/lge.s -ca65 V2.15tosgeeaxtoslcmpboolge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $hjk@faX  -L -  -      - __SIM6502__ runtime/lgt.s -ca65 V2.15tosgteaxtoslcmpboolgt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  $'Qxg&@faXa   e     ` -    - -    - __SIM6502__runtime/linc.s -ca65 V2.15inceaxyptr4sreg@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $hjk@faX  -L -  -      - __SIM6502__ runtime/lle.s -ca65 V2.15tosleeaxtoslcmpboolle.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ hef@faX  -L -  -      - __SIM6502__ runtime/llt.s -ca65 V2.15toslteaxtoslcmpboollt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $hjk@faX  -L -  -      - __SIM6502__ runtime/lne.s -ca65 V2.15tosneeaxtoslcmpboolne.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq0 -: FIo]H@faXIiH  Ii -  -I i  Ii h `  -   -  - __SIM6502__runtime/lneg.s -ca65 V2.15negeaxsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz+_C/rs@\ faXuJ= H9 I9` & -&!8 8  020  -  B B7@ @C 3 -3 D DCA A//L -0  - # #- ->2 26'L -  H IL -.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%  Ii-( ( Ii*  Ii+! !  / /"!"& &Ii# # Ii   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 QTer+S,@faX )   -   F f f -  -j    `    -   0")$!( # __SIM6502__runtime/lshr.s -ca65 V2.15 tosshreaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` iqq?q@faX '$8I q  H -Iq            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#@faXS -     -  -`       -       - __SIM6502__runtime/ltest.s -ca65 V2.15utsteaxtsteaxsregtmp1.sizeL9CODERODATABSSDATAZEROPAGENULLUzna` iqQ $kmn@faX  -L -  -      - __SIM6502__runtime/luge.s -ca65 V2.15 tosugeeaxtoslcmpbooluge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $kmn@faX  -L -  -      - __SIM6502__runtime/lugt.s -ca65 V2.15 tosugteaxtoslcmpboolugt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $kmn@faX  -L -  -      - __SIM6502__runtime/lule.s -ca65 V2.15 tosuleeaxtoslcmpboolule.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ khi@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|  -  @faXRfaXfaX% b b 6_6  io  CC -  -e e m m" -" n -n L -F43 38KKZ KZa# #{ {=@=p pJPd d  I I5 -5? e?o ?ox. -.ey y O -O -^^hhW` -Y Y+ -+c c -_ -_LA -A%S%`O] ]! !i - -L Ll l X XTU U L -0 02 -2R  - 1 1j@ @ \     $ $ L, -,F F: -:S S' -'Lq -qw~ ~888Z 8Z <z[ [u ut t> eo oM* *e7 7  /  VG G  9 9Q r rk k D iDo|`&'()*H:'g"n2)O5.+_ -!-LX1(3#pdIYc]U0@$FS~[t*79rkb -emK{?y8uGm|l!}#x"wv + __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` iqH9(2O@faX]Y4 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 )qxy@faX  -L -  -     - __SIM6502__common/mkdir.s -ca65 V2.15_mkdir -__sysmkdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq= ]56@faX  - &$# __SIM6502__common/modfree.s -ca65 V2.15 _mod_free_freeCODERODATABSSDATAZEROPAGENULLUzna` i% GE @faXfaX9VfaXefaX~faX: .  L - -3 3 `A9G3& & ` H I`2 [ -[I HI I  -YW -!w -!w  - -! -! -`e -H  ~  -  - Fh`  -; ;  O -*O0 0i  L -te S SVV   -*)% U -U -} -} -)ɀ8#8@E E MMn -  a -*amJ -JT -Tq j jL- -t- -q  yHQ - -  h    -'  -mf f - ] -]s Hs I  -  -8 9 -9 -R   -*C" "A   -*% )  -*Cq"q  -*  -*lR R  -*    L -"   -*L -[L -U kL -U - -m -  - -m -u uv vm -H  mp -p h  -  ( (B B hL+ -U+c ce HD e h  - - -  - ` -`   | -|    -8 # -*#  -*!!L -S    -m m - -Ht tm - -h  -m  - *`-iio$6$5$#   L}|@{@z@yu|q3]:<ym\j /-?GPhp][jlH 3c)oyHP=4XH7uKIB1OEEDaO}bk;3L8T/Z4Gn6^i g+4xxz=i{~f5mK_N*q(F_2rU,a1dT|>22<w@RKtvzb.Q^WI`s0`MB0{Q<SJC3 __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` iqCR ^aoa1`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` kz8=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 wr r{L] -]T TK }}  - -7/ y - y  -M`+ ) - )  X" "[ [L - v - v qG GHq  h$  -  ll C - Cc c  m m(  5L^ -^  - -= k - ke  e< <   -  V -V% Hq% %hj  - ' '      - e u u0e   8 8  -R A -A  PO Oz  -2  - d - d 8  H t th  - s -s  -Qe8e H - HZ,   -  h ? ?  p~ a a   - D -D  -  -  -g g8 H  h@ : -: ; -;1M   - 8 H-F Fh|W5W  - &   . .ib bIN N    -  -  -  - L - L f f  -     -  , , 6 6  -E E -  -  o_ _ >HSx xU -UnBBhJL --./01+#(#&#s%#;$#A##:"#!#V##yL##)vCkH##3dYD wr"[cm  E -7<'u8Ot?ag.bNf,6_U 4TGFxhm\j|U -P0M]lHG?")o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 -F%7_[@N*(arV,2wcRKvz/:u~ #'`BSDZ{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 -@faXfaXD    -  - ` `  - !   ! __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@faXfaXSH     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*- AB@faX faX3) - - -  -  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 )_\]@faXL -  -    __SIM6502__runtime/push1.s -ca65 V2.15push1pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )_\]@faXL -  -    __SIM6502__runtime/push2.s -ca65 V2.15push2pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )_\]@faXL -  -    __SIM6502__runtime/push3.s -ca65 V2.15push3pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )_\]@faXL -  -    __SIM6502__runtime/push4.s -ca65 V2.15push4pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )_\]@faXL -  -    __SIM6502__runtime/push5.s -ca65 V2.15push5pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )_\]@faXL -  -    __SIM6502__runtime/push6.s -ca65 V2.15push6pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )_\]@faXL -  -    __SIM6502__runtime/push7.s -ca65 V2.15push7pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix! ..\_^@faXfaXr    -  - `   ` !" - $  # __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@faXL -  -    __SIM6502__runtime/pushaff.s -ca65 V2.15pushaFFpushax.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq& 1._bjn:a;@faX~ - H 8    h ` -          ! - # __SIM6502__runtime/pushax.s -ca65 V2.15push0pusha0pushaxsp.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix 1OR~Q@faXfaXq 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 )`]^@faXL -  -    __SIM6502__runtime/pushc0.s -ca65 V2.15pushc0pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )`]^@faXL -  -    __SIM6502__runtime/pushc1.s -ca65 V2.15pushc1pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )`]^@faXL -  -    __SIM6502__runtime/pushc2.s -ca65 V2.15pushc2pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq4 @CjnB@faXu         L - -     -    - __SIM6502__runtime/pushlysp.s -ca65 V2.15pushlysppusheaxsregsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq.47Ly6@faXN -      L -      -  -  -    __SIM6502__runtime/pushw.s -ca65 V2.15pushwpushwidx pushptr1idxpushaxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix= Jgji@faXfaX - 8 -         `      __SIM6502__runtime/pushwsp.s -ca65 V2.15pushwysppushw0spsp,/home/hugg/compilers/cc65/asminc/generic.mac.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqk 87r@faX4   - - -L - -     -   - __SIM6502__common/putchar.s -ca65 V2.15_putcharpushax_stdout_fputc.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix<e &)(@faX#faX 9 c -cZ Z - 4d d22CCL -=iLLS S3 3 = - -= =a. .HdH? -? -7I7! -!  s -[0lal- -- -wv p - pG G k kNPN/ -# # 5 -5)) -" -"( -( -b]LY -qY; ; ^qq  * * r - r  -  -D -Dj -A,t tFu uU -eQ -Q$ $W -n nL1 -1++ T -TOP`9:;X8<=> ITS#; * Gktu$n Zd3. <1 0!" -0?(D 05=>r>pEyh\j -PHG?"o&y f9OpgtkT;e $.!i -Ix 5 -F"%[@ (a,wRvz :u#'`SZ{QYX? __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` kzlI & @\ -faXiL  - - - -2 2 -' ' 3 3 + -+  * -*8 , -,  -  -0) -- - - $  ( -( H I 1 -17 " -"   )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$uiPj@\)faX ;  - & -& +  = -=  -   - B -B  -  > ->  -  -   -    - ) -=)L - 9 -9  -X l -l  - L3 -V3 1  - e Hb*e fh!  -    -   - -L -nR R   -   - ,  -   -Hz  -   M -Mp  -   -  -{ {0 0  -   ? - ? i -iHF Fy -y  -h E -E  -L` -` # #  - - -- x - x  -/?/  -    -  -  : -:  -   A -A ] - ] K -KH[ [Z -Z  -h<  - q -q((  -  -   -9  - e He\ \sh S -S  - de He hv  - I I  -    -  m m  - O -O  -   -L -{uuLu -{u  - - J JC'C  -De H;e h  -   - 6e HQe h  -% %a a  - . -.  -  -   -  -7qw wHnUqY Yh  -?= " " W -W t - te He h  - 4 -4 @ @  - P  -    -=  -8~ ~Hk Gh^L -S_ _  } -}L  -V  - 8h hH+o h  -    -  r - r  -=  -Nee eH'e5 5h -  -  T  -   -   -0HHL -T   j  8 8  -  |L -<=>?@:63./-q,yEZ+i:K( -O4&#"?x]t rl9M ASW}B= &>c2R{0#\Im%a"@~_he5 F[JwY8=hm\j|U -P0M]lHG?")o&ys)fWC}LO#pEgtbk3T1A;eJn$.^!i(qIdx  -F%_ [@N*(arV,wcRKvz/u&~* #'`BSDZ{QYX+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` ixu `YZ@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|&  { @\faX1  -  W - -W   T - T j - j # t s -s ~ ~  -LU -.U  J J E -E M -Me8Lk -.k2+e N Na a! !ppK K,,:g g  [ -[ R -R 4 -4 r r7  I  - {e) )He oh - VVVm - mQu - u8B] ]HO( - (; XhCe HSe  9hZ x -x8%A - A  - ` `$$$  - - 3 - 3 D D   @ @ d  -  - lL -+h hH H  - n -n " "=1'  -. .8-L_ _  |= =    -q qG GQ c -c   -F F  w -w z ^ -^ 0 -0> v -vH*y y 6P P \ii? ?h L& -&234560}&.}c,})}'}x%} n$}4#}R}E[^v}j}W}T/A<mu(3YwM0b  `"y?f&~Na!Kgr) D @ -hH.qGFf]_=P5hm\j|U -P0M]lHG?")o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 -F%7_[@N*(arV,2wcRKvz/:u~ #'`BSDZ{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[p1@faXe -    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(; GJeiI@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 )\ST@faX`  -      __SIM6502__runtime/return0.s -ca65 V2.15return0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqN )\TU@faX`  -      __SIM6502__runtime/return1.s -ca65 V2.15return1.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz +4 @C[B@\faXX  -  -  -  -  -  -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 )qxy@faX  -L -  -     - __SIM6502__common/rmdir.s -ca65 V2.15_rmdir -__sysrmdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix*- @A@faX faX3) - - -  -   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=&MN@faX4.  -)  -"0 -!  $ $       - =#` -  -  ` -  $)  )%PM)& CLO63T1A4;J=5%7N*(,2R '<+ __SIM6502__common/searchenv.s -ca65 V2.15 searchenv -copyenvptr __environ -__envcountptr1ptr2ptr3@L0.size@L9@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` iqj *k@faX %#     -  -     hh H H L - -     -  -")&.! -*(,2 '+ __SIM6502__common/setjmp.s -ca65 V2.15__setjmpreturn0spptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix'9A-@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@faX4.   -  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_ @faXL  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@faXH   F f  f j  `  -     -    - __SIM6502__runtime/shreax1.s -ca65 V2.15shreax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq, 8;Qf:@faXq F  f  f jF  f f j `  -       -    - __SIM6502__runtime/shreax2.s -ca65 V2.15shreax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqBX dgef2f3@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+iPCD@faX faXfaX 10' : :  -@@9$$ -=x - --HG1 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]GH@faXfaX$  - - - - - - -   -  -)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+$ +" (  '+common/fopen.sca65 V2.18 - Git e091fc00_fopen__fopen__fdescpushaxreturn06/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix % I@ _  _+$    -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` iq6 BE`rD@faXq -H        h - L -           __SIM6502__runtime/staspidx.s -ca65 V2.15staspidxincsp2sptmp1ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqp GPf@faX9  -  H   h`  -    -      - __SIM6502__runtime/staxsp.s -ca65 V2.15staxyspstax0spsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq*GJenI@faXq  H       h` -        -     - __SIM6502__runtime/steaxsp.s -ca65 V2.15steaxyspsteax0spspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` i0I)rudt@faX faX faX')!8 BB`' - % %  `5 -A A44`>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= ^67@faX  -   - __SIM6502__common/strcoll.s -ca65 V2.15_strcoll_strcmpCODERODATABSSDATAZEROPAGENULLUzna` iqXr ~op`a@faX      -      -  -    `         __SIM6502__common/strcpy.s -ca65 V2.15_strcpypopaxptr1ptr2.sizeL1L9CODERODATABSSDATAZEROPAGENULLUzna` i48 -'@faXfaX!faX%6.H& 4 -4! h51   - 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 ?Bi~A@faXfaX 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= HI@faX faX 0.  H  I      +e               + +L + +    -?) C6E34;$.5*(,2:D+common/fprintf.sca65 V2.18 - Git e091fc00_fprintfaddyspdecsp4 _vfprintfspptr18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz<:v E@ _ + _W@ , +,'  +0 0)++ )-%    . +.$  +  # +#2%  +))&   !L +G * *H1  +  +" " h/L +  !"#( ( (.((,#0  +*"W3 -0HG?")>&9C8631A4;J$.!= 5 +%7@*(,2K/: #'B<+$../libwrk/none/fputc.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_fputc_writepushaxregswap2L000Bpusha0leaa0spL0019L000D.sizeL0002incsp4L000CCODERODATABSSDATAZEROPAGENULLUzna` kzdB  ,/JB.C@ _ _-D2  +  +%" ")# #)$L +4  ' +'  +  +   +  + H       hL! +! !"# +! '  +"# D( -0")&986314$.!= 5 +%7*(,2/: #'<+$../libwrk/none/fputs.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_fputs_strlen_writepushaxregswap2L0011L0003.sizeL0002pusha0pushwyspldaxyspincsp4CODERODATABSSDATAZEROPAGENULLUzna` i _ :: + +@ _+ _ + _7 _GL Lb +b  + q qE E)rrAAc c)**& &ZZ  +Lg +g1 1)^^ )QQK K}, +,   | + | D  + f +f   + M +M<{ {TG G N + +N  +L= += +0,0H;  i#+ + @ @i   h8l`ee)"" ' + 'oo7u uCJJ\  -  # 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` kzSS  -0nq -/ -@\faX* Z -Z ? b -b 8 8[#[5 -5: :J -J, ,O -O"'##Lc -c; -;ssGL - TT9 9 j -j$m m. -.L  - D D==_ -_")7U U+ -+  r -rL^ -b^k k77 -  -Y" "w -w"vnn S -S - @ -@Q Qi iWW2 -2]<]LE -E< <  / /B -B 3 -3  -> >  - --C"X  -1 1d d`\\F -a Hao -o IL( -(e4 4p p 0 0 -I I - -l -lH Ph hM M6 t thRLu -u +,VV- -A./)&u!&jS&b&Z-H@  DQiK8:,9mU k -"1d4p0IMtKh*xhm\j|U -P0M]lHG?o>&ysfW9C8}LO6pEgtbk3T1A4;eJn.^!iqIdx= 5 -F%7_[@N(arV,2wcRKvz/:u~ '`BSDZ{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= b56@faX  -  __SIM6502__common/strtoimax.s -ca65 V2.15_strtol -_strtoimaxCODERODATABSSDATAZEROPAGENULLUzna` kzYa4 AD M{C@\faX+ ^ -^Y6  - Z -Z3  3A  A -[ -[H  H -G  GgL  L 4LU -U   ,,M  M*.  .># -#B V -V/d -d<  -EE-]]` -`%%@  @ -  9 -91LR -R       F -FL" -r"   ccQ  Q_+  +K -Kffe a -aD -  5 -5C\\I((P: -:0 0  & -&  7 -7L -)  2  2   $ -$8 -8J -J  -H'WS -SN  N; -T  ThbL -,- ./0 * -) -( -$! -F -Va -Z - -^=5?3AHGL M.@ Q+2NT?#d`K:SO!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/ 6DGzsFt@\(faX M  -     -9  -   ? -?  -  - : -:  -L -+  & &  -~ ~ f +\R -R-  = =5 5 T Ti i40. .0$ ``' ' xd  X   LN -N  -L - - )  -L - %x Im m0y yx- - -X; ;ge C Cww    B L -^ "} }*  -v  -   - ,  -  -   + Bss(m(# +(#88n.IIvvxx ? + ?F d +d 2 +2 +O O$ +$X XLR + RHI S JKL8h6+6@ w2 wM -f +[ [dHRHN ? |]'yY\j|U P0]HG?o>&y98}LpE tbk3T1e J$^i +Id=  +F"%7[@  ,2cRKz ~ 'DZ{Q+Mcommon/fread.sca65 V2.18 - Git e091fc00_fread_readpusha0pushaxincsp4incsp6ldaxyspldax0sppushwysp tosumulax tosudivaxptr1sp6/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX6/home/pzp/8bitworkshop-compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags +f_pushback_FCLOSED_FOPEN_FEOF_FERROR +_FPUSHBACK __filetab8/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.macregbankfilesave@L1@L2@L99@L3pb@L4@L6@L5@L8@L7@L9@L10CODERODATABSSDATAZEROPAGENULLUzna` i +R j   d e@ _  _ _ +%% % ! !`L 9   " "  a  'e  eb b$ +$ew +w-`-_ _ +  + + H H  +Bi +i \ \'e # +  +e  ++ +o&o 2 +2 E +ECB Bq q +, , V +V  +n +nu +u`mDX X; ;` +e e5 +5 A A   W +W +r +r6 +6`zf f   R Rvv )%)  d   Q QJ J    + ] +]L +rS S|'e| | e : :Z@ZK K< 'q7 7 } }q^ ^ U    O O> > k k    L +Z  + ~ +~L +Zc cp p  N` ` & 0 0t tx x s sT T +  +`@ 'e   e . .;h hF7F  'q7 7  (I Iq / /l{ {   = =  + +Y  8 8 `g  +  +`       <M M? ?`&'()*j iVr6]~nu5W$w2E1ftx I/=8M1eAQJ:K^c017%!"_qX;RSOp`sT.h{?1bH\ +B,|}>G*-%*hm\j|M]lH?o>!W}Otbk#niId"_[NaVwcv u~`ZYX+ common/free.sca65 V2.18 - Git e091fc00ptr1ptr2ptr3ptr4_freeheapadd6/home/pzp/8bitworkshop-compilers/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast8/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac@L1@L3@L9@L8SearchFreeList@L2@LoopCheckRightMergeCheckLeftMerge2 NoRightMergeCheckLeftMerge NoLeftMergeCODERODATABSSDATAZEROPAGENULLUzna` kzX@ !K: ;@ _  _!K4  +  + ' '# )$ +$  +L% +%  +  (   +!L +   +   + +  +  " +"L + !"  % "   'K&) -0")>&986314;$.!= 5 +%7*(,2/: #'+#../libwrk/none/freopen.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_freopen_close +__seterrno__fopenpushaxldax0spL0011incsp6.sizeL0009pushwyspldaxyspCODERODATABSSDATAZEROPAGENULLUzna` ix % I@ _  _+$ +  + +e      +       + + L + +    P0G?>& 98O6A45F7@K:'BQcommon/fscanf.sca65 V2.18 - Git e091fc00_fscanfaddyspdecsp4_vfscanfspptr18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz~nf svZTuU@ _  _G%` 4 -   -  6 - 6  -  -  > - > Z -ZG  W -WV V  8 80Lo -Io% %  -    7L -I   -Y Yq qL -O W b -b  t } E  -   -  | - |  -# j  -   - K  -   -s s8   FF@A A 707   -   -   -  -  3 -3  -  M   -  - - # -#_+  - L -  L -4u uk P4PU    -! !S S r  L -  -   1 -1< <L   #{ h -h  D D[ [] ]Lz -SzH Q Le -Se(l l    -   -L -S   - Hp  Jc c$ $h2L -NOPQRLKCBA@3=;:b4>32160 |/Z#*:?1 nhaW  -~VYq!&5.'myC8%$}!S< []=TisAulcXhm\j|U -P0M]lHG?")o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 -F%7_ [@N*(arV,2 wcRKvz/:u~ #'`BSDZ{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  -@\%faX6 J  -     -6  -   < -<  -  - 7 -7  -L -+  $ $|  -w w ` +XN -N-  : :2 2 P Pc c4., ,0$ \\% % x_X  {{ LJ -J  -L - - '  -L - %q Fg g0r rx+ - -X8 8ae @ @pp   ?  -  - Z - Z  - !v v( ( o  - * -*  -   -   - - z 3 -3   ; 0VLD -0D S R -R   5 7iL -0#   -y y L - Wx  -  U UjK K}  ^ -^  -  -  -# m  -  -B  -  -u 8d  G Gl l 0   -  -C = -=  -  > ->  - 4   -  - -  - -0  -I IL -  L -" "[ )4)  1 n -ne e L LQ  L -  -  O O k -k    / -/9 9 HL -&    t b -b  -L -& A  -HW~Y Y sE E hML -KLMNOIfHfAf@f?f>f>;f9f8f^b7f1f0f/f.fZ-f*fff7ff<f*=nkf h/R]3  -wyG!$2,%gr@IL (e O9:PcvUKl"YEThm\j|U -P0M]lHG?")o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 -F%7_ [@N*(arV,2 wcRKvz/:u~ #'`BSDZ{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= c67@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 RUjT@\faXn   -  - - -  -  -   -  -  - 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|@faXfaXZ8I#q  HIq$ $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  -25ei4@faXc8Iq   HIq   h`  -       -      - __SIM6502__runtime/subeqsp.s -ca65 V2.15subeq0spsubeqyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPa@faXI   I8 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 ze d d iiL -Jt Ajq> >DDW4\/** uLE -AET" " b -bC} } + -+ 6 -6 Y - Y  -   -Q G -Gq 1 -1c c 3 -3  - p - p  -  @ -@  h -h)   a -a   - -K^ ^|f; ;oo R -R F ( -(7M M < -<  H -H! 5 -5 P - P g - g & -&: v -vr n -nS% % 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>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 -F%7_ [@N*(arV,2 wcRKvz/:u~ #'`BSDZ{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= qDE@faX  -   - __SIM6502__tgi/tgi_free_vectorfont.s -ca65 V2.15_free_tgi_free_vectorfontCODERODATABSSDATAZEROPAGENULLUzna` ix\xH`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 @\faXK2 s - s ! - ! r - -r  - } - U  - J -J~ E -EN f -f9jjLjZ -,jZ3 , -,  O -O  - b#  -oLLLL -,L--L- -,- ; -; h - h H I \ - \R 5 -5qqLq -,q8L -,   -  -I  - {* *n - nL -, V -Vl  -t B -B  - ]P P((<X X C  -  -LS -,S" : -: [ -[ w&Aq Haq% %h 4 -4D D_D  @ -@b e -e   -  - -kiHe Hme $h 2 - 2 ' -'  / . -.Me` `He| |>h  -pqG GLQ -Qd - d   -LF -?F v -vz0^^1 ? -? u -u+yL7 -73TWC HT456717.-'+e% B:@.v?$O;"f 4!J ,Vr!sh\2)nd0=[uYE56c  `|gPX%D -Ghm\j|U -P0M]lHG?")o>ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!i5qId1x= 5 -F7_[@N*(ar3V,2 4wcRKvz/:u~ #`BSDZ{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` kzv 9a@\faXg!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 OL L 4 -4   - ( - ( 3 - -3 G -G 9 - 9 -L> ->"#$%&>0G#!4;?18 C 7A +@PN:JK(*B3- 9/&F.5LD=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#$@\faXE UTCUTC -    - __SIM6502__../libwrk/sim6502/timezone.s -ca65 V2.15 cc65 v 2.15spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac__tz.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq LSg@faXI    -JJ -`  -          - __SIM6502__common/tolower.s -ca65 V2.15_tolower__ctype.sizeL9CODERODATABSSDATAZEROPAGENULLUzna` ix $'rS&T@faXfaXYH     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 -faX8,H!  - 6 2 7 71 -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@faXI    -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& - -  +4"  +  = +=9!  !) :: ) + )L +m;  ;)/  .D D1    7  2  +&   * +*   + 8 +8  B +B $ + $  +    -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` kzV cfK  -e -@\faX* l -l  - K  -} }v vI )wFXXLX -#X " y -yb b a ) f  L  -#  G r -r > >g; ;AT 2 -2 Y - --( (s sB  Q -Q  -  _ - _@ @| |))L) -#) 4 - 4V  -  M -M D - D o -o/  +, ,0 <  )?  (L +o #  # 6  6H- + A  A5> >  h0L +&'()*$@!@ + @ @B@8@@*@@=@@43$)' !;#6A','D>+%EU -P0MHG?")>&W9C8LO6E3T1A4;J$.!I= 5 +F%7@N*(V,2RK/: #'BSDZQ<Y++../libwrk/none/fseek.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_fseek +__seterrno_lseekpushaxregswap2decsp4L0022L0026.sizeL000A lsubeqysppusha0ldeaxysppusheaxldaxyspsteax0spldeax0spL0016L0027addyspCODERODATABSSDATAZEROPAGENULLUzna` kz+@ LO[3N@ _ _d  +   +   +  +  +   +L +  + "&$!  + #' ../libwrk/none/fsetpos.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_fsetpos_fseekpushaxpushwyspldaxyspldeaxipusheaxincsp4.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzoj wst@ _ + _#gL + -` 1 - 1   -n -~q= =H e'q h ^ -^  - - H -H [ -[ { -{ c -c8 m - m N C -C & -& 5 -5J J  -9  - E E3 3 L -LdSd $ -$7 t -tp k -kP P# #q   -.:. u -u  : -:  -  6 6S S  -   - -  - Z -Zz W -W< < ] ]  -!!,L% -'%h+L* -*+,-./)x*&x$u%xL$xt:Z#x5"xc!x[ xHx^x1xxDx4mx_xQx yr-MCkWxxl2 j{&Ro  }vb>;(sE3P# 6S<]  @|U -U=J\0hm\j|U -P0M]lHG?")o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 -F%7_[@N*(arV,2 wcRKvz/:u~ #'`BSDZ{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 -faXfaX 0.(6 6   -  225) ))  ((  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 ++  +  3 +3/  )00 " + " 1 1' ' L& +W&6(  (  +  + - + -  +  + ) +)   # +# .  .)55 +  + % +%H2  4  4! !  hL +$%&'("!#)%3+*-" (.4 1'  !g$7 -0HG?")>&9C8L6E31A4;$.!I= 5 +F%7@*(,2K/: #'BD<+)../libwrk/none/ftell.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_ftell +__seterrno_lseekpushaxregswap2decsp4L0003L0002.sizepusha0pushl0steax0spldeax0sppusheaxtosgeeaxL000F lsubeq0spincsp6CODERODATABSSDATAZEROPAGENULLUzna` i.J I01@ _ _ ) _:{[J +J  1 +1 T T)--: : ? +?_LF +F  )''GG; ;  + ) ] +]( X +X  Z +Z  +3,,N + \ +\ +MLY +Y  + =..L +L4 4* +*   // %% 2 +2D  + $ +$LR +R; +< =>? +>?  T ;4 +$ + ]XZ\YFR27{<6`h\j P0]")sfW9C8}L6Eg tk1A;e J$^i +qId +"%7[ * r,2wcRK u~#BSDQ<+@common/fwrite.sca65 V2.18 - Git e091fc00_fwrite_writepushaxincsp6addyspldaxysppushwyspreturn0 tosumulax tosudivaxptr16/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX6/home/pzp/8bitworkshop-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= \45@faX  -   __SIM6502__common/unlink.s -ca65 V2.15_unlink_removeCODERODATABSSDATAZEROPAGENULLUzna` ixr \KL@faXfaX$& &         - - - !%%`$#", &$'))>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+` -  - -`%HH! -!& H&# I#  -  - h)hL - - -    -    $$-j0HGo>y  }6p1; Jni -qIx= - *r2wcKv/:~<+ __SIM6502__conio/vcscanf.s -ca65 V2.15_vcscanf_cgetc_cputcpopaxpushaxswapstkconio/../common/_scanf.inc SCANFDATAGET.sizeUNGETDATA__scanfpushedbackgetL1ungetdCODERODATABSSZEROPAGENULLUzna` ix23@faX faXaI&  - ) -)  -/ -/! -! 9 -9% % 3 3  -   8 8-m- --4 -4 m -, -,L -H0 -0. -.6  -1 H1 7 7 - - - I h 5 -5( -( -` " -* 2  %38 -7 '5'9)8$;|U MHGo> W9C8}L6ptT;I=5 -7VRv:u~BS{Q< __SIM6502__common/vfprintf.s -ca65 V2.15 _vfprintfpush1pushwyspincsp6_fwrite__printfspptr1,/home/hugg/compilers/cc65/asminc/generic.macoutdesc.sizeccountoutptr@Ok@DoneCODERODATABSSDATAZEROPAGENULLUzna` iqDc orxmqn@faX -$H  -      -   - hL -    $ "& 31$ -%/ #'+ __SIM6502__common/vprintf.s -ca65 V2.15_vprintf _vfprintf_stdoutdecsp2sp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixKj vyx@faX faX$H  -     -  -  hL +_FPUSHBACK __filetabfile@L2@L1@L3@L4CODERODATABSSDATAZEROPAGENULLUzna` iq] .  .:y @ _& +  +L + +       runtime/ge.sca65 V2.18 - Git e091fc00tosge00tosgea0tosgeaxtosicmpboolge.sizeCODERODATABSSDATAZEROPAGENULLUzna` kza 80 <=@ _ _*  + +L +    + ../libwrk/none/getchar.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_stdin_fgetc_getchar.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix> |@@ _& _uZKG-8BH8K8=\+D %>Y>P P3 3  6 6& &J J I1) )  7 7O@`L<`Q  ,i4I +:""?2$2 #"0:;!EBBCMF $NN ` ! .P&)736J /*Rm\j|U-P0M]lHG?">&sfW }LOpgtbk1A eJ.^! qId=_[@N(arV,2cRvz/u~ '`BS{Q<X"common/getcpu.sca65 V2.18 - Git e091fc009/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace_getcpu.size@IsNMOS@HasINCA@LoadXAndReturn @Is45GS02@Is4510@Is2a03 @CheckHuC6280CODERODATABSSDATAZEROPAGENULLUzna` iq9 EHeJGK@ _v     -    - -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<HaHx -8 -8$z z: :N HN Z9 90a% %* I*S S? ?r r&&\( -( - 7  -f -f" -",Y -Y0  -BO;BOh0qhG < -< -01$1 - -@@ -))E -Ed -dm/ -/{ {tmm -mK Ku 3 -3 -L -Q,XhhU6  -L -k -k8 -v v[ -[055> ->P P  4 4i i, -,cm# -#ep p= -=m| -|lF F n -nHh2m; -;W -W+m -C -Ch!H H-- LL^ ^ L -=>#? -}o@A D  -:%?r{KvP4iH^  -z9SpF R< -R    n AMMm\j|U P0M]l)o>&s W9CLOpEtbkT1A;eJn.^ -qdx=5 -F"[@N (rVwcKvz/ :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@faXE  HH  -  -  -L -  -        $% __SIM6502__common/vsprintf.s -ca65 V2.15 _vsprintfpushw0spstaxysp vsnprintf.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixj2&)(@faX! -faXm[S SA A'B B% %+5 58 q8 8 P3 3 +L +  8e `    + )&  $.  +%*(,'common/getenv.sca65 V2.18 - Git e091fc00_getenv __environ +__envcount searchenvreturn0ptr1ptr3tmp1found.size@L9CODERODATABSSDATAZEROPAGENULLUzna` kz` xGJ.I/@ _% _ ?  + + 8 8 0 + +0 +x x +N N_ _w, +,+  +Y Yp%%I0\@\ + +  + vq HIq h  + & +& +  m m-| +|DDb +b +  +n n* * + +6L] +] + > +>l l - +== +LW +W + + r r  ' +' +k +k + ) +):  + + + u + u1 1   +`9 +9 T +TB B QQP +Pyy + 3 +3  +d +d + # + # H" I"  + +t +t~ +~  +  + + s + +s + +  +  + S +Se +e + J + J?L[ +[} }  :h@ +@ + + q +q{ { ``L` + ` L + +F F +  g +g + + +L +   +A +A;; +< +< +  +22R I! + H! + . +.  + +H +H  + z Hz I  + +! +!X +X  + ( +( +  + + + +  +  +/ i +ia +a + K + KO?L + + +  + qM MHfq h  + + + I! +- H!- +7 +7G +G +  +Hp p^ ^ ? ?hLU +U;@77: option requires4 4a4n4 4a4r4g4u4m4e4n4t4 4-4-4 : illegal option :-:-: ::A$$B" +!CCD>U;3Si213..-+'& % 0su#ZJKdt~eH!Xa xN_mn*lB{F 81}^?rYMpVj E)(  R,PA<7Gc@hm\j|U -P0M]lHG?")o>&ysfWC8}LOpEgtbkTAeJn$.^!iqIdx=  +F%_[@N(arV wcRKvz/u~ #'`BSDZ{Q<YXE../libwrk/none/getopt.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_stderr_fputc_fputs_strchr_optarg_optind_opterr_optopt_getopt.sizeL004EL002AL0048L005EL0004pushaxL0005L0012L0064L0067aslax1ldaxiL000EL0009L0003L0015incax1L0068pushwyspbnegaxL0018L0022ldaxysppushwpusha0L0037L0035L003EL006BL003FL0059L0046tosicmpL0066L0044incsp8CODERODATABSSDATAZEROPAGENULLUzna` kzi_ xPd@ _  _#o 8 +8  +$  +$  +B = +=#  +#  +  > +> ! +!+ ++ + ? +?3  +2J)J5%";  + +6  6 + ( ,)<L +G G&  . L0 +z0A A +DD*  + L + +z +% % :  +:  +1  +1 F +FL9 +9C  +H4 I  +IHE E/  +/hL + $%&'( "@ !@F@@!@>@=@8?'+ 6) $#  :1I/)GA%E.7K\U -P0M]HG?")>&W9C8LO6E3T1A4;J$.!I= 5 +F%7_[@N*(V,2RK/: #'`BSDZQ<YX+)../libwrk/none/gets.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_stdin_fgetc_getspushaxldaxyspdecsp2push0L0005.sizestaxyspL0018L0026L0002L0006L001AL0022addeq0spincsp8CODERODATABSSDATAZEROPAGENULLUzna` kz.e  i}@ _  _#j < + < 6 + +6% %A A;; $ + $  +  = +="  " +,>2L + 1 +1 G +G4 # +#9 +9 +5 +5 +  + ) +)-  +  +: E +E' +' +  +  / +/Q@ C  +  +  + & +&! +!8 +80 +0 +FD + +D7 + +7B HB I  + 3 H3 ILF +F$`%                  &'("?&!?  ??#E?G)/?1 ?F?=? ?$?6?<*"*%A (H\U -P0M]HG?")>&W9C8LO6E3T1A4;J$.!I= 5 +F%7_@N*(V,2RK/: #'`BSDQ<X+)../libwrk/none/gmtime.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_gmtime_mktimepushaxdecsp4L001Eldaxyspldeaxisteax0spL0005.sizeincsp6ldeax0sppusheax +tosumod0axL0004 +tosudiv0ax +tosudiveaxinceaxyCODERODATABSSDATAZEROPAGENULLUzna` iq] .  3?y @ _& +  +L + +     +    runtime/gt.sca65 V2.18 - Git e091fc00tosgt00tosgta0tosgtaxtosicmpboolgt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq#e}@ _ .(     +  +    8     i `PI `   + -"&  $! %*(,/#'+runtime/icmp.sca65 V2.18 - Git e091fc00tosicmptosicmp0spsreg.size@L1@L2@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` ix+ x*@ _ + _0(    +  ! !ɀE  " "   + $ 0 + +` L +      ! + "  #-?"> 983 .! 7*(,/ #'+!runtime/idiv32by16r16.sca65 V2.18 - Git e091fc00 idiv32by16r16negaxudiv32by16r16m9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L1@L3@L2@L4CODERODATABSSDATAZEROPAGENULLUzna` ix. e*@ _ _+&   +   E         +    + L +`        +-")&  $! %*(, #'+!runtime/imul16x16r32.sca65 V2.18 - Git e091fc00 imul16x16r32negax umul16x16r32mnegeax9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L1@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` ix2ORfYQZ@ _ _hC>. . i0 0 , -)-I%  )$ )$& ! ! &3 3F   + +#$#$/` e (e  &2 2F1 1$$`5 .0!32  1+"7U-PMHG?">& WC8LO6T14;J.I=5 +7@0,2RK/:#'BSQ<X+runtime/imul8x8r16.sca65 V2.18 - Git e091fc00 +imul8x8r16 imul8x8r16mptr1ptr3tmp18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac.sizePosStartNegMultNegStartNegAddNegShiftPosAddPosShiftCODERODATABSSDATAZEROPAGENULLUzna` ix^ 8@ _ _'i `  +      runtime/incax2.sca65 V2.18 - Git e091fc00incax28/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $d\]@ _L +  +    + runtime/incax3.sca65 V2.18 - Git e091fc00incax3incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $d\]@ _L +  +    + runtime/incax5.sca65 V2.18 - Git e091fc00incax5incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $d\]@ _L +  +    + runtime/incax6.sca65 V2.18 - Git e091fc00incax6incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $d\]@ _L +  +    + runtime/incax7.sca65 V2.18 - Git e091fc00incax7incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $d\]@ _L +  +    + runtime/incax8.sca65 V2.18 - Git e091fc00incax8incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixsBU@ _ _<  +  +e +  + ` +     +    runtime/incaxy.sca65 V2.18 - Git e091fc00incaxyincax4tmp18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac.size@L9CODERODATABSSDATAZEROPAGENULLUzna` iqf .d@ _/  `  +      + runtime/incsp1.sca65 V2.18 - Git e091fc00incsp1sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $d\]@ _L +  +    + runtime/incsp3.sca65 V2.18 - Git e091fc00incsp3addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $d\]@ _L +  +    + runtime/incsp4.sca65 V2.18 - Git e091fc00incsp4addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $d\]@ _L +  +    + runtime/incsp5.sca65 V2.18 - Git e091fc00incsp5addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $d\]@ _L +  +    + runtime/incsp6.sca65 V2.18 - Git e091fc00incsp6addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $d\]@ _L +  +    + runtime/incsp7.sca65 V2.18 - Git e091fc00incsp7addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $d\]@ _L +  +    + runtime/incsp8.sca65 V2.18 - Git e091fc00incsp8addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq& F   VD^ @ _t j ] ]        +J-   +   +- -   7 +7  +@B@ (TT x xH, , hL +I;*5p +p + i> +r[  +3  +vv  hhJEf  J&  t +ti   +A>> J?  +I4   + + +  +1Ie    +  + U +U ++P +P  +} +   + + +   +3 f  +  +CMMik k (q q D +DZ'0 H H   +e L +o +>dYY +R +>Rjj +> +  +^{ +~@} +>@gg + +~! +~!F +Fu>\ w +w + + + + +`  +*bI +| |8 +> } +~ +` +>8 +^} +z +z)a~`.&   +  +Fo oj`  +K  +jX`F ##H8 8 S S8=j[) )h` 9 9    G G`k  """""" "" +"" "" "" """""    2l m >   W $   >lmno + N*OxVmj|U0l?"o>&s9C}Otk3TA;e n^!iqdx=%_[@NarVwRKv:u '`BS{Q<Ypzlib/inflatemem.sca65 V2.18 - Git e091fc00 _inflatememincsp2spsregptr1ptr2ptr3ptr4 GET_1_BIT +GET_2_BITS +GET_3_BITS +GET_4_BITS +GET_5_BITS +GET_6_BITS +GET_7_BITS TREE_SIZE PRIMARY_TREE DISTANCE_TREELENGTH_SYMBOLSDISTANCE_SYMBOLSCONTROL_SYMBOLS inputPointer outputPointerinflateStored_pageCounterinflateDynamic_symbolinflateDynamic_lastLength-Need three bytes for inflateDynamic_tempCodesinflateDynamic_tempCodesinflateDynamic_allCodesinflateDynamic_primaryCodesinflateCodes_sourcePointerinflateCodes_lengthMinus2 getBits_base getBit_buffer.sizeinflate_blockLoopgetBitsinflateCompressedgetWordinflateStored_firstByteinflateStored_copyBytegetByteinflateStoreByte storeByteinflateCodes_loopinflate_nextBlock inflateCompressed_setCodeLengths&inflateCompressed_setLiteralCodeLengthliteralSymbolCodeLength&inflateCompressed_setControlCodeLength!inflateCompressed_noControlSymbolcontrolSymbolCodeLengthinflateDynamic inflateCodesbuildHuffmanTreefetchPrimaryCodeinflateCodes_setSequenceLengthgetAMinus1BitsMax8 fetchCodeinflateCodes_setOffsetLowByteinflateCodes_setOffsetHighBytegetNPlus1Bits_maskcopyByteinflateCodes_copyByteinflateDynamic_getHeaderinflateDynamic_headerBitsinflateDynamic_headerBase!inflateDynamic_getTempCodeLengthsinflateDynamic_tempSymbolsinflateDynamic_decodeLengthinflateDynamic_storeLengthsinflateDynamic_code16inflateDynamic_code17inflateDynamic_storeLength&inflateDynamic_controlSymbolCodeLengthinflateDynamic_storeNextinflateDynamic_storeControl"inflateDynamic_noStartDistanceTreebuildHuffmanTree_clearnBitCode_clearFrom!buildHuffmanTree_countCodeLengthsnBitCode_literalCountbuildHuffmanTree_notAllLiteralsallLiteralsCodeLength buildHuffmanTree_noControlSymbolnBitCode_controlCount!buildHuffmanTree_calculateOffsetsnBitCode_literalOffsetbuildHuffmanTree_assignCodecodeToLiteralSymbol!buildHuffmanTree_noControlSymbol2nBitCode_controlOffsetcodeToControlSymbolfetchCode_nextBitgetBitfetchCode_ge256fetchCode_allLiteralsfetchCode_notLiteral getBits_loopgetBits_normalizeLoop getBit_returngetBit_samePagestoreByte_returnCODERODATABSSDATAZEROPAGENULL Uzna` i'/ZQ@ _  _ _!cKx;. +.D +D 2 +2 m, +,# +#7m +  +  +( +( +X`8= +=`5 +5 +`-@4 H4> +>C +CHB? +?H+$ +$* +*< <0 0 ' +'J + H !!h&1 +1h +`9"#   $L%& +<0C?14 2@): )##"EmjU -0MlH?s  9CL6EgtkT1A4 n$.^ qd5 +_[N*ar,wRK/:u'`BSZQ<YX+'common/interrupt.sca65 V2.18 - Git e091fc00_set_irq +_reset_irq +clevel_irqpopax __ZP_START__jmpvec9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace8/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.macirqvec.sizeirqspzpsave@L1@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` ix\ eO(wx@ _ _%  +)`  common/isalnum.sca65 V2.18 - Git e091fc00_isalnum6/home/pzp/8bitworkshop-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 ctypemask.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix\ eO(wx@ _ _%  +)`  common/isalpha.sca65 V2.18 - Git e091fc00_isalpha6/home/pzp/8bitworkshop-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 ctypemask.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iql 3 c@ _5   +i``   +  +  common/isascii.sca65 V2.18 - Git e091fc00_isascii.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix\ eO(wx@ _ _%  +)` common/isblank.sca65 V2.18 - Git e091fc00_isblank6/home/pzp/8bitworkshop-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 ctypemask.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix\ eO(wx@ _ _%  +)`  common/iscntrl.sca65 V2.18 - Git e091fc00_iscntrl6/home/pzp/8bitworkshop-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 ctypemask.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix\ eO(wx@ _ _%  +)`  common/isdigit.sca65 V2.18 - Git e091fc00_isdigit6/home/pzp/8bitworkshop-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 ctypemask.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixn tp(@ _ _7   +)0 +` common/isgraph.sca65 V2.18 - Git e091fc00_isgraph6/home/pzp/8bitworkshop-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 ctypemask.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix\ jT(|}@ _ _%  +)` common/islower.sca65 V2.18 - Git e091fc00_islower6/home/pzp/8bitworkshop-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 ctypemask.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixb jZ(@ _ _+ +  +I)` common/isprint.sca65 V2.18 - Git e091fc00_isprint6/home/pzp/8bitworkshop-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 ctypemask.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixn tp(@ _ _7   +)7 +` common/ispunct.sca65 V2.18 - Git e091fc00_ispunct6/home/pzp/8bitworkshop-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 ctypemask.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix\ eO(wx@ _ _%  +)``  common/isspace.sca65 V2.18 - Git e091fc00_isspace6/home/pzp/8bitworkshop-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 ctypemask.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix\ eO(wx@ _ _%  +)`  common/isupper.sca65 V2.18 - Git e091fc00_isupper6/home/pzp/8bitworkshop-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 ctypemask.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix\ eO*yz@ _ _%  +)`  common/isxdigit.sca65 V2.18 - Git e091fc00 _isxdigit6/home/pzp/8bitworkshop-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 ctypemask.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iq.E# +f g@ _~) ):I I G G>  / / KF F- -H H+ +L8 +8 S +S  -L`6/G i: : iOF F@`R# # 1 18=$=( "I IHE ELN -NH.4 4 -K HK& &C< <? -?2 I2 ; -> ->hJLD -D - -4 -* -  -% --#1IESAB583:F-4&<DNK" T PMl?)>s WC8}LO6pEtk314 Jiq=5F7NrV,2wRKvuDZ{Q<X+ __SIM6502__common/vsscanf.s -ca65 V2.15_vsscanfpopax__scanfspptr1ptr2,/home/hugg/compilers/cc65/asminc/generic.mac -SSCANFDATASTR.sizeINDEXgetL1ungetsddCODERODATABSSDATAZEROPAGENULLUzna` iqm ~@faX #" H   - I -  I -   H   `  -  & $%#'+ __SIM6502__common/zerobss.s -ca65 V2.15zerobss __BSS_RUN__ __BSS_SIZE__ptr1.sizeL1L3L2L4CODERODATABSSDATAZEROPAGENULLUzna` ixme @faXfaX6           -    -     -   -      __SIM6502__runtime/zeropage.s -ca65 V2.15-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULL -_afailed.o\ _cursor.o\2_cwd.om\ _directerrno.o\ X -_environ.o\e_fdesc.om\_file.om\_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\JJ _seterrno.o\V_swap.om\ _sys.o\3uabort.o\zabs.om\kadd.om\ addeqsp.o\"addysp.o\ adler32.om\>along.om\and.o\b asctime.o\M aslax1.o\Xaslax2.o\aslax3.o\aslax4.o\b asleax1.o\D asleax2.o\  asleax3.o\L asleax4.o\hasmtab.o\\asr.o\%Sasrax1.o\xasrax2.o\asrax3.o\asrax4.o\ asreax1.o\v asreax2.o\K  asreax3.o\kk asreax4.o\atexit.o\4atoi.o\axlong.om\bneg.o\ -bpushbsp.o\X bsearch.o\+call.o\ callirq.o\ -callmain.o\,calloc.o\Wcc65_idiv32by16r16.o\Ccc65_imul16x16r32.o\:occ65_imul8x8r16.o\ cc65_sincos.o\Ccc65_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.om\crc32.om\bcreat.o\Zcrt0.o\cscanf.o\"ctime.o\F&uctype.o\' cursor.o\1dbg.om\Y' dbgdasm.o\3j dbgdump.o\~B -dbgisram.o\G dbgsupp.om\_ decax1.o\jJdecax2.o\Ldecax3.o\Mdecax4.o\zOdecax5.o\*Qdecax6.o\Rdecax7.o\Tdecax8.o\:Vdecaxy.o\Wdecsp1.o\Ydecsp2.o\X[decsp3.o\ ]decsp4.o\^decsp5.o\q`decsp6.o\$bdecsp7.o\cdecsp8.o\ediv.om\Hdivt.om\' 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\wenter.o\eq.o\errno.o\ -errormsg.o\ -exehdr.o\Efclose.o\Ixfdopen.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\Afseek.o\I@ fsetpos.o\ftell.o\R_fwrite.o\ ge.o\ getchar.o\(getcpu.om\&getcwd.om\xgetenv.o\Ngetopt.o\gets.o\0gmtime.om\ gt.o\7icmp.o\=9idiv32by16r16.o\#<imul16x16r32.o\? imul8x8r16.o\dCJincax1.o\G)incax2.o\Jincax3.o\L`incax5.o\M`incax6.o\GO`incax7.o\P`incax8.o\R`incaxy.om\incsp1.o\gSincsp2.om\incsp3.o\T`incsp4.o\KV`incsp5.o\W`incsp6.o\ Y`incsp7.o\kZ`incsp8.o\[` inflatemem.om\O$ interrupt.om\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\zitoa.o\B}jjmpvec.om\)6 joy-kernel.om\* joy_count.om\2 -joy_load.om\5m -joy_read.om\> joy_unload.om\@labs.o\ladd.o\R0laddeq.om\F -laddeqsp.o\land.om\Ilasr.o\Nlbneg.o\llcmp.o\A@lcompl.o\ldai.o\k ldau0sp.o\aldaui.o\u ldauisp.o\ldaxi.o\ldaxsp.o\ldeaxi.o\b+ -ldeaxysp.o\ ldec.om\7Lldiv.o\}le.o\ leaaxsp.o\ҩleave.om\SNleq.o\llge.o\llgt.o\sllinc.o\߯lle.o\lllt.o\,glmod.om\Qlmul.om\S lne.o\llneg.o\locale.o\t localtime.om\X longjmp.om\_lor.om\blpop.om\Uelpush.om\Nglrsub.om\ilsave.om\l}lshelp.o\lshl.o\Glshr.o\-lsub.om\$o0lsubeq.om\Ts -lsubeqsp.o\lt.o\ltest.o\nltoa.om\lv2ludiv.om\}luge.o\Nolugt.o\olule.o\,olult.o\jlumod.om\dlxor.om\ -mainargs.o\ -makebool.om\Ljmalloc.o\ memchr.om\cMmemcmp.om\zmemcpy.om\* memmove.om\8memset.o\gmkdir.o\bzmktime.om\Kj*mod.om\ modfree.o\7 modload.o\mouse-kernel.om\dmouse_buttons.om\7mouse_getbox.om\mouse_geterrormsg.om\Z mouse_hide.om\ mouse_info.om\ mouse_ioctl.om\ mouse_load.om\ mouse_move.om\  mouse_pos.om\Smouse_setbox.om\0 mouse_show.om\!mouse_unload.om\(mul.om\[1mul8.om\95 mulax10.o\ 3mulax3.om\8mulax5.om\: mulax6.o\ mulax7.om\<6mulax9.om\?+ne.o\' neg.om\FAor.om\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.om\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.om\Hscanf.o\Κ B scrsize.om\%J searchenv.o\ O ser-kernel.om\6L ser_close.om\X ser_get.om\_  ser_ioctl.om\fA -ser_load.om\'na -ser_open.om\{! ser_put.om\ ser_status.om\z# ser_unload.om\W -setjmp.o\_ shelp.om\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.om\LG steaxsp.o\O  -steaxspi.om\stkchk.o\n strcat.om\RKstrchr.om\strcmp.om\ strcoll.o\M 8strcpy.o\ b strcspn.om\Estrdup.o\  -strerror.o\  -strftime.om\cFC stricmp.om\strlen.om\W -strlower.o\o  strncat.om\RA strncmp.om\ strncpy.om\ -strnicmp.om\ -stroserr.o\9 J strpbrk.om\}  strqtok.o\  - strrchr.om\ strspn.om\Cstrstr.om\\ 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.om\system.o\ < - tgi-kernel.om\ tgi_arc.o\> - - tgi_bar.om\v1 tgi_circle.om\DG tgi_clear.om\KP tgi_clippedline.om\[\ tgi_curtoxy.om\ -{ -tgi_done.om\ tgi_ellipse.om\ tgi_free_vectorfont.o\H -Ftgi_getaspectratio.om\O tgi_getcolor.om\]= tgi_getcolorcount.om\C tgi_getdefpalette.om\ tgi_geterror.om\ tgi_geterrormsg.om\tgi_getmaxcolor.om\eU tgi_getmaxx.om\G tgi_getmaxy.om\ G tgi_getpagecount.om\HA tgi_getpalette.om\! tgi_getpixel.om\-z tgi_getset.om\:< tgi_gettextheight.om\TGstgi_gettextwidth.om\V: tgi_getxres.om\hH tgi_getyres.om\ItH tgi_gotoxy.om\ tgi_imulround.o\I -b -tgi_init.om\)tgi_install_vectorfont.om\7X tgi_ioctl.om\ -tgi_line.om\ tgi_linepop.om\ tgi_lineto.om\ -tgi_load.om\}vtgi_load_vectorfont.o\aM -I tgi_outcode.om\> tgi_outtext.om\1tgi_outtextxy.om\B tgi_pieslice.o\Y - tgi_popxy.om\ tgi_popxy2.om\+ tgi_setaspectratio.om\S8U tgi_setcolor.om\D tgi_setdrawpage.om\)Qo tgi_setpalette.om\]f tgi_setpixel.om\i` tgi_settextdir.om\^v: tgi_settextstyle.om\tgi_setviewpage.om\jo tgi_unload.om\ٟVtgi_vectorchar.om\/time.om\ -timezone.o\F` -% tolower.o\kb -tosint.o\'d -U toslong.o\|g - toupper.o\l -udiv.om\\judiv32by16r16.om\uge.o\m -ugt.o\o -ule.o\Oq -ult.o\s -umod.om\umul16x16r32.om\ - umul8x16r24.om\  umul8x8r16.o\t -Auname.o\w - uncompress.o\x - -ungetc.o\s -unlink.o\X -6 utscopy.o\ -M -vcprintf.om\ vcscanf.o\ی - -vfprintf.o\ - vfscanf.om\C vprintf.o\j -ovscanf.o\ٗ - vsnprintf.o\ - - -vsprintf.o\ - vsscanf.o\ħ -xor.om\ zerobss.o\v - -zeropage.o\ - \ No newline at end of file + +&<<<$''5  +C C(QQL4 +4J J#-M7 7 1 1A AI i;  IPi@L LL% +c% N +N,H9?2* *& *  .. # #  +H0 " "DDhBO OEE   `!)-=3=2=7=6=8== ) + +G  /C71O -+JAL*#"I FH68`N3S3Thmj| P0MlHG"oys f9C8}LO6pEgtk3T14;e$^!iqId=5 +F%_N2cRKz:u~ #BSDZ{Q<+ common/itoa.sca65 V2.18 - Git e091fc00_itoa_utoaaddysp1__hextabspsregptr2ptr3tmp1specval.sizedopoputoaL2L1L10L3L5L6L7L9CODERODATABSSDATAZEROPAGENULLUzna` iqD ]23@ _ L  +  runtime/jmpvec.sca65 V2.18 - Git e091fc00jmpvec.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqf 31q@ _/   L +` +     +  + common/labs.sca65 V2.18 - Git e091fc00_labs_imaxabsnegeaxsreg.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` iqe|$t@ _#"q  H q   +  q    q   h`  +       " !  + runtime/laddeqsp.sca65 V2.18 - Git e091fc00 laddeq0sp laddeqyspspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqC\ hkjuJjK@ _  +)   +    f  f f j   `    +  +  "&$!%*, #+runtime/lasr.sca65 V2.18 - Git e091fc00 tosasreaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` iq Gfk@ _Y        ``  +    +  +      +runtime/lbneg.sca65 V2.18 - Git e091fc00bnegeaxsregtmp1.size@L0CODERODATABSSDATAZEROPAGENULLUzna` iqX! <=@ _ !;4      8 +  +"$ $ ! !  %% " "  +(#`&`PI   +(` " + $ '-0")& 86314.! 5 +%*(2#'+runtime/lcmp.sca65 V2.18 - Git e091fc00toslcmpincsp4spsregptr1.sizeL4L1L2L3L5CODERODATABSSDATAZEROPAGENULLUzna` iq + ),Vd+@ _kI HI + I  I  h`  +       runtime/lcompl.sca65 V2.18 - Git e091fc00compleaxsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq{ =Ad@ _D        `  +    +     + runtime/ldai.sca65 V2.18 - Git e091fc00ldaidxptr1@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iql .#b@ _5    `  +      + runtime/ldaui.sca65 V2.18 - Git e091fc00ldauidxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq36Qq5@ _^    +  +  `  +      +       +runtime/ldauisp.sca65 V2.18 - Git e091fc00ldaui0spldauiyspspptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq +=Xh@ _I   +      `  +    +     + runtime/ldaxi.sca65 V2.18 - Git e091fc00ldaxildaxidxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqf87i@ _/   +  + `  +   +    runtime/ldaxsp.sca65 V2.18 - Git e091fc00ldax0spldaxyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq)<Y\[p'[(@ _           `  +        + +    +runtime/ldeaxi.sca65 V2.18 - Git e091fc00ldeaxidxldeaxisregptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq =@Vr? @ _g         `  +    +  +   runtime/ldeaxysp.sca65 V2.18 - Git e091fc00ldeax0spldeaxyspsregsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq) 58Qj7@ _q 8 +          `  +       $ #runtime/ldec.sca65 V2.18 - Git e091fc00deceaxysregtmp1.size@L9CODERODATABSSDATAZEROPAGENULLUzna` iq3.a~`yz@ _     +  +  E  L + + +  `   +       +   & ! +%( runtime/ldiv.sca65 V2.18 - Git e091fc00 tosdiv0ax tosdiveax poplsargsudiv32negeaxsregptr1tmp1tmp2.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq] .  3?y @ _& +  + L + +     +    + runtime/le.sca65 V2.18 - Git e091fc00tosle00toslea0tosleaxtosicmpboolle.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq{G[j@ _D   +e H e h`  +        + runtime/leaaxsp.sca65 V2.18 - Git e091fc00leaaxspleaa0spsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ khi@ _  +L +  +     + runtime/leq.sca65 V2.18 - Git e091fc00toseqeaxtoslcmpbooleq.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ khi@ _  +L +  +     + runtime/lge.sca65 V2.18 - Git e091fc00tosgeeaxtoslcmpboolge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ khi@ _  +L +  +     + runtime/lgt.sca65 V2.18 - Git e091fc00tosgteaxtoslcmpboolgt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  $'Lsj&@ _a  +e      `  +         +runtime/linc.sca65 V2.18 - Git e091fc00inceaxyptr4sreg@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ khi@ _  +L +  +     + runtime/lle.sca65 V2.18 - Git e091fc00tosleeaxtoslcmpboolle.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ kcd@ _  +L +  +     + runtime/llt.sca65 V2.18 - Git e091fc00toslteaxtoslcmpboollt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ khi@ _  +L +  +     + runtime/lne.sca65 V2.18 - Git e091fc00tosneeaxtoslcmpboolne.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq0 +: FIj`H@ _ IiH Ii  I +i  Ii h `  +     + runtime/lneg.sca65 V2.18 - Git e091fc00negeaxsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz+Z>J@ _ _uJ= H8 I8` % +% 7 7  /2/  +  A A6? ?C 2 +2 C CB@ @..L +0  + " ", ,=1 15&L + H IL +.DDCe  + + +- +< + +: +4 + + +$ +>9# ;!+!"2 %  A?C@",1*7 E)(Eh\jU -PM]"&fW9LOEgbkT;eJ$^!Id= 5 +%_[N*aV,cRK: #`SZQYX+#../libwrk/none/locale.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac _localeconv +_setlocale _EmptyString.size_lcL0003L0022pushaxL002Aldax0spL002Cincsp4CODERODATABSSDATAZEROPAGENULLUzna` kzUQ  ,/T$.%@ _ _<-  +  +    L +  +   +  + +   + +  + +  +   +  +      + L + !"#    <  -0")&14$.! 5 +%*(,2/ #'+$../libwrk/none/localtime.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac__tz_gmtime +_localtimepushaxdecsp4L000Cincsp6ldaxysp.sizeldeaxipusheax tosaddeaxsteax0spCODERODATABSSDATAZEROPAGENULLUzna` iq# Hx@ _ +('        +        H H   `      +0") 1 $!  +*(,2#+common/longjmp.sca65 V2.18 - Git e091fc00_longjmppopptr1spptr1ptr2.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iq`w[rde@ _       +  + `       `  +      +      runtime/lsave.sca65 V2.18 - Git e091fc00saveeaxresteaxsregregsave.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq?9x s@ _ RA # +#   !+ I(i$  Ii,' ' Ii)  Ii*   . .!!!% %Ii" " Ii   I +i & & I-i ` +& %" '.  # / 0">&98631A4; $.!=5 +%7@*(,2/: #'<+runtime/lshelp.sca65 V2.18 - Git e091fc00 poplsargsgetlopsregtmp1tmp2ptr1ptr3ptr4.sizeL1L2CODERODATABSSDATAZEROPAGENULLUzna` iq-E\_eC^D@ _ )   +   +&  & &    `    +  +")$!%*, #runtime/lshl.sca65 V2.18 - Git e091fc00 tosasleax tosshleaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` iq-E QT`u)S*@ _ +)   +   F f f  j  `    +  +  0")$!( #runtime/lshr.sca65 V2.18 - Git e091fc00 tosshreaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` iqq:t@ _'$8Iq  H Iq +  +          h`  +    +     " $!  + #runtime/lsubeqsp.sca65 V2.18 - Git e091fc00 lsubeq0sp lsubeqyspspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  3?y @ _& +  + L + +     +    + runtime/lt.sca65 V2.18 - Git e091fc00toslt00toslta0tosltaxtosicmpboollt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq +!$Gkq#@ _S        ` +    +  +      +runtime/ltest.sca65 V2.18 - Git e091fc00utsteaxtsteaxsregtmp1.sizeL9CODERODATABSSDATAZEROPAGENULLUzna` iqQ nkl@ _  +L +  +     + runtime/luge.sca65 V2.18 - Git e091fc00 tosugeeaxtoslcmpbooluge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ nkl@ _  +L +  +     + runtime/lugt.sca65 V2.18 - Git e091fc00 tosugteaxtoslcmpboolugt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ nkl@ _  +L +  +     + runtime/lule.sca65 V2.18 - Git e091fc00 tosuleeaxtoslcmpboolule.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ nfg@ _  +L +  +     + runtime/lult.sca65 V2.18 - Git e091fc00 tosulteaxtoslcmpboolult.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixzUG TW> i V @ _& _C( f f  +a a    + +"  +"d  LW +W; +;5 5[ +[w  +wJ7JJDJ|   )Ai  33 +   +  +.eG G he +  +S S# #BLQ +<Qt t( (8 eV  V   e  P z z  + +   +   } +} e&  &  9 9e-  -  Y Yse +! +! eI  +I  +  X X^  ^y y`J +4 4 +@ @q~eM +M + +  ++U U]e  E  ei  i0v8o r rL u u, ,' '  p +p  +22  +=en n geb bc cN NFL_ +_ e  6 6  eK  Kk k   + l +l e   $  $ e1  1  T  TC C  ` `)e)eL)m +)m`:)*+,- xxx}l\ / z6k ru8{jH{O?h\jU PM]HG)o>y>fW9C89OpEgtbk3;$.?!i@x=  +F%7_[N(aV<z/~ #'`BDQ<. common/lz4.sca65 V2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.macmemcpy_upwardspushaxpopax_decompress_lz4outwrittentmptokenoffsetinoutlenL0046L0004.sizeL000AL0013L001AL0017L001CL0047L002FL0045L003CL0039CODERODATABSSDATAZEROPAGENULLUzna` iqnoqr@ _,% +`  ` 0`  `!` *` + '  % +    "0")& 314 ! 5*(,2/ #'+runtime/makebool.sca65 V2.18 - Git e091fc00boolnebooleqboolltboolleboolgtboolgeboolultbooluleboolugtboolugeret1.sizeret0L0CODERODATABSSDATAZEROPAGENULLUzna` iz  +  @ _R _ _$ a a 5_5 in  BB +  +d d l l! +! m +m L +F32 28JJY JY`" "z z<@<o oIOc c  H H4 +4>e>n >nw- +-ex x N +N +]]ggV`~ +X X* +*b b +^ +^L@ +@$S$_O\ \  h , ,K Kk k W WST T L +/ /1 +1Q  + 0 0i? ? [     # # L+ ++E E9 +9R R& +&Lp +pv} }877Y 7Y ;yZ Zt ts s=en nL) )e6 6  .  UF F  8 8P q qj j CiCn{`%&'()G9&f!m1(N4-*^ + ,KW0(2"ocHXb\T/?#ER}Zs)68qja +dlJz>x7tFm|l!}#x"wv *common/malloc.sca65 V2.18 - Git e091fc00ptr1ptr2ptr3_malloc6/home/pzp/8bitworkshop-compilers/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast8/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.macDone@L1@L2@L4@L3 +BlockFoundOutOfHeapSpace@L5 TakeFromTopFillSizeAndRet +SliceBlock +RetUserPtr@L9CODERODATABSSDATAZEROPAGENULLUzna` iq8% %&@ _ 2-I  I     +H  +h   !!    L" +" e   ` "2#0"& 8314 !5%7*2/ #+common/memchr.sca65 V2.18 - Git e091fc00_memchrpopaxpopptr1return0ptr1ptr2L1.sizeL3L2foundnotfoundL9CODERODATABSSDATAZEROPAGENULLUzna` iq1*/Y\ [@ _Q<9  +)         % %$ $ &&  #L +    + + + " "   ` ! +!$" !%! +) '-0M?")CLO1AJ.!I 5F@N*K/ +common/memcpy.sca65 V2.18 - Git e091fc00_memcpymemcpy_upwardsmemcpy_getparamspopaxpopptr1spptr1ptr2ptr3.sizeL2L1doneL3CODERODATABSSDATAZEROPAGENULLUzna` i< VBC@ _  _  _PM  +. .) L +  e / /% % e 0 05 5''   # #  ,,! !    1  1  1   +  +  **L + "5" %0 " ./#! +6? -C0>HG?">&98BO@6E314 J!I= 5F%@,2K/:9#'D<<+common/memmove.sca65 V2.18 - Git e091fc00_memmovememcpy_getparamsmemcpy_upwardspopaxptr1ptr2ptr3ptr4tmp18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac.size@entry PageSizeCopy @copyBytedone @initBase +@copyBytes +@copyEntryCODERODATABSSDATAZEROPAGENULLUzna` iqH9(-J@ _]Y3 3 1,, 5 5 0 +0 +2 2) )( (; ;F f . .+     e/ / 8 8e   & 44$ $ $ $ --  '6 6*  : :99L% +% + +35/6   : );8  2(0%#<-0M]H)>&W98LOI63TA4;J.!=5F%7G[@N*(V2K/: 'BSZ<YX+common/memset.sca65 V2.18 - Git e091fc00_memset_bzero__bzeropopaxspptr1ptr2ptr3.sizecommon evenCountoddCountL2L1leaveL3CODERODATABSSDATAZEROPAGENULLUzna` iqQ $tvw@ _  +L +  +    + common/mkdir.sca65 V2.18 - Git e091fc00_mkdir +__sysmkdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz^ )++@ _D _J  +  +  +n #n` %`  + # #L +VS #S #  +L<  + < #< # $ # $+ #+ # # # #N #N #e #e #L +  #R #Re #Hhe #hv # #u #  +<  + > #> # $O #O( $( #& #&Q #Q #* #* #a #ae #eo #o||L| +| # #e #Hde #hG # #3 #3  +  +  # # $ # $ # # # # # # #xe #e #L + # #e #He #h # { #{ r #t, #, c +c    +  # # $[ #[ $ # #- # #C #C  #P #e #e^ #^L + #" #e #H=e #h # #  # #X%)%m%  # # ! !lew !wHe !h  +L + M #M # !i I ! H !  +F #F0Z #  +  +  +0IG  # #//  #_5 #5  #L + #? #  + # # # #8 %H %hYL + ' # #  +i H i I 7  + !. !. # #e !He !h  +j #j #  # # pI/  # # ! !l)e !He !h  +]22 #A #  + # # T #l #F  +  +m  + ! !  # #E  +  +e ! !e ! ! # # e@ !@Hei !ih  + #q #q  +I $ +$  +  +\  +  k +k # # ! +!  +  +   +   + Qb $b $  + +  +  # # 8 + 8  + 9  +  6 +6  +  # #  +<  +  +  K +K  +  # #  +   +  +  + $ +H $H +U +U  +L +B $ $WH "  % #~ "~h +L; +;  +zE %E#)/ : +:d  +JJ f +f  +L +yL +L +K. +De;Zxpg0N}LMNO&IG1D:f=;:986K7654832k10/.-,)('&"!$  c!U 4w.@i4~nS<+NR>O&Q*ao3 {,[C^MF5j q(bHE`hm\j|U PM]lHG?")o>&ysfW9C8}LOpEgtbkTA4;eJn$^!i5qId1x=  +F%_ [@N*(ar3V,4wcRKvz:u~ #'`BSDZ{Q<YX.+P../libwrk/none/mktime.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_div__tz_mktime _MonthLength.size +_MonthDayspushaxregswap2decsp4L002AL002EL00A2L0060 _IsLeapYearL009CstaxyspldaxysptosicmpL0052L006EL00A7incax1aslax1ldaxidecax1L007EL007Cdecaxy tosumulaxshrax2stax0spincax4 tosumoda0 staxspidxldax0spaxulongpusheax +tosumuleax +tosumul0ax tosaddeax tosumula0 tossubeaxL0029L0096addyspL002FL0038L0043L004EL005DL00A8pushw0spL0022L00AD tosumodaxL00ACincsp2CODERODATABSSDATAZEROPAGENULLUzna` iq25G|4@ _S    +  $  L + `        $ +%  runtime/mod.sca65 V2.18 - Git e091fc00tosmoda0tosmodaxpopsargsudiv16negaxsregtmp1.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq= `34@ _  +&$# common/modfree.sca65 V2.18 - Git e091fc00 _mod_free_freeCODERODATABSSDATAZEROPAGENULLUzna` i% FE{@ _ _9U _d _} _9 .  L + +3 3 `@9F3& & ` H I`2 Z +ZH HH I  +XV +!v +!v  + +! +! +`d +H  }  +  + Eh`  +: :  N +*N0 0i  L +te R RUU   +*)% T +T +| +| +)ɀ7#7@D D LLm +  ` +*`mI +IS +Sq i iL- +t- +q  xHP + +  h    +'  +le e + \ +\r Hr I  +  +8 8 +8 +R   +*C" "~A~   +*% )  +*Bp"p  +*  +*kQ Q  +*    L +"   +*L +[L +U jL +U + +m +  + +m +t tu um +H  mo +o h  +  ( (A A gL+ +U+b be HC e h  + + +  + _ +_   { +{    +8 # +*#  +*!!L +S    +m m + +Hs sm + +h  +m  + *`-hho$6$5$#   L|{?z?y?xt{p3\9<ym\j /-?GPhp][jlH 3c)oyHP=4XH7uKIB1OEEDaO}bk;3L8T/Z4Gn6^i g+4xxz=i{~f5mK_N*q(F_2rU,a1dT|>22<w@RKtvzb.Q^WI`s0`MB0{Q<SJC3common/modload.sca65 V2.18 - Git e091fc004/home/pzp/8bitworkshop-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_MEM8/home/pzp/8bitworkshop-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_MEM9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespacepushaxpusha0push0push1decax1_malloc_free_bzero __ZP_START__8/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.macModuleCtrlTPtrStack RegBankSaveHeader InputByteRelocValRead ExpectedHdrExpectedHdrSizePushCallerDataRestoreRegBank@L1GetReloc FormatErrorReadSizeReadByteReadAndCheckError@L2CleanupAndExitDoneRelocSegLoop RelocWord RelocHighRelocLow AddCommonAddHighValidateHeader HeaderErrorOptOptDoneSkipOptOSError CalcSizesGotMemUndefRelocCODERODATABSSDATAZEROPAGENULLUzna` ixrR lm@ _,  _<j}k +k6 6r +r2 2h h +]xLL9l Hl ` I`S Sz5 +5K  +w + +w+ v +wv  +0bR R (: : Y +Y  E +E  TT, +$P$$ C +dC e +e" ,I +$IL A +!A` +`u +!`m L + 0 +0.M`d; ;    `y,1 +$1==  +j , +,  +j@ + +W`kmoul ) Om%L +L +L^ +^L +L +L +LX +XL +L +LV +VLq +q`!!!no +gR g:g62hSg;Ul`UUU ^XVq\q[VZYXXWV U T^S,ReQoFJENBO5A)krF !!%A<mj/-? UYjlHG?c"B >&ys F f= WXH 8uO6EgE D aO tA k;TA4G eJn$!i9:+Idxz=5F{%7K_@N_2U ,rdV> @ ctzb.Q W I` #J'eM S0<S YX+C pmouse/mouse-kernel.sca65 V2.18 - Git e091fc00return0popsregincsp2 mouse_librefsregptr1tmp1tmp2 mouse_irq=/home/pzp/8bitworkshop-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= +@ _ _<TUVWXYPF#D#V</-? YjcB F = XH uE D aO A ;G  9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C Zmouse/mouse_buttons.sca65 V2.18 - Git e091fc00=/home/pzp/8bitworkshop-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= +@ _ _<TUVWXYN*BV</-?  YjcB F = XH uE D aO A ;G 9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C Zmouse/mouse_getbox.sca65 V2.18 - Git e091fc00=/home/pzp/8bitworkshop-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 (+b4*@ _  _<p_>>  PP6$ I$ Hy +((/`F`4 _02?CXkcNo errorGGNo drivepr availapbleppCannot lOoad drivOerOOInvalid  driver  Mouse ha3rdware n3ot found33Invalid Xioctl coXdeXXUnknown errorabcd> +r</-?  -Y0jc")B &F = XH uE D aO A ;1G $.!9:+z {%K*_2U ,d> ,@ tb./Q W I`#J'eM 0S +C emouse/mouse_geterrormsg.sca65 V2.18 - Git e091fc00=/home/pzp/8bitworkshop-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 @ _ _<3U  > +>((  + +`VWXYZK9A>? 0\</-? YjcB F = XH uE D aO A ;G 9:+z {K_2U ,d> @ tb.Q W I`JeM 0S C [mouse/mouse_hide.sca65 V2.18 - Git e091fc00=/home/pzp/8bitworkshop-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 @ _ _<*U > >L' +'VWXYZS'/>G%\</-? YjcB F = XH uE D aO A ;G  9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C [mouse/mouse_info.sca65 V2.18 - Git e091fc00ptr1=/home/pzp/8bitworkshop-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 @ _ _<4V +    +L +WXYZ[UB 3I +?^</-?  YjcB F = XH uE D aO A ;G 9:+z +{K_2U ,d> @ tb.Q W I`JeM 0S C \mouse/mouse_ioctl.sca65 V2.18 - Git e091fc00popaptr1=/home/pzp/8bitworkshop-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` iN S.  @ _ _ +>`wyz{ + +x  W  |} s-r9xqRpv>o3.n]h\2A[uH5=^F<O8jNP:Z"<hm\j /-? UGPY0]jlHG 3coB &yHF = 4X9H 8uKIB1OE D aO tA bk;/1A;G n.^i9: +Iz F{7K@N*F_2U ,dV> 2<w@ ctvb./:uQ W I`0JeM 0{<S JC ~mouse/mouse_load.sca65 V2.18 - Git e091fc00=/home/pzp/8bitworkshop-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_ioctl8/home/pzp/8bitworkshop-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_MEM6/home/pzp/8bitworkshop-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 @ _ _<V  +L +WXYZ[Q'E\</-? YjcB F = XH uE D aO A ;G  9:+z {K_2U ,d> @ tb.Q W I`JeM 0S C \mouse/mouse_move.sca65 V2.18 - Git e091fc00incsp2ptr1=/home/pzp/8bitworkshop-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 @ _ _<*U > >L' +'VWXYZRU'/>F%\</-? YjcB F = XH uE D aO A ;G  9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C [mouse/mouse_pos.sca65 V2.18 - Git e091fc00ptr1=/home/pzp/8bitworkshop-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= +@ _ _<TUVWXYMJAJV</-? YjcB F = XH uE D aO A ;G 9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C Zmouse/mouse_setbox.sca65 V2.18 - Git e091fc00=/home/pzp/8bitworkshop-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 @ _ _<=U & +&00 +??L( +(`VWXYZL+(9B&@3]</-? YjcB F = XH uE D aO A ;G  9:+z  +{K_2U ,d> @ tb.Q W I`JeM 0S C [mouse/mouse_show.sca65 V2.18 - Git e091fc00=/home/pzp/8bitworkshop-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 bevd@ _ _ 2<@ tb.Q W I` #0JeM 0S JC kmouse/mouse_unload.sca65 V2.18 - Git e091fc00=/home/pzp/8bitworkshop-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_ioctl8/home/pzp/8bitworkshop-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` iq6PgjGi@ _rE@   +. +   +(% %' F' 'f  e  ) )e# # "f$ $jf f& &  `L +  ! ! * *  +L + + + '&  % )!*#$  ,-0?")& 9CE31A4$.!5 +F%@*(,/ 'BD runtime/mul.sca65 V2.18 - Git e091fc00 tosumulaxtosmulaxmul8x16mul8x16apopptr1tmp1ptr1ptr4.size@L3@L4@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iq< H TWtp;V<@ _ +    + + +e      +&  +&  ` +      -")&$!*,/ 'common/mul20.sca65 V2.18 - Git e091fc00tmp4_mul20mul4.sizemul5mul10CODERODATABSSDATAZEROPAGENULLUzna` iqK X dg~pUfV@ _ + ! +  +  + +e      +&  +&  +&  ` +    + ! -0")&$!*,2/ 'common/mul40.sca65 V2.18 - Git e091fc00tmp4_mul40mul4.sizemul5mul10CODERODATABSSDATAZEROPAGENULLUzna` iqz 9DG$F@ _ C:8 +  +  + ((% %F  )e$ $ e& & f' 'j!f  ++" `F  e j f  #* `  +%&' $  ,-?")> 98634;$.!=5 +%7*(,: #'<+runtime/mul8.sca65 V2.18 - Git e091fc00 tosumula0tosmula0mul8x16mul8x16apopptr1ptr1ptr4.sizemul8x8@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iqCR ^ajd/`0@ _   +&   + & e  +  + e  * `  +    +      runtime/mulax10.sca65 V2.18 - Git e091fc00mulax10ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  ,/Vb.@ _m    +& +  +e He  h `  +   +     runtime/mulax3.sca65 V2.18 - Git e091fc00mulax3ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq* 6 BE`bD@ _   +&   + & e H + e h`  +       runtime/mulax5.sca65 V2.18 - Git e091fc00mulax5ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq.< HK`b J@ _   +&   e  e +  +  * `  +   +      runtime/mulax6.sca65 V2.18 - Git e091fc00mulax6ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqE R ^aob2`3@ _   + &   +&  +& +  +8  HIe h`  +   + "   +  runtime/mulax7.sca65 V2.18 - Git e091fc00mulax7ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq? L X[jb'Z(@ _   + &  +&  +&  e He h`   +  +  ! + runtime/mulax9.sca65 V2.18 - Git e091fc00mulax9ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  3?y @ _& +  + L + +     +    + runtime/ne.sca65 V2.18 - Git e091fc00tosne00tosnea0tosneaxtosicmpboolne.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqLad@ _L  +  +I i HIih`   +       + runtime/negabs.sca65 V2.18 - Git e091fc00negax_abs.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` kz8=u kN@ _ + __T; ( +( + +  + ) +)" !- -## + + & +& H I $ +$   +   + L +N  +' +'  +, H, I  +  +  * +*L +.%s: %s + !"# ()&$  +*'-T+%. -0?)>&9C86E31A4;$.= 5 +F%7@*(,2/:#'B<+$../libwrk/none/perror.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_stderr_fprintf_perror _strerror__errnoL0008.sizeL000FpushaxL0004pushwyspL0012incsp4CODERODATABSSDATAZEROPAGENULLUzna` iq =Rn@ _I  +  +    L +  +    +     runtime/popptr1.sca65 V2.18 - Git e091fc00popptr1incsp2spptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix*- KL@ _ + _3) + + +  +  m +   +  +      +     + +L + +   +   0) 98L31A4;J.=F*(2K/:B<common/printf.sca65 V2.18 - Git e091fc00_printf_stdoutpushaxaddysp _vfprintfspptr18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac ParamSize.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqM $bZ[@ _L +  +   runtime/push1.sca65 V2.18 - Git e091fc00push1pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $bZ[@ _L +  +   runtime/push2.sca65 V2.18 - Git e091fc00push2pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $bZ[@ _L +  +   runtime/push3.sca65 V2.18 - Git e091fc00push3pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $bZ[@ _L +  +   runtime/push4.sca65 V2.18 - Git e091fc00push4pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $bZ[@ _L +  +   runtime/push5.sca65 V2.18 - Git e091fc00push5pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $bZ[@ _L +  +   runtime/push6.sca65 V2.18 - Git e091fc00push6pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $bZ[@ _L +  +   runtime/push7.sca65 V2.18 - Git e091fc00push7pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $f^_@ _L +  +   runtime/pushaff.sca65 V2.18 - Git e091fc00pushaFFpushax.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq& 1._beq8a9@ _~  H 8    +  +h `  +     +  ! + #runtime/pushax.sca65 V2.18 - Git e091fc00push0pusha0pushaxsp.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqW .#r@ _  L +  +      runtime/pushbsp.sca65 V2.18 - Git e091fc00pushbsppushbysppusha0sp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $c[\@ _L +  +   runtime/pushc0.sca65 V2.18 - Git e091fc00pushc0pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $c[\@ _L +  +   runtime/pushc1.sca65 V2.18 - Git e091fc00pushc1pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $c[\@ _L +  +   runtime/pushc2.sca65 V2.18 - Git e091fc00pushc2pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq4 @CeqB@ _u +  +     L +  +     +      +runtime/pushlysp.sca65 V2.18 - Git e091fc00pushlysppusheaxsregsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq.47G~|6@ _N       L + +      +       runtime/pushw.sca65 V2.18 - Git e091fc00pushwpushwidx pushptr1idxpushaxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix= Jgj~i@ _ _  8  +       ` +      runtime/pushwsp.sca65 V2.18 - Git e091fc00pushwysppushw0spsp8/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqk 32u@ _4   + + +L +  +     +  +common/putchar.sca65 V2.18 - Git e091fc00_putcharpushax_stdout_fputc.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix<e &)z(@ _# _ 8 b +bY Y + 3c c11BBL +=hKKR R2 2 < + +< =`- -GdG> +> +6I6 +   r +Z0kak, +, +vu o + oF F j jMPM. +" " 4 +4(( +! +!' +' +a\LX +qX: : ]pp  ) ) q + q  +  +C +Ci +@+s sEt tT +dP +P# #V +m mL0 +0** S +SNO`89:W7;<= HSR": )  Fjst#m Yc2- ;0 +/ ! />'C/4<=q=oDxh\j -PHG?"o&y f9OpgtkT;e $.!i +Ix 5 +F"%[@ (a,wRvz :u#'`SZ{QYX>common/putenv.sca65 V2.18 - Git e091fc00_putenv_malloc_free searchenv +copyenvptr __environ +__envcount __envsizereturn0ptr1ptr2ptr3tmp16/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXname@L0.size@L1erroraddentry addnewentry@L2nomemnewsize@L3@L5@L4CODERODATABSSDATAZEROPAGENULLUzna` kzlI A@ _ + _iL  + + 4 +4/ / +  + 0 +0 % +%  1 +1 ) +)  + (7)7* +*  +- -  + ++ H I " +"&  +..6L +  +   ' +' 3  5 $L +  +!"  1%0+" ,)!4* '  +/ +- i28 -P0MHG?")>&9C8LO6E31A4;$.!= 5 +F%7@*(,2/: #'BD<+#../libwrk/none/puts.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_stdout_puts_strlen_writepushaxpusha0pushwyspldaxyspL0013L0003incsp2.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz. =KNm|M}@ _) _ :  + & +& +  < +<  +   + A +A  +  = +=  +  +   +    + ) +=)L + 8 +8  +W k +k  + L2 +V2 1  + e Ha*e eh!  +    +   + +L +nQ Q   +   + ,  +   +Hy  +   L +Lo  +   +  +z z0 0  +   > + > h +hHE Ex +x  +h D +D  +L_ +_ # #  + - +- w + w  +/?/  +    +  +  9 +9  +   @ +@ \ + \ J +JHZ ZY +Y  +h;  + p +p((  +  +   +9  + e He[ [rh R +R  + ce He hu  + H H  +  ~  +  l l  + N +N  +   +L +{ttLt +{t  + + I IB'B  +Ce H:e h  +   + 5e HPe h  +% %` `  + . +.  +  +   +  +6qv vHmTqX Xh  +?= " " V +V s + se He h  + 3 +3 ? ?  + O  +    +=  +8} }Hj Fh]L +S^ ^  | +|K  +U  + 8g gH+n h  +    +  q + q  +=  +Med dH'e4 4h +  +  S  +   +   +0GGL +T   i  7 7  +  {L +;<=>?952..,p+xDY*h9J' -N3%"!>w\s qk8L @RV|A< &=b2Qz0#[Hl%`"?}^gd4 EZIvX7=hm\j|U -P0M]lHG?")o&ys)fWC}LO#pEgtbk3T1A;eJn$.^!i(qIdx  +F%_ [@N*(arV,wcRKvz/u&~* #'`BSDZ{QYX+@../libwrk/none/qsort.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_qsort__swappushaxldaxyspL0048pushwysppush0decax1 tosumulax +_QuickSortincsp8.sizeregswap2decsp4L003EL0002staxyspstax0spL0022L000EaddeqyspL0010tosicmpL0055L001Atosaddaxjmpvecincsp2L0018subeq0spL0056L0053L0057ldax0spL005AL002Cshlax1L0032L0054L0058addyspCODERODATABSSDATAZEROPAGENULLUzna` ixu [cd@ _  _+  +& +"H$ +" +  + + + H + I# +#h%  +`  #&--)&7(%6314$6+4%5*,1,2.'+common/raise.sca65 V2.18 - Git e091fc00jmpvec7/home/pzp/8bitworkshop-compilers/cc65/asminc/signal.incSIG_ERRSIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERMSIGCOUNTsigtable __sig_ign __sig_dfl_signal_raise.size +invalidsigCODERODATABSSDATAZEROPAGENULLUzna` iqPoQe@x_4# + + + + + + +i +m +  +m +  +M +)  +m + +M +`   +   -?>9C8E31A4;=F7@2:'BD< common/rand.sca65 V2.18 - Git e091fc00_rand_srandrand.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz!hvy  x @ _ _0  +  V + +V   S + S i + i " s r +r } }  +LT +.T  I I~ D +D L +Ld7Lj +.j1*e M M` `  ooJ J++9f f  Z +Z Q +Q 3 +3 q q6  H  + ze( (He nh + UVUl + lQt + t8A\ \HN' + ': WhBe HRe 8hY w +w8$@ + @  + _ _##$  + + 2 + 2 C C   ? ? c  +  + kL ++g gG G  + m +m ! !=0&  +- -8,K^ ^  {< <    +p pF FP b +b   +E E  v +v y ] +] / +/= u +uH)x x 5O O [hh> >h L% +%12345/|%-|b+|(|&|w$| m#|3"|Q|DZ]u|i|V|S.@;lt'2XvL/a _!x>e&}M` Jfq(C ? +gG-pFEe\^&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 +F%7_[@N*(arV,2wcRKvz/:u~ #'`BSDZ{Q<YX+6../libwrk/none/realloc.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_malloc_realloc_free_memcpy __heapptr __heapendpushaxregswap2decsp6L0002L0001.sizeL0006ldaxyspL000EL0011L000Fdecax4ldaxidxstaxyspL0021stax0spL003Eldax0spL003FL002BsubeqyspL0031pushwyspL003CaddyspCODERODATABSSDATAZEROPAGENULLUzna` iq # /2Vs1@ _e    H  +  +h  ` +      +     +runtime/regswap.sca65 V2.18 - Git e091fc00regswapspregbanktmp1@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqt =@l@ _=   H    h `  +     +    + runtime/regswap1.sca65 V2.18 - Git e091fc00regswap1spregbank.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq(; GJ`lI@ _ H   h   H  h  `  +   + +  ! +# runtime/regswap2.sca65 V2.18 - Git e091fc00regswap2spregbank.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ )w~@ _  +L +  +    + common/remove.sca65 V2.18 - Git e091fc00_remove __sysremove __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ )w~@ _  +L +  +    + common/rename.sca65 V2.18 - Git e091fc00_rename __sysrename __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM $_QR@ _`  +     runtime/return0.sca65 V2.18 - Git e091fc00return0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqN $_RS@ _`  +     runtime/return1.sca65 V2.18 - Git e091fc00return1.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz +4 @CV3B@ _ _X  +   +  +  +  +  +L +    "&!  +% # ../libwrk/none/rewind.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac _clearerr_fseek_rewindpushaxpushw0sppushl0ldax0spincsp2.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $tvw@ _  +L +  +    + common/rmdir.sca65 V2.18 - Git e091fc00_rmdir +__sysrmdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix*- JK@ _ + _3) + + +  +  m +         +      + +L + +     +! 0H)&9831A4J!I= +%*(2/ 'B+common/scanf.sca65 V2.18 - Git e091fc00_scanf_stdinpushaxaddysp_vfscanfspptr18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac.sizeArgSize@L1CODERODATABSSDATAZEROPAGENULLUzna` iq=&KL@ _4.  +) +!0 +   # #    + +   ="`  +  + ` #) )$PM)& CLO63T1A4;J=5%7N*(,2R '<+common/searchenv.sca65 V2.18 - Git e091fc00 searchenv +copyenvptr __environ +__envcountptr1ptr2ptr3@L0.size@L9@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` iqj %n@ _%#       +    hh H H L +  +      -")&.! +*(,2 '+common/setjmp.sca65 V2.18 - Git e091fc00__setjmpreturn0spptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq>.l x{[gzh@ _   +  +    +    +  L +  +           +runtime/shelp.sca65 V2.18 - Git e091fc00popsargsudiv16negaxpopaxudiv16tmp1tmp2ptr1ptr4.sizeL1L2CODERODATABSSDATAZEROPAGENULLUzna` iq(}@ _ 4.   + + + H# )8&""h $J((`h`h` ih F j% '' ` + )-H?)>&9C861A!I=%7@*,2K 'BD+ runtime/shr.sca65 V2.18 - Git e091fc00tosshraxshraxypopaxtmp1.sizeL2L3L4L1L5CODERODATABSSDATAZEROPAGENULLUzna` iqe )byz@ _. F j `  +     + runtime/shrax1.sca65 V2.18 - Git e091fc00shrax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqt + 31b@ _=   F jF j  `  +   +    + runtime/shrax2.sca65 V2.18 - Git e091fc00shrax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq =Kb @ _L +  +F jF  jF  j `  +  +  +    + runtime/shrax3.sca65 V2.18 - Git e091fc00shrax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  Geb@ _[  F jF  jF  j F j `  +  +       + runtime/shrax4.sca65 V2.18 - Git e091fc00shrax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq 8Gi@ _H   F f f j + `  +       + runtime/shreax1.sca65 V2.18 - Git e091fc00shreax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq, 8;Li:@ _q F f  f jF +  +f f j `  +     +      + runtime/shreax2.sca65 V2.18 - Git e091fc00shreax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqBX dg`i0f1@ _ F  f  f jF  f f jF f f j `  +      +    + runtime/shreax3.sca65 V2.18 - Git e091fc00shreax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq !$Gkm#@ _] F  f f  j  `  +    +  +     +runtime/shreax4.sca65 V2.18 - Git e091fc00shreax4sregtmp1.size@L1CODERODATABSSDATAZEROPAGENULLUzna` i+dKYZ@ _  _ _ 00' 9 9  +??8## +<x , +,HF0 0 +! +!H6   +X1h(h`7 + * +*`12345*.,!'90  =/>(G --0?))>&9C78(%61A.6!+475@**,1,2./:  'BD +"+6common/signal.sca65 V2.18 - Git e091fc00popaxptr17/home/pzp/8bitworkshop-compilers/cc65/asminc/signal.incSIG_ERRSIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERMSIGCOUNTsigtable __sig_ign __sig_dfl_signal_raise6/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.size +invalidsigCODERODATABSSDATAZEROPAGENULLUzna` ix[ jXQR@ _ _$  + + + + + + + +  -)7(%6+45*,.common/sigtable.sca65 V2.18 - Git e091fc00sigtable7/home/pzp/8bitworkshop-compilers/cc65/asminc/signal.incSIG_ERRSIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERMSIGCOUNT __sig_ign __sig_dfl_signal_raise.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq1;@ _GS< iZ((!h..h9   +$ɴ88Z%%Ii,W` / +/`-87Z0I"i5#W;)`:4Y + i&*`WW++ + +++++$+(+,15:>BGKOSX\`dhlptx|66666666661111111111          3333333.'s98Otb31Jn!i=7NV,2cv:u~ #{Q<common/sincos.sca65 V2.18 - Git e091fc00__cos__sin_sintab.size@L1@L2@L3L3L4L1L2L5L6L7CODERODATABSSDATAZEROPAGENULLUzna` kz= @ _ _  +../libwrk/none/sleep.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.macCODERODATABSSDATAZEROPAGENULLUzna` ix % I@ _ + _+$ +  + +e               + +L + +     -?) C6E34;$.5*(,2:D+common/snprintf.sca65 V2.18 - Git e091fc00 _snprintfpushaxaddyspdecsp6 +_vsnprintfspptr18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` ix % I@ _ + _+$ +  + +e               + +L + +     -?) C6E34;$.5*(,2:D+common/sprintf.sca65 V2.18 - Git e091fc00_sprintfpushaxaddyspdecsp4 _vsprintfspptr18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` ix % I@ _  _+$ +  + + e              +  +L + +  +  PHG? 9C8L61A;57@(R:'BQcommon/sscanf.sca65 V2.18 - Git e091fc00_sscanfaddyspdecsp4_vsscanfspptr18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` iq6 BE[uD@ _q H        h  L + +      +   runtime/staspidx.sca65 V2.18 - Git e091fc00staspidxincsp2sptmp1ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqp BKi@ _9  + +  +H  h`  +    +      + runtime/staxsp.sca65 V2.18 - Git e091fc00staxyspstax0spsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq*GJ`qI@ _q  H      h`  +       +  +    +runtime/steaxsp.sca65 V2.18 - Git e091fc00steaxyspsteax0spspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqY- ~@ _ "!      +            ` +    "  ! +% #runtime/steaxspi.sca65 V2.18 - Git e091fc00 +steaxspidxpopptr1sregptr1tmp1tmp2tmp3.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqXo {~o}j}k@ _ !     +     + +   ``       !  common/strcmp.sca65 V2.18 - Git e091fc00_strcmppopptr1ptr1ptr2.sizeloopL1L3L2CODERODATABSSDATAZEROPAGENULLUzna` iq= a45@ _  +  + common/strcoll.sca65 V2.18 - Git e091fc00_strcoll_strcmpCODERODATABSSDATAZEROPAGENULLUzna` iqXr ~js^_@ _ +     +         +   `          common/strcpy.sca65 V2.18 - Git e091fc00_strcpypopaxptr1ptr2.sizeL1L9CODERODATABSSDATAZEROPAGENULLUzna` iq* ]@ _ -)  +    +        `  +  +    +   -0")& 314 .!  +%*(,2 #'common/strcspn.sca65 V2.18 - Git e091fc00_strcspnpopptr1_strlenptr1ptr2tmp1tmp2.sizeloadCharleaveadvancecheck checkNextendOfTestCharsCODERODATABSSDATAZEROPAGENULLUzna` ix$3 ?BxA@ _ _ u#  +  + + % +% +& +& + ` $%&'(# %& ) ! + "   #)common/strerror.sca65 V2.18 - Git e091fc00 _strerror __sys_errlist6/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz*+R`-o-r-W?Cq-C@ _g _"    + +u +u +  + L +  +    +$  +Q Q +nn2  +- - t" 4 +4 +L + +%L +L I +- H +-  +    +  + %L +.AL +7BaaLa +WaDL +wFL +HL +I?L +(ML +]PL +}SL +UL +WL +XL +YYL +ZL +aL +b#L +cL +@dL +jL +mL +p L +7wL +^xL +~yL +L + + +L +  +    +   + i H7i I  + + +- +-L +  +    +   + 8i Hi\ I\ p + +p +- +-L + H I  + H. I.  +  +  ) + )  +  +  +O  +    +   + d  +  + +  +L +| H|, I,  + H I  +  +   +   le He h  +  +   +   + l +l   +  +  +  +L + H I  + H + I +  + ` +`<  +   +L + H I  + H + I +  +  +  +  ;  +  +   + B +B  +  +L + H I V +V H + I +  +  +  +   +L +  +   +  pI H} I}L + H1 I1 +- +-L + H I  + H + I +  + G +G  +  +L9 +9 H I  + H + I +  +  +  +   +  +  +   +   +  +  +  +  +L + H I   + H + I +  +  +  +   +   +3  +      > +>   +   +LZ +CZ  +  +  + x +x  +L + H I  + H= I=  +  +  +   + ! + !   +  + +  +L + H I  + H I  + ' +'  X + X  le He he + ++  + L +  +    (  H + I +L + H I +- +-L + H& I&  + H I  +  +   +  I + IiJ HJiF IF  +  +L + H I  + Hj Ij  +  +   +   + i Hi Ic  +y  +L +[ H[ I  +{ H{ I  +  +   +   + i Hi IM  +b  +   +   + i Hi I  +  _ +_  +    +  +    +  +  ^ +^ * +*  + L  +   lef fHe h  +  +L + H I  + H + I +  +  +  +   +L + H I  + H I w +w  +  +   +  +  +L + H I  + H + I +  +  +  ~ + ~  +  +  +L +  +  % + % TpIoo Hs IsL0 +U0 H I +-K +-KL + H I  + H I  +P  +   +   +L + H I / +/ H I  +  +  . + .  lWSe He h  +  +   +   + U +U   +  +  + A +AL + H I  + H + I +  +  +   + rd  +  +  +L + + +- +-  + + +m + +m + + + +  + +i L +    + +- +-  + + +  +: +:q +qR  +L +   +   Y +Y  +D +D  +L +  +L + l%.3s %.3s%3d %02d:%02d:%02d %d% 0 4 d - % 0 2 d - % 0 2 d  %]0]2]d]/]%]0]2]d]/]%]0]2]d]]%02d:%02d:%02dWednesdaySeptemberFebruarySaturdayNovemberThursdayDecemberJanuaryOgcgtgogbgegrggTuesdayAugustFridaySundayMondayMarchAprilJune%03d%.3sJNuNlNyNNMay%4dAMampmPmMmm +E + + +L +{ + +i + +` + + + + + + +Vd + +r +//66z6x6w6v6 u6*q6p6o6!m6pk6Ij6)X~%.i6H6G6 BYF6(`G>'_^E6A6;lVx+w/U A @-f Q + m\j|U -P0M]lHG?")o>&ysW9C8}LO6pEtk3T1A4;eJn$.!i5qI1x= 5 +F%7 [@N*(r3V,2 4wRKvz/:u~ #'BSDZ{Q<YX.+../libwrk/none/strftime.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_strlen_memcpy_sprintf__tz _strftimeL00DA.sizeL006BL0111L0062L00B2L000DL0027L0019L0013L002BL000FL002DL0017L0029L000BL0025L0011L0007L0009L001BL001DL007BL0083L011AL0021L0096L009DL00A5L00F7L00F0L00CAL00D2L0074L00E9L0023L001FL00BBL0103L010AL008FL008CL0100pushaxL002FL0037L003Bincsp8ldaxyspincax1staxyspL0031L0133L0045L0033L0034L0135L0055L005AL005FL0068L0071L0078L0080L0087L0093L009AL00A2L00AFL00B8L00BFL00C7L00CFL00D7L00E6L00EDL00F4L00FBL0107L010EL0117L0136L004Bldax0spldaxidxaslax1L0006ldaxiL0016pushwidxtosmoda0incaxyL008BL008DL0090pushwincax7tossubaxtosdiva0L00AAdecax1L00ACL00C2L00C4L00FFL0101L0104L0030pushwyspaddeqyspCODERODATABSSDATAZEROPAGENULLUzna` ixw069 +Cf8@ _  _@ C:   / +/& &   +)00+e      +).  e 4 4  ) )#       +`*2`!"#$% + 4&%/   5-0")&986314$.!=5%*(2/: '<+&common/stricmp.sca65 V2.18 - Git e091fc00_stricmp _strcasecmppopptr1ptr1ptr2tmp1tmp2ctypemaskdirect6/home/pzp/8bitworkshop-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` ixxO@ _  _'#           +) i $ ! !  `    ! + ' ") $! *( #!common/strlower.sca65 V2.18 - Git e091fc00 _strlower_strlwrpopaxptr1ptr2ctypemaskdirect6/home/pzp/8bitworkshop-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` iqZ& _`@ _#92I I! !  +   # +#        + +$ $"` ` `! $ #%-0MHG C8LO6A4 J.I=57(,/'B<common/strncmp.sca65 V2.18 - Git e091fc00_strncmppopaxpopptr1ptr1ptr2ptr3.sizeLoopIncHiCompNotEqualEqual1EqualL1CODERODATABSSDATAZEROPAGENULLUzna` ix= RS@ _  _ 0.  H  I     " q       i   `    +  + #-0"& 9861;$.!= +%7,2/: '+common/stroserr.sca65 V2.18 - Git e091fc00 __stroserror__sys_oserrlistptr1tmp18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac.size@L1DoneCODERODATABSSDATAZEROPAGENULLUzna` iqB( @ _  2/ +  +   +               `` +    -)&3.! 5 +%(/ 'common/strpbrk.sca65 V2.18 - Git e091fc00_strpbrkpopaxptr1ptr2tmp2tmp3.sizeL1L9L3L4L6CODERODATABSSDATAZEROPAGENULLUzna` kzqS> KN +M +@ _ _- l +lE m +mB BR R#o +o[ [ +Z Z~ +~"`  LC +Ch +h:La +a8 8==O O . +.S) )$ +$i > +>y yL L +"X;7;q q% +%s s0 +0LQ +bQ H H@e e+ ++"YY - +- + x d +dr r9 9  ^ +^#<#L} +}| |ttW W +D DU +Up p\ +\5 5c c I +I?"! 1 +1 F F66 +A IA +/ H/LG +G]4 4j jffb bK K +g gu +u +* +*Hk 7 7v v 3 3hLN +N#. z{w /<nn0 +T12(2N2.-2m2lIM>d1 +yLr9PBR[Z8O)qsHe|WDp5cF4jbKgv3P7,hm\j|U -P0M]lHG?")o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 +F%7_[@N*(arV,2wcRKvz/:u~ #'`BSDZ{Q<YX+3../libwrk/none/strqtok.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_strchr_strqtokL0044.sizeL0004pushaxregswap2L0012L0005L0002L0054L0010L0017L0001pushw0spL001EL0003L0024L0022L0053L003CL0030L0056incsp4L001FL000FL0033L0031CODERODATABSSDATAZEROPAGENULLUzna` iqk  "@ _ $"   +     +  +       `  + ")  !  +( #'common/strrchr.sca65 V2.18 - Git e091fc00_strrchrpopaxptr1tmp1tmp2.sizetestCharfinishednextChar charFoundCODERODATABSSDATAZEROPAGENULLUzna` iq* ]@ _ -)  +    +          +  +`   +    -0")& 34 .!  +%*(,2/ #'common/strspn.sca65 V2.18 - Git e091fc00_strspnpopptr1_strlenptr1ptr2tmp1tmp2.sizeloadCharleaveadvancecheck checkNext foundTestCharCODERODATABSSDATAZEROPAGENULLUzna` iqs6 VW@ _RN      +  <% % ; --) **+"e ! !11# # $ $    ( (0 0    ,,' ' +  +`&.`  %  ( 0    !#$' +2 MG?")> L63T1A4; != 5F_@*(,2RK: #'BSQ<+common/strstr.sca65 V2.18 - Git e091fc00_strstrpopptr1ptr1ptr2ptr3ptr4tmp1.size@Found@L1 @NotFound@L2@L3@L4@L5CODERODATABSSDATAZEROPAGENULLUzna` iq=  e34@ _  + common/strtoimax.sca65 V2.18 - Git e091fc00_strtol +_strtoimaxCODERODATABSSDATAZEROPAGENULLUzna` kzYa4 ADHC@ _ _* ] +]X5  + Y +Y2  2@  @ +Z +ZG  G +F  FfK  K 3LT +T   ++L  L)-  -=" +"A U +U.c +c;  +DD,\\_ +_$$?  ? +  8 +80LQ +Q      E +EL! +r!   bbP  P^*  *J +Jeed ` +`C +  4 +4B[[H''O9 +9/ /  % +%  6 +6L +(  1  1   # +#7 +7I +I  +H&VR +RM  M: +S  ShaL ++, -./ ) +( +' +#  +E +U` +Y + +]<4>2@GFK L-? P*1MS>"c_J9RN ghm\j|U -P0M]lHG?")o>&ysfW9C8LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 +F%7_[@N*(arV,2wcRKvz/:u~ #'`BSDZ{Q<YX+0../libwrk/none/strtok.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_strchr_strtok_Last.sizepushaxregswap2decsp3L0003L0039L0002L000BL0017L003FpushwyspL0018stax0spL0021L001FL0040L0037L002CL0030incax1ldax0spincsp7CODERODATABSSDATAZEROPAGENULLUzna` kz- 3ADC@ _( _ L  +     +8  +   > +>  +  + 9 +9  +L ++  & &  +} } e +[Q +Q-  < <4 4 S Sh h4/. .0$ __' ' xc  X   LM +M  +L + + )  +L + %w Hl l0x xx- + +X: :fe B Bvv    A L +] "| |*  +u  +   + ,  +  +   + +   +  5 + 5  +  +  = + = Y +YF  V +VU U  7 70Ln +In% %  +    7L~ +I~   +X Xp pL +N W a +a  s } D  +   +  { + {  +# i  +   + J  +   +r r8   EE?@ @ 606   +   +   +  +  2 +2  +  L   +  + + # +#^+  + L +  L +3t tj O4OT    +! !R R q  L +  +   0 +0; ;K   #z g +g  C CZ Z\ \Ly +SyG P Ld +Sd(k k    +   +L +S   + Ho  Ib b$ $h1L +MNOPQKJBA@?2<:9a3=2105/ {.Y#)9>0 mg`V +}UXp!&4.'lxB7%$|!R; Z\&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 +F%7_ [@N*(arV,2 wcRKvz/:u~ #'`BSDZ{Q<YX+R../libwrk/none/strtol.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_isdigit_islower_isspace_isupper +__seterrno_strtolpushaxldaxysppushl0pushapush0decsp6L0009L0007.sizeL0016L0010L0090L008FL001FL008DL008EL0024L00A1staxyspL002EL0095L003AL00A9steaxyspldeaxysppusheaxaxlong +tosumodeax +tosudiveaxL0046L004AL00A7L0050L0047decaxy tosugteaxL0061toseqeaxL0060L0068 +tosumuleaxaxulong tosaddeaxaddeqyspL0077L0072L00A4L0082L007EL0087L0084negeaxaddyspCODERODATABSSDATAZEROPAGENULLUzna` kzk lQ _ b 5a @ _% _4 I  +     +5  +   ; +;  +  + 6 +6  +L ++  $ ${  +v v _ +WM +M-  9 91 1~ ~O Ob b4-, ,0$ [[% % x^X  zz LI +I  +L + + '  +L + %p Ef f0q qx+ + +X7 7`e ? ?oo   >  +  + Y + Y  + !u u( ( n  + * +*  +   +   + + y 2 +2   : 0ULC +0C R Q +Q   4 7hL +0#   +x x L + Ww  +  T TiJ J}  ] +]  +  +  +# l  +  +A  +  +t 8c  F Fk k 0   +  +B < +<  +  = +=  + 3   +  + +  + +/  +H HL +  L +" "Z )4)  0 m +md d K KP  L +  +  N N j +j    . +.8 8 GL +&    s a +a  +L +& @  +HV}X X rD D hLL +JKLMNHeGe@e?e>e=e=:e8e7e]a6e0e/e.e-eY,e)eee6ee;e*&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 +F%7_ [@N*(arV,2 wcRKvz/:u~ #'`BSDZ{Q<YX+O../libwrk/none/strtoul.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_isdigit_islower_isspace_isupper +__seterrno_strtoulpushaxldaxysppushl0pushapush0decsp6L0009L0007.sizeL0016L0010L0082L0081L001FL007FL0080L0024L0093staxyspL002EL0087pusheaxaxlong +tosumodeax +tosudiveaxsteaxyspL003EL0042L0098L0048L003Fdecaxyldeaxysp tosugteaxL0059toseqeaxL0058L0060 +tosumuleaxaxulong tosaddeaxaddeqyspL006FL006AL0095L0072L007AL0077negeaxaddyspCODERODATABSSDATAZEROPAGENULLUzna` iq=  f45@ _  + common/strtoumax.sca65 V2.18 - Git e091fc00_strtoul +_strtoumaxCODERODATABSSDATAZEROPAGENULLUzna` ixxO@ _  _'#           +) i$ ! !  `    ! + ' ") $! *( #!common/strupper.sca65 V2.18 - Git e091fc00 _strupper_struprpopaxptr1ptr2ctypemaskdirect6/home/pzp/8bitworkshop-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 RUe.T@ _ _n   +  +   +  +  +  +  + L +  +    ")&$!  +%( #../libwrk/none/strxfrm.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_strlen_strncpy_strxfrmpushaxpushwyspldaxyspincsp6.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  +25`l4@ _c8 Iq   HIq  h`  +      + +    + runtime/subeqsp.sca65 V2.18 - Git e091fc00subeq0spsubeqyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  BKd@ _I   +I8 e   `  +       runtime/subysp.sca65 V2.18 - Git e091fc00subyspsp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz# /2V1@ _ _]  +   L + L +  +   "&!  +% #../libwrk/none/system.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_systempushaxL0002incsp2.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzo { + +@ _ _8) N + +N  } + }w K +K  x +x8H +Z# #y ydc c hhL +Is @iq= =CCV3[.)) tLD +ADS! ! a +aB| | * +* 5 +5 X + X  +   +P F +Fp 0 +0b b 2 +2  + o + o ~ + ~ ? +?  g +g(   ` +`   + +J] ]{e: :nn Q +Q E ' +'6L L ; +;  G +G  4 +4 O + O f + f % +%9 u +uq m +mR$ $ r +r  +  / + / v + v  +<  +   +  8  + + + U  +   +  + \ z +zY > +>  +_  +" --L-^ +-^&Lj +j*+,-.(+j&+`$+?#+Fg'u>"+%!+*2Gr +a0;m ++ +x5Q4 z+K+}+N7XOMo/l~fvT yW#c=!|b]:L$1hm\j|U -P0M]lHG?")o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 +F%7_ [@N*(arV,2 wcRKvz/:u~ #'`BSDZ{Q<YX+/../libwrk/none/tgi_arc.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac _tgi_line_tgi_arc_tgi_imulround__sin__cospushaxsubysppushaldaxyspL0005L0019.sizeL0037L0039L003Apushwysppusha0tosaddaxstaxysptossubaxL0018addeqyspL001DaddyspCODERODATABSSDATAZEROPAGENULLUzna` ix6M Y\G +/v[w@ _ _Qi iD D  +0 0H H  +    +  e e$ $a a ) )  % %    V V TTX X > > 8 84 4 Y Y! ! 0WYW$A A  r r] ] = + +=  + +A$ 22     +  N + N)B B + +f f + + OO  + ` ` + + +J J +   +y y* *L: +:`  iDVX8Y!Jy* 0HeaBf` >4 $)%Ar{z_^l:AN+@= n;< hymj/ - ?  Ph0[lHG?")B )&ysF = W9H 7 8u}(O6EgE D OtA }bk; 38 1A4;G Jn$6 !i9 : gn+I4xxz5 +F{~%f75m_[@N**(_2 , a1 rdV|> 2ww\@ vcRtv. /:u^I #sJ'e`V0 ZQYX+C 3  tgi/tgi_bar.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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_unloadptr1ptr2ptr3ptr4popaxpopptr1@L1@L2@L9@L3@L4@L5@L6@L7@L8CODERODATABSSDATAZEROPAGENULLUzna` ixW hSE F @ _ _Q $ +$L +$rloB< y/ - ? h[B ) F = H 7 u(E D OA }; 8 G 6 9 : gn+4xz{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_circle.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 +T#  @ _ _QTp< y/ - ? h[B ) F = H 7 u(E D OA }; 8 G 6 9 : gn+4xz{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_clear.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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` in + +     @ _L _Q _ _ + @ +@ +` H  + +` +I[ip +p +I6i3 +`T +T8 +  + + +  - +- +  + +8 +Q +Qw +w + +M +2 +2, +AAL +`M. +.  1 + 1  `P P  _ _] ] `  +i~ +~ + V +V  +| + +  + $ Lv + v`  +i + + = +=  +| + + S + SL +\ +  +  +  +  +  + 7 7GGL + +- +`m +bb + e +(eZ +ZOOL +lJu J,9 + 9 + 8X + X +  +  +   +ml +l +m +: +: +JJJ&& Jdt't + + + + + +8 +8 +8 + +  +mq + q + m +  +  j +j +OOL +JDs sJ, +  + 8 + + + +  +m + +m + + + JJJ''4 4JEk'k + + + +z8| + + +r +r  +mY +Y +mi +i +  + L +#     ) y_7P]l@`P rwO +YiTN l:8M Xq F +E59L1S=Ve< hy\/ - ? U-h0][lHG?)oB )& F f= WCH 7 uL(Eg E D OtA }k; 38 A4G eJn6 ^i9 : gnq+Id4xz5F{~f75m_[**(_2  , a1 rd|> 2w\@ vctv. ^IsJ e`B DV0 ZYX+C 3 tgi/tgi_clippedline.sca65 V2.18 - Git e091fc00 umul16x16r32 udiv32by16r16negax;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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_unload9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace;/home/pzp/8bitworkshop-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` ixCY1 ! @ _ _Q2OO199< y/ - ? h[B )F = H 7 u(E D OA }; 8 G 6 9 : gn+4xz{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 common/tgi_colors.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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(G RU T @ _ _Qt@ +@X X) +)x x. +.& & +! !`2&!Xx7y.6|@)c< y/ - ?  h[B ) F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz {~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_curtoxy.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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` iv   @ _ _Q _: +A +A[[ ) +)J +J`/QX)5&AJq`< y/ - ? h[B )(F = H 7 +u)&('E -D OA }; 8 /G  6 .9 : gn+4xz  +{~f5m**_2 , 1 d,|> 2w\@ vt. ^Is0JeV0 C 3 tgi/tgi_done.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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/pzp/8bitworkshop-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  w|  } @ _ _Q4  7 +7 a +ahL +RaR7m~r  < y/ - ? h[B )F = H 7 u(E D OA }; 8 G 6 9 : gn+4xz {~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_ellipse.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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` iq=  tBC@ _  +  + tgi/tgi_free_vectorfont.sca65 V2.18 - Git e091fc00_free_tgi_free_vectorfontCODERODATABSSDATAZEROPAGENULLUzna` ixb hYM N @ _ _Q&% +%q +q`AH%qs9< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_getaspectratio.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 hM; < @ _ _Q8 +8Q`$8M8tV< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz  +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_getcolor.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 hM@ A @ _ _Q + 9`QD] u< y/ - ?  h[B ) F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz {~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_getcolorcount.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 +T#  @ _ _QZG7v7< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_getdefpalette.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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; : @ _ _QcW +W ( +(ww F +F-% +% 1 +1`;RF4~%13W(w< y/ - ?  h[B )F = H 7 u(E D OA }; 8 G 6 9 : gn+4xz {~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_geterror.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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` iw DJT @ _  _Q _t1 1[ [8* I * H $y= +=LL}`5 S0t?\vNo errorNo driver availableCannot lIoad drivIerIIInvalid driverMode notF supportFed by drFiverFFInvalid JfunctionJ argumenJtJJFunctionp not suppportedppInvalid 3font fil3e33Out of rvesourcesvvUnknown -error--A driver' is alre'ady inst'alled''xP< y/ - ? h0[")B )(&F = 9H 7 +8u)&(6'E -D OA }; 38 /14;G  $.6 .9 : gn+4xz5{~%f75m***(_2 , 1 d,|> ,22w\@ vt. /^I#s0J'eV0 +C 3 tgi/tgi_geterrormsg.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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/pzp/8bitworkshop-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  KUzna` ixb raR S @ _ _Q&& +&sC+`#D_&y;< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_getmaxcolor.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 hXE F @ _ _Q&% +%q +q`AB%qz9< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_getmaxx.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 hXE F @ _ _Q&Q +Q% +%`qC9Q%{ < y/ - ?  h[B )F = H 7 u(E D OA }; 8 G 6 9 : gn+4xz {~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_getmaxy.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 hN@ A @ _ _Q8 +8Q`$E8|V< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz  +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_getpagecount.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 +T#  @ _ _QYR7}7< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_getpalette.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 w|v w @ _ _Q/  & +&ttLC +CL+ ++X+d&\ C~ ;< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_getpixel.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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]( AA B @ _ _Q , +,0: :8g0 L +L + +A A_ +_  +`l>A>:j,A_@jLd{< y/ - ?  h[B )&F = H 7 u(E D OA }; 8 G  $6 9 : gn+4xz{~%f5m**(_2 , 1 d|> w\@ vt. ^I sJ'eV0 C 3 tgi/tgi_getset.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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` i0 5k @ _ + _Q _ _.#( +(<< +` + S +SN No +o" "| |y y P +P +L +N"|ye[?=@P;mSo9(..< y / - ? hC0[ 3"B )(&;F = 4H 7 u)(1'E D OA }; 98 4G :$.6 !9 :  gn+84xz{~%f5m***(_2 , 1 d>|> ,22<w\@ vt. /^I sJ'eV0 =+C 3 tgi/tgi_gettextheight.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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/pzp/8bitworkshop-compilers/cc65/asminc/tgi-vectorfont.incTGI_VF_VERSIONTGI_VF_FIRSTCHARTGI_VF_LASTCHAR TGI_VF_CCOUNT +TGI_VF_HDRMAGICSIZETGI_VECTORFONTTOPBOTTOMHEIGHTWIDTHSCHARSOPS_tgi_vectorchar9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace@L2@L1CODERODATABSSDATAZEROPAGENULLUzna` iU  OP@ _ _Q _ _WJ" + +"   + +# #L +R R T + T| > + >91 + 1iUU wi(( S 2 2 ll Z +Z: :e = =  Q Q   + +L +` }Z}5Cb#eh><;T>19"W< y / - ? U PhCM[HG ?3")B )(>;F = 49CH 7 u)L(1O6'E D OA }; 98 T1A4;G :J6 9 :  gn+Id84xz=5 +{~f75m_[*N**(_2 , a1 d>|> 22<w\@ vRKt. :^I #sJ'eBSV0 Z=Q<YC 3 tgi/tgi_gettextwidth.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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/pzp/8bitworkshop-compilers/cc65/asminc/tgi-vectorfont.incTGI_VF_VERSIONTGI_VF_FIRSTCHARTGI_VF_LASTCHAR TGI_VF_CCOUNT +TGI_VF_HDRMAGICSIZETGI_VECTORFONTTOPBOTTOMHEIGHTWIDTHSCHARSOPS_tgi_vectorchar9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace_strlen_toascii umul8x16r16WidthWTabText@L1@L9@L2@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` ixb hYF G @ _ _Q&8 +8Q +Q`$@b8QV< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz  +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_getxres.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 hYF G @ _ _Q&8 +8Q +Q`$A 8QV< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz  +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_getyres.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 # " @ _ _QJ & +&v +v E +E+ ++# +#`ZE7w&v6z+#=< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_gotoxy.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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\xC'jk@ _  _%    +  +ɀ! 0 +i i `  +  + `    +  "-0?"& 98314;  = 57*,2/:<+tgi/tgi_imulround.sca65 V2.18 - Git e091fc00_tgi_imulround tgi_imulroundpopax imul16x16r329/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L1CODERODATABSSDATAZEROPAGENULLUzna` i D @ _ _Q _cX= & +& < +< K + K| +|G +  +  +Y +Y + S +S t +t! +! +  +  U + U  + E EI I p + +p 3 + 3  J +J} H +H  + ) +)L +`OEIt)HQJ.Sq&ZdX6pVUUnRK3PZ<CN!BY5/4|2bX,< y/ - ?  -h[H?"B )(&F = CH 7 +u)&(6'E -D OA }; 38 /A4;G  J$.6 .!9 : gn+4xz5{~%f5m@**_2 , 1 d,|> ,22w\@ vt. :^I s0J'eBDV0 +C 3 tgi/tgi_init.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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/pzp/8bitworkshop-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 m^V W @ _ _Q& + +`.;W*< y/ - ? h[B )F = H 7 u(E D OA }; 8 G 6 9 : gn+4xz{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_install_vectorfont.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 |   @ _ _Q5 +   / +/L9 +9&T/S9 ++< y/ - ? h[B )F = H 7 u(E D OA }; 8 G 6 9 : gn+4xz {~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_ioctl.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 @ _ _Qc ( +( x +xF +F- +- % +% + + L1 +1[x%h(b1KF-J >< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_line.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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` ix3$W be d @ _ _QV +V( +(w +wE +E % +% + 0 +0: +:e +e`%MiV(L8 07xwE6|:eh < y/ - ?  h[B ) F = H 7 u(E D OA }; 8 G 6 9 : gn+4xz {~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_linepop.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 ), + @ _ _QNHxF- +-& +&!!h1 ; +;Lf +fh;bfJ&6|-W< y/ - ?  h[B )F = H 7 u(E D OA }; 8 G 6 9 : gn+4xz {~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_lineto.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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' Y  +@ _ _Q _ _ _XC + + + +ee +, B +B : +:1  +] +] +0\\ H I   +Hv +A +A  +h.. + ` + +T +T  +H + H + +c + +c # +#LC +C + +  r   6Jl?:B#8anC4H3cX(< hym\/ - ? U-PhK0[HGoB )(&F = W 92H 7 +<8uJ)&(O6p'gE -D GOA }b; 8 /A;G n.6 . 9 : gn+I4x0z F{~f75m[@*N*1_2 , a1 rd,V|> ,I2w\@ vct. /H/:u^I4s0Je3VB0 < F+C 3 tgi/tgi_load.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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/pzp/8bitworkshop-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_COUNT8/home/pzp/8bitworkshop-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_MEM6/home/pzp/8bitworkshop-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` kzq/ <?( # >$ @ _ _5  +  ^ + +^ ! + !  +Zt + t&  + " +"~  +  +[Lb +1b N +N  I +I R + Ro; u + u6//L/ +1/SSLS +1S k +k $ + $ H{ I{ P + P0  +=qqLq +1qL +1 d X +X  +8  +}: : + LM +1M   +-  +  + z + z  ]]x E E f +f U +UL+ +1+>  + _ +_ Fq HY#<qc ch(D  +j j_'I  + b7  + H H  + CC +ne He  whr rL L  + y y % +%e5 5H*e 2h1Qi i  @q L +| + |K W +WLm +Dm  +J0  + g +g4AL. +.;6 TCHes)Gv789:/`.,`*`#` Xf %W!`Ik``"`N``!`^`R$P,t|3uz?_ga9Ul H y5prLipcjhm\j|U -P0M]lHG?")o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!i5qId1x= 5 +F%7_[@N*(ar3V,2 4wcRKvz/:u~ #'`BSDZ{Q<YX.+;$../libwrk/none/tgi_load_vectorfont.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac_malloc_free_memcmp_open_close_read_tgi_load_vectorfont +_tgi_errorpushaxdecsp8push0decsp3pushwysppusha0staxyspL0019leaa0spL000BldaxyspL002F.sizeL005BL0035L0058L005AincaxyL0059ldaxiL0009L0051addyspL001AL0023L002BL0034L003CCODERODATABSSDATAZEROPAGENULLUzna` i5I~+HI@ _ _Q _NA7 I +I0nnt +t1 +1, +,pIJii$${ {7 +70oo +` +`N +NpI30 `* *` `T W ; / 9{*A1,@}`NiAML/K;ItJW7< y\/ - ? -h0M][H?B )>F = W9H 7 8uL(E E D OA }b; 8 4;G J6 ^9 : gn+I4xz=5F{~f75m@*_2  , 1 dV|> w\@ vRKt. /:^IsJ e`V0 Q<XC 3 tgi/tgi_outcode.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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_unload9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespaceL2L1L4L3L7L5L6CODERODATABSSDATAZEROPAGENULLUzna` igo}{ @ _ _Q _ _+z + |,|s s+ +HnH  +  + hh  + + ^^  +By +1 +1&y +c +c`" +  j + j H= =H H H r r  + Xi h + hi99M MY! !% m +mH, I +Ih  4 4 + + + +  + F +F  SSh h ha ah) `im:R%s+%4Ie{c` <;jh:961c< ym\ / |- ? U-hC[lHG ?3"oB )(>;yF f= 4WH 7 8u)}(1p'gE D OA }bk; 398 1AG :e Jn$6 ^!9 :  gnq+Id84xxz= {~%f75m_[@***(_2 , a1 d>V|> ,22<ww\@ vcKtvz. u^I#sJ'eBV0 Z={<YX+C 3 tgi/tgi_outtext.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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/pzp/8bitworkshop-compilers/cc65/asminc/tgi-vectorfont.incTGI_VF_VERSIONTGI_VF_FIRSTCHARTGI_VF_LASTCHAR TGI_VF_CCOUNT +TGI_VF_HDRMAGICSIZETGI_VECTORFONTTOPBOTTOMHEIGHTWIDTHSCHARSOPS_tgi_vectorchar9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace_toasciipopaxnegaxtextfontwidths +VectorFont +MoveCursor@L1Done EndOfTextCODERODATABSSDATAZEROPAGENULLUzna` ixQ+| C= > @ _ _Q!H)$ $3 +3=k k +  +N N +h  +L +$kN_X7}36!Z< y/ - ?  h["B )F = H 7 u(E D OA }; 8 G $6 9 : gn+4xz  +{~%f5m*_2 , 1 d|> w\@ vt. ^I sJeV0 C 3 tgi/tgi_outtextxy.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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` kzv 4t@ _ _g u  + H B +B (  +  D% % 0 +0 E E 7 +7   6 +6 P : +:  +  & @ +@   +;  + !- -  + 1  +  + A + +A " +" M +M+  +  4 4  +  G  + J + J  + + / +/  + +  +   * +* $ ? +?  + 5   + L > +> I +I  + +  + 9 +9 O +O NK K 3 +3   + ' + ' 2 + +2 F +F 8 + 8 +L= +=!"#$%=/F" 3:>07 B 6@*?OM9IJ')A2, +8.%E-4KC<Q\U -P0M]HG?")>&fW9C8LO6Eb3T1A4;eJ$.^!I= 5 +F%7_[@N*(aV,2cRK/: #'`BSDZQ<YX+&../libwrk/none/tgi_pieslice.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac _tgi_line_tgi_arc _tgi_pieslice_tgi_imulround__sin__cospushaxpushwysppushaldaxysppusha0tosaddaxtossubaxaddysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixg rog h @ _ _Q+s sA AL* +*sAW*jR< y/ - ?  h[B )F = H 7 u(E D OA }; 8 G 6 9 : gn+4xz  +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_popxy.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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_unloadpopptr1ptr2CODERODATABSSDATAZEROPAGENULLUzna` ix !$ # @ _ _QJ  ' 'w w E +E, ,$ $`Z'wZ,$Ek =< y/ - ? h[B ) F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_popxy2.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 m_S T @ _ _Q&& +&r +r`BH&r:< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_setaspectratio.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 (+| * @ _ _QMU +U((u +uLD +D% +%L + f4 WDDaU%8Qu< y/ - ?  h[B )F = H 7 u(E D OA }; 8 G 6 9 : gn+4xz {~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_setcolor.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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@L0CODERODATABSSDATAZEROPAGENULLUzna` ixk ryn o @ _ _Q/ : +:RRL% +%Ls +sf2sV%E: W< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz  +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_setdrawpage.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 rod e @ _ _Q+D D+ +L# +#<D+X)#&< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_setpalette.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 rm_ ` @ _ _Q*  : +:RRL% +%`sd:[% W< y/ - ? h[B )F = H 7 u(E D OA }; 8 G  6 9 : gn+4xz  +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_setpixel.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 hH8 9 @ _ _Q* +*`#:Q*q< y/ - ? h[B )F = H 7 u(E D OA }; 8 G 6 9 : gn+4xz{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_settextdir.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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 rxm n @ _ _Q/ S +S''Ls +sLB +Bf3BUVsES < y/ - ?  h[B )F = H 7 u(E D OA }; 8 G 6 9 : gn+4xz {~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 tgi/tgi_setviewpage.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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` iL#o {~& m}n@ _ _Q _ _ + S +S55 +H#: +:HF  +hhLY +YP +P`Yx4P3S:f< y/ - ? hK["B )(F = 2H 7 +<uJ)&('E -D GOA }; 8 /G 6 .!9 : gn+4x0z {~f5m**1_2 , 1 d,|> I2w\@ vt. H/^I4 s0Je3VB0 FC 3 tgi/tgi_unload.sca65 V2.18 - Git e091fc00;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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/pzp/8bitworkshop-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_COUNT8/home/pzp/8bitworkshop-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'W < +@ _/ _Q _ _ _ 1 1  +"fs sɀnjuS` +W +W P P  +Lr +r y$ + $Hy + hf`I8y + H9Iy + hO` + H H6 HJG +Gti" 0 +0i[ [ q q} }  + +  +^ +^  +&@ +@7 +7  +  +2 + +L* +*v  +2 + +  + + +2+_ +_X +X$  + + ) +) + + +kk$; ;Phj jhA hE `     +aw,Pirf)NAeW@?G0>^:$B< y\ / |- ? PhC0][G 3)B )(;ysF = 4CH 7 u)}L(16'EE D OA }b; 398 T14G :e6 ^9 :  gn+84xxz5 +{~f5m_***(_2 , a1 d>|> 22<ww\@ vcKtvz. :u~^I#sJ'e`DV0 Z={<+C 3 tgi/tgi_vectorchar.sca65 V2.18 - Git e091fc00 imul16x16r32 umul16x16r32negaxnegeax;/home/pzp/8bitworkshop-compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +COLORCOUNT PAGECOUNT FONTWIDTH +FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR +SETPALETTE +GETPALETTE GETDEFPALETTESETPIXELGETPIXELLINEBAR TEXTSTYLEOUTTEXTTGI_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/pzp/8bitworkshop-compilers/cc65/asminc/tgi-vectorfont.incTGI_VF_VERSIONTGI_VF_FIRSTCHARTGI_VF_LASTCHAR TGI_VF_CCOUNT +TGI_VF_HDRMAGICSIZETGI_VECTORFONTTOPBOTTOMHEIGHTWIDTHSCHARSOPS_tgi_vectorchar9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.macOpsFlagX1Y1X2Y2GetOpGetProcessedYCoordGetProcessedCoord AddBaseCoord SubBaseCoordLoop @Vertical @DrawMove@MoveCODERODATABSSDATAZEROPAGENULLUzna` ix7L X[<o +Z@ _ + _b"C?HH  +6 H6/ I/  +# # H9 I9  +   h7 7h+ +  +* *==3  .  &( ( 4 4  8 8 `: `%# +$ <%&' '# ' '8'7 +*(4 C?/-0H?")B)>& 9C8(6DA381A4!9:+I5 +7**(,12@K./: 'BD0Q+C( common/time.sca65 V2.18 - Git e091fc00_timedecsp1ldeaxiptr1sregtmp1tmp25/home/pzp/8bitworkshop-compilers/cc65/asminc/time.inctmtm_sec.sizetm_mintm_hourtm_mdaytm_montm_yeartm_wdaytm_ydaytm_isdsttimespectv_sectv_nsec _clock_getres_clock_gettime_clock_settime +_localtime_mktimetimeAssertion failed@L1@L2CODERODATABSSDATAZEROPAGENULL5Uzna` kz| 8>9:@ _ _E UTCUTC     +../libwrk/none/timezone.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac__tz.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqH _=>@ _`  +  + common/toascii.sca65 V2.18 - Git e091fc00_toascii.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix 2@ _ _O   +)   i `` + common/tolower.sca65 V2.18 - Git e091fc00_tolower6/home/pzp/8bitworkshop-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_PUNCTctypemaskdirect.size@L2@L1CODERODATABSSDATAZEROPAGENULLUzna` ix 2@ _ _O   +)   i`` + common/toupper.sca65 V2.18 - Git e091fc00_toupper6/home/pzp/8bitworkshop-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_PUNCTctypemaskdirect.size@L2@L1CODERODATABSSDATAZEROPAGENULLUzna` iqe,/fg@ _ OJ     + + +  ++ +& &`,   -- &" "*2&# #) )  $$  !  *11 ` & * ((   0 0`' ) +&" #0  +,%3P0MHG)>& 8LO6E14;J$.= 5 +F%7*,2RK/:#'SDQ<+runtime/udiv.sca65 V2.18 - Git e091fc00 tosudiva0 tosudivaxudiv16popptr1sregptr1ptr4.size +udiv16by8aL0L1@L0@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` ix`&@ _ _)1/ $ $!   &% %&  & *&" " # # & &         ` $ +  %  "#&'-")& 86314 .! 5%7(,2/ #'+runtime/udiv32by16r16.sca65 V2.18 - Git e091fc00 udiv32by16r16udiv32by16r16m9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeL0L1CODERODATABSSDATAZEROPAGENULLUzna` iq] .  3?~ @ _& +  +L + +     +    runtime/uge.sca65 V2.18 - Git e091fc00tosuge00tosugea0tosugeaxtosicmpbooluge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  3?~ @ _& +  +L + +     +    runtime/ugt.sca65 V2.18 - Git e091fc00tosugt00tosugta0tosugtaxtosicmpboolugt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  3?~ @ _& +  + L + +     +    + runtime/ule.sca65 V2.18 - Git e091fc00tosule00tosulea0tosuleaxtosicmpboolule.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqW'.3@ _ +  +L +      runtime/ult.sca65 V2.18 - Git e091fc00tosult00tosulta0tosultaxtosicmpboolultreturn0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq9<G;@ _Y +     +  +   `         +    runtime/umod.sca65 V2.18 - Git e091fc00 tosumoda0 tosumodaxpopptr1udiv16sregptr4.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixG94@ _  _,* $ $" F# #f  &e  e    f  jf f   + +! ! % %` $ # %    !'-0?") 86314; $.! =5%7(,/:#'<+ runtime/umul16x16r32.sca65 V2.18 - Git e091fc00 umul16x16r32 umul16x16r32m umul16x16r16 umul16x16r16m9/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iq):WZ`=Y>@ _ +  F e  jf +  +   `       + "! #runtime/umul8x8r16.sca65 V2.18 - Git e091fc00 +umul8x8r16 umul8x8r16mptr1ptr3.size@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iqQ )t{|@ _  +L +  +    + common/uname.sca65 V2.18 - Git e091fc00_uname +__sysuname __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzY fi=  +h +@ _ _) j +j  +J  +ztqH HHuEqV V!hv ` +`  + _ + _  d +d  F Fp )<e99L9 + 9 @ R +R0 0W W+' ') qAALA + A  O +O  ]> >y y ( } +}2 2T T L L C +Cm - + - ^ ^//L/ + /  + l { + {;  +  c + +c & +&  + ~ \ +\  +  + G +G Y +Yx a + a 6 k +k M +M B +B%3 3  +I  +7 7 D D  +1S1 K +Kb # +#5 r +rn ni iN" " o +o:  +, , s +s 8 +8   4 4  +Q Q  +  | +| + X +Xw wU U:   +[[ L +$*$fL +*+,-.(?%?K$?o#?#s|"?B!?Y ???\??c?{a?-?_?`? dRO} kr8X??jChGMP&   F0W'>2T7Dni"4wU ^SyL,SHV3Z.hm\j|U -P0M]lHG?")o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 +F%7_[@N*(arV,2 wcRKvz/:u~ #'`BSDZ{Q<YX+/../libwrk/none/uncompress.sca65 V2.18 - Git e091fc00cc65 v 2.18 - Git e091fc00spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4;/home/pzp/8bitworkshop-compilers/cc65/asminc/longbranch.mac _inflatemem _uncompress_adler32pushaxdecsp2ldaxyspdecax4decsp4L0022 tosumoda0pushwyspincax2staxysp staxspidxpushl0push0pusheaxsteax0sppusha0tosicmp0ldeax0spL0001.sizeaddyspCODERODATABSSDATAZEROPAGENULLUzna` i A@ _ + _ _ /.(5 5   +  114( ()  ''  00)   ! % %`<&&  +6`8012345(%". @  0G")C61A; . 5 +F7@*(/# 'BD +<"5common/ungetc.sca65 V2.18 - Git e091fc00_ungetcpopaxptr1tmp16/home/pzp/8bitworkshop-compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags +f_pushback_FCLOSED_FOPEN_FEOF_FERROR +_FPUSHBACK __filetab6/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXerrorCODERODATABSSDATAZEROPAGENULLUzna` iq= _23@ _  +  common/unlink.sca65 V2.18 - Git e091fc00_unlink_removeCODERODATABSSDATAZEROPAGENULLUzna` ixI%@ _  _<- +++& + +`!  +H'  +h*` +  + +`$HH + % H%" I"  +  +h (hL + + +     + +$#,j0HGo>y  }6p1; Jni +qIx= + *r2wcKv/:~<+conio/vcscanf.sca65 V2.18 - Git e091fc00_vcscanf_cgetc_cputcpopaxpushaxswapstkconio/../common/_scanf.inc SCANFDATAGET.sizeUNGETDATA__scanfpushedbackgetL1ungetdCODERODATABSSZEROPAGENULLUzna` ix2.@ _  _aI%  + ( +(  +. +. +  8 +8$ $ 2 2  +   7 7, m, +,3 +3m ++ ++L +H/ +/- +-5  +0 H0 6 6 + + + I h 4 +4' +' +` ! +) 1  +$27 6&4&8(8#:|U MHGo> W9C8}L6ptT;I=5 +7VRv:u~BS{Q<common/vfprintf.sca65 V2.18 - Git e091fc00 _vfprintfpush1pushwyspincsp6_fwrite__printfspptr18/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.macoutdesc.sizeccountoutptr@Ok@DoneCODERODATABSSDATAZEROPAGENULLUzna` iqDc or~{kql@ _ $H  +      +   + hL + +      $ +"& 31$ +%/ #'+common/vprintf.sca65 V2.18 - Git e091fc00_vprintf _vfprintf_stdoutdecsp2sp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixKj vy#x$@ _  _$H  +      +  + +  +hL +   +  -0"&  61 $.! 5 +%7(,/#'common/vscanf.sca65 V2.18 - Git e091fc00_vscanf_vfscanf_stdindecsp29/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` i K(  @ _(  _ ( _;H`Hw +7 +7#y y9 9M HM Y8 80a$ $) I)R R> >q q%%[' +' + 6  +e +e! +!,X +X0  +AN;ANh/phF ; +; +00$0 + +?? +((D +Dc +cm. +.z zsml +lJ Jt 2 +2 +L +P,WhhT5  +L +j +j8 +u uZ +Z044= +=O O  3 3h h+ ++bm" +"do o< +<m{ +{kE E m +mHg1m: +:V +V*m +B +Bh G G,, KK] ] L +<=#> +|n?@ C  +9$>qzJuO3hG]  +y8RoE +Q; Qm@LLm\j|U P0M]l)o>&s W9CLOpEtbkT1A;eJn.^ +qdx=5 +F"[@N (rVwcKvz/ :u'B{Acommon/vsnprintf.sca65 V2.18 - Git e091fc00 +_vsnprintf vsnprintfldaxysppopaxincsp2incsp6_memcpy__printfspptr16/home/pzp/8bitworkshop-compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX8/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.macoutdesc.sizeccountfuncoutbufptrbufsizeL9L1L5L0L4L2L3@L9@L0@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` iq| GV|@ _E HH  +    + L +  +    +  +  $%common/vsprintf.sca65 V2.18 - Git e091fc00 _vsprintfpushw0spstaxysp vsnprintf.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixj2&)(@ _!  _m[R R@ @&A A$ $*4 47 +q7 7 O2 2   K`5.F +i9 9 iNE E?`Q" " 0 08<#<' !H HGD DLM +MH-3 3 +J HJ% %B; ;> +>1 I1 : += +=hILC +C + +4 +) + ,$ ,"0HDR@A4729E,3%;CMK" S PMl?)>s WC8}LO6pEtk314 Jiq=5F7NrV,2wRKvuDZ{Q<X+common/vsscanf.sca65 V2.18 - Git e091fc00_vsscanfpopax__scanfspptr1ptr28/home/pzp/8bitworkshop-compilers/cc65/asminc/generic.mac +SSCANFDATASTR.sizeINDEXgetL1ungetsddCODERODATABSSDATAZEROPAGENULLUzna` iqm y@ _ #" H   I   I +    H   `     +& $%#'+common/zerobss.sca65 V2.18 - Git e091fc00zerobss __BSS_RUN__ __BSS_SIZE__ptr1.sizeL1L3L2L4CODERODATABSSDATAZEROPAGENULLUzna` ixm`@ _ _6                  +   +      runtime/zeropage.sca65 V2.18 - Git e091fc009/home/pzp/8bitworkshop-compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULL +_afailed.oxa  _cursor.o _nb0_cwd.oxa"_directerrno.oxa +_environ.o _c_fdesc.oxa _file.oxa_fopen.o _[e@_heap.o _m +_heapadd.o _\q_heapblocksize.oxa_heapmaxavail.o _ud_heapmemavail.o _zzF _hextab.o __idiv32by16r16.o _A_imul16x16r32.o _9p _imul8x8r16.o _ _longminstr.o _8*_mappederrno.oxa +_oserror.o _b: _poserror.oxa _printf.oxa]$&_scanf.oxa#KI _seterrno.o __swap.o __sys.o _ws_udiv32by16r16.o __umul16x16r32.o _p_umul16x8r32.o _j} _umul8x8r16.o _abort.o _vadd.oxa addeqsp.o _addysp.o _ adler32.oxa #along.o _˦and.oxa. asctime.o _y!aslax1.o _aslax2.o _,aslax3.o _دaslax4.o _ asleax1.o _~ asleax2.o _H + asleax3.o _RJ asleax4.o _asmtab.o _asr.o _UQasrax1.o _asrax2.o _,asrax3.o _asrax4.o _ asreax1.o _ asreax2.o _o asreax3.o _i asreax4.o _atexit.oxa¡ratoi.o _axlong.o _{bneg.o _1 +bpushbsp.o _ bsearch.o _^call.o _ callirq.o _ +callmain.o _*calloc.o _U +callptr4.o _}chdir.o _}compl.o _ucondes.oxaة +copydata.o _s) cprintf.o _ cputhex.o _Ccputs.o _crc32.oxarcreat.o _crt0.o _Gcscanf.o __ctime.o _0 sctype.o _ Y ctypemask.o _cursor.o _dbg.o _ dbgdasm.o _f dbgdump.o _ +dbgisram.o _ dbgsupp.o _^ decax1.o _2decax2.o _decax3.o _decax4.o _`decax5.o _decax6.o _decax7.o _decax8.o _Hdecaxy.o _decsp1.o _decsp2.o _xdecsp3.o _) decsp4.o _ +decsp5.o _ decsp6.o _<decsp7.o _decsp8.o _div.o _O0divt.o _ doesclrscr.o _E em-kernel.oxaHP em_commit.oxa em_copyfrom.oxa> em_copyto.oxa em_load.oxa em_map.oxa/em_pagecount.oxa em_unload.oxa{`em_use.oxaenter.o _eq.o _uerrno.o _7 +errormsg.o _ fclose.o _)fdopen.o _j.@fgetc.o _2j fgetpos.o _9fgets.o _<fmisc.o _Dfopen.o _J fprintf.o _>Nfputc.o _SQfputs.o _VDfread.o _cZ +free.o _Vef freopen.o _y<fscanf.o _}fseek.o _ +V fsetpos.o _`ftell.o _?ufwrite.o _2ge.o _ getchar.o _>getcpu.o _ٚgetcwd.oxa~Rgetenv.o _Lgetopt.o _0gets.o _gmtime.o _gt.o _icmp.o _idiv32by16r16.o _limul16x16r32.o _ imul8x8r16.o _[incax1.oxagincax2.o _incax3.o _^incax5.o _^incax6.o _r^incax7.o _^incax8.o _.^incaxy.o _incsp1.o _incsp2.oxa7incsp3.o _ ^incsp4.o _i^incsp5.o _^incsp6.o _%^incsp7.o _^incsp8.o _^ inflatemem.o _? interrupt.o _  isalnum.o _y isalpha.o _Cy isascii.o _ isblank.o _Ay iscntrl.o _y isdigit.o _3y isgraph.o _ islower.o _F ~ isprint.o _" ispunct.o _H% isspace.o _'y isupper.o _[*y +isxdigit.o _,{itoa.o _O/hjmpvec.o _54 joy-kernel.oxa joy_count.oxa +joy_load.oxa +joy_read.oxa  joy_unload.oxalabs.o _6ladd.oxa bladdeq.oxa +laddeqsp.o _8land.oxablasr.o _);Llbneg.o _u=lcmp.o _H?>lcompl.o _Bldai.o _nD ldau0sp.oxaldaui.o _F ldauisp.o _Gldaxi.o _Ildaxsp.o _XKldeaxi.o _L) +ldeaxysp.o _#O +ldec.o _-Qldiv.o _"S{le.o _U leaaxsp.o _WWleave.oxaO]leq.o _Yjlge.o _Zjlgt.o _[jlinc.o _\]lle.o _;_jllt.o _`elmod.oxa"]lmul.oxa 'lne.o _ +bjlneg.o _tclocale.o _e localtime.o _k& longjmp.o _9olor.oxa-_lpop.oxa)2lpush.oxa5Tlrsub.oxa!:olsave.o _qflshelp.o _atlshl.o _axElshr.o _z+lsub.oxa>llsubeq.oxaB +lsubeqsp.o _|lt.o _ltest.o _;ltoa.oxaG/ludiv.oxaOluge.o _mlugt.o _mlule.o _mlult.o _`hlumod.oxaWlxor.oxa[blz4.o _Ȉ +makebool.o _qsmalloc.o _ memchr.o _'memcmp.oxa,`Nmemcpy.o _ memmove.o _Dmemset.o _IJmkdir.o _xmktime.o _5+mod.o _ modfree.o _5 modload.o _mouse-kernel.o _nmouse_buttons.o _}mouse_getbox.o _mouse_geterrormsg.o _" mouse_hide.o _w+ mouse_info.o _g2 mouse_ioctl.o _O9 mouse_load.o _W@ mouse_move.o _#L mouse_pos.o _Smouse_setbox.o _Y mouse_show.o _`mouse_unload.o _gmul.o _=pmul20.o _$t=mul40.o _avWmul8.o _x mulax10.o _w|1mulax3.o _~mulax5.o _ mulax6.o _mulax7.o _4mulax9.o _݆)ne.o _negabs.o _or.oxazcperror.o _ pmemalign.oxag2popa.oxaN|P popptr1.o _B popsreg.oxaprintf.o _Mpush1.o _Q\push2.o _\push3.o _ \push4.o _e\push5.o _\push6.o _\push7.o _y\pusha.oxa! pushaff.o _՟`pushax.o _5:pushb.oxa pushbsp.o _opushc0.o _]pushc1.o _c]pushc2.o _] +pushlysp.o _pushw.o _8 pushwsp.o _4 putchar.o _ǯputenv.o _pputs.o _ qsort.o _7~raise.o _erand.o_ realloc.o _ regswap.o _ +regswap1.o _ +regswap2.o _lremove.o _rename.o _ return0.o _S return1.o _Trewind.o _+rmdir.o _xrsub.oxascanf.o _qL scrsize.oxa] searchenv.o _M ser-kernel.oxa ser_close.oxa ser_get.oxaO ser_ioctl.oxaUp +ser_load.oxaŴ +ser_open.oxayP ser_put.oxa ser_status.oxaR ser_unload.oxa +setjmp.o _ +shelp.o _ishl.oxashr.o _shrax1.o _ +{shrax2.o _ shrax3.o _/ shrax4.o _ shreax1.o _ shreax2.o _Y shreax3.o _K2 shreax4.o _}signal.o _W[ +sigtable.o _Ssincos.o _ sleep.o _% +snprintf.o _F' sprintf.o _e*sscanf.o _- +staspidx.o _0staxsp.o _2 staxspi.oxa steaxsp.o _`4 +steaxspi.o _}6stkchk.oxastrcat.oxastrchr.oxadstrcmp.o _9l strcoll.o _;6strcpy.o _<` strcspn.o _?strdup.oxaF +strerror.o _0B +strftime.o _EC stricmp.o _Sstrlen.oxaE +strlower.o _ strncat.oxa strncmp.o _Ǒa strncpy.oxa}  +strnicmp.oxa5  +stroserr.o _(T strpbrk.o _| strqtok.o _ + strrchr.o _strspn.o _ըstrstr.o _X strtoimax.o _B5strtok.o _wstrtol.o _W strtoul.o _ strtoumax.o _6 +strupper.o _3 strxfrm.o _sub.oxa subeqsp.o _subysp.o _swap.oxasystem.o _ tgi-kernel.oxa3 tgi_arc.o _4 + tgi_bar.o _Tx tgi_circle.o _G tgi_clear.o _ tgi_clippedline.o _#+ tgi_colors.o _I" tgi_curtoxy.o _ V +tgi_done.o _b tgi_ellipse.o _p~ tgi_free_vectorfont.o _}Dtgi_getaspectratio.o _Z~O tgi_getcolor.o _= tgi_getcolorcount.o _B tgi_getdefpalette.o _( tgi_geterror.o _@ tgi_geterrormsg.o _tgi_getmaxcolor.o _T tgi_getmaxx.o _G tgi_getmaxy.o _UG tgi_getpagecount.o _B tgi_getpalette.o _ tgi_getpixel.o _ x tgi_getset.o _k C tgi_gettextheight.o _# tgi_gettextwidth.o _43 Q tgi_getxres.o _D H tgi_getyres.o _P H tgi_gotoxy.o _] tgi_imulround.o _i l +tgi_init.o _m tgi_install_vectorfont.o _.} X tgi_ioctl.o _ +tgi_line.o _ tgi_linepop.o _Т tgi_lineto.o _ +tgi_load.o _s tgi_load_vectorfont.o _ % tgi_outcode.o _3 J tgi_outtext.o _} tgi_outtextxy.o _& ? tgi_pieslice.o _e + tgi_popxy.o _ +i tgi_popxy2.o _x + tgi_setaspectratio.o _ , +U tgi_setcolor.o _u8 + tgi_setdrawpage.o _E +p tgi_setpalette.o _Q +f tgi_setpixel.o _] +a tgi_settextdir.o _Kj +: tgi_settextstyle.oxa 1tgi_setviewpage.o _v +o tgi_unload.o _ +otgi_vectorchar.o _c +time.o _' + +timezone.o _8 +; toascii.o _s +? tolower.o _ +tosint.oxaB toslong.oxaE toupper.o _ +udiv.o _R +hudiv32by16r16.o _ +uge.o _ +ugt.o _w +ule.o _6 +ult.o _ +umod.o _ +umul16x16r32.o _ + umul8x16r24.oxalJ umul8x8r16.o _ +?uname.o _ +} uncompress.o _ + +ungetc.o _x +unlink.o _s +4 utscopy.oxa&PX +vcprintf.oxa~S vcscanf.o _ + +vfprintf.o _V + vfscanf.oxaeYd vprintf.o _> +mvscanf.o _ +% vsnprintf.o _ + +vsprintf.o _ + vsscanf.o _ +xor.oxa^ zerobss.o _m  +zeropage.o _ bcast.oxa4lbcast.oxa \ No newline at end of file diff --git a/src/worker/fs/fs65-none.js b/src/worker/fs/fs65-none.js new file mode 100644 index 00000000..bdb990ef --- /dev/null +++ b/src/worker/fs/fs65-none.js @@ -0,0 +1,219 @@ + + var Module = typeof Module !== 'undefined' ? Module : {}; + + if (!Module.expectedDataFileDownloads) { + Module.expectedDataFileDownloads = 0; + } + Module.expectedDataFileDownloads++; + (function() { + // When running as a pthread, FS operations are proxied to the main thread, so we don't need to + // fetch the .data bundle on the worker + if (Module['ENVIRONMENT_IS_PTHREAD']) return; + 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 process === 'undefined' && typeof location !== 'undefined') { + // web worker + PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/'); + } + var PACKAGE_NAME = '/home/pzp/8bitworkshop-compilers/output/fs/fs65-none.data'; + var REMOTE_PACKAGE_BASE = 'fs65-none.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) { + + if (typeof process === 'object' && typeof process.versions === 'object' && typeof process.versions.node === 'string') { + require('fs').readFile(packageName, function(err, contents) { + if (err) { + errback(err); + } else { + callback(contents.buffer); + } + }); + return; + } + + 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", "geos", true, true); +Module['FS_createPath']("/include", "tgi", true, true); +Module['FS_createPath']("/include", "mouse", true, true); +Module['FS_createPath']("/include", "joystick", true, true); +Module['FS_createPath']("/include", "sys", true, true); +Module['FS_createPath']("/", "asminc", true, true); +Module['FS_createPath']("/", "cfg", true, true); +Module['FS_createPath']("/", "lib", true, true); + + /** @constructor */ + 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'] || 0).open('GET', files[i]['filename']); + } + + + function processPackageData(arrayBuffer) { + assert(arrayBuffer, 'Loading data file failed.'); + assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData'); + var byteArray = new Uint8Array(arrayBuffer); + var curr; + + // Reuse the bytearray from the XHR as the source for file reads. + DataRequest.prototype.byteArray = byteArray; + + var files = metadata['files']; + for (var i = 0; i < files.length; ++i) { + DataRequest.prototype.requests[files[i].filename].onload(); + } + Module['removeRunDependency']('datafile_/home/pzp/8bitworkshop-compilers/output/fs/fs65-none.data'); + + }; + Module['addRunDependency']('datafile_/home/pzp/8bitworkshop-compilers/output/fs/fs65-none.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-none.js.metadata'); + } + + function runMetaWithFS() { + Module['addRunDependency']('fs65-none.js.metadata'); + var REMOTE_METADATA_NAME = Module['locateFile'] ? Module['locateFile']('fs65-none.js.metadata', '') : 'fs65-none.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); + } + + })(); + \ No newline at end of file diff --git a/src/worker/fs/fs65-none.js.metadata b/src/worker/fs/fs65-none.js.metadata new file mode 100644 index 00000000..875119d6 --- /dev/null +++ b/src/worker/fs/fs65-none.js.metadata @@ -0,0 +1 @@ +{"files":[{"filename":"/include/lz4.h","start":0,"end":2641},{"filename":"/include/c64.h","start":2641,"end":9642},{"filename":"/include/_pbi.h","start":9642,"end":12785},{"filename":"/include/apple2_filetype.h","start":12785,"end":29883},{"filename":"/include/nes.h","start":29883,"end":36683},{"filename":"/include/assert.h","start":36683,"end":39683},{"filename":"/include/_6545.h","start":39683,"end":42515},{"filename":"/include/_6522.h","start":42515,"end":46296},{"filename":"/include/modload.h","start":46296,"end":51278},{"filename":"/include/unistd.h","start":51278,"end":55587},{"filename":"/include/c128.h","start":55587,"end":62105},{"filename":"/include/cx16.h","start":62105,"end":76818},{"filename":"/include/_mikey.h","start":76818,"end":82171},{"filename":"/include/c16.h","start":82171,"end":85136},{"filename":"/include/_6525.h","start":85136,"end":88546},{"filename":"/include/stdio.h","start":88546,"end":94466},{"filename":"/include/lynx.h","start":94466,"end":103027},{"filename":"/include/6502.h","start":103027,"end":108497},{"filename":"/include/string.h","start":108497,"end":113601},{"filename":"/include/atari5200.h","start":113601,"end":117655},{"filename":"/include/_vic.h","start":117655,"end":121371},{"filename":"/include/cbm_filetype.h","start":121371,"end":126320},{"filename":"/include/dirent.h","start":126320,"end":131644},{"filename":"/include/vic20.h","start":131644,"end":137148},{"filename":"/include/atari_screen_charmap.h","start":137148,"end":147122},{"filename":"/include/iso646.h","start":147122,"end":149985},{"filename":"/include/locale.h","start":149985,"end":153642},{"filename":"/include/stddef.h","start":153642,"end":156699},{"filename":"/include/em.h","start":156699,"end":162993},{"filename":"/include/cc65.h","start":162993,"end":168134},{"filename":"/include/stdbool.h","start":168134,"end":170640},{"filename":"/include/osic1p.h","start":170640,"end":173439},{"filename":"/include/stdlib.h","start":173439,"end":179438},{"filename":"/include/atari.h","start":179438,"end":201203},{"filename":"/include/_heap.h","start":201203,"end":202321},{"filename":"/include/cbm_petscii_charmap.h","start":202321,"end":212061},{"filename":"/include/conio.h","start":212061,"end":221087},{"filename":"/include/dio.h","start":221087,"end":226557},{"filename":"/include/_vic2.h","start":226557,"end":237392},{"filename":"/include/time.h","start":237392,"end":242529},{"filename":"/include/cbm510.h","start":242529,"end":249125},{"filename":"/include/atari_atascii_charmap.h","start":249125,"end":258961},{"filename":"/include/joystick.h","start":258961,"end":264102},{"filename":"/include/_suzy.h","start":264102,"end":275260},{"filename":"/include/tgi.h","start":275260,"end":286112},{"filename":"/include/serial.h","start":286112,"end":294017},{"filename":"/include/zlib.h","start":294017,"end":301129},{"filename":"/include/_atari5200os.h","start":301129,"end":305689},{"filename":"/include/stdint.h","start":305689,"end":311885},{"filename":"/include/cbm610.h","start":311885,"end":317911},{"filename":"/include/pet.h","start":317911,"end":322558},{"filename":"/include/_tia.h","start":322558,"end":325189},{"filename":"/include/ctype.h","start":325189,"end":329579},{"filename":"/include/_vdc.h","start":329579,"end":332406},{"filename":"/include/_6526.h","start":332406,"end":336368},{"filename":"/include/geos.h","start":336368,"end":339579},{"filename":"/include/atari2600.h","start":339579,"end":340628},{"filename":"/include/device.h","start":340628,"end":343840},{"filename":"/include/pce.h","start":343840,"end":348647},{"filename":"/include/apple2enh.h","start":348647,"end":353379},{"filename":"/include/cbm264.h","start":353379,"end":359658},{"filename":"/include/plus4.h","start":359658,"end":362726},{"filename":"/include/_riot.h","start":362726,"end":363774},{"filename":"/include/inttypes.h","start":363774,"end":371584},{"filename":"/include/peekpoke.h","start":371584,"end":374692},{"filename":"/include/setjmp.h","start":374692,"end":377538},{"filename":"/include/dbg.h","start":377538,"end":383313},{"filename":"/include/_antic.h","start":383313,"end":395141},{"filename":"/include/target.h","start":395141,"end":398133},{"filename":"/include/_gtia.h","start":398133,"end":411972},{"filename":"/include/stdarg.h","start":411972,"end":414885},{"filename":"/include/gamate.h","start":414885,"end":422616},{"filename":"/include/fcntl.h","start":422616,"end":426166},{"filename":"/include/sym1.h","start":426166,"end":432999},{"filename":"/include/creativision.h","start":432999,"end":436611},{"filename":"/include/telestrat.h","start":436611,"end":441466},{"filename":"/include/atmos.h","start":441466,"end":447354},{"filename":"/include/_atarios.h","start":447354,"end":488540},{"filename":"/include/cbm.h","start":488540,"end":500432},{"filename":"/include/signal.h","start":500432,"end":503773},{"filename":"/include/_sid.h","start":503773,"end":507399},{"filename":"/include/pen.h","start":507399,"end":511099},{"filename":"/include/apple2.h","start":511099,"end":519158},{"filename":"/include/accelerator.h","start":519158,"end":530166},{"filename":"/include/errno.h","start":530166,"end":535249},{"filename":"/include/limits.h","start":535249,"end":538829},{"filename":"/include/_pokey.h","start":538829,"end":550216},{"filename":"/include/_pia.h","start":550216,"end":553260},{"filename":"/include/mouse.h","start":553260,"end":562066},{"filename":"/include/ascii_charmap.h","start":562066,"end":571852},{"filename":"/include/supervision.h","start":571852,"end":577021},{"filename":"/include/_ted.h","start":577021,"end":582039},{"filename":"/include/o65.h","start":582039,"end":590039},{"filename":"/include/_6551.h","start":590039,"end":592996},{"filename":"/include/cbm_screen_charmap.h","start":592996,"end":602242},{"filename":"/include/em/em-kernel.h","start":602242,"end":606138},{"filename":"/include/geos/gsym.h","start":606138,"end":618942},{"filename":"/include/geos/gstruct.h","start":618942,"end":624141},{"filename":"/include/geos/gsprite.h","start":624141,"end":626494},{"filename":"/include/geos/gdisk.h","start":626494,"end":628781},{"filename":"/include/geos/gsys.h","start":628781,"end":630081},{"filename":"/include/geos/gmenu.h","start":630081,"end":631302},{"filename":"/include/geos/gconst.h","start":631302,"end":632768},{"filename":"/include/geos/gmemory.h","start":632768,"end":633868},{"filename":"/include/geos/gdlgbox.h","start":633868,"end":637358},{"filename":"/include/geos/gfile.h","start":637358,"end":639476},{"filename":"/include/geos/ggraph.h","start":639476,"end":644939},{"filename":"/include/geos/gprocess.h","start":644939,"end":645496},{"filename":"/include/tgi/tgi-error.h","start":645496,"end":649064},{"filename":"/include/tgi/tgi-kernel.h","start":649064,"end":653351},{"filename":"/include/tgi/tgi-vectorfont.h","start":653351,"end":657770},{"filename":"/include/mouse/mouse-kernel.h","start":657770,"end":661070},{"filename":"/include/joystick/joy-kernel.h","start":661070,"end":665020},{"filename":"/include/sys/types.h","start":665020,"end":668251},{"filename":"/include/sys/utsname.h","start":668251,"end":672322},{"filename":"/include/sys/stat.h","start":672322,"end":675480},{"filename":"/asminc/ser-error.inc","start":675480,"end":678924},{"filename":"/asminc/c128.inc","start":678924,"end":685990},{"filename":"/asminc/atari2600_tia.inc","start":685990,"end":687039},{"filename":"/asminc/_heap.inc","start":687039,"end":687919},{"filename":"/asminc/pet.inc","start":687919,"end":691029},{"filename":"/asminc/opcodes.inc","start":691029,"end":702689},{"filename":"/asminc/stdio.inc","start":702689,"end":706100},{"filename":"/asminc/tgi-vectorfont.inc","start":706100,"end":710023},{"filename":"/asminc/nes.inc","start":710023,"end":712829},{"filename":"/asminc/atari5200.inc","start":712829,"end":717162},{"filename":"/asminc/signal.inc","start":717162,"end":720205},{"filename":"/asminc/accelerator.inc","start":720205,"end":721905},{"filename":"/asminc/ctype.inc","start":721905,"end":722981},{"filename":"/asminc/tgi-kernel.inc","start":722981,"end":733464},{"filename":"/asminc/cx16.inc","start":733464,"end":747804},{"filename":"/asminc/telestrat.inc","start":747804,"end":764769},{"filename":"/asminc/atari_pokey.inc","start":764769,"end":766503},{"filename":"/asminc/module.mac","start":766503,"end":766781},{"filename":"/asminc/mouse-kernel.inc","start":766781,"end":774481},{"filename":"/asminc/atari.inc","start":774481,"end":822166},{"filename":"/asminc/cbm_screen_charmap.inc","start":822166,"end":828436},{"filename":"/asminc/tgi-error.inc","start":828436,"end":831732},{"filename":"/asminc/sym1.inc","start":831732,"end":838642},{"filename":"/asminc/joy-kernel.inc","start":838642,"end":842645},{"filename":"/asminc/atari_atascii_charmap.inc","start":842645,"end":849618},{"filename":"/asminc/cpu.mac","start":849618,"end":850555},{"filename":"/asminc/time.inc","start":850555,"end":854013},{"filename":"/asminc/cbm_kernal.inc","start":854013,"end":859874},{"filename":"/asminc/apple2.mac","start":859874,"end":861162},{"filename":"/asminc/plus4.inc","start":861162,"end":863990},{"filename":"/asminc/atari.mac","start":863990,"end":865765},{"filename":"/asminc/c16.inc","start":865765,"end":865905},{"filename":"/asminc/get_tv.inc","start":865905,"end":866130},{"filename":"/asminc/pce.inc","start":866130,"end":869063},{"filename":"/asminc/cbm_petscii_charmap.inc","start":869063,"end":875866},{"filename":"/asminc/creativision.inc","start":875866,"end":877578},{"filename":"/asminc/ascii_charmap.inc","start":877578,"end":884408},{"filename":"/asminc/cbm610.inc","start":884408,"end":887012},{"filename":"/asminc/apple2.inc","start":887012,"end":890270},{"filename":"/asminc/ctype_common.inc","start":890270,"end":897026},{"filename":"/asminc/cbm_filetype.inc","start":897026,"end":898177},{"filename":"/asminc/lynx.inc","start":898177,"end":903937},{"filename":"/asminc/atari_antic.inc","start":903937,"end":907266},{"filename":"/asminc/gamate.inc","start":907266,"end":908680},{"filename":"/asminc/em-kernel.inc","start":908680,"end":913642},{"filename":"/asminc/em-error.inc","start":913642,"end":916725},{"filename":"/asminc/ser-kernel.inc","start":916725,"end":923505},{"filename":"/asminc/utsname.inc","start":923505,"end":926320},{"filename":"/asminc/c64.inc","start":926320,"end":932903},{"filename":"/asminc/fcntl.inc","start":932903,"end":933251},{"filename":"/asminc/cbm510.inc","start":933251,"end":937645},{"filename":"/asminc/atmos.inc","start":937645,"end":941036},{"filename":"/asminc/atari2600.inc","start":941036,"end":941229},{"filename":"/asminc/errno.inc","start":941229,"end":942637},{"filename":"/asminc/cbm.mac","start":942637,"end":944073},{"filename":"/asminc/zeropage.inc","start":944073,"end":944794},{"filename":"/asminc/atari_gtia.inc","start":944794,"end":949216},{"filename":"/asminc/supervision.inc","start":949216,"end":950688},{"filename":"/asminc/atari_screen_charmap.inc","start":950688,"end":957663},{"filename":"/asminc/joy-error.inc","start":957663,"end":960548},{"filename":"/asminc/_file.inc","start":960548,"end":961016},{"filename":"/asminc/o65.inc","start":961016,"end":968413},{"filename":"/asminc/generic.mac","start":968413,"end":969369},{"filename":"/asminc/modload.inc","start":969369,"end":973389},{"filename":"/asminc/ctypetable.inc","start":973389,"end":974960},{"filename":"/asminc/atari2600_riot.inc","start":974960,"end":975344},{"filename":"/asminc/longbranch.mac","start":975344,"end":977976},{"filename":"/asminc/smc.inc","start":977976,"end":986177},{"filename":"/asminc/vic20.inc","start":986177,"end":991054},{"filename":"/cfg/none.cfg","start":991054,"end":992343},{"filename":"/lib/none.lib","start":992343,"end":1727032}],"remote_package_size":1727032,"package_uuid":"bdcd61b2-7bc6-4b94-9a25-33522acd53eb"} \ No newline at end of file diff --git a/src/worker/fs/fs65-sim6502.js b/src/worker/fs/fs65-sim6502.js deleted file mode 100644 index 2c8234da..00000000 --- a/src/worker/fs/fs65-sim6502.js +++ /dev/null @@ -1,209 +0,0 @@ - -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 deleted file mode 100644 index 8157a4e2..00000000 --- a/src/worker/fs/fs65-sim6502.js.metadata +++ /dev/null @@ -1 +0,0 @@ -{"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/workermain.ts b/src/worker/workermain.ts index e39b00be..ffde5d72 100644 --- a/src/worker/workermain.ts +++ b/src/worker/workermain.ts @@ -151,7 +151,7 @@ var PLATFORM_PARAMS = { arch: '6502', define: ['__VECTOR__'], cfgfile: 'vector-color.cfg', - libargs: ['crt0.o', 'sim6502.lib'], + libargs: ['crt0.o', 'none.lib'], extra_link_files: ['crt0.o', 'vector-color.cfg'], }, 'sound_williams-z80': { @@ -300,7 +300,7 @@ var PLATFORM_PARAMS = { arch: '6502', define: ['__ATARI7800__'], cfgfile: 'atari7800.cfg', - libargs: ['crt0.o', 'sim6502.lib'], + libargs: ['crt0.o', 'none.lib'], extra_link_files: ['crt0.o', 'atari7800.cfg'], }, 'c64': { @@ -341,7 +341,7 @@ var PLATFORM_PARAMS = { 'devel-6502': { arch: '6502', cfgfile: 'devel-6502.cfg', - libargs: ['crt0.o', 'sim6502.lib'], + libargs: ['crt0.o', 'none.lib'], extra_link_files: ['crt0.o', 'devel-6502.cfg'], }, // https://github.com/cpcitor/cpc-dev-tool-chain @@ -790,10 +790,10 @@ export function loadNative(modulename:string) { // mount the filesystem at /share export function setupFS(FS, name:string) { var WORKERFS = FS.filesystems['WORKERFS']; - if (name === '65-vector') name = '65-sim6502'; // TODO - if (name === '65-atari7800') name = '65-sim6502'; // TODO - if (name === '65-devel') name = '65-sim6502'; // TODO - if (name === '65-vcs') name = '65-sim6502'; // TODO + if (name === '65-vector') name = '65-none'; // TODO + if (name === '65-atari7800') name = '65-none'; // TODO + if (name === '65-devel') name = '65-none'; // TODO + if (name === '65-vcs') name = '65-none'; // TODO if (!fsMeta[name]) throw Error("No filesystem for '" + name + "'"); FS.mkdir('/share'); FS.mount(WORKERFS, { @@ -1110,13 +1110,13 @@ var TOOL_PRELOADFS = { 'ca65-nes': '65-nes', 'cc65-atari8': '65-atari8', 'ca65-atari8': '65-atari8', - 'cc65-vector': '65-sim6502', - 'ca65-vector': '65-sim6502', - 'cc65-atari7800': '65-sim6502', - 'ca65-atari7800': '65-sim6502', - 'cc65-devel': '65-sim6502', - 'ca65-devel': '65-sim6502', - 'ca65-vcs': '65-sim6502', + 'cc65-vector': '65-none', + 'ca65-vector': '65-none', + 'cc65-atari7800': '65-none', + 'ca65-atari7800': '65-none', + 'cc65-devel': '65-none', + 'ca65-devel': '65-none', + 'ca65-vcs': '65-none', 'sdasz80': 'sdcc', 'sdcc': 'sdcc', 'sccz80': 'sccz80',