/*****************************************************************************/ /* */ /* 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 #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 /*****************************************************************************/ /* 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__) && !defined(__PET__) void waitvsync (void); /* Wait for the start of the next frame */ #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); 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_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." */ 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 /* Define hardware */ #include <_6551.h> #define ACIA (*(struct __6551*)0xFD00) /* The addresses of the static drivers */ extern void plus4_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ extern void plus4_stdser_ser[]; /* End of plus4.h */ #endif /*****************************************************************************/ /* */ /* serial.h */ /* */ /* Serial communication API */ /* */ /* */ /* */ /* (C) 2003-2012, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _SERIAL_H #define _SERIAL_H /*****************************************************************************/ /* Data */ /*****************************************************************************/ /* Baudrate settings */ #define SER_BAUD_45_5 0x00 #define SER_BAUD_50 0x01 #define SER_BAUD_75 0x02 #define SER_BAUD_110 0x03 #define SER_BAUD_134_5 0x04 #define SER_BAUD_150 0x05 #define SER_BAUD_300 0x06 #define SER_BAUD_600 0x07 #define SER_BAUD_1200 0x08 #define SER_BAUD_1800 0x09 #define SER_BAUD_2400 0x0A #define SER_BAUD_3600 0x0B #define SER_BAUD_4800 0x0C #define SER_BAUD_7200 0x0D #define SER_BAUD_9600 0x0E #define SER_BAUD_19200 0x0F #define SER_BAUD_38400 0x10 #define SER_BAUD_57600 0x11 #define SER_BAUD_115200 0x12 #define SER_BAUD_230400 0x13 #define SER_BAUD_31250 0x14 #define SER_BAUD_62500 0x15 #define SER_BAUD_56_875 0x16 /* Data bit settings */ #define SER_BITS_5 0x00 #define SER_BITS_6 0x01 #define SER_BITS_7 0x02 #define SER_BITS_8 0x03 /* Stop bit settings */ #define SER_STOP_1 0x00 /* One stop bit */ #define SER_STOP_2 0x01 /* Two stop bits */ /* Parity settings */ #define SER_PAR_NONE 0x00 #define SER_PAR_ODD 0x01 #define SER_PAR_EVEN 0x02 #define SER_PAR_MARK 0x03 #define SER_PAR_SPACE 0x04 /* Handshake settings. The latter two may be combined. */ #define SER_HS_NONE 0x00 /* No handshake */ #define SER_HS_HW 0x01 /* Hardware (RTS/CTS) handshake */ #define SER_HS_SW 0x02 /* Software handshake */ /* Bit masks to mask out things from the status returned by ser_status. ** These are 6551 specific and must be mapped by drivers for other chips. */ #define SER_STATUS_PE 0x01 /* Parity error */ #define SER_STATUS_FE 0x02 /* Framing error */ #define SER_STATUS_OE 0x04 /* Overrun error */ #define SER_STATUS_DCD 0x20 /* NOT data carrier detect */ #define SER_STATUS_DSR 0x40 /* NOT data set ready */ /* Error codes returned by all functions */ #define SER_ERR_OK 0x00 /* Not an error - relax */ #define SER_ERR_NO_DRIVER 0x01 /* No driver available */ #define SER_ERR_CANNOT_LOAD 0x02 /* Error loading driver */ #define SER_ERR_INV_DRIVER 0x03 /* Invalid driver */ #define SER_ERR_NO_DEVICE 0x04 /* Device (hardware) not found */ #define SER_ERR_BAUD_UNAVAIL 0x05 /* Baud rate not available */ #define SER_ERR_NO_DATA 0x06 /* Nothing to read */ #define SER_ERR_OVERFLOW 0x07 /* No room in send buffer */ #define SER_ERR_INIT_FAILED 0x08 /* Initialization failed */ #define SER_ERR_INV_IOCTL 0x09 /* IOCTL not supported */ #define SER_ERR_INSTALLED 0x0A /* A driver is already installed */ #define SER_ERR_NOT_OPEN 0x0B /* Driver is not open */ /* Struct containing parameters for the serial port */ struct ser_params { unsigned char baudrate; /* Baudrate */ unsigned char databits; /* Number of data bits */ unsigned char stopbits; /* Number of stop bits */ unsigned char parity; /* Parity setting */ unsigned char handshake; /* Type of handshake to use */ }; /*****************************************************************************/ /* Code */ /*****************************************************************************/ unsigned char __fastcall__ ser_load_driver (const char* driver); /* Load and install a serial driver. Return an error code. */ unsigned char ser_unload (void); /* Uninstall, then unload the currently loaded driver. */ unsigned char __fastcall__ ser_install (void* driver); /* Install an already loaded driver. Return an error code. */ unsigned char ser_uninstall (void); /* Uninstall the currently loaded driver and return an error code. ** Note: This call does not free allocated memory. */ unsigned char __fastcall__ ser_open (const struct ser_params* params); /* "Open" the port by setting the port parameters and enable interrupts. */ unsigned char ser_close (void); /* "Close" the port. Clear buffers and and disable interrupts. */ unsigned char __fastcall__ ser_get (char* b); /* Get a character from the serial port. If no characters are available, the ** function will return SER_ERR_NO_DATA, so this is not a fatal error. */ unsigned char __fastcall__ ser_put (char b); /* Send a character via the serial port. There is a transmit buffer, but ** transmitting is not done via interrupt. The function returns ** SER_ERR_OVERFLOW if there is no space left in the transmit buffer. */ unsigned char __fastcall__ ser_status (unsigned char* status); /* Return the serial port status. */ unsigned char __fastcall__ ser_ioctl (unsigned char code, void* data); /* Driver specific entry. */ /* End of serial.h */ #endif /*****************************************************************************/ /* */ /* _pbi.h */ /* */ /* Internal include file, do not use directly */ /* */ /* */ /* */ /* (C) 2000 Freddy Offenga */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef __PBI_H #define __PBI_H /* parallel bus interface area */ #define PBI ((unsigned char*)0xD100) /* parallel device IRQ status */ #define PDVI ((unsigned char*)0xD1FF) /* parallel device select */ #define PDVS ((unsigned char*)0xD1FF) /* parallel bus interface RAM area */ #define PBIRAM ((unsigned char*)0xD600) /* parallel device ID 1 */ #define PDID1 ((unsigned char*)0xD803) /* parallel device I/O vector */ #define PDIDV ((unsigned char*)0xD805) /* parallel device IRQ vector */ #define PDIRQV ((unsigned char*)0xD808) /* parallel device ID 2 */ #define PDID2 ((unsigned char*)0xD80B) /* parallel device vector table */ #define PDVV ((unsigned char*)0xD80D) /* End of _pbi.h */ #endif /* #ifndef __PBI_H */ /*****************************************************************************/ /* */ /* _6526.h */ /* */ /* Internal include file, do not use directly */ /* */ /* */ /* */ /* (C) 1998-2000 Ullrich von Bassewitz */ /* Wacholderweg 14 */ /* D-70597 Stuttgart */ /* EMail: uz@musoftware.de */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef __6526_H #define __6526_H /* Define a structure with the 6526 register offsets. ** NOTE: The timer registers are not declared as 16 bit registers, because ** the order in which the two 8 bit halves are written is important, and ** the compiler doesn't guarantee any order when writing 16 bit values. */ struct __6526 { unsigned char pra; /* Port register A */ unsigned char prb; /* Port register B */ unsigned char ddra; /* Data direction register A */ unsigned char ddrb; /* Data direction register B */ unsigned char ta_lo; /* Timer A, low byte */ unsigned char ta_hi; /* Timer A, high byte */ unsigned char tb_lo; /* Timer B, low byte */ unsigned char tb_hi; /* Timer B, high byte */ unsigned char tod_10; /* TOD, 1/10 sec. */ unsigned char tod_sec; /* TOD, seconds */ unsigned char tod_min; /* TOD, minutes */ unsigned char tod_hour; /* TOD, hours */ unsigned char sdr; /* Serial data register */ unsigned char icr; /* Interrupt control register */ unsigned char cra; /* Control register A */ unsigned char crb; /* Control register B */ }; /* End of _6526.h */ #endif /*****************************************************************************/ /* */ /* apple2enh.h */ /* */ /* enhanced Apple //e system specific definitions */ /* */ /* */ /* */ /* (C) 2004 Oliver Schmidt, */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _APPLE2ENH_H #define _APPLE2ENH_H /* Check for errors */ #if !defined(__APPLE2ENH__) # error This module may only be used when compiling for the enhanced Apple //e! #endif #include /*****************************************************************************/ /* Data */ /*****************************************************************************/ /* Characters codes */ #define CH_DEL 0x7F #define CH_CURS_UP 0x0B #define CH_CURS_DOWN 0x0A /* These are defined to be OpenApple + NumberKey */ #define CH_F1 0xB1 #define CH_F2 0xB2 #define CH_F3 0xB3 #define CH_F4 0xB4 #define CH_F5 0xB5 #define CH_F6 0xB6 #define CH_F7 0xB7 #define CH_F8 0xB8 #define CH_F9 0xB9 #define CH_F10 0xB0 /* Styles for textframe */ #define TEXTFRAME_WIDE 0x00 #define TEXTFRAME_TALL 0x04 /* Video modes */ #define VIDEOMODE_40x24 0x0011 #define VIDEOMODE_80x24 0x0012 #define VIDEOMODE_40COL VIDEOMODE_40x24 #define VIDEOMODE_80COL VIDEOMODE_80x24 /*****************************************************************************/ /* Variables */ /*****************************************************************************/ /* The addresses of the static drivers */ extern void a2e_auxmem_emd[]; extern void a2e_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ extern void a2e_stdmou_mou[]; /* Referred to by mouse_static_stddrv[] */ extern void a2e_ssc_ser[]; extern void a2e_hi_tgi[]; /* Referred to by tgi_static_stddrv[] */ extern void a2e_lo_tgi[]; /*****************************************************************************/ /* Code */ /*****************************************************************************/ void __fastcall__ textframe (unsigned char width, unsigned char height, unsigned char style); /* Output a frame on the text screen with the given width and height ** starting at the current cursor position and using the given style. */ void __fastcall__ textframexy (unsigned char x, unsigned char y, unsigned char width, unsigned char height, unsigned char style); /* Same as "gotoxy (x, y); textframe (width, height, style);" */ unsigned __fastcall__ videomode (unsigned mode); /* Set the video mode, return the old mode. Call with one of the VIDEOMODE_xx ** constants. */ /* End of apple2enh.h */ #endif /*****************************************************************************/ /* */ /* fcntl.h */ /* */ /* File control operations */ /* */ /* */ /* */ /* (C) 1998-2004 Ullrich von Bassewitz */ /* 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 _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 /*****************************************************************************/ /* */ /* 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 /* ** _heap.h ** ** Ullrich von Bassewitz, 1998-06-03, 2004-12-19 ** */ #ifndef __HEAP_H #define __HEAP_H /* Structure that preceeds a user block in most cases. ** The aligned_malloc function may generate blocks where the start pointer ** and size are splitted to handle a memory hole that is needed for ** alignment. */ struct usedblock { unsigned size; struct usedblock* start; }; /* Space needed for administering used blocks */ #define HEAP_ADMIN_SPACE sizeof (struct usedblock) /* The data type used to implement the free list. ** Beware: Field order is significant! */ struct freeblock { unsigned size; struct freeblock* next; struct freeblock* prev; }; /* Variables that describe the heap */ extern unsigned* _heaporg; /* Bottom of heap */ extern unsigned* _heapptr; /* Current top */ extern unsigned* _heapend; /* Upper limit */ extern struct freeblock* _heapfirst; /* First free block in list */ extern struct freeblock* _heaplast; /* Last free block in list */ /* End of _heap.h */ #endif /*****************************************************************************/ /* */ /* stdio.h */ /* */ /* Input/output */ /* */ /* */ /* */ /* (C) 1998-2011, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _STDIO_H #define _STDIO_H #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 /* 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) #elif defined(__TELESTRAT__) # define FILENAME_MAX (50+1) #else # define FILENAME_MAX (16+1) #endif #define L_tmpnam FILENAME_MAX /*****************************************************************************/ /* Code */ /*****************************************************************************/ /* Functions */ void __fastcall__ clearerr (FILE* f); int __fastcall__ fclose (FILE* f); int __fastcall__ feof (FILE* f); int __fastcall__ ferror (FILE* f); int __fastcall__ fflush (FILE* f); int __fastcall__ fgetc (FILE* f); char* __fastcall__ fgets (char* buf, size_t size, FILE* f); FILE* __fastcall__ fopen (const char* name, const char* mode); int fprintf (FILE* f, const char* format, ...); int __fastcall__ fputc (int c, FILE* f); int __fastcall__ fputs (const char* s, FILE* f); size_t __fastcall__ fread (void* buf, size_t size, size_t count, FILE* f); FILE* __fastcall__ freopen (const char* name, const char* mode, FILE* f); size_t __fastcall__ fwrite (const void* buf, size_t size, size_t count, FILE* f); int __fastcall__ fgetpos (FILE* f, fpos_t *pos); int __fastcall__ fsetpos (FILE* f, const fpos_t* pos); long __fastcall__ ftell (FILE* f); int __fastcall__ fseek (FILE* f, long offset, int whence); void __fastcall__ rewind (FILE *f); int getchar (void); char* __fastcall__ gets (char* s); void __fastcall__ perror (const char* s); int printf (const char* format, ...); int __fastcall__ putchar (int c); int __fastcall__ puts (const char* s); int __fastcall__ remove (const char* name); int __fastcall__ rename (const char* oldname, const char* newname); int snprintf (char* buf, size_t size, const char* format, ...); int sprintf (char* buf, const char* format, ...); int __fastcall__ ungetc (int c, FILE* f); int __fastcall__ vfprintf (FILE* f, const char* format, va_list ap); int __fastcall__ vprintf (const char* format, va_list ap); int __fastcall__ vsnprintf (char* buf, size_t size, const char* format, va_list ap); int __fastcall__ vsprintf (char* buf, const char* format, va_list ap); int scanf (const char* format, ...); int fscanf (FILE* f, const char* format, ...); int sscanf (const char* s, const char* format, ...); int __fastcall__ vscanf (const char* format, va_list ap); int __fastcall__ vsscanf (const char* s, const char* format, va_list ap); int __fastcall__ vfscanf (FILE* f, const char* format, va_list ap); #if __CC65_STD__ == __CC65_STD_CC65__ FILE* __fastcall__ fdopen (int fd, const char* mode); /* Unix */ int __fastcall__ fileno (FILE* f); /* Unix */ #endif void __fastcall__ _poserror (const char* msg); /* cc65 */ /* Masking macros for some functions */ #define getc(f) fgetc (f) /* ANSI */ #define putc(c, f) fputc (c, f) /* ANSI */ /* End of stdio.h */ #endif /*****************************************************************************/ /* */ /* iso646.h */ /* */ /* Alternative spellings */ /* */ /* */ /* */ /* (C) 1998-2000 Ullrich von Bassewitz */ /* Wacholderweg 14 */ /* D-70597 Stuttgart */ /* EMail: uz@musoftware.de */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _ISO646_H #define _ISO646_H /* Operator tokens */ #define and && #define and_eq &= #define bitand & #define bitor | #define compl ~ #define not ! #define not_eq != #define or || #define or_eq |= #define xor ^ #define xor_eq ^= /* End of iso646.h */ #endif /*****************************************************************************/ /* */ /* _6551.h */ /* */ /* Internal include file, do not use directly */ /* */ /* */ /* */ /* (C) 1998-2000 Ullrich von Bassewitz */ /* Wacholderweg 14 */ /* D-70597 Stuttgart */ /* EMail: uz@musoftware.de */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef __6551_H #define __6551_H /* Define a structure with the 6551 register offsets */ struct __6551 { unsigned char data; /* Data register */ unsigned char status; /* Status register */ unsigned char cmd; /* Command register */ unsigned char ctrl; /* Control register */ }; /* End of _6551.h */ #endif /*****************************************************************************/ /* */ /* c128.h */ /* */ /* C128 system specific definitions */ /* */ /* */ /* */ /* (C) 1998-2013, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _C128_H #define _C128_H /* Check for errors */ #if !defined(__C128__) # error This module may only be used when compiling for the C128! #endif /* Additional key defines */ #define CH_F1 133 #define CH_F2 137 #define CH_F3 134 #define CH_F4 138 #define CH_F5 135 #define CH_F6 139 #define CH_F7 136 #define CH_F8 140 /* Color defines */ #define COLOR_BLACK 0x00 #define COLOR_WHITE 0x01 #define COLOR_RED 0x02 #define COLOR_CYAN 0x03 #define COLOR_VIOLET 0x04 #define COLOR_GREEN 0x05 #define COLOR_BLUE 0x06 #define COLOR_YELLOW 0x07 #define COLOR_ORANGE 0x08 #define COLOR_BROWN 0x09 #define COLOR_LIGHTRED 0x0A #define COLOR_GRAY1 0x0B #define COLOR_GRAY2 0x0C #define COLOR_LIGHTGREEN 0x0D #define COLOR_LIGHTBLUE 0x0E #define COLOR_GRAY3 0x0F /* TGI color defines */ #define TGI_COLOR_BLACK COLOR_BLACK #define TGI_COLOR_WHITE COLOR_WHITE #define TGI_COLOR_RED COLOR_RED #define TGI_COLOR_CYAN COLOR_CYAN #define TGI_COLOR_VIOLET COLOR_VIOLET #define TGI_COLOR_GREEN COLOR_GREEN #define TGI_COLOR_BLUE COLOR_BLUE #define TGI_COLOR_YELLOW COLOR_YELLOW #define TGI_COLOR_ORANGE COLOR_ORANGE #define TGI_COLOR_BROWN COLOR_BROWN #define TGI_COLOR_LIGHTRED COLOR_LIGHTRED #define TGI_COLOR_GRAY1 COLOR_GRAY1 #define TGI_COLOR_GRAY2 COLOR_GRAY2 #define TGI_COLOR_LIGHTGREEN COLOR_LIGHTGREEN #define TGI_COLOR_LIGHTBLUE COLOR_LIGHTBLUE #define TGI_COLOR_GRAY3 COLOR_GRAY3 /* 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 #define VIDEOMODE_40COL VIDEOMODE_40x25 #define VIDEOMODE_80COL VIDEOMODE_80x25 /* Define hardware */ #include <_vic2.h> #define VIC (*(struct __vic2*)0xD000) #include <_sid.h> #define SID (*(struct __sid*)0xD400) #include <_vdc.h> #define VDC (*(struct __vdc*)0xD600) #include <_6526.h> #define CIA1 (*(struct __6526*)0xDC00) #define CIA2 (*(struct __6526*)0xDD00) /* Define special memory areas */ #define COLOR_RAM ((unsigned char*)0xD800) /* The addresses of the static drivers */ extern void c128_georam_emd[]; extern void c128_ram_emd[]; extern void c128_ram2_emd[]; extern void c128_ramcart_emd[]; extern void c128_reu_emd[]; extern void c128_vdc_emd[]; extern void c128_ptvjoy_joy[]; extern void c128_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ extern void c128_1351_mou[]; /* Referred to by mouse_static_stddrv[] */ extern void c128_joy_mou[]; extern void c128_inkwell_mou[]; extern void c128_pot_mou[]; extern void c128_swlink_ser[]; extern void c128_vdc_tgi[]; /* Referred to by tgi_static_stddrv[] */ extern void c128_vdc2_tgi[]; unsigned __fastcall__ videomode (unsigned Mode); /* Set the video mode, return the old mode. Call with one of the VIDEOMODE_xx ** constants. */ void toggle_videomode (void); /* Toggle the video mode between 40 and 80 chars (calls SWAPPER). ** THIS FUNCTION IS DEPRECATED, please use videomode instead! */ void c64mode (void); /* Switch the C128 into C64 mode. Note: This function will not return! */ void fast (void); /* Switch the CPU into 2MHz mode. Note: This will disable video when in ** 40 column mode. */ void slow (void); /* Switch the CPU into 1MHz mode. */ unsigned char isfast (void); /* Returns 1 if the CPU is in 2MHz mode. */ /* End of c128.h */ #endif /*****************************************************************************/ /* */ /* conio.h */ /* */ /* Direct console I/O */ /* */ /* */ /* */ /* (C) 1998-2007 Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ /* ** This is the direct console interface for cc65. I do not like the function ** names very much, but the first version started as a rewrite of Borland's ** conio, and, even if the interface has changed, the names did not. ** ** The interface does direct screen I/O, so it is fast enough for most ** programs. I did not implement text windows, since many applications do ** not need them and should not pay for the additional overhead. It should ** be easy to add text windows on a higher level if needed, ** ** Most routines do not check the parameters. This may be unfortunate but is ** also related to speed. The coordinates are always 0/0 based. */ #ifndef _CONIO_H #define _CONIO_H #include #include /*****************************************************************************/ /* Functions */ /*****************************************************************************/ void clrscr (void); /* Clear the whole screen and put the cursor into the top left corner */ unsigned char kbhit (void); /* Return true if there's a key waiting, return false if not */ void __fastcall__ gotox (unsigned char x); /* Set the cursor to the specified X position, leave the Y position untouched */ void __fastcall__ gotoy (unsigned char y); /* Set the cursor to the specified Y position, leave the X position untouched */ void __fastcall__ gotoxy (unsigned char x, unsigned char y); /* Set the cursor to the specified position */ unsigned char wherex (void); /* Return the X position of the cursor */ unsigned char wherey (void); /* Return the Y position of the cursor */ void __fastcall__ cputc (char c); /* Output one character at the current cursor position */ void __fastcall__ cputcxy (unsigned char x, unsigned char y, char c); /* Same as "gotoxy (x, y); cputc (c);" */ void __fastcall__ cputs (const char* s); /* Output a NUL-terminated string at the current cursor position */ void __fastcall__ cputsxy (unsigned char x, unsigned char y, const char* s); /* Same as "gotoxy (x, y); puts (s);" */ int cprintf (const char* format, ...); /* Like printf(), but uses direct screen output */ int __fastcall__ vcprintf (const char* format, va_list ap); /* Like vprintf(), but uses direct screen output */ char cgetc (void); /* Return a character from the keyboard. If there is no character available, ** the function waits until the user does press a key. If cursor is set to ** 1 (see below), a blinking cursor is displayed while waiting. */ int cscanf (const char* format, ...); /* Like scanf(), but uses direct keyboard input */ int __fastcall__ vcscanf (const char* format, va_list ap); /* Like vscanf(), but uses direct keyboard input */ 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... */ /*****************************************************************************/ /* 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(x) _textcolor(x) #endif #ifdef _bgcolor # define bgcolor(x) _bgcolor(x) #endif #ifdef _bordercolor # define bordercolor(x) _bordercolor(x) #endif #ifdef _cpeekcolor # define cpeekcolor(x) _cpeekcolor(x) #endif /* End of conio.h */ #endif /*****************************************************************************/ /* */ /* 6502.h */ /* */ /* 6502 specific declarations */ /* */ /* */ /* */ /* (C) 1998-2012, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _6502_H #define _6502_H /* We need size_t */ #ifndef _HAVE_size_t #define _HAVE_size_t typedef unsigned size_t; #endif /* Possible returns of getcpu() */ #define CPU_6502 0 #define CPU_65C02 1 #define CPU_65816 2 #define CPU_4510 3 #define CPU_65SC02 4 #define CPU_65CE02 5 #define CPU_HUC6280 6 #define CPU_2A0x 7 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 /*****************************************************************************/ /* */ /* apple2_filetype.h */ /* */ /* Apple ][ file type definitions */ /* */ /* */ /* */ /* (C) 2017 Bill Chatfield, */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as 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_FILETYPE_H #define _APPLE2_FILETYPE_H /* Check for errors */ #if !defined(__APPLE2__) # error This module may only be used when compiling for the Apple ][! #endif /*****************************************************************************/ /* Data */ /*****************************************************************************/ /* 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 */ /* 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 */ /* 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 */ /* 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 */ /*****************************************************************************/ /* Variables */ /*****************************************************************************/ /* 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 */ /* End of apple2_filetype.h */ #endif /*****************************************************************************/ /* */ /* mouse.h */ /* */ /* Mouse API */ /* */ /* */ /* */ /* (C) 2003-2013, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _MOUSE_H #define _MOUSE_H /*****************************************************************************/ /* Definitions */ /*****************************************************************************/ /* Error codes */ #define MOUSE_ERR_OK 0 /* No error */ #define MOUSE_ERR_NO_DRIVER 1 /* No driver available */ #define MOUSE_ERR_CANNOT_LOAD 2 /* Error loading driver */ #define MOUSE_ERR_INV_DRIVER 3 /* Invalid driver */ #define MOUSE_ERR_NO_DEVICE 4 /* Mouse hardware not found */ #define MOUSE_ERR_INV_IOCTL 5 /* Invalid ioctl code */ /* Mouse button masks */ #define MOUSE_BTN_LEFT 0x10 #define MOUSE_BTN_RIGHT 0x01 /* Structure containing the mouse coordinates */ struct mouse_pos { int x; int y; }; /* Structure containing information about the mouse */ struct mouse_info { struct mouse_pos pos; /* Mouse position */ unsigned char buttons; /* Mouse button mask */ }; /* Structure used for getbox/setbox */ struct mouse_box { int minx; int miny; int maxx; int maxy; }; /* Structure containing mouse callback functions. These functions are declared ** in C notation here, but they cannot be C functions (at least not easily), ** since they may be called from within an interrupt. */ struct mouse_callbacks { void (*hide) (void); /* Hide the mouse cursor. */ void (*show) (void); /* Show the mouse cursor. */ void (*prep) (void); /* Prepare to move the mouse cursor. This function is called, ** even when the cursor is currently invisible. */ void (*draw) (void); /* Draw the mouse cursor. This function is called, ** even when the cursor is currently invisible. */ void __fastcall__ (*movex) (int x); /* Move the mouse cursor to the new X coordinate. This function is called, ** even when the cursor is currently invisible. */ void __fastcall__ (*movey) (int y); /* Move the mouse cursor to the new Y coordinate. This function is called, ** even when the cursor is currently invisible. */ }; /*****************************************************************************/ /* Declarations */ /*****************************************************************************/ /* The default mouse callbacks */ extern const struct mouse_callbacks mouse_def_callbacks; #if defined(__CBM__) /* The default mouse pointer shape used by the default mouse callbacks */ extern const unsigned char mouse_def_pointershape[63]; /* The default mouse pointer color used by the default mouse callbacks */ extern const unsigned char mouse_def_pointercolor; #endif /* The name of the standard mouse driver for a platform */ extern const char mouse_stddrv[]; /* The address of the static standard mouse driver for a platform */ extern const void mouse_static_stddrv[]; /*****************************************************************************/ /* Functions */ /*****************************************************************************/ unsigned char __fastcall__ mouse_load_driver (const struct mouse_callbacks* c, const char* driver); /* Load and install a mouse driver, return an error code. */ unsigned char mouse_unload (void); /* Uninstall, then unload the currently loaded driver. */ unsigned char __fastcall__ mouse_install (const struct mouse_callbacks* c, void* driver); /* Install an already loaded driver. Return an error code. */ unsigned char mouse_uninstall (void); /* Uninstall the currently loaded driver. Return an error code. */ const char* __fastcall__ mouse_geterrormsg (unsigned char code); /* Get an error message describing the error in code. */ void mouse_hide (void); /* Hide the mouse. The function manages a counter and may be called more than ** once. For each call to mouse_hide there must be a call to mouse_show to make ** the mouse visible again. */ void mouse_show (void); /* Show the mouse. See mouse_hide() for more information. */ void __fastcall__ mouse_setbox (const struct mouse_box* box); /* Set the bounding box for the mouse pointer movement. The mouse X and Y ** coordinates will never go outside the given box. ** NOTE: The function does *not* check if the mouse is currently inside the ** given margins. The proper way to use this function therefore is: ** ** - Hide the mouse ** - Set the bounding box ** - Place the mouse at the desired position ** - Show the mouse again. ** ** NOTE2: When setting the box to something that is larger than the actual ** screen, the positioning of the mouse cursor can fail. If such margins ** are really what you want, you have to use your own cursor routines. */ void __fastcall__ mouse_getbox (struct mouse_box* box); /* Get the current bounding box for the mouse pointer movement. */ void __fastcall__ mouse_move (int x, int y); /* Set the mouse cursor to the given position. If a mouse cursor is defined ** and currently visible, the mouse cursor is also moved. ** NOTE: This function does not check if the given position is valid and ** inside the bounding box. */ unsigned char mouse_buttons (void); /* Return a bit mask encoding the states of the mouse buttons. Use the ** MOUSE_BTN_XXX flags to decode a specific button. */ void __fastcall__ mouse_pos (struct mouse_pos* pos); /* Return the current mouse position. */ void __fastcall__ mouse_info (struct mouse_info* info); /* Return the state of the mouse buttons and the position of the mouse. */ unsigned char __fastcall__ mouse_ioctl (unsigned char code, void* data); /* Call the driver-specific ioctl function. Return an error code. ** NON-PORTABLE! */ /* End of mouse.h */ #endif /*****************************************************************************/ /* */ /* lynx.h */ /* */ /* Lynx system-specific definitions */ /* */ /* */ /* */ /* (C) 2003 Shawn Jefferson */ /* */ /* Adapted with many changes Ullrich von Bassewitz, 2004-10-09 */ /* */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _LYNX_H #define _LYNX_H /* Check for errors */ #if !defined(__LYNX__) # error This module may only be used when compiling for the Lynx game console! #endif /*****************************************************************************/ /* Data */ /*****************************************************************************/ /* Color defines */ #define COLOR_BLACK 0x00 #define COLOR_RED 0x01 #define COLOR_PINK 0x02 #define COLOR_LIGHTGREY 0x03 #define COLOR_GREY 0x04 #define COLOR_DARKGREY 0x05 #define COLOR_BROWN 0x06 #define COLOR_PEACH 0x07 #define COLOR_YELLOW 0x08 #define COLOR_LIGHTGREEN 0x09 #define COLOR_GREEN 0x0A #define COLOR_DARKBROWN 0x0B #define COLOR_VIOLET 0x0C #define COLOR_BLUE 0x0D #define COLOR_LIGHTBLUE 0x0E #define COLOR_WHITE 0x0F /* TGI color defines (default palette) */ #define TGI_COLOR_BLACK COLOR_BLACK #define TGI_COLOR_RED COLOR_RED #define TGI_COLOR_PINK COLOR_PINK #define TGI_COLOR_LIGHTGREY COLOR_LIGHTGREY #define TGI_COLOR_GREY COLOR_GREY #define TGI_COLOR_DARKGREY COLOR_DARKGREY #define TGI_COLOR_BROWN COLOR_BROWN #define TGI_COLOR_PEACH COLOR_PEACH #define TGI_COLOR_YELLOW COLOR_YELLOW #define TGI_COLOR_LIGHTGREEN COLOR_LIGHTGREEN #define TGI_COLOR_GREEN COLOR_GREEN #define TGI_COLOR_DARKBROWN COLOR_DARKBROWN #define TGI_COLOR_VIOLET COLOR_VIOLET #define TGI_COLOR_BLUE COLOR_BLUE #define TGI_COLOR_LIGHTBLUE COLOR_LIGHTBLUE #define TGI_COLOR_WHITE COLOR_WHITE /* 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 /*****************************************************************************/ /* Variables */ /*****************************************************************************/ /* The addresses of the static drivers */ extern void lynx_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ extern void lynx_comlynx_ser[]; extern void lynx_160_102_16_tgi[]; /* Referred to by tgi_static_stddrv[] */ /*****************************************************************************/ /* Sound support */ /*****************************************************************************/ void lynx_snd_init (void); /* Initialize the sound driver */ void lynx_snd_pause (void); /* Pause sound */ void lynx_snd_continue (void); /* Continue sound after pause */ void __fastcall__ lynx_snd_play (unsigned char channel, unsigned char *music); /* Play tune on channel */ void lynx_snd_stop (void); /* Stop sound on all channels */ void __fastcall__ lynx_snd_stop_channel (unsigned char channel); /* Stop sound on all channels */ unsigned char lynx_snd_active(void); /* Show which channels are active */ /*****************************************************************************/ /* Accessing the cart */ /*****************************************************************************/ void __fastcall__ lynx_load (int fileno); /* Load a file into ram. The first entry is fileno=0. */ void __fastcall__ lynx_exec (int fileno); /* Load a file into ram and execute it. */ /*****************************************************************************/ /* Accessing the EEPROM */ /*****************************************************************************/ unsigned __fastcall__ lynx_eeprom_read (unsigned char cell); /* Read a 16 bit word from the given address */ unsigned __fastcall__ lynx_eeprom_write (unsigned char cell, unsigned val); /* Write the word at the given address */ void __fastcall__ lynx_eeprom_erase (unsigned char cell); /* Clear the word at the given address */ unsigned __fastcall__ lynx_eeread (unsigned cell); /* Read a 16 bit word from the given address 93C46 93C66 or 93C86*/ unsigned __fastcall__ lynx_eewrite (unsigned cell, unsigned val); /* Write the word at the given address 93C46 93C66 or 93C86*/ /*****************************************************************************/ /* TGI extras */ /*****************************************************************************/ #define tgi_sprite(spr) tgi_ioctl(0, spr) #define tgi_flip() tgi_ioctl(1, (void*)0) #define tgi_setbgcolor(bgcol) tgi_ioctl(2, (void*)(bgcol)) #define tgi_setframerate(rate) tgi_ioctl(3, (void*)(rate)) #define tgi_busy() tgi_ioctl(4, (void*)0) #define tgi_updatedisplay() tgi_ioctl(4, (void*)1) #define tgi_setcollisiondetection(active) tgi_ioctl(5, (void*)(active)) /* Define Hardware */ #include <_mikey.h> #define MIKEY (*(struct __mikey *)0xFD00) #define _MIKEY_TIMERS (*(struct _mikey_all_timers *) 0xFD00) // mikey_timers[8] #define _HBL_TIMER (*(struct _mikey_timer *) 0xFD00) // timer0 (HBL) #define _VBL_TIMER (*(struct _mikey_timer *) 0xFD08) // timer2 (VBL) #define _UART_TIMER (*(struct _mikey_timer *) 0xFD14) // timer4 (UART) #define _VIDDMA (*(unsigned int *) 0xFD92) // dispctl/viddma #include <_suzy.h> #define SUZY (*(struct __suzy*)0xFC00) /* End of lynx.h */ #endif /*****************************************************************************/ /* */ /* atari.h */ /* */ /* Atari system specific definitions */ /* */ /* */ /* */ /* (C) 2000-2006 Mark Keates */ /* Freddy Offenga */ /* Christian Groessler */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _ATARI_H #define _ATARI_H /* Check for errors */ #if !defined(__ATARI__) # error This module may only be used when compiling for the Atari! #endif /* Character codes */ #define CH_DELCHR 0xFE /* delete char under the cursor */ #define CH_ENTER 0x9B #define CH_ESC 0x1B #define CH_CURS_UP 28 #define CH_CURS_DOWN 29 #define CH_CURS_LEFT 30 #define CH_CURS_RIGHT 31 #define CH_TAB 0x7F /* tabulator */ #define CH_EOL 0x9B /* end-of-line marker */ #define CH_CLR 0x7D /* clear screen */ #define CH_BEL 0xFD /* bell */ #define CH_DEL 0x7E /* back space (delete char to the left) */ #define CH_RUBOUT 0x7E /* back space (old, deprecated) */ #define CH_DELLINE 0x9C /* delete line */ #define CH_INSLINE 0x9D /* insert line */ /* These are defined to be Atari + NumberKey */ #define CH_F1 177 #define CH_F2 178 #define CH_F3 179 #define CH_F4 180 #define CH_F5 181 #define CH_F6 182 #define CH_F7 183 #define CH_F8 184 #define CH_F9 185 #define CH_F10 176 #define CH_ULCORNER 0x11 #define CH_URCORNER 0x05 #define CH_LLCORNER 0x1A #define CH_LRCORNER 0x03 #define CH_TTEE 0x17 #define CH_BTEE 0x18 #define CH_LTEE 0x01 #define CH_RTEE 0x04 #define CH_CROSS 0x13 #define CH_HLINE 0x12 #define CH_VLINE 0x7C /* color defines */ /* make GTIA color value */ #define _gtia_mkcolor(hue,lum) (((hue) << 4) | ((lum) << 1)) /* luminance values go from 0 (black) to 7 (white) */ /* hue values */ #define HUE_GREY 0 #define HUE_GOLD 1 #define HUE_GOLDORANGE 2 #define HUE_REDORANGE 3 #define HUE_ORANGE 4 #define HUE_MAGENTA 5 #define HUE_PURPLE 6 #define HUE_BLUE 7 #define HUE_BLUE2 8 #define HUE_CYAN 9 #define HUE_BLUEGREEN 10 #define HUE_BLUEGREEN2 11 #define HUE_GREEN 12 #define HUE_YELLOWGREEN 13 #define HUE_YELLOW 14 #define HUE_YELLOWRED 15 /* Color defines, similar to c64 colors (untested) */ /* Note that the conio color implementation is monochrome (bgcolor and textcolor are only placeholders) */ /* Use the defines with the setcolor() or _atari_xxxcolor() functions */ #define COLOR_BLACK _gtia_mkcolor(HUE_GREY,0) #define COLOR_WHITE _gtia_mkcolor(HUE_GREY,7) #define COLOR_RED _gtia_mkcolor(HUE_REDORANGE,1) #define COLOR_CYAN _gtia_mkcolor(HUE_CYAN,3) #define COLOR_VIOLET _gtia_mkcolor(HUE_PURPLE,4) #define COLOR_GREEN _gtia_mkcolor(HUE_GREEN,2) #define COLOR_BLUE _gtia_mkcolor(HUE_BLUE,2) #define COLOR_YELLOW _gtia_mkcolor(HUE_YELLOW,7) #define COLOR_ORANGE _gtia_mkcolor(HUE_ORANGE,5) #define COLOR_BROWN _gtia_mkcolor(HUE_YELLOW,2) #define COLOR_LIGHTRED _gtia_mkcolor(HUE_REDORANGE,6) #define COLOR_GRAY1 _gtia_mkcolor(HUE_GREY,2) #define COLOR_GRAY2 _gtia_mkcolor(HUE_GREY,3) #define COLOR_LIGHTGREEN _gtia_mkcolor(HUE_GREEN,6) #define COLOR_LIGHTBLUE _gtia_mkcolor(HUE_BLUE,6) #define COLOR_GRAY3 _gtia_mkcolor(HUE_GREY,5) /* TGI color defines */ #define TGI_COLOR_BLACK COLOR_BLACK #define TGI_COLOR_WHITE COLOR_WHITE #define TGI_COLOR_RED COLOR_RED #define TGI_COLOR_CYAN COLOR_CYAN #define TGI_COLOR_VIOLET COLOR_VIOLET #define TGI_COLOR_GREEN COLOR_GREEN #define TGI_COLOR_BLUE COLOR_BLUE #define TGI_COLOR_YELLOW COLOR_YELLOW #define TGI_COLOR_ORANGE COLOR_ORANGE #define TGI_COLOR_BROWN COLOR_BROWN #define TGI_COLOR_LIGHTRED COLOR_LIGHTRED #define TGI_COLOR_GRAY1 COLOR_GRAY1 #define TGI_COLOR_GRAY2 COLOR_GRAY2 #define TGI_COLOR_LIGHTGREEN COLOR_LIGHTGREEN #define TGI_COLOR_LIGHTBLUE COLOR_LIGHTBLUE #define TGI_COLOR_GRAY3 COLOR_GRAY3 /* 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) /* color register functions */ extern void __fastcall__ _setcolor (unsigned char color_reg, unsigned char hue, unsigned char luminace); extern void __fastcall__ _setcolor_low (unsigned char color_reg, unsigned char color_value); extern unsigned char __fastcall__ _getcolor (unsigned char color_reg); /* other screen functions */ extern int __fastcall__ _graphics (unsigned char mode); /* mode value same as in BASIC */ extern void __fastcall__ _scroll (signed char numlines); /* numlines > 0 scrolls up */ /* numlines < 0 scrolls down */ /* misc. functions */ extern unsigned char get_ostype(void); /* get ROM version */ extern unsigned char get_tv(void); /* get TV system */ extern void _save_vecs(void); /* save system vectors */ extern void _rest_vecs(void); /* restore system vectors */ extern char *_getdefdev(void); /* get default floppy device */ extern unsigned char _is_cmdline_dos(void); /* does DOS support command lines */ /* global variables */ extern unsigned char _dos_type; /* the DOS flavour */ #ifndef __ATARIXL__ extern void atr130_emd[]; extern void atrstd_joy[]; /* referred to by joy_static_stddrv[] */ extern void atrmj8_joy[]; extern void atrjoy_mou[]; extern void atrst_mou[]; /* referred to by mouse_static_stddrv[] */ extern void atrami_mou[]; extern void atrtrk_mou[]; extern void atrtt_mou[]; extern void atrrdev_ser[]; extern void atr3_tgi[]; extern void atr4_tgi[]; extern void atr5_tgi[]; extern void atr6_tgi[]; extern void atr7_tgi[]; extern void atr8_tgi[]; /* referred to by tgi_static_stddrv[] */ extern void atr8p2_tgi[]; extern void atr9_tgi[]; extern void atr9p2_tgi[]; extern void atr10_tgi[]; extern void atr10p2_tgi[]; extern void atr11_tgi[]; extern void atr14_tgi[]; extern void atr15_tgi[]; extern void atr15p2_tgi[]; #else extern void atrx130_emd[]; extern void atrxstd_joy[]; /* referred to by joy_static_stddrv[] */ extern void atrxmj8_joy[]; extern void atrxjoy_mou[]; extern void atrxst_mou[]; /* referred to by mouse_static_stddrv[] */ extern void atrxami_mou[]; extern void atrxtrk_mou[]; extern void atrxtt_mou[]; extern void atrxrdev_ser[]; extern void atrx3_tgi[]; extern void atrx4_tgi[]; extern void atrx5_tgi[]; extern void atrx6_tgi[]; extern void atrx7_tgi[]; extern void atrx8_tgi[]; /* referred to by tgi_static_stddrv[] */ extern void atrx8p2_tgi[]; extern void atrx9_tgi[]; extern void atrx9p2_tgi[]; extern void atrx10_tgi[]; extern void atrx10p2_tgi[]; extern void atrx11_tgi[]; extern void atrx14_tgi[]; extern void atrx15_tgi[]; extern void atrx15p2_tgi[]; #endif /* provide old names for backwards compatibility */ #ifdef ATARI_COMPAT_PRE_2_11 #define setcolor _setcolor #define setcolor_low _setcolor_low #define getcolor _getcolor #define graphics _graphics #define scroll _scroll #define save_vecs _save_vecs #define rest_vecs _rest_vecs #define getdefdev _getdefdev #endif /* #ifdef ATARI_COMPAT_PRE_2_11 */ /* get_ostype return value defines (for explanation, see ostype.s) */ /* masks */ #define AT_OS_TYPE_MAIN 7 #define AT_OS_TYPE_MINOR (7 << 3) /* AT_OS_TYPE_MAIN values */ #define AT_OS_UNKNOWN 0 #define AT_OS_400800 1 #define AT_OS_1200XL 2 #define AT_OS_XLXE 3 /* AS_OS_TYPE_MINOR values */ /* for 400/800 remember this are the ROM versions */ /* to check whether the hw is PAL or NTSC, use get_tv() */ #define AT_OS_400800PAL_A 1 #define AT_OS_400800PAL_B 2 #define AT_OS_400800NTSC_A 1 #define AT_OS_400800NTSC_B 2 #define AT_OS_1200_10 1 #define AT_OS_1200_11 2 #define AT_OS_XLXE_1 1 #define AT_OS_XLXE_2 2 #define AT_OS_XLXE_3 3 #define AT_OS_XLXE_4 4 /* get_tv return values */ #define AT_NTSC 0 #define AT_PAL 1 /* valid _dos_type values */ #define SPARTADOS 0 #define OSADOS 1 #define XDOS 2 #define ATARIDOS 3 #define MYDOS 4 #define NODOS 255 /* Define hardware */ #include <_gtia.h> #define GTIA_READ (*(struct __gtia_read*)0xD000) #define GTIA_WRITE (*(struct __gtia_write*)0xD000) #include <_pbi.h> #include <_pokey.h> #define POKEY_READ (*(struct __pokey_read*)0xD200) #define POKEY_WRITE (*(struct __pokey_write*)0xD200) #include <_pia.h> #define PIA (*(struct __pia*)0xD300) #include <_antic.h> #define ANTIC (*(struct __antic*)0xD400) /* device control block */ struct __dcb { unsigned char device; /* device id */ unsigned char unit; /* unit number */ unsigned char command; /* command */ unsigned char status; /* command type / status return */ void *buffer; /* pointer to buffer */ unsigned char timeout; /* device timeout in seconds */ unsigned char unused; unsigned int xfersize; /* # of bytes to transfer */ unsigned char aux1; /* 1st command auxiliary byte */ unsigned char aux2; /* 2nd command auxiliary byte */ }; #define DCB (*(struct __dcb *)0x300) /* I/O control block */ struct __iocb { unsigned char handler; /* handler index number (0xff free) */ unsigned char drive; /* device number (drive) */ unsigned char command; /* command */ unsigned char status; /* status of last operation */ void *buffer; /* pointer to buffer */ void *put_byte; /* pointer to device's PUT BYTE routine */ unsigned int buflen; /* length of buffer */ unsigned char aux1; /* 1st auxiliary byte */ unsigned char aux2; /* 2nd auxiliary byte */ unsigned char aux3; /* 3rd auxiliary byte */ unsigned char aux4; /* 4th auxiliary byte */ unsigned char aux5; /* 5th auxiliary byte */ unsigned char spare; /* spare byte */ }; #define ZIOCB (*(struct __iocb *)0x20) /* zero page IOCB */ #define IOCB (*(struct __iocb *)0x340) /* system IOCB buffers */ /* IOCB Command Codes */ #define IOCB_OPEN 0x03 /* open */ #define IOCB_GETREC 0x05 /* get record */ #define IOCB_GETCHR 0x07 /* get character(s) */ #define IOCB_PUTREC 0x09 /* put record */ #define IOCB_PUTCHR 0x0B /* put character(s) */ #define IOCB_CLOSE 0x0C /* close */ #define IOCB_STATIS 0x0D /* status */ #define IOCB_SPECIL 0x0E /* special */ #define IOCB_DRAWLN 0x11 /* draw line */ #define IOCB_FILLIN 0x12 /* draw line with right fill */ #define IOCB_RENAME 0x20 /* rename disk file */ #define IOCB_DELETE 0x21 /* delete disk file */ #define IOCB_LOCKFL 0x23 /* lock file (set to read-only) */ #define IOCB_UNLOCK 0x24 /* unlock file */ #define IOCB_POINT 0x25 /* point sector */ #define IOCB_NOTE 0x26 /* note sector */ #define IOCB_GETFL 0x27 /* get file length */ #define IOCB_CHDIR_MYDOS 0x29 /* change directory (MyDOS) */ #define IOCB_MKDIR 0x2A /* make directory (MyDOS/SpartaDOS) */ #define IOCB_RMDIR 0x2B /* remove directory (SpartaDOS) */ #define IOCB_CHDIR_SPDOS 0x2C /* change directory (SpartaDOS) */ #define IOCB_GETCWD 0x30 /* get current directory (MyDOS/SpartaDOS) */ #define IOCB_FORMAT 0xFE /* format */ /* End of atari.h */ #endif /*****************************************************************************/ /* */ /* atari_screen_charmap.h */ /* */ /* Atari system internal string mapping (ISO-8859-1 -> Internal/Screen-Code) */ /* */ /* */ /* */ /* (C) 2016 Christian Krueger */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ /* No include guard here! Multiple use in one file may be intentional. */ #pragma warn (remap-zero, push, off) #pragma charmap (0x00, 0x40) #pragma warn (remap-zero, pop) #pragma charmap (0x01, 0x41) #pragma charmap (0x02, 0x42) #pragma charmap (0x03, 0x43) #pragma charmap (0x04, 0x44) #pragma charmap (0x05, 0x45) #pragma charmap (0x06, 0x46) #pragma charmap (0x07, 0xFD) #pragma charmap (0x08, 0x48) #pragma charmap (0x09, 0x7F) #pragma charmap (0x0A, 0xDB) #pragma charmap (0x0B, 0x4B) #pragma charmap (0x0C, 0x7D) #pragma charmap (0x0D, 0x4D) #pragma charmap (0x0E, 0x4E) #pragma charmap (0x0F, 0x4F) #pragma charmap (0x10, 0x50) #pragma charmap (0x11, 0x51) #pragma charmap (0x12, 0x52) #pragma charmap (0x13, 0x53) #pragma charmap (0x14, 0x54) #pragma charmap (0x15, 0x55) #pragma charmap (0x16, 0x56) #pragma charmap (0x17, 0x57) #pragma charmap (0x18, 0x58) #pragma charmap (0x19, 0x59) #pragma charmap (0x1A, 0x5A) #pragma charmap (0x1B, 0x5B) #pragma charmap (0x1C, 0x5C) #pragma charmap (0x1D, 0x5D) #pragma charmap (0x1E, 0x5E) #pragma charmap (0x1F, 0x5F) #pragma warn (remap-zero, push, off) #pragma charmap (0x20, 0x00) #pragma warn (remap-zero, pop) #pragma charmap (0x21, 0x01) #pragma charmap (0x22, 0x02) #pragma charmap (0x23, 0x03) #pragma charmap (0x24, 0x04) #pragma charmap (0x25, 0x05) #pragma charmap (0x26, 0x06) #pragma charmap (0x27, 0x07) #pragma charmap (0x28, 0x08) #pragma charmap (0x29, 0x09) #pragma charmap (0x2A, 0x0A) #pragma charmap (0x2B, 0x0B) #pragma charmap (0x2C, 0x0C) #pragma charmap (0x2D, 0x0D) #pragma charmap (0x2E, 0x0E) #pragma charmap (0x2F, 0x0F) #pragma charmap (0x30, 0x10) #pragma charmap (0x31, 0x11) #pragma charmap (0x32, 0x12) #pragma charmap (0x33, 0x13) #pragma charmap (0x34, 0x14) #pragma charmap (0x35, 0x15) #pragma charmap (0x36, 0x16) #pragma charmap (0x37, 0x17) #pragma charmap (0x38, 0x18) #pragma charmap (0x39, 0x19) #pragma charmap (0x3A, 0x1A) #pragma charmap (0x3B, 0x1B) #pragma charmap (0x3C, 0x1C) #pragma charmap (0x3D, 0x1D) #pragma charmap (0x3E, 0x1E) #pragma charmap (0x3F, 0x1F) #pragma charmap (0x40, 0x20) #pragma charmap (0x41, 0x21) #pragma charmap (0x42, 0x22) #pragma charmap (0x43, 0x23) #pragma charmap (0x44, 0x24) #pragma charmap (0x45, 0x25) #pragma charmap (0x46, 0x26) #pragma charmap (0x47, 0x27) #pragma charmap (0x48, 0x28) #pragma charmap (0x49, 0x29) #pragma charmap (0x4A, 0x2A) #pragma charmap (0x4B, 0x2B) #pragma charmap (0x4C, 0x2C) #pragma charmap (0x4D, 0x2D) #pragma charmap (0x4E, 0x2E) #pragma charmap (0x4F, 0x2F) #pragma charmap (0x50, 0x30) #pragma charmap (0x51, 0x31) #pragma charmap (0x52, 0x32) #pragma charmap (0x53, 0x33) #pragma charmap (0x54, 0x34) #pragma charmap (0x55, 0x35) #pragma charmap (0x56, 0x36) #pragma charmap (0x57, 0x37) #pragma charmap (0x58, 0x38) #pragma charmap (0x59, 0x39) #pragma charmap (0x5A, 0x3A) #pragma charmap (0x5B, 0x3B) #pragma charmap (0x5C, 0x3C) #pragma charmap (0x5D, 0x3D) #pragma charmap (0x5E, 0x3E) #pragma charmap (0x5F, 0x3F) #pragma charmap (0x60, 0x60) #pragma charmap (0x61, 0x61) #pragma charmap (0x62, 0x62) #pragma charmap (0x63, 0x63) #pragma charmap (0x64, 0x64) #pragma charmap (0x65, 0x65) #pragma charmap (0x66, 0x66) #pragma charmap (0x67, 0x67) #pragma charmap (0x68, 0x68) #pragma charmap (0x69, 0x69) #pragma charmap (0x6A, 0x6A) #pragma charmap (0x6B, 0x6B) #pragma charmap (0x6C, 0x6C) #pragma charmap (0x6D, 0x6D) #pragma charmap (0x6E, 0x6E) #pragma charmap (0x6F, 0x6F) #pragma charmap (0x70, 0x70) #pragma charmap (0x71, 0x71) #pragma charmap (0x72, 0x72) #pragma charmap (0x73, 0x73) #pragma charmap (0x74, 0x74) #pragma charmap (0x75, 0x75) #pragma charmap (0x76, 0x76) #pragma charmap (0x77, 0x77) #pragma charmap (0x78, 0x78) #pragma charmap (0x79, 0x79) #pragma charmap (0x7A, 0x7A) #pragma charmap (0x7B, 0x7B) #pragma charmap (0x7C, 0x7C) #pragma charmap (0x7D, 0x7D) #pragma charmap (0x7E, 0x7E) #pragma charmap (0x7F, 0x7F) #pragma charmap (0x80, 0xC0) #pragma charmap (0x81, 0xC1) #pragma charmap (0x82, 0xC2) #pragma charmap (0x83, 0xC3) #pragma charmap (0x84, 0xC4) #pragma charmap (0x85, 0xC5) #pragma charmap (0x86, 0xC6) #pragma charmap (0x87, 0xC7) #pragma charmap (0x88, 0xC8) #pragma charmap (0x89, 0xC9) #pragma charmap (0x8A, 0xCA) #pragma charmap (0x8B, 0xCB) #pragma charmap (0x8C, 0xCC) #pragma charmap (0x8D, 0xCD) #pragma charmap (0x8E, 0xCE) #pragma charmap (0x8F, 0xCF) #pragma charmap (0x90, 0xD0) #pragma charmap (0x91, 0xD1) #pragma charmap (0x92, 0xD2) #pragma charmap (0x93, 0xD3) #pragma charmap (0x94, 0xD4) #pragma charmap (0x95, 0xD5) #pragma charmap (0x96, 0xD6) #pragma charmap (0x97, 0xD7) #pragma charmap (0x98, 0xD8) #pragma charmap (0x99, 0xD9) #pragma charmap (0x9A, 0xDA) #pragma charmap (0x9B, 0xDB) #pragma charmap (0x9C, 0xDC) #pragma charmap (0x9D, 0xDD) #pragma charmap (0x9E, 0xDE) #pragma charmap (0x9F, 0xDF) #pragma charmap (0xA0, 0x80) #pragma charmap (0xA1, 0x81) #pragma charmap (0xA2, 0x82) #pragma charmap (0xA3, 0x83) #pragma charmap (0xA4, 0x84) #pragma charmap (0xA5, 0x85) #pragma charmap (0xA6, 0x86) #pragma charmap (0xA7, 0x87) #pragma charmap (0xA8, 0x88) #pragma charmap (0xA9, 0x89) #pragma charmap (0xAA, 0x8A) #pragma charmap (0xAB, 0x8B) #pragma charmap (0xAC, 0x8C) #pragma charmap (0xAD, 0x8D) #pragma charmap (0xAE, 0x8E) #pragma charmap (0xAF, 0x8F) #pragma charmap (0xB0, 0x90) #pragma charmap (0xB1, 0x91) #pragma charmap (0xB2, 0x92) #pragma charmap (0xB3, 0x93) #pragma charmap (0xB4, 0x94) #pragma charmap (0xB5, 0x95) #pragma charmap (0xB6, 0x96) #pragma charmap (0xB7, 0x97) #pragma charmap (0xB8, 0x98) #pragma charmap (0xB9, 0x99) #pragma charmap (0xBA, 0x9A) #pragma charmap (0xBB, 0x9B) #pragma charmap (0xBC, 0x9C) #pragma charmap (0xBD, 0x9D) #pragma charmap (0xBE, 0x9E) #pragma charmap (0xBF, 0x9F) #pragma charmap (0xC0, 0xA0) #pragma charmap (0xC1, 0xA1) #pragma charmap (0xC2, 0xA2) #pragma charmap (0xC3, 0xA3) #pragma charmap (0xC4, 0xA4) #pragma charmap (0xC5, 0xA5) #pragma charmap (0xC6, 0xA6) #pragma charmap (0xC7, 0xA7) #pragma charmap (0xC8, 0xA8) #pragma charmap (0xC9, 0xA9) #pragma charmap (0xCA, 0xAA) #pragma charmap (0xCB, 0xAB) #pragma charmap (0xCC, 0xAC) #pragma charmap (0xCD, 0xAD) #pragma charmap (0xCE, 0xAE) #pragma charmap (0xCF, 0xAF) #pragma charmap (0xD0, 0xB0) #pragma charmap (0xD1, 0xB1) #pragma charmap (0xD2, 0xB2) #pragma charmap (0xD3, 0xB3) #pragma charmap (0xD4, 0xB4) #pragma charmap (0xD5, 0xB5) #pragma charmap (0xD6, 0xB6) #pragma charmap (0xD7, 0xB7) #pragma charmap (0xD8, 0xB8) #pragma charmap (0xD9, 0xB9) #pragma charmap (0xDA, 0xBA) #pragma charmap (0xDB, 0xBB) #pragma charmap (0xDC, 0xBC) #pragma charmap (0xDD, 0xBD) #pragma charmap (0xDE, 0xBE) #pragma charmap (0xDF, 0xBF) #pragma charmap (0xE0, 0xE0) #pragma charmap (0xE1, 0xE1) #pragma charmap (0xE2, 0xE2) #pragma charmap (0xE3, 0xE3) #pragma charmap (0xE4, 0xE4) #pragma charmap (0xE5, 0xE5) #pragma charmap (0xE6, 0xE6) #pragma charmap (0xE7, 0xE7) #pragma charmap (0xE8, 0xE8) #pragma charmap (0xE9, 0xE9) #pragma charmap (0xEA, 0xEA) #pragma charmap (0xEB, 0xEB) #pragma charmap (0xEC, 0xEC) #pragma charmap (0xED, 0xED) #pragma charmap (0xEE, 0xEE) #pragma charmap (0xEF, 0xEF) #pragma charmap (0xF0, 0xF0) #pragma charmap (0xF1, 0xF1) #pragma charmap (0xF2, 0xF2) #pragma charmap (0xF3, 0xF3) #pragma charmap (0xF4, 0xF4) #pragma charmap (0xF5, 0xF5) #pragma charmap (0xF6, 0xF6) #pragma charmap (0xF7, 0xF7) #pragma charmap (0xF8, 0xF8) #pragma charmap (0xF9, 0xF9) #pragma charmap (0xFA, 0xFA) #pragma charmap (0xFB, 0xFB) #pragma charmap (0xFC, 0xFC) #pragma charmap (0xFD, 0xFD) #pragma charmap (0xFE, 0xFE) #pragma charmap (0xFF, 0xFF) /*****************************************************************************/ /* */ /* stdlib.h */ /* */ /* General utilities */ /* */ /* */ /* */ /* (C) 1998-2011, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _STDLIB_H #define _STDLIB_H /* size_t is needed */ #ifndef _HAVE_size_t typedef unsigned size_t; #define _HAVE_size_t #endif /* Standard exit codes */ #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 /* Return type of the div function */ typedef struct { int rem; int quot; } div_t; /* Return type of the ldiv function (which currently doesn't exist) */ typedef struct { long rem; long quot; } ldiv_t; /* Memory management */ void* __fastcall__ malloc (size_t size); void* __fastcall__ calloc (size_t count, size_t size); void* __fastcall__ realloc (void* block, size_t size); void __fastcall__ free (void* block); /* Non standard memory management functions */ #if __CC65_STD__ == __CC65_STD_CC65__ int __fastcall__ posix_memalign (void** memptr, size_t alignment, size_t size); /* Allocate a block of memory with the given "size", which is aligned to a ** memory address that is a multiple of "alignment". "alignment" MUST NOT be ** zero, and MUST be a power of two; otherwise, this function will return ** EINVAL. The function returns ENOMEM if not enough memory is available ** to satisfy the request. "memptr" must point to a variable; that variable ** will return the address of the allocated memory. Use free() to release that ** allocated block. */ #endif void __fastcall__ _heapadd (void* mem, size_t size); /* Add a block to the heap */ size_t __fastcall__ _heapblocksize (const void* block); /* Return the size of an allocated block */ size_t _heapmemavail (void); /* Return the total free heap space */ size_t _heapmaxavail (void); /* Return the size of the largest free block on the heap */ /* Random numbers */ #define RAND_MAX 0x7FFF int rand (void); void __fastcall__ srand (unsigned seed); void _randomize (void); /* Non-standard */ /* Other standard stuff */ void abort (void) __attribute__ ((noreturn)); int __fastcall__ abs (int val); long __fastcall__ labs (long val); int __fastcall__ atoi (const char* s); long __fastcall__ atol (const char* s); int __fastcall__ atexit (void (*exitfunc) (void)); void* __fastcall__ bsearch (const void* key, const void* base, size_t n, size_t size, int __fastcall__ (* cmp) (const void*, const void*)); div_t __fastcall__ div (int numer, int denom); void __fastcall__ exit (int ret) __attribute__ ((noreturn)); char* __fastcall__ getenv (const char* name); void __fastcall__ qsort (void* base, size_t count, size_t size, int __fastcall__ (* compare) (const void*, const void*)); long __fastcall__ strtol (const char* nptr, char** endptr, int base); unsigned long __fastcall__ strtoul (const char* nptr, char** endptr, int base); int __fastcall__ system (const char* s); /* Non-ANSI functions */ void __fastcall__ _swap (void* p, void* q, size_t size); #if __CC65_STD__ == __CC65_STD_CC65__ char* __fastcall__ itoa (int val, char* buf, int radix); char* __fastcall__ utoa (unsigned val, char* buf, int radix); char* __fastcall__ ltoa (long val, char* buf, int radix); char* __fastcall__ ultoa (unsigned long val, char* buf, int radix); int __fastcall__ putenv (char* s); #endif /* End of stdlib.h */ #endif /*****************************************************************************/ /* */ /* pen.h */ /* */ /* Lightpen API */ /* */ /* */ /* This software is provided "as-is", without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated, but is not required. */ /* 2. Altered source versions must be marked plainly as such; and, must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _PEN_H #define _PEN_H /*****************************************************************************/ /* Declarations */ /*****************************************************************************/ /* A program optionally can set this pointer to a function that gives ** a calibration value to a driver. If this pointer isn't NULL, ** then a driver that wants a value can call that function. ** pen_adjuster must be set before the driver is installed. */ extern void __fastcall__ (*pen_adjuster) (unsigned char *pValue); /*****************************************************************************/ /* Functions */ /*****************************************************************************/ void __fastcall__ pen_calibrate (unsigned char *XOffset); /* Ask the user to help to calibrate a lightpen. Changes the screen! ** A pointer to this function can be put into pen_adjuster. */ void __fastcall__ pen_adjust (const char *filename); /* Get a lightpen calibration value from a file if it exists. Otherwise, call ** pen_calibrate() to create a value; then, write it into a file, so that it ** will be available at the next time that the lightpen is used. ** Might change the screen. ** pen_adjust() is optional; if you want to use its feature, ** then it must be called before a driver is installed. ** Note: This function merely saves the file-name pointer, and sets ** the pen_adjuster pointer. The file will be read only when a driver ** is installed, and only if that driver wants to be calibrated. */ /* End of pen.h */ #endif /*****************************************************************************/ /* */ /* stdbool.h */ /* */ /* C99 Boolean definitions */ /* */ /* */ /* */ /* (C) 2002 Greg King */ /* */ /* */ /* This software is provided "as-is," without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment, in the product's documentation, */ /* would be appreciated, but is not required. */ /* 2. Alterred source versions must be marked plainly as such, */ /* and must not be misrepresented as being the original software. */ /* 3. This notice may not be removed or alterred */ /* from any source distribution. */ /*****************************************************************************/ #ifndef _STDBOOL_H #define _STDBOOL_H #define bool _Bool typedef unsigned char _Bool; /* Standard test-results. */ #define false 0 #define true 1 /* All three names are macroes. */ #define __bool_true_false_are_defined 1 /* End of stdbool.h */ #endif /*****************************************************************************/ /* */ /* cc65.h */ /* */ /* Target independent but cc65 specific utility functions */ /* */ /* */ /* */ /* (C) 2009-2011, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _CC65_H #define _CC65_H /*****************************************************************************/ /* Code */ /*****************************************************************************/ long __fastcall__ cc65_idiv32by16r16 (long rhs, int lhs); /* Divide a 32 bit signed value by a 16 bit signed value yielding a 16 ** bit result and a 16 bit remainder. The former is returned in the lower 16 ** bit of the result, the latter in the upper. If you don't need the ** remainder, just assign (or cast) to an int. */ unsigned long __fastcall__ cc65_udiv32by16r16 (unsigned long rhs, unsigned lhs); /* Divide a 32 bit unsigned value by a 16 bit unsigned value yielding a 16 ** bit result and a 16 bit remainder. The former is returned in the lower 16 ** bit of the result, the latter in the upper. If you don't need the ** remainder, just assign (or cast) to an unsigned. */ int __fastcall__ cc65_imul8x8r16 (signed char lhs, signed char rhs); /* Multiplicate two signed 8 bit to yield an signed 16 bit result */ long __fastcall__ cc65_imul16x16r32 (int lhs, int rhs); /* Multiplicate two signed 16 bit to yield a signed 32 bit result */ unsigned __fastcall__ cc65_umul8x8r16 (unsigned char lhs, unsigned char rhs); /* Multiplicate two unsigned 8 bit to yield an unsigned 16 bit result */ unsigned long __fastcall__ cc65_umul16x8r32 (unsigned lhs, unsigned char rhs); /* Multiplicate an unsigned 16 bit by an unsigned 8 bit number yielding a 24 ** bit unsigned result that is extended to 32 bits for easier handling from C. */ unsigned long __fastcall__ cc65_umul16x16r32 (unsigned lhs, unsigned rhs); /* Multiplicate two unsigned 16 bit to yield an unsigned 32 bit result */ int __fastcall__ cc65_sin (unsigned x); /* Return the sine of the argument, which must be in range 0..360. The result ** is in 8.8 fixed point format, which means that 1.0 = $100 and -1.0 = $FF00. */ int __fastcall__ cc65_cos (unsigned x); /* Return the cosine of the argument, which must be in range 0..360. The result ** is in 8.8 fixed point format, which means that 1.0 = $100 and -1.0 = $FF00. */ unsigned char doesclrscrafterexit (void); /* Indicates whether the screen automatically be cleared after program ** termination. */ /* End of cc65.h */ #endif /*****************************************************************************/ /* */ /* signal.h */ /* */ /* Signal handling definitions */ /* */ /* */ /* */ /* (C) 2002-2005, Ullrich von Bassewitz */ /* 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 /*****************************************************************************/ /* */ /* _vic2.h */ /* */ /* Internal include file, do not use directly */ /* */ /* */ /* */ /* (C) 1998-2012, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef __VIC2_H #define __VIC2_H /* Define a structure with the vic register offsets. In cc65 mode, there ** are aliases for the field accessible as arrays. */ #if __CC65_STD__ == __CC65_STD_CC65__ struct __vic2 { union { struct { unsigned char spr0_x; /* Sprite 0, X coordinate */ unsigned char spr0_y; /* Sprite 0, Y coordinate */ unsigned char spr1_x; /* Sprite 1, X coordinate */ unsigned char spr1_y; /* Sprite 1, Y coordinate */ unsigned char spr2_x; /* Sprite 2, X coordinate */ unsigned char spr2_y; /* Sprite 2, Y coordinate */ unsigned char spr3_x; /* Sprite 3, X coordinate */ unsigned char spr3_y; /* Sprite 3, Y coordinate */ unsigned char spr4_x; /* Sprite 4, X coordinate */ unsigned char spr4_y; /* Sprite 4, Y coordinate */ unsigned char spr5_x; /* Sprite 5, X coordinate */ unsigned char spr5_y; /* Sprite 5, Y coordinate */ unsigned char spr6_x; /* Sprite 6, X coordinate */ unsigned char spr6_y; /* Sprite 6, Y coordinate */ unsigned char spr7_x; /* Sprite 7, X coordinate */ unsigned char spr7_y; /* Sprite 7, Y coordinate */ }; struct { unsigned char x; /* X coordinate */ unsigned char y; /* Y coordinate */ } spr_pos[8]; }; unsigned char spr_hi_x; /* High bits of X coordinate */ unsigned char ctrl1; /* Control register 1 */ unsigned char rasterline; /* Current raster line */ union { struct { unsigned char strobe_x; /* Light pen, X position */ unsigned char strobe_y; /* Light pen, Y position */ }; struct { unsigned char x; /* Light pen, X position */ unsigned char y; /* Light pen, Y position */ } strobe; }; unsigned char spr_ena; /* Enable sprites */ unsigned char ctrl2; /* Control register 2 */ unsigned char spr_exp_y; /* Expand sprites in Y dir */ unsigned char addr; /* Address of chargen and video ram */ unsigned char irr; /* Interrupt request register */ unsigned char imr; /* Interrupt mask register */ unsigned char spr_bg_prio; /* Priority to background */ unsigned char spr_mcolor; /* Sprite multicolor bits */ unsigned char spr_exp_x; /* Expand sprites in X dir */ unsigned char spr_coll; /* Sprite/sprite collision reg */ unsigned char spr_bg_coll; /* Sprite/background collision reg */ unsigned char bordercolor; /* Border color */ union { struct { unsigned char bgcolor0; /* Background color 0 */ unsigned char bgcolor1; /* Background color 1 */ unsigned char bgcolor2; /* Background color 2 */ unsigned char bgcolor3; /* Background color 3 */ }; unsigned char bgcolor[4]; /* Background colors */ }; union { struct { unsigned char spr_mcolor0; /* Color 0 for multicolor sprites */ unsigned char spr_mcolor1; /* Color 1 for multicolor sprites */ }; /* spr_color is already used ... */ unsigned char spr_mcolors[2]; /* Color for multicolor sprites */ }; union { struct { unsigned char spr0_color; /* Color sprite 0 */ unsigned char spr1_color; /* Color sprite 1 */ unsigned char spr2_color; /* Color sprite 2 */ unsigned char spr3_color; /* Color sprite 3 */ unsigned char spr4_color; /* Color sprite 4 */ unsigned char spr5_color; /* Color sprite 5 */ unsigned char spr6_color; /* Color sprite 6 */ unsigned char spr7_color; /* Color sprite 7 */ }; unsigned char spr_color[8]; /* Colors for the sprites */ }; /* The following ones are only valid in the C128: */ unsigned char x_kbd; /* Additional keyboard lines */ unsigned char clock; /* Clock switch bit */ }; #else struct __vic2 { unsigned char spr0_x; /* Sprite 0, X coordinate */ unsigned char spr0_y; /* Sprite 0, Y coordinate */ unsigned char spr1_x; /* Sprite 1, X coordinate */ unsigned char spr1_y; /* Sprite 1, Y coordinate */ unsigned char spr2_x; /* Sprite 2, X coordinate */ unsigned char spr2_y; /* Sprite 2, Y coordinate */ unsigned char spr3_x; /* Sprite 3, X coordinate */ unsigned char spr3_y; /* Sprite 3, Y coordinate */ unsigned char spr4_x; /* Sprite 4, X coordinate */ unsigned char spr4_y; /* Sprite 4, Y coordinate */ unsigned char spr5_x; /* Sprite 5, X coordinate */ unsigned char spr5_y; /* Sprite 5, Y coordinate */ unsigned char spr6_x; /* Sprite 6, X coordinate */ unsigned char spr6_y; /* Sprite 6, Y coordinate */ unsigned char spr7_x; /* Sprite 7, X coordinate */ unsigned char spr7_y; /* Sprite 7, Y coordinate */ unsigned char spr_hi_x; /* High bits of X coordinate */ unsigned char ctrl1; /* Control register 1 */ unsigned char rasterline; /* Current raster line */ unsigned char strobe_x; /* Light pen, X position */ unsigned char strobe_y; /* Light pen, Y position */ unsigned char spr_ena; /* Enable sprites */ unsigned char ctrl2; /* Control register 2 */ unsigned char spr_exp_y; /* Expand sprites in Y dir */ unsigned char addr; /* Address of chargen and video ram */ unsigned char irr; /* Interrupt request register */ unsigned char imr; /* Interrupt mask register */ unsigned char spr_bg_prio; /* Priority to background */ unsigned char spr_mcolor; /* Sprite multicolor bits */ unsigned char spr_exp_x; /* Expand sprites in X dir */ unsigned char spr_coll; /* Sprite/sprite collision reg */ unsigned char spr_bg_coll; /* Sprite/background collision reg */ unsigned char bordercolor; /* Border color */ unsigned char bgcolor0; /* Background color 0 */ unsigned char bgcolor1; /* Background color 1 */ unsigned char bgcolor2; /* Background color 2 */ unsigned char bgcolor3; /* Background color 3 */ unsigned char spr_mcolor0; /* Color 0 for multicolor sprites */ unsigned char spr_mcolor1; /* Color 1 for multicolor sprites */ unsigned char spr0_color; /* Color sprite 0 */ unsigned char spr1_color; /* Color sprite 1 */ unsigned char spr2_color; /* Color sprite 2 */ unsigned char spr3_color; /* Color sprite 3 */ unsigned char spr4_color; /* Color sprite 4 */ unsigned char spr5_color; /* Color sprite 5 */ unsigned char spr6_color; /* Color sprite 6 */ unsigned char spr7_color; /* Color sprite 7 */ /* The following ones are only valid in the C128: */ unsigned char x_kbd; /* Additional keyboard lines */ unsigned char clock; /* Clock switch bit */ }; #endif /* End of _vic2.h */ #endif /*****************************************************************************/ /* */ /* unistd.h */ /* */ /* Unix compatibility header file for cc65 */ /* */ /* */ /* */ /* (C) 2003-2011, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _UNISTD_H #define _UNISTD_H /*****************************************************************************/ /* Data */ /*****************************************************************************/ /* Predefined file handles */ #define STDIN_FILENO 0 #define STDOUT_FILENO 1 #define STDERR_FILENO 2 /* WE need size_t */ #ifndef _HAVE_size_t #define _HAVE_size_t typedef unsigned size_t; #endif /* We need off_t if sys/types is not included */ #ifndef _HAVE_off_t #define _HAVE_off_t typedef long int off_t; #endif /* Stuff for getopt */ extern char *optarg; extern int optind, opterr, optopt; /*****************************************************************************/ /* Code */ /*****************************************************************************/ /* Files */ int __fastcall__ write (int fd, const void* buf, unsigned count); int __fastcall__ read (int fd, void* buf, unsigned count); off_t __fastcall__ lseek (int fd, off_t offset, int whence); int __fastcall__ unlink (const char* name); /* Same as remove() */ /* Directories */ int __fastcall__ chdir (const char* name); char* __fastcall__ getcwd (char* buf, size_t size); int mkdir (const char* name, ...); /* May take a mode argument */ int __fastcall__ rmdir (const char* name); /* Others */ unsigned __fastcall__ sleep (unsigned seconds); int __fastcall__ getopt (int argc, char* const* argv, const char* optstring); /* Non standard: */ #if __CC65_STD__ == __CC65_STD_CC65__ int __fastcall__ exec (const char* progname, const char* cmdline); #endif /* End of unistd.h */ #endif /*****************************************************************************/ /* */ /* ctype.h */ /* */ /* Character handling */ /* */ /* */ /* */ /* (C) 1998-2013, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _CTYPE_H #define _CTYPE_H /* The array containing character classification data */ extern unsigned char _ctype[256]; /* Bits used to specify character classes */ #define _CT_LOWER 0x01 /* 0 - Lower case char */ #define _CT_UPPER 0x02 /* 1 - Upper case char */ #define _CT_DIGIT 0x04 /* 2 - Numeric digit */ #define _CT_XDIGIT 0x08 /* 3 - Hex digit (both lower and upper) */ #define _CT_CNTRL 0x10 /* 4 - Control character */ #define _CT_SPACE 0x20 /* 5 - The space character itself */ #define _CT_OTHER_WS 0x40 /* 6 - Other whitespace ('\f', '\n', '\r', '\t', and '\v') */ #define _CT_SPACE_TAB 0x80 /* 7 - Space or tab character */ /* Bit combinations */ #define _CT_ALNUM (_CT_LOWER | _CT_UPPER | _CT_DIGIT) #define _CT_ALPHA (_CT_LOWER | _CT_UPPER) #define _CT_NOT_GRAPH (_CT_CNTRL | _CT_SPACE) #define _CT_NOT_PRINT (_CT_CNTRL) #define _CT_NOT_PUNCT (_CT_SPACE | _CT_CNTRL | _CT_DIGIT | _CT_UPPER | _CT_LOWER) #define _CT_WS (_CT_SPACE | _CT_OTHER_WS) /* Character classification functions */ int __fastcall__ isalnum (int c); int __fastcall__ isalpha (int c); int __fastcall__ iscntrl (int c); int __fastcall__ isdigit (int c); int __fastcall__ isgraph (int c); int __fastcall__ islower (int c); int __fastcall__ isprint (int c); int __fastcall__ ispunct (int c); int __fastcall__ isspace (int c); int __fastcall__ isupper (int c); int __fastcall__ isxdigit (int c); #if __CC65_STD__ >= __CC65_STD_C99__ int __fastcall__ isblank (int c); /* New in C99 */ #endif int __fastcall__ toupper (int c); /* Always external */ int __fastcall__ tolower (int c); /* Always external */ #if __CC65_STD__ >= __CC65_STD_CC65__ unsigned char __fastcall__ toascii (unsigned char c); /* Convert a target-specific character to ASCII. */ #endif /* When inlining-of-known-functions is enabled, overload most of the above ** functions by macroes. The function prototypes are available again after ** #undef'ing the macroes. ** Please note that the following macroes do NOT handle EOF correctly, as ** stated in the manual. If you need correct behaviour for EOF, don't ** use --eagerly-inline-funcs, or #undefine the following macroes. */ #ifdef __EAGERLY_INLINE_FUNCS__ #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; /* 0x00: horizontal position player 0 */ unsigned char hposp1; /* 0x01: horizontal position player 1 */ unsigned char hposp2; /* 0x02: horizontal position player 2 */ unsigned char hposp3; /* 0x03: horizontal position player 3 */ unsigned char hposm0; /* 0x04: horizontal position missile 0 */ unsigned char hposm1; /* 0x05: horizontal position missile 1 */ unsigned char hposm2; /* 0x06: horizontal position missile 2 */ unsigned char hposm3; /* 0x07: horizontal position 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 */ 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 */ unsigned char gractl; /* 0x1D: stick/paddle latch, p/m control */ unsigned char hitclr; /* 0x1E: clear p/m collision */ unsigned char consol; /* 0x1F: builtin speaker */ }; /* Define a structure with the gtia register offsets */ 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 */ 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 */ }; /* End of _gtia.h */ #endif /* #ifndef __GTIA_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 /*****************************************************************************/ /* */ /* 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 /*****************************************************************************/ /* */ /* 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 (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 #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 /*****************************************************************************/ /* */ /* _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) /* 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 /*****************************************************************************/ /* */ /* 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 /* 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 <_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[] */ extern void vic20_rama_emd[]; extern void vic20_georam_emd[]; /* 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 /*****************************************************************************/ /* */ /* 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; }; /*****************************************************************************/ /* */ /* _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 /*****************************************************************************/ /* */ /* lz4.h */ /* */ /* Decompression routine for the 'lz4' format */ /* */ /* */ /* */ /* (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 /*****************************************************************************/ /* */ /* 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 /* 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) /* 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) /* 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 waitvsync (void); /* Wait for start of the next frame */ 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 #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 /*****************************************************************************/ /* */ /* 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_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 /*****************************************************************************/ /* */ /* 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; }; /*****************************************************************************/ /* */ /* _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; /* 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 /*****************************************************************************/ /* */ /* 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 /* 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 /*****************************************************************************/ /* */ /* 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 #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 #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 '+' /* 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 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 ** 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 /* End of apple2.h */ #endif /*****************************************************************************/ /* */ /* inttypes.h */ /* */ /* Format conversion of integer types */ /* */ /* */ /* */ /* (C) 2002-2011, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ /* Note: This file is not fully ISO 9899-1999 compliant because cc65 lacks ** a 64 bit data types and is not able to return structs > 4 bytes. The ** declarations have been adjusted accordingly or left out. */ #ifndef _INTTYPES_H #define _INTTYPES_H /* inttypes.h must always include stdint.h */ #ifndef _STDINT_H #include #endif /* Standard functions */ intmax_t __fastcall__ imaxabs (intmax_t val); intmax_t __fastcall__ strtoimax (const char* nptr, char** endptr, int base); uintmax_t __fastcall__ strtoumax (const char* nptr, char** endptr, int base); /* printf() macros for signed integers */ #define PRId8 "d" #define PRId16 "d" #define PRId32 "ld" #define PRIdLEAST8 "d" #define PRIdLEAST16 "d" #define PRIdLEAST32 "ld" #define PRIdFAST8 "d" #define PRIdFAST16 "d" #define PRIdFAST32 "ld" #define PRIdMAX "ld" #define PRIdPTR "d" #define PRIi8 "i" #define PRIi16 "i" #define PRIi32 "li" #define PRIiLEAST8 "i" #define PRIiLEAST16 "i" #define PRIiLEAST32 "li" #define PRIiFAST8 "i" #define PRIiFAST16 "i" #define PRIiFAST32 "li" #define PRIiMAX "li" #define PRIiPTR "i" /* fprintf() macros for unsigned integers */ #define PRIo8 "o" #define PRIo16 "o" #define PRIo32 "lo" #define PRIoLEAST8 "o" #define PRIoLEAST16 "o" #define PRIoLEAST32 "lo" #define PRIoFAST8 "o" #define PRIoFAST16 "o" #define PRIoFAST32 "lo" #define PRIoMAX "lo" #define PRIoPTR "o" #define PRIu8 "u" #define PRIu16 "u" #define PRIu32 "lu" #define PRIuLEAST8 "u" #define PRIuLEAST16 "u" #define PRIuLEAST32 "lu" #define PRIuFAST8 "u" #define PRIuFAST16 "u" #define PRIuFAST32 "lu" #define PRIuMAX "lu" #define PRIuPTR "u" #define PRIx8 "x" #define PRIx16 "x" #define PRIx32 "lx" #define PRIxLEAST8 "x" #define PRIxLEAST16 "x" #define PRIxLEAST32 "lx" #define PRIxFAST8 "x" #define PRIxFAST16 "x" #define PRIxFAST32 "lx" #define PRIxMAX "lx" #define PRIxPTR "x" #define PRIX8 "X" #define PRIX16 "X" #define PRIX32 "lX" #define PRIXLEAST8 "X" #define PRIXLEAST16 "X" #define PRIXLEAST32 "lX" #define PRIXFAST8 "X" #define PRIXFAST16 "X" #define PRIXFAST32 "lX" #define PRIXMAX "lX" #define PRIXPTR "X" /* fscanf() macros for signed integers */ #define SCNd8 "hd" #define SCNd16 "d" #define SCNd32 "ld" #define SCNdLEAST8 "hd" #define SCNdLEAST16 "d" #define SCNdLEAST32 "ld" #define SCNdFAST8 "hd" #define SCNdFAST16 "d" #define SCNdFAST32 "ld" #define SCNdMAX "ld" #define SCNdPTR "d" #define SCNi8 "hi" #define SCNi16 "i" #define SCNi32 "li" #define SCNiLEAST8 "hi" #define SCNiLEAST16 "i" #define SCNiLEAST32 "li" #define SCNiFAST8 "hi" #define SCNiFAST16 "i" #define SCNiFAST32 "li" #define SCNiMAX "li" #define SCNiPTR "i" /* fscanf() macros for unsigned integers */ #define SCNo8 "ho" #define SCNo16 "o" #define SCNo32 "lo" #define SCNoLEAST8 "ho" #define SCNoLEAST16 "o" #define SCNoLEAST32 "lo" #define SCNoFAST8 "ho" #define SCNoFAST16 "o" #define SCNoFAST32 "lo" #define SCNoMAX "lo" #define SCNoPTR "o" #define SCNu8 "hu" #define SCNu16 "u" #define SCNu32 "lu" #define SCNuLEAST8 "hu" #define SCNuLEAST16 "u" #define SCNuLEAST32 "lu" #define SCNuFAST8 "hu" #define SCNuFAST16 "u" #define SCNuFAST32 "lu" #define SCNuMAX "lu" #define SCNuPTR "u" #define SCNx8 "hx" #define SCNx16 "x" #define SCNx32 "lx" #define SCNxLEAST8 "hx" #define SCNxLEAST16 "x" #define SCNxLEAST32 "lx" #define SCNxFAST8 "hx" #define SCNxFAST16 "x" #define SCNxFAST32 "lx" #define SCNxMAX "lx" #define SCNxPTR "x" /* End of inttypes.h */ #endif /*****************************************************************************/ /* */ /* time.h */ /* */ /* Date and time */ /* */ /* */ /* */ /* (C) 1998-2012 Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _TIME_H #define _TIME_H /* NULL pointer */ #ifndef _HAVE_NULL #define NULL 0 #define _HAVE_NULL #endif /* size_t is needed */ #ifndef _HAVE_size_t #define _HAVE_size_t typedef unsigned size_t; #endif typedef unsigned long time_t; typedef unsigned long clock_t; /* Structure for broken down time */ struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; /* Timezone representation, default is UTC */ extern struct _timezone { char daylight; /* True if daylight savings time active */ long timezone; /* Number of seconds behind UTC */ char tzname[5]; /* Name of timezone, e.g. CET */ char dstname[5]; /* Name when daylight true, e.g. CEST */ } _tz; #if defined(__ATARI__) /* The clock depends on the video standard, so read it at runtime */ unsigned _clocks_per_sec (void); # define CLK_TCK _clocks_per_sec() # define CLOCKS_PER_SEC _clocks_per_sec() #elif defined(__ATARI5200__) # define CLK_TCK 60 /* POSIX */ # define CLOCKS_PER_SEC 60 /* ANSI */ #elif defined(__ATMOS__) # define CLK_TCK 100 /* POSIX */ # define CLOCKS_PER_SEC 100 /* ANSI */ #elif defined(__CBM__) # if defined(__CBM510__) || defined(__CBM610__) /* The 510/610 gets its clock from the AC current */ # define CLK_TCK 50 /* POSIX */ # define CLOCKS_PER_SEC 50 /* ANSI */ # else # define CLK_TCK 60 /* POSIX */ # define CLOCKS_PER_SEC 60 /* ANSI */ # endif #elif defined(__NES__) # define CLK_TCK 50 /* POSIX */ # define CLOCKS_PER_SEC 50 /* ANSI */ #elif defined(__PCE__) # define CLK_TCK 60 /* POSIX */ # define CLOCKS_PER_SEC 60 /* ANSI */ #elif defined(__GAMATE__) # define CLK_TCK 135 /* POSIX */ /* FIXME */ # define CLOCKS_PER_SEC 135 /* ANSI */ /* FIXME */ #elif defined(__GEOS__) # define CLK_TCK 1 /* POSIX */ # define CLOCKS_PER_SEC 1 /* ANSI */ #elif defined(__LYNX__) /* The clock-rate depends on the video scan-rate; ** so, read it at run-time. */ extern clock_t _clk_tck (void); # define CLK_TCK _clk_tck() # define CLOCKS_PER_SEC _clk_tck() #endif time_t _systime (void); /* Similar to time(), but: ** - Is not ISO C ** - Does not take the additional pointer ** - Does not set errno when returning -1 */ /* ISO C function prototypes */ char* __fastcall__ asctime (const struct tm* timep); clock_t clock (void); char* __fastcall__ ctime (const time_t* timep); struct tm* __fastcall__ gmtime (const time_t* timep); struct tm* __fastcall__ localtime (const time_t* timep); time_t __fastcall__ mktime (struct tm* timep); size_t __fastcall__ strftime (char* buf, size_t bufsize, const char* format, const struct tm* tm); time_t __fastcall__ time (time_t* t); /* End of time.h */ #endif /*****************************************************************************/ /* */ /* modload.h */ /* */ /* o65 module loader interface for cc65 */ /* */ /* */ /* */ /* (C) 2002 Ullrich von Bassewitz */ /* Wacholderweg 14 */ /* D-70597 Stuttgart */ /* EMail: uz@musoftware.de */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ /* Exports structures and functions to load relocatable o65 modules at ** runtime. */ #ifndef _MODLOAD_H #define _MODLOAD_H /* The following struct is passed to the module loader. It contains stuff, ** the loader needs to work, and another area where the loader will place ** informational data if it was successful. You will have to check the return ** code of mod_load before accessing any of these additional struct members. */ struct mod_ctrl { /* Parameters passed into the loader routine. The member callerdata ** is an opaque 16 bit datatype that may be used by the caller to ** pass data through to the read routine. The read routine is used by the ** loader to load any required data. There are several calls where the ** read routine is passed a count of 1, so you may choose to make this ** a special case when implementing read(). The read() should return the ** number of bytes actually read. If the return value differs from the ** passed count, this is considered an error. ** NOTE: read() is designed so that the POSIX read() routine can be used ** for this vector, if you're loading from disk. */ int __fastcall__ (*read) (int callerdata, void* buffer, unsigned count); int callerdata; /* Parameters set by the loader routine */ void* module; /* Pointer to module data */ unsigned module_size; /* Total size of loaded module */ unsigned module_id; /* Module id */ }; unsigned char __fastcall__ mod_load (struct mod_ctrl* ctrl); /* Load a module into memory and relocate it. The function will return an ** error code (see below). If MLOAD_OK is returned, the outgoing fields in ** the passed mod_ctrl struct contain information about the module just ** loaded. */ void __fastcall__ mod_free (void* module); /* Free a loaded module. Note: The given pointer is the pointer to the ** module memory, not a pointer to a control structure. */ /* Errors */ #define MLOAD_OK 0 /* Module load successful */ #define MLOAD_ERR_READ 1 /* Read error */ #define MLOAD_ERR_HDR 2 /* Header error */ #define MLOAD_ERR_OS 3 /* Wrong OS */ #define MLOAD_ERR_FMT 4 /* Data format error */ #define MLOAD_ERR_MEM 5 /* Not enough memory */ /* End of modload.h */ #endif /*****************************************************************************/ /* */ /* string.h */ /* */ /* String handling */ /* */ /* */ /* */ /* (C) 1998-2014, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _STRING_H #define _STRING_H #include char* __fastcall__ strcat (char* dest, const char* src); char* __fastcall__ strchr (const char* s, int c); int __fastcall__ strcmp (const char* s1, const char* s2); int __fastcall__ strcoll (const char* s1, const char* s2); char* __fastcall__ strcpy (char* dest, const char* src); size_t __fastcall__ strcspn (const char* s1, const char* s2); char* __fastcall__ strerror (int errcode); size_t __fastcall__ strlen (const char* s); char* __fastcall__ strncat (char* s1, const char* s2, size_t count); int __fastcall__ strncmp (const char* s1, const char* s2, size_t count); char* __fastcall__ strncpy (char* dest, const char* src, size_t count); char* __fastcall__ 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 /*****************************************************************************/ /* */ /* 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 PCE are NTSC */ #define get_tv() TV_NTSC /* Return the video mode the machine is using. */ /* End of pce.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 /*****************************************************************************/ /* */ /* 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 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 /*****************************************************************************/ /* */ /* _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 /* 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 /*****************************************************************************/ /* */ /* 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 extern void telestrat_228_200_3_tgi[]; extern void telestrat_240_200_2_tgi[]; /* Referred to by tgi_static_stddrv[] */ /* 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 void oups(); void ping(); void zap(); void shoot(); void explode(); void kbdclick1(); /*****************************************************************************/ /* */ /* 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 /* 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 /*****************************************************************************/ /* */ /* 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 C_TRANSPARENT 0 #define C_BLACK 1 #define C_MED_GREEN 2 #define C_LIGHT_GREEN 3 #define C_DARK_BLUE 4 #define C_LIGHT_BLUE 5 #define C_DARK_RED 6 #define C_CYAN 7 #define C_MED_RED 8 #define C_LIGHT_RED 9 #define C_DARK_YELLOW 10 #define C_LIGHT_YELLOW 11 #define C_DARK_GREEN 12 #define C_MAGENTA 13 #define C_GREY 14 #define C_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(void *a, unsigned char b); #endif /* #ifndef _CVISION_H */ /*****************************************************************************/ /* */ /* _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 (unsigned char) 1 #define DL_JVB (unsigned char) 65 #define DL_BLK1 (unsigned char) 0 #define DL_BLK2 (unsigned char) 16 #define DL_BLK3 (unsigned char) 32 #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) */ #define DL_CHR40x8x1 (unsigned char) 2 /* monochrome, 40 character & 8 scanlines per mode line (GR. 0) */ #define DL_CHR40x10x1 (unsigned char) 3 /* monochrome, 40 character & 10 scanlines per mode line */ #define DL_CHR40x8x4 (unsigned char) 4 /* colour, 40 character & 8 scanlines per mode line (GR. 12) */ #define DL_CHR40x16x4 (unsigned char) 5 /* colour, 40 character & 16 scanlines per mode line (GR. 13) */ #define DL_CHR20x8x2 (unsigned char) 6 /* colour (duochrome per character), 20 character & 8 scanlines per mode line (GR. 1) */ #define DL_CHR20x16x2 (unsigned char) 7 /* colour (duochrome per character), 20 character & 16 scanlines per mode line (GR. 2) */ #define DL_MAP40x8x4 (unsigned char) 8 /* colour, 40 pixel & 8 scanlines per mode line (GR. 3) */ #define DL_MAP80x4x2 (unsigned char) 9 /* 'duochrome', 80 pixel & 4 scanlines per mode line (GR.4) */ #define DL_MAP80x4x4 (unsigned char) 10 /* colour, 80 pixel & 4 scanlines per mode line (GR.5) */ #define DL_MAP160x2x2 (unsigned char) 11 /* 'duochrome', 160 pixel & 2 scanlines per mode line (GR.6) */ #define DL_MAP160x1x2 (unsigned char) 12 /* 'duochrome', 160 pixel & 1 scanline per mode line (GR.14) */ #define DL_MAP160x2x4 (unsigned char) 13 /* 4 colours, 160 pixel & 2 scanlines per mode line (GR.7) */ #define DL_MAP160x1x4 (unsigned char) 14 /* 4 colours, 160 pixel & 1 scanline per mode line (GR.15) */ #define DL_MAP320x1x1 (unsigned char) 15 /* monochrome, 320 pixel & 1 scanline per mode line (GR.8) */ /* modifiers on mode lines */ #define DL_HSCROL(x) (unsigned char)((x) | 16) #define DL_VSCROL(x) (unsigned char)((x) | 32) #define DL_LMS(x) (unsigned char)((x) | 64) /* general modifier */ #define DL_DLI(x) (unsigned char)((x) | 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) /* 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 /* 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 /*****************************************************************************/ /* */ /* 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 /* 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 /* 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*)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 #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 (void* driver); /* Install an already loaded driver. */ void tgi_uninstall (void); /* Uninstall the currently loaded driver but do not unload it. Will call ** tgi_done if necessary. */ void tgi_init (void); /* Initialize the already loaded graphics driver. */ void tgi_done (void); /* End graphics mode, switch back to text mode. Will NOT uninstall or unload ** the driver! */ const tgi_vectorfont* __fastcall__ tgi_load_vectorfont (const char* name); /* Load a vector font into memory and return it. In case of errors, NULL is ** returned and an error is set, which can be retrieved using tgi_geterror. ** To use the font, it has to be installed using tgi_install_vectorfont. */ void __fastcall__ tgi_install_vectorfont (const tgi_vectorfont* font); /* Install a vector font for use. More than one vector font can be loaded, ** but only one can be active. This function is used to tell which one. Call ** with a NULL pointer to uninstall the currently installed font. */ void __fastcall__ tgi_free_vectorfont (const tgi_vectorfont* font); /* Free a vector font that was previously loaded into memory. */ unsigned char tgi_geterror (void); /* Return the error code for the last operation. This will also clear the ** error. */ const char* __fastcall__ tgi_geterrormsg (unsigned char code); /* Get an error message describing the error in code. */ void tgi_clear (void); /* Clear the drawpage. */ unsigned tgi_getpagecount (void); /* Returns the number of screen pages available. */ void __fastcall__ tgi_setviewpage (unsigned char page); /* Set the visible page. Will set an error if the page is not available. */ void __fastcall__ tgi_setdrawpage (unsigned char page); /* Set the drawable page. Will set an error if the page is not available. */ unsigned char tgi_getcolorcount (void); /* Get the number of available colors. */ unsigned char tgi_getmaxcolor (void); /* Return the maximum supported color number (the number of colors would ** then be getmaxcolor()+1). */ void __fastcall__ tgi_setcolor (unsigned char color); /* Set the current drawing color. */ unsigned char tgi_getcolor (void); /* Return the current drawing color. */ void __fastcall__ tgi_setpalette (const unsigned char* palette); /* Set the palette (not available with all drivers/hardware). palette is ** a pointer to as many entries as there are colors. */ const unsigned char* tgi_getpalette (void); /* Return the current palette. */ const unsigned char* tgi_getdefpalette (void); /* Return the default palette. */ unsigned tgi_getxres (void); /* Return the resolution in X direction. */ unsigned tgi_getmaxx (void); /* Return the maximum x coordinate. The resolution in x direction is ** getmaxx() + 1 */ unsigned tgi_getyres (void); /* Return the resolution in Y direction. */ unsigned tgi_getmaxy (void); /* Return the maximum y coordinate. The resolution in y direction is ** getmaxy() + 1 */ unsigned tgi_getaspectratio (void); /* Returns the aspect ratio for the loaded driver. The aspect ratio is an ** 8.8 fixed point value. */ void __fastcall__ tgi_setaspectratio (unsigned aspectratio); /* Set a new aspect ratio for the loaded driver. The aspect ratio is an ** 8.8 fixed point value. */ unsigned char __fastcall__ tgi_getpixel (int x, int y); /* Get the color value of a pixel. */ void __fastcall__ tgi_setpixel (int x, int y); /* Plot a pixel in the current drawing color. */ void __fastcall__ tgi_gotoxy (int x, int y); /* Set the graphics cursor to the given position. */ void __fastcall__ tgi_line (int x1, int y1, int x2, int y2); /* Draw a line in the current drawing color. The graphics cursor will ** be set to x2/y2 by this call. */ void __fastcall__ tgi_lineto (int x2, int y2); /* Draw a line in the current drawing color from the graphics cursor to the ** new end point. The graphics cursor will be updated to x2/y2. */ void __fastcall__ tgi_circle (int x, int y, unsigned char radius); /* Draw a circle in the current drawing color. */ void __fastcall__ tgi_ellipse (int x, int y, unsigned char rx, unsigned char ry); /* Draw a full ellipse with center at x/y and radii rx/ry using the current ** drawing color. */ void __fastcall__ tgi_arc (int x, int y, unsigned char rx, unsigned char ry, unsigned sa, unsigned ea); /* Draw an ellipse arc with center at x/y and radii rx/ry using the current ** drawing color. The arc covers the angle between sa and ea (startangle and ** endangle), which must be in the range 0..360 (otherwise the function may ** bevave unextectedly). */ void __fastcall__ tgi_pieslice (int x, int y, unsigned char rx, unsigned char ry, unsigned sa, unsigned ea); /* Draw an ellipse pie slice with center at x/y and radii rx/ry using the ** current drawing color. The pie slice covers the angle between sa and ea ** (startangle and endangle), which must be in the range 0..360 (otherwise the ** function may behave unextectedly). */ void __fastcall__ tgi_bar (int x1, int y1, int x2, int y2); /* Draw a bar (a filled rectangle) using the current color. */ void __fastcall__ tgi_settextdir (unsigned char dir); /* Set the direction for text output. dir is one of the TGI_TEXT_XXX ** constants. */ void __fastcall__ tgi_settextscale (unsigned width, unsigned height); /* Set the scaling for text output. The scaling factors for width and height ** are 8.8 fixed point values. This means that $100 = 1 $200 = 2 etc. */ void __fastcall__ tgi_settextstyle (unsigned width, unsigned height, unsigned char dir, unsigned char font); /* Set the style for text output. The scaling factors for width and height ** are 8.8 fixed point values. This means that $100 = 1 $200 = 2 etc. ** dir is one of the TGI_TEXT_XXX constants. font is one of the TGI_FONT_XXX ** constants. */ unsigned __fastcall__ tgi_gettextwidth (const char* s); /* Calculate the width of the text in pixels according to the current text ** style. */ unsigned __fastcall__ tgi_gettextheight (const char* s); /* Calculate the height of the text in pixels according to the current text ** style. */ void __fastcall__ tgi_outtext (const char* s); /* Output text at the current graphics cursor position. The graphics cursor ** is moved to the end of the text. */ void __fastcall__ tgi_outtextxy (int x, int y, const char* s); /* Output text at the given cursor position. The graphics cursor is moved to ** the end of the text. */ unsigned __fastcall__ tgi_ioctl (unsigned char code, void* data); /* Call the driver specific control function. What this function does for ** a specific code depends on the driver. The driver will set an error ** for unknown codes or values. */ int __fastcall__ tgi_imulround (int rhs, int lhs); /* Helper function for functions using sine/cosine: Multiply two values, one ** being an 8.8 fixed point one, and return the rounded and scaled result. */ /* End of tgi.h */ #endif /*****************************************************************************/ /* */ /* cbm510.h */ /* */ /* System-specific definitions for the CBM5x0 / P500 */ /* */ /* */ /* */ /* (C) 2001-2013, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _CBM510_H #define _CBM510_H /* Check for errors */ #if !defined(__CBM510__) # error This module may only be used when compiling for the CBM 510! #endif /*****************************************************************************/ /* Data */ /*****************************************************************************/ /* Additional key defines */ #define CH_F1 224 #define CH_F2 225 #define CH_F3 226 #define CH_F4 227 #define CH_F5 228 #define CH_F6 229 #define CH_F7 230 #define CH_F8 231 #define CH_F9 232 #define CH_F10 233 #define CH_F11 234 #define CH_F12 235 #define CH_F13 236 #define CH_F14 237 #define CH_F15 238 #define CH_F16 239 #define CH_F17 240 #define CH_F18 241 #define CH_F19 242 #define CH_F20 243 /* Color defines */ #define COLOR_BLACK 0x00 #define COLOR_WHITE 0x01 #define COLOR_RED 0x02 #define COLOR_CYAN 0x03 #define COLOR_VIOLET 0x04 #define COLOR_PURPLE COLOR_VIOLET #define COLOR_GREEN 0x05 #define COLOR_BLUE 0x06 #define COLOR_YELLOW 0x07 #define COLOR_ORANGE 0x08 #define COLOR_BROWN 0x09 #define COLOR_LIGHTRED 0x0A #define COLOR_GRAY1 0x0B #define COLOR_GRAY2 0x0C #define COLOR_LIGHTGREEN 0x0D #define COLOR_LIGHTBLUE 0x0E #define COLOR_GRAY3 0x0F /* 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) #include <_sid.h> #define SID (*(struct __sid*)0xDA00) #include <_6526.h> #define CIA2 (*(struct __6526*)0xDC00) #include <_6551.h> #define ACIA (*(struct __6551*)0xDD00) #include <_6525.h> #define TPI1 (*(struct __6525*)0xDE00) #define TPI2 (*(struct __6525*)0xDF00) /*****************************************************************************/ /* Variables */ /*****************************************************************************/ /* The addresses of the static drivers */ extern void cbm510_inkwl_mou[]; extern void cbm510_joy_mou[]; /* Referred to by mouse_static_stddrv[] */ extern void cbm510_ram_emd[]; extern void cbm510_std_joy[]; /* Referred to by joy_static_stddrv[] */ extern void cbm510_std_ser[]; /*****************************************************************************/ /* Code */ /*****************************************************************************/ /* Special routines to read/write bytes and words in the system bank */ unsigned char __fastcall__ peekbsys (unsigned addr); unsigned __fastcall__ peekwsys (unsigned addr); void __fastcall__ pokebsys (unsigned addr, unsigned char val); void __fastcall__ pokewsys (unsigned addr, unsigned val); #if defined(__OPT_i__) && (__OPT_i__ >= 600) #define peekbsys(addr) \ __AX__ = (addr), \ __asm__ ("sta ptr1"), \ __asm__ ("stx ptr1+1"), \ __asm__ ("ldx $01"), \ __asm__ ("lda #$0F"), \ __asm__ ("sta $01"), \ __asm__ ("ldy #$00"), \ __asm__ ("lda (ptr1),y"), \ __asm__ ("stx $01"), \ __asm__ ("ldx #$00"), \ __AX__ #endif /* End of cbm510.h */ #endif /*****************************************************************************/ /* */ /* atari_atascii_charmap.h */ /* */ /* Atari system standard string mapping (ISO-8859-1 -> AtASCII) */ /* */ /* */ /* */ /* (C) 2016 Christian Krueger */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ /* No include guard here! Multiple use in one file may be intentional. */ #pragma charmap (0x00, 0x00) #pragma charmap (0x01, 0x01) #pragma charmap (0x02, 0x02) #pragma charmap (0x03, 0x03) #pragma charmap (0x04, 0x04) #pragma charmap (0x05, 0x05) #pragma charmap (0x06, 0x06) #pragma charmap (0x07, 0xFD) #pragma charmap (0x08, 0x08) #pragma charmap (0x09, 0x7F) #pragma charmap (0x0A, 0x9B) #pragma charmap (0x0B, 0x0B) #pragma charmap (0x0C, 0x7D) #pragma charmap (0x0D, 0x0D) #pragma charmap (0x0E, 0x0E) #pragma charmap (0x0F, 0x0F) #pragma charmap (0x10, 0x10) #pragma charmap (0x11, 0x11) #pragma charmap (0x12, 0x12) #pragma charmap (0x13, 0x13) #pragma charmap (0x14, 0x14) #pragma charmap (0x15, 0x15) #pragma charmap (0x16, 0x16) #pragma charmap (0x17, 0x17) #pragma charmap (0x18, 0x18) #pragma charmap (0x19, 0x19) #pragma charmap (0x1A, 0x1A) #pragma charmap (0x1B, 0x1B) #pragma charmap (0x1C, 0x1C) #pragma charmap (0x1D, 0x1D) #pragma charmap (0x1E, 0x1E) #pragma charmap (0x1F, 0x1F) #pragma charmap (0x20, 0x20) #pragma charmap (0x21, 0x21) #pragma charmap (0x22, 0x22) #pragma charmap (0x23, 0x23) #pragma charmap (0x24, 0x24) #pragma charmap (0x25, 0x25) #pragma charmap (0x26, 0x26) #pragma charmap (0x27, 0x27) #pragma charmap (0x28, 0x28) #pragma charmap (0x29, 0x29) #pragma charmap (0x2A, 0x2A) #pragma charmap (0x2B, 0x2B) #pragma charmap (0x2C, 0x2C) #pragma charmap (0x2D, 0x2D) #pragma charmap (0x2E, 0x2E) #pragma charmap (0x2F, 0x2F) #pragma charmap (0x30, 0x30) #pragma charmap (0x31, 0x31) #pragma charmap (0x32, 0x32) #pragma charmap (0x33, 0x33) #pragma charmap (0x34, 0x34) #pragma charmap (0x35, 0x35) #pragma charmap (0x36, 0x36) #pragma charmap (0x37, 0x37) #pragma charmap (0x38, 0x38) #pragma charmap (0x39, 0x39) #pragma charmap (0x3A, 0x3A) #pragma charmap (0x3B, 0x3B) #pragma charmap (0x3C, 0x3C) #pragma charmap (0x3D, 0x3D) #pragma charmap (0x3E, 0x3E) #pragma charmap (0x3F, 0x3F) #pragma charmap (0x40, 0x40) #pragma charmap (0x41, 0x41) #pragma charmap (0x42, 0x42) #pragma charmap (0x43, 0x43) #pragma charmap (0x44, 0x44) #pragma charmap (0x45, 0x45) #pragma charmap (0x46, 0x46) #pragma charmap (0x47, 0x47) #pragma charmap (0x48, 0x48) #pragma charmap (0x49, 0x49) #pragma charmap (0x4A, 0x4A) #pragma charmap (0x4B, 0x4B) #pragma charmap (0x4C, 0x4C) #pragma charmap (0x4D, 0x4D) #pragma charmap (0x4E, 0x4E) #pragma charmap (0x4F, 0x4F) #pragma charmap (0x50, 0x50) #pragma charmap (0x51, 0x51) #pragma charmap (0x52, 0x52) #pragma charmap (0x53, 0x53) #pragma charmap (0x54, 0x54) #pragma charmap (0x55, 0x55) #pragma charmap (0x56, 0x56) #pragma charmap (0x57, 0x57) #pragma charmap (0x58, 0x58) #pragma charmap (0x59, 0x59) #pragma charmap (0x5A, 0x5A) #pragma charmap (0x5B, 0x5B) #pragma charmap (0x5C, 0x5C) #pragma charmap (0x5D, 0x5D) #pragma charmap (0x5E, 0x5E) #pragma charmap (0x5F, 0x5F) #pragma charmap (0x60, 0x60) #pragma charmap (0x61, 0x61) #pragma charmap (0x62, 0x62) #pragma charmap (0x63, 0x63) #pragma charmap (0x64, 0x64) #pragma charmap (0x65, 0x65) #pragma charmap (0x66, 0x66) #pragma charmap (0x67, 0x67) #pragma charmap (0x68, 0x68) #pragma charmap (0x69, 0x69) #pragma charmap (0x6A, 0x6A) #pragma charmap (0x6B, 0x6B) #pragma charmap (0x6C, 0x6C) #pragma charmap (0x6D, 0x6D) #pragma charmap (0x6E, 0x6E) #pragma charmap (0x6F, 0x6F) #pragma charmap (0x70, 0x70) #pragma charmap (0x71, 0x71) #pragma charmap (0x72, 0x72) #pragma charmap (0x73, 0x73) #pragma charmap (0x74, 0x74) #pragma charmap (0x75, 0x75) #pragma charmap (0x76, 0x76) #pragma charmap (0x77, 0x77) #pragma charmap (0x78, 0x78) #pragma charmap (0x79, 0x79) #pragma charmap (0x7A, 0x7A) #pragma charmap (0x7B, 0x7B) #pragma charmap (0x7C, 0x7C) #pragma charmap (0x7D, 0x7D) #pragma charmap (0x7E, 0x7E) #pragma charmap (0x7F, 0x7F) #pragma charmap (0x80, 0x80) #pragma charmap (0x81, 0x81) #pragma charmap (0x82, 0x82) #pragma charmap (0x83, 0x83) #pragma charmap (0x84, 0x84) #pragma charmap (0x85, 0x85) #pragma charmap (0x86, 0x86) #pragma charmap (0x87, 0x87) #pragma charmap (0x88, 0x88) #pragma charmap (0x89, 0x89) #pragma charmap (0x8A, 0x8A) #pragma charmap (0x8B, 0x8B) #pragma charmap (0x8C, 0x8C) #pragma charmap (0x8D, 0x8D) #pragma charmap (0x8E, 0x8E) #pragma charmap (0x8F, 0x8F) #pragma charmap (0x90, 0x90) #pragma charmap (0x91, 0x91) #pragma charmap (0x92, 0x92) #pragma charmap (0x93, 0x93) #pragma charmap (0x94, 0x94) #pragma charmap (0x95, 0x95) #pragma charmap (0x96, 0x96) #pragma charmap (0x97, 0x97) #pragma charmap (0x98, 0x98) #pragma charmap (0x99, 0x99) #pragma charmap (0x9A, 0x9A) #pragma charmap (0x9B, 0x9B) #pragma charmap (0x9C, 0x9C) #pragma charmap (0x9D, 0x9D) #pragma charmap (0x9E, 0x9E) #pragma charmap (0x9F, 0x9F) #pragma charmap (0xA0, 0xA0) #pragma charmap (0xA1, 0xA1) #pragma charmap (0xA2, 0xA2) #pragma charmap (0xA3, 0xA3) #pragma charmap (0xA4, 0xA4) #pragma charmap (0xA5, 0xA5) #pragma charmap (0xA6, 0xA6) #pragma charmap (0xA7, 0xA7) #pragma charmap (0xA8, 0xA8) #pragma charmap (0xA9, 0xA9) #pragma charmap (0xAA, 0xAA) #pragma charmap (0xAB, 0xAB) #pragma charmap (0xAC, 0xAC) #pragma charmap (0xAD, 0xAD) #pragma charmap (0xAE, 0xAE) #pragma charmap (0xAF, 0xAF) #pragma charmap (0xB0, 0xB0) #pragma charmap (0xB1, 0xB1) #pragma charmap (0xB2, 0xB2) #pragma charmap (0xB3, 0xB3) #pragma charmap (0xB4, 0xB4) #pragma charmap (0xB5, 0xB5) #pragma charmap (0xB6, 0xB6) #pragma charmap (0xB7, 0xB7) #pragma charmap (0xB8, 0xB8) #pragma charmap (0xB9, 0xB9) #pragma charmap (0xBA, 0xBA) #pragma charmap (0xBB, 0xBB) #pragma charmap (0xBC, 0xBC) #pragma charmap (0xBD, 0xBD) #pragma charmap (0xBE, 0xBE) #pragma charmap (0xBF, 0xBF) #pragma charmap (0xC0, 0xC0) #pragma charmap (0xC1, 0xC1) #pragma charmap (0xC2, 0xC2) #pragma charmap (0xC3, 0xC3) #pragma charmap (0xC4, 0xC4) #pragma charmap (0xC5, 0xC5) #pragma charmap (0xC6, 0xC6) #pragma charmap (0xC7, 0xC7) #pragma charmap (0xC8, 0xC8) #pragma charmap (0xC9, 0xC9) #pragma charmap (0xCA, 0xCA) #pragma charmap (0xCB, 0xCB) #pragma charmap (0xCC, 0xCC) #pragma charmap (0xCD, 0xCD) #pragma charmap (0xCE, 0xCE) #pragma charmap (0xCF, 0xCF) #pragma charmap (0xD0, 0xD0) #pragma charmap (0xD1, 0xD1) #pragma charmap (0xD2, 0xD2) #pragma charmap (0xD3, 0xD3) #pragma charmap (0xD4, 0xD4) #pragma charmap (0xD5, 0xD5) #pragma charmap (0xD6, 0xD6) #pragma charmap (0xD7, 0xD7) #pragma charmap (0xD8, 0xD8) #pragma charmap (0xD9, 0xD9) #pragma charmap (0xDA, 0xDA) #pragma charmap (0xDB, 0xDB) #pragma charmap (0xDC, 0xDC) #pragma charmap (0xDD, 0xDD) #pragma charmap (0xDE, 0xDE) #pragma charmap (0xDF, 0xDF) #pragma charmap (0xE0, 0xE0) #pragma charmap (0xE1, 0xE1) #pragma charmap (0xE2, 0xE2) #pragma charmap (0xE3, 0xE3) #pragma charmap (0xE4, 0xE4) #pragma charmap (0xE5, 0xE5) #pragma charmap (0xE6, 0xE6) #pragma charmap (0xE7, 0xE7) #pragma charmap (0xE8, 0xE8) #pragma charmap (0xE9, 0xE9) #pragma charmap (0xEA, 0xEA) #pragma charmap (0xEB, 0xEB) #pragma charmap (0xEC, 0xEC) #pragma charmap (0xED, 0xED) #pragma charmap (0xEE, 0xEE) #pragma charmap (0xEF, 0xEF) #pragma charmap (0xF0, 0xF0) #pragma charmap (0xF1, 0xF1) #pragma charmap (0xF2, 0xF2) #pragma charmap (0xF3, 0xF3) #pragma charmap (0xF4, 0xF4) #pragma charmap (0xF5, 0xF5) #pragma charmap (0xF6, 0xF6) #pragma charmap (0xF7, 0xF7) #pragma charmap (0xF8, 0xF8) #pragma charmap (0xF9, 0xF9) #pragma charmap (0xFA, 0xFA) #pragma charmap (0xFB, 0xFB) #pragma charmap (0xFC, 0xFC) #pragma charmap (0xFD, 0xFD) #pragma charmap (0xFE, 0xFE) #pragma charmap (0xFF, 0xFF) /*****************************************************************************/ /* */ /* em-kernel.h */ /* */ /* Internally used EM functions */ /* */ /* */ /* */ /* (C) 2002-2003 Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _EM_KERNEL_H #define _EM_KERNEL_H /*****************************************************************************/ /* Data */ /*****************************************************************************/ /* A structure that describes the header of an extended memory driver loaded ** into memory. */ typedef struct { /* Driver header */ char id[3]; /* Contains 0x65, 0x6d, 0x64 ("emd") */ unsigned char version; /* Interface version */ void* libreference; /* Library reference */ /* Jump vectors. Note that these are not C callable */ void* install; /* INSTALL routine */ void* deinstall; /* DEINSTALL routine */ void* pagecount; /* PAGECOUNT routine */ void* map; /* MAP routine */ void* use; /* USE routine */ void* mapclean; /* MAPCLEAN routine */ void* copyfrom; /* COPYFROM routine */ void* copyto; /* COPYTO routine */ } em_drv_header; /* EM kernel variables */ extern em_drv_header* em_drv; /* Pointer to driver */ /* End of em-kernel.h */ #endif /*****************************************************************************/ /* */ /* mouse-kernel.h */ /* */ /* Internally used mouse functions */ /* */ /* */ /* */ /* (C) 2003-2006, Ullrich von Bassewitz */ /* 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 #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(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 #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 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 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 /* GEOS dialog box functions by Maciej 'YTM/Elysium' Witkowiak */ #ifndef _GDLGBOX_H #define _GDLGBOX_H char __fastcall__ DoDlgBox(const char *dboxstring); char RstrFrmDialogue(void); /* These are custom, predefined dialog boxes, I'm sure you'll find them usable Most of them show 2 lines of text */ char __fastcall__ DlgBoxYesNo(const char *line1, const char *line2); char __fastcall__ DlgBoxOkCancel(const char *line1, const char *line2); void __fastcall__ DlgBoxOk(const char *line1, const char *line2); char __fastcall__ DlgBoxGetString(char *myString, char strLength, const char *line1, const char *line2); char __fastcall__ DlgBoxFileSelect(const char *classtxt, char ftype, char *fname); /* This is a more general dialog box, works like printf in a window */ char MessageBox(char mode, const char *format, ...); /* mode argument for MessageBox() */ enum { MB_EMPTY=0, MB_OK, MB_OKCANCEL, MB_YESNO, MB_LAST }; /* Now the command string type */ typedef void dlgBoxStr; /* and command string commands - macros */ #define DB_DEFPOS(pattern) (char)(DEF_DB_POS | (pattern)) #define DB_SETPOS(pattern,top,bot,left,right) \ (char)(SET_DB_POS | (pattern)), (char)(top), (char)(bot), \ (unsigned)(left), (unsigned)(right) #define DB_ICON(i,x,y) (char)(i), (char)(x), (char)(y) #define DB_TXTSTR(x,y,text) (char)DBTXTSTR, (char)(x), (char)(y), (text) #define DB_VARSTR(x,y,ptr) (char)DBVARSTR, (char)(x), (char)(y), (char)(ptr) #define DB_GETSTR(x,y,ptr,length) (char)DBGETSTRING, (char)(x), (char)(y), (char)(ptr), (char)(length) #define DB_SYSOPV(ptr) (char)DBSYSOPV, (unsigned)(ptr) #define DB_GRPHSTR(ptr) (char)DBGRPHSTR, (unsigned)(ptr) #define DB_GETFILES(x,y) (char)DBGETFILES, (char)(x), (char)(y) #define DB_OPVEC(ptr) (char)DBOPVEC, (unsigned)(ptr) #define DB_USRICON(x,y,ptr) (char)DBUSRICON, (char)(x), (char)(y), (unsigned)(ptr) #define DB_USRROUT(ptr) (char)DB_USR_ROUT, (unsigned)(ptr) #define DB_END (char)NULL /* part of constants below is used internally, but some are useful for macros above */ /* icons for DB_ICON */ #define OK 1 #define CANCEL 2 #define YES 3 #define NO 4 #define OPEN 5 #define DISK 6 /* commands - internally used by command macros */ #define DBTXTSTR 11 #define DBVARSTR 12 #define DBGETSTRING 13 #define DBSYSOPV 14 #define DBGRPHSTR 15 #define DBGETFILES 16 #define DBOPVEC 17 #define DBUSRICON 18 #define DB_USR_ROUT 19 /* icons tabulation in standard window */ #define DBI_X_0 1 #define DBI_X_1 9 #define DBI_X_2 17 #define DBI_Y_0 8 #define DBI_Y_1 40 #define DBI_Y_2 72 /* standard window size defaults */ #define SET_DB_POS 0 #define DEF_DB_POS 0x80 #define DEF_DB_TOP 32 #define DEF_DB_BOT 127 #define DEF_DB_LEFT 64 #define DEF_DB_RIGHT 255 /* text tabulation in standard window */ #define TXT_LN_1_Y 16 #define TXT_LN_2_Y 32 #define TXT_LN_3_Y 48 #define TXT_LN_4_Y 64 #define TXT_LN_5_Y 80 #define TXT_LN_X 16 /* system icons size */ #define SYSDBI_HEIGHT 16 #define SYSDBI_WIDTH 6 /* dialogbox string offsets */ #define OFF_DB_FORM 0 #define OFF_DB_TOP 1 #define OFF_DB_BOT 2 #define OFF_DB_LEFT 3 #define OFF_DB_RIGHT 5 #define OFF_DB_1STCMD 7 #endif /* GEOS system addresses and locations reassembled by Maciej 'YTM/Elysium' Witkowiak */ #ifndef _GSYM_H #define _GSYM_H #include #define r0 (*(unsigned*)(R_BASE + 0x00)) #define r0L (*(char*)(R_BASE + 0x00)) #define r0H (*(char*)(R_BASE + 0x01)) #define r1 (*(unsigned*)(R_BASE + 0x02)) #define r1L (*(char*)(R_BASE + 0x02)) #define r1H (*(char*)(R_BASE + 0x03)) #define drawWindow (*(struct window*)(R_BASE + 0x04)) #define r2 (*(unsigned*)(R_BASE + 0x04)) #define r2L (*(char*)(R_BASE + 0x04)) #define r2H (*(char*)(R_BASE + 0x05)) #define r3 (*(unsigned*)(R_BASE + 0x06)) #define r3L (*(char*)(R_BASE + 0x06)) #define r3H (*(char*)(R_BASE + 0x07)) #define r4 (*(unsigned*)(R_BASE + 0x08)) #define r4L (*(char*)(R_BASE + 0x08)) #define r4H (*(char*)(R_BASE + 0x09)) #define r5 (*(unsigned*)(R_BASE + 0x0a)) #define r5L (*(char*)(R_BASE + 0x0a)) #define r5H (*(char*)(R_BASE + 0x0b)) #define r6 (*(unsigned*)(R_BASE + 0x0c)) #define r6L (*(char*)(R_BASE + 0x0c)) #define r6H (*(char*)(R_BASE + 0x0d)) #define r7 (*(unsigned*)(R_BASE + 0x0e)) #define r7L (*(char*)(R_BASE + 0x0e)) #define r7H (*(char*)(R_BASE + 0x0f)) #define r8 (*(unsigned*)(R_BASE + 0x10)) #define r8L (*(char*)(R_BASE + 0x10)) #define r8H (*(char*)(R_BASE + 0x11)) #define r9 (*(unsigned*)(R_BASE + 0x12)) #define r9L (*(char*)(R_BASE + 0x12)) #define r9H (*(char*)(R_BASE + 0x13)) #define r10 (*(unsigned*)(R_BASE + 0x14)) #define r10L (*(char*)(R_BASE + 0x14)) #define r10H (*(char*)(R_BASE + 0x15)) #define r11 (*(unsigned*)(R_BASE + 0x16)) #define r11L (*(char*)(R_BASE + 0x16)) #define r11H (*(char*)(R_BASE + 0x17)) #define r12 (*(unsigned*)(R_BASE + 0x18)) #define r12L (*(char*)(R_BASE + 0x18)) #define r12H (*(char*)(R_BASE + 0x19)) #define r13 (*(unsigned*)(R_BASE + 0x1a)) #define r13L (*(char*)(R_BASE + 0x1a)) #define r13H (*(char*)(R_BASE + 0x1b)) #define r14 (*(unsigned*)(R_BASE + 0x1c)) #define r14L (*(char*)(R_BASE + 0x1c)) #define r14H (*(char*)(R_BASE + 0x1d)) #define r15 (*(unsigned*)(R_BASE + 0x1e)) #define r15L (*(char*)(R_BASE + 0x1e)) #define r15H (*(char*)(R_BASE + 0x1f)) #ifdef __GEOS_CBM__ #define nameBuf char[17] #define blockBuf char[256] #define CPU_DDR (*(char*)0x00) #define CPU_DATA (*(char*)0x01) #define R_BASE 0x02 #define curPattern (*(unsigned*)0x22) #define string (*(unsigned*)0x24) #define curFontDesc (*(struct fontdesc*)0x26) #define currentMode (*(char*)0x2e) #define dispBufferOn (*(char*)0x2f) #define mouseOn (*(char*)0x30) #define msePicPtr (*(unsigned*)0x31) #define curWindow (*(struct window*)0x33) #define pressFlag (*(char*)0x39) #define mousePos (*(struct pixel*)0x3a) #define returnAddress (*(unsigned*)0x3d) #define graphMode (*(char*)0x3f) #define STATUS (*(char*)0x90) #define curDevice (*(char*)0xba) #define irqvec (*(void_func*)0x0314) #define bkvec (*(void_func*)0x0316) #define nmivec (*(void_func*)0x0318) #define APP_RAM ((char*)0x0400) #define BACK_SCR_BASE ((char*)0x6000) #define PRINTBASE ((char*)0x7900) #define OS_VARS ((char*)0x8000) #define diskBlkBuf ((blockBuf)0x8000) #define fileHeader (*(struct fileheader*)0x8100) #define curDirHead ((blockBuf)0x8200) #define fileTrScTab ((struct tr_se[128])0x8300) #define dirEntryBuf (*(struct filehandle*)0x8400) #define DrACurDkNm ((nameBuf)0x841e) #define DrBCurDkNm ((nameBuf)0x8430) #define dataFileName ((nameBuf)0x8442) #define dataDiskName ((nameBuf)0x8453) #define PrntFileName ((nameBuf)0x8465) #define PrntDiskName ((nameBuf)0x8476) #define curDrive (*(char*)0x8489) #define diskOpenFlg (*(char*)0x848a) #define isGEOS (*(char*)0x848b) #define interleave (*(char*)0x848c) #define NUMDRV (*(char*)0x848d) #define driveType ((char[4])0x848e) #define turboFlags ((char[4])0x8492) #define VLIRInfo (*(struct VLIR_info*)0x8496) #define appMain (*(void_func*)0x849b) #define intTopVector (*(void_func*)0x849d) #define intBotVector (*(void_func*)0x849f) #define mouseVector (*(void_func*)0x84a1) #define keyVector (*(void_func*)0x84a3) #define inputVector (*(void_func*)0x84a5) #define mouseFaultVec (*(void_func*)0x84a7) #define otherPressVec (*(void_func*)0x84a9) #define StringFaultVec (*(void_func*)0x84ab) #define alarmTmtVector (*(void_func*)0x84ad) #define BRKVector (*(void_func*)0x84af) #define RecoverVector (*(void_func*)0x84b1) #define selectionFlash (*(char*)0x84b3) #define alphaFlag (*(char*)0x84b4) #define iconSelFlg (*(char*)0x84b5) #define faultData (*(char*)0x84b6) #define menuNumber (*(char*)0x84b7) #define mouseWindow (*(struct window*)0x84b8) #define stringXY (*(struct pixel*)0x84be) #define mousePicData (*(char*)0x84c1) #define maxMouseSpeed (*(char*)0x8501) #define minMouseSpeed (*(char*)0x8502) #define mouseAccel (*(char*)0x8503) #define keyData (*(char*)0x8504) #define mouseData (*(char*)0x8505) #define inputData (*(char*)0x8506) #define mouseSpeed (*(char*)0x8507) #define random (*(char*)0x850a) #define saveFontTab (*(struct fontdesc*)0x850c) #define dblClickCount (*(char*)0x8515) #define system_date (*(struct s_date*)0x8516) #define alarmSetFlag (*(char*)0x851c) #define sysDBData (*(char*)0x851d) #define screencolors (*(char*)0x851e) #define dlgBoxRamBuf (*(char*)0x851f) #define savedmoby2 (*(char*)0x88bb) #define scr80polar (*(char*)0x88bc) #define scr80colors (*(char*)0x88bd) #define vdcClrMode (*(char*)0x88be) #define driveData ((char[4])0x88bf) #define ramExpSize (*(char*)0x88c3) #define sysRAMFlg (*(char*)0x88c4) #define firstBoot (*(char*)0x88c5) #define curType (*(char*)0x88c6) #define ramBase (*(char*)0x88c7) #define inputDevName ((nameBuf)0x88cb) #define DrCCurDkNm ((nameBuf)0x88dc) #define DrDCurDkNm ((nameBuf)0x88ee) #define dir2Head ((blockBuf)0x8900) #define SPRITE_PICS ((char*)0x8a00) #define sprpic ((char[8][64])0x8a00) #define COLOR_MATRIX ((char[1000])0x8c00) #define objPointer ((char[8])0x8ff8) #define DISK_BASE ((char*)0x9000) #define SCREEN_BASE ((char*)0xa000) #define OS_ROM ((char*)0xc000) #define OS_JUMPTAB ((char*)0xc100) #define EXP_BASE ((char*)0xdf00) #define MOUSE_BASE_128 ((char*)0xfd00) #define MOUSE_JMP_128 ((char*)0xfd00) #define END_MOUSE_128 ((char*)0xfe80) #define MOUSE_BASE ((char*)0xfe80) #define MOUSE_JMP ((char*)0xfe80) #define config (*(char*)0xff00) #define END_MOUSE ((char*)0xfffa) #define NMI_VECTOR (*(void_func*)0xfffa) #define RESET_VECTOR (*(void_func*)0xfffc) #define IRQ_VECTOR (*(void_func*)0xfffe) #define vicbase ((char*)0xd000) #define sidbase ((char*)0xd400) #define mmu ((char*)0xd500) #define VDC ((char*)0xd600) #define ctab ((char*)0xd800) #define cia1base ((char*)0xdc00) #define cia2base ((char*)0xdd00) #define mob0xpos (*(char*)0xd000) #define mob0ypos (*(char*)0xd001) #define mob1xpos (*(char*)0xd002) #define mob1ypos (*(char*)0xd003) #define mob2xpos (*(char*)0xd004) #define mob2ypos (*(char*)0xd005) #define mob3xpos (*(char*)0xd006) #define mob3ypos (*(char*)0xd007) #define mob4xpos (*(char*)0xd008) #define mob4ypos (*(char*)0xd009) #define mob5xpos (*(char*)0xd00a) #define mob5ypos (*(char*)0xd00b) #define mob6xpos (*(char*)0xd00c) #define mob6ypos (*(char*)0xd00d) #define mob7xpos (*(char*)0xd00e) #define mob7ypos (*(char*)0xd00f) #define msbxpos (*(char*)0xd010) #define grcntrl1 (*(char*)0xd011) #define rasreg (*(char*)0xd012) #define lpxpos (*(char*)0xd013) #define lpypos (*(char*)0xd014) #define mobenble (*(char*)0xd015) #define grcntrl2 (*(char*)0xd016) #define grmemptr (*(char*)0xd018) #define grirq (*(char*)0xd019) #define grirqen (*(char*)0xd01a) #define moby2 (*(char*)0xd017) #define mobprior (*(char*)0xd01b) #define mobmcm (*(char*)0xd01c) #define mobx2 (*(char*)0xd01d) #define mobmobcol (*(char*)0xd01e) #define mobbakcol (*(char*)0xd01f) #define extclr (*(char*)0xd020) #define bakclr0 (*(char*)0xd021) #define bakclr1 (*(char*)0xd022) #define bakclr2 (*(char*)0xd023) #define bakclr3 (*(char*)0xd024) #define mcmclr0 (*(char*)0xd025) #define mcmclr1 (*(char*)0xd026) #define mob0clr (*(char*)0xd027) #define mob1clr (*(char*)0xd028) #define mob2clr (*(char*)0xd029) #define mob3clr (*(char*)0xd02a) #define mob4clr (*(char*)0xd02b) #define mob5clr (*(char*)0xd02c) #define mob6clr (*(char*)0xd02d) #define mob7clr (*(char*)0xd02e) #define keyreg (*(char*)0xd02f) #define clkreg (*(char*)0xd030) #define vdcreg (*(char*)0xd600) #define vdcdata (*(char*)0xd601) #else /* #ifdef __GEOS_CBM__ */ #define nameBuf char[16] #define blockBuf char[512] #define R_BASE 0x00 #define curPattern (*(unsigned*)0x022c) #define string (*(unsigned*)0x53) #define curFontDesc (*(struct fontdesc*)0x0218) #define currentMode (*(char*)0x021c) #define dispBufferOn (*(char*)0x021d) #define mouseOn (*(char*)0x5d) #define curWindow (*(struct window*)0x021e) #define pressFlag (*(char*)0x08fe) #define mousePos (*(struct pixel*)0x0241) #define returnAddress (*(unsigned*)0x64) #define diskBlkBuf ((blockBuf)0xf659) #define fileHeader (*(struct fileheader*)0xf859) #define curDirHead ((char[39])0xfa80) #define dirEntryBuf (*(struct filehandle*)0xfa59) #define DrACurDkNm ((nameBuf)0xfaa7) #define DrBCurDkNm ((nameBuf)0xfab7) #define dataFileName ((nameBuf)0x02a4) #define dataDiskName ((nameBuf)0x02b4) #define PrntFileName ((nameBuf)0x08ac) #define curDrive (*(char*)0xf60d) #define diskOpenFlg (*(char*)0xf617) #define NUMDRV (*(char*)0xf60e) #define driveType ((char[4])0xfaf3) #define VLIRInfo (*(struct VLIR_info*)0xf618) #define appMain (*(void_func*)0x0200) #define intTopVector (*(void_func*)0x0202) #define intBotVector (*(void_func*)0x0204) #define mouseVector (*(void_func*)0x0206) #define keyVector (*(void_func*)0x0208) #define inputVector (*(void_func*)0x020a) #define mouseFaultVec (*(void_func*)0x020c) #define otherPressVec (*(void_func*)0x020e) #define StringFaultVec (*(void_func*)0x0210) #define alarmTmtVector (*(void_func*)0x0212) #define BRKVector (*(void_func*)0x0214) #define RecoverVector (*(void_func*)0x0216) #define selectionFlash (*(char*)0x0224) #define alphaFlag (*(char*)0x0225) #define iconSelFlg (*(char*)0x0226) #define faultData (*(char*)0x0227) #define menuNumber (*(char*)0x0228) #define mouseWindow (*(struct window*)0x57) #define stringXY (*(struct pixel*)0x022e) #define maxMouseSpeed (*(char*)0x027d) #define minMouseSpeed (*(char*)0x027e) #define mouseAccel (*(char*)0x027f) #define keyData (*(char*)0x0245) #define mouseData (*(char*)0x0246) #define inputData (*(char*)0x0247) #define random (*(char*)0x024c) #define saveFontTab (*(struct fontdesc*)0x024e) #define dblClickCount (*(char*)0x0258) #define system_date (*(struct s_date*)0xf200) #define sysDBData (*(char*)0x0259) #define dlgBoxRamBuf (*(char*)0xf381) #define firstBoot (*(char*)0x0281) #define inputDevName ((nameBuf)0x08cc) #define DrCCurDkNm ((nameBuf)0xfac7) #define DrDCurDkNm ((nameBuf)0xfad7) #define mobenble (*(char*)0x0818) #define moby2 (*(char*)0x081a) #define mobx2 (*(char*)0x0819) #endif /* #ifdef __GEOS_CBM__ */ #endif /* GEOS filesystem functions by Maciej 'YTM/Elysium' Witkowiak */ #ifndef _GFILE_H #define _GFILE_H #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 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 structs by Maciej 'YTM/Elysium' Witkowiak */ /* apart from initializing data, structures below can be used to speed up access to data and let cc65 to generate better code e.g. if you have menu defined as TopMenu and you want to change the number of menu items use: ((struct menu*)&TopMenu)->number=newNumber; This will be translated into single lda/sta pair */ #ifndef _GSTRUCT_H #define _GSTRUCT_H typedef void (*void_func) (void); struct s_date { /* system date & time */ char s_year; char s_month; char s_day; char s_hour; char s_minutes; char s_seconds; }; struct tr_se { /* track and sector */ char track; char sector; }; struct fileheader { /* header block (like fileHeader) */ struct tr_se n_block; char icon_desc[3]; char icon_pic[63]; char dostype; char type; char structure; unsigned load_address; unsigned end_address; unsigned exec_address; char class_name[19]; char column_flag; char author[63]; char note[96]; }; #ifdef __GEOS_CBM__ struct f_date { /* date in filedesctiptor */ char f_year; char f_month; char f_day; char f_hour; char f_minute; }; struct filehandle { /* filehandle in directory sectors */ char dostype; /* or in dirEntryBuf */ struct tr_se n_block; char name[16]; struct tr_se header; char structure; char type; struct f_date date; unsigned size; }; #else /* #ifdef __GEOS_CBM__ */ struct f_date { /* date in filedesctiptor */ unsigned f_day:5; unsigned f_month:4; unsigned f_year:7; char f_minute; char f_hour; }; struct filehandle { /* filehandle in directory sectors */ unsigned name_len:4; /* or in dirEntryBuf */ unsigned structure:4; char name[15]; char type; struct tr_se n_block; unsigned size; char byte_size[3]; struct f_date date; char version; char min_version; char access; struct tr_se header; struct f_date mod_date; struct tr_se dir_head; }; #endif /* #ifdef __GEOS_CBM__ */ struct pixel { /* describes point */ unsigned x; char y; }; struct fontdesc { /* describes font */ char baseline; char width; char height; char *index_tbl; char *data_ptr; }; struct window { /* describes screen region */ char top; char bot; unsigned left; unsigned right; }; struct VLIR_info { /* VLIR information */ char curRecord; /* currently only used in VLIR */ char usedRecords; /* as system info (curRecord is mainly of your interest */ char fileWritten; unsigned fileSize; }; struct process { /* process info, declare table of that type */ unsigned pointer; /* (like: struct process proctab[2]=... */ unsigned jiffies; /* last entry HAVE TO BE {0,0} */ }; struct iconpic { /* icon/encoded bitmap description */ char *pic_ptr; /* ptr to a photo scrap (or encoded bitmap) */ char x; /* position in cards (*8 pixels) */ char y; char width; /* in cards */ char heigth; /* in lines (pixels) */ }; struct icondef { /* icon definition for DoIcons */ char *pic_ptr; /* ptr to a photo scrap (or encoded bitmap) */ char x; /* position in cards (*8 pixels) */ char y; char width; /* of icon (in cards) */ char heigth; /* of icon in lines (pixels) */ unsigned proc_ptr; /* pointer to function handling that icon */ }; struct icontab { char number; /* number of declared icons */ struct pixel mousepos; /* position of mouse after DoIcons */ struct icondef tab[]; /* table of size declared by icontab.number */ }; struct menuitem { char *name; char type; void *rest; /* may be ptr to function, or ptr to struct menu (submenu) */ }; struct menu { struct window size; char number; struct menuitem items[]; }; struct inittab { /* use struct inittab mytab[n] for initram */ unsigned ptr; /* ptr to 1st byte */ char number; /* number of following bytes */ char values[]; /* actual string of bytes */ }; #endif /* GEOS system functions by Maciej 'YTM/Elysium' Witkowiak */ #ifndef _GSYS_H #define _GSYS_H void FirstInit(void); void InitForIO(void); void DoneWithIO(void); void MainLoop(void); void EnterDeskTop(void); void ToBASIC(void); void Panic(void); void __fastcall__ CallRoutine(void *myRoutine); unsigned GetSerialNumber(void); char GetRandom(void); void __fastcall__ SetDevice(char newdev); char get_ostype(void); /* possible return values of get_ostype, machine and version flags will be combined with OR */ /* machine flags */ #define GEOS64 0x00 #define GEOS4 0x04 /* plus4 geos is not or'ed with version */ #define GEOS128 0x80 /* version flags */ #define MEGAPATCH3 0x03 #define GATEWAY 0x08 #define GEOS_V10 0x10 #define GEOS_V11 0x11 #define GEOS_V12 0x12 #define GEOS_V13 0x13 #define GEOS_V15 0x15 #define GEOS_V20 0x20 #define WHEELS 0x40 /* only Wheels? */ char get_tv(void); /* possible return values of get_tv, these flags will be combined note that columns state can be changed during runtime and get_tv always returns the current state */ #define COLUMNS40 0x00 #define COLUMNS80 0x01 #define TV_PAL 0x00 #define TV_NTSC 0x80 #endif /*****************************************************************************/ /* */ /* utsname.h */ /* */ /* Return system information */ /* */ /* */ /* */ /* (C) 2003 Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _UTSNAME_H #define _UTSNAME_H /*****************************************************************************/ /* Data */ /*****************************************************************************/ /* ** Suggested field contents: ** ** sysname ** Should contain the name of the underlying operating system, or "cc65" ** if the program runs on the bare machine. ** ** nodename ** Is empty or may be defined by the implementor. ** ** release ** Contains the operating system release or the major/minor cc65 version ** if sysname contains "cc65". ** ** version ** Contains the operating system version or the cc65 patch version if ** sysname contains "cc65". ** ** machine ** Contains the complete name of the machine, like "Commodore 64", ** "Oric Atmos" or similar. ** ** Beware: The library sources written in assembler have knowledge about this ** struct! */ struct utsname { char sysname[17]; char nodename[9]; char release[9]; char version[9]; char machine[25]; }; /*****************************************************************************/ /* Code */ /*****************************************************************************/ int __fastcall__ uname (struct utsname* buf); /* Return system information */ /* End of utsname.h */ #endif /*****************************************************************************/ /* */ /* types.h */ /* */ /* Primitive system data types for cc65 */ /* */ /* */ /* */ /* (C) 2003 Ullrich von Bassewitz */ /* 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 _TYPES_H #define _TYPES_H /*****************************************************************************/ /* Data */ /*****************************************************************************/ /* off_t is also defined in unistd.h */ #ifndef _HAVE_off_t #define _HAVE_off_t typedef long int off_t; #endif /*****************************************************************************/ /* Code */ /*****************************************************************************/ /* End of types.h */ #endif /*****************************************************************************/ /* */ /* joy-kernel.h */ /* */ /* Internally used joystick functions */ /* */ /* */ /* */ /* (C) 2002-2006, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _JOY_KERNEL_H #define _JOY_KERNEL_H /*****************************************************************************/ /* Data */ /*****************************************************************************/ /* A structure that describes the header of a joystick driver loaded into ** memory. */ typedef struct { /* Driver header */ char id[3]; /* Contains 0x6a, 0x6f, 0x79 ("joy") */ unsigned char version; /* Interface version */ 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 ;/*****************************************************************************/ ;/* */ ;/* time.inc */ ;/* */ ;/* Date and time */ ;/* */ ;/* */ ;/* */ ;/* (C) 2009 Ullrich von Bassewitz */ ;/* Roemerstrasse 52 */ ;/* D-70794 Filderstadt */ ;/* EMail: uz@cc65.org */ ;/* */ ;/* */ ;/* This software is provided 'as-is', without any expressed or implied */ ;/* warranty. In no event will the authors be held liable for any damages */ ;/* arising from the use of this software. */ ;/* */ ;/* Permission is granted to anyone to use this software for any purpose, */ ;/* including commercial applications, and to alter it and redistribute it */ ;/* freely, subject to the following restrictions: */ ;/* */ ;/* 1. The origin of this software must not be misrepresented; you must not */ ;/* claim that you wrote the original software. If you use this software */ ;/* in a product, an acknowledgment in the product documentation would be */ ;/* appreciated but is not required. */ ;/* 2. Altered source versions must be plainly marked as such, and must not */ ;/* be misrepresented as being the original software. */ ;/* 3. This notice may not be removed or altered from any source */ ;/* distribution. */ ;/* */ ;/*****************************************************************************/ ;------------------------------------------------------------------------------ ; Struct tm - must match the struct defined in time.h .struct tm tm_sec .word tm_min .word tm_hour .word tm_mday .word tm_mon .word tm_year .word tm_wday .word tm_yday .word tm_isdst .word .endstruct ;------------------------------------------------------------------------------ ; Exported functions .global __systime .global _mktime ;------------------------------------------------------------------------- ; Atari System Equates ; by Freddy Offenga, Christian Groessler, and Christian Krueger ; ; References: ; - Atari 400/800 OS rev.B source code, Atari 1979 ; - Atari OS manual - XL addendum ; - Atari XL/XE rev.2 source code, Atari 1984 ; - Mapping the Atari - revised edition, Ian Chadwick 1985 ; ; ##old## old OS rev.B label - moved or deleted ; ##1200xl## new label introduced in 1200XL OS (rev.10/11) ; ##rev2## new label introduced in XL/XE OS rev.2 ;------------------------------------------------------------------------- ;------------------------------------------------------------------------- ; Configuration Equates ;------------------------------------------------------------------------- MAXDEV = 33 ;offset to last possible entry of HATABS IOCBSZ = 16 ;length of IOCB SEIOCB = 0*IOCBSZ ;##rev2## screen editor IOCB index MAXIOC = 8*IOCBSZ ;first invalid IOCB index DSCTSZ = 128 ;##rev2## disk sector size LEDGE = 2 ;left edge REDGE = 39 ;right edge INIML = $0700 ;##rev2## initial MEMLO ICSORG = $CC00 ;##rev2## international character set origin DCSORG = $E000 ;##rev2## domestic character set origin ; IOCB Command Code Equates OPEN = $03 ;open GETREC = $05 ;get record GETCHR = $07 ;get character(s) PUTREC = $09 ;put record PUTCHR = $0B ;put character(s) CLOSE = $0C ;close STATIS = $0D ;status SPECIL = $0E ;special ; DOS IOCB command codes RENAME = $20 ;rename disk file DELETE = $21 ;delete disk file LOCKFL = $23 ;lock file (set to read-only) UNLOCK = $24 ;unlock file POINT = $25 ;point sector NOTE = $26 ;note sector GETFL = $27 ;get file length CHDIR_MYDOS = $29 ;change directory (MyDOS) MKDIR = $2A ;make directory (MyDOS/SpartaDOS) RMDIR = $2B ;remove directory (SpartaDOS) CHDIR_SPDOS = $2C ;change directory (SpartaDOS) FORMAT = $FE ;format GETCWD = $30 ;get current directory (MyDOS/SpartaDOS) ; Special Entry Command Equates ; DOS Commands ; Command line table, Index values for (DOSVEC),Y -- COMTAB ; Compatible with OS/A+, DOS XL and SpartaDOS COMTAB = 0 ;DOS entry jump vector ZCRNAME = 3 ;file name crunch routine jump vector BUFOFF = 10 ;next parameter buffer offset COMFNAM = 33 ;destination buffer for crunch routine LBUF = 63 ;command line input buffer ; Screen IOCB Commands DRAWLN = $11 ;draw line FILLIN = $12 ;draw line with right fill ; ICAX1 Auxiliary Byte 1 Equates APPEND = $01 ;open write append (D:) DIRECT = $02 ;open for directory access (D:) OPNIN = $04 ;open for input (all devices) OPNOT = $08 ;open for output (all devices) MXDMOD = $10 ;open for mixed mode (E:, S:) INSCLR = $20 ;open for input without clearing screen ; Device Code Equates CASSET = 'C' ;cassette DISK = 'D' ;disk SCREDT = 'E' ;screen editor KBD = 'K' ;keyboard PRINTR = 'P' ;printer DISPLY = 'S' ;screen display ; SIO Command Code Equates SIO_FORMAT = $21 ;format disk (default density) SIO_FORMATS = $22 ;1050: format medium density SIO_CONFIG = $44 ;configure drive SIO_CONFIGSF = $4B ;slow/fast configure drive?? SIO_RDPERCOM = $4E ;read PERCOM block (XF551) SIO_WRPERCOM = $4F ;write PERCOM block (XF551) SIO_WRITE = $50 ;write sector SIO_READ = $52 ;read sector SIO_STAT = $53 ;get status information SIO_VERIFY = $56 ;verify sector SIO_WRITEV = $57 ;write sector with verify SIO_WRITETRK = $60 ;write track (Speedy) SIO_READTRK = $62 ;read track (Speedy) ; SIO Status Code (DSTATS) ; Input: data direction ; Bit #7 - W (write operation) ; #6 - R (read operation) ; Output: status code ; $01 (001) -- OPERATION COMPLETE (NO ERRORS) ; $8A (138) -- DEVICE TIMEOUT (DOESN'T RESPOND) ; $8B (139) -- DEVICE NAK ; $8C (140) -- SERIAL BUS INPUT FRAMING ERROR ; $8E (142) -- SERIAL BUS DATA FRAME OVERRUN ERROR ; $8F (143) -- SERIAL BUS DATA FRAME CHECKSUM ERROR ; $90 (144) -- DEVICE DONE ERROR ; Character and Key Code Equates CLS = $7D ;##rev2## clear screen EOL = $9B ;end of line (RETURN) HELP = $11 ;##1200xl## key code for HELP CNTLF1 = $83 ;##1200xl## key code for CTRL-F1 CNTLF2 = $84 ;##1200xl## key code for CTRL-F2 CNTLF3 = $93 ;##1200xl## key code for CTRL-F3 CNTLF4 = $94 ;##1200xl## key code for CTRL-F4 CNTL1 = $9F ;##1200xl## key code for CTRL-1 ; Status Code Equates SUCCES = 1 ;($01) succesful operation BRKABT = 128 ;($80) BREAK key abort PRVOPN = 129 ;($81) IOCB already open error NONDEV = 130 ;($82) nonexistent device error WRONLY = 131 ;($83) IOCB opened for write only error NVALID = 132 ;($84) invalid command error NOTOPN = 133 ;($85) device/file not open error BADIOC = 134 ;($86) invalid IOCB index error RDONLY = 135 ;($87) IOCB opened for read only error EOFERR = 136 ;($88) end of file error TRNRCD = 137 ;($89) truncated record error TIMOUT = 138 ;($8A) peripheral device timeout error DNACK = 139 ;($8B) device does not acknowledge command FRMERR = 140 ;($8C) serial bus framing error CRSROR = 141 ;($8D) cursor overrange error OVRRUN = 142 ;($8E) serial bus data overrun error CHKERR = 143 ;($8F) serial bus checksum error DERROR = 144 ;($90) device done (operation incomplete) BADMOD = 145 ;($91) bad screen mode number error FNCNOT = 146 ;($92) function not implemented in handler SCRMEM = 147 ;($93) insufficient memory for screen mode DSKFMT = 148 ;($94) SpartaDOS: unrecognized disk format INCVER = 149 ;($95) SpartaDOS: disk was made with incompat. version DIRNFD = 150 ;($96) SpartaDOS: directory not found FEXIST = 151 ;($97) SpartaDOS: file exists NOTBIN = 152 ;($98) SpartaDOS: file not binary LSYMND = 154 ;($9A) SDX: loader symbol not defined BADPRM = 156 ;($9C) SDX: bad parameter OUTOFM = 158 ;($9E) SDX: out of memory INVDEV = 160 ;($A0) invalid device number TMOF = 161 ;($A1) too many open files DSKFLL = 162 ;($A2) disk full FATLIO = 163 ;($A3) fatal I/O error FNMSMT = 164 ;($A4) internal file number mismatch INVFNM = 165 ;($A5) invalid file name PDLERR = 166 ;($A6) point data length error EPERM = 167 ;($A7) permission denied DINVCM = 168 ;($A8) command invalid for disk DIRFLL = 169 ;($A9) directory full FNTFND = 170 ;($AA) file not found PNTINV = 171 ;($AB) point invalid BADDSK = 173 ;($AD) bad disk INCFMT = 176 ;($B0) DOS 3: incompatible file system XNTBIN = 180 ;($B4) XDOS: file not binary ; DCB Device Bus Equates DISKID = $31 ;##rev2## disk bus ID PDEVN = $40 ;##rev2## printer bus ID CASET = $60 ;##rev2## cassette bus ID ; Bus Command Equates FOMAT = '!' ;##rev2## format command PUTSEC = 'P' ;##rev2## put sector command READ = 'R' ;##rev2## read command STATC = 'S' ;##rev2## status command WRITE = 'W' ;##rev2## write command ; Command Auxiliary Byte Equates DOUBLE = 'D' ;##rev2## print 20 characters double width NORMAL = 'N' ;##rev2## print 40 characters normally PLOT = 'P' ;##rev2## plot SIDWAY = 'S' ;##rev2## print 16 characters sideways ; Bus Response Equates ACK = 'A' ;##rev2## device acknowledged COMPLT = 'C' ;##rev2## device succesfully completed operation ERROR = 'E' ;##rev2## device incurred error NACK = 'N' ;##rev2## device did not understand ; Floating Point Miscellaneous Equates FPREC = 6 ;precision FMPREC = FPREC-1 ;##rev2## length of mantissa ; Cassette Record Type Equates HDR = $FB ;##rev2## header DTA = $FC ;##rev2## data record DT1 = $FA ;##rev2## last data record EOT = $FE ;##rev2## end of tape (file) TONE1 = 2 ;##rev2## record TONE2 = 1 ;##rev2## playback ; Cassette Timing Equates WLEADN = 1152 ;##rev2## NTSC 19.2 second WRITE file leader RLEADN = 576 ;##rev2## NTSC 9.6 second READ file leader WIRGLN = 180 ;##rev2## NTSC 3.0 second WRITE IRG RIRGLN = 120 ;##rev2## NTSC 2.0 second READ IRG WSIRGN = 15 ;##rev2## NTSC 0.25 second WRITE short IRG RSIRGN = 10 ;##rev2## NTSC 0.16 second READ short IRG BEEPNN = 30 ;##rev2## NTSC 0.5 second beep duration BEEPFN = 10 ;##rev2## NTSC 0.16 seconrd beep duration WLEADP = 960 ;##rev2## PAL 19.2 second WRITE file leader RLEADP = 480 ;##rev2## PAL 9.6 second READ file leader WIRGLP = 150 ;##rev2## PAL 3.0 second WRITE IRG RIRGLP = 100 ;##rev2## PAL 2.0 second READ IRG WSIRGP = 13 ;##rev2## PAL 0.25 second WRITE short IRG RSIRGP = 8 ;##rev2## PAL 0.16 second READ short IRG BEEPNP = 25 ;##rev2## PAL 0.5 second beep duration BEEPFP = 8 ;##rev2## PAL 0.16 seconrd beep duration WIRGHI = 0 ;##rev2## high WRITE IRG RIRGHI = 0 ;##rev2## high READ IRG ; Power-up Validation Byte Value Equates PUPVL1 = $5C ;##rev2## power-up validation value 1 PUPVL2 = $93 ;##rev2## power-up validation value 2 PUPVL3 = $25 ;##rev2## power-up validation value 3 ; Relocating Loader Miscellaneous Equates DATAER = 156 ;##rev2## end of record appears before END MEMERR = 157 ;##rev2## memory insufficient for load error ; Miscellaneous Equates IOCFRE = $FF ;IOCB free indication B19200 = $0028 ;##rev2## 19200 baud POKEY counter value B00600 = $05CC ;##rev2## 600 baud POKEY counter value HITONE = $05 ;##rev2## FSK high freq. POKEY counter value LOTONE = $07 ;##rev2## FSK low freq. POKEY counter value NCOMLO = $34 ;##rev2## PIA lower NOT COMMAND line command NCOMHI = $3C ;##rev2## PIA raise NOT COMMAND line command MOTRGO = $34 ;##rev2## PIA cassette motor ON command MOTRST = $3C ;##rev2## PIA cassette motor OFF command NODAT = $00 ;##rev2## SIO immediate operation GETDAT = $40 ;##rev2## SIO read data frame PUTDAT = $80 ;##rev2## SIO write data frame CRETRI = 13 ;##rev2## number of command frame retries DRETRI = 1 ;##rev2## number of device retries CTIM = 2 ;##rev2## command frame ACK timeout NBUFSZ = 40 ;##rev2## print normal buffer size DBUFSZ = 20 ;##rev2## print double buffer size SBUFSZ = 29 ;##rev2## print sideways buffer size ;------------------------------------------------------------------------- ; Page Zero Address Equates ;------------------------------------------------------------------------- LINZBS = $00 ;LINBUG RAM (WILL BE REPLACED BY MONITOR RAM) LNFLG = $00 ;##1200xl## 1-byte LNBUG flag (0 = not LNBUG) NGFLAG = $01 ;##1200xl## 1-byte memory status (0 = failure) ; Not Cleared CASINI = $02 ;CASSETTE INIT LOCATION RAMLO = $04 ;RAM POINTER FOR MEMORY TEST TRAMSZ = $06 ;TEMPORARY REGISTER FOR RAM SIZE ;TSTDAT = $07 ;##old## RAM TEST DATA REGISTER CMCMD = $07 ;##rev2## 1-byte command communications ; Cleared upon Coldstart only WARMST = $08 ;WARM START FLAG BOOTQ = $09 ;SUCCESSFUL BOOT FLAG DOSVEC = $0A ;DISK SOFTWARE START VECTOR DOSINI = $0C ;DISK SOFTWARE INIT ADDRESS APPMHI = $0E ;APPLICATIONS MEMORY HI LIMIT ; Cleared upon Coldstart or Warmstart INTZBS = $10 ;INTERRUPT HANDLER POKMSK = $10 ;SYSTEM MASK FOR POKEY IRQ ENABLE (shadow of IRQEN) BRKKEY = $11 ;BREAK KEY FLAG RTCLOK = $12 ;REAL TIME CLOCK (IN 16 MSEC UNITS> BUFADR = $15 ;INDIRECT BUFFER ADDRESS REGISTER ICCOMT = $17 ;COMMAND FOR VECTOR DSKFMS = $18 ;DISK FILE MANAGER POINTER DSKUTL = $1A ;DISK UTILITIES POINTER ABUFPT = $1C ;##1200xl## 4-byte ACMI buffer pointer area ;PTIMOT = $1C ;##old## PRINTER TIME OUT REGISTER ;PBPNT = $1D ;##old## PRINT BUFFER POINTER ;PBUFSZ = $1E ;##old## PRINT BUFFER SIZE ;PTEMP = $1F ;##old## TEMPORARY REGISTER ZIOCB = $20 ;ZERO PAGE I/O CONTROL BLOCK IOCBAS = $20 ;16-byte page zero IOCB ICHIDZ = $20 ;HANDLER INDEX NUMBER (FF = IOCB FREE) ICDNOZ = $21 ;DEVICE NUMBER (DRIVE NUMBER) ICCOMZ = $22 ;COMMAND CODE ICSTAZ = $23 ;STATUS OF LAST IOCB ACTION ICBALZ = $24 ;BUFFER ADDRESS LOW BYTE ICBAHZ = $25 ;1-byte high buffer address ICPTLZ = $26 ;PUT BYTE ROUTINE ADDRESS -1 ICPTHZ = $27 ;1-byte high PUT-BYTE routine address ICBLLZ = $28 ;BUFFER LENGTH LOW BYTE ICBLHZ = $29 ;1-byte high buffer length ICAX1Z = $2A ;AUXILIARY INFORMATION FIRST BYTE ICAX2Z = $2B ;1-byte second auxiliary information ICSPRZ = $2C ;4-byte spares ENTVEC = $2C ;##rev2## 2-byte (not used) ICIDNO = $2E ;IOCB NUMBER X 16 CIOCHR = $2F ;CHARACTER BYTE FOR CURRENT OPERATION STATUS = $30 ;INTERNAL STATUS STORAGE CHKSUM = $31 ;CHECKSUM (SINGLE BYTE SUM WITH CARRY) BUFRLO = $32 ;POINTER TO DATA BUFFER (LO BYTE) BUFRHI = $33 ;POINTER TO DATA BUFFER (HI BYTE) BFENLO = $34 ;NEXT BYTE PAST END OF THE DATA BUFFER LO BFENHI = $35 ;NEXT BYTE PAST END OF THE DATA BUFFER HI ;CRETRY = $36 ;##old## NUMBER OF COMMAND FRAME RETRIES ;DRETRY = $37 ;##old## NUMBER OF DEVICE RETRIES LTEMP = $36 ;##1200xl## 2-byte loader temporary BUFRFL = $38 ;DATA BUFFER FULL FLAG RECVDN = $39 ;RECEIVE DONE FLAG XMTDON = $3A ;TRANSMISSION DONE FLAG CHKSNT = $3B ;CHECKSUM SENT FLAG NOCKSM = $3C ;NO CHECKSUM FOLLOWS DATA FLAG BPTR = $3D ;1-byte cassette buffer pointer FTYPE = $3E ;1-byte cassette IRG type FEOF = $3F ;1-byte cassette EOF flag (0 = quiet) FREQ = $40 ;1-byte cassette beep counter SOUNDR = $41 ;NOISY I/0 FLAG. (ZERO IS QUIET) CRITIC = $42 ;DEFINES CRITICAL SECTION (CRITICAL IF NON-Z) FMSZPG = $43 ;DISK FILE MANAGER SYSTEM ZERO PAGE ;CKEY = $4A ;##old## FLAG SET WHEN GAME START PRESSED ZCHAIN = $4A ;##1200xl## 2-byte handler linkage chain pointer ;CASSBT = $4B ;##old## CASSETTE BOOT FLAG DSTAT = $4C ;DISPLAY STATUS ATRACT = $4D ;ATRACT FLAG DRKMSK = $4E ;DARK ATRACT MASK COLRSH = $4F ;ATRACT COLOR SHIFTER (EOR'ED WITH PLAYFIELD TMPCHR = $50 ;1-byte temporary character HOLD1 = $51 ;1-byte temporary LMARGN = $52 ;left margin (normally 2, cc65 C startup code sets it to 0) RMARGN = $53 ;right margin (normally 39 if no XEP80 is used) ROWCRS = $54 ;1-byte cursor row COLCRS = $55 ;2-byte cursor column DINDEX = $57 ;1-byte display mode SAVMSC = $58 ;2-byte saved memory scan counter OLDROW = $5A ;1-byte prior row OLDCOL = $5B ;2-byte prior column OLDCHR = $5D ;DATA UNDER CURSOR OLDADR = $5E ;2-byte saved cursor memory address FKDEF = $60 ;##1200xl## 2-byte function key definition table ;NEWROW = $60 ;##old## POINT DRAW GOES TO ;NEWCOL = $61 ;##old## PALNTS = $62 ;##1200xl## 1-byte PAL/NTSC indicator (0 = NTSC) LOGCOL = $63 ;POINTS AT COLUMN IN LOGICAL LINE ADRESS = $64 ;2-byte temporary address MLTTMP = $66 ;1-byte temporary OPNTMP = $66 ;FIRST BYTE IS USED IN OPEN AS TEMP TOADR = $66 ;##rev2## 2-byte destination address SAVADR = $68 ;2-byte saved address FRMADR = $68 ;##rev2## 2-byte source address RAMTOP = $6A ;RAM SIZE DEFINED BY POWER ON LOGIC BUFCNT = $6B ;BUFFER COUNT BUFSTR = $6C ;EDITOR GETCH POINTER BITMSK = $6E ;BIT MASK SHFAMT = $6F ;1-byte shift amount for pixel justifucation ROWAC = $70 ;2-byte draw working row COLAC = $72 ;2-byte draw working column ENDPT = $74 ;2-byte end point DELTAR = $76 ;1-byte row difference DELTAC = $77 ;2-byte column difference KEYDEF = $79 ;##1200xl## 2-byte key definition table address ;ROWINC = $79 ;##old## ;COLINC = $7A ;##old## SWPFLG = $7B ;NON-0 1F TXT AND REGULAR RAM IS SWAPPED HOLDCH = $7C ;CH IS MOVED HERE IN KGETCH BEFORE CNTL & SH INSDAT = $7D ;1-byte temporary COUNTR = $7E ;2-byte draw iteration count ; Floating Point Package Page Zero Address Equates FR0 = $D4 ;6-byte register 0 FR0M = $D5 ;##rev2## 5-byte register 0 mantissa QTEMP = $D9 ;##rev2## 1-byte temporary FRE = $DA ;6-byte (internal) register E FR1 = $E0 ;FP REG1 FR1M = $E1 ;##rev2## 5-byte register 1 mantissa FR2 = $E6 ;6-byte (internal) register 2 FRX = $EC ;1-byte temporary EEXP = $ED ;VALUE OF E FRSIGN = $EE ;##rev2## 1-byte floating point sign NSIGN = $EE ;SIGN OF # PLYCNT = $EF ;##rev2## 1-byte polynomial degree ESIGN = $EF ;SIGN OF EXPONENT SGNFLG = $F0 ;##rev2## 1-byte sign flag FCHRFLG = $F0 ;1ST CHAR FLAG XFMFLG = $F1 ;##rev2## 1-byte transform flag DIGRT = $F1 ;# OF DIGITS RIGHT OF DECIMAL CIX = $F2 ;CURRENT INPUT INDEX INBUFF = $F3 ;POINTS TO USER'S LINE INPUT BUFFER ZTEMP1 = $F5 ;2-byte temporary ZTEMP4 = $F7 ;2-byte temporary ZTEMP3 = $F9 ;2-byte temporary ;DEGFLG = $FB ;##old## same as RADFLG ;RADFLG = $FB ;##old## 0=RADIANS, 6=DEGREES FLPTR = $FC ;2-byte floating point number pointer FPTR2 = $FE ;2-byte floating point number pointer ;------------------------------------------------------------------------- ; Page Two Address Equates ;------------------------------------------------------------------------- INTABS = $0200 ;INTERRUPT RAM VDSLST = $0200 ;DISPLAY LIST NMI VECTOR VPRCED = $0202 ;PROCEED LINE IRQ VECTOR VINTER = $0204 ;INTERRUPT LINE IRQ VECTOR VBREAK = $0206 ;SOFTWARE BREAK (00) INSTRUCTION IRQ VECTOR VKEYBD = $0208 ;POKEY KEYBOARD IRQ VECTOR VSERIN = $020A ;POKEY SERIAL INPUT READY IRQ VSEROR = $020C ;POKEY SERIAL OUTPUT READY IRQ VSEROC = $020E ;POKEY SERIAL OUTPUT COMPLETE IRQ VTIMR1 = $0210 ;POKEY TIMER 1 IRQ VTIMR2 = $0212 ;POKEY TIMER 2 IRQ VTIMR4 = $0214 ;POKEY TIMER 4 IRQ VIMIRQ = $0216 ;IMMEDIATE IRQ VECTOR CDTMV1 = $0218 ;COUNT DOWN TIMER 1 CDTMV2 = $021A ;COUNT DOWN TIMER 2 CDTMV3 = $021C ;COUNT DOWN TIMER 3 CDTMV4 = $021E ;COUNT DOWN TIMER 4 CDTMV5 = $0220 ;COUNT DOWN TIMER 5 VVBLKI = $0222 ;IMMEDIATE VERTICAL BLANK NMI VECTOR VVBLKD = $0224 ;DEFERRED VERTICAL BLANK NMI VECTOR CDTMA1 = $0226 ;COUNT DOWN TIMER 1 JSR ADDRESS CDTMA2 = $0228 ;COUNT DOWN TIMER 2 JSR ADDRESS CDTMF3 = $022A ;COUNT DOWN TIMER 3 FLAG SRTIMR = $022B ;SOFTWARE REPEAT TIMER CDTMF4 = $022C ;COUNT DOWN TIMER 4 FLAG INTEMP = $022D ;IAN'S TEMP CDTMF5 = $022E ;COUNT DOWN TIMER FLAG 5 SDMCTL = $022F ;SAVE DMACTL REGISTER SDLSTL = $0230 ;SAVE DISPLAY LIST LOW BYTE SDLSTH = $0231 ;SAVE DISPLAY LIST HI BYTE SSKCTL = $0232 ;SKCTL REGISTER RAM LCOUNT = $0233 ;##1200xl## 1-byte relocating loader record LPENH = $0234 ;LIGHT PEN HORIZONTAL VALUE LPENV = $0235 ;LIGHT PEN VERTICAL VALUE BRKKY = $0236 ;BREAK KEY VECTOR ;RELADR = $0238 ;##1200xl## 2-byte relocatable loader address VPIRQ = $0238 ;##rev2## 2-byte parallel device IRQ vector CDEVIC = $023A ;COMMAND FRAME BUFFER - DEVICE CCOMND = $023B ;COMMAND CAUX1 = $023C ;COMMAND AUX BYTE 1 CAUX2 = $023D ;COMMAND AUX BYTE 2 TEMP = $023E ;TEMPORARY RAM CELL ERRFLG = $023F ;ERROR FLAG - ANY DEVICE ERROR EXCEPT TIME OUT DFLAGS = $0240 ;DISK FLAGS FROM SECTOR ONE DBSECT = $0241 ;NUMBER OF DISK BOOT SECTORS BOOTAD = $0242 ;ADDRESS WHERE DISK BOOT LOADER WILL BE PUT COLDST = $0244 ;COLDSTART FLAG (1=IN MIDDLE OF COLDSTART> RECLEN = $0245 ;##1200xl## 1-byte relocating loader record length DSKTIM = $0246 ;DISK TIME OUT REGISTER ;LINBUF = $0247 ;##old## CHAR LINE BUFFER PDVMSK = $0247 ;##rev2## 1-byte parallel device selection mask SHPDVS = $0248 ;##rev2## 1-byte PDVS (parallel device select) PDIMSK = $0249 ;##rev2## 1-byte parallel device IRQ selection RELADR = $024A ;##rev2## 2-byte relocating loader relative adr. PPTMPA = $024C ;##rev2## 1-byte parallel device handler temporary PPTMPX = $024D ;##rev2## 1-byte parallel device handler temporary CHSALT = $026B ;##1200xl## 1-byte character set alternate VSFLAG = $026C ;##1200xl## 1-byte fine vertical scroll count KEYDIS = $026D ;##1200xl## 1-byte keyboard disable FINE = $026E ;##1200xl## 1-byte fine scrolling mode GPRIOR = $026F ;GLOBAL PRIORITY CELL PADDL0 = $0270 ;1-byte potentiometer 0 PADDL1 = $0271 ;1-byte potentiometer 1 PADDL2 = $0272 ;1-byte potentiometer 2 PADDL3 = $0273 ;1-byte potentiometer 3 PADDL4 = $0274 ;1-byte potentiometer 4 PADDL5 = $0275 ;1-byte potentiometer 5 PADDL6 = $0276 ;1-byte potentiometer 6 PADDL7 = $0277 ;1-byte potentiometer 7 STICK0 = $0278 ;1-byte joystick 0 STICK1 = $0279 ;1-byte joystick 1 STICK2 = $027A ;1-byte joystick 2 STICK3 = $027B ;1-byte joystick 3 PTRIG0 = $027C ;1-byte paddle trigger 0 PTRIG1 = $027D ;1-byte paddle trigger 1 PTRIG2 = $027E ;1-byte paddle trigger 2 PTRIG3 = $027F ;1-byte paddle trigger 3 PTRIG4 = $0280 ;1-byte paddle trigger 4 PTRIG5 = $0281 ;1-byte paddle trigger 5 PTRIG6 = $0281 ;1-byte paddle trigger 6 PTRIG7 = $0283 ;1-byte paddle trigger 7 STRIG0 = $0284 ;1-byte joystick trigger 0 STRIG1 = $0285 ;1-byte joystick trigger 1 STRIG2 = $0286 ;1-byte joystick trigger 2 STRIG3 = $0287 ;1-byte joystick trigger 3 ;CSTAT = $0288 ;##old## cassette status register HIBYTE = $0288 ;##1200xl## 1-byte relocating loader high byte WMODE = $0289 ;1-byte cassette WRITE mode BLIM = $028A ;1-byte cassette buffer limit IMASK = $028B ;##rev2## (not used) JVECK = $028C ;2-byte jump vector or temporary NEWADR = $028E ;##1200xl## 2-byte relocating address TXTROW = $0290 ;TEXT ROWCRS TXTCOL = $0291 ;TEXT COLCRS TINDEX = $0293 ;TEXT INDEX TXTMSC = $0294 ;FOOLS CONVRT INTO NEW MSC TXTOLD = $0296 ;OLDROW & OLDCOL FOR TEXT (AND THEN SOME) ;TMPX1 = $029C ;##old## 1-byte temporary register CRETRY = $029C ;##1200xl## 1-byte number of command frame retries HOLD3 = $029D ;1-byte temporary SUBTMP = $029E ;1-byte temporary HOLD2 = $029F ;1-byte (not used) DMASK = $02A0 ;1-byte display (pixel location) mask TMPLBT = $02A1 ;1-byte (not used) ESCFLG = $02A2 ;ESCAPE FLAG TABMAP = $02A3 ;15-byte (120 bit) tab stop bit map LOGMAP = $02B2 ;LOGICAL LINE START BIT MAP INVFLG = $02B6 ;INVERSE VIDEO FLAG (TOGGLED BY ATARI KEY) FILFLG = $02B7 ;RIGHT FILL FLAG FOR DRAW TMPROW = $02B8 ;1-byte temporary row TMPCOL = $02B9 ;2-byte temporary column SCRFLG = $02BB ;SET IF SCROLL OCCURS HOLD4 = $02BC ;TEMP CELL USED IN DRAW ONLY ;HOLD5 = $02BD ;##old## DITTO DRETRY = $02BD ;##1200xl## 1-byte number of device retries SHFLOK = $02BE ;1-byte shift/control lock flags BOTSCR = $02BF ;BOTTOM OF SCREEN 24 NORM 4 SPLIT PCOLR0 = $02C0 ;1-byte player-missile 0 color/luminance PCOLR1 = $02C1 ;1-byte player-missile 1 color/luminance PCOLR2 = $02C2 ;1-byte player-missile 2 color/luminance PCOLR3 = $02C3 ;1-byte player-missile 3 color/luminance COLOR0 = $02C4 ;1-byte playfield 0 color/luminance COLOR1 = $02C5 ;1-byte playfield 1 color/luminance COLOR2 = $02C6 ;1-byte playfield 2 color/luminance COLOR3 = $02C7 ;1-byte playfield 3 color/luminance COLOR4 = $02C8 ;1-byte background color/luminance PARMBL = $02C9 ;##rev2## 6-byte relocating loader parameter RUNADR = $02C9 ;##1200xl## 2-byte run address HIUSED = $02CB ;##1200xl## 2-byte highest non-zero page address ZHIUSE = $02CD ;##1200xl## 2-byte highest zero page address OLDPAR = $02CF ;##rev2## 6-byte relocating loader parameter GBYTEA = $02CF ;##1200xl## 2-byte GET-BYTE routine address LOADAD = $02D1 ;##1200xl## 2-byte non-zero page load address ZLOADA = $02D3 ;##1200xl## 2-byte zero page load address DSCTLN = $02D5 ;##1200xl## 2-byte disk sector length ACMISR = $02D7 ;##1200xl## 2-byte ACMI interrupt service routine KRPDEL = $02D9 ;##1200xl## 1-byte auto-repeat delay KEYREP = $02DA ;##1200xl## 1-byte auto-repeat rate NOCLIK = $02DB ;##1200xl## 1-byte key click disable HELPFG = $02DC ;##1200xl## 1-byte HELP key flag (0 = no HELP) DMASAV = $02DD ;##1200xl## 1-byte SDMCTL save/restore PBPNT = $02DE ;##1200xl## 1-byte printer buffer pointer PBUFSZ = $02DF ;##1200xl## 1-byte printer buffer size GLBABS = $02E0 ;4-byte global variables for non-DOS users RUNAD = $02E0 ;##map## 2-byte binary file run address INITAD = $02E2 ;##map## 2-byte binary file initialization address RAMSIZ = $02E4 ;RAM SIZE (HI BYTE ONLY) MEMTOP = $02E5 ;TOP OF AVAILABLE USER MEMORY MEMLO = $02E7 ;BOTTOM OF AVAILABLE USER MEMORY HNDLOD = $02E9 ;##1200xl## 1-byte user load flag DVSTAT = $02EA ;STATUS BUFFER CBAUDL = $02EE ;1-byte low cassette baud rate CBAUDH = $02EF ;1-byte high cassette baud rate CRSINH = $02F0 ;CURSOR INHIBIT (00 = CURSOR ON) KEYDEL = $02F1 ;KEY DELAY CH1 = $02F2 ;1-byte prior keyboard character CHACT = $02F3 ;CHACTL REGISTER RAM CHBAS = $02F4 ;CHBAS REGISTER RAM NEWROW = $02F5 ;##1200xl## 1-byte draw destination row NEWCOL = $02F6 ;##1200xl## 2-byte draw destination column ROWINC = $02F8 ;##1200xl## 1-byte draw row increment COLINC = $02F9 ;##1200xl## 1-byte draw column increment CHAR = $02FA ;1-byte internal character ATACHR = $02FB ;ATASCII CHARACTER CH = $02FC ;GLOBAL VARIABLE FOR KEYBOARD FILDAT = $02FD ;RIGHT FILL DATA DSPFLG = $02FE ;DISPLAY FLAG DISPLAY CNTLS IF NON-ZERO SSFLAG = $02FF ;START/STOP FLAG FOR PAGING (CNTL 1). CLEARE ;------------------------------------------------------------------------- ; Page Three Address Equates ;------------------------------------------------------------------------- DCB = $0300 ;DEVICE CONTROL BLOCK DDEVIC = $0300 ;PERIPHERAL UNIT 1 BUS I.D. NUMBER DUNIT = $0301 ;UNIT NUMBER DCOMND = $0302 ;BUS COMMAND DSTATS = $0303 ;COMMAND TYPE/STATUS RETURN DBUFLO = $0304 ;1-byte low data buffer address DBUFHI = $0305 ;1-byte high data buffer address DTIMLO = $0306 ;DEVICE TIME OUT IN 1 SECOND UNITS DUNUSE = $0307 ;UNUSED BYTE DBYTLO = $0308 ;1-byte low number of bytes to transfer DBYTHI = $0309 ;1-byte high number of bytes to transfer DAUX1 = $030A ;1-byte first command auxiliary DAUX2 = $030B ;1-byte second command auxiliary TIMER1 = $030C ;INITIAL TIMER VALUE ;ADDCOR = $030E ;##old## ADDITION CORRECTION JMPERS = $030E ;##1200xl## 1-byte jumper options CASFLG = $030F ;CASSETTE MODE WHEN SET TIMER2 = $0310 ;2-byte final baud rate timer value TEMP1 = $0312 ;TEMPORARY STORAGE REGISTER ;TEMP2 = $0314 ;##old## TEMPORARY STORAGE REGISTER TEMP2 = $0313 ;##1200xl## 1-byte temporary PTIMOT = $0314 ;##1200xl## 1-byte printer timeout TEMP3 = $0315 ;TEMPORARY STORAGE REGISTER SAVIO = $0316 ;SAVE SERIAL IN DATA PORT TIMFLG = $0317 ;TIME OUT FLAG FOR BAUD RATE CORRECTION STACKP = $0318 ;SIO STACK POINTER SAVE CELL TSTAT = $0319 ;TEMPORARY STATUS HOLDER HATABS = $031A ;35-byte handler address table (was 38 bytes) PUPBT1 = $033D ;##1200xl## 1-byte power-up validation byte 1 PUPBT2 = $033E ;##1200xl## 1-byte power-up validation byte 2 PUPBT3 = $033F ;##1200xl## 1-byte power-up validation byte 3 IOCB = $0340 ;I/O CONTROL BLOCKS ICHID = $0340 ;HANDLER INDEX NUMBER (FF=IOCB FREE) ICDNO = $0341 ;DEVICE NUMBER (DRIVE NUMBER) ICCOM = $0342 ;COMMAND CODE ICSTA = $0343 ;STATUS OF LAST IOCB ACTION ICBAL = $0344 ;1-byte low buffer address ICBAH = $0345 ;1-byte high buffer address ICPTL = $0346 ;1-byte low PUT-BYTE routine address - 1 ICPTH = $0347 ;1-byte high PUT-BYTE routine address - 1 ICBLL = $0348 ;1-byte low buffer length ICBLH = $0349 ;1-byte high buffer length ICAX1 = $034A ;1-byte first auxiliary information ICAX2 = $034B ;1-byte second auxiliary information ICAX3 = $034C ;1-byte third auxiliary information ICAX4 = $034D ;1-byte fourth auxiliary information ICAX5 = $034E ;1-byte fifth auxiliary information ICSPR = $034F ;SPARE BYTE PRNBUF = $03C0 ;PRINTER BUFFER SUPERF = $03E8 ;##1200xl## 1-byte editor super function flag CKEY = $03E9 ;##1200xl## 1-byte cassette boot request flag CASSBT = $03EA ;##1200xl## 1-byte cassette boot flag CARTCK = $03EB ;##1200xl## 1-byte cartridge equivalence check DERRF = $03EC ;##rev2## 1-byte screen OPEN error flag ; Remainder of Page Three Not Cleared upon Reset ACMVAR = $03ED ;##1200xl## 11 bytes reserved for ACMI BASICF = $03F8 ;##rev2## 1-byte BASIC switch flag MINTLK = $03F9 ;##1200xl## 1-byte ACMI module interlock GINTLK = $03FA ;##1200xl## 1-byte cartridge interlock CHLINK = $03FB ;##1200xl## 2-byte loaded handler chain link CASBUF = $03FD ;CASSETTE BUFFER ;------------------------------------------------------------------------- ; Page Four/Five Address Equates ;------------------------------------------------------------------------- ; USER AREA STARTS HERE AND GOES TO END OF PAGE FIVE USAREA = $0480 ;128 bytes reserved for application LBPR1 = $057E ;LBUFF PREFIX 1 LBPR2 = $057F ;LBUFF PREFIX 2 LBUFF = $0580 ;128-byte line buffer PLYARG = $05E0 ;6-byte floating point polynomial argument FPSCR = $05E6 ;6-byte floating point temporary FPSCR1 = $05EC ;6-byte floating point temporary ;LBFEND = $05FF ;##old## END OF LBUFF DOS = $0700 ;------------------------------------------------------------------------- ; Cartridge Address Equates ;------------------------------------------------------------------------- CARTCS = $BFFA ;##rev2## 2-byte cartridge coldstart address CART = $BFFC ;##rev2## 1-byte cartridge present indicator ;0=Cart Exists CARTFG = $BFFD ;##rev2## 1-byte cartridge flags ;D7 0=Not a Diagnostic Cart ; 1=Is a Diagnostic cart and control is ; given to cart before any OS is init. ;D2 0=Init but Do not Start Cart ; 1=Init and Start Cart ;D0 0=Do not boot disk ; 1=Boot Disk CARTAD = $BFFE ;##rev2## 2-byte cartridge start vector ;------------------------------------------------------------------------- ; CTIA/GTIA Address Equates ;------------------------------------------------------------------------- GTIA = $D000 ;CTIA/GTIA area .include "atari_gtia.inc" ;------------------------------------------------------------------------- ; PBI Address Equates ;------------------------------------------------------------------------- PBI = $D100 ;##rev2## parallel bus interface area ; Read Addresses PDVI = $D1FF ;##rev2## parallel device IRQ status ; Write Addresses PDVS = $D1FF ;##rev2## parallel device select ;------------------------------------------------------------------------- ; POKEY Address Equates ;------------------------------------------------------------------------- POKEY = $D200 ;POKEY area .include "atari_pokey.inc" ;------------------------------------------------------------------------- ; ANTIC Address Equates ;------------------------------------------------------------------------- ANTIC = $D400 ;ANTIC area .include "atari_antic.inc" ; PBI RAM Address Equates PBIRAM = $D600 ;##rev2## parallel bus interface RAM area ; Parallel Device Address Equates PDID1 = $D803 ;##rev2## parallel device ID 1 PDIDV = $D805 ;##rev2## parallel device I/O vector PDIRQV = $D808 ;##rev2## parallel device IRQ vector PDID2 = $D80B ;##rev2## parallel device ID 2 PDVV = $D80D ;##rev2## parallel device vector table ;------------------------------------------------------------------------- ; PIA Address Equates ;------------------------------------------------------------------------- PIA = $D300 ;PIA area PORTA = $D300 ;port A direction register or jacks one/two PORTB = $D301 ;port B direction register or memory management PACTL = $D302 ;port A control PBCTL = $D303 ;port B control ;------------------------------------------------------------------------- ; Floating Point Package Address Equates ;------------------------------------------------------------------------- AFP = $D800 ;convert ASCII to floating point FASC = $D8E6 ;convert floating point to ASCII IFP = $D9AA ;convert integer to floating point FPI = $D9D2 ;convert floating point to integer ZFR0 = $DA44 ;zero FR0 ZF1 = $DA46 ;zero floating point number FSUB = $DA60 ;subtract floating point numbers FADD = $DA66 ;add floating point numbers FMUL = $DADB ;multiply floating point numbers FDIV = $DB28 ;divide floating point numbers PLYEVL = $DD40 ;evaluate floating point polynomial FLD0R = $DD89 ;load floating point number FLD0P = $DD8D ;load floating point number FLD1R = $DD98 ;load floating point number PLD1P = $DD9C ;load floating point number FST0R = $DDA7 ;store floating point number FST0P = $DDAB ;store floating point number FMOVE = $DDB6 ;move floating point number LOG = $DECD ;calculate floating point logarithm LOG10 = $DED1 ;calculate floating point base 10 logarithm EXP = $DDC0 ;calculate floating point exponential EXP10 = $DDCC ;calculate floating point base 10 exponential ;------------------------------------------------------------------------- ; Device Handler Vector Table Address Equates ;------------------------------------------------------------------------- EDITRV = $E400 ;editor handler vector table SCRENV = $E410 ;screen handler vector table KEYBDV = $E420 ;keyboard handler vector table PRINTV = $E430 ;printer handler vector table CASETV = $E440 ;cassette handler vector table ;------------------------------------------------------------------------- ; Jump Vector Address Equates ;------------------------------------------------------------------------- DISKIV = $E450 ;vector to initialize DIO DSKINV = $E453 ;vector to DIO .ifdef __ATARIXL__ .ifndef SHRAM_HANDLERS .import CIO_handler, SIO_handler, SETVBV_handler .endif .define CIOV CIO_handler .define SIOV SIO_handler .define SETVBV SETVBV_handler CIOV_org = $E456 ;vector to CIO SIOV_org = $E459 ;vector to SIO SETVBV_org = $E45C ;vector to set VBLANK parameters .else CIOV = $E456 ;vector to CIO SIOV = $E459 ;vector to SIO SETVBV = $E45C ;vector to set VBLANK parameters ; aliases in order not to have to sprinkle common code with .ifdefs CIOV_org = CIOV SIOV_org = SIOV SETVBV_org = SETVBV .endif SYSVBV = $E45F ;vector to process immediate VBLANK XITVBV = $E462 ;vector to process deferred VBLANK SIOINV = $E465 ;vector to initialize SIO SENDEV = $E468 ;vector to enable SEND INTINV = $E46B ;vector to initialize interrupt handler CIOINV = $E46E ;vector to initialize CIO BLKBDV = $E471 ;vector to power-up display WARMSV = $E474 ;vector to warmstart COLDSV = $E477 ;vector to coldstart RBLOKV = $E47A ;vector to read cassette block CSOPIV = $E47D ;vector to open cassette for input VCTABL = $E480 ;RAM vector initial value table PUPDIV = $E480 ;##rev2## vector to power-up display SLFTSV = $E483 ;##rev2## vector to self-test PHENTV = $E486 ;##rev2## vector to enter peripheral handler PHUNLV = $E489 ;##rev2## vector to unlink peripheral handler PHINIV = $E48C ;##rev2## vector to initialize peripheral handler GPDVV = $E48F ;##rev2## generic parallel device handler vector ; NOTE: OS rom self-test labels are not included in this file ;------------------------------------------------------------------------- ; Some misc. stuff from the 400/800 rev.B source ;------------------------------------------------------------------------- ; THE FOLLOWING ARE IN BASIC CARTRIDGE: SIN = $BD81 ;FR0 <- SIN (FR0) DEGFLG (0=RAD,6=DEG) CARRY COS = $BD73 ;FR0 <- COS (FR0) CARRY ATAN = $BE43 ;FR0 <- ATAN(FR0) CARRY SQR = $BEB1 ;FR0 <- ROOT(FR0) CARRY RADON = 0 ;INDICATES RADIANS DEGON = 6 ;INDICATES DEGREES ASCZER = '0' ;ASCII ZERO COLON = $3A ;ASCII COLON CR = $9B ;SYSTEM EOL (CARRIAGE RETURN) ;------------------------------------------------------------------------- ; 6502 ;------------------------------------------------------------------------- NMIVEC = $FFFA RESVEC = $FFFC IRQVEC = $FFFE ;------------------------------------------------------------------------- ; BASIC ;------------------------------------------------------------------------- LOMEM = $80 ;2-byte low memory pointer VNTP = $82 ;2-byte variable name table address VNTD = $84 ;2-byte variable name table end + 1 VVTP = $86 ;2-byte variable value table STMTAB = $88 ;2-byte statement table address STMCUR = $8A ;2-byte current statement pointer STARP = $8C ;2-byte string and array table pointer RUNSTK = $8E ;2-byte runtime stack address BMEMTOP = $90 ;2-byte top of memory pointer STOPLN = $BA ;2-byte stopped line number ERRSAVE = $C3 ;1-byte error code PTABW = $C9 ;1-byte tab width ;------------------------------------------------------------------------- ; ATASCII CHARACTER DEFS ;------------------------------------------------------------------------- ATCLR = $7D ;CLEAR SCREEN CHARACTER ATRUB = $7E ;BACK SPACE (RUBOUT) ATTAB = $7F ;TAB ATEOL = $9B ;END-OF-LINE ATDELL = $9C ;delete line ATINSL = $9D ;insert line ATCTAB = $9E ;clear TAB ATSTAB = $9F ;set TAB ATBEL = $FD ;CONSOLE BELL ATDEL = $FE ;delete char. ATINS = $FF ;insert char. ATURW = $1C ;UP-ARROW ATDRW = $1D ;DOWN-ARROW ATLRW = $1E ;LEFT-ARROW ATRRW = $1F ;RIGHT-ARROW ATESC = $1B ;ESCAPE ;------------------------------------------------------------------------- ; OFFSETS INTO SECTSIZETAB (DIO functions) ;------------------------------------------------------------------------- sst_flag = 0 ; length 1 sst_sectsize = 1 ; 2 sst_driveno = 3 ; 1 (drive #) sst_size = 4 ; size of one entry ; if changed, adapt diopncls.s ;------------------------------------------------------------------------- ; OFFSETS INTO dio_phys_pos ;------------------------------------------------------------------------- diopp_head = 0 ; head diopp_track = 1 ; track / cylinder diopp_sector = 3 ; sector diopp_size = 5 ; size of structure ;------------------------------------------------------------------------- ; VALUES for dos_type ;------------------------------------------------------------------------- SPARTADOS = 0 OSADOS = 1 ; OS/A+ XDOS = 2 ATARIDOS = 3 MYDOS = 4 NODOS = 255 ; The DOSes with dos_type below or equal MAX_DOS_WITH_CMDLINE do support ; command line arguments. MAX_DOS_WITH_CMDLINE = XDOS ;------------------------------------------------------------------------- ; XDOS defines (version 2.4, taken from xdos24.pdf) ;------------------------------------------------------------------------- XOPT = $070B ; XDOS options XCAR = $070C ; XDOS cartridge address (+ $70D) XPAT = $086F ; XDOS bugfix and patch number XVER = $0870 ; XDOS version number XFILE = $087D ; XDOS filename buffer XLINE = $0880 ; XDOS DUP input line XGLIN = $0871 ; get line XSKIP = $0874 ; skip parameter .ifdef __ATARIXL__ .ifndef SHRAM_HANDLERS .import XMOVE_handler .endif .define XMOVE XMOVE_handler XMOVE_org = $0877 ; move filename .else XMOVE = $0877 ; move filename .endif XGNUM = $087A ; get number ;------------------------------------------------------------------------- ; End of atari.inc ;------------------------------------------------------------------------- ; ; PET generic definitions. ; ; --------------------------------------------------------------------------- ; Zero page, Commodore stuff VARTAB := $2A ; Pointer to start of BASIC variables MEMSIZE := $34 ; Size of memory installed TXTPTR := $77 ; Pointer into BASIC source code TIME := $8D ; 60HZ clock KEY_COUNT := $9E ; Number of keys in input buffer RVS := $9F ; Reverse flag CURS_FLAG := $A7 ; 1 = cursor off CURS_BLINK := $A8 ; Blink counter CURS_CHAR := $A9 ; Character under the cursor CURS_STATE := $AA ; Cursor blink state SCREEN_PTR := $C4 ; Pointer to current char in text screen CURS_X := $C6 ; Cursor column FNLEN := $D1 ; Length of filename LFN := $D2 ; Current Logical File Number SECADR := $D3 ; Secondary address DEVNUM := $D4 ; Device number SCR_LINELEN := $D5 ; Screen line length CURS_Y := $D8 ; Cursor row FNADR := $DA ; Pointer to file name ; 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 ; ; _heap.inc ; ; (c) Copyright 2003, Ullrich von Bassewitz (uz@cc65.org) ; ; Assembler include file that makes the constants and structures in _heap.h ; available for asm code. ; Struct freeblock ; NOTE: For performance reasons, the asm code often uses increment/decrement ; operators to access other offsets, so just changing offsets here will ; probably not work. .struct freeblock size .word next .addr prev .addr .endstruct ; Struct usedblock ; See notes above .struct usedblock size .word start .addr .endstruct HEAP_MIN_BLOCKSIZE = .sizeof (freeblock) ; Minimum size of an allocated block HEAP_ADMIN_SPACE = .sizeof (usedblock) ; Additional space for used bock ; Variables .global __heaporg .global __heapptr .global __heapend .global __heapfirst .global __heaplast ; ; Oric Atmos definitions ; BASIC 1.1 addresses ; ; --------------------------------------------------------------------------- ; Constants SCREEN_XSIZE = 40 ; screen columns SCREEN_YSIZE = 28 ; screen rows FUNCTKEY = $A5 FNAME_LEN = 16 ; maximum length of file-name ; --------------------------------------------------------------------------- ; Zero page SCRPTR := $12 BASIC_BUF := $35 CHARGOT := $E8 TXTPTR := $E9 ; --------------------------------------------------------------------------- ; Low memory MODEKEY := $0209 CAPSLOCK := $020C ; $7F = not locked, $FF = locked PATTERN := $0213 IRQVec := $0245 ; "fast" interrupt vector JOINFLAG := $025A ; 0 = don't joiu, $4A = join BASIC programs VERIFYFLAG := $025B ; 0 = load, 1 = verify CURS_Y := $0268 CURS_X := $0269 STATUS := $026A BACKGRND := $026B FOREGRND := $026C TIMER3 := $0276 CFILE_NAME := $027F CFOUND_NAME := $0293 FILESTART := $02A9 FILEEND := $02AB AUTORUN := $02AD ; $00 = only load, $C7 = autorun LANGFLAG := $02AE ; $00 = BASIC, $80 = machine code LOADERR := $02B1 KEYBUF := $02DF PARMERR := $02E0 PARAM1 := $02E1 ; & $02E2 PARAM2 := $02E3 ; & $02E4 PARAM3 := $02E5 ; & $02E6 BANGVEC := $02F5 ; --------------------------------------------------------------------------- ; I/O locations ; 6522 .struct VIA ; Versatile Interface Adapter .res $0300 PRB .byte ; Port Register B PRA .byte ; Port Register A DDRB .byte ; Data Direction Register B DDRA .byte ; Data Direction Register A T1 .word ; Timer 1 T1L .word ; Timer 1 Latch T2 .word ; Timer 2 SR .byte ; Shift Register ACR .byte ; Auxiliary Control Register PCR .byte ; Peripheral Control Register IFR .byte ; Interrupt Flags Register IER .byte ; Interrupt Enable Register PRA2 .byte ; Port Register A without handshaking .endstruct ; 6551 .struct ACIA ; Asynchronous Communications Interface Adapter .res $031C DATA .byte STATUS .byte CMD .byte ; Command register CTRL .byte ; Control register .endstruct SCREEN := $BB80 ; --------------------------------------------------------------------------- ; ROM entries GETLINE := $C592 TEXT := $EC21 HIRES := $EC33 CURSET := $F0C8 CURMOV := $F0FD DRAW := $F110 CHAR := $F12D POINT := $F1C8 PAPER := $F204 INK := $F210 PRINT := $F77C ; Sound Effects PING := $FA9F PING1 := $FA85 SHOOT := $FAB5 SHOOT1 := $FA9B EXPLODE := $FACB EXPLODE1 := $FAB1 ZAP := $FAE1 ZAP1 := $FAC7 TICK := $FB14 TICK1 := $FAFA TOCK := $FB2A TOCK1 := $FB10 ; ; PCE definitions. By Groepaz/Hitmem. ; ; FIXME: screen dimensions my change according to selected video mode screenrows = (224/8) charsperline = 61 CH_HLINE = 1 CH_VLINE = 2 ; huc6270 - Video Display Controller (VDC) VDC_MAWR = 0 ; Memory Address Write Register VDC_MARR = 1 ; Memory Address Read Register VDC_VWR = 2 ; VRAM Write Register (write only) VDC_VRR = 2 ; VRAM Read Register (read only) VDC_UNK03 = 3 ; (unknown) VDC_UNK04 = 4 ; (unknown) VDC_CR = 5 ; Control Register VDC_RCR = 6 ; Raster Counter Register VDC_BXR = 7 ; Background X-Scroll Register VDC_BYR = 8 ; Background Y-Scroll Register VDC_MWR = 9 ; Memory-access Width Register VDC_HSR = 10 ; Horizontal Sync Register VDC_HDR = 11 ; Horizontal Display Register VDC_VPR = 12 ; Vertical synchronous register VDC_VDW = 13 ; Vertical display register VDC_VCR = 14 ; Vertical display END position register VDC_DCR = 15 ; (DMA) Control Register VDC_SOUR = 16 ; (DMA) Source Register VDC_DESR = 17 ; (DMA) Destination Register VDC_LENR = 18 ; (DMA) Length Register VDC_SATB = 19 ; Sprite Attribute Table ; VDC port ; Note: absolute addressing mode must be used when writing to this port VDC_CTRL = $0000 VDC_DATA_LO = $0002 VDC_DATA_HI = $0003 ; huc6260 - Video Color Encoder (vce) ; The DAC has a palette of 512 colours. ; bitmap of the palette data is this: 0000000gggrrrbbb. ; You can read and write the DAC-registers. VCE = $0400 ; base VCE_CTRL = $0400 ; write$00 to reset VCE_ADDR_LO = $0402 ; LSB of byte offset into palette VCE_ADDR_HI = $0403 ; MSB of byte offset into palette VCE_DATA_LO = $0404 ; LSB of 16-bit palette data VCE_DATA_HI = $0405 ; MSB of 16-bit palette data ; programmable sound generator (PSG) PSG = $0800 ; base PSG_CHAN_SELECT = $0800 PSG_GLOBAL_PAN = $0801 PSG_FREQ_LO = $0802 PSG_FREQ_HI = $0803 PSG_CHAN_CTRL = $0804 PSG_CHAN_PAN = $0805 PSG_CHAN_DATA = $0806 PSG_NOISE = $0807 PSG_LFO_FREQ = $0808 PSG_LFO_CTRL = $0809 ; timer TIMER = $0c00 ; base TIMER_COUNT = $0c00 TIMER_CTRL = $0c01 JOY_CTRL = $1000 IRQ_MASK = $1402 IRQ_STATUS = $1403 CDR_MEM_DISABLE = $1803 CDR_MEM_ENABLE = $1807 ; Write VDC register .macro VREG arg1,arg2 st0 #arg1 st1 #<(arg2) st2 #>(arg2) .endmacro ;*****************************************************************************/ ;* */ ;* tgi-error.inc */ ;* */ ;* TGI error codes */ ;* */ ;* */ ;* */ ;* (C) 2002-2012, Ullrich von Bassewitz */ ;* Roemerstrasse 52 */ ;* D-70794 Filderstadt */ ;* EMail: uz@cc65.org */ ;* */ ;* */ ;* This software is provided 'as-is', without any expressed or implied */ ;* warranty. In no event will the authors be held liable for any damages */ ;* arising from the use of this software. */ ;* */ ;* Permission is granted to anyone to use this software for any purpose, */ ;* including commercial applications, and to alter it and redistribute it */ ;* freely, subject to the following restrictions: */ ;* */ ;* 1. The origin of this software must not be misrepresented; you must not */ ;* claim that you wrote the original software. If you use this software */ ;* in a product, an acknowledgment in the product documentation would be */ ;* appreciated but is not required. */ ;* 2. Altered source versions must be plainly marked as such, and must not */ ;* be misrepresented as being the original software. */ ;* 3. This notice may not be removed or altered from any source */ ;* distribution. */ ;* */ ;*****************************************************************************/ ; Error constants .enum TGI_ERR_OK ; No error TGI_ERR_NO_DRIVER ; No driver available TGI_ERR_CANNOT_LOAD ; Error loading driver or font TGI_ERR_INV_DRIVER ; Invalid driver TGI_ERR_INV_MODE ; Mode not supported by driver TGI_ERR_INV_ARG ; Invalid function argument TGI_ERR_INV_FUNC ; Function not supported TGI_ERR_INV_FONT ; Font file is invalid TGI_ERR_NO_RES ; Out of resources (memory, handles, ...) TGI_ERR_UNKNOWN ; Unknown error TGI_ERR_INSTALLED ; A driver is already installed TGI_ERR_COUNT ; Special: Number of error messages .endenum ;/*****************************************************************************/ ;/* */ ;/* em-error.inc */ ;/* */ ;/* EM error codes */ ;/* */ ;/* */ ;/* */ ;/* (C) 2002-2012, Ullrich von Bassewitz */ ;/* Roemerstrasse 52 */ ;/* D-70794 Filderstadt */ ;/* EMail: uz@cc65.org */ ;/* */ ;/* */ ;/* This software is provided 'as-is', without any expressed or implied */ ;/* warranty. In no event will the authors be held liable for any damages */ ;/* arising from the use of this software. */ ;/* */ ;/* Permission is granted to anyone to use this software for any purpose, */ ;/* including commercial applications, and to alter it and redistribute it */ ;/* freely, subject to the following restrictions: */ ;/* */ ;/* 1. The origin of this software must not be misrepresented; you must not */ ;/* claim that you wrote the original software. If you use this software */ ;/* in a product, an acknowledgment in the product documentation would be */ ;/* appreciated but is not required. */ ;/* 2. Altered source versions must be plainly marked as such, and must not */ ;/* be misrepresented as being the original software. */ ;/* 3. This notice may not be removed or altered from any source */ ;/* distribution. */ ;/* */ ;/*****************************************************************************/ ; Error constants .enum EM_ERR_OK ; No error EM_ERR_NO_DRIVER ; No driver available EM_ERR_CANNOT_LOAD ; Error loading driver EM_ERR_INV_DRIVER ; Invalid driver EM_ERR_NO_DEVICE ; Device (hardware) not found EM_ERR_INSTALLED ; A driver is already installed EM_ERR_COUNT ; Special: Number of error messages .endenum ;* ;** 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 BIOS_IRQ1_ADDR = $FF3F BIOS_IRQ2_ADDR = $FF52 BIOS_NMI_RESET_ADDR = $F808 BIOS_WRITE_VDP_REG = $FE1F ;/*****************************************************************************/ ;/* */ ;/* em-kernel.inc */ ;/* */ ;/* EM kernel interface */ ;/* */ ;/* */ ;/* */ ;/* (C) 2002-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. */ ;/* */ ;/*****************************************************************************/ ;------------------------------------------------------------------------------ ; The driver header .struct EMD_HDR ID .byte 3 ; Contains 0x65, 0x6d, 0x64 ("emd") VERSION .byte 1 ; Interface version LIBREF .addr ; Library reference JUMPTAB .struct INSTALL .addr ; INSTALL routine UNINSTALL .addr ; UNINSTALL routine PAGECOUNT .addr ; PAGECOUNT routine MAP .addr ; MAP routine USE .addr ; USE routine MAPCLEAN .addr ; MAPCLEAN routine COPYFROM .addr ; COPYFROM routine COPYTO .addr ; COPYTO routine .endstruct .endstruct ;------------------------------------------------------------------------------ ; The EMD API version, stored in EMD_HDR::VERSION EMD_API_VERSION = $02 ;------------------------------------------------------------------------------ ; The asm equivalent to the C em_copy structure .struct EM_COPY BUF .addr ; Memory buffer to copy from or to OFFS .byte ; Offset into page PAGE .word ; Starting page to copy from or to COUNT .word ; Number of bytes to copy UNUSED .byte ; Make the size 8 bytes .endstruct ;------------------------------------------------------------------------------ ; Variables .global _em_drv ; Pointer to driver ;------------------------------------------------------------------------------ ; Driver entry points .global emd_install .global emd_uninstall .global emd_pagecount .global emd_map .global emd_use .global emd_commit .global emd_copyfrom .global emd_copyto ;------------------------------------------------------------------------------ ; ASM functions .global em_clear_ptr ;------------------------------------------------------------------------------ ; C callable functions .global _em_load_driver .global _em_unload .global _em_install .global _em_uninstall .global _em_pagecount .global _em_map .global _em_use .global _em_commit .global _em_copyfrom .global _em_copyto ; ; zeropage.inc ; ; (C) Copyright 2002-2012, Ullrich von Bassewitz (uz@cc65.org) ; ; Assembler include file that imports the runtime zero page locations used ; by the compiler, ready for usage in asm code. .globalzp sp, sreg, regsave .globalzp ptr1, ptr2, ptr3, ptr4 .globalzp tmp1, tmp2, tmp3, tmp4 .globalzp regbank ; The size of the register bank regbanksize = 6 ; The total amount of zero page space used zpspace = 26 ; The amount of space that needs to be saved by an interrupt handler that ; calls C code (does not include the register bank, which is saved by the ; generated C code if required). zpsavespace = zpspace - regbanksize ; Lynx system hardware includes ; Shawn Jefferson ; June 18th, 2004 ; ; Reference: ; Bastian Schick's Lynx Documentation ; http://www.geocities.ws/SiliconValley/Byte/4242/lynx/ ; ; *** ; *** Suzy Addresses ; *** ; Sprite Control Block TMPADRL = $FC00 TMPADRH = $FC01 TILTACUML = $FC02 TILTACUMH = $FC03 HOFFL = $FC04 HOFFH = $FC05 VOFFL = $FC06 VOFFH = $FC07 VIDBASL = $FC08 VIDBASH = $FC09 COLLBASL = $FC0A COLLBASH = $FC0B VIDADRL = $FC0C VIDADRH = $FC0D COLLADRL = $FC0E COLLADRH = $FC0F SCBNEXTL = $FC10 SCBNEXTH = $FC11 SPRDLINEL = $FC12 SPRDLINEH = $FC13 HPOSSTRTL = $FC14 HPOSSTRTH = $FC15 VPOSSTRTL = $FC16 VPOSSTRTH = $FC17 SPRHSIZL = $FC18 SPRHSIZH = $FC19 SPRVSIZL = $FC1A SPRVSIZH = $FC1B STRETCHL = $FC1C STRETCHH = $FC1D TILTL = $FC1E TILTH = $FC1F SPRDOFFL = $FC20 SPRDOFFH = $FC21 SPRVPOSL = $FC22 SPRVPOSH = $FC23 COLLOFFL = $FC24 COLLOFFH = $FC25 VSIZACUML = $FC26 VSIZACUMH = $FC27 HSIZOFFL = $FC28 HSIZOFFH = $FC29 VSIZOFFL = $FC2A VSIZOFFH = $FC2B SCBADRL = $FC2C SCBADRH = $FC2D PROCADRL = $FC2E PROCADRH = $FC2F ; Suzy Math MATHD = $FC52 MATHC = $FC53 MATHB = $FC54 MATHA = $FC55 MATHP = $FC56 MATHN = $FC57 MATHH = $FC60 MATHG = $FC61 MATHF = $FC62 MATHE = $FC63 MATHM = $FC6C MATHL = $FC6D MATHK = $FC6E MATHJ = $FC6F ; Suzy Misc SPRCTL0 = $FC80 SPRCTL1 = $FC81 SPRCOLL = $FC82 SPRINIT = $FC83 SUZYHREV = $FC88 SUZYSREV = $FC89 SUZYBUSEN = $FC90 SPRGO = $FC91 SPRSYS = $FC92 JOYSTICK = $FCB0 SWITCHES = $FCB1 RCART0 = $FCB2 RCART1 = $FCB3 LEDS = $FCC0 PARSTATUS = $FCC2 PARDATA = $FCC3 HOWIE = $FCC4 ; *** ; *** Mikey Addresses ; *** ; Mikey Timers TIMER0 = $FD00 TIMER1 = $FD04 TIMER2 = $FD08 TIMER3 = $FD0C TIMER4 = $FD10 TIMER5 = $FD14 TIMER6 = $FD18 TIMER7 = $FD1C HTIMER = $FD00 ; horizontal line timer (timer 0) VTIMER = $FD08 ; vertical blank timer (timer 2) STIMER = $FD1C ; sound timer (timer 7) HTIMBKUP = $FD00 ; horizontal line timer (timer 0) HTIMCTLA = $FD01 HTIMCNT = $FD02 HTIMCTLB = $FD03 VTIMBKUP = $FD08 ; vertical blank timer (timer 2) VTIMCTLA = $FD09 VTIMCNT = $FD0A VTIMCTLB = $FD0B BAUDBKUP = $FD10 ; serial timer (timer 4) STIMBKUP = $FD1C ; sound timer (timer 7) STIMCTLA = $FD1D STIMCNT = $FD1E STIMCTLB = $FD1F TIM0BKUP = $FD00 TIM0CTLA = $FD01 TIM0CNT = $FD02 TIM0CTLB = $FD03 TIM1BKUP = $FD04 TIM1CTLA = $FD05 TIM1CNT = $FD06 TIM1CTLB = $FD07 TIM2BKUP = $FD08 TIM2CTLA = $FD09 TIM2CNT = $FD0A TIM2CTLB = $FD0B TIM3BKUP = $FD0C TIM3CTLA = $FD0D TIM3CNT = $FD0E TIM3CTLB = $FD0F TIM4BKUP = $FD10 TIM4CTLA = $FD11 TIM4CNT = $FD12 TIM4CTLB = $FD13 TIM5BKUP = $FD14 TIM5CTLA = $FD15 TIM5CNT = $FD16 TIM5CTLB = $FD17 TIM6BKUP = $FD18 TIM6CTLA = $FD19 TIM6CNT = $FD1A TIM6CTLB = $FD1B TIM7BKUP = $FD1C TIM7CTLA = $FD1D TIM7CNT = $FD1E TIM7CTLB = $FD1F ; Mikey Audio AUDIO0 = $FD20 ; audio channel 0 AUDIO1 = $FD28 ; audio channel 1 AUDIO2 = $FD30 ; audio channel 2 AUDIO3 = $FD38 ; audio channel 3 AUD0VOL = $FD20 AUD0FEED = $FD21 AUD0OUT = $FD22 AUD0SHIFT = $FD23 AUD0BKUP = $FD24 AUD0CTLA = $FD25 AUD0CNT = $FD26 AUD0CTLB = $FD27 AUD1VOL = $FD28 AUD1FEED = $FD29 AUD1OUT = $FD2A AUD1SHIFT = $FD2B AUD1BKUP = $FD2C AUD1CTLA = $FD2D AUD1CNT = $FD2E AUD1CTLB = $FD2F AUD2VOL = $FD30 AUD2FEED = $FD31 AUD2OUT = $FD32 AUD2SHIFT = $FD33 AUD2BKUP = $FD34 AUD2CTLA = $FD35 AUD2CNT = $FD36 AUD2CTLB = $FD37 AUD3VOL = $FD38 AUD3FEED = $FD39 AUD3OUT = $FD3A AUD3SHIFT = $FD3B AUD3BKUP = $FD3C AUD3CTLA = $FD3D AUD3CNT = $FD3E AUD3CTLB = $FD3F MSTEREO = $FD50 ; Mikey Misc ; Interrupt bits in INTRST and INTSET TIMER0_INTERRUPT = $01 TIMER1_INTERRUPT = $02 TIMER2_INTERRUPT = $04 TIMER3_INTERRUPT = $08 TIMER4_INTERRUPT = $10 TIMER5_INTERRUPT = $20 TIMER6_INTERRUPT = $40 TIMER7_INTERRUPT = $80 HBL_INTERRUPT = TIMER0_INTERRUPT VBL_INTERRUPT = TIMER2_INTERRUPT SERIAL_INTERRUPT = TIMER4_INTERRUPT SND_INTERRUPT = TIMER7_INTERRUPT INTRST = $FD80 INTSET = $FD81 MAGRDY0 = $FD84 MAGRDY1 = $FD85 AUDIN = $FD86 SYSCTL1 = $FD87 MIKEYHREV = $FD88 MIKEYSREV = $FD89 IODIR = $FD8A IODAT = $FD8B TxIntEnable = %10000000 RxIntEnable = %01000000 TxParEnable = %00010000 ResetErr = %00001000 TxOpenColl = %00000100 TxBreak = %00000010 ParEven = %00000001 TxReady = %10000000 RxReady = %01000000 TxEmpty = %00100000 RxParityErr = %00010000 RxOverrun = %00001000 RxFrameErr = %00000100 RxBreak = %00000010 ParityBit = %00000001 SERCTL = $FD8C SERDAT = $FD8D SDONEACK = $FD90 CPUSLEEP = $FD91 DISPCTL = $FD92 PBKUP = $FD93 DISPADRL = $FD94 DISPADRH = $FD95 MTEST0 = $FD9C MTEST1 = $FD9D MTEST2 = $FD9E PALETTE = $FDA0 ; hardware rgb palette GCOLMAP = $FDA0 ; hardware rgb palette (green) RBCOLMAP = $FDB0 ; hardware rgb palette (red-blue) ; *** ; *** Misc Hardware + 6502 vectors ; *** MAPCTL = $FFF9 VECTORS = $FFFB INTVECTL = $FFFE INTVECTH = $FFFF RSTVECTL = $FFFC RSTVECTH = $FFFD NMIVECTL = $FFFA NMIVECTH = $FFFB ;*****************************************************************************/ ;* */ ;* tgi-kernel.inc */ ;* */ ;* TGI kernel interface */ ;* */ ;* */ ;* */ ;* (C) 2002-2012, Ullrich von Bassewitz */ ;* Roemerstrasse 52 */ ;* D-70794 Filderstadt */ ;* EMail: uz@cc65.org */ ;* */ ;* */ ;* This software is provided 'as-is', without any expressed or implied */ ;* warranty. In no event will the authors be held liable for any damages */ ;* arising from the use of this software. */ ;* */ ;* Permission is granted to anyone to use this software for any purpose, */ ;* including commercial applications, and to alter it and redistribute it */ ;* freely, subject to the following restrictions: */ ;* */ ;* 1. The origin of this software must not be misrepresented; you must not */ ;* claim that you wrote the original software. If you use this software */ ;* in a product, an acknowledgment in the product documentation would be */ ;* appreciated but is not required. */ ;* 2. Altered source versions must be plainly marked as such, and must not */ ;* be misrepresented as being the original software. */ ;* 3. This notice may not be removed or altered from any source */ ;* distribution. */ ;* */ ;*****************************************************************************/ ;------------------------------------------------------------------------------ ; The driver header .struct TGI_HDR ID .byte 3 ; Contains 0x74, 0x67, 0x69 ("tgi") VERSION .byte 1 ; Interface version LIBREF .addr ; Library reference VARS .struct XRES .word 1 ; X resolution YRES .word 1 ; Y resolution COLORCOUNT .byte 1 ; Number of available colors PAGECOUNT .byte 1 ; Number of screens available FONTWIDTH .byte 1 ; System font width in pixel FONTHEIGHT .byte 1 ; System font height in pixel ASPECTRATIO .word 1 ; Fixed point 8.8 format FLAGS .byte 1 ; TGI driver flags .endstruct JUMPTAB .struct INSTALL .addr ; INSTALL routine UNINSTALL .addr ; UNINSTALL routine INIT .addr ; INIT routine DONE .addr ; DONE routine GETERROR .addr ; GETERROR routine CONTROL .addr ; CONTROL routine CLEAR .addr ; CLEAR routine SETVIEWPAGE .addr ; SETVIEWPAGE routine SETDRAWPAGE .addr ; SETDRAWPAGE routine SETCOLOR .addr ; SETCOLOR routine SETPALETTE .addr ; SETPALETTE routine GETPALETTE .addr ; GETPALETTE routine GETDEFPALETTE .addr ; GETDEFPALETTE routine SETPIXEL .addr ; SETPIXEL routine GETPIXEL .addr ; GETPIXEL routine LINE .addr ; LINE routine BAR .addr ; BAR routine TEXTSTYLE .addr ; TEXTSTYLE routine OUTTEXT .addr ; OUTTEXT routine .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 ; ; 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) ; ; 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 .macro jeq Target .if .match(Target, 0) bne *+5 jmp Target .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) beq Target .else bne *+5 jmp Target .endif .endmacro .macro jne Target .if .match(Target, 0) beq *+5 jmp Target .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) bne Target .else beq *+5 jmp Target .endif .endmacro .macro jmi Target .if .match(Target, 0) bpl *+5 jmp Target .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) bmi Target .else bpl *+5 jmp Target .endif .endmacro .macro jpl Target .if .match(Target, 0) bmi *+5 jmp Target .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) bpl Target .else bmi *+5 jmp Target .endif .endmacro .macro jcs Target .if .match(Target, 0) bcc *+5 jmp Target .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) bcs Target .else bcc *+5 jmp Target .endif .endmacro .macro jcc Target .if .match(Target, 0) bcs *+5 jmp Target .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) bcc Target .else bcs *+5 jmp Target .endif .endmacro .macro jvs Target .if .match(Target, 0) bvc *+5 jmp Target .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) bvs Target .else bvc *+5 jmp Target .endif .endmacro .macro jvc Target .if .match(Target, 0) bvs *+5 jmp Target .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) bvc Target .else bvs *+5 jmp Target .endif .endmacro ; ; _file.inc ; ; (C) Copyright 2002 Ullrich von Bassewitz (uz@cc65.org) ; ; Assembler include file that makes the constants and structures in _file.h ; available for asm code. ; Struct _FILE .struct _FILE f_fd .byte f_flags .byte f_pushback .byte .endstruct ; Flags field _FCLOSED = $00 _FOPEN = $01 _FEOF = $02 _FERROR = $04 _FPUSHBACK = $08 ; File table .global __filetab ;------------------------------------------------------------------------- ; CTIA/GTIA Address Equates ;------------------------------------------------------------------------- ; Read/Write Addresses CONSOL = GTIA + $1F ;console switches and speaker control ; Read Addresses M0PF = GTIA + $00 ;missile 0 and playfield collision M1PF = GTIA + $01 ;missile 1 and playfield collision M2PF = GTIA + $02 ;missile 2 and playfield collision M3PF = GTIA + $03 ;missile 3 and playfield collision P0PF = GTIA + $04 ;player 0 and playfield collision P1PF = GTIA + $05 ;player 1 and playfield collision P2PF = GTIA + $06 ;player 2 and playfield collision P3PF = GTIA + $07 ;player 3 and playfield collision M0PL = GTIA + $08 ;missile 0 and player collision M1PL = GTIA + $09 ;missile 1 and player collision M2PL = GTIA + $0A ;missile 2 and player collision M3PL = GTIA + $0B ;missile 3 and player collision P0PL = GTIA + $0C ;player 0 and player collision P1PL = GTIA + $0D ;player 1 and player collision P2PL = GTIA + $0E ;player 2 and player collision P3PL = GTIA + $0F ;player 3 and player collision TRIG0 = GTIA + $10 ;joystick trigger 0 TRIG1 = GTIA + $11 ;joystick trigger 1 TRIG2 = GTIA + $12 ;cartridge interlock TRIG3 = GTIA + $13 ;ACMI module interlock PAL = GTIA + $14 ;##rev2## PAL/NTSC indicator ; Write Addresses HPOSP0 = GTIA + $00 ;player 0 horizontal position HPOSP1 = GTIA + $01 ;player 1 horizontal position HPOSP2 = GTIA + $02 ;player 2 horizontal position HPOSP3 = GTIA + $03 ;player 3 horizontal position HPOSM0 = GTIA + $04 ;missile 0 horizontal position HPOSM1 = GTIA + $05 ;missile 1 horizontal position HPOSM2 = GTIA + $06 ;missile 2 horizontal position HPOSM3 = GTIA + $07 ;missile 3 horizontal position SIZEP0 = GTIA + $08 ;player 0 size SIZEP1 = GTIA + $09 ;player 1 size SIZEP2 = GTIA + $0A ;player 2 size SIZEP3 = GTIA + $0B ;player 3 size SIZEM = GTIA + $0C ;missile sizes GRAFP0 = GTIA + $0D ;player 0 graphics GRAFP1 = GTIA + $0E ;player 1 graphics GRAFP2 = GTIA + $0F ;player 2 graphics GRAFP3 = GTIA + $10 ;player 3 graphics GRAFM = GTIA + $11 ;missile graphics COLPM0 = GTIA + $12 ;player-missile 0 color/luminance COLPM1 = GTIA + $13 ;player-missile 1 color/luminance COLPM2 = GTIA + $14 ;player-missile 2 color/luminance COLPM3 = GTIA + $15 ;player-missile 3 color/luminance COLPF0 = GTIA + $16 ;playfield 0 color/luminance COLPF1 = GTIA + $17 ;playfield 1 color/luminance COLPF2 = GTIA + $18 ;playfield 2 color/luminance COLPF3 = GTIA + $19 ;playfield 3 color/luminance COLBK = GTIA + $1A ;background color/luminance PRIOR = GTIA + $1B ;priority select VDELAY = GTIA + $1C ;vertical delay GRACTL = GTIA + $1D ;graphic control HITCLR = GTIA + $1E ;collision clear ; add - Add without carry .macro add Arg1, Arg2 clc .if .paramcount = 2 adc Arg1, Arg2 .else adc Arg1 .endif .endmacro ; sub - subtract without borrow .macro sub Arg1, Arg2 sec .if .paramcount = 2 sbc Arg1, Arg2 .else sbc Arg1 .endif .endmacro ; bge - jump if unsigned greater or equal .macro bge Arg bcs Arg .endmacro ; blt - Jump if unsigned less .macro blt Arg bcc Arg .endmacro ; bgt - jump if unsigned greater .macro bgt Arg .local L beq L bcs Arg L: .endmacro ; ble - jump if unsigned less or equal .macro ble Arg beq Arg bcc Arg .endmacro ; bnz - jump if not zero .macro bnz Arg bne Arg .endmacro ; bze - jump if zero .macro bze Arg beq Arg .endmacro ;------------------------------------------------------------------------- ; ANTIC Address Equates ;------------------------------------------------------------------------- ; Read Addresses VCOUNT = ANTIC + $0B ;vertical line counter PENH = ANTIC + $0C ;light pen horizontal position PENV = ANTIC + $0D ;light pen vertical position NMIST = ANTIC + $0F ;NMI interrupt status ; Write Addresses DMACTL = ANTIC + $00 ;DMA control CHACTL = ANTIC + $01 ;character control DLISTL = ANTIC + $02 ;low display list address DLISTH = ANTIC + $03 ;high display list address HSCROL = ANTIC + $04 ;horizontal scroll VSCROL = ANTIC + $05 ;vertical scroll PMBASE = ANTIC + $07 ;player-missile base address CHBASE = ANTIC + $09 ;character base address WSYNC = ANTIC + $0A ;wait for HBLANK synchronization NMIEN = ANTIC + $0E ;NMI enable NMIRES = ANTIC + $0F ;NMI interrupt reset ;------------------------------------------------------------------------- ; Antic opcodes ;------------------------------------------------------------------------- ; usage example: ; ; ScreenDL: ; .byte DL_BLK8 ; .byte DL_BLK8 ; .byte DL_CHR40x8x1 | DL_LMS | DL_DLI ; .word ScreenAlignment ; .byte DL_BLK1 | DL_DLI ; .byte DL_MAP320x1x1 | DL_LMS ; .word Screen ; ; .repeat 99 ; .byte DL_MAP320x1x1 ; .endrepeat ; .byte DL_MAP320x1x1 | DL_LMS ; .word Screen + 40 * 100 ; 100 lines a 40 byte, 'Screen' has to be aligned correctly! ; .repeat 92 ; .byte DL_MAP320x1x1 ; .endrepeat ; ; .byte DL_JVB ; absolute instructions (non mode lines) DL_JMP = 1 DL_JVB = 65 ; DL_BLKn display n empty lines (just background) DL_BLK1 = 0 DL_BLK2 = 16 DL_BLK3 = 32 DL_BLK4 = 48 DL_BLK5 = 64 DL_BLK6 = 80 DL_BLK7 = 96 DL_BLK8 = 112 ; absolute instructions (mode lines) DL_CHR40x8x1 = 2 ; monochrome, 40 character & 8 scanlines per mode line (GR. 0) DL_CHR40x10x1 = 3 ; monochrome, 40 character & 10 scanlines per mode line DL_CHR40x8x4 = 4 ; colour, 40 character & 8 scanlines per mode line (GR. 12) DL_CHR40x16x4 = 5 ; colour, 40 character & 16 scanlines per mode line (GR. 13) DL_CHR20x8x2 = 6 ; colour (duochrome per character), 20 character & 8 scanlines per mode line (GR. 1) DL_CHR20x16x2 = 7 ; colour (duochrome per character), 20 character & 16 scanlines per mode line (GR. 2) DL_MAP40x8x4 = 8 ; colour, 40 pixel & 8 scanlines per mode line (GR. 3) DL_MAP80x4x2 = 9 ; 'duochrome', 80 pixel & 4 scanlines per mode line (GR.4) DL_MAP80x4x4 = 10 ; colour, 80 pixel & 4 scanlines per mode line (GR.5) DL_MAP160x2x2 = 11 ; 'duochrome', 160 pixel & 2 scanlines per mode line (GR.6) DL_MAP160x1x2 = 12 ; 'duochrome', 160 pixel & 1 scanline per mode line (GR.14) DL_MAP160x2x4 = 13 ; 4 colours, 160 pixel & 2 scanlines per mode line (GR.7) DL_MAP160x1x4 = 14 ; 4 colours, 160 pixel & 1 scanline per mode line (GR.15) DL_MAP320x1x1 = 15 ; monochrome, 320 pixel & 1 scanline per mode line (GR.8) ; modifiers on mode lines... DL_HSCROL = 16 DL_VSCROL = 32 DL_LMS = 64 ; general modifier... DL_DLI = 128 ;/*****************************************************************************/ ;/* */ ;/* signal.inc */ ;/* */ ;/* Signal handling definitions */ ;/* */ ;/* */ ;/* */ ;/* (C) 2002 Ullrich von Bassewitz */ ;/* Wacholderweg 14 */ ;/* D-70597 Stuttgart */ ;/* EMail: uz@musoftware.de */ ;/* */ ;/* */ ;/* This software is provided 'as-is', without any expressed or implied */ ;/* warranty. In no event will the authors be held liable for any damages */ ;/* arising from the use of this software. */ ;/* */ ;/* Permission is granted to anyone to use this software for any purpose, */ ;/* including commercial applications, and to alter it and redistribute it */ ;/* freely, subject to the following restrictions: */ ;/* */ ;/* 1. The origin of this software must not be misrepresented; you must not */ ;/* claim that you wrote the original software. If you use this software */ ;/* in a product, an acknowledgment in the product documentation would be */ ;/* appreciated but is not required. */ ;/* 2. Altered source versions must be plainly marked as such, and must not */ ;/* be misrepresented as being the original software. */ ;/* 3. This notice may not be removed or altered from any source */ ;/* distribution. */ ;/* */ ;/*****************************************************************************/ ; Standard signal handling functions SIG_ERR = $0000 ; Signal numbers SIGABRT = 0 SIGFPE = 1 SIGILL = 2 SIGINT = 3 SIGSEGV = 4 SIGTERM = 5 SIGCOUNT = 6 ; Number of signals ; Table with signal handlers (asm code only) .global sigtable ; Function declarations .global __sig_ign .global __sig_dfl .global _signal .global _raise ; ; C128 generic definitions. Stolen from Elite128 ; ; --------------------------------------------------------------------------- ; Zero page, Commodore stuff TXTPTR := $3D ; Pointer into BASIC source code TIME := $A0 ; 60HZ clock FNAM_LEN := $B7 ; Length of filename SECADR := $B9 ; Secondary address DEVNUM := $BA ; Device number FNAM := $BB ; Address of filename FNAM_BANK := $C7 ; Bank for filename KEY_COUNT := $D0 ; Number of keys in input buffer FKEY_COUNT := $D1 ; Characters for function key MODE := $D7 ; 40-/80-column mode (bit 7: 80 columns) CURS_X := $EC ; Cursor column CURS_Y := $EB ; Cursor row SCREEN_PTR := $E0 ; Pointer to current char in text screen CRAM_PTR := $E2 ; Pointer to current char in color RAM CHARCOLOR := $F1 RVS := $F3 ; Reverse output flag SCROLL := $F8 ; Disable scrolling flag BASIC_BUF := $200 ; Location of command-line BASIC_BUF_LEN = 162 ; Maximum length of command-line FETCH := $2A2 ; Fetch subroutine in RAM FETVEC := $2AA ; Vector patch location for FETCH STASH := $2AF ; Stash routine in RAM STAVEC := $2B9 ; Vector patch location for STASH IRQInd := $2FD ; JMP $0000 -- used as indirect IRQ vector PALFLAG := $A03 ; $FF=PAL, $00=NTSC INIT_STATUS := $A04 ; Flags: Reset/Restore initiation status FKEY_LEN := $1000 ; Function key lengths FKEY_TEXT := $100A ; Function key texts KBDREPEAT := $28a KBDREPEATRATE := $28b KBDREPEATDELAY := $28c ; --------------------------------------------------------------------------- ; 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 ; 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 ; ; NES definitions. By Groepaz/Hitmem. ; ;; FIXME: optimize zeropage usage SCREEN_PTR = $62 ;2 CRAM_PTR = $64 ;2 CHARCOLOR = $66 BGCOLOR = $67 RVS = $68 CURS_X = $69 CURS_Y = $6a tickcount = $6b ;2 VBLANK_FLAG = $70 ringbuff = $0200 ringwrite = $71 ringread = $72 ringcount = $73 ppuhi = $74 ppulo = $75 ppuval = $76 screenrows = (30-1) charsperline = 32 xsize = charsperline ;; PPU defines PPU_CTRL1 = $2000 PPU_CTRL2 = $2001 PPU_STATUS = $2002 PPU_SPR_ADDR = $2003 PPU_SPR_IO = $2004 PPU_VRAM_ADDR1 = $2005 PPU_VRAM_ADDR2 = $2006 PPU_VRAM_IO = $2007 ;; APU defines APU_PULSE1CTRL = $4000 ; Pulse #1 Control Register (W) APU_PULSE1RAMP = $4001 ; Pulse #1 Ramp Control Register (W) APU_PULSE1FTUNE = $4002 ; Pulse #1 Fine Tune (FT) Register (W) APU_PULSE1CTUNE = $4003 ; Pulse #1 Coarse Tune (CT) Register (W) APU_PULSE2CTRL = $4004 ; Pulse #2 Control Register (W) APU_PULSE2RAMP = $4005 ; Pulse #2 Ramp Control Register (W) APU_PULSE2FTUNE = $4006 ; Pulse #2 Fine Tune Register (W) APU_PULSE2STUNE = $4007 ; Pulse #2 Coarse Tune Register (W) APU_TRICTRL1 = $4008 ; Triangle Control Register #1 (W) APU_TRICTRL2 = $4009 ; Triangle Control Register #2 (?) APU_TRIFREQ1 = $400A ; Triangle Frequency Register #1 (W) APU_TRIFREQ2 = $400B ; Triangle Frequency Register #2 (W) APU_NOISECTRL = $400C ; Noise Control Register #1 (W) ;;APU_ = $400D ; Unused (???) APU_NOISEFREQ1 = $400E ; Noise Frequency Register #1 (W) APU_NOISEFREQ2 = $400F ; Noise Frequency Register #2 (W) APU_MODCTRL = $4010 ; Delta Modulation Control Register (W) APU_MODDA = $4011 ; Delta Modulation D/A Register (W) APU_MODADDR = $4012 ; Delta Modulation Address Register (W) APU_MODLEN = $4013 ; Delta Modulation Data Length Register (W) APU_SPR_DMA = $4014 ; Sprite DMA Register (W) APU_CHANCTRL = $4015 ; Sound/Vertical Clock Signal Register (R) APU_PAD1 = $4016 ; Joypad #1 (RW) APU_PAD2 = $4017 ; Joypad #2/SOFTCLK (RW) CH_HLINE = 11 CH_VLINE = 14 CH_ULCORNER = 176 CH_URCORNER = 174 CH_LLCORNER = 173 CH_LRCORNER = 189 CH_TTEE = 178 CH_RTEE = 179 CH_BTEE = 177 CH_LTEE = 171 CH_CROSS = 123 CH_CURS_UP = 145 CH_CURS_DOWN = 17 CH_CURS_LEFT = 157 CH_CURS_RIGHT = 29 CH_PI = 126 CH_DEL = 20 CH_INS = 148 CH_ENTER = 10 CH_STOP = 3 CH_ESC = 27 ;/*****************************************************************************/ ;/* */ ;/* joy-error.inc */ ;/* */ ;/* Joystick error codes */ ;/* */ ;/* */ ;/* */ ;/* (C) 2002 Ullrich von Bassewitz */ ;/* Wacholderweg 14 */ ;/* D-70597 Stuttgart */ ;/* EMail: uz@musoftware.de */ ;/* */ ;/* */ ;/* This software is provided 'as-is', without any expressed or implied */ ;/* warranty. In no event will the authors be held liable for any damages */ ;/* arising from the use of this software. */ ;/* */ ;/* Permission is granted to anyone to use this software for any purpose, */ ;/* including commercial applications, and to alter it and redistribute it */ ;/* freely, subject to the following restrictions: */ ;/* */ ;/* 1. The origin of this software must not be misrepresented; you must not */ ;/* claim that you wrote the original software. If you use this software */ ;/* in a product, an acknowledgment in the product documentation would be */ ;/* appreciated but is not required. */ ;/* 2. Altered source versions must be plainly marked as such, and must not */ ;/* be misrepresented as being the original software. */ ;/* 3. This notice may not be removed or altered from any source */ ;/* distribution. */ ;/* */ ;/*****************************************************************************/ ; Error codes JOY_ERR_OK = 0 ; No error JOY_ERR_NO_DRIVER = 1 ; No driver available JOY_ERR_CANNOT_LOAD = 2 ; Error loading driver JOY_ERR_INV_DRIVER = 3 ; Invalid driver JOY_ERR_NO_DEVICE = 4 ; Device (hardware) not found ;**************************************************************************** ;* * ;* ser-kernel.inc * ;* * ;* Serial communication API * ;* * ;* * ;* * ;*(C) 2003-2006, Ullrich von Bassewitz * ;* 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. * ;* * ;**************************************************************************** ;------------------------------------------------------------------------------ ; The driver header .struct SER_HDR ID .byte 3 ; Contains 0x73, 0x65, 0x72 ("ser") VERSION .byte 1 ; Interface version LIBREF .addr ; Library reference JUMPTAB .struct INSTALL .addr ; INSTALL routine UNINSTALL .addr ; UNINSTALL routine OPEN .addr ; OPEN routine CLOSE .addr ; CLOSE routine GET .addr ; GET routine PUT .addr ; PUT routine STATUS .addr ; STATUS routine IOCTL .addr ; IOCTL routine IRQ .addr ; IRQ routine .endstruct .endstruct ;------------------------------------------------------------------------------ ; The SER API version, stored SER_HDR::VERSION SER_API_VERSION = $02 ;------------------------------------------------------------------------------ ; ser_params .struct SER_PARAMS BAUDRATE .byte ; Baudrate DATABITS .byte ; Number of data bits STOPBITS .byte ; Number of stop bits PARITY .byte ; Parity setting HANDSHAKE .byte ; Type of handshake to use .endstruct ;------------------------------------------------------------------------------ ; Serial parameters ; Baudrate SER_BAUD_45_5 = $00 SER_BAUD_50 = $01 SER_BAUD_75 = $02 SER_BAUD_110 = $03 SER_BAUD_134_5 = $04 SER_BAUD_150 = $05 SER_BAUD_300 = $06 SER_BAUD_600 = $07 SER_BAUD_1200 = $08 SER_BAUD_1800 = $09 SER_BAUD_2400 = $0A SER_BAUD_3600 = $0B SER_BAUD_4800 = $0C SER_BAUD_7200 = $0D SER_BAUD_9600 = $0E SER_BAUD_19200 = $0F SER_BAUD_38400 = $10 SER_BAUD_57600 = $11 SER_BAUD_115200 = $12 SER_BAUD_230400 = $13 SER_BAUD_31250 = $14 SER_BAUD_62500 = $15 SER_BAUD_56_875 = $16 ; Data bit settings SER_BITS_5 = $00 SER_BITS_6 = $01 SER_BITS_7 = $02 SER_BITS_8 = $03 ; Stop bit settings SER_STOP_1 = $00 SER_STOP_2 = $01 ; Parity SER_PAR_NONE = $00 SER_PAR_ODD = $01 SER_PAR_EVEN = $02 SER_PAR_MARK = $03 SER_PAR_SPACE = $04 ; Handshake SER_HS_NONE = $00 ; No handshake SER_HS_HW = $01 ; Hardware (RTS/CTS) handshake SER_HS_SW = $02 ; Software handshake ; Bit masks to mask out things from the status returned by ser_status SER_STATUS_PE = $01 ; Parity error SER_STATUS_FE = $02 ; Framing error SER_STATUS_OE = $04 ; Overrun error SER_STATUS_DCD = $20 ; NOT data carrier detect SER_STATUS_DSR = $40 ; NOT data set ready ;------------------------------------------------------------------------------ ; Variables .global _ser_drv ; Pointer to driver ;------------------------------------------------------------------------------ ; Driver entry points .global ser_install .global ser_uninstall .global ser_open .global ser_close .global ser_get .global ser_put .global ser_status .global ser_ioctl .global ser_irq ;------------------------------------------------------------------------------ ; C callable functions .global _ser_load_driver .global _ser_unload .global _ser_install .global _ser_uninstall .global _ser_open .global _ser_close .global _ser_get .global _ser_put .global _ser_status .global _ser_ioctl .global _ser_clear_ptr ; ; C64 generic definitions. Stolen from Elite128 ; ; --------------------------------------------------------------------------- ; Zero page, Commodore stuff VARTAB := $2D ; Pointer to start of BASIC variables MEMSIZE := $37 ; Pointer to highest BASIC RAM location (+1) TXTPTR := $7A ; Pointer into BASIC source code TIME := $A0 ; 60 HZ clock FNAM_LEN := $B7 ; Length of filename SECADR := $B9 ; Secondary address DEVNUM := $BA ; Device number FNAM := $BB ; Pointer to filename KEY_COUNT := $C6 ; Number of keys in input buffer RVS := $C7 ; Reverse flag CURS_FLAG := $CC ; 1 = cursor off CURS_BLINK := $CD ; Blink counter CURS_CHAR := $CE ; Character under the cursor CURS_STATE := $CF ; Cursor blink state SCREEN_PTR := $D1 ; Pointer to current char in text screen CURS_X := $D3 ; Cursor column CURS_Y := $D6 ; Cursor row CRAM_PTR := $F3 ; Pointer to current char in color RAM FREKZP := $FB ; Five unused bytes BASIC_BUF := $200 ; Location of command-line BASIC_BUF_LEN = 89 ; Maximum length of command-line CHARCOLOR := $286 CURS_COLOR := $287 ; Color under the cursor PALFLAG := $2A6 ; $01 = PAL, $00 = NTSC KBDREPEAT := $28a KBDREPEATRATE := $28b KBDREPEATDELAY := $28c ; --------------------------------------------------------------------------- ; Kernal routines ; Direct entries CLRSCR := $E544 KBDREAD := $E5B4 NMIEXIT := $FEBC ; --------------------------------------------------------------------------- ; Vector and other locations IRQVec := $0314 BRKVec := $0316 NMIVec := $0318 ; --------------------------------------------------------------------------- ; Screen size XSIZE = 40 YSIZE = 25 ; --------------------------------------------------------------------------- ; I/O: VIC VIC := $D000 VIC_SPR0_X := $D000 VIC_SPR0_Y := $D001 VIC_SPR1_X := $D002 VIC_SPR1_Y := $D003 VIC_SPR2_X := $D004 VIC_SPR2_Y := $D005 VIC_SPR3_X := $D006 VIC_SPR3_Y := $D007 VIC_SPR4_X := $D008 VIC_SPR4_Y := $D009 VIC_SPR5_X := $D00A VIC_SPR5_Y := $D00B VIC_SPR6_X := $D00C VIC_SPR6_Y := $D00D VIC_SPR7_X := $D00E VIC_SPR7_Y := $D00F VIC_SPR_HI_X := $D010 VIC_SPR_ENA := $D015 VIC_SPR_EXP_Y := $D017 VIC_SPR_EXP_X := $D01D VIC_SPR_MCOLOR := $D01C VIC_SPR_BG_PRIO := $D01B VIC_SPR_MCOLOR0 := $D025 VIC_SPR_MCOLOR1 := $D026 VIC_SPR0_COLOR := $D027 VIC_SPR1_COLOR := $D028 VIC_SPR2_COLOR := $D029 VIC_SPR3_COLOR := $D02A VIC_SPR4_COLOR := $D02B VIC_SPR5_COLOR := $D02C VIC_SPR6_COLOR := $D02D VIC_SPR7_COLOR := $D02E VIC_CTRL1 := $D011 VIC_CTRL2 := $D016 VIC_HLINE := $D012 VIC_LPEN_X := $D013 VIC_LPEN_Y := $D014 VIC_VIDEO_ADR := $D018 VIC_IRR := $D019 ; Interrupt request register VIC_IMR := $D01A ; Interrupt mask register VIC_BORDERCOLOR := $D020 VIC_BG_COLOR0 := $D021 VIC_BG_COLOR1 := $D022 VIC_BG_COLOR2 := $D023 VIC_BG_COLOR3 := $D024 ; 128 stuff: VIC_KBD_128 := $D02F ; Extended kbd bits (visible in 64 mode) VIC_CLK_128 := $D030 ; Clock rate register (visible in 64 mode) ; --------------------------------------------------------------------------- ; I/O: SID SID := $D400 SID_S1Lo := $D400 SID_S1Hi := $D401 SID_PB1Lo := $D402 SID_PB1Hi := $D403 SID_Ctl1 := $D404 SID_AD1 := $D405 SID_SUR1 := $D406 SID_S2Lo := $D407 SID_S2Hi := $D408 SID_PB2Lo := $D409 SID_PB2Hi := $D40A SID_Ctl2 := $D40B SID_AD2 := $D40C SID_SUR2 := $D40D SID_S3Lo := $D40E SID_S3Hi := $D40F SID_PB3Lo := $D410 SID_PB3Hi := $D411 SID_Ctl3 := $D412 SID_AD3 := $D413 SID_SUR3 := $D414 SID_FltLo := $D415 SID_FltHi := $D416 SID_FltCtl := $D417 SID_Amp := $D418 SID_ADConv1 := $D419 SID_ADConv2 := $D41A SID_Noise := $D41B SID_Read3 := $D41C ; --------------------------------------------------------------------------- ; I/O: VDC (128 only) VDC_INDEX := $D600 VDC_DATA := $D601 ; --------------------------------------------------------------------------- ; I/O: 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 ; --------------------------------------------------------------------------- ; Super CPU SCPU_VIC_Bank1 := $D075 SCPU_Slow := $D07A SCPU_Fast := $D07B SCPU_EnableRegs := $D07E SCPU_DisableRegs:= $D07F SCPU_Detect := $D0BC ; --------------------------------------------------------------------------- ; Processor Port at $01 LORAM = $01 ; Enable the basic rom HIRAM = $02 ; Enable the kernal rom IOEN = $04 ; Enable I/O CASSDATA = $08 ; Cassette data CASSPLAY = $10 ; Cassette: Play CASSMOT = $20 ; Cassette motor on TP_FAST = $80 ; Switch Rossmoeller TurboProcess to fast mode RAMONLY = $F8 ; (~(LORAM | HIRAM | IOEN)) & $FF ; Convert characters to screen codes ; Helper macro that converts and outputs one character .macro _scrcode char .if (char < 256) .byte (char + 128) .else .error "scrcode: Character constant out of range" .endif .endmacro .macro scrcode arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 ; Bail out if next argument is empty .if .blank (arg1) .exitmacro .endif ; Check for a string .if .match ({arg1}, "") ; Walk over all string chars .repeat .strlen (arg1), i _scrcode {.strat (arg1, i)} .endrepeat ; Check for a number .elseif .match (.left (1, {arg1}), 0) ; Just output the number _scrcode arg1 ; Check for a character .elseif .match (.left (1, {arg1}), 'a') ; Just output the character _scrcode arg1 ; Anything else is an error .else .error "scrcode: invalid argument type" .endif ; Call the macro recursively with the remaining args scrcode arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 .endmacro ; 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 ; Convert characters to screen codes ; Helper macro that converts and outputs one character .macro _scrcode char .if (char >= 0) .and (char <= 31) .byte (char + 64) .elseif (char >= 32) .and (char <= 95) .byte (char - 32) .elseif (char >= 96) .and (char <= 127) .byte char .elseif (char >= 128) .and (char <= 159) .byte (char + 64) .elseif (char >= 160) .and (char <= 223) .byte (char - 32) .elseif (char >= 224) .and (char <= 255) .byte char .else .error "scrcode: Character constant out of range" .endif .endmacro .macro scrcode arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 ; Bail out if next argument is empty .if .blank (arg1) .exitmacro .endif ; Check for a string .if .match ({arg1}, "") ; Walk over all string chars .repeat .strlen (arg1), i _scrcode {.strat (arg1, i)} .endrepeat ; Check for a number .elseif .match (.left (1, {arg1}), 0) ; Just output the number _scrcode arg1 ; Check for a character .elseif .match (.left (1, {arg1}), 'a') ; Just output the character _scrcode arg1 ; Anything else is an error .else .error "scrcode: invalid argument type" .endif ; Call the macro recursively with the remaining args scrcode arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 .endmacro ;**************************************************************************** ;* * ;* ser-error.inc * ;* * ;* Serial communication API * ;* * ;* * ;* * ;* (C) 2003-2012, Ullrich von Bassewitz * ;* Roemerstrasse 52 * ;* D-70794 Filderstadt * ;* EMail: uz@cc65.org * ;* * ;* * ;*This software is provided 'as-is', without any expressed or implied * ;*warranty. In no event will the authors be held liable for any damages * ;*arising from the use of this software. * ;* * ;*Permission is granted to anyone to use this software for any purpose, * ;*including commercial applications, and to alter it and redistribute it * ;*freely, subject to the following restrictions: * ;* * ;*1. The origin of this software must not be misrepresented; you must not * ;* claim that you wrote the original software. If you use this software * ;* in a product, an acknowledgment in the product documentation would be * ;* appreciated but is not required. * ;*2. Altered source versions must be plainly marked as such, and must not * ;* be misrepresented as being the original software. * ;*3. This notice may not be removed or altered from any source * ;* distribution. * ;* * ;**************************************************************************** ;------------------------------------------------------------------------------ ; Error codes .enum SER_ERR_OK ; Not an error - relax SER_ERR_NO_DRIVER ; No driver available SER_ERR_CANNOT_LOAD ; Error loading driver SER_ERR_INV_DRIVER ; Invalid driver SER_ERR_NO_DEVICE ; Device (hardware) not found SER_ERR_BAUD_UNAVAIL ; Baud rate not available SER_ERR_NO_DATA ; Nothing to read SER_ERR_OVERFLOW ; No room in send buffer SER_ERR_INIT_FAILED ; Initialization failed SER_ERR_INV_IOCTL ; IOCTL not supported SER_ERR_INSTALLED ; A driver is already installed SER_ERR_NOT_OPEN ; Driver not open SER_ERR_COUNT ; Special: Number of error codes .endenum ; ; Definitions for CBM file types. From cbm.h ; ; Ullrich von Bassewitz, 2012-06-03 ; ; Define bitmapped constants for the table entries .enum CBM_T_REG = $10 ; Bit set for regular files CBM_T_SEQ = $10 ; Sequential file CBM_T_PRG = $11 ; Program file CBM_T_USR = $12 ; User file CBM_T_REL = $13 ; Relative file CBM_T_VRP = $14 ; Vorpal fast-loadable format CBM_T_DEL = $00 ; Deleted file CBM_T_CBM = $01 ; 1581 sub-partition CBM_T_DIR = $02 ; IDE64 and CMD sub-directory CBM_T_LNK = $03 ; IDE64 soft-link CBM_T_OTHER = $04 ; File-type not recognized CBM_T_HEADER = $05 ; Disk header / title .endenum ; The following function maps the start character for a file type to ; one of the file types above. Note: 'd' will always mapped to CBM_T_DEL. ; The calling function has to look at the following character to determine ; if the file type is actually CBM_T_DIR. ; ; unsigned char __fastcall__ _cbm_filetype (unsigned char c); .global __cbm_filetype ; ; Ullrich von Bassewitz, 05.06.1999 ; ; Predefined file handles STDIN_FILENO = 0 STDOUT_FILENO = 1 STDERR_FILENO = 2 ; File mode constants, must match the values in the C headers O_RDONLY = $01 O_WRONLY = $02 O_RDWR = $03 O_CREAT = $10 O_TRUNC = $20 O_APPEND = $40 O_EXCL = $80 ; ; 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 TR0 := $0C TR1 := $0D TR2 := $0E TR3 := $0F TR4 := $10 TR5 := $11 TR6 := $12 TR7 := $13 PTR_READ_DEST := $2C ; used for XFREAD and XWRITE only in telemon 3.x HRSX := $46 HRSY := $47 HRS1 := $4D HRS2 := $4F HRS3 := $51 HRS4 := $53 HRS5 := $55 HRSFB := $57 ; 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 ; --------------------------------------------------------------------------- ; 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) XRD0 = $08 XRDW0 = $0C XWR0 = $10 XWSTR0 = $14 ; write a string in text mode XTEXT = $19 XHIRES = $1A XFILLM = $1C XMINMA = $1F XVARS = $24 ; only in TELEMON 3.x, in telemon 2.4, it's XNOMFI ($24) XFREAD = $27 ; only in TELEMON 3.x XOPEN = $30 ; only in TELEMON 3.x XCOSCR = $34 ; switch off cursor XCSSCR = $35 ; switch on cursor XCLOSE = $3A ; only in TELEMON 3.x Close file XFWRITE = $3B ; only in TELEMON 3.x write file XSONPS = $40 XOUPS = $42 ; send Oups sound into PSG XPLAY = $43 XSOUND = $44 XMUSIC = $45 XZAP = $46 XSHOOT = $47 XMKDIR = $4B ; create a folder. Only available in telemon 3.x XRM = $4D ; remove a folder or a file. Only available in telemon 3.x 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 XDRAWR = $8E ; draw a line XCIRCL = $8F XCURSE = $90 XCURMO = $91 XPAPER = $92 XINK = $93 XBOX = $94 XABOX = $95 XFILL = $96 XCHAR = $97 XSCHAR = $98 ; draw a string in hires XEXPLO = $9C XPING = $9D ; --------------------------------------------------------------------------- ; ROM entries variables PWD_PTR = $00 ; --------------------------------------------------------------------------- ; Page $200 SCRX := $220 SCRY := $224 ADSCRL := $218 ADSCRH := $21C HRSPAT := $2AA ; hires pattern : it's used to draw pattern for a line or a circle IRQVECTOR := $2FA ; --------------------------------------------------------------------------- ; Page $500 BUFNOM := $517 BUFEDT := $590 MAX_BUFEDT_LENGTH=110 ; Hardware CH376_DATA := $340 CH376_COMMAND := $341 ; MACRO .macro BRK_TELEMON value .byte $00,value .endmacro ; ; 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 ; 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 ;------------------------------------------------------------------------- ; 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 .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 ; ; Zero page variables and I/O definitions for the CBM 510 ; ; Taken from a kernal disassembly done by myself in 2000/2001. ; ; 2001-09-13, Ullrich von Bassewitz ; 2014-04-02, Greg King ;----------------------------------------------------------------------------- ; Zeropage stuff ExecReg := $00 ; Controls execution memory bank IndReg := $01 ; Controls indirect indexed load-store bank TXTPTR := $85 ; Far pointer into BASIC source code FNAM := $90 ; Far pointer to LOAD/SAVE file-name FNAM_LEN := $9D ; Holds length of file-name ; --------------------------------------------------------------------------- ; Screen size XSIZE = 40 YSIZE = 25 ;----------------------------------------------------------------------------- ; I/O Definitions ; Note: These numbers aren't addresses. They are offsets from the start of ; each chip's register set. They are used in the indirect indexed addressing ; mode. ; I/O $d800: VIC-II VIC_SPR0_X = $00 VIC_SPR0_Y = $01 VIC_SPR1_X = $02 VIC_SPR1_Y = $03 VIC_SPR2_X = $04 VIC_SPR2_Y = $05 VIC_SPR3_X = $06 VIC_SPR3_Y = $07 VIC_SPR4_X = $08 VIC_SPR4_Y = $09 VIC_SPR5_X = $0A VIC_SPR5_Y = $0B VIC_SPR6_X = $0C VIC_SPR6_Y = $0D VIC_SPR7_X = $0E VIC_SPR7_Y = $0F VIC_SPR_HI_X = $10 VIC_SPR_ENA = $15 VIC_SPR_EXP_Y = $17 VIC_SPR_EXP_X = $1D VIC_SPR_MCOLOR = $1C VIC_SPR_BG_PRIO = $1B VIC_SPR_MCOLOR0 = $25 VIC_SPR_MCOLOR1 = $26 VIC_SPR0_COLOR = $27 VIC_SPR1_COLOR = $28 VIC_SPR2_COLOR = $29 VIC_SPR3_COLOR = $2A VIC_SPR4_COLOR = $2B VIC_SPR5_COLOR = $2C VIC_SPR6_COLOR = $2D VIC_SPR7_COLOR = $2E VIC_CTRL1 = $11 VIC_CTRL2 = $16 VIC_HLINE = $12 VIC_LPEN_X = $13 VIC_LPEN_Y = $14 VIC_VIDEO_ADR = $18 VIC_IRR = $19 ; Interrupt request register VIC_IMR = $1A ; Interrupt mask register VIC_BORDERCOLOR = $20 VIC_BG_COLOR0 = $21 VIC_BG_COLOR1 = $22 VIC_BG_COLOR2 = $23 VIC_BG_COLOR3 = $24 ; I/O $da00: SID 6581 SID_S1Lo = $00 SID_S1Hi = $01 SID_PB1Lo = $02 SID_PB1Hi = $03 SID_Ctl1 = $04 SID_AD1 = $05 SID_SUR1 = $06 SID_S2Lo = $07 SID_S2Hi = $08 SID_PB2Lo = $09 SID_PB2Hi = $0A SID_Ctl2 = $0B SID_AD2 = $0C SID_SUR2 = $0D SID_S3Lo = $0E SID_S3Hi = $0F SID_PB3Lo = $10 SID_PB3Hi = $11 SID_Ctl3 = $12 SID_AD3 = $13 SID_SUR3 = $14 SID_FltLo = $15 SID_FltHi = $16 SID_FltCtl = $17 SID_Amp = $18 SID_ADConv1 = $19 SID_ADConv2 = $1A SID_Noise = $1B SID_Read3 = $1C ; I/O $db00: CIA 6526, Inter Process Communication ; I/O $dc00: CIA 6526 .struct CIA PRA .byte PRB .byte DDRA .byte DDRB .byte .union .struct TALO .byte TAHI .byte .endstruct TA .word .endunion .union .struct TBLO .byte TBHI .byte .endstruct TB .word .endunion TOD10 .byte TODSEC .byte TODMIN .byte TODHR .byte SDR .byte ICR .byte CRA .byte CRB .byte .endstruct ; I/O $dd00: ACIA 6551 .struct ACIA DATA .byte STATUS .byte CMD .byte CTRL .BYTE .endstruct ; I/O $de00: Triport #1 6525 ; I/O $df00: Triport #2 6525 .struct TPI PRA .byte PRB .byte .union PRC .byte INT .byte .endunion DDRA .byte DDRB .byte .union DDRC .byte IMR .byte .endunion CR .byte AIR .byte .endstruct ;----------------------------------------------------------------------------- ; Our video memory address COLOR_RAM := $D400 ; System bank ;----------------------------------------------------------------------------- BASIC_BUF := $FB5E ; Bank 0 location of command-line BASIC_BUF_LEN = 162 ; Maximum length of command-line ;------------------------------------------------------------------------------- ; gamate.inc ; ; Gamate system specific definitions ; ; (w) 2015 Groepaz/Hitmen (groepaz@gmx.net) ; based on technical reference by PeT (mess@utanet.at) ;------------------------------------------------------------------------------- ; look at gamate.h for comments, they are not duplicated here AUDIO_BASE = $4000 JOY_DATA = $4400 JOY_DATA_UP = $01 JOY_DATA_DOWN = $02 JOY_DATA_LEFT = $04 JOY_DATA_RIGHT = $08 JOY_DATA_FIRE_A = $10 JOY_DATA_FIRE_B = $20 JOY_DATA_START = $40 JOY_DATA_SELECT = $80 LCD_WIDTH = 160 LCD_HEIGHT = 152 LCD_BASE = $5000 LCD_MODE = $5001 LCD_XPOS = $5002 LCD_YPOS = $5003 LCD_X = $5004 LCD_Y = $5005 LCD_READ = $5006 LCD_DATA = $5007 LCD_MODE_INC_X = $00 LCD_MODE_INC_Y = $40 LCD_XPOS_PLANE1 = $00 LCD_XPOS_PLANE2 = $80 ; constants for the conio implementation charsperline = (LCD_WIDTH / 8) screenrows = (LCD_HEIGHT / 8) CH_HLINE = 1 CH_VLINE = 2 COLOR_WHITE = 0 COLOR_GREY2 = 1 COLOR_GREY1 = 2 COLOR_BLACK = 3 ; bios zp usage: ZP_NMI_4800 = $0a ZP_IRQ_COUNT = $0b ZP_IRQ_CTRL = $0c ZP_IRQ_CNT1 = $0e ZP_IRQ_CNT2 = $0f ZP_IRQ_CNT3 = $10 ZP_IRQ_CNT4 = $11 ZP_NMI_FLAG = $e8 ;*****************************************************************************/ ;* */ ;* tgi-vectorfont.inc */ ;* */ ;* TGI vector font definitions */ ;* */ ;* */ ;* */ ;* (C) 2009, Ullrich von Bassewitz */ ;* Roemerstrasse 52 */ ;* D-70794 Filderstadt */ ;* EMail: uz@cc65.org */ ;* */ ;* */ ;* This software is provided 'as-is', without any expressed or implied */ ;* warranty. In no event will the authors be held liable for any damages */ ;* arising from the use of this software. */ ;* */ ;* Permission is granted to anyone to use this software for any purpose, */ ;* including commercial applications, and to alter it and redistribute it */ ;* freely, subject to the following restrictions: */ ;* */ ;* 1. The origin of this software must not be misrepresented; you must not */ ;* claim that you wrote the original software. If you use this software */ ;* in a product, an acknowledgment in the product documentation would be */ ;* appreciated but is not required. */ ;* 2. Altered source versions must be plainly marked as such, and must not */ ;* be misrepresented as being the original software. */ ;* 3. This notice may not be removed or altered from any source */ ;* distribution. */ ;* */ ;*****************************************************************************/ ;------------------------------------------------------------------------------ ; Vectorfont constants TGI_VF_VERSION = $00 ; File version number TGI_VF_FIRSTCHAR = $20 ; First char in file TGI_VF_LASTCHAR = $7E ; Last char in file TGI_VF_CCOUNT = (TGI_VF_LASTCHAR - TGI_VF_FIRSTCHAR + 1) ;------------------------------------------------------------------------------ ; TCH file header and font data structures ; TCH file header .struct TGI_VF_HDR MAGIC .byte 3 ; "TCH" VERSION .byte 1 ; Version number SIZE .word 1 ; Font data size .endstruct ; Font data loaded directly from file .struct TGI_VECTORFONT TOP .byte ; Height of char BOTTOM .byte ; Descender HEIGHT .byte ; Maximum char height WIDTHS .byte ::TGI_VF_CCOUNT ; Char widths CHARS .word ::TGI_VF_CCOUNT ; Pointer to character defs OPS .byte ; Actually dynamic .endstruct ;------------------------------------------------------------------------------ ; C callable functions .global _tgi_vectorchar .ifndef DYN_DRV DYN_DRV = 1 .endif .macro module_header module_label .if DYN_DRV .segment "HEADER" .else .data .export module_label module_label: .endif .endmacro ;*****************************************************************************/ ;* */ ;* o65.inc */ ;* */ ;* Definitions for the o65 file format */ ;* */ ;* */ ;* */ ;* (C) 2002-2009, Ullrich von Bassewitz */ ;* Roemerstrasse 52 */ ;* D-70794 Filderstadt */ ;* EMail: uz@cc65.org */ ;* */ ;* */ ;* This software is provided 'as-is', without any expressed or implied */ ;* warranty. In no event will the authors be held liable for any damages */ ;* arising from the use of this software. */ ;* */ ;* Permission is granted to anyone to use this software for any purpose, */ ;* including commercial applications, and to alter it and redistribute it */ ;* freely, subject to the following restrictions: */ ;* */ ;* 1. The origin of this software must not be misrepresented; you must not */ ;* claim that you wrote the original software. If you use this software */ ;* in a product, an acknowledgment in the product documentation would be */ ;* appreciated but is not required. */ ;* 2. Altered source versions must be plainly marked as such, and must not */ ;* be misrepresented as being the original software. */ ;* 3. This notice may not be removed or altered from any source */ ;* distribution. */ ;* */ ;*****************************************************************************/ ; This files exports structures and constants to handle the o65 relocatable ; file format as defined by Andre Fachat. ; The o65 header structure (6502 format) .struct O65_HDR MARKER .byte 2 ; Non-C64 marker: $01 $00 MAGIC .byte 3 ; o65 magic: "o65" VERSION .byte 1 ; Version number MODE .word ; Mode word TBASE .word ; Original text (code) segment address TLEN .word ; Size of text (code) segment DBASE .word ; Original data segment address DLEN .word ; Size of data segment BBASE .word ; Original bss segment address BLEN .word ; Size of bss segment ZBASE .word ; Original zp segment address ZLEN .word ; Size of zp segment STACK .word ; Stacksize needed .endstruct ; Marker, magic and version number O65_MARKER_0 = $01 O65_MARKER_1 = $00 O65_MAGIC_0 = $6F ; 'o' O65_MAGIC_1 = $36 ; '6' O65_MAGIC_2 = $35 ; '5' O65_VERSION = $00 ; Defines for the mode word O65_CPU_65816 = $8000 ; Executable is for 65816 O65_CPU_6502 = $0000 ; Executable is for the 6502 O65_CPU_MASK = $8000 ; Mask to extract CPU type O65_RELOC_PAGE = $4000 ; Page wise relocation O65_RELOC_BYTE = $0000 ; Byte wise relocation O65_RELOC_MASK = $4000 ; Mask to extract relocation type O65_SIZE_32BIT = $2000 ; All size words are 32bit O65_SIZE_16BIT = $0000 ; All size words are 16bit O65_SIZE_MASK = $2000 ; Mask to extract size O65_FTYPE_OBJ = $1000 ; Object file O65_FTYPE_EXE = $0000 ; Executable file O65_FTYPE_MASK = $1000 ; Mask to extract type O65_ADDR_SIMPLE = $0800 ; Simple addressing O65_ADDR_DEFAULT = $0000 ; Default addressing O65_ADDR_MASK = $0800 ; Mask to extract addressing O65_CHAIN = $0400 ; Chained file, another one follows O65_CHAIN_MASK = $0400 ; Mask to extract chain flag O65_BSSZERO = $0200 ; BSS segment must be zeroed O65_BSSZERO_MASK = $0200 ; Mask to extract bss zero flag ; The following is used if O65_CPU == 6502 O65_CPU2_6502 = $0000 ; Executable is for 6502 O65_CPU2_65C02 = $0010 ; Executable is for 65C02 O65_CPU2_65SC02 = $0020 ; Executable is for 65SC02 O65_CPU2_65CE02 = $0030 ; Executable is for 65CE02 O65_CPU2_6502X = $0040 ; Executable is for NMOS 6502 O65_CPU2_65816_EMU = $0050 ; Executable is for 65816 in emul mode O65_CPU2_MASK = $00F0 ; Mask to extract CPU2 field O65_ALIGN_1 = $0000 ; Bytewise alignment O65_ALIGN_2 = $0001 ; Align words O65_ALIGN_4 = $0002 ; Align longwords O65_ALIGN_256 = $0003 ; Align pages (256 bytes) O65_ALIGN_MASK = $0003 ; Mask to extract alignment ; The mode word as generated by the ld65 linker O65_MODE_CC65 = O65_CPU_6502 | O65_RELOC_BYTE | O65_SIZE_16BIT | O65_FTYPE_EXE | O65_ADDR_SIMPLE | O65_ALIGN_1 ; Relocation type codes O65_RTYPE_WORD = $80 O65_RTYPE_HIGH = $40 O65_RTYPE_LOW = $20 O65_RTYPE_SEGADDR = $C0 O65_RTYPE_SEG = $A0 O65_RTYPE_MASK = $E0 ; Segment IDs O65_SEGID_UNDEF = $00 O65_SEGID_ABS = $01 O65_SEGID_TEXT = $02 O65_SEGID_DATA = $03 O65_SEGID_BSS = $04 O65_SEGID_ZP = $05 O65_SEGID_MASK = $07 ; Option tags O65_OPT_FILENAME = 0 O65_OPT_OS = 1 O65_OPT_ASM = 2 O65_OPT_AUTHOR = 3 O65_OPT_TIMESTAMP = 4 ; Operating system codes for O65_OPT_OS O65_OS_OSA65 = 1 O65_OS_LUNIX = 2 O65_OS_CC65 = 3 O65_OS_OPENCBM = 4 ; Load errors O65_LOAD_OK = 0 ; Module load successful O65_LOAD_ERR_READ = 1 ; Read error O65_LOAD_ERR_HDR = 2 ; Header error O65_LOAD_ERR_OS = 3 ; Wrong OS O65_LOAD_ERR_FMT = 4 ; Data format error O65_LOAD_ERR_MEM = 5 ; Not enough memory ;/*****************************************************************************/ ;/* */ ;/* joy-kernel.inc */ ;/* */ ;/* Internally used joystick functions */ ;/* */ ;/* */ ;/* */ ;/* (C) 2002-2006, Ullrich von Bassewitz */ ;/* 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 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 ;/*****************************************************************************/ ;/* */ ;/* 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 ; 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 ; Convert characters to screen codes ; Helper macro that converts and outputs one character .macro _scrcode char .if (char < 256) .byte <(.strat ("h@dbdlhh", char >> 5) << 4) ^ char .else .error "scrcode: Character constant out of range" .endif .endmacro .macro scrcode arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 ; Bail out if next argument is empty .if .blank ({arg1}) .exitmacro .endif ; Check for a string .if .match ({arg1}, "") ; Walk over all string chars .repeat .strlen (arg1), i _scrcode {.strat (arg1, i)} .endrepeat ; Check for a number .elseif .match (.left (1, {arg1}), 0) ; Just output the number _scrcode arg1 ; Check for a character .elseif .match (.left (1, {arg1}), 'a') ; Just output the character _scrcode arg1 ; Anything else is an error .else .error "scrcode: invalid argument type" .endif ; Call the macro recursively with the remaining args scrcode arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 .endmacro ; opcodes.inc ; ca65 6502 - opcode definitions, mainly for self modifying code ; ; Christian 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 .endif ; ; Vic20 generic definitions. Stolen mostly from c64.inc - Steve Schmidtke ; ; --------------------------------------------------------------------------- ; Zero page, Commodore stuff VARTAB := $2D ; Pointer to start of BASIC variables MEMSIZE := $37 ; Pointer to highest BASIC RAM location (+1) TXTPTR := $7A ; Pointer into BASIC source code TIME := $A0 ; 60HZ clock FNAM_LEN := $B7 ; Length of filename SECADR := $B9 ; Secondary address DEVNUM := $BA ; Device number FNAM := $BB ; Pointer to filename KEY_COUNT := $C6 ; Number of keys in input buffer RVS := $C7 ; Reverse flag CURS_FLAG := $CC ; 1 = cursor off CURS_BLINK := $CD ; Blink counter CURS_CHAR := $CE ; Character under the cursor CURS_STATE := $CF ; Cursor blink state SCREEN_PTR := $D1 ; Pointer to current char in text screen CURS_X := $D3 ; Cursor column CURS_Y := $D6 ; Cursor row CRAM_PTR := $F3 ; Pointer to current char in color RAM BASIC_BUF := $200 ; Location of command-line BASIC_BUF_LEN = 89 ; Maximum length of command-line CHARCOLOR := $286 CURS_COLOR := $287 ; Color under the cursor KBDREPEAT := $28a KBDREPEATRATE := $28b KBDREPEATDELAY := $28c ; --------------------------------------------------------------------------- ; Screen size XSIZE = 22 YSIZE = 23 ; --------------------------------------------------------------------------- ; Kernal routines ; Direct entries CLRSCR := $E55F KBDREAD := $E5CF ; --------------------------------------------------------------------------- ; Vector and other locations IRQVec := $0314 BRKVec := $0316 NMIVec := $0318 ; --------------------------------------------------------------------------- ; I/O: 6560 VIC VIC := $9000 VIC_LINES := $9003 ; Screen lines, bit 7 is bit 0 from VIC_HLINE VIC_HLINE := $9004 ; Rasterline, bits 1-8 VIC_COLOR := $900F ; Border and background color ; --------------------------------------------------------------------------- ; I/O: 6522 VIA1 VIA1 := $9110 ; VIA1 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_CR := 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 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_CR := 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 ; ; 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 KBDREPEAT := $540 KBDREPEATRATE := $541 KBDREPEATDELAY := $542 ; --------------------------------------------------------------------------- ; 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_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 ; supervision symbols ; supervision 65c02s ; in cc65 up to 2.9.1 65c02 means 65sc02 lcd_addr = $4000 LCD_LINESIZE = $30 LCD_WIDTH = 160 LCD_HEIGHT = 160 ; 2 bit per pixel, packed lcd_width = $2000 lcd_height = $2001 lcd_xpos = $2002 ; in pixel, bit 0+1 not used lcd_ypos = $2003 ; weird sv_port_r = $2021 sv_port_w = $2022 sv_timer_count = $2023 ; read for quitting sv_timer_quit = $2024 ; bit 0 timer, bit 1 dma sv_irq_source = $2027 SV_IRQ_REQUEST_TIMER = 1 SV_IRQ_REQUEST_DMA = 2 ; bit 5,6,7 select bank at 0x8000 sv_bank = $2026 SV_NMI_ENABLE_ON = 1 SV_IRQ_ENABLE_TIMER = 2 SV_IRQ_ENABLE_DMA = 4 SV_LCD_ON = 8 SV_TIMER_MODE_240Hz = $10 ; else 15360 ; low activ/pressed sv_control = $2020 SV_RIGHT = 1 SV_LEFT = 2 SV_DOWN = 4 SV_UP = 8 SV_BUTTONB = $10 SV_BUTTONA = $20 SV_SELECT = $40 SV_START = $80 ; frequency=125000/counter sv_audio_right_counter = $2010 ;word sv_audio_left_counter = $2014 SV_AUDIO_ON =$40 ;bits 0..3 volume ; bit 4 ? ; bit 5 ? sv_audio_right_control = $2012 sv_audio_left_control = $2016 ; write activates tone for x/60 sec (0 means 256) sv_audio_right_timer = $2013 sv_audio_left_timer = $2017 ;read for irq quitting sv_dma_quit = $2025 sv_dma_on = $201c ; bit 7 true start, false stop sv_dma_start = $2018 ; word sv_dma_size = $201a ; *32 samples sv_dma_control = $201b ; bit 0,1 speed: 0 15360, 11 15360/4 ; bit 2,3 volume: 0 silent, 11 loud sv_noise_volume = $2028 ; and frequency sv_noise_timer = $2029 sv_noise_control = $202a ;/*****************************************************************************/ ;/* */ ;/* mouse-kernel.inc */ ;/* */ ;/* Mouse API */ ;/* */ ;/* */ ;/* */ ;/* (C) 2003-2009, Ullrich von Bassewitz */ ;/* Roemerstrasse 52 */ ;/* D-70794 Filderstadt */ ;/* EMail: uz@cc65.org */ ;/* */ ;/* */ ;/* */ ;/* */ ;/* This software is provided 'as-is', without any expressed or implied */ ;/* warranty. In no event will the authors be held liable for any damages */ ;/* arising from the use of this software. */ ;/* */ ;/* Permission is granted to anyone to use this software for any purpose, */ ;/* including commercial applications, and to alter it and redistribute it */ ;/* freely, subject to the following restrictions: */ ;/* */ ;/* 1. The origin of this software must not be misrepresented; you must not */ ;/* claim that you wrote the original software. If you use this software */ ;/* in a product, an acknowledgment in the product documentation would be */ ;/* appreciated but is not required. */ ;/* 2. Altered source versions must be plainly marked as such, and must not */ ;/* be misrepresented as being the original software. */ ;/* 3. This notice may not be removed or altered from any source */ ;/* distribution. */ ;/* */ ;/*****************************************************************************/ ;------------------------------------------------------------------------------ ; Error codes .enum MOUSE_ERR_OK ; No error MOUSE_ERR_NO_DRIVER ; No driver available MOUSE_ERR_CANNOT_LOAD ; Error loading driver MOUSE_ERR_INV_DRIVER ; Invalid driver MOUSE_ERR_NO_DEVICE ; Mouse hardware not found MOUSE_ERR_INV_IOCTL ; Invalid ioctl code MOUSE_ERR_COUNT ; Special: Number of error codes .endenum ;------------------------------------------------------------------------------ ; The driver header .struct MOUSE_HDR ID .byte 3 ; Contains 0x6D, 0x6F, 0x75 ("mou") VERSION .byte 1 ; Interface version LIBREF .addr ; Library reference JUMPTAB .struct INSTALL .addr UNINSTALL .addr HIDE .addr SHOW .addr SETBOX .addr GETBOX .addr MOVE .addr BUTTONS .addr POS .addr INFO .addr IOCTL .addr IRQ .addr .endstruct FLAGS .byte ; Mouse driver flags CALLBACKS .struct ; Jump instructions .byte ; JMP opcode CHIDE .addr ; Jump address .byte CSHOW .addr .byte CPREP .addr .byte CDRAW .addr .byte CMOVEX .addr .byte CMOVEY .addr .endstruct .endstruct ;------------------------------------------------------------------------------ ; The mouse callback structure .struct MOUSE_CALLBACKS HIDE .addr ; Hide the mouse cursor SHOW .addr ; Show the mouse cursor PREP .addr ; Prepare to move the mouse cursor DRAW .addr ; Draw the mouse cursor MOVEX .addr ; Move the mouse cursor to X coord MOVEY .addr ; Move the mouse cursor to Y coord .endstruct ;------------------------------------------------------------------------------ ; The mouse API version, stored in MOUSE_HDR::VERSION MOUSE_API_VERSION = $05 ;------------------------------------------------------------------------------ ; Bitmapped mouse driver flags, stored in MOUSE_HDR::FLAGS. ; Note: If neither of MOUSE_FLAG_XXX_IRQ is set, no interrupts are supplied ; to the driver. If one of the bits is set, the interrupt vector MUST be ; valid. ; Beware: Some of the bits are tested using the BIT instruction, so do not ; change the values without checking the code! MOUSE_FLAG_EARLY_IRQ = $40 ; Enable IRQ *before* calling INSTALL MOUSE_FLAG_LATE_IRQ = $80 ; Enable IRQ *after* calling INSTALL ;------------------------------------------------------------------------------ ; Mouse button definitions MOUSE_BTN_LEFT = $10 MOUSE_BTN_RIGHT = $01 ;------------------------------------------------------------------------------ ; Structures used to return data from the mouse driver .struct MOUSE_POS XCOORD .word YCOORD .word .endstruct .struct MOUSE_INFO POS .tag MOUSE_POS BUTTONS .byte .endstruct .struct MOUSE_BOX MINX .word MINY .word MAXX .word MAXY .word .endstruct ;------------------------------------------------------------------------------ ; Variables .global _mouse_drv ; Pointer to driver .global _mouse_hidden ; Counter, 0 = mouse is visible ;------------------------------------------------------------------------------ ; C callable functions .global _mouse_load_driver .global _mouse_unload .global _mouse_install .global _mouse_uninstall .global _mouse_geterrormsg .global _mouse_hide .global _mouse_show .global _mouse_setbox .global _mouse_getbox .global _mouse_move .global _mouse_buttons .global _mouse_pos .global _mouse_info .global _mouse_ioctl .global _mouse_clear_ptr ;------------------------------------------------------------------------------ ; Driver entry points (asm callable) .global mouse_install .global mouse_uninstall .global mouse_hide .global mouse_show .global mouse_setbox .global mouse_getbox .global mouse_move .global mouse_buttons .global mouse_pos .global mouse_info .global mouse_ioctl ;----------------------------------------------------------------------------- ; Zero page stuff WNDLFT := $20 ; Text window left WNDWDTH := $21 ; Text window width WNDTOP := $22 ; Text window top WNDBTM := $23 ; Text window bottom+1 CH := $24 ; Cursor horizontal position CV := $25 ; Cursor vertical position BASL := $28 ; Text base address low BASH := $29 ; Text base address high INVFLG := $32 ; Normal/inverse(/flash) PROMPT := $33 ; Used by GETLN RNDL := $4E ; Random counter low RNDH := $4F ; Random counter high HIMEM := $73 ; Highest available memory address+1 ;----------------------------------------------------------------------------- ; Vectors DOSWARM := $03D0 ; DOS warmstart vector BRKVec := $03F0 ; Break vector SOFTEV := $03F2 ; Vector for warm start PWREDUP := $03F4 ; This must be = EOR #$A5 of SOFTEV+1 ;----------------------------------------------------------------------------- ; Hardware ; Keyboard input KBD := $C000 ; Read keyboard KBDSTRB := $C010 ; Clear keyboard strobe ; 80 column video switches CLR80COL:= $C000 ; Disable 80 column store SET80COL:= $C001 ; Enable 80 column store RD80COL := $C018 ; >127 if 80 column store enabled RD80VID := $C01F ; >127 if 80 column video enabled ; Character set switches CLRALTCHAR := $C00E ; Normal Apple II char set SETALTCHAR := $C00F ; Norm/inv LC, no flash ALTCHARSET := $C01E ; >127 if alt charset switched in ; Language card switches RDLCBNK2:= $C011 ; >127 if LC bank 2 in use RDLCRAM := $C012 ; >127 if LC is read enabled ROMIN := $C081 ; Swap in D000-FFFF ROM LCBANK2 := $C083 ; Swap in LC bank 2 LCBANK1 := $C08B ; Swap in LC bank 1 ; Video mode switches TXTCLR := $C050 ; Display graphics TXTSET := $C051 ; Display text MIXCLR := $C052 ; Disable 4 lines of text MIXSET := $C053 ; Enable 4 lines of text LOWSCR := $C054 ; Page 1 HISCR := $C055 ; Page 2 LORES := $C056 ; Lores graphics HIRES := $C057 ; Hires graphics ; Game controller BUTN0 := $C061 ; Open-Apple Key BUTN1 := $C062 ; Closed-Apple Key SYMBOLS { __STACKSIZE__: type = weak, value = $0300; # 3 pages stack } MEMORY { ZP: file = "", start = $0002, size = $001A, type = rw, define = yes; # INES Cartridge Header HEADER: file = %O, start = $0000, size = $0010, fill = yes; # 2 16K ROM Banks # - startup # - code # - rodata # - data (load) ROM0: file = %O, start = $8000, size = $7FFA, fill = yes, define = yes; # Hardware Vectors at End of 2nd 8K ROM ROMV: file = %O, start = $FFFA, size = $0006, fill = yes; # 1 8k CHR Bank ROM2: file = %O, start = $0000, size = $2000, fill = yes; # standard 2k SRAM (-zeropage) # $0100-$0200 cpu stack # $0200-$0500 3 pages for ppu memory write buffer # $0500-$0800 3 pages for cc65 parameter stack SRAM: file = "", start = $0500, size = __STACKSIZE__, define = yes; # additional 8K SRAM Bank # - data (run) # - bss # - heap RAM: file = "", start = $6000, size = $2000, define = yes; } SEGMENTS { ZEROPAGE: load = ZP, type = zp; HEADER: load = HEADER, type = ro; STARTUP: load = ROM0, type = ro, define = yes; LOWCODE: load = ROM0, type = ro, optional = yes; ONCE: load = ROM0, type = ro, optional = yes; CODE: load = ROM0, type = ro, define = yes; RODATA: load = ROM0, type = ro, define = yes; DATA: load = ROM0, run = RAM, type = rw, define = yes; VECTORS: load = ROMV, type = rw; CHARS: load = ROM2, type = rw; BSS: load = RAM, type = bss, define = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, segment = RODATA; CONDES: type = interruptor, label = __INTERRUPTOR_TABLE__, count = __INTERRUPTOR_COUNT__, segment = RODATA, import = __CALLIRQ__; } naUz p Uzna` kzi)  -@մU*[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/#'+!__NES__../libwrk/nes/_afailed.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stderr_fprintf_exit __afailedL0004.sizepushaxpushwyspincsp4CODERODATABSSDATAZEROPAGENULLUzna` iqA c:;@մfaX       __NES__conio/_cursor.sca65 V2.17 - Git 6c320f7cursor.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixK%K @մfaX([    )7(ED;8' 9:+4 5*2,>.0C!__NES__ common/_cwd.sca65 V2.17 - Git 6c320f7__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` ia e`a@մfaXfaX faX*3     .(`"45678+   3  "   9__NES__common/_directerrno.sca65 V2.17 - Git 6c320f7*/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       __NES__common/_environ.sca65 V2.17 - Git 6c320f7 __environ __envcount __envsizeinitenvenv_init.sizeCODERODATABSSDATAZEROPAGENULLUzna` iL[ gjo i @մfaX([faX%9   %%00L .i H/ I/#`&'()*! /  "4")& 7( ED;8'$!9:+4%5*(2 ,>. #0+C+__NES__common/_fdesc.sca65 V2.17 - Git 6c320f7__fdescreturn0*/home/hugg/compilers/cc65/asminc/stdio.inc_IOFBF_IOLBF_IONBFBUFSIZEOF FILENAME_MAXL_tmpnamSEEK_CURSEEK_ENDSEEK_SETTMP_MAX FOPEN_MAX_stdin_stdout_stderr*/home/hugg/compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags f_pushback_FCLOSED_FOPEN_FEOF_FERROR _FPUSHBACK __filetabLoopFound@L1CODERODATABSSDATAZEROPAGENULLUzna` ikl? @մfaX([faX faX+,-.   222222222222222   /0/. 7 )&7( ED;8'$!9: +45*2 ,>. # 0C1__NES__common/_file.sca65 V2.17 - Git 6c320f7 __filetab*/home/hugg/compilers/cc65/asminc/stdio.inc_IOFBF_IOLBF_IONBFBUFSIZEOF FILENAME_MAXL_tmpnamSEEK_CURSEEK_ENDSEEK_SETTMP_MAX FOPEN_MAX_stdin_stdout_stderr*/home/hugg/compilers/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCL*/home/hugg/compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags f_pushback_FCLOSED_FOPEN_FEOF_FERROR _FPUSHBACKCODERODATABSSDATAZEROPAGENULLUzna` 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__NES__common/_fopen.sca65 V2.17 - Git 6c320f7__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` ixEdY@@մfaX faX*    h8 ! H!   I$ $` !  % $  &"& !#$!"%*(  #'__NES__common/_heap.sca65 V2.17 - Git 6c320f7initheap __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 N^@մfaX faXfaX! $ $        `#%  L   $& -"!#34 $.!  "%,/ #'+ __NES__common/_heapadd.sca65 V2.17 - Git 6c320f7ptr1ptr2popaxheapadd __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/ xSf@մ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__NES__common/_heapblocksize.sca65 V2.17 - Git 6c320f7ptr1ptr2__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 AjVW@մ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<"__NES__common/_heapmaxavail.sca65 V2.17 - Git 6c320f7ptr1ptr2__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 A^89@մ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+__NES__common/_heapmemavail.sca65 V2.17 - Git 6c320f7ptr1ptr2__heapmemavail*/home/hugg/compilers/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst __heaplast,/home/hugg/compilers/cc65/asminc/generic.mac@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz o}~@մU*[faXV0123 4 56789AB CDEF   "!   __NES__../libwrk/nes/_hextab.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac__hextab.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzy $'&'@մU*[faXB  -2147483648   __NES__../libwrk/nes/_longminstr.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac __longminstr.sizeCODERODATABSSDATAZEROPAGENULLUzna` i| #7"@մfaXfaX faX faXE5  3 3   - -,`6789:-0 7  ! 5"   ;__NES__common/_mappederrno.sca65 V2.17 - Git 6c320f7*/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 hDE@մfaX        __NES__common/_oserror.sca65 V2.17 - Git 6c320f7 __oserror.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz(<d psZRr@մU*[ faXOQ9 ' '     (! !  --" "   % H% I   #      L K    & & H, I,      L) ). %s: %s !"#$ )  '&  " ! Q*$. -0?)>&986E31A4;$.= 5 %7@*(,2/:#'BD<+%__NES__../libwrk/nes/_poserror.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//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__NES__common/_printf.sca65 V2.17 - Git 6c320f7-/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{./:P1_1b1}ER1Ka12K@մU*[faX,    ) ) % %x            ' ' | |     H I  'L   L   %"  #--  L ^ ^   y  y ; ;L7 7  %{**  *=            $ = =3       ( (  )me ( ( J J    $     %L          L,VhjIl+tFz BL b  (  ( (h-  % L _  ( @ (@ (l       AAL CL EgL FzzLz zGL SL Xk[L aL cL d3:eL fZZLZ ZgL i)nL uo&pL Gs+u66xL  $  L   L   L   L       9 8w w     ) )L O  ) ) * *  l )lF )F  *        #EE     LL L  ) L a aL  =       [ 8#      ) )L  : : ) ) * *   ) )  * Q Q  B B  !! L  L          L  I ( H ( (  ^         ]YL   < (<  ( (-;   ? II   ee] ?  "-  "L~ ~ ?  "   ?  ?L     "    ]  ) )8     G > A 81c c     ) )L  r )r5 )5 *( *(   ) )  *2  >    1     00 >L  L  ) L S SL  U U 0PPLP P    Xxw   v Bv  L          Lp p     f f +  +    ! 8  L   W %WL  n %nL   L PL     k    U  H , ) ,j )jh4L HJJJh)& &L !`      L      = L. F.` I  `\ 39 9   b (b_ _ ( (  (  ( ( ` `      `  (  ( (  (  ( (       u  u`  H H I  hdL & N N` L `LY Y      #` -     +    `   , h $h  ,0L : ,  !W  L    A    L  A G +G  +    8 ,         @         +  +       ""         @ ,] A   L  + 8      ( (   (  `       ,B 05   Xx ,   L bo ,  U0  L b  ,q ,q  B #  +  +       +? ? +   L   *  *  [ */  `5i @BBss>-YN0`\YD@<:;10%hWn Kb@<lFr5j ( G q hm\j|U -P0]l?)o>&ysf9C8}L6pgtbk3T1A4;en.^!iqdx= 5 %7_ [@*(ar,2 wcRvz/:u~ '`BSDZ{Q<Y+__NES__../libwrk/nes/_scanf.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//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 _ReadCharL01E6L0192L0196L0198 _SkipWhitetosicmp0 _GetFormatbooleqL01A6L01B3L01B2mulax10L0316L01BAL031DcomplaxL01DEL01CBL0303L01D4L0304L02D2L01F6L0246L0309L01E8L01EEL02C2L01F2L02A8L01FCL02EB_ScanInt _CheckEndL020DL020AldaxiL0305L0214incax1L0317L0308L0212L0221L0240L0231L0234L0232L0236L023EL0242L02FCL030AL030BL025DL0257L0262L0267L026F _AddCharToSetL0302L030FL027DL031A_InvertCharSetL0292L028FL0310L0311 _IsCharInSetL0314L0295L02B7_ReadInt _AssignIntL02C8L02CAtossuba0axulongL02F3 _PushBackincsp8_FindBitL0010pushaincsp1L1L002DL0055pusha0jmpvecL0082L00B6_ErrorL00D1L00D7L00D5 _ReadSignL00E3L00ECL00F1_HexValL00FEL031EdecaxyL0105L0106L010CL0320pusheaxaulong tosmuleax tosaddeaxL0323L0110L0324L013EL012AL0131L0328L0327L0325L0326L0161L0166negeaxL0173CODERODATABSSDATAZEROPAGENULLUzna` iu   @մfaXfaXMfaX>U   - - `(VWXYZR- 1V</?Y[NB)P=X H7(% EDOA#L8Z' 6 9: 45K* 2 U1&T>\@.QWIJMV0RS$C3[__NES__nes/_scrsize.sca65 V2.17 - Git 6c320f7 screensize(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC+/home/hugg/compilers/cc65/asminc/get_tv.incTVNTSCPALOTHER_get_tvpal.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixb T@մfaXfaX +     `!"#$%     "  &__NES__common/_seterrno.sca65 V2.17 - Git 6c320f7*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq4( s@մ([/+I   I                 `     0")& 4 $! 5%*(/#'+__NES__common/_swap.sca65 V2.17 - Git 6c320f7__swappopaxpopptr1ptr1ptr2ptr3.size@L1@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` iq  l}~@մfaX ID< " "     (+hQ, ,)0Q$ $H -& &H  * 'h(%  0H!.  /# #h h) (`      ",$& # 1U-P0HG")& C8L6ET1A J$.!I= F%7(2K/ #'BD<__NES__ common/_sys.sca65 V2.17 - Git 6c320f7__sysjmpvecptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzD  p@մU*[faXw    H I      L  A B N O R M A L   P R O G R A M  TERMINATION     -0)&1$.  %*(,#'+ __NES__../libwrk/nes/abort.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stderr_fputs_abort_exit_raiseL0005.sizepushaxCODERODATABSSDATAZEROPAGENULLUzna` ix;Mjm@l@մ([ faX q% %  q) ) i#    ` !" %) * -0)& 631 $. *(,2/'+#__NES__ runtime/add.sca65 V2.17 - Git 6c320f7tosadda0tosaddaxsptmp1(/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 &)[s(@մfaXW q  H q  h`             __NES__runtime/addeqsp.sca65 V2.17 - Git 6c320f7addeq0spaddeqyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  #Los"@մfaXR H e    h`             __NES__runtime/addysp.sca65 V2.17 - Git 6c320f7addysp1addyspsp.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqb= <["#@մ([+l`   , , 6T6   995 5"H"  q* *7/ / ..>00!3 e1 1 e' ' + +4 4= =% %  - -8 8 ;) )  # #`  <L: :  5 # *)  1'4% -8((,(:2$? -P0HG?")>&9C8LO6E3A4;J$.!I= 5 F%7@*(,2/: 'BSDQ<+ __NES__zlib/adler32.sca65 V2.17 - Git 6c320f7_adler32incsp2incsp4popptr1popeaxsregptr1ptr2tmp1BASE.size@L1@L0@L2@RET@L3@L4@L5@L6@L7@L8@L9CODERODATABSSDATAZEROPAGENULLUzna` iqx3Dt@մ([A  ɀ    `       __NES__runtime/along.sca65 V2.17 - Git 6c320f7aulongalongsreg.sizestoreCODERODATABSSDATAZEROPAGENULLUzna` ix#&j%k@մfaX faXI  1 H!1 hL  !" %    #__NES__ runtime/and.sca65 V2.17 - Git 6c320f7tosanda0tosandaxaddysp1spptr4(/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)= IL0K@մU*[faX/%   H I     H I          H  I L  L %c  !   /  -0)&96314$. 5 %7*(,2/: '+"__NES__../libwrk/nes/asctime.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_asctime _strftimeL000A.sizeL0005pushaxpusha0ldaxyspL000Dincsp2CODERODATABSSDATAZEROPAGENULLUzna` iqe 3,p@մfaX.  &  `          __NES__runtime/aslax1.sca65 V2.17 - Git 6c320f7aslax1shlax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqt  =Fp@մfaX=    &   &   `           __NES__runtime/aslax2.sca65 V2.17 - Git 6c320f7aslax2shlax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq G`p@մfaXL  &   &    &  `            __NES__runtime/aslax3.sca65 V2.17 - Git 6c320f7aslax3shlax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq &)Qzp(@մfaX[   &   &   &  &  `             __NES__runtime/aslax4.sca65 V2.17 - Git 6c320f7aslax4shlax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqB\x@մfaXH     & &  &  `             __NES__runtime/asleax1.sca65 V2.17 - Git 6c320f7asleax1shleax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq,CFVxE@մfaXq     & & &   & & &  `              __NES__runtime/asleax2.sca65 V2.17 - Git 6c320f7asleax2shleax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqBXorjxTqU@մfaX    & & &   & & &  &  & &  `               __NES__runtime/asleax3.sca65 V2.17 - Git 6c320f7asleax3shleax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq,/Q|.@մfaX]     & &  &  `             __NES__runtime/asleax4.sca65 V2.17 - Git 6c320f7asleax4shleax4sregtmp1.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/'+__NES__ dbg/asmtab.sca65 V2.17 - Git 6c320f7 OffsetTab AdrFlagTab SymbolTab1 SymbolTab2 MnemoTab1 MnemoTab2.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqH[\@մfaX<4     H'$)8*&&h (ɀ j -!!h`"hɀ %%`,ih)  +f j ` # .-MHG)&9C8L6E1A;!F%7@N*,2: 'BD<+__NES__ runtime/asr.sca65 V2.17 - Git 6c320f7tosasraxasraxypopaxtmp1.sizeL2L3L6L1L4L5L7CODERODATABSSDATAZEROPAGENULLUzna` iqk 3'i@մfaX4   f j `          __NES__runtime/asrax1.sca65 V2.17 - Git 6c320f7asrax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  BLi @մfaXI   f j f  j `              __NES__runtime/asrax2.sca65 V2.17 - Git 6c320f7asrax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq   Qqi@մfaX^  f  jf  jf j `           __NES__runtime/asrax3.sca65 V2.17 - Git 6c320f7asrax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq ' 36`i5@մfaXs  f jf  jf j f  j `           __NES__runtime/asrax4.sca65 V2.17 - Git 6c320f7asrax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq #&Gmp%@մfaX^   f f  f  j `              __NES__runtime/asreax1.sca65 V2.17 - Git 6c320f7asreax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq5I UX`p(W)@մfaX   f f f  jf f f j  `              __NES__runtime/asreax2.sca65 V2.17 - Git 6c320f7asreax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqd{ ypst@մfaX"   f f f j f f f  j f f f j `            __NES__runtime/asreax3.sca65 V2.17 - Git 6c320f7asreax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq, 8;Vt:@մfaXs     f f  f j `             __NES__runtime/asreax4.sca65 V2.17 - Git 6c320f7asreax4sregtmp1.size@L1CODERODATABSSDATAZEROPAGENULLUzna` i< <=@մfaX faX "faX;8+   E=  * F`&77  4S`; D$ $P.    2 2LM  M` <=   O>?@ 320 -M %T PG?")> 9C86TA;$. I="@ *(,R :# DQ<+A__NES__common/atexit.sca65 V2.17 - Git 6c320f7_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)@CCUB@մ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+*__NES__ common/atoi.sca65 V2.17 - Git 6c320f7_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` iqx8Iw@մ([A       `        __NES__runtime/axlong.sca65 V2.17 - Git 6c320f7axulongaxlongsreg.sizestoreCODERODATABSSDATAZEROPAGENULLUzna` iqw BK~@մfaX@     ` `        __NES__runtime/bneg.sca65 V2.17 - Git 6c320f7bnegabnegaxreturn0return1.sizeL0L1CODERODATABSSDATAZEROPAGENULLUzna` iqW 3({@մfaX  L          __NES__runtime/bpushbsp.sca65 V2.17 - Git 6c320f7bpushbsp bpushbysppushasp.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzxv "=>@մU*[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__NES__../libwrk/nes/bsearch.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_bsearchpushaxdecsp4push0ldaxyspdecax1L0019L0005.sizeasrax1staxysppushwysp tosumulaxtosaddaxjmpvecincsp2L0012incax1L0025stax0sptosicmpL0020L0001addyspCODERODATABSSDATAZEROPAGENULLUzna` iqa $@մfaX*  l         __NES__runtime/call.sca65 V2.17 - Git 6c320f7callaxptr1.size"jmp (abs)" across page borderCODERODATABSSDATAZEROPAGENULL HUzna` iqKe?/@մfaX H         `    )   ?")>&9C86A4;$!=5%7@(: B<__NES__runtime/callirq.sca65 V2.17 - Git 6c320f7callirq callirq_y __CALLIRQ__irq_initirq_done__INTERRUPTOR_TABLE____INTERRUPTOR_COUNT__initirqdoneirq.sizeloopjmpvecindexdoneCODERODATABSSDATAZEROPAGENULLUzna` iq,,X[V4Z5@մfaXj          L          $(#__NES__runtime/callmain.sca65 V2.17 - Git 6c320f7callmain__argc__argv_mainpushax.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq3L X[o_Z`@մfaX  !        `     L      !  0?& 31$5 %*2/#<__NES__common/calloc.sca65 V2.17 - Git 6c320f7_calloc_malloc__bzero tosumulaxpushaxSize ClearBlock.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqG y@մ([l        __NES__runtime/callptr4.sca65 V2.17 - Git 6c320f7callptr4ptr4.size"jmp (abs)" across page borderCODERODATABSSDATAZEROPAGENULL HUzna` ix+A MP'O@մfaXfaX|H   e    hL       &  $!  #' __NES__common/cc65_idiv32by16r16.sca65 V2.17 - Git 6c320f7_cc65_idiv32by16r16 idiv32by16r16incsp4-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace@L1.size@L2CODERODATABSSDATAZEROPAGENULLUzna` ixk V\wx@մfaXfaX4     L            __NES__common/cc65_imul16x16r32.sca65 V2.17 - Git 6c320f7_cc65_imul16x16r32 imul16x16r32popax-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq[ )@մfaX$    L      __NES__common/cc65_imul8x8r16.sca65 V2.17 - Git 6c320f7_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<__NES__common/cc65_sincos.sca65 V2.17 - Git 6c320f7 _cc65_cos _cc65_sin _cc65_sintab.size@L1@L2@L3L3L4L1L2L5L6L7CODERODATABSSDATAZEROPAGENULLUzna` ix;X dg(f@մfaXfaX     e     L         "&  $!  ' __NES__common/cc65_udiv32by16r16.sca65 V2.17 - Git 6c320f7_cc65_udiv32by16r16udiv32by16r16mincsp4-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace@L1.size@L2CODERODATABSSDATAZEROPAGENULLUzna` ixk V\wx@մfaXfaX4     L           __NES__common/cc65_umul16x16r32.sca65 V2.17 - Git 6c320f7_cc65_umul16x16r32 umul16x16r32popax-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixq [l@մfaXfaX:       L            __NES__common/cc65_umul16x8r32.sca65 V2.17 - Git 6c320f7_cc65_umul16x8r32 umul8x16r24popax-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq[ )@մfaX$    L     __NES__common/cc65_umul8x8r16.sca65 V2.17 - Git 6c320f7_cc65_umul8x8r16 umul8x8r16popaptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq69[8@մfaX] H   h       `         __NES__ nes/cclear.sca65 V2.17 - Git 6c320f7 _cclearxy_ccleargotoxy cputdirecttmp1.sizeL9L1CODERODATABSSDATAZEROPAGENULLUzna` iqQ . {@մfaX  L         __NES__common/chdir.sca65 V2.17 - Git 6c320f7_chdir __syschdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix  =@?@մfaX faX]THA + +h & & 4 N N KK`CUVWXY0&N+//Y</?Y[NB) P=X H7(%EDOA#L8Z' 6 9: 4 5K* 2U1&T>\@.QWIJMV0RS$C3Z__NES__ nes/chline.sca65 V2.17 - Git 6c320f7 _chlinexy_chlinegotoxy cputdirecttmp1(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC.sizeL9L1CODERODATABSSDATAZEROPAGENULLUzna` ix  WX@մfaXfaXSP$ $0 0JlJkGlG??` QRSTUM)$0L=U</?Y[NB)P=X H7(%EDOA#L8Z' 6 9: 45K* 2U1&T>\@.QWIJMV0RS$C3V__NES__ nes/clock.sca65 V2.17 - Git 6c320f7(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC_clocksregL1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixI "@մfaX faXRI1  1DpD`p`:  ] ]3A A GQ Q 4 4X X ,,#)/ />" "Y0 0h@=b `cSTUVWI<m</?-Y0[HN")B)> P=X CH78(%6EDOA#3L81Z'4; $.6 9: 4=5F%5K* *2U1&T>,\@./:QWI#JMBDV0R<S$C3X__NES__ nes/clrscr.sca65 V2.17 - Git 6c320f7_clrscrppubuf_waitempty(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC@w2.sizebeglllCODERODATABSSDATAZEROPAGENULLUzna` ix5 Y:@մfaX faXS- &2g2GgGHid dHY? >  hlHc?8 e eh5HC?h N Nh?K u V Vh6`^VTA=!D;_18r@5-H0+k"=mUVWX4eNV4;##-;x</? Y[N?")B)>&P=X 9CH78(%6EEDOA#L81Z'A;  $.6! 9: 4=5%75K@* *(2U1&T>,\@./:QWI #J'MBDV0R<S$+C3Y__NES__ nes/color.sca65 V2.17 - Git 6c320f7 _textcolor_bgcolor _bordercolorreturn0 ppubuf_put(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESCcolors.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqb 8d@մfaX+ I HIh `         __NES__runtime/compl.sca65 V2.17 - Git 6c320f7complax.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix.$RUnpTq@մfaX faXI%  . H.   H) I)L `&'(%2  2  4 4 "   !+ +    &`)*I+   H33/ H/ IL `0 . )/%%     8-P0MHG" CLO6E3T14J!IF%@N 2RK/ #BD,__NES__runtime/condes.sca65 V2.17 - Git 6c320f7initlibdonelibcondes__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/ 34@մfaX -, H   I  H   I   HB IB       `      0"& 1 $! %,#'+__NES__common/copydata.sca65 V2.17 - Git 6c320f7copydata __DATA_LOAD__ __DATA_RUN__ __DATA_SIZE__ptr1ptr2tmp1.size@L1@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` ix % X@մfaX faX*$ e               L          -0">& 94$.!=5%@,/ #'+__NES__conio/cprintf.sca65 V2.17 - Git 6c320f7_cprintfpushaxaddysp _vcprintfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixR^GJY I@մfaXfaX^8$H e ehY kdd6iff C u /ui . V**j1?i#LD (Dj`ijLH Hhc b<L4 4_`abcBd  l l - -ThisjrLG (GH >4 >- >l 3e [&@/AuKkix</? Y0][HNG?"B)>& P=WX 9H7(%6EDOA#3L8T1Z'4  J6! 9: I4 5 F%75K[@* *2U1&TV>2\@R./:QWI #JMSV0RSYX$+C3e__NES__ nes/cputc.sca65 V2.17 - Git 6c320f7_cputcxy_cputc cputdirectputcharnewline initconiogotoxyppuinit paletteinit ppubuf_put setcursortmp3tmp4(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC.sizeL1plotadvanceL3CODERODATABSSDATAZEROPAGENULLONCEUzna` iq#2PSyMRN@մfaX{ H   hHJ J JJ   h)  L          '__NES__conio/cputhex.sca65 V2.17 - Git 6c320f7 _cputhex8 _cputhex16_cputc__hextab.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqbt@մ([#    L              `      !  #__NES__ conio/cputs.sca65 V2.17 - Git 6c320f7_cputsxy_cputsgotoxy_cputcptr1tmp1.sizeL0L1L9CODERODATABSSDATAZEROPAGENULLUzna` iqKY @մ([8$   %0F FJ]Z ZJQI 9 9 j`IY6 6 j[I3C C j\I J*IFi ifN Nf  j4V, ,O O* *. .@ @! !D DW W`fG--_ b b B B ;K;T T       S Saa+ + h hg gcQ 5 5EE E^ ^K KE' 'R R< <E1 1 # # 7 7((  22 "": :LL LX XU UL= =   ) e  !"#  C OgER:  F^7  bS+    Z96iN.!'1XU A ABA=AhLR>jhm\j|U -P0M]lH")o>&f9C8L6pgbk3T1A4;en$.^!iqIdx 5 F%7_@N*(arV,2cRKv/:u #'`BSDZ{<YX+$__NES__ zlib/crc32.sca65 V2.17 - Git 6c320f7_crc32compleaxincsp2incsp4popptr1popeaxsregptr1ptr2tmp1tmp2 POLYNOMIAL make_table.size@L1@L2@L3@L4table_0table_1table_2table_3table_initialisedRET@L0 @dont_makeCODERODATABSSDATAZEROPAGENULLUzna` ix  %('@մfaXfaX\HH2  hh   L   -"   $ %*( #'__NES__common/creat.sca65 V2.17 - Git 6c320f7_creat_openpushax*/home/hugg/compilers/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCL.sizeCODERODATABSSDATAZEROPAGENULLUzna` iabMb"bbbb@մfaX+faX-faX{faX |}~gNES]<xprqs          H I M M  W W    L HH Hpkl          hhh@% 5  \_  @ 3 333R3333<~<~ 0000   0|0b  0| 0b < > v66>v!66    `` ```` ````` `  !c3f3 f3f3f 3 f3 f 3f3L f  `  O    33 33K              b      !          i 7F    0000 0000 e  6!          +       fff    fff ffff fff fff >`<| >`< | f 0fFf  0fF<f<8g f? <f <8gf?       V00 0   000  0     00     0 f< <ff <<f~~0a 0 ~ ~     !  0`   0` <f nvff <<fnvff< 8  ~ 8~<f  0` ~ <f' 0 `~<ff< <sf f<ff  ~` | f< ~`| f< <f`| ff <<f` |ff<.~ f  ~f   <f f<ff<<ff< ff < <ff>f<<ff> f<  0 0 0` 00!`0 ~u~*~~   p   p p  p< f <f  h  < fnn `b<< fn n`b< < f~fffD <f~ff f|ff|fNf| |ff|f f|< f```f< <f ` ``Zf< xlf fflxxlf ffl x~` `x`` ~~ ``!x``~~``x```~``x`` `<f` n ff< <f`nff<fff~ffff ff~f ff <; < < _<       l8       l 8f l xpxl ffl xpxlf ``````J~``` ```~c wkcccc{wkcc c  fv~ ~nff fv~~nff< ff f f!f <<fff:ff<|ff| ` ` `  | ff|```< ffgff< <ffff< |f f|xlf |ff|xlf <f`&<f< <f`<f<~  ~ f fffff<fff fff<fffffr< ff5fff< ccckz wc!ccck wc ff<<ff ff<<ff fff< ff9f < ~ 0 ` ~~  0`~<0 0 00 0< <00 0 00<`0    `0  <      < <        < #<f  q<f         <>f>  <>f> ``|ff| ` `|f f | <```<<`` `< > ff> >ff> <f~ `< ^ <!f ~`< >  >>f f>|>ff>| ` `|fff  ``|f ff 8 <  8 < <  <``lxlf ``!lxlf 8<n8< f  kcf kc|ffff|ffff<f8ff<<fff< | ff|`` |ff| `` > ff >>ff >   |f```] |f``` >` < | >`?<| ~  ~ 4ff ff> ffff>ff f <  fff< c k>6 c k>6 f< < f f<<f fff> xfff>  x~  0 ~  ~ 0~ 0 p00p0 ! 8 ~  8 8    83 3     33 3%33 333      $     !    p  -  3f3f 3f3f f3}f3f 3  f3\y      3 333   1              "    !   ! !           ?? ??3 ????          m         Y                [       !E         l                f     )   !   0   C          2      /        d B       !   (        X          A     Q     >    U     xk                          j        |    , o                   =          H P         !  w                       !        t        !   I           3v  G3       M       W/!  !#!!      \  # # h   m     "#!   V   E  ! #!  #     N    S   W#"   (!"  e   '#   " ! [# "" !      !P! #    !#"t"  O " K C  "  !      "!  #zM    #! ># "!7"! g G  ##"  !  " ""!R#!   ! ?"  3   #  ! _ #"  !!     ( >  " " "yH     vA;##   "!  f##!!    }!4! W        `"" "! i     [C     2   # !<A"   " K  J)   ! & IL    B"    !  # 1# #     ##   # "##"    !# '!    # " p !!] %6#!     g     #    ""       n" !     "     #"#!   !  ! "  G" "     5   b      #  " " !       " "  !P"  ! #!D"9!!!   s U \  #  #" !!      T!/ # ! "T  #   "M   O=   R ;"    :!   #         U     "! q #   !     #   X###     Q#   f ."" # Ti #     !  #  #    !     ! "     q"        w ob   &    8!! x##!   r  ! 0 #     L"  !!!    "   #   "  =  #"!    !!#   "#j+# "!  X #  ! " "       "#  { #"    #  @        ?  #_!   # " [    * N####  ""#   M   !!1"!  " #"  # "#   "  " #" #" "   " ! Yd>      #"V!  "   "      !          #!""!    " I#"  *     2<  |!    "  "!  #  #   E" !      "     RK D# :   !     8#   "    L#$%"!   # /" !:" #  ! ! u  #   @  9    #"!#! " "   !!! "  4# "   "   "" W#!! !!" #" 50 "     P!" N! #      ## y! !   ##3 Z "  ,  #)   ##mV!!B"!!     Z.  !# =#!     ! a  S 7"!! #"#Q#!"  <#   F#!   Y #" k #J  #! YX"!  " # !# "^   h#  "__NES__ nes/crt0.sca65 V2.17 - Git 6c320f7_exit __STARTUP__initlibdonelibcallmainpush0_mainzerobsscopydata ppubuf_flush __RAM_START__ __RAM_SIZE____SRAM_START__ __SRAM_SIZE____ROM0_START__ __ROM0_SIZE____STARTUP_LOAD____STARTUP_RUN____STARTUP_SIZE__ __CODE_LOAD__ __CODE_RUN__ __CODE_SIZE____RODATA_LOAD____RODATA_RUN____RODATA_SIZE__-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESCstart.size@lnmi@sirqnes/neschar.incCODERODATABSSDATAZEROPAGENULLHEADERSTARTUPVECTORSCHARSUzna` i % A@մfaX faX faX*$     e  $ $!  " "       L    ! $" #  '->&6 1$=5 %( ,#' <"__NES__conio/cscanf.sca65 V2.17 - Git 6c320f7_cscanfpushaxaddysp_vcscanf,/home/hugg/compilers/cc65/asminc/generic.mac-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeArgSize@L1CODERODATABSSDATAZEROPAGENULLUzna` iqQ )v}~@մfaX  L       __NES__common/ctime.sca65 V2.17 - Git 6c320f7_ctime _localtime_asctime.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqG  `  @մfaX5]c]z][]`]y]T]G]]R]UP]P]P]7P]_]]x],]~]P]1]]Z]Y]n]!] ]s]]]M]]%] ]a]k]g]H]q]e]$]\]0]m]-]F]]]' ]; ]2 ]S ]b ]& ]f ]l ]? ]C ]E]I]]]]d]] ]( ]# ]9 ]. ] ]|]]8]+]<]5]i] ]D]}]O] ]] ]j]u]]X]^]A]B]J]W]L]]] ]= ]w ] ]) ]* ]4]h] ]p]v]{]3]]]o]Q]]t]r]N]"]]@]]6]K]:]]/]@]V]c]z][]`]y]T]G]]R]UP]P]P]7P]_]]x],]~]P]1]]Z]Y]n]!] ]s]]]M]]%] ]a]k]g]H]q]e]$]\]0]m]-]F]]]' ]; ]2 ]S ]b ]& ]f ]l ]? ]C ]E]I]]]]d]] ]( ]# ]9 ]. ] ]|]]8]+]<]5]i] ]D]}]O] ]] ]j]u]]X]^]A]B]J]W]L]]] ]= ]w ] ]) ]* ]4]h] ]p]v]{]3]]]o]Q]]t]r]N]"]]@]]6]K]:]]/]@]V   >Xg1f>xC|JH&r54ip}E8~BmQI^Ylt:UoS=[v6snZu$abycV0NdG{<2\/3@?,R7-K]*hP_MwL`TAOD9.+qz;FeWk __NES__ nes/ctype.sca65 V2.17 - Git 6c320f7__ctype.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqa 8!j@մfaX*     `          __NES__conio/cursor.sca65 V2.17 - Git 6c320f7_cursorcursor.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix0MPO@մfaX faXgUHB , ,h' '5 O O  L LDD`VWXYZ 1'LO,00Z</?Y[NB) P=X H7(%EDOA#L8Z' 6 9: 4 5K* 2U1&T>\@.QWIJMV0RS$C3[__NES__ nes/cvline.sca65 V2.17 - Git 6c320f7 _cvlinexy_cvlinegotoxyputcharnewlinetmp1(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC.sizeL9L1CODERODATABSSDATAZEROPAGENULLUzna` k{mm xIxx6 jxk@մU*[faXX"    p        L    L  +#-+apfGGGg Io Op Qt+z  o L      L        h      L    =  =L   R L   H I  " L    L     L           L     m  m   L  L L            =?+xx- YYa-o #z +Lr 2r  m   L 9  I8m o oL 9   qL 9 L 9  L 9 L     L               L[+-#a<o2zEL    m   m  L  I8 m   m   L    L  8    L  m     L   L   L I                [RhR+  -'a Kg7o=zPL e  m    m  L l   I8m   Im  L l H I  " L l   wL l  8 j j L lm    L l  L    L   ~ ~               } }   %L                 (8 J                         ( 8 J      7 7       L               B  x0:@ h L #P . `Vlp " ɐ  ɰ   L   L   6 6  L         4    bm  Hm h    T L    L    L      L  ! !          I T IL                            f   L         p              L L R 9 L G  p  L G     L G    L G     9i) 9    L               ) )      L   J                                                 q          1 1                                   n  L                                            ,  ~  H 8 h        L }  |   3   ee i H  i I   {  z        y   [ q L  L x  w i vi    u  t  L   0   a a  si H i I  r  [   t   0 f      s i H  i I  ? q?      ; - - i    p    o"  i  w     w   q  L q      u   [          L n H IL   H IL   m   L l ]L l  k  j  k  k(  E      k  k   i   t          h h$         D    8    q    q        q  < k<  k P P    q  L    5  .  8 {q\ \  kU  k      q    k   L       q    q     L         L 6                  h ( (   g      f L e 9 d9   c  b   a  d   L            L    a  ` d  _L  ' ^'  ]  _           80 L    7  \    [    Z  Y                  Y      ^  X  L X   W    W   V       U   L T  S  R H I   S  Q   =     v Hv I     L P H IL     O     O   N     M    N     L L  K      K   J           L        H I    L      J     T M TL        + +   J           L I   H H  I   G  - O FO   & &ɀ      F        E   q L  L D  C H  I    B     ;  A   ɀ  A  @       M     L ?    > W q L N L ?  =C   <   ; [ [I  : G    9   88S H     h*C  7D  6   C  5    Zi_e   e  D  # 6#    i ) D  6F   D  6F uu      0  )Q Q8E 8 )   i   e e    4L k    3L  H L 2 *  1 h   0 hi   0     /        /  h i    h  L <    .   -  /         ,  ;;  -  >>    ,       *     , K K&  !      0   0   -     L )   0    0   -       +q L    , .L *      )L (        =  - 0 5@ dL!P)` E lp  ɐ  ɰ      `  D  L    D L       '  &    %  $   #L    m       "  %L  m    " C C  `     `   L p  xi   ! i  ! x  !    !q       q q     !  q              ! q            !q     B B       !q             !  q           !q              ! q           L L        i    i      8 l l  8   OM                    5q        pqA A   8 L   L   i  `  qL        i        8    8   ,*                     8L  i    8   H& I&     L       `  L  )          i     iH   9                N         q  L .    .^L     `   @ @L     m       e He  h  L      L T                  {              q      L        i H i I            L    L    L  1824304 , 5(?  6 cL  h =q4L  rL  szu L  1        L   rL      L           o     T   Lk  k    @  S  L       @   @ D L     L       m  m     L     L          L  L   )    . , 0 #          /V :  b       U g >     z l `    & B       '        '    c  '   ?    "   .      '&  r   h x    F3, u     Run until subroutine returnsCannot set breakpsosisnsts s-s spsrsesssss sas skeyToo 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  instructionFy2y,y yty y y y y yTyoygygylyey breakpointInvalid input - pLrLeLsLsL LaL LkLeLyLLP 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::                                                    !     @                   #      O           'x 9  <    ?  i  x u                x u:  9 6 5 4 321  0 /   q ! .-  ,B+ * ) ( ' &  %$#0 "  !      }  8         ;     & +               '   -            l A       [  Q     h   P \      )   1    ;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     4   ;        e    J  n  $.    ^! i     5          qI     d     1      x          =        5  F           %          _     [  N  *       (                  a    r  3     V            , 2        4           w      cRK     v z       /    :    u ~                 #          '     `     S D              Z        {       Q  <         YX  .       + __NES__../libwrk/nes/dbg.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//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 _ActiveFrame.size _ActivePrompt_RegTextL0005L0009L000DL0011L0015L0019L001DL0021 _HelpTextL0025L0029L002DL0031L0035L0039L003DL0041L0045L0049L004DL0051L0055L0059L005DL0061L0065L0069 _AsmFrame _AsmHandler _RegFrame _RegHandler _StackFrame _StackHandler _CStackFrame_CStackHandler _DumpFrame _DumpHandler _HelpFrame _HelpHandler_FramesL020BL021FL0206L0170L016CL0200L039F_AsmAddr _DumpAddr _CStackAddr _StackAddr _PromptColor _PromptLengthdecsp3L02E1 _UpdateAsmstax0sp _GetKeyUpdateL0308L0310L02ECL02F0L02FAL02FDL0301L0304L02F6L04EEldax0sppushax_AsmBack_DbgToggleUserBreak _AsmFollow _InputGoto_AsmHomeincsp3decsp1pushaL036AL037EL0383L0373L0377L037BL04EFL0371 _StackHomeincsp2 _UpdateStackL03AAL03BEL04F0L03B3L03B7L03BBL03C5L04F1L03B1 _CStackHome _UpdateCStackshlax3L03EAL0402L0409L03F3L03F7L03FBL03FFL04F2L03F1 _DumpHome _UpdateDumppusha0_ActivateFrame _AnyKeyPrompt_Redraw_DisplayPromptL0151ldaxysp _SingleStepL0441L0454L044FL042BL044CL042FL0429 _GetArg16L04F3ldaxildaidxL044Aincax2_DbgSetTmpBreak _SetRTSBreak _GetStack16tosaddax _RedrawStatic _DrawFrames _HelpPromptincsp1 _UpdateRegL0476L0479L04F4L047FL0482L0485L0488L04F5 _DrawFrameregswap2subyspL00D0L04F7staxyspL010DL010Btosadda0ldaxidxaddeqyspaddyspL04F9L0118L04FAL0119pushw0spL04FDL012BL012Daslax1pushwL0133L013DL04FCtosicmp0incsp6 _IsAbortKeyL04FE_Inputdecsp8L018DL0192L0502L01A0L0509L01B5L0507L0508pushwyspbooleq _InputHexleaa0spL01F4L01CCL01DBL01D9shlax4L01E4L050Bdecaxyaddeq0spL050A _ErrorPromptincsp4L0511_BreakInRomErrorL0216L0226L021CL0222_DbgResetTmpBreaksL0513L0231L0238_DbgTmpBreaksOkL0514L0516L0247L0254mulax3tossubaxL025DL051AL0266L051CL026EL051EL051BL0274L0255L0521L027FL028BL0293L0299L02A3 _AsmArg16incax1L02BDL02B3L0526L0525L02B9L0527L0523L0522_InitAsm_InitRegL052BL034EL0529 _InitStackL052DL052E _InitCStackL052FL03D4L0530L048Fdecsp2L0491L0535L04A2callaxL0534L04D2L04CAL0533L04BAL04C2L04EAL04E6L04E0L04BDL04ABL0536CODERODATABSSDATAZEROPAGENULLUzna` iqfpG gjM %ris@մ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  ^|  3  3 r Ir   ] 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__NES__ dbg/dbgdasm.sca65 V2.17 - Git 6c320f7popax__hextab OffsetTab AdrFlagTab SymbolTab1 SymbolTab2 MnemoTab1 MnemoTab2sregtmp1tmp2tmp3tmp4ptr1ptr2ptr3BufIndex OperandLenBufLen 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<+__NES__ dbg/dbgdump.sca65 V2.17 - Git 6c320f7 _DbgMemDumpaddysp1__hextabsptmp2tmp3tmp4ptr3ptr4.sizedumpputspacedump1dump9putcCODERODATABSSDATAZEROPAGENULLUzna` iq W@մfaX+%  x  H     & h  (L h (L   `U3 ! -0")& 4 .! 57(/ '__NES__dbg/dbgisram.sca65 V2.17 - Git 6c320f7 _DbgIsRAMpopaxreturn0return1ptr1.sizeL1TestVal CheckCellL2CODERODATABSSDATAZEROPAGENULLUzna` ixu]f8;3n ] :^ @մ([%faX8& H&8 I8LE EhR Rh XN  ^ 4^ H e Ie  d Gd   o oo  4  HB BHp`?. c Hc0 0 z`A;yV VHH%%4 O O < <  K K1Sj0"::`Y } } - -  > >   9 [0` a  ,$r0**L) )X X H Ime5 5ss`~ i ilW W++066h h' 'kkx x/ /J JtU]07Lv vM M Hn In=eF F__3`Q9#:  b C   2;<= PX5MFG K-> '/(Ic \VO<}Whxn #E # #)v#i3q/@CZbZZLhmj| -P0Ml?")o&ys f }LOpEgtbk3T1A; e n!i qdx %_@N*(ar,2wcRKz/:u~#'BSD{Q+>__NES__ dbg/dbgsupp.sca65 V2.17 - Git 6c320f7_DbgInit_DbgSP_DbgCS_DbgHIpopptr1return0 _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` ix^ =#@մfaXfaX'8   `        __NES__runtime/decax1.sca65 V2.17 - Git 6c320f7decax1,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@մfaXfaX'8   `        __NES__runtime/decax2.sca65 V2.17 - Git 6c320f7decax2,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@մfaXfaX'8   `        __NES__runtime/decax3.sca65 V2.17 - Git 6c320f7decax3,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@մfaXfaX'8   `        __NES__runtime/decax4.sca65 V2.17 - Git 6c320f7decax4,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@մfaXfaX'8   `        __NES__runtime/decax5.sca65 V2.17 - Git 6c320f7decax5,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@մfaXfaX'8   `        __NES__runtime/decax6.sca65 V2.17 - Git 6c320f7decax6,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@մfaXfaX'8   `        __NES__runtime/decax7.sca65 V2.17 - Git 6c320f7decax7,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@մfaXfaX'8   `        __NES__runtime/decax8.sca65 V2.17 - Git 6c320f7decax8,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixm LH@մfaXfaX6   8   `         __NES__runtime/decaxy.sca65 V2.17 - Git 6c320f7decaxytmp1,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqp 81k@մfaX9      `           __NES__runtime/decsp1.sca65 V2.17 - Git 6c320f7decsp1sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPk@մfaXI   8   ` `            __NES__runtime/decsp2.sca65 V2.17 - Git 6c320f7decsp2sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPk@մfaXI   8   ` `            __NES__runtime/decsp3.sca65 V2.17 - Git 6c320f7decsp3sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPk@մfaXI   8   ` `            __NES__runtime/decsp4.sca65 V2.17 - Git 6c320f7decsp4sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPk@մfaXI   8   ` `            __NES__runtime/decsp5.sca65 V2.17 - Git 6c320f7decsp5sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPk@մfaXI   8   ` `            __NES__runtime/decsp6.sca65 V2.17 - Git 6c320f7decsp6sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPk@մfaXI   8     ` `            __NES__runtime/decsp7.sca65 V2.17 - Git 6c320f7decsp7sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPk@մfaXI   8   ` `            __NES__runtime/decsp8.sca65 V2.17 - Git 6c320f7decsp8sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq!0MPV:O;@մ([g      E    L  `       $ %#__NES__ runtime/div.sca65 V2.17 - Git 6c320f7tosdiva0tosdivaxpopsargsudiv16negaxptr1tmp1tmp2.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq!0 <?G>@մfaXg         $  L  `      "!__NES__ common/divt.sca65 V2.17 - Git 6c320f7_divtosdivaxnegaxsregptr1tmp1.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq= wOP@մfaX      __NES__common/doesclrscr.sca65 V2.17 - Git 6c320f7_doesclrscrafterexitreturn0CODERODATABSSDATAZEROPAGENULLUzna` i{ VY bAXB@մ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__NES__em/em-kernel.sca65 V2.17 - Git 6c320f7return0 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__NES__em/em_commit.sca65 V2.17 - Git 6c320f7./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__NES__em/em_copyfrom.sca65 V2.17 - Git 6c320f7./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__NES__em/em_copyto.sca65 V2.17 - Git 6c320f7./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$@ |K1| } @մ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__NES__ em/em_load.sca65 V2.17 - Git 6c320f7./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__NES__ em/em_map.sca65 V2.17 - Git 6c320f7./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__NES__em/em_pagecount.sca65 V2.17 - Git 6c320f7./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}oEXF@մ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__NES__em/em_unload.sca65 V2.17 - Git 6c320f7 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__NES__ em/em_use.sca65 V2.17 - Git 6c320f7./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  =Lh@մfaXN        `           __NES__runtime/enter.sca65 V2.17 - Git 6c320f7entersp.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @մfaX&   L       __NES__ runtime/eq.sca65 V2.17 - Git 6c320f7toseq00toseqa0toseqaxtosicmpbooleqsptmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixC RP@մfaXfaX  ! "#$%   "  &__NES__common/errno.sca65 V2.17 - Git 6c320f7*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz  n o  @մU*[faX'_( - &   # 1 qA  Y> H8 j `(  @C ;= T'  ? %No such file or d@i@r@e@c@t@o@r@y@@Function not impl4e4m4e4n4t4e4d44N6o6 6s6p6a6c6e6 6l6e6f6t6 6o6n6 deviceD;e;v;i;c;e; ;o;r; ;r;e;s;o;u;r;ce busyI7n7t7e7r7r7u7p7t7e7d7 7s7y7s7t7em callU,n,k,n,o,w,n, ,O,S, ,e,r,r,o,r, codeToo many open filesP"e"r"m"i"s"s"i"o"n" "d"e"n"i"e"dGGExec format error  I n v a l i d   a r g u m e n t BBEaEdE EfEiElEeE EnEuEmEbEeErEEN.o. .s.u.c.h. .d.e.v.i.c.e..O u t   o f   m e m o r y  U$n$k$n$o$w$n$ $e$r$r$o$r$$Illegal seekF3i3l3e3 3e3x3i3s3t3s33Range errorI9/9O9 9e9r9r9o9r99Try again)*+,+IU -P0MHG?")>&9C8LO6E3T1A4;J$.!I= 5 F%7@N*(,2RK/: #'BSDQ<+-__NES__../libwrk/nes/errormsg.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac __sys_errlist.sizeL0001L0003L0005L0007L0009L000BL000DL000FL0011L0013L0015L0017L0019L001BL001DL001FL0021L0023L0025CODERODATABSSDATAZEROPAGENULLUzna` iRi ux#w@մfaXfaX "faX/"  3- -)    4`"  $ $* L1 101234 # -$1": -") 1$.!  "% * ,2/ #5__NES__common/fclose.sca65 V2.17 - Git 6c320f7_fclose_closeptr1*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX*/home/hugg/compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags f_pushback_FCLOSED_FOPEN_FEOF_FERROR _FPUSHBACK __filetab@L1CODERODATABSSDATAZEROPAGENULLUzna` kz2G SV"<U=@մU*[faXd>3       % %" "  ## $ $ L& *&     H       hL   %  "$ >' -0")&86314;$.! 5 %7*(,2/: #'+ __NES__../libwrk/nes/fdopen.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fdopen __seterrno__fdescpushaxL0003L000B.sizeincsp6CODERODATABSSDATAZEROPAGENULLUzna` kzCF }Pfg@մU*[ faX"h > >8 & &  C= =)%? ?)#--@L4 |4 )3KK6 6)$ $; L7 |7  * * . .  <   H((  L1 v1BBEE, ,    '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+(__NES__../libwrk/nes/fgetc.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fgetc_readpushaxregswap2decsp1L0025L0027.sizeL0016L000Cpusha0leaa0spL0023L001DL0021incsp3CODERODATABSSDATAZEROPAGENULLUzna` kzvE aN@մU*[faX4$                       L  L  !"#$  4  -")&1$.!  %*(,2/ #'+%__NES__../libwrk/nes/fgetpos.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fgetpos_ftellpushaxpushw0spldaxysp steaxspidxldax0spldeaxipusheaxtosneeaxL0005incsp4.sizeCODERODATABSSDATAZEROPAGENULLUzna` kztlZ gjKi@մU*[faX=( L L 5  W  WR  R 3 3 S S0  0>  >  TF FE E_ _I  1LP P )J ' '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+.__NES__../libwrk/nes/fgets.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fgetc_fgets __seterrnopushaxregswap2ldaxyspdecsp4L0004L0002.sizestaxyspL002BL000Bstax0spL001EL002AL000CL0022addeqyspsubeqyspL0029addyspCODERODATABSSDATAZEROPAGENULLUzna` ifONQP@մ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<"<__NES__common/fmisc.sca65 V2.17 - Git 6c320f7 _clearerr_feof_ferror_fileno_fflushreturn0ptr1*/home/hugg/compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags f_pushback_FCLOSED_FOPEN_FEOF_FERROR _FPUSHBACK __filetab*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXgetferr@L1errorCODERODATABSSDATAZEROPAGENULLUzna` ix* 69 z8@մfaX faX b&    '" "   & &` L '()*+ &* 0")&1.!  " (  ',__NES__common/fopen.sca65 V2.17 - Git 6c320f7_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+__NES__common/fprintf.sca65 V2.17 - Git 6c320f7_fprintfaddyspdecsp4 _vfprintfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz6:p |z8~@մU*[ faXW@ + +'  / /)*+ ),%    - -$   # #1%  ((&   !L G  ) )H0   " " h.L   !"# -+#/  )"W2 -0?")>&9C86E31A4;$.!= 5 F%7@*(,2/: #'B<+$__NES__../libwrk/nes/fputc.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fputc_writepushaxregswap2L000Bpusha0leaa0spL0017L000C.sizeL0002incsp4CODERODATABSSDATAZEROPAGENULLUzna` kzdB  ,/C@.A@մU*[faX-D2     &# #)$ $)%L 4  ( (   ! !    H       h L" " !"#$ "!(  #$ D) -0")&986314$.!= 5 %7*(,2/: #'<+%__NES__../libwrk/nes/fputs.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//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__NES__common/fread.sca65 V2.17 - Git 6c320f7_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   Y Z@մ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,__NES__ common/free.sca65 V2.17 - Git 6c320f7ptr1ptr2ptr3ptr4_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@ !D8 9@մU*[ faX!K4     ( ($ )% %   L& &    )   " L           # #L  !"#  &#!  (K'* -0")>&986314;$.!= 5 %7*(,2/: #'+$__NES__../libwrk/nes/freopen.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_freopen_close __seterrno__fopenpushaxldax0spL0011incsp6.sizeL0009pushwyspldaxyspCODERODATABSSDATAZEROPAGENULLUzna` ix % N@մfaX faX+$    e              L        P0G?>& 98O6A45F7@K:'BQ__NES__common/fscanf.sca65 V2.17 - Git 6c320f7_fscanfaddyspdecsp4_vfscanfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz~nf sv_}RuS@մ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+,__NES__../libwrk/nes/fseek.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fseek __seterrno_lseekpushaxregswap2decsp4L0022L0026.sizeL000A lsubeqysppusha0ldeaxysppusheaxldaxyspsteax0spldeax0spL0016L0027addyspCODERODATABSSDATAZEROPAGENULLUzna` kz+@ LO`,N@մU*[faXd               L    "&$!   #'!__NES__../libwrk/nes/fsetpos.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fsetpos_fseekpushaxpushwyspldaxyspldeaxipusheaxincsp4.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzoj pqr@մU*[ 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<+*__NES__../libwrk/nes/ftell.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_ftell __seterrno_lseekpushaxregswap2decsp4L0003L0002.sizepusha0pushl0steax0spldeax0sppusheaxtosgeeaxL000F lsubeq0spincsp6CODERODATABSSDATAZEROPAGENULLUzna` i.J 8$%@մ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__NES__common/fwrite.sca65 V2.17 - Git 6c320f7_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? @մfaX&   L        __NES__ runtime/ge.sca65 V2.17 - Git 6c320f7tosge00tosgea0tosgeaxtosicmpboolge.sizeCODERODATABSSDATAZEROPAGENULLUzna` i_o z}hS|T@մfaXfaXLfaXY#   "k"+k+::WkSSJ J  3 3Y Y R..`TZ[\]^S53YR5JQ#Hb</?Y[N"B)P=X H7(% EDOA#L8Z' 6! 9: 4 %5K* 2 U1&T>\@.QWI #JMV0RS$C3___NES__ nes/get_tv.sca65 V2.17 - Git 6c320f7(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC+/home/hugg/compilers/cc65/asminc/get_tv.incTVNTSCPALOTHER_get_tvtmp1tmp2wait.sizeloopovernopalCODERODATABSSDATAZEROPAGENULLUzna` kza =5:;@մU*[faX*    L       __NES__../libwrk/nes/getchar.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stdin_fgetc_getchar.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqd xST@մ([- K7)''B!!\0#3$ i     &$&- "(( :  ,,%*"/`.  1U-PHG&98O6E3T1A4;J$.I=5F%7@N*V,2R: BSZQ<YX+__NES__common/getcpu.sca65 V2.17 - Git 6c320f7_getcpu.size@L8@L6@L9@L5@L4CODERODATABSSDATAZEROPAGENULLUzna` ix $ QR@մ([ faX )*%I 1I, ,     - -   " "6 6'  `4 4 ` *+,-. !,-"4  *7 -")> 864$! =5 "7@ *, #B<+/__NES__common/getcwd.sca65 V2.17 - Git 6c320f7_getcwdpopptr1__cwdptr1ptr2*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXloop.size@L1overflowdoneCODERODATABSSDATAZEROPAGENULLUzna` iq9 EHjVGW@մfaXv     L   8e `       )&  $.  %*(,'__NES__common/getenv.sca65 V2.17 - Git 6c320f7_getenv __environ __envcount searchenvreturn0ptr1ptr3tmp1found.size@L9CODERODATABSSDATAZEROPAGENULLUzna` kzg vPS 8R9@մU*[%faX @ y y M M  _ _ - -+ + wY Y% \ \ pI0v@v   H Hq H &q h  m m  } }Cb b- nn* *   6 6] ] =lL    < < -W W  rL' ' k k   ) )     :uu1     8 8 S S A A` P PO Oz z 33 dd #     t t   H" I"  s s      R Re e  I I   [ [~ ~  ?L h h ? :q| | ` `  E E L   L  g g     @ @: :L  ;   22     R/ I!/  H!G G { {   ! ! X X H( I(       0 0 i ia a  J J N      ?L L L  f fq Hq h . . 7 7 I!F F H!   p p^ ^ H> T TxV V hoLB B;A77: option requires4 4a4n4 4a4r4g4u4m4e4n4t4 4-4-4 : illegal option 9-9-9 99B$$C" !DE?B<432{/A.,)'.&Hf"yRi8XZIJtse[~!a +}b]<PzEg MShTVUj D0^ QY\W Lpc|:7hm\j|U -P0M]lHG")o&ysfWC8}LOpEgtbkTAeJn$.^!iqIdx=  F%_[N(arV wcRKvz/u~ #'`BSDZ{Q<YXF__NES__../libwrk/nes/getopt.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stderr_fputc_fputs_strchr_optarg_optind_opterr_optopt_getopt.sizeL004EL002AL0048L005EL0004L0005pushaxL0012L0064L0067aslax1ldaxiL000EL0009L0003L0015incax1L0068pushwyspbnegaxL0018L0022ldaxysppushwpusha0L0037L0035L003EL006BL003FL0059L0046tosicmpL0066L0044incsp8CODERODATABSSDATAZEROPAGENULLUzna` kzi_ }U]@մU*[ 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+*__NES__../libwrk/nes/gets.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stdin_fgetc_getspushaxldaxyspdecsp2push0L0005.sizestaxyspL0018L0026L0002L0006L001AL0022addeq0spincsp8CODERODATABSSDATAZEROPAGENULLUzna` kzUQ  ,/J. @մU*[faX<-      L                               L  !"#$     < ! -0")&14$.! 5 %*(,2/ #'+%__NES__../libwrk/nes/gmtime.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac__tz_gmtime _localtimepushaxdecsp4L000Cincsp6ldaxysp.sizeldeaxipusheax tosaddeaxsteax0spCODERODATABSSDATAZEROPAGENULLUzna` ix` @մfaXfaX)Oi=)j)L PQRST-$%Q</?Y[NB)P=X H7(%EDOA#L8Z'  6 9: 45K* 2U1&T>\@.QWIJMV0RS$C3U__NES__ nes/gotox.sca65 V2.17 - Git 6c320f7_gotox setcursor(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixrab@մfaXfaX;Q   j  ijL& &RSTUV 0&,(1(T</?Y[NB) P=X H7(%EDOA#L8Z' 6 9: 4 5K* 2U1&T>\@.QWIJMV0RS$C3W__NES__ nes/gotoxy.sca65 V2.17 - Git 6c320f7gotoxy_gotoxy setcursorpopa(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix` @մfaXfaX)Oj=)i)L PQRST-$%Q</?Y[NB)P=X H7(%EDOA#L8Z'  6 9: 45K* 2U1&T>\@.QWIJMV0RS$C3U__NES__ nes/gotoy.sca65 V2.17 - Git 6c320f7_gotoy setcursor(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @մfaX&   L         __NES__ runtime/gt.sca65 V2.17 - Git 6c320f7tosgt00tosgta0tosgtaxtosicmpboolgt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq#j@մfaX .(           8    i `PI `     -"&  $! %*(,/#'+__NES__runtime/icmp.sca65 V2.17 - Git 6c320f7tosicmptosicmp0spsreg.size@L1@L2@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` ix+, %@մfaX faX3+# #      $ $E  $ !!"8 I%i    $  0  `L  !#   $  &-0?") 984 .! @*(,/: #'+"__NES__runtime/idiv32by16r16.sca65 V2.17 - Git 6c320f7 idiv32by16r16negaxudiv32by16r16m-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L1@L3@L2@L4CODERODATABSSDATAZEROPAGENULLUzna` ix. j%@մfaXfaX+&      E              L ` !     -")&  $! %*(, #'+"__NES__runtime/imul16x16r32.sca65 V2.17 - Git 6c320f7 imul16x16r32negax umul16x16r32mnegeax-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L1@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` ix2MjmRlS@մ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__NES__runtime/imul8x8r16.sca65 V2.17 - Git 6c320f7 imul8x8r16 imul8x8r16mptr1ptr3tmp1,/home/hugg/compilers/cc65/asminc/generic.mac.size@L7NegMult@L2@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` i^ 12@մfaXfaXfaX'i`     !__NES__runtime/incax1.sca65 V2.17 - Git 6c320f7incax1,/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  `        __NES__runtime/incax2.sca65 V2.17 - Git 6c320f7incax2,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )khi@մfaXL         __NES__runtime/incax3.sca65 V2.17 - Git 6c320f7incax3incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )khi@մfaXL         __NES__runtime/incax5.sca65 V2.17 - Git 6c320f7incax5incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )khi@մfaXL         __NES__runtime/incax6.sca65 V2.17 - Git 6c320f7incax6incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )khi@մfaXL         __NES__runtime/incax7.sca65 V2.17 - Git 6c320f7incax7incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )khi@մfaXL         __NES__runtime/incax8.sca65 V2.17 - Git 6c320f7incax8incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixsGZ@մ([faX<    e   `         __NES__runtime/incaxy.sca65 V2.17 - Git 6c320f7incaxyincax4tmp1,/home/hugg/compilers/cc65/asminc/generic.mac.size@L9CODERODATABSSDATAZEROPAGENULLUzna` iqf 3!k@մfaX/  `          __NES__runtime/incsp1.sca65 V2.17 - Git 6c320f7incsp1sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix% 1NQP@մ([faXv   ! ! ##`  % %` !"! %)"& $! *(/ #'#__NES__runtime/incsp2.sca65 V2.17 - Git 6c320f7popaxincsp2sp(/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` iqM )khi@մfaXL         __NES__runtime/incsp3.sca65 V2.17 - Git 6c320f7incsp3addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )khi@մfaXL         __NES__runtime/incsp4.sca65 V2.17 - Git 6c320f7incsp4addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )khi@մfaXL         __NES__runtime/incsp5.sca65 V2.17 - Git 6c320f7incsp5addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )khi@մfaXL         __NES__runtime/incsp6.sca65 V2.17 - Git 6c320f7incsp6addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )khi@մfaXL         __NES__runtime/incsp7.sca65 V2.17 - Git 6c320f7incsp7addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )khi@մfaXL         __NES__runtime/incsp8.sca65 V2.17 - Git 6c320f7incsp8addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqA B   [_e @մ([t k2 2 (     4 4  J-       77    B (  H 6 6hL IO*   #i> `V[  3  M M wJfR R J&   i   NNI IJ J JIA A       IeT T      - -f f55y] ] _ _}        ; 3;   LLe  PPi3 3 (   Qk!==  YY    u uL? o? >tt  >cc{ {>  ^< ~@} >@  ~ ~& &U>m m     `  *rZZ  8  > } ~ ` >8" ^"}+ + )q`&n n    F~ ~j` x x  jjj`F H* C C 8jHl lh1` D D    `l        2m  > [ 0 9  s  >nop h hb^@ hhhh6$hmj|U PM]l?>&s98ptkTA;Jn$^!iqd= %_@Nr2wcRvz/:u `BSZ{Q<Xq__NES__zlib/inflatemem.sca65 V2.17 - Git 6c320f7 _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'/_Vs@մ([ faXfaX"cKx</ /E E 3 3m- -$ $8m     ) ) X`9> >`6 6 `.A5 H5? ?D DHC@ @H,% %+ += =1 1 ( (J  H ""h'2 2h `:#$   %L &' =1 D@25 3@): *###FmjU -0MlH?s  9CL6EgtkT1A4 n$.^ qd5 _[N*ar,wRK/:u'`BSZQ<YX+(__NES__common/interrupt.sca65 V2.17 - Git 6c320f7_set_irq _reset_irq clevel_irqpopax __ZP_START__jmpvec-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace,/home/hugg/compilers/cc65/asminc/generic.macirqvec.sizeirqspzpsave@L1@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` iqQkgh@մfaX `     `  __NES__ nes/irq.sca65 V2.17 - Git 6c320f7initirqdoneirq.sizeCODERODATABSSDATAZEROPAGENULLONCEUzna` ixw !@մfaXfaX@     )``      __NES__common/isalnum.sca65 V2.17 - Git 6c320f7_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@     )``      __NES__common/isalpha.sca65 V2.17 - Git 6c320f7_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@  ) ` `     __NES__common/isblank.sca65 V2.17 - Git 6c320f7_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@     )``      __NES__common/iscntrl.sca65 V2.17 - Git 6c320f7_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@     )``      __NES__common/isdigit.sca65 V2.17 - Git 6c320f7_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  ``     __NES__common/isgraph.sca65 V2.17 - Git 6c320f7_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@     )``      __NES__common/islower.sca65 V2.17 - Git 6c320f7_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)` `      __NES__common/isprint.sca65 V2.17 - Git 6c320f7_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  ``     __NES__common/ispunct.sca65 V2.17 - Git 6c320f7_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@     )```      __NES__common/isspace.sca65 V2.17 - Git 6c320f7_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@     )``      __NES__common/isupper.sca65 V2.17 - Git 6c320f7_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@     )``      __NES__common/isxdigit.sca65 V2.17 - Git 6c320f7 _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# r s@մ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<+__NES__ common/itoa.sca65 V2.17 - Git 6c320f7_itoa_utoaaddysp1__hextabspsregptr2ptr3tmp1specval.sizedopoputoaL2L1L10L3L5L6L7L9CODERODATABSSDATAZEROPAGENULLUzna` iqD d>?@մ([ L    __NES__runtime/jmpvec.sca65 V2.17 - Git 6c320f7jmpvec.sizeCODERODATABSSDATAZEROPAGENULLUzna` iGZuh=@մ([([faX]+M;  5 5O O= =# #> >! !$11A HA% %K0 I0 FH  8 2 82   L( (`J ; N`M   '  *`,jGoGyGG - ". LDLLCL?/0/5=#%)A0C-@96 ?C D( OQj/ -?UP0HNG)(>FfPW9C)&O'E%gEDOb3L14;GeJi9+d4=5FN*(2 ,a1 V>,2.:QMBD0 Q<SYX+31__NES__joystick/joy-kernel.sca65 V2.17 - Git 6c320f7 joy_librefptr1//home/hugg/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@L1copyCODERODATABSSDATAZEROPAGENULLUzna` ix= L~@մfaX([ !"/ -?NFPEDOLG9+4 2 ,1 >.QM0 S3#__NES__joystick/joy_count.sca65 V2.17 - Git 6c320f7//home/hugg/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 ab@մfaX([faX#faX1faXFWB H H8 8 X  X   3 3EE    [ [5 5e eF0414D HD I  H@G G% %   hMM    9 9/VVH; ;   0 0  h7`..`\GHI  U  >  `JK A @)U?=[=$ <CH*b0)h-39Q8X;Wjhm\j/ -?UPK0]lHNGo(&ysFP 92<8J)&O'%EDGOtbkL1A;Gn.^ i9+I40 F7@N*12 ,1 V>Iwc./H/:uQ4M3B0 < FS3L__NES__joystick/joy_load.sca65 V2.17 - Git 6c320f7//home/hugg/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= L}@մ([([ !" / -?NFPEDOLG9+4 2 ,1 >.QM0 S3#__NES__joystick/joy_read.sca65 V2.17 - Git 6c320f7//home/hugg/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` iq= WX@մfaX      __NES__nes/joy_stat_stddrv.sca65 V2.17 - Git 6c320f7_joy_static_stddrv_nes_stdjoy_joyCODERODATABSSDATAZEROPAGENULLUzna` iC^ ilAk@մfaX([faX#faX4 H    H*  h1h$  L9 9 h7!`)567892(9*;/ @/ -?KN"(FP2<J)&'%EDGOLG $!9+40 %12 ,1 >I.H/Q4#M3B0 FS3:__NES__joystick/joy_unload.sca65 V2.17 - Git 6c320f7//home/hugg/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` iqf 86x@մfaX/   L `        __NES__ common/labs.sca65 V2.17 - Git 6c320f7_labs_imaxabsnegeaxsreg.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` ixs"89@մfaX faX%"  'q# # +q& &( (q   * *q     L/ / !"#   (*  #& /"0")&  $!% *(, #'+$__NES__runtime/ladd.sca65 V2.17 - Git 6c320f7 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` ix*. @մ([ faX-*  0 0,q   -H /q$ $  "% q * * & q   h`+ !"# 0 $ *05 -0") 8634 .!=5% *(,2/: #'$__NES__runtime/laddeq.sca65 V2.17 - Git 6c320f7laddeq1laddeqaladdeqsregptr1tmp1(/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|){@մfaX #"q   H q     q    q   h`       " !   __NES__runtime/laddeqsp.sca65 V2.17 - Git 6c320f7 laddeq0sp laddeqyspspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixn"89@մ([ faX$!  1 ,  1( (  1* *" "   10 0# # L' ' !"#  " #(*0'+10")&  $.! % *(,/#'+$__NES__runtime/land.sca65 V2.17 - Git 6c320f7 tosand0ax tosandeaxaddysp1spsregtmp1(/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` iqC\ hko|VjW@մfaX  )       f  f f j   `      "&$!%*, #+__NES__runtime/lasr.sca65 V2.17 - Git 6c320f7 tosasreaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` iq Lkr@մfaXY        ``             __NES__runtime/lbneg.sca65 V2.17 - Git 6c320f7bnegeaxsregtmp1.size@L0CODERODATABSSDATAZEROPAGENULLUzna` iqX! HI@մfaX !;4 ! !  8  "% % " "  && # #   ($`'`PI    (`!#  %  (-0")& 86314.! 5 %*(2#'+__NES__runtime/lcmp.sca65 V2.17 - Git 6c320f7toslcmpincsp4spsregptr1.sizeL4L1L2L3L5CODERODATABSSDATAZEROPAGENULLUzna` iq  ),[k+@մfaXkI HI  I  I h`          __NES__runtime/lcompl.sca65 V2.17 - Git 6c320f7compleaxsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq{ BFk@մfaXD        `             __NES__runtime/ldai.sca65 V2.17 - Git 6c320f7ldaidxptr1@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix03i2j@մfaXfaXT       ` !  #    "__NES__runtime/ldau0sp.sca65 V2.17 - Git 6c320f7ldau00spldau0yspspptr1(/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(i@մfaX5    `           __NES__runtime/ldaui.sca65 V2.17 - Git 6c320f7ldauidxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq36Vx5@մfaX^        `              __NES__runtime/ldauisp.sca65 V2.17 - Git 6c320f7ldaui0spldauiyspspptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq B]o@մfaXI         `             __NES__runtime/ldaxi.sca65 V2.17 - Git 6c320f7ldaxildaxidxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqf=<p@մfaX/     `          __NES__runtime/ldaxsp.sca65 V2.17 - Git 6c320f7ldax0spldaxyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq)<Y\`w3[4@մfaX            `              __NES__runtime/ldeaxi.sca65 V2.17 - Git 6c320f7ldeaxidxldeaxisregptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq =@[y?@մfaXg          `           __NES__runtime/ldeaxysp.sca65 V2.17 - Git 6c320f7ldeax0spldeaxyspsregsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq) 58Vq7@մ([q  8          `       $ #__NES__runtime/ldec.sca65 V2.17 - Git 6c320f7deceaxysregtmp1.size@L9CODERODATABSSDATAZEROPAGENULLUzna` iq3.a~e@մfaX          E  L   `              & ! %( __NES__runtime/ldiv.sca65 V2.17 - Git 6c320f7 tosdiv0ax tosdiveax poplsargsudiv32negeaxsregptr1tmp1tmp2.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @մfaX&    L          __NES__ runtime/le.sca65 V2.17 - Git 6c320f7tosle00toslea0tosleaxtosicmpboolle.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq{L`q@մfaXD   e H e h`           __NES__runtime/leaaxsp.sca65 V2.17 - Git 6c320f7leaaxspleaa0spsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix3Cb34@մ([ faX! #  H  8&e  !! h`"#$%& "     ').-0 8314 . 7 *,2/'__NES__runtime/leave.sca65 V2.17 - Git 6c320f7leave00leave0leavey00leavey0leaveyleaveaddyspsp(/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` iqQ $rtu@մfaX  L         __NES__ runtime/leq.sca65 V2.17 - Git 6c320f7toseqeaxtoslcmpbooleq.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $rtu@մfaX  L         __NES__ runtime/lge.sca65 V2.17 - Git 6c320f7tosgeeaxtoslcmpboolge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $rtu@մfaX  L         __NES__ runtime/lgt.sca65 V2.17 - Git 6c320f7tosgteaxtoslcmpboolgt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq=oWX@մfaX      __NES__ nes/libref.sca65 V2.17 - Git 6c320f7 joy_libref tgi_libref_exitCODERODATABSSDATAZEROPAGENULLUzna` iq  $'Qxq&@մfaXa   e     `          __NES__runtime/linc.sca65 V2.17 - Git 6c320f7inceaxyptr4sreg@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $rtu@մfaX  L         __NES__ runtime/lle.sca65 V2.17 - Git 6c320f7tosleeaxtoslcmpboolle.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ rop@մfaX  L         __NES__ runtime/llt.sca65 V2.17 - Git 6c320f7toslteaxtoslcmpboollt.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixT5|34@մ([ faX$        # #  % %  $ L `%&'()   # % $* ") 3 $.! % *2 #*__NES__runtime/lmod.sca65 V2.17 - Git 6c320f7 tosmod0ax tosmodeax poplsargsudiv32negeaxsregptr1ptr2tmp1tmp3tmp4(/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.sizePosCODERODATABSSDATAZEROPAGENULLUzna` ix*Q9,/.@մ([ faX)\W  & &> > ) F3 3 H H: 8 8P; ;  ( (<! !$ $/ / F4 4f f jCf% %fN Nf. .f   5e# #HI eJ J 1 1e    , ,e' '@ @h 66  `M*+,-. 081,03H#0>.0!4'@ 0$  0/J 0 &%N 0;(--E-=-Q-PMHG?")>&  9C8LO6E3A4;J.!I=5 F%7@N *(,2RK: #'BDQ<+/__NES__runtime/lmul.sca65 V2.17 - Git 6c320f7 tosumul0ax tosumuleax tosmul0ax tosmuleaxaddysp1spsregtmp1tmp2tmp3tmp4ptr1ptr3ptr4(/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.sizemul32L0L1CODERODATABSSDATAZEROPAGENULLUzna` iqQ $rtu@մfaX  L         __NES__ runtime/lne.sca65 V2.17 - Git 6c320f7tosneeaxtoslcmpboolne.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq0 : FIogH @մfaXIiH  Ii  I i  Ii h `        __NES__runtime/lneg.sca65 V2.17 - Git 6c320f7negeaxsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz+_CC@մU*[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+$__NES__../libwrk/nes/locale.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac _localeconv _setlocale _EmptyString.size_lcL0003L0022pushaxL002Aldax0spL002Cincsp4CODERODATABSSDATAZEROPAGENULLUzna` kz.e  n|@մU*[ 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+*__NES__../libwrk/nes/localtime.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac _localtime_mktimeL0004.sizepushaxdecsp4L001Eldaxyspldeaxisteax0spL0005incsp6ldeax0sppusheax tosumod0ax tosudiv0ax tosudiveaxinceaxyCODERODATABSSDATAZEROPAGENULLUzna` iq# M@մ([ ('               H H   `      0") 1 $!  *(,2#+__NES__common/longjmp.sca65 V2.17 - Git 6c320f7_longjmppopptr1spptr1ptr2.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixn"56@մ([ faX$!   ,  ( (  * *" "   0 0# # L' ' !"#  " #(*0'+10")&  $.! % *(,/#'+$__NES__ runtime/lor.sca65 V2.17 - Git 6c320f7tosor0axtosoreaxaddysp1spsregtmp1(/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` ix2 >Az@{@մ([faXl        L  !  %    "__NES__runtime/lpop.sca65 V2.17 - Git 6c320f7popeaxincsp4spsreg(/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` ixUn.*+@մ([ faX!) )% %H . .(   *  ,# #h  `  !"# )% #. 2 -0")& 1 $.! % *(, #'$__NES__runtime/lpush.sca65 V2.17 - Git 6c320f7pushl0push0axpusheaxdecsp4spsreg(/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` ixs"EF@մ([ faX%" - -8  *  , ,"   1 1# # ( (  L$ $ !"# - # ,1($%2 -0")& 31 .! % *(,2/ #'+$__NES__runtime/lrsub.sca65 V2.17 - Git 6c320f7 tosrsub0ax tosrsubeaxaddysp1spsregtmp1(/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`w`ypq@մ([          `       `            __NES__runtime/lsave.sca65 V2.17 - Git 6c320f7saveeaxresteaxsregregsave.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq?9x x  @մfaX RA $ $   !, I)i%  Ii-( ( Ii*  Ii+! !  / /"!"& &Ii# # Ii   I i ' ' I.i `  ' &#  (/ !$ 0 0">&98631A4; $.!=5 %7@*(,2/: #'<+__NES__runtime/lshelp.sca65 V2.17 - Git 6c320f7 poplsargsgetlopsregtmp1tmp2ptr1ptr3ptr4.sizeL1L2CODERODATABSSDATAZEROPAGENULLUzna` iq-E\_jO^P@մfaX )      &  & &     `     ")$!%*, #__NES__runtime/lshl.sca65 V2.17 - Git 6c320f7 tosasleax tosshleaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` iq-E QTe|5S6@մfaX )      F f f  j    `      0")$!( #__NES__runtime/lshr.sca65 V2.17 - Git 6c320f7 tosshreaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` ixuBC@մ([ faX'"   8'Iq  -H I/q$ $ "3 3% % * *  h&L  !" % $3*,4 -0")& 314 .! % *(,2/ #'+#__NES__runtime/lsub.sca65 V2.17 - Git 6c320f7 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` ix6. @մ([ faX1,  2 28.I) q  / /H1I(q  & &6 , ,   " " $ $h` !" 2 / &,"$2!7 -0?")& 96314; $.!57 *(/ #'+#__NES__runtime/lsubeq.sca65 V2.17 - Git 6c320f7lsubeq1lsubeqalsubeqsregptr1(/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` iqq?{@մfaX '$8I q  H Iq            h`       " $!   #__NES__runtime/lsubeqsp.sca65 V2.17 - Git 6c320f7 lsubeq0sp lsubeqyspspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @մfaX&    L          __NES__ runtime/lt.sca65 V2.17 - Git 6c320f7toslt00toslta0tosltaxtosicmpboollt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq !$Lpx#@մfaXS       `              __NES__runtime/ltest.sca65 V2.17 - Git 6c320f7utsteaxtsteaxsregtmp1.sizeL9CODERODATABSSDATAZEROPAGENULLUzna` ix,[#"%'$@մ([faX.) ) 2 2C CZ Z X X O O  8 8 `\ @ @H Hd d K 9 6 6U U 00L- - <% %A A!LV VEE-1> 4 4PP" "F F$ $ b b] ]. .L \ D DBH[ 93 &( (& &7 7*+ + 5 5&&J H*R RN N: : SSWh , ,``  `^/0123  )d+ X  CZA4",  UF$].(5RN  8H67: =% =bO2YD;@;ehmjU -0lG?oys f 9C8LO6pEgtk3T1AeJn.idx5 F%7_[@N *r,2wKvz/:~`SQ+4__NES__ common/ltoa.sca65 V2.17 - Git 6c320f7_ltoa_ultoapopaxpopptr1negeax__hextab __longminstrsregptr1ptr2ptr3tmp1(/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_4510dopop.sizeultoaL2L1L10L3L5L6L7L9CODERODATABSSDATAZEROPAGENULLUzna` ixj\A  @մ([faX'zs % %   O 5OG G  `4 P P0 0< < R R1 1M+ +E E( (-8 8" "=  LN N? ?, ,U U W# #&: :& &  *5&/ /&J J& HZI IV V) ) C C \ \[[  h2> >HTB B& &H H6 6. . $ $h3''  `()*+, 9&9?/VBH  9G +(#:$ 9U  9,J6 9%0"  91E8N57O7S7!7^mjU-]lHG?")o& fW 98L6Egbk3T1A4eJ$.^iId5 F%7_@ aV,2cRK/:#'`BSDQYX-__NES__runtime/ludiv.sca65 V2.17 - Git 6c320f7 tosudiv0ax tosudiveaxgetlopudiv32addysp1spsregtmp3tmp4ptr1ptr2ptr3ptr4(/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.sizeL0L1CODERODATABSSDATAZEROPAGENULLUzna` iqQ $uwx@մfaX  L         __NES__runtime/luge.sca65 V2.17 - Git 6c320f7 tosugeeaxtoslcmpbooluge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $uwx@մfaX  L         __NES__runtime/lugt.sca65 V2.17 - Git 6c320f7 tosugteaxtoslcmpboolugt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $uwx@մfaX  L         __NES__runtime/lule.sca65 V2.17 - Git 6c320f7 tosuleeaxtoslcmpboolule.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ urs@մfaX  L         __NES__runtime/lult.sca65 V2.17 - Git 6c320f7 tosulteaxtoslcmpboolult.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix6)_|C~@մ([ faX             # # `!"#$% #      "'"  !   &__NES__runtime/lumod.sca65 V2.17 - Git 6c320f7 tosumod0ax tosumodeaxgetlopudiv32sregtmp3tmp4ptr2(/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` ixn"89@մ([ faX$!  Q ,  Q( (  Q* *! !  Q0 0" " L' ' !"#  !"(*0'+1")&  $.! % *(,2/#'+$__NES__runtime/lxor.sca65 V2.17 - Git 6c320f7 tosxor0ax tosxoreaxaddysp1spsregtmp1(/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|UI VYE d X @մ([&faXE) g g  b b     #  #e  LX X< <6 6\ \x  xJ8JJEJ}   )Bi  44      /eH H ie  T T$ $CLR <Ru u) )8 eW  W   e  Q { {         ~ ~ e'  '  : :e.  .  Z Zte " " eJ  J    Y Y_  _z z`K 5 5 A AreN N  ,  ,V V^e  F  ej  j1w8p s sM v v- -( ( !q q   33  >eo o hec cd dO OGL` ` e  7 7  eL  Ll l    m m e   %  % e2  2  U  UD D  a a*f*fL*n *n`;*+,-. yyy~m]0 {7l sv 9|kI|P@h\jU PM]HG)o>y>fW9C89OpEgtbk3;$.?!i@x=  F%7_[N(aV<z/~ #'`BDQ</__NES__ common/lz4.sca65 V2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.macmemcpy_upwardspushaxpopax_decompress_lz4outwrittentmptokenoffsetinoutlenL0046L0004.sizeL000AL0013L001AL0017L001CL0047L002FL0045L003CL0039CODERODATABSSDATAZEROPAGENULLUzna` iqL ${mn@մfaX      ` __NES__nes/mainargs.sca65 V2.17 - Git 6c320f7 initmainargs__argc__argv.sizeCODERODATABSSDATAZEROPAGENULLONCEUzna` iqno}~@մ([,% `   `   0`!!`"` *`  ' %   !   #0")& 314 ! 5*(,2/ #'+__NES__runtime/makebool.sca65 V2.17 - Git 6c320f7boolnebooleqboolltboolleboolgtboolgeboolultbooluleboolugtboolugeret1.sizeret0L0CODERODATABSSDATAZEROPAGENULLUzna` 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 +__NES__common/malloc.sca65 V2.17 - Git 6c320f7ptr1ptr2ptr3_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` iq8% 12@մ([ 2-I  I     H   h    "" !! L# # e `  #2$0"& 8314 !5%7*2/ #+__NES__common/memchr.sca65 V2.17 - Git 6c320f7_memchrpopaxpopptr1return0ptr1ptr2L1.sizeL3L2foundnotfoundL9CODERODATABSSDATAZEROPAGENULLUzna` iqJ, ^_@մ([ 6/I  I   " " ! !      $$      L `#`   !"% 0?)> 9C8E31A$F%7@*2/: D+__NES__common/memcmp.sca65 V2.17 - Git 6c320f7_memcmppopaxpopptr1return0ptr1ptr2ptr3.sizeLoop BumpHiCntCompNotEqualGreaterCODERODATABSSDATAZEROPAGENULLUzna` iq1*/Y\%[@մ([Q<9  )  ! !  ! ! & &% %    ''  $L       # #  ` "  "%# "& " ) (-0M?")CLO1AJ.!I 5F@N*K/ +__NES__common/memcpy.sca65 V2.17 - Git 6c320f7_memcpymemcpy_upwardsmemcpy_getparamspopaxpopptr1spptr1ptr2ptr3.sizeL2L1doneL3CODERODATABSSDATAZEROPAGENULLUzna` i< E67@մ([ faXfaXPM  / /*   L    e 0 0& &e 1 16 6((   $ $  --" "    2  2  2    ! !++L  #6 # &1!# /0$"  7? -C0>HG?">&98BO@6E314 J!I= 5F%@,2K/:9#'D<<+__NES__common/memmove.sca65 V2.17 - Git 6c320f7_memmovememcpy_getparamsmemcpy_upwardspopaxptr1ptr2ptr3ptr4tmp1,/home/hugg/compilers/cc65/asminc/generic.mac//home/hugg/compilers/cc65/asminc/longbranch.mac.size@entry PageSizeCopy @copyBytedone @initBase @copyBytes @copyEntryCODERODATABSSDATAZEROPAGENULLUzna` 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+__NES__common/memset.sca65 V2.17 - Git 6c320f7_memset_bzero__bzeropopaxspptr1ptr2ptr3.sizecommon evenCountoddCountL2L1leaveL3CODERODATABSSDATAZEROPAGENULLUzna` iqQ ){@մfaX  L        __NES__common/mkdir.sca65 V2.17 - Git 6c320f7_mkdir __sysmkdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz (7: (o|*9}*@մU*[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__NES__../libwrk/nes/mktime.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_div_mktime _MonthLength.size _MonthDayspushaxregswap2decsp4L002AL002E staxspidxL0093L005B _IsLeapYearL0096staxyspldaxysptosicmpL004EL0069L009Dincax1aslax1pushwtosaddaxdecax1L0079L0077decaxy tosumulaxshrax2stax0spincax4 tosumoda0ldax0spaxulongpusheax tosumuleax tosumul0ax tosaddeax tosumula0L0029L0090addyspL009Epushw0spL0022L00A3 tosumodaxL00A2incsp2CODERODATABSSDATAZEROPAGENULLUzna` iq25L4@մ([S      $  L `        $ % __NES__ runtime/mod.sca65 V2.17 - Git 6c320f7tosmoda0tosmodaxpopsargsudiv16negaxsregtmp1.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq= g?@@մfaX   &$# __NES__common/modfree.sca65 V2.17 - Git 6c320f7 _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__NES__common/modload.sca65 V2.17 - Git 6c320f7(/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` ixrR lm@մfaX, 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__NES__mouse/mouse-kernel.sca65 V2.17 - Git 6c320f7return0popsregincsp2 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= @մfaXfaX<UVWXYZQG$E$W</-? YjcB F = XH uE D aO A ;G  9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C [__NES__mouse/mouse_buttons.sca65 V2.17 - Git 6c320f71/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= @մfaXfaX<UVWXYZO+CW</-?  YjcB F = XH uE D aO A ;G 9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C [__NES__mouse/mouse_getbox.sca65 V2.17 - Git 6c320f71/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 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__NES__mouse/mouse_geterrormsg.sca65 V2.17 - Git 6c320f71/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 @մfaXfaX<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 \__NES__mouse/mouse_hide.sca65 V2.17 - Git 6c320f71/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 @մfaXfaX<*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 \__NES__mouse/mouse_info.sca65 V2.17 - Git 6c320f7ptr11/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 @մfaXfaX<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 ]__NES__mouse/mouse_ioctl.sca65 V2.17 - Git 6c320f7popaptr11/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 X3  @մfaXfaX_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 __NES__mouse/mouse_load.sca65 V2.17 - Git 6c320f71/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 @մfaXfaX<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 ]__NES__mouse/mouse_move.sca65 V2.17 - Git 6c320f7incsp2ptr11/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 @մfaXfaX<*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 \__NES__mouse/mouse_pos.sca65 V2.17 - Git 6c320f7ptr11/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= @մfaXfaX<UVWXYZNKBKW</-? YjcB F = XH uE D aO A ;G 9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C [__NES__mouse/mouse_setbox.sca65 V2.17 - Git 6c320f71/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 @մfaXfaX<=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 \__NES__mouse/mouse_show.sca65 V2.17 - Git 6c320f71/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@մfaXfaXAG9I8 <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__NES__mouse/mouse_unload.sca65 V2.17 - Git 6c320f71/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` iq6PgjLi@մ([rE@  .    )& &' F( (f  e! ! * *e$ $ #f% %jf f' '  `L   " " + +  ,L   ('  &!*"+ $%  --0?")& 9CE31A4$.!5 F%@*(,/ 'BD__NES__ runtime/mul.sca65 V2.17 - Git 6c320f7 tosumulaxtosmulaxmul8x16mul8x16apopptr1tmp1ptr1ptr4.size@L3@L4@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iqz 9DG)F@մ([ C:8      ))& &F  *e% % e' ' f( (j"f !,,# `F  e j f  $+ `  &'(   %  --?")> 98634;$.!=5 %7*(,: #'<+__NES__runtime/mul8.sca65 V2.17 - Git 6c320f7 tosumula0tosmula0mul8x16mul8x16apopptr1ptr1ptr4.sizemul8x8@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iqCR ^aok;`<@մfaX    &    & e    e  * `            __NES__runtime/mulax10.sca65 V2.17 - Git 6c320f7mulax10ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  ,/[i.@մ([m    &  e He   h`            __NES__runtime/mulax3.sca65 V2.17 - Git 6c320f7mulax3ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq* 6 BEeiD@մ([    &    & e H  e h`         __NES__runtime/mulax5.sca65 V2.17 - Git 6c320f7mulax5ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq.< HKeiJ@մfaX    &   e  e    * `          __NES__runtime/mulax6.sca65 V2.17 - Git 6c320f7mulax6ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqE R ^ati>`?@մ([    &   &  &  8  HIe h`        "     __NES__runtime/mulax7.sca65 V2.17 - Git 6c320f7mulax7ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq? L X[oi3Z4@մ([    &  &  &   e He h`        !  __NES__runtime/mulax9.sca65 V2.17 - Git 6c320f7mulax9ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @մfaX&    L          __NES__ runtime/ne.sca65 V2.17 - Git 6c320f7tosne00tosnea0tosneaxtosicmpboolne.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQfk@մ([L     Ii HIih`            __NES__runtime/negabs.sca65 V2.17 - Git 6c320f7negax_abs.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` ix47x6y@մ([ faXS    L  !" %    #__NES__ runtime/or.sca65 V2.17 - Git 6c320f7tosora0tosoraxaddysp1sptmp1(/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` kz8=u pG@մU*[ faX_T; ) )     * *# ". .$$   ' ' H I % %       L N  ( (  - H- I   ! ! + +L  . %s: %s !"#$  !)*'% +(.T,&/ -0?)>&9C86E31A4;$.= 5 F%7@*(,2/:#'B<+%__NES__../libwrk/nes/perror.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stderr_fprintf_perror _strerror__errnoL0008.sizeL000FpushaxL0004pushwyspL0012incsp4CODERODATABSSDATAZEROPAGENULLUzna` kzR 0    @մU*["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__NES__../libwrk/nes/pmemalign.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_malloc_free_posix_memalignpushaxdecsp6L0002ldaxyspL0001.sizeL0009pushwyspsubeqysptosandaxL0008L0014complax staxspidxdecax4ldaxidxstaxysptossubaxL002Bincax4L003AL004FaddyspCODERODATABSSDATAZEROPAGENULLUzna` ix{  u& '@մfaXfaXD      ` `   !   !__NES__runtime/popa.sca65 V2.17 - Git 6c320f7popasp(/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  @A@մ([faXI       L   !       "__NES__runtime/popptr1.sca65 V2.17 - Git 6c320f7popptr1incsp2spptr1(/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 #&Y%Z@մfaXfaXSH     hL  !#    "__NES__runtime/popsreg.sca65 V2.17 - Git 6c320f7popsregincsp2spsreg(/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#)c  @մfaX/faXRS  {6;t=8#--"e pv5'h+L=o{6;t=8#--"e pv5'h+L=oTUVW"XM4[ G" "m m11}| |u u9Fj j@P+ +Z Z@ @5 5$$`:R R?a] ]WB B^w w  c`xn7w070?l</|?Y[NoB)sfP=X H7}L(%OgEDOAbk#L8TZ' e6^i 9: Id4x5K_N* 2Ua1r&T>w\@cKvz.uQ~WIJ`MSV0Z{RSYX$C3Y__NES__ nes/ppu.sca65 V2.17 - Git 6c320f7ppuinit paletteinitpaldata(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC@wait.size@loopCODERODATABSSDATAZEROPAGENULLONCEUzna` ix"ApI J @մfaXfaXV{;s;SS`ur@s@OO` v 5t5bub 9 9'q'PtP!!umm:v:}}qTsT`8hsh""` r|g gvKvK vvv v)v<v< v,v^v(vl]vlvKvK vvv v)v<v< v,v^v(vlGvlvKvK vvv v)v<v< v,v^v(vl1vlvKvK vvv v)v<v< v,v^v(vlvlvKvK vvv v)v<v< v,v^v(vlvl0 0ff>r>s`W X HYZ[,IM ACL9?<Xhj/?PY0M[N?B)>&s fP=X 9CH78L(%O6^YED[OAb#L8T1Z'A4;Z e$.6! 9: qI4V %75K@* (2U1\&T>2\@cRK._:QWI#J`MV0RQ<SW$C3\__NES__ nes/ppubuf.sca65 V2.17 - Git 6c320f7ppubuf_waitempty ppubuf_wait ppubuf_put ppubuf_flush(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC@wait.size@dolooptemp@loop@endCODERODATABSSDATAZEROPAGENULLUzna` ix*- KL@մfaX faX3)       m                 L       !0) 98L31A4;J.=F*(2K/:B<__NES__common/printf.sca65 V2.17 - Git 6c320f7_printf_stdoutpushaxaddysp _vfprintfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqM )ifg@մfaXL       __NES__runtime/push1.sca65 V2.17 - Git 6c320f7push1pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )ifg@մfaXL       __NES__runtime/push2.sca65 V2.17 - Git 6c320f7push2pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )ifg@մfaXL       __NES__runtime/push3.sca65 V2.17 - Git 6c320f7push3pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )ifg@մfaXL       __NES__runtime/push4.sca65 V2.17 - Git 6c320f7push4pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )ifg@մfaXL       __NES__runtime/push5.sca65 V2.17 - Git 6c320f7push5pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )ifg@մfaXL       __NES__runtime/push6.sca65 V2.17 - Git 6c320f7push6pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )ifg@մfaXL       __NES__runtime/push7.sca65 V2.17 - Git 6c320f7push7pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix! ..\_^@մfaXfaXr      `   ` !"  $  #__NES__runtime/pusha.sca65 V2.17 - Git 6c320f7pusha0sppushaysppushasp(/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 )mjk@մfaXL       __NES__runtime/pushaff.sca65 V2.17 - Git 6c320f7pushaFFpushax.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq& 1._bjxDaE@մfaX~  H 8    h `           !  #__NES__runtime/pushax.sca65 V2.17 - Git 6c320f7push0pusha0pushaxsp.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix 1ORQ@մfaXfaXq e     L  !"  &    #__NES__runtime/pushb.sca65 V2.17 - Git 6c320f7pushbpushbidxpushaxptr1(/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(y@մfaX  L          __NES__runtime/pushbsp.sca65 V2.17 - Git 6c320f7pushbsppushbysppusha0sp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )jgh@մfaXL       __NES__runtime/pushc0.sca65 V2.17 - Git 6c320f7pushc0pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )jgh@մfaXL       __NES__runtime/pushc1.sca65 V2.17 - Git 6c320f7pushc1pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )jgh@մfaXL       __NES__runtime/pushc2.sca65 V2.17 - Git 6c320f7pushc2pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq4 @Cjx%B&@մfaXu         L           __NES__runtime/pushlysp.sca65 V2.17 - Git 6c320f7pushlysppusheaxsregsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq.47L6@մfaXN       L              __NES__runtime/pushw.sca65 V2.17 - Git 6c320f7pushwpushwidx pushptr1idxpushaxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix= Jgji@մfaXfaX  8          `     __NES__runtime/pushwsp.sca65 V2.17 - Git 6c320f7pushwysppushw0spsp,/home/hugg/compilers/cc65/asminc/generic.mac.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqk 87|@մfaX4     L          __NES__common/putchar.sca65 V2.17 - Git 6c320f7_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?__NES__common/putenv.sca65 V2.17 - Git 6c320f7_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 :@մU*[ 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<+$__NES__../libwrk/nes/puts.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stdout_puts_strlen_writeL0003.sizepushaxpusha0pushwyspldaxyspL0013incsp2CODERODATABSSDATAZEROPAGENULLUzna` kz0 @NQ$u}P~@մU*[)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__NES__../libwrk/nes/qsort.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_qsort__swappushaxldaxyspL0048pushwysppush0decax1 tosumulax _QuickSortincsp8.sizeregswap2decsp4L003EL0002staxyspstax0spL0022L000EaddeqyspL0010tosicmpL0055L001Atosaddaxjmpvecincsp2L0018subeq0spL0056L0053L0057ldax0spL005AL002Cshlax1L0032L0054L0058addyspCODERODATABSSDATAZEROPAGENULLUzna` ixu `cd@մfaX faX+  &  " H% #! !    H  I$ $h&   `!$'--)&7(%6314$6+4%5*,1,2.'+__NES__common/raise.sca65 V2.17 - Git 6c320f7jmpvec+/home/hugg/compilers/cc65/asminc/signal.incSIG_ERRSIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERMSIGCOUNTsigtable __sig_ign __sig_dfl_signal_raise.size invalidsigCODERODATABSSDATAZEROPAGENULLUzna` iq#$ADl[C\@մ([ sJ1 m  m  m! !  i'   iY   iA  )  i1 `     `     ;"-0?)>&9C86E31A4;.!5%7@*(,2/:'B<+__NES__ common/rand.sca65 V2.17 - Git 6c320f7_rand_srandrand.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixS m  @մfaXfaXOkl;L& &PQRST &+*O</?Y[NB) P=X H7(%EDOA#L8Z' 6 9: 4 5K* 2U1&T>\@.QWIJMV0RS$C3U__NES__nes/randomize.sca65 V2.17 - Git 6c320f7 __randomize_srand(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz#ky|&  { @մU*[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__NES__../libwrk/nes/realloc.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_malloc_realloc_free_memcpy __heapptr __heapendpushaxregswap2decsp6L0002L0001.sizeL0006ldaxyspL000EL0011L000Fdecax4ldaxidxstaxyspL0021stax0spL003Eldax0spL003FL002BsubeqyspL0031pushwyspL003CaddyspCODERODATABSSDATAZEROPAGENULLUzna` iq # /2[z1@մfaXe     H   h  `           __NES__runtime/regswap.sca65 V2.17 - Git 6c320f7regswapspregbanktmp1@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqt BEs@մfaX=   H    h `              __NES__runtime/regswap1.sca65 V2.17 - Git 6c320f7regswap1spregbank.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq(; GJes"I#@մfaX H   h   H  h  `          ! #__NES__runtime/regswap2.sca65 V2.17 - Git 6c320f7regswap2spregbank.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ . ~@մfaX  L        __NES__common/remove.sca65 V2.17 - Git 6c320f7_remove __sysremove __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ . ~@մfaX  L        __NES__common/rename.sca65 V2.17 - Git 6c320f7_rename __sysrename __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )f]^@մfaX`        __NES__runtime/return0.sca65 V2.17 - Git 6c320f7return0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqN )f^_@մfaX`        __NES__runtime/return1.sca65 V2.17 - Git 6c320f7return1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix   fg@մfaXfaXZP0AA,hh&4`NQRSTU(X</? Y[NB)P=X H7(%EDOA#L8Z' 6 9: 4 5K* 2U1&T>\@.QWIJMV0RS$C3V__NES__ nes/revers.sca65 V2.17 - Git 6c320f7_revers(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESCL1.sizeL2CODERODATABSSDATAZEROPAGENULLUzna` kz +4 @C[,B@մU*[faXX            L      "&!  % #!__NES__../libwrk/nes/rewind.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac _clearerr_fseek_rewindpushaxpushw0sppushl0ldax0spincsp2.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ ){@մfaX  L        __NES__common/rmdir.sca65 V2.17 - Git 6c320f7_rmdir __sysrmdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix9<;@մ([ faXX8  "   L   !"    &"  ! %  ##__NES__runtime/rsub.sca65 V2.17 - Git 6c320f7 tosrsuba0 tosrsubaxaddysp1sptmp1(/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*- JK@մfaX faX3)        m  ! !            L    !    " 0H)&9831A4J!I= %*(2/ 'B+__NES__common/scanf.sca65 V2.17 - Git 6c320f7_scanf_stdinpushaxaddysp_vfscanfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac.sizeArgSize@L1CODERODATABSSDATAZEROPAGENULLUzna` ix ' 365@մ([ faX]        " "` !""  &   $!  ##__NES__conio/scrsize.sca65 V2.17 - Git 6c320f7 _screensizepopptr1 screensizeptr1ptr2(/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=&WX@մfaX4.  )  "0 !  $ $        =#`     `   $)  )%PM)& CLO63T1A4;J=5%7N*(,2R '<+__NES__common/searchenv.sca65 V2.17 - Git 6c320f7 searchenv copyenvptr __environ __envcountptr1ptr2ptr3@L0.size@L9@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` in$A%  @մfaXfaX4]faXr]F  ? ?w w1_ _, ,)+)BBd HdA A* I* RE ~ C~ . C.ff   } }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__NES__serial/ser-kernel.sca65 V2.17 - Git 6c320f7return0 ser_librefptr1ser_irq//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 SER_BITS_7 SER_BITS_8 SER_STOP_1 SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put ser_status ser_ioctl_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status _ser_ioctl_ser_clear_ptr./home/hugg/compilers/cc65/asminc/ser-error.inc SER_ERR_OKSER_ERR_NO_DRIVERSER_ERR_CANNOT_LOADSER_ERR_INV_DRIVERSER_ERR_NO_DEVICESER_ERR_BAUD_UNAVAILSER_ERR_NO_DATASER_ERR_OVERFLOWSER_ERR_INIT_FAILEDSER_ERR_INV_IOCTLSER_ERR_INSTALLEDSER_ERR_NOT_OPEN SER_ERR_COUNT ser_vectorsser_sig@L0inv_drv@L1copy@L2CODERODATABSSDATAZEROPAGENULLUzna` ix= H@մfaXfaX4Z[\]^_I,T,W<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 `__NES__serial/ser_close.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 SER_BITS_7 SER_BITS_8 SER_STOP_1 SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status _ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ixa K()@մfaXfaX4*[  L \]^_`KS1VE]<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 a__NES__serial/ser_get.sca65 V2.17 - Git 6c320f7ptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 SER_BITS_7 SER_BITS_8 SER_STOP_1 SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status _ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ixk RIJ@մfaXfaX44\ + +   L ]^_`aO>+2Z _<y/ - Yhlp[NcB) FPX(EDaO}ZG6g+4 xi~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 b__NES__serial/ser_ioctl.sca65 V2.17 - Git 6c320f7popaptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 SER_BITS_7 SER_BITS_8 SER_STOP_1 SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status _ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` i$ J {i j @մfaXfaX4ZfaXhfaXwfaXZE    RR I : :ii 3 3-  N N m0M1Me He I  H]o o9 9   h }}   U UGHW W   H H  hP`!((E`    [   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 __NES__serial/ser_load.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 SER_BITS_7 SER_BITS_8 SER_STOP_1 SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status _ser_ioctl_ser_clear_ptr./home/hugg/compilers/cc65/asminc/ser-error.inc SER_ERR_OKSER_ERR_NO_DRIVERSER_ERR_CANNOT_LOADSER_ERR_INV_DRIVERSER_ERR_NO_DEVICESER_ERR_BAUD_UNAVAILSER_ERR_NO_DATASER_ERR_OVERFLOWSER_ERR_INIT_FAILEDSER_ERR_INV_IOCTLSER_ERR_INSTALLEDSER_ERR_NOT_OPEN SER_ERR_COUNT,/home/hugg/compilers/cc65/asminc/modload.incMOD_CTRLREAD CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_READ MLOAD_ERR_HDR MLOAD_ERR_OS MLOAD_ERR_FMT MLOAD_ERR_MEM*/home/hugg/compilers/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCLpushaxpusha0incsp2_open_read_closectrl@L0@L1@L4@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` ixa L)*@մfaXfaX4*[  L \]^_`IQTD]<y/ - Yhlp[NcB) FPX(EDaO}ZG6g+4 xi~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 a__NES__serial/ser_open.sca65 V2.17 - Git 6c320f7ptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 SER_BITS_7 SER_BITS_8 SER_STOP_1 SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status _ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ix= F@մfaXfaX4Z[\]^_KH+V+W<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 `__NES__serial/ser_put.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 SER_BITS_7 SER_BITS_8 SER_STOP_1 SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status _ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ixa N+,@մfaXfaX4*[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__NES__serial/ser_status.sca65 V2.17 - Git 6c320f7ptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 SER_BITS_7 SER_BITS_8 SER_STOP_1 SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status _ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` iC^ ilB_ k` @մfaXfaX4ZfaXhfaXz! !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 __NES__serial/ser_unload.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 SER_BITS_7 SER_BITS_8 SER_STOP_1 SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status _ser_ioctl_ser_clear_ptr./home/hugg/compilers/cc65/asminc/ser-error.inc SER_ERR_OKSER_ERR_NO_DRIVERSER_ERR_CANNOT_LOADSER_ERR_INV_DRIVERSER_ERR_NO_DEVICESER_ERR_BAUD_UNAVAILSER_ERR_NO_DATASER_ERR_OVERFLOWSER_ERR_INIT_FAILEDSER_ERR_INV_IOCTLSER_ERR_INSTALLEDSER_ERR_NOT_OPEN SER_ERR_COUNT,/home/hugg/compilers/cc65/asminc/modload.incMOD_CTRLREAD CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_READ MLOAD_ERR_HDR MLOAD_ERR_OS MLOAD_ERR_FMT MLOAD_ERR_MEM ser_clear_ptrreturn0 no_driverCODERODATABSSDATAZEROPAGENULLUzna` ixZ[ gj-i@մfaXfaXPIFE-} b ,i&c&`7 N1@N1`N1N1N1N1N1N1 N1@N1`N1N1N1N1N1N1 N1@N1`N1N1N1N1N1N1 N1@N1`N1N1N1 )B )B )B )B )B )B )B!)B!)B!)B!)B!)B!)B!)B!)B")B")B")B")B")B")B")B")B#)B#)B#)B#)B#)B#)BQRSTU2(Z</?Y[N"B)P=X H7(%EDOA#L8Z' $6 9: 4 %5K* 2U1&T#>\@.QWI JMV0RS$C3V__NES__nes/setcursor.sca65 V2.17 - Git 6c320f7 setcursor(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESCaddrloaddrhi.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqj *u@մfaX %#           hh H H L         -")&.! *(,2 '+__NES__common/setjmp.sca65 V2.17 - Git 6c320f7__setjmpreturn0spptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq>.l x{`szt@մ([               L               __NES__runtime/shelp.sca65 V2.17 - Git 6c320f7popsargsudiv16negaxpopaxudiv16tmp1tmp2ptr1ptr4.sizeL1L2CODERODATABSSDATAZEROPAGENULLUzna` 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*__NES__ runtime/shl.sca65 V2.17 - Git 6c320f7tosaslaxtosshlaxaslaxyshlaxypopaxtmp1(/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(!"@մfaX4.     H$!)8'##h %J))`h`h` i h F j& (( `  *-H?)>&9C861A!I=%7@*,2K 'BD+__NES__ runtime/shr.sca65 V2.17 - Git 6c320f7tosshraxshraxypopaxtmp1.sizeL2L3L4L1L5CODERODATABSSDATAZEROPAGENULLUzna` iqe .i@մfaX. F j `         __NES__runtime/shrax1.sca65 V2.17 - Git 6c320f7shrax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqt 86i@մfaX=    F jF j  `            __NES__runtime/shrax2.sca65 V2.17 - Git 6c320f7shrax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq BPi @մfaXL  F jF  jF  j `            __NES__runtime/shrax3.sca65 V2.17 - Git 6c320f7shrax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  Lji@մfaX[  F jF  jF j F j `              __NES__runtime/shrax4.sca65 V2.17 - Git 6c320f7shrax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq =Lp@մfaXH   F f  f j  `           __NES__runtime/shreax1.sca65 V2.17 - Git 6c320f7shreax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq, 8;Qp:@մfaXq F  f  f jF  f f j `             __NES__runtime/shreax2.sca65 V2.17 - Git 6c320f7shreax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqBX dgep<f=@մfaX F  f f jF  f f jF f f  j `               __NES__runtime/shreax3.sca65 V2.17 - Git 6c320f7shreax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq !$Lpt#@մfaX]  F  f f j  `            __NES__runtime/shreax4.sca65 V2.17 - Git 6c320f7shreax4sregtmp1.size@L1CODERODATABSSDATAZEROPAGENULLUzna` i+iPMN@մfaX faXfaX 10' : :  @@9$$ =x - -HG1 1 " "H7   X2h)h`8  + + `23456+/-"(:1 !>/?(H --0?))>&9C78(%61A.6!+475@**,1,2./:  'BD "+7__NES__common/signal.sca65 V2.17 - Git 6c320f7popaxptr1+/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]QR@մfaXfaX$           -)7(%6+45*,.__NES__common/sigtable.sca65 V2.17 - Git 6c320f7sigtable+/home/hugg/compilers/cc65/asminc/signal.incSIG_ERRSIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERMSIGCOUNT __sig_ign __sig_dfl_signal_raise.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz*O W@մU*[faX C-             2                !      L  !"#$%             C  " -0")&631$.! 5 %*(,2/ #'+&__NES__../libwrk/nes/sleep.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_clock_sleeppushaxpusheaxldaxyspaxulong tosumul0ax tosaddeaxL0006ldeax0sp.size tossubeaxtosgeeaxincsp6CODERODATABSSDATAZEROPAGENULLUzna` ix % N@մfaX faX+$    e               L        -?) C6E34;$.5*(,2:D+__NES__common/snprintf.sca65 V2.17 - Git 6c320f7 _snprintfpushaxaddyspdecsp6 _vsnprintfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` ix % N@մfaX faX+$    e               L        -?) C6E34;$.5*(,2:D+__NES__common/sprintf.sca65 V2.17 - Git 6c320f7_sprintfpushaxaddyspdecsp4 _vsprintfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` ix % N@մfaX faX+$    e                 L       PHG? 9C8L61A;57@(R:'BQ__NES__common/sscanf.sca65 V2.17 - Git 6c320f7_sscanfaddyspdecsp4_vsscanfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` iq6 BE`|!D"@մfaXq H        h  L           __NES__runtime/staspidx.sca65 V2.17 - Git 6c320f7staspidxincsp2sptmp1ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqp GPp@մfaX9    H   h`            __NES__runtime/staxsp.sca65 V2.17 - Git 6c320f7staxyspstax0spsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix9W cf>e@մ([ faX H   &   ' '"h  L# # !" '  #+"  ! %  #'#__NES__runtime/staxspi.sca65 V2.17 - Git 6c320f7 staxspidxincsp2sptmp1ptr1(/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*GJex'I(@մfaXq  H       h`              __NES__runtime/steaxsp.sca65 V2.17 - Git 6c320f7steaxyspsteax0spspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqY- @մ([ "!                   `      " ! % #__NES__runtime/steaxspi.sca65 V2.17 - Git 6c320f7 steaxspidxpopptr1sregptr1tmp1tmp2tmp3.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/__NES__runtime/stkchk.sca65 V2.17 - Git 6c320f7stkchkcstkchk 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` ixC# @մ([ faX !1. ( (   ! !  11- -  % %  # #5&&  ,,' '`"#$%&'!- (% 6-)  3$.! % *(,2/ #'+'__NES__common/strcat.sca65 V2.17 - Git 6c320f7_strcatpopaxptr1ptr2tmp3(/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 findEndOfDestendOfDestFoundcopyBytedoneCODERODATABSSDATAZEROPAGENULLUzna` ix} :;@մ([ faX '$  & &   + +' ' - -**    1 1$`%`!"#$%' -1 &2-&  314$ % *,2 +&__NES__common/strchr.sca65 V2.17 - Git 6c320f7_strchrpopaxptr1tmp1(/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.sizeLoopEOSFoundNotFoundCODERODATABSSDATAZEROPAGENULLUzna` iqXo {~tv}w@մ([ !               ``      !  __NES__common/strcmp.sca65 V2.17 - Git 6c320f7_strcmppopptr1ptr1ptr2.sizeloopL1L3L2CODERODATABSSDATAZEROPAGENULLUzna` iq= h@A@ִfaX      __NES__common/strcoll.sca65 V2.17 - Git 6c320f7_strcoll_strcmpCODERODATABSSDATAZEROPAGENULLUzna` iqXr ~ozjk@ִfaX                  `        __NES__common/strcpy.sca65 V2.17 - Git 6c320f7_strcpypopaxptr1ptr2.sizeL1L9CODERODATABSSDATAZEROPAGENULLUzna` iq* b"#@ִ([ -)             `           !-0")& 314 .!  %*(,2 #'__NES__common/strcspn.sca65 V2.17 - Git 6c320f7_strcspnpopptr1_strlenptr1ptr2tmp1tmp2.sizeloadCharleaveadvancecheck checkNextendOfTestCharsCODERODATABSSDATAZEROPAGENULLUzna` i48 -'@ִfaXfaX!faX%6.H& 4 4! h51    i(  /    :" "  '  $$, , L  +L6 6&'()*     #6#4," <U -M?")>  8LE3A4 $.= F@ RK/ #SQ<+__NES__common/strdup.sca65 V2.17 - Git 6c320f7sptmp1ptr4pushaxdecsp4incsp4_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 ?BsA@ִfaXfaX u$      & & ' '! !`%&'()$ &'!* !  "   #*__NES__common/strerror.sca65 V2.17 - Git 6c320f7 _strerror __sys_errlist*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kzw**TE-T-W-^?|CV-}C@ִV*[gfaX"          L        a a   ? ?     L  %L L I - H -     # #   %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  j%.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   u L {  i  `       V  r$ //nn""""""""""""""""""""""""""""""""""""""""4466|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.+__NES__../libwrk/nes/strftime.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_strlen_memcpy_sprintf__tz _strftimeL00DA.sizeL006BL0111L0062L00B2L000DL0027L0019L0013L002BL000FL002DL0017L0029L000BL0025L0011L0007L0009L001BL001DL007BL0083L011AL0021L0096L009DL00A5L00F7L00F0L00CAL00D2L0074L00E9L0023L001FL00BBL0103L010AL008FL008CL0100L0006L0016L002FL0030L0031L0033L0034pushaxL0037L003Bincsp8ldaxyspincax1staxyspL0133L0045L0135L0055L005AL005FL0068L0071L0078L0080L0087L0093L009AL00A2L00AFL00B8L00BFL00C7L00CFL00D7L00E6L00EDL00F4L00FBL0107L010EL0117L0136L004Bldax0spldaxidxaslax1ldaxipushwidxtosmoda0incaxyL008BL008DL0090pushwincax7tossubaxtosdiva0L00AAdecax1L00ACL00C2L00C4L00FFL0101L0104pushwyspaddeqyspCODERODATABSSDATAZEROPAGENULLUzna` ixc%3T@ִ([ faX, ?6     $3 3)00+i4 4  1 1)"" 2i% 7 7( (.   ) )  `#`/!"#$% 47 )!31*8 -0")& 9631$.! 5 %7(,2/:#'+&__NES__common/stricmp.sca65 V2.17 - Git 6c320f7_stricmp _strcasecmppopptr1__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  * 69Vo8@ִ([x         `         __NES__common/strlen.sca65 V2.17 - Git 6c320f7_strlenptr2.sizeL1L9CODERODATABSSDATAZEROPAGENULLUzna` ix B@ִfaX faX($     &# # )''"8 $ $  %%* * ` ! * #$ + -0"& $!  %, #'+"__NES__common/strlower.sca65 V2.17 - Git 6c320f7 _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-8e qtAesf@ִ([ faX~'JCI1 1 I     + +9 9 6: : )) 88. .  / /0 0%% **  5 5>># #  ; ; ' '`()*+, & &10 &+9'&:./ ;&#$"@G?)>&  9C86E14;$= 5 F%7 (,2:'D<-__NES__common/strncat.sca65 V2.17 - Git 6c320f7_strncatpopaxpopptr1ptr1ptr2ptr3tmp1tmp2(/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.sizeL1L2L3L4L5L6L7CODERODATABSSDATAZEROPAGENULLUzna` iqZ& kl@ִ([#92I  I" "     $ $! !       % %#` ` ` "!%$&-0MHG C8LO6A4 J.I=57(,/'B<__NES__common/strncmp.sca65 V2.17 - Git 6c320f7_strncmppopaxpopptr1ptr1ptr2ptr3.sizeLoopIncHiCompNotEqualEqual1EqualL1CODERODATABSSDATAZEROPAGENULLUzna` iq6: FI!H@ִ([ \D?I #I         $ $) )&& ' '  ( (! ! % %" " * * `     )  $ '!%"* ( D+ -0")>& C831$.= %7@(2/ #'<__NES__common/strncpy.sca65 V2.17 - Git 6c320f7_strncpypopaxpopptr1ptr1ptr2tmp1tmp2tmp3L1.sizeL2L9L5L3L6L4CODERODATABSSDATAZEROPAGENULLUzna` ixN4Z}st@ִ([ faX%WJI< :I6  9 9# #  ; ;D D303 4 4)  (8 + ! !A' ')  .8 > **     / /  B@`-==1`&`"&'()*  D # !/)4');)9%5EU P0MHG?"> 9C8LO6Eb3T1A4;e! d=5 F7_[@Na,2 #`BZ<Y++__NES__common/strnicmp.sca65 V2.17 - Git 6c320f7 _strnicmp _strncasecmppopaxpopptr1__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` ix= RS@ִfaX faX 0.  H  I         # q      i   `    !$-0"& 9861;$.!= %7,2/: '+__NES__common/stroserr.sca65 V2.17 - Git 6c320f7 __stroserror__sys_oserrlistptr1tmp1,/home/hugg/compilers/cc65/asminc/generic.mac.size@L1DoneCODERODATABSSDATAZEROPAGENULLUzna` iqB(  @ִ([  2/                      ``   ! -)&3.! 5 %(/ '__NES__common/strpbrk.sca65 V2.17 - Git 6c320f7_strpbrkpopaxptr1ptr2tmp2tmp3.sizeL1L9L3L4L6CODERODATABSSDATAZEROPAGENULLUzna` kzYS& 36n) 5* @ִV*[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 Iao o HL( (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__NES__../libwrk/nes/strqtok.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_strchr_strqtokL003E.sizeL0004L0005L0002L0003pushaxregswap2L0011L004CL000FL0016L0001pushw0spL001DL0022L0020L004BL0036L002EL004Eincsp4CODERODATABSSDATAZEROPAGENULLUzna` iqk  '@ִ([$"                `  ")  !  ( #'__NES__common/strrchr.sca65 V2.17 - Git 6c320f7_strrchrpopaxptr1tmp1tmp2.sizetestCharfinishednextChar charFoundCODERODATABSSDATAZEROPAGENULLUzna` iq* b @ִ([ -)                 `        !-0")& 34 .!  %*(,2/ #'__NES__common/strspn.sca65 V2.17 - Git 6c320f7_strspnpopptr1_strlenptr1ptr2tmp1tmp2.sizeloadCharleaveadvancecheck checkNext foundTestCharCODERODATABSSDATAZEROPAGENULLUzna` iqs6 bc@ִ([RN       <& & ; ..* ++,#e " "22$ $ % %    ) )1 1  ! ! --( (  `'/`  &   ) 1!  "$%( 3 MG?")> L63T1A4; != 5F_@*(,2RK: #'BSQ<+__NES__common/strstr.sca65 V2.17 - Git 6c320f7_strstrpopptr1ptr1ptr2ptr3ptr4tmp1.size@Found@L1 @NotFound@L2@L3@L4@L5CODERODATABSSDATAZEROPAGENULLUzna` iq= l?@@ִfaX    __NES__common/strtoimax.sca65 V2.17 - Git 6c320f7_strtol _strtoimaxCODERODATABSSDATAZEROPAGENULLUzna` kzYa4 AD MC@ִV*[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__NES__../libwrk/nes/strtok.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_strchr_strtok_Last.sizepushaxregswap2decsp3L0003L0039L0002L000BL0017L003FpushwyspL0018stax0spL0021L001FL0040L0037L002CL0030incax1ldax0spincsp7CODERODATABSSDATAZEROPAGENULLUzna` kz/ 6DGF@ִV*[(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    ,          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__NES__../libwrk/nes/strtol.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_isdigit_islower_isspace_isupper __seterrno_strtolpushaxldaxysppushl0pushapush0decsp6L000AL0008.sizeL0017L0011L0091L0090L0020L008EL008FL0025L00A2staxyspL002FL0096L003BL00AAsteaxyspldeaxysppusheaxaxlong tosumodeax tosudiveaxL0047L004BL00A8L0051L0048decaxy tosugteaxL0062toseqeaxL0061L0069 tosumuleaxaxulong tosaddeaxaddeqyspL0078L0073L00A5L0083L007FL0088L0085negeaxaddyspCODERODATABSSDATAZEROPAGENULLUzna` kzm mT b e :~d @ִV*[%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__NES__../libwrk/nes/strtoul.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_isdigit_islower_isspace_isupper __seterrno_strtoulpushaxldaxysppushl0pushapush0decsp6L000AL0008.sizeL0017L0011L0083L0082L0020L0080L0081L0025L0094staxyspL002FL0088pusheaxaxlong tosumodeax tosudiveaxsteaxyspL003FL0043L0099L0049L0040decaxyldeaxysp tosugteaxL005AtoseqeaxL0059L0061 tosumuleaxaxulong tosaddeaxaddeqyspL0070L006BL0096L0073L007BL0078negeaxaddyspCODERODATABSSDATAZEROPAGENULLUzna` iq= m@A@ִfaX    __NES__common/strtoumax.sca65 V2.17 - Git 6c320f7_strtoul _strtoumaxCODERODATABSSDATAZEROPAGENULLUzna` ix B@ִfaX faX($     &# # )''"i $ $  %%* * ` ! * #$ + -0"& $!  %, #'+"__NES__common/strupper.sca65 V2.17 - Git 6c320f7 _strupper_struprpopax__ctypeptr1ptr2*/home/hugg/compilers/cc65/asminc/ctype.incCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.sizeloopL9L1CODERODATABSSDATAZEROPAGENULLUzna` kz'F RUj'T@ִV*[faXn                  L       ")&$!  %( # __NES__../libwrk/nes/strxfrm.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_strlen_strncpy_strxfrmpushaxpushwyspldaxyspincsp6.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix 476@ִfaXfaXZ8I#q  HIq$ $hL   ! $ ("  !  #"__NES__ runtime/sub.sca65 V2.17 - Git 6c320f7tossuba0tossubaxaddysp1sp(/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  25es 4@ִfaXc8Iq   HIq   h`               __NES__runtime/subeqsp.sca65 V2.17 - Git 6c320f7subeq0spsubeqyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPk@ִfaXI   I8 e    `          __NES__runtime/subysp.sca65 V2.17 - Git 6c320f7subyspsp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix0C ORyQ@ִ([faX        H" " h`   "  &  !   #!__NES__runtime/swap.sca65 V2.17 - Git 6c320f7swapstkspptr4(/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# /2[ 1@ִV*[faX]      L L     "&!  % #__NES__../libwrk/nes/system.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_systempushaxL0002incsp2.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqy LVv @ִfaXB  cc65 3 . 1 0 NES      $! '__NES__nes/sysuname.sca65 V2.17 - Git 6c320f7 __sysunameutsdatautscopy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iK'r  2 @ִ([0([QfaXw`  c c S   I d""M H 3_ I_ 2  N F NF7 ] ]  b   m))1A A8`= + +U`x `@ @`Xw w   ` s s R R  Z Z`tgiy(  r          ,  }    o  j q  L  C9LLpLL;LLQLL&L#LLyLLHLLLKLLLts |_0miobIj\ iVldsc6b3a0`-K_*^']$H\![yZY#X&WVQU T ;SRpRQ]L'CK%J$LI#H"qG!jFEDCoBA,@? > = < ;:987r@Z6cw< 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 __NES__tgi/tgi-kernel.sca65 V2.17 - Git 6c320f7 tgi_librefptr1//home/hugg/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/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@L4CODERODATABSSDATAZEROPAGENULLUzna` kzq ' ( @ִV*[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__NES__../libwrk/nes/tgi_arc.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac _tgi_line_tgi_arc_tgi_imulround _cc65_sin _cc65_cospushaxsubysppushaldaxyspL0006L001A.sizeL0038L003AL003Bpushwysppusha0tosaddaxstaxysptossubaxL0019addeqyspL001EaddyspCODERODATABSSDATAZEROPAGENULLUzna` ix6M Y\L *v[w@ִ([([Qj jE E  1 1I I        f f% %b b * *  & &    W W UUY Y ? ? 9 95 5 Z Z" " 0XYX$B B! s s^ ^ > >  A$ 33      O O)C C g g   PP   a a , ,K K    z z+ +L; ;`  jEWY9Z"Kz+ 1IfbCga ?5 %*&Bs|{`_m;BO,A> o<< 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 __NES__ tgi/tgi_bar.sca65 V2.17 - Git 6c320f7//home/hugg/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 mXE F @ִfaX([Q % %L %smpC< 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 __NES__tgi/tgi_circle.sca65 V2.17 - Git 6c320f7//home/hugg/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 Y(  @ִfaX([QUq< 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 __NES__tgi/tgi_clear.sca65 V2.17 - Git 6c320f7//home/hugg/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      @ִfaXL([QfaXfaX  A A ` H   ` I\iq q I7i3 `U U8      - -    8 R Rx x  M 2 2, BBL `M. .  1 1  `Q Q  ` `^ ^ `  i   W W  |    $ Lw w`  i   > >  |   T TL ]           8 8HHL  - `n cc  f (f[ [PPL lJv J,: :  8Y Y       mm m m ; ; JJJ&& Jeu'u    8 9 9    mr r m     k k PPL JEt tJ,   8      m  m    JJJ''5 5JFl'l   {8}   s s  mZ Z mj j    L #     ) z`8Q^mAaQ sxP ZjUO m;9N Yr G F6:M1T>Wf< 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 __NES__tgi/tgi_clippedline.sca65 V2.17 - Git 6c320f7 umul16x16r32 udiv32by16r16negax//home/hugg/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/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` ixC^6 ! @ִ([([Q3PP2::< 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 __NES__common/tgi_colors.sca65 V2.17 - Git 6c320f7//home/hugg/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 @ִfaX([QtA AY Y* *y y/ /' ' " "`3'"Yy8z/7}A*d< 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 __NES__tgi/tgi_curtoxy.sca65 V2.17 - Git 6c320f7//home/hugg/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` iw   @ִfaX([QfaX; B B\\ * *K K`0RY*6'BKra< 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 __NES__tgi/tgi_done.sca65 V2.17 - Git 6c320f7//home/hugg/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/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([Q4  8 8 b bhL SbS8ns !< 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 __NES__tgi/tgi_ellipse.sca65 V2.17 - Git 6c320f7//home/hugg/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= {NO@ִfaX      __NES__tgi/tgi_free_vectorfont.sca65 V2.17 - Git 6c320f7_free_tgi_free_vectorfontCODERODATABSSDATAZEROPAGENULLUzna` ixb m^M N @ִfaX([Q&& &r r`BI&rt:< 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 __NES__tgi/tgi_getaspectratio.sca65 V2.17 - Git 6c320f7//home/hugg/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 mR; < @ִfaX([Q9 9R`%9N9uW< 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 __NES__tgi/tgi_getcolor.sca65 V2.17 - Git 6c320f7//home/hugg/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 mR@ A @ִfaX([Q  :`RE^ 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 __NES__tgi/tgi_getcolorcount.sca65 V2.17 - Git 6c320f7//home/hugg/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 Y(  @ִfaX([Q[H8w8< 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 __NES__tgi/tgi_getdefpalette.sca65 V2.17 - Git 6c320f7//home/hugg/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; : @ִfaX([QcX X ) )xx G G.& &!2 2`<SG5&24X)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 __NES__tgi/tgi_geterror.sca65 V2.17 - Git 6c320f7//home/hugg/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 IOC @ִfaX ([QfaXt2 2\ \9+ I + H %y> >MM~`5 T0u? \vNo errorNo driver availableCannot lJoad drivJerJJInvalid driverMode notG supportGed by drGiverGGInvalid KfunctionK argumenKtKKFunctionq not supqportedqqInvalid 4font fil4e44Out of rwesourceswwUnknown .error..A driver( is alre(ady inst(alled((yQ< 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 __NES__tgi/tgi_geterrormsg.sca65 V2.17 - Git 6c320f7//home/hugg/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/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  LUzna` ixb wfR S @ִfaX([Q&' 'tD,`$E`'z<< 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 __NES__tgi/tgi_getmaxcolor.sca65 V2.17 - Git 6c320f7//home/hugg/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 m]E F @ִfaX([Q&& &r r`BC&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 __NES__tgi/tgi_getmaxx.sca65 V2.17 - Git 6c320f7//home/hugg/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 m]E F @ִfaX([Q&R R& &`rD: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 __NES__tgi/tgi_getmaxy.sca65 V2.17 - Git 6c320f7//home/hugg/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 mS@ A @ִfaX([Q9 9R`%F9}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 __NES__tgi/tgi_getpagecount.sca65 V2.17 - Git 6c320f7//home/hugg/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 Y(  @ִfaX([QZS8~8< 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 __NES__tgi/tgi_getpalette.sca65 V2.17 - Git 6c320f7//home/hugg/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 |v w @ִfaX([Q/  ' 'uuLD DL, ,Y,e'] D << 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 __NES__tgi/tgi_getpixel.sca65 V2.17 - Git 6c320f7//home/hugg/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` ixV) @; < @ִfaX([Q J J%4 40>>  P P   D Dd d` 4DkJBdAmPe,< 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 __NES__tgi/tgi_getset.sca65 V2.17 - Git 6c320f7//home/hugg/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 :N mn@ִfaX ([QfaXfaX.#) )== `  T TO Op p# #} }z z Q Q L O#}zf\@>AQ<nTp:)./< 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 __NES__tgi/tgi_gettextheight.sca65 V2.17 - Git 6c320f7//home/hugg/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_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([QfaXfaXWJ# #    $ $L S S U  U} ? ?92 2iVV xi)) T 3 3 mm [ [; ;e > >  R R    L ` ~[~6Dc$fi?=<U?2:#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 __NES__tgi/tgi_gettextwidth.sca65 V2.17 - Git 6c320f7//home/hugg/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_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 m^F G @ִfaX([Q&9 9R R`%Ac9RW< 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 __NES__tgi/tgi_getxres.sca65 V2.17 - Git 6c320f7//home/hugg/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 m^F G @ִfaX([Q&9 9R R`%B 9RW< 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 __NES__tgi/tgi_getyres.sca65 V2.17 - Git 6c320f7//home/hugg/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 # " @ִfaX([QJ ' 'w w F F, ,$ $`[F8x'w7{,$>< 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 __NES__tgi/tgi_gotoxy.sca65 V2.17 - Git 6c320f7//home/hugg/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\xH"jk@ִfaX faX%       ɀ" 0 i i`   !`       #-0?"& 98314;  = 57*,2/:<+ __NES__tgi/tgi_imulround.sca65 V2.17 - Git 6c320f7_tgi_imulround tgi_imulroundpopax imul16x16r32-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L1CODERODATABSSDATAZEROPAGENULLUzna` i I @ִfaX([QfaXcX= ' ' = = L L} }G     Z Z  T T u u" "    V V  F FJ J q q 4 4  K K~ I I   * *L `PFJu*IRK/Tr'[eY7qWVVoSL4Q[=DO"CZ605}3cX-< 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 __NES__tgi/tgi_init.sca65 V2.17 - Git 6c320f7//home/hugg/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/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 rcV W @ִfaX([Q&   `/<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 __NES__tgi/tgi_install_vectorfont.sca65 V2.17 - Git 6c320f7//home/hugg/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    @ִfaX([Q5     0 0L: :' U0T: ,< 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 __NES__tgi/tgi_ioctl.sca65 V2.17 - Git 6c320f7//home/hugg/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 @ִfaX([Qc ) ) y yG G. . & & ! !L2 2\y&i)c2LG.K!?< 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 __NES__tgi/tgi_line.sca65 V2.17 - Git 6c320f7//home/hugg/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 @ִfaX([QW W) )x xF F & &! !1 1; ;f f`&NjW)M9!18yxF7};fi < 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 __NES__tgi/tgi_linepop.sca65 V2.17 - Git 6c320f7//home/hugg/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 ), + @ִfaX([QNHyG. .' '""h2 < <Lg gi <cgK'7}.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 __NES__tgi/tgi_lineto.sca65 V2.17 - Git 6c320f7//home/hugg/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 r uv@ִfaX([QfaXfaXfaXXC   ff , C C ; ;2  ^ ^ 0]] H! I!  Hw B B  h// `  U U  I I d  d $ $LD D    s   7Km@;C$9boD5I4dX)< 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 __NES__tgi/tgi_load.sca65 V2.17 - Git 6c320f7//home/hugg/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/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` kz { [ \ @ִV*[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__NES__#../libwrk/nes/tgi_load_vectorfont.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_malloc_free_memcmp_open_close_read_tgi_load_vectorfont _tgi_errorL000C.sizepushaxdecsp8push0decsp3pushwysppusha0staxyspL001Aleaa0spldaxyspL002DL0056L0032L0053L0055incaxyL0054ldaxi staxspidxL000AL004CaddyspCODERODATABSSDATAZEROPAGENULLUzna` i5I~0<=@ִfaX([QfaXNA7 J J0oou u2 2- -pIKjj%%| |8 80pp a aO OpI40 `+ +` `U X < 0 :|+B2-A~aOjANM0L<JuKX8< 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 __NES__tgi/tgi_outcode.sca65 V2.17 - Git 6c320f7//home/hugg/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/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespaceL2L1L4L3L7L5L6CODERODATABSSDATAZEROPAGENULLUzna` ihp~ @ִfaX([QfaXfaX,z },}t t, ,HoH    hh   __  Cy 2 2'y d d`"  k  k H> >H H H s s  Yi i  ii::N NZ! !% n nH- J Jh  5 5      G G  TTh h hb bh* `jn;S&t,&5Jf|da =<ki;:72d< 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 __NES__tgi/tgi_outtext.sca65 V2.17 - Git 6c320f7//home/hugg/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_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, K@ A @ִfaX([Q!H*% %4 4>l l   O O h  L %lO`Y8~47![< 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 __NES__tgi/tgi_outtextxy.sca65 V2.17 - Git 6c320f7//home/hugg/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 9u@ִV*[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+'__NES__../libwrk/nes/tgi_pieslice.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac _tgi_line_tgi_arc _tgi_pieslice_tgi_imulround _cc65_sin _cc65_cospushaxpushwysppushaldaxysppusha0tosaddaxtossubaxaddysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixg |yq r @ִ([([Q+( (u uLD DY(uDk<< 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 __NES__tgi/tgi_popxy.sca65 V2.17 - Git 6c320f7//home/hugg/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_unloadpopptr1ptr1ptr2CODERODATABSSDATAZEROPAGENULLUzna` ix !$ # @ִfaX([QJ  ( (x x F F- -% %`[(x[-%Fl >< 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 __NES__tgi/tgi_popxy2.sca65 V2.17 - Git 6c320f7//home/hugg/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 rdS T @ִfaX([Q&' 's s`CI's;< 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 __NES__tgi/tgi_setaspectratio.sca65 V2.17 - Git 6c320f7//home/hugg/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` ixu |  @ִfaX([Q9 ; ;TT' 'Lu uLC Cg3CXuEa;9P'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 __NES__tgi/tgi_setcolor.sca65 V2.17 - Git 6c320f7//home/hugg/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` ixk w~n o @ִfaX([Q/ ; ;SSL& &Lt tg3tW&F; 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 __NES__tgi/tgi_setdrawpage.sca65 V2.17 - Git 6c320f7//home/hugg/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 wtd e @ִfaX([Q+E E, ,L$ $=E,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 __NES__tgi/tgi_setpalette.sca65 V2.17 - Git 6c320f7//home/hugg/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 wr_ ` @ִfaX([Q*  ; ;SSL& &`te;\& 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 __NES__tgi/tgi_setpixel.sca65 V2.17 - Git 6c320f7//home/hugg/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 mM8 9 @ִfaX([Q+ +`$;R+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 __NES__tgi/tgi_settextdir.sca65 V2.17 - Git 6c320f7//home/hugg/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` irYRqt s@ִfaXfaX([QfaX6D3      p p  f  f  L L A R 8R, 0$$ ~ooF  8     H] hn`4 3ZYXBpWLMDK#J vm  8h\jV UG [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 wJY__NES__tgi/tgi_settextstyle.sca65 V2.17 - Git 6c320f7-/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 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 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 w}m n @ִfaX([Q/ T T((Lt tLC Cg4CVWtFT < 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 __NES__tgi/tgi_setviewpage.sca65 V2.17 - Git 6c320f7//home/hugg/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` iq= XY@ִfaX      __NES__nes/tgi_stat_stddrv.sca65 V2.17 - Git 6c320f7_tgi_static_stddrv_nes_64_56_2_tgiCODERODATABSSDATAZEROPAGENULLUzna` iqY iST@ִfaX"nes-64-56-2.tgi     __NES__nes/tgi_stddrv.sca65 V2.17 - Git 6c320f7 _tgi_stddrv.sizeCODERODATABSSDATAZEROPAGENULLUzna` iL#o {~+ U}V@ִfaX([QfaXfaX  T T66 H$; ;HG  hhLZ ZQ Q`Zy5Q4T;g< 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 __NES__tgi/tgi_unload.sca65 V2.17 - Git 6c320f7//home/hugg/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/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'W  @ִfaX/([QfaXfaXfaX 2 2  "ft tɀojvT` X X Q Q  Ls s y$  $Hy  hg`I8y  H:Iy  hP`  H H7 HKH Hui" 1 1i\ \ r r~ ~     _ _  &A A8 8    2  L+ +w  2     , 2,` `Y Y$    * *   ll$< <Phk khB hF `     bx-Qjsg*OBfXA@H1?_;$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 __NES__tgi/tgi_vectorchar.sca65 V2.17 - Git 6c320f7 imul16x16r32 umul16x16r32negaxnegeax//home/hugg/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_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) -v@ִfaX faX  '2/HH # # h h82 2    6 6) ) & &; ;, 0       ` ()*+, %  6& 2);#2<-0")>& 9861.! =5 "@ *(,/  'B+-__NES__ common/time.sca65 V2.17 - Git 6c320f7_time __systimeptr1sregtmp1*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX@L1.size@L2CODERODATABSSDATAZEROPAGENULLUzna` kz| =C78@ִV*[faXE UTCUTC     __NES__../libwrk/nes/timezone.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac__tz.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqH fIJ@ִ([`      __NES__common/toascii.sca65 V2.17 - Git 6c320f7_toascii.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq LSq@ִfaXI    JJ `            __NES__common/tolower.sca65 V2.17 - Git 6c320f7_tolower__ctype.sizeL9CODERODATABSSDATAZEROPAGENULLUzna` ix $'|]&^@ִfaXfaXYH     hL! !  !%  ! !__NES__runtime/tosint.sca65 V2.17 - Git 6c320f7tosintincsp2sp(/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: #'<+$__NES__runtime/toslong.sca65 V2.17 - Git 6c320f7tosulongtoslongdecsp2sp(/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 LSq@ִfaXI    J i`            __NES__common/toupper.sca65 V2.17 - Git 6c320f7_toupper__ctype.sizeL9CODERODATABSSDATAZEROPAGENULLUzna` iqe,/rs@ִ([ OJ       , ,' '`- !  .. &# #*3&$ $* *  %%  "  +22 ` &  * ))   1 1`(  *  ,'#  $1  -&4P0MHG)>& 8LO6E14;J$.= 5 F%7*,2RK/:#'SDQ<+__NES__runtime/udiv.sca65 V2.17 - Git 6c320f7 tosudiva0 tosudivaxudiv16popptr1sregptr1ptr4.size udiv16by8aL0L1@L0@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` ix`&@ִfaXfaX)1/ % %"   && &&! !& *&# #H $ $ ' 'h H  h      ` % ! &   #$'(-")& 86314 .! 5%7(,2/ #'+__NES__runtime/udiv32by16r16.sca65 V2.17 - Git 6c320f7 udiv32by16r16udiv32by16r16m-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeL0L1CODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ִfaX&   L         __NES__ runtime/uge.sca65 V2.17 - Git 6c320f7tosuge00tosugea0tosugeaxtosicmpbooluge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ִfaX&   L         __NES__ runtime/ugt.sca65 V2.17 - Git 6c320f7tosugt00tosugta0tosugtaxtosicmpboolugt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ִfaX&    L          __NES__ runtime/ule.sca65 V2.17 - Git 6c320f7tosule00tosulea0tosuleaxtosicmpboolule.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqW'38@ִfaX   L       __NES__ runtime/ult.sca65 V2.17 - Git 6c320f7tosult00tosulta0tosultaxtosicmpboolultreturn0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq9<L;@ִ([Y           `             __NES__runtime/umod.sca65 V2.17 - Git 6c320f7 tosumoda0 tosumodaxpopptr1udiv16sregptr4.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixG9/@ִfaX faX,* % %# F$ $f  'e H e! ! hf  jf f    " " & &` % $ &  ! "(-0?") 86314; $.! =5%7(,/:#'<+!__NES__runtime/umul16x16r32.sca65 V2.17 - Git 6c320f7 umul16x16r32 umul16x16r32m umul16x16r16 umul16x16r16m-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` ixE9*@ִfaX faX.,   % % & &j)He " " e  hf f  j    ( (`  &" (  %# '$*-0?")& 98631; .! =5%7(,2/ #'<+!__NES__runtime/umul8x16r24.sca65 V2.17 - Git 6c320f7 umul8x16r24 umul8x16r24m umul8x16r16 umul8x16r16m-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iq):WZeIYJ@ִfaX   F e jf     `       "! #__NES__runtime/umul8x8r16.sca65 V2.17 - Git 6c320f7 umul8x8r16 umul8x8r16mptr1ptr3.size@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iqQ . {@ִfaX  L        __NES__common/uname.sca65 V2.17 - Git 6c320f7_uname __sysuname __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzV cfK  e @ִV*[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/  ` 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__NES__../libwrk/nes/uncompress.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//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__NES__common/ungetc.sca65 V2.17 - Git 6c320f7_ungetcpopaxptr1tmp1*/home/hugg/compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags f_pushback_FCLOSED_FOPEN_FEOF_FERROR _FPUSHBACK __filetab*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXerrorCODERODATABSSDATAZEROPAGENULLUzna` iq= f>?@ִfaX     __NES__common/unlink.sca65 V2.17 - Git 6c320f7_unlink_removeCODERODATABSSDATAZEROPAGENULLUzna` ixr \UV@ִfaXfaX$& &            !%%`$#", &$'))>9C8(6E31'A4;.!+= 5@*&,2/: #<+__NES__common/utscopy.sca65 V2.17 - Git 6c320f7utscopyutsdataptr1tmp1,/home/hugg/compilers/cc65/asminc/utsname.incutsnamesysname.sizenodenamereleaseversionmachine fieldoffs fieldcountnextdoneloopCODERODATABSSDATAZEROPAGENULLUzna` ix Ppu@ִ([faXZze   " "I5 $- -I1 1   % %D D+ +#< < ?e? ? / e  ) )  33  C66= =! !  L4 .4G GFF`@' '  8 87 7A  9 9 H, ,  I> >0 0     B B`2 ;: .<! .D+) ."-?  .='0  .7,> ** %*9J(Hm|UP0MHGoys 9C}O6Et3T1A4;nI=5 F7NV2Rzu~BSDZ{Q<YX__NES__conio/vcprintf.sca65 V2.17 - Git 6c320f7 _vcprintfpushaxpopaxpopptr1__printf_cputcspptr1ptr2ptr3tmp1,/home/hugg/compilers/cc65/asminc/generic.macoutdesc.sizeout@L1@L4@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` ixI%@ִfaX faX<-  ,,'  `"  H(  h+`    `%HH! !& H&# I#     h)hL           $$-j0HGo>y  }6p1; Jni qIx=  *r2wcKv/:~<+__NES__conio/vcscanf.sca65 V2.17 - Git 6c320f7_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<__NES__common/vfprintf.sca65 V2.17 - Git 6c320f7 _vfprintfpush1pushwyspincsp6_fwrite__printfspptr1,/home/hugg/compilers/cc65/asminc/generic.macoutdesc.sizeccountoutptr@Ok@DoneCODERODATABSSDATAZEROPAGENULLUzna` iZ( PgPQ@ִfaXfaXfaX([23+H( ( ; H; % %   I ! !h ) )     . .BBA>`'& &: :`,34 9 756-)  (%!.94#C EU('PM>H7G?; W CC2OE5bTA;  I0+F_[@N aV*D:8:94 `B,)Z. YX7__NES__common/vfscanf.sca65 V2.17 - Git 6c320f7_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` iqDc orwqx@ִfaX $H            hL     $ "& 31$ %/ #'+__NES__common/vprintf.sca65 V2.17 - Git 6c320f7_vprintf _vfprintf_stdoutdecsp2sp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixKj vy #x$@ִfaX faX$H           hL       -0"&  61 $.! 5 %7(,/#'__NES__common/vscanf.sca65 V2.17 - Git 6c320f7_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__NES__common/vsnprintf.sca65 V2.17 - Git 6c320f7 _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[@ִfaXE  HH      L           $%__NES__common/vsprintf.sca65 V2.17 - Git 6c320f7 _vsprintfpushw0spstaxysp vsnprintf.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixj2&)(@ִfaX! faXm[S SA A'B B% %+5 58 q8 8 P3 3  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+__NES__common/vsscanf.sca65 V2.17 - Git 6c320f7_vsscanfpopax__scanfspptr1ptr2,/home/hugg/compilers/cc65/asminc/generic.mac SSCANFDATASTR.sizeINDEXgetL1ungetsddCODERODATABSSDATAZEROPAGENULLUzna` ixW f@ִ([faX O ::`&PQRST"*N</?Y[NB)P=X H7(%EDOA#L8Z'  6 9: 45K* 2U1&T>\@.QWIJMV0RS$C3U__NES__nes/waitvsync.sca65 V2.17 - Git 6c320f7 _waitvsync(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESCwait.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixR f@ִfaXfaXN+i+`;OPQRS$O</? Y[NB)P=X H7(%EDOA#L8Z' 6 9: 4 5K* 2U1&T>\@.QWIJMV0RS$C3T__NES__ nes/wherex.sca65 V2.17 - Git 6c320f7_wherex(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixR f@ִfaXfaXN+j+`;OPQRS$O</? Y[NB)P=X H7(%EDOA#L8Z' 6 9: 4 5K* 2U1&T>\@.QWIJMV0RS$C3T__NES__ nes/wherey.sca65 V2.17 - Git 6c320f7_wherey(/home/hugg/compilers/cc65/asminc/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix47{6|@ִ([ faXSQ  Q  L  !" %    #__NES__ runtime/xor.sca65 V2.17 - Git 6c320f7tosxora0tosxoraxaddysp1sptmp1(/home/hugg/compilers/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqm ~@ִfaX #" H   I   I    H   `    & $%#'+__NES__common/zerobss.sca65 V2.17 - Git 6c320f7zerobss __BSS_RUN__ __BSS_SIZE__ptr1.sizeL1L3L2L4CODERODATABSSDATAZEROPAGENULLUzna` ixme @մfaXfaX6                           __NES__runtime/zeropage.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` i+   @ִ([faX([.faX4faX|faX%Q%`;J>`r)q@b@@jGfU U__p p`=G joyz  { @  P IUp}11\SBU(G ' O.M']6HW3"4W  0+X8HO@>1 65-IQ&SD39J/ MA eJ<$)[Q(.9^  I&4?$%7C?_@Y* FK#=a>,V28TD/2 \EEPcRKL%U1N#0 AP*N`S)7L%Q RZX:V__NES__DYN_DRVnes/joy/nes-stdjoy.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace//home/hugg/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/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC+/home/hugg/compilers/cc65/asminc/module.mac_nes_stdjoy_joyREADJOY JOY_COUNT@LoopCODERODATABSSDATAZEROPAGENULLUzna` iF[ 6$k22@ִ ([cfaX([QfaXfaXfaXfaXfaXfaX,=    ` `  ` ` H  I    IL  ` ? 7      _  x  ` H I` H I`     ` J( J l l . . I  : :% ,   L     % aa`  H  x   h  u u ``  J J k k,   =`v v    !m J  iJ  !e J  iJ  !i H  i I  );   t)  `}8i i     )  )s  s G G    8" " / / K  KB   @ @                           (O  O              p p                m m$$` r xr mc c   m   I Ie   ge    e  e     e  e     '  '           8 8   L  e ^ ^ez  z   `he  e          8f L 4 4L  IbiHIih`  Hh8     i X`PI ` ;          17 tgi@8q|   0   Q  # @ @ = A n s x  J   ylkRe  { Y ] 5P|mVpB(@G 7'B-[P HEO:.MDC 'ez 0M6^HWzG3~3 "9(>&; yH A sGt4W  9_N20+XxX8)H|OIL@tB >1 O6n6 5g- 6IIQ-t;&S\3D 39 P\Jv/ 14;u: { sJ<Y $).[T(. +9! d C2gOI]d&8 4*u0^xv}?h=M+{5Fdn$%7C5? f*Nm}Ys lAF K#=aL> _<, VFw2(8T ,2D /*'2 < \?cEE Pvz/U/:hu1`@ )Ny #S50 A*i'`,8)7oZ.L= %7 w<4 &R~ZJYX:V__NES__DYN_DRVnes/tgi/nes-64-56-2.sca65 V2.17 - Git 6c320f7-/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 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/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/nes.inc SCREEN_PTRCRAM_PTR CHARCOLORBGCOLORRVSCURS_XCURS_Y tickcount VBLANK_FLAGringbuff ringwriteringread ringcountppuhippuloppuval screenrows charsperlinexsize PPU_CTRL1 PPU_CTRL2 PPU_STATUS PPU_SPR_ADDR PPU_SPR_IOPPU_VRAM_ADDR1PPU_VRAM_ADDR2 PPU_VRAM_IOAPU_PULSE1CTRLAPU_PULSE1RAMPAPU_PULSE1FTUNEAPU_PULSE1CTUNEAPU_PULSE2CTRLAPU_PULSE2RAMPAPU_PULSE2FTUNEAPU_PULSE2STUNE APU_TRICTRL1 APU_TRICTRL2 APU_TRIFREQ1 APU_TRIFREQ2 APU_NOISECTRLAPU_NOISEFREQ1APU_NOISEFREQ2 APU_MODCTRL APU_MODDA APU_MODADDR APU_MODLEN APU_SPR_DMA APU_CHANCTRLAPU_PAD1APU_PAD2CH_HLINECH_VLINE CH_ULCORNER CH_URCORNER CH_LLCORNER CH_LRCORNERCH_TTEECH_RTEECH_BTEECH_LTEECH_CROSS CH_CURS_UP CH_CURS_DOWN CH_CURS_LEFT CH_CURS_RIGHTCH_PICH_DELCH_INSCH_ENTERCH_STOPCH_ESC+/home/hugg/compilers/cc65/asminc/get_tv.incTVNTSCPALOTHER_get_tv_clrscr setcursorputcharpaldata,/home/hugg/compilers/cc65/asminc/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac_nes_64_56_2_tgixresyresX1Y1X2Y2RADIUSADDRTEMPTEMP2TEMP3TEMP4MEMMEMENDERRORCOLORPALETTE DEFPALETTEOFFSETCODEntsc@L1@wait@L2CALC@set2@set@normal!nes/tgi/../../tgi/tgidrv_line.incTEMP1PBUBERRNXCOUNTNYDXDYAXAYabsicmpnegfornextRODATABSSDATAZEROPAGENULL _afailed.oU*[  _cursor.oU*[<_cwd.oU*[)_directerrno.oU*[b _environ.oU*[e _fdesc.oU*[. _file.oU*[;_fopen.oU*[(_heap.oU*[0 _heapadd.oU*["_heapblocksize.oU*[&_heapmaxavail.oU*[Z,X_heapmemavail.oU*[1: _hextab.oU*[6 _longminstr.oU*[k9(_mappederrno.oU*[; _oserror.oU*[a@F _poserror.oU*[A _printf.oU*[UF&_scanf.oU*[m3K _scrsize.oU*[H _seterrno.oU*[_swap.oU*[_sys.oU*[abort.oU*[Fadd.oU*[ addeqsp.oU*[addysp.oU*[ adler32.oU*[x$along.oU*[and.oU*[Vl asctime.oU*[aslax1.oU*[aslax2.oU*[aslax3.oU*[7aslax4.oU*[  asleax1.oU*[ asleax2.oU*[ asleax3.oU*[V asleax4.oU*[7asmtab.oU*[5asr.oU*[]asrax1.oU*[easrax2.oU*[asrax3.oU*[asrax4.oU*[ asreax1.oU*[ asreax2.oU*[j* asreax3.oU*[u asreax4.oU*[ atexit.oU*[ >atoi.oU*[Naxlong.oU*[bneg.oU*[ bpushbsp.oU*[u bsearch.oU*[?call.oU*[Y& callirq.oU*[' callmain.oU*[+6calloc.oU*[E-a callptr4.oU*[/cc65_idiv32by16r16.oU*[/1cc65_imul16x16r32.oU*[04ycc65_imul8x8r16.oU*[6 cc65_sincos.oU*[M8cc65_udiv32by16r16.oU*[=cc65_umul16x16r32.oU*[Aycc65_umul16x8r32.oU*[Ccc65_umul8x8r16.oU*[Fcclear.oU*[Gchdir.oU*[Ichline.oU*[_Kclock.oU*[RYclrscr.oU*[mXcolor.oU*[`compl.oU*[hcondes.oU*[ir copydata.oU*[o5 cprintf.oU*[7rcputc.oU*[Qu cputhex.oU*[~Ocputs.oU*[Qcrc32.oU*[creat.oU*[ϊcrt0.oU*[cscanf.oU*[Xctime.oU*[b\ctype.oU*[] cursor.oU*[gcvline.oU*[Zidbg.oU*[)pl dbgdasm.oU*[*t dbgdump.oU*[ : dbgisram.oU*[? dbgsupp.oU*[ B_ decax1.oU*[hMdecax2.oU*["Odecax3.oU*[Pdecax4.oU*[Rdecax5.oU*[PTdecax6.oU*[ Vdecax7.oU*[Wdecax8.oU*[~Ydecaxy.oU*[8[decsp1.oU*[]decsp2.oU*[^decsp3.oU*[w`decsp4.oU*[4bdecsp5.oU*[cdecsp6.oU*[edecsp7.oU*[kgdecsp8.oU*[(idiv.oU*[j<divt.oU*[!m  doesclrscr.oU*[*oQ em-kernel.oU*[{pC em_commit.oU*[x em_copyfrom.oU*[c| em_copyto.oU*[  em_load.oU*[~ em_map.oU*[-em_pagecount.oU*[ϐ em_unload.oU*[wGem_use.oU*[enter.oU*[`eq.oU*[errno.oU*[ errormsg.oU*[ fclose.oU*[fdopen.oU*[ >fgetc.oU*[Gh fgetpos.oU*[fgets.oU*[`fmisc.oU*[0fopen.oU*[A fprintf.oU*[fputc.oU*[fputs.oU*[Bfread.oU*[ free.oU*[[ freopen.oU*[ :fscanf.oU*[Gfseek.oU*[YT fsetpos.oU*[ ftell.oU*[sfwrite.oU*[&ge.oU*[#get_tv.oU*[U getchar.oU*[9%<getcpu.oU*[u'Ugetcwd.oU*[*Sgetenv.oU*[/Xgetopt.oU*[u1:gets.oU*[Hgmtime.oU*[cO!gotox.oU*[Sgotoxy.oU*[Ycgotoy.oU*[`gt.oU*[ficmp.oU*[gidiv32by16r16.oU*[jimul16x16r32.oU*[n imul8x8r16.oU*[*rTincax1.oU*[~v3incax2.oU*[yincax3.oU*[k{jincax5.oU*[|jincax6.oU*[?~jincax7.oU*[jincax8.oU*[jincaxy.oU*[}incsp1.oU*[zincsp2.oU*[incsp3.oU*[jincsp4.oU*[jincsp5.oU*[jincsp6.oU*[jincsp7.oU*[Tjincsp8.oU*[j inflatemem.oU*[( interrupt.oU*[irq.oU*[ɵi isalnum.oU*[2 isalpha.oU*[ isblank.oU*[ iscntrl.oU*[B isdigit.oU*[ isgraph.oU*[ islower.oU*[s isprint.oU*[# ispunct.oU*[ isspace.oU*[ isupper.oU*[_ isxdigit.oU*[itoa.oU*[tjmpvec.oU*[5@ joy-kernel.oU*[u joy_count.oU*[ joy_load.oU*[c joy_read.oU*[Kjoy_stat_stddrv.oU*[Y joy_unload.oU*[olabs.oU*[ladd.oU*[:laddeq.oU*[ laddeqsp.oU*[wland.oU*[:lasr.oU*[W Xlbneg.oU*[lcmp.oU*[Jlcompl.oU*[ldai.oU*[ ldau0sp.oU*[kldaui.oU*[ ldauisp.oU*[}ldaxi.oU*[ldaxsp.oU*[Q ldeaxi.oU*[!5 ldeaxysp.oU*[4$ldec.oU*[J&ldiv.oU*[K(le.oU*[* leaaxsp.oU*[,leave.oU*[k.5leq.oU*[2vlge.oU*[4vlgt.oU*[5vlibref.oU*[7Ylinc.oU*[[8lle.oU*[F:vllt.oU*[;qlmod.oU*[-=5lmul.oU*[bAlne.oU*[Gvlneg.oU*[qI!locale.oU*[K localtime.oU*[Q  longjmp.oU*[#Xlor.oU*[Z7lpop.oU*[(_|lpush.oU*[b,lrsub.oU*[fGlsave.oU*[krlshelp.oU*[m lshl.oU*[qQlshr.oU*[s7lsub.oU*[vDlsubeq.oU*[az lsubeqsp.oU*[~lt.oU*[ltest.oU*[~ltoa.oU*[hludiv.oU*[oluge.oU*[ylugt.oU*[ylule.oU*[ylult.oU*[tlumod.oU*[lxor.oU*[ڞ:lz4.oU*[ mainargs.oU*[o makebool.oU*[.malloc.oU*[ memchr.oU*[L3memcmp.oU*[`memcpy.oU*[ memmove.oU*[8memset.oU*[mkdir.oU*[mktime.oU*[y~*mod.oU*[ modfree.oU*[ A modload.oU*[Jmouse-kernel.oU*[$%nmouse_buttons.oU*[3mouse_getbox.oU*[.:mouse_geterrormsg.oU*[@ mouse_hide.oU*[I mouse_info.oU*[|P mouse_ioctl.oU*[dW mouse_load.oU*[l^ mouse_move.oU*[ j mouse_pos.oU*[pmouse_setbox.oU*[w mouse_show.oU*[~mouse_unload.oU*[mul.oU*[.mul8.oU*[! mulax10.oU*[=mulax3.oU*[)mulax5.oU*[mulax6.oU*[3mulax7.oU*[N@mulax9.oU*[5ne.oU*[ânegabs.oU*[or.oU*[\zperror.oU*[֩ pmemalign.oU*[popa.oU*[P( popptr1.oU*[xB popsreg.oU*[[ppu.oU*[ ppubuf.oU*[*K printf.oU*[uMpush1.oU*[hpush2.oU*[*hpush3.oU*[hpush4.oU*[hpush5.oU*[bhpush6.oU*[hpush7.oU*[2hpusha.oU*[ pushaff.oU*[9lpushax.oU*[Fpushb.oU*[ pushbsp.oU*[pushc0.oU*[)ipushc1.oU*[ipushc2.oU*[i pushlysp.oU*[d'pushw.oU*[ pushwsp.oU*[ putchar.oU*[&putenv.oU*[puts.oU*[qsort.oU*[raise.oU*[-erand.oU*[0] randomize.oU*[3  realloc.oU*[9 regswap.oU*[G  regswap1.oU*[I regswap2.oU*[K$remove.oU*[Mrename.oU*[OO return0.oU*[P_ return1.oU*[:R`revers.oU*[Shrewind.oU*[Zrmdir.oU*[\rsub.oU*[R^scanf.oU*[aL scrsize.oU*[(e searchenv.oU*[hY ser-kernel.oU*[ l ser_close.oU*[x ser_get.oU*[* ser_ioctl.oU*[نK ser_load.oU*[$k ser_open.oU*[+ ser_put.oU*[ ser_status.oU*[- ser_unload.oU*[°a setcursor.oU*[#setjmp.oU*[shelp.oU*[ushl.oU*[ shr.oU*[#shrax1.oU*[shrax2.oU*[shrax3.oU*[(shrax4.oU*[ shreax1.oU*[ shreax2.oU*[v shreax3.oU*[t> shreax4.oU*[signal.oU*[O sigtable.oU*[Ssleep.oU*[: snprintf.oU*[@ sprintf.oU*[_sscanf.oU*[{ staspidx.oU*[#staxsp.oU*[ staxspi.oU*[r steaxsp.oU*[<) steaxspi.oU*[estkchk.oU*[ strcat.oU*[strchr.oU*[ <strcmp.oU*[x strcoll.oV*[WBstrcpy.oV*[l strcspn.oV*[$strdup.oV*[) strerror.oV*[; strftime.oV*[ ~C stricmp.oV*[Cdstrlen.oV*[h strlower.oV*[j strncat.oV*[ng strncmp.oV*[tm strncpy.oV*[tw strnicmp.oV*[9{u stroserr.oV*[T strpbrk.oV*[! strqtok.oV*[#+ strrchr.oV*[Nstrspn.oV*[!strstr.oV*[8d strtoimax.oV*[Astrtok.oV*[ݜstrtol.oV*[ strtoul.oV*[D strtoumax.oV*[cB strupper.oV*[ strxfrm.oV*[ysub.oV*[a subeqsp.oV*[subysp.oV*[swap.oV*[system.oV*[@ sysuname.oV*[ tgi-kernel.oV*[ tgi_arc.oV*[s ) tgi_bar.oV*[ x tgi_circle.oV*[ G tgi_clear.oV*[[*  tgi_clippedline.oV*[k6  tgi_colors.oV*[U " tgi_curtoxy.oV*[9a tgi_done.oV*[n tgi_ellipse.oV*[{ ~ tgi_free_vectorfont.oV*[; Ptgi_getaspectratio.oV*[ O tgi_getcolor.oV*[ڕ = tgi_getcolorcount.oV*[ B tgi_getdefpalette.oV*[Y  tgi_geterror.oV*[q tgi_geterrormsg.oV*[/ tgi_getmaxcolor.oV*[ T tgi_getmaxx.oV*[3 G tgi_getmaxy.oV*[z G tgi_getpagecount.oV*[ B tgi_getpalette.oV*[  tgi_getpixel.oV*[ x tgi_getset.oV*[! = tgi_gettextheight.oV*[. otgi_gettextwidth.oV*[<> : tgi_getxres.oV*[vO H tgi_getyres.oV*[[ H tgi_gotoxy.oV*[h tgi_imulround.oV*[t l tgi_init.oV*[ x tgi_install_vectorfont.oV*[ X tgi_ioctl.oV*[k tgi_line.oV*[ tgi_linepop.oV*[ tgi_lineto.oV*[ tgi_load.oV*[X wtgi_load_vectorfont.oV*[ ] tgi_outcode.oV*[, > tgi_outtext.oV*[j tgi_outtextxy.oV*[ B tgi_pieslice.oV*[>  tgi_popxy.oV*[ s tgi_popxy2.oV*[a) tgi_setaspectratio.oV*[ 6 U tgi_setcolor.oV*[^B tgi_setdrawpage.oV*[N p tgi_setpalette.oV*[O[ f tgi_setpixel.oV*[g a tgi_settextdir.oV*[t : tgi_settextstyle.oV*[P tgi_setviewpage.oV*[! o tgi_stat_stddrv.oV*[ Z tgi_stddrv.oV*[ U tgi_unload.oV*[? Wtgi_vectorchar.oV*[ time.oV*[6  timezone.oV*[ 9 toascii.oV*[ K tolower.oV*[P tosint.oV*[ _ toslong.oV*[u  toupper.oV*[ udiv.oV*[ tudiv32by16r16.oV*[N uge.oV*[L ugt.oV*[ ule.oV*[ ult.oV*[ umod.oV*[t umul16x16r32.oV*[  umul8x16r24.oV*[  umul8x8r16.oV*[ Kuname.oV*[  uncompress.oV*[ ungetc.oV*[ unlink.oV*[n @ utscopy.oV*[ W vcprintf.oV*[  vcscanf.oV*[  vfprintf.oV*[  vfscanf.oV*[ R vprintf.oV*[ yvscanf.oV*[[" % vsnprintf.oV*[%  vsprintf.oV*[0  vsscanf.oV*[d2  waitvsync.oV*[ 8 wherex.oV*[!> wherey.oV*[D xor.oV*[ J } zerobss.oV*[M  zeropage.oU*[.P nes-stdjoy-joy.oV*[&S nes-64-56-2-tgi.oV*[] 2o65^^^nes-64-56-2.tgild65 V2.17 - Git 6c320f7Wed Jun 20 14:17:57 2018tgi@8 M]yz H xhijL      @    ` ?  > ` ````^Lo` ?  >ȱ> ``(`  `J J  I%,.L %`H  h  ``J J  ` mJiJeJiJi^i) )*`8   ;8   ;  M M M( ? ` m m  eeee e e ; ; M L#ee e e 8LL IiHIih`Hh8 i `PI ` /pp       #   @ `H h i  i jiLjijLhcbL;kkk ` #j #ijL``s`s`vtu 4qtuvȄqs`s`r   ]   G   1      Ѝrs`}b ic` @` @` @` @` !!!!!!!!""""""""###### ;=8-"5+=;=8-"5+= D $%D^%%%D%%$D"B(%%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%%%$%%D^%%%%%%%%%%%%%%%%%%%% %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%J %% %%% %%%#q o65333nes-stdjoy.joyld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:57 2018joy``)@@@jf` %%SYMBOLS { __STACKSIZE__: type = weak, value = $0500; # 5 pages stack } MEMORY { # First 28 bytes of the zero page are used by NES library ZP: start = $28, size = $d8, type = rw, define = yes; # INES Cartridge Header HEADER: start = $0, size = $10, file = %O ,fill = yes; # 2 16K ROM Banks # - startup # - code # - rodata # - data (load) # PRG: start = $8000, size = $3f00, file = %O ,fill = yes, define = yes; # NROM256 PRG: start = $8000, size = $7f00, file = %O ,fill = yes, define = yes; # DPCM Samples at end of the ROM DMC: start = $7f00, size = $fa, file = %O, fill = yes; # NROM256 # DMC: start = $ff00, size = $fa, file = %O, fill = yes; # Hardware Vectors at end of the ROM VECTORS: start = $7ffa, size = $6, file = %O, fill = yes; # NROM256 # VECTORS: start = $fffa, size = $6, file = %O, fill = yes; # 1 8K CHR Bank CHR: start = $0000, size = $2000, file = %O, fill = yes; # standard 2K SRAM (-zeropage) # $0100 famitone, palette, cpu stack # $0200 oam buffer # $0300..$800 ca65 stack RAM: start = $0300, size = $0500, define = yes; # Use this definition instead if you going to use extra 8K RAM # RAM: start = $6000, size = $2000, define = yes; } SEGMENTS { HEADER: load = HEADER, type = ro; STARTUP: load = PRG, type = ro, define = yes; LOWCODE: load = PRG, type = ro, optional = yes; ONCE: load = PRG, type = ro, optional = yes; INIT: load = PRG, type = ro, define = yes, optional = yes; CODE: load = PRG, type = ro, define = yes; RODATA: load = PRG, type = ro, define = yes; DATA: load = PRG, run = RAM, type = rw, define = yes; VECTORS: load = VECTORS, type = rw; SAMPLES: load = DMC, type = rw; CHARS: load = CHR, type = rw; BSS: load = RAM, type = bss, define = yes; HEAP: load = RAM, type = bss, optional = yes; ZEROPAGE: load = ZP, type = zp; } FEATURES { CONDES: segment = INIT, type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__; CONDES: segment = RODATA, type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__; CONDES: type = interruptor, segment = RODATA, label = __INTERRUPTOR_TABLE__, count = __INTERRUPTOR_COUNT__; } naUz gUzna` i&R44|]5:88:!Yg8g@ʋ"Y Xme"Yf        H  I    , ,   >4   )  m   q   L HH ~H  L    @L ?                                                                                                                              4       hxh h@  p w `   );` `      && i H) i I  ` ) 1 U1 )  R  `       U   {  `    ` %  `    ?   ) ) `       f Hi H H i`:  " #   ɀ #e"Q e#[I*L  Hi H   H`  ` `     E   $$          `r  8 88   )  ) `)   )Z` )u     )b`             #   `,             W`Y L G`-@@ @Jv       Y9! ` H  rh`` I` I  `     e`       ` `  `  `  `     } 5t   VV`  )P   `  n n$%   &'   ] X] %' LK DK    $&    `     &U'        'L u  & `   U   `________________                                             !"#$%&'()*+,-.                    zzzzzzzzzzzzzzzz !"#$%&'()*+,-.0123456789:;<=>               -   ! " # $ % & ' ( ) * + , - . - 0123456789:;<=>-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -  !"#$%&'()*+,-.0123456789:;<=>0000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0  0123456789:;<=>0e0e0e0e0e0e0e0e0e0e0e0e0e0e0ee0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  0000000000000000000000000000000000000000000000000000000000000000000000000000000(oJ @ @N@0 @@  @@@  ? 0 i   3BQ`&l `   o0  o       ? 0 i       H  3H  7 hih`   )` H Ho0  o_0]0 @  3  ' w '  7 i Ci  m    3H    hMi    \\0y@ @ @ @ L 0 ?LH  Hm8  =H} V  @h 0} V @3 X@? L  mG   -L H }h V h@h 0} V   @B @? L  mV  [H} V  @h 0} V   @Q +@"?L   me ) I  $   ) @ `  @oh  Lh `    m m `   3  =i  G `         L     8 `      @      `  ɀ)? L  )?L    ' k Si i           L           L  )?L  `        i@j ` ` L 2   M   L   t 4    V&[9{fR?- ~vpic^XSOJFB>:7%            n  +c 0 Do rmB e5/0~ }  | {nzU9 1 yHxwv u t s r q.  p% o n  km2 gf> eMc    ?\h mVE |W(UG'k [P5tOKeM>lH7zGR ?~>_")o>&Hyv;?s]<u` [_9C2+<x8KJ`)}&ILBQ1lO:6p'qEp]% nG-5tbkaD3=sUp\/1TM=AR4; UJqn$X.jQ.^!T4di  qIwob&xr0L}=c+{5 Xn%7@cb_f@*#m*M$(1F a!Yd,V,2I*wE"cRKDvz#L$%l/H/:hu@~y4 #660ZP N' `3Z,)mV. {aS7wQ<FY!J^h+crt0.sca65 V2.16 - Git 18b0aaf NES_MAPPER NES_PRG_BANKS NES_CHR_BANKS NES_MIRRORING FT_DPCM_OFFFT_SFX_STREAMS_exit __STARTUP__initlibpush0popapopax_mainzerobsscopydata __RAM_START__ __RAM_SIZE____ROM0_START__ __ROM0_SIZE____STARTUP_LOAD____STARTUP_RUN____STARTUP_SIZE__ __CODE_LOAD__ __CODE_RUN__ __CODE_SIZE____RODATA_LOAD____RODATA_RUN____RODATA_SIZE__0/Users/sehugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespacePPU_CTRLPPU_MASK PPU_STATUS PPU_OAM_ADDR PPU_OAM_DATA PPU_SCROLLPPU_ADDRPPU_DATA PPU_OAM_DMA PPU_FRAMECNTDMC_FREQ CTRL_PORT1 CTRL_PORT2OAM_BUFPAL_BUF FRAMECNT1 FRAMECNT2NTSCMODE VRAMUPDATE PAD_STATE PAD_STATEP PAD_STATETFT_TEMPSCROLL_XSCROLL_Y PPU_CTRL_VAR PPU_MASK_VAR NAME_UPD_ADR NAME_UPD_LENPAL_PTR RAND_SEED PALUPDATETEMPPAD_BUFPTRLENNEXTSPRSCRXSCRYSRCDSTRLE_LOWRLE_HIGHRLE_TAGRLE_BYTE FT_BASE_ADR FT_DPCM_PTRstart.size waitSync1@1 clearPalette clearVRAMclearRAM _pal_bright _pal_clear _oam_clear waitSync2 waitSync3 detectNTSC_ppu_off FamiToneInitneslib.s_pal_all_pal_bg_pal_spr_pal_col _ppu_on_all _ppu_on_bg _ppu_on_spr _ppu_mask _oam_size_oam_spr _oam_meta_spr_oam_hide_rest _ppu_waitnmi _unrle_vram_scroll _bank_spr_bank_bg _vram_read _vram_write _music_play _music_stop _music_pause _sfx_play _pad_poll _pad_trigger _pad_state_rand8_rand16 _set_rand_set_vram_update _vram_adr _vram_put _vram_fill _vram_inc_memcpy_memfill_delaynmi@upd@skipUpd@palupd@upd1@updName @skipNtscFamiToneUpdateirqpal_copy@0palBrightTable ppu_onoff@2@3@11@4@21FamiToneMusicStartFamiToneMusicStopFamiToneMusicPause @sfxPriority FT_SFX_CH0 FT_SFX_CH1 FT_SFX_CH2 FT_SFX_CH3 @padPollPort @padPollLoop@donerand1rand2@5 famitone.s APU_PL1_VOL APU_PL1_SWEEP APU_PL1_LO APU_PL1_HI APU_PL2_VOL APU_PL2_SWEEP APU_PL2_LO APU_PL2_HIAPU_TRI_LINEAR APU_TRI_LO APU_TRI_HI APU_NOISE_VOL APU_NOISE_LO APU_NOISE_HI APU_DMC_FREQ APU_DMC_RAW APU_DMC_START APU_DMC_LEN APU_SND_CHN FT_FRAME_CNT FT_SONG_SPEEDFT_INSTRUMENT_LFT_INSTRUMENT_HFT_PULSE1_PREVFT_PULSE2_PREV FT_CHANNELS FT_CH1_VARS FT_CH2_VARS FT_CH3_VARS FT_CH4_VARS FT_CH5_VARS FT_ENVELOPES FT_CH1_ENVS FT_CH2_ENVS FT_CH3_ENVS FT_CH4_ENVSFT_DPCM_TABLE_LFT_DPCM_TABLE_HFT_DPCM_EFFECT FT_SFX_ADR_L FT_SFX_ADR_H FT_PAL_ADJUSTFT_ENV_STRUCT_SIZE FT_ENV_VALUE FT_ENV_REPEAT FT_ENV_ADR_L FT_ENV_ADR_H FT_ENV_PTRFT_CHN_STRUCT_SIZE FT_CHN_REPEAT FT_CHN_NOTEFT_CHN_INSTRUMENT FT_CHN_DUTY FT_CHN_PTR_L FT_CHN_PTR_HFT_CHN_RETURN_LFT_CHN_RETURN_HFT_CHN_REF_LEN FT_CH1_NOTE FT_CH2_NOTE FT_CH3_NOTE FT_CH4_NOTE FT_CH5_NOTE FT_CH1_VOLUME FT_CH2_VOLUME FT_CH3_VOLUME FT_CH4_VOLUMEFT_CH1_NOTE_OFFFT_CH2_NOTE_OFFFT_CH3_NOTE_OFFFT_CH4_NOTE_OFFFT_CH1_PITCH_OFFFT_CH2_PITCH_OFFFT_CH3_PITCH_OFF FT_CH1_DUTY FT_CH2_DUTY FT_CH3_DUTY FT_CH4_DUTY FT_OUT_BUFFT_MR_PULSE1_VFT_MR_PULSE1_LFT_MR_PULSE1_HFT_MR_PULSE2_VFT_MR_PULSE2_LFT_MR_PULSE2_H FT_MR_TRI_V FT_MR_TRI_L FT_MR_TRI_H FT_MR_NOISE_V FT_MR_NOISE_FFT_SFX_BASE_ADRFT_SFX_STRUCT_SIZE FT_SFX_REPEAT FT_SFX_PTR_L FT_SFX_PTR_H FT_SFX_OFF FT_SFX_BUF@pal @setChannels @noSetAdjust @setEnvelopes setInstrument@play@set @noAdjust@noSkip@noMusic@row@noRow @processChns channelStep @noNewNote @processEnvs envelopeStep@noPause@noSkipM@ch1note@ch1cut noteTable@ch1sign@ch1prev@ch2note@ch2cut@ch2sign@ch2prev@ch3note@ch3cut@ch3sign@ch4note@ch4cut@noNoise@loop@noRef @noRepeatR @noRepeat @readByte@special@return@noInstr@noEof@effectmusic.sCODERODATABSSDATAZEROPAGENULLHEADERSTARTUPSAMPLESVECTORSCHARScrt0.o"Y g//NES hardware-dependent functions by Shiru (shiru@mail.ru) //Feel free to do anything you want with this code, consider it Public Domain //set bg and spr palettes, data is 32 bytes array void __fastcall__ pal_all(const char *data); //set bg palette only, data is 16 bytes array void __fastcall__ pal_bg(const char *data); //set spr palette only, data is 16 bytes array void __fastcall__ pal_spr(const char *data); //set a palette entry, index is 0..31 void __fastcall__ pal_col(unsigned char index,unsigned char color); //reset palette to $0f void __fastcall__ pal_clear(void); //set virtual bright, 0 is black, 4 is normal, 8 is white void __fastcall__ pal_bright(unsigned char bright); //turn off rendering and nmi void __fastcall__ ppu_off(void); //turn on bg, spr, and nmi void __fastcall__ ppu_on_all(void); //turn on bg only and nmi void __fastcall__ ppu_on_bg(void); //turn on spr only and nmi void __fastcall__ ppu_on_spr(void); //set PPU_MASK directly ;void __fastcall__ ppu_mask(unsigned char mask); //clear OAM buffer, all the sprites are hidden void __fastcall__ oam_clear(void); //set sprites size, 0 for 8x8, 1 for 8x16 void __fastcall__ oam_size(unsigned char size); //set sprite in OAM buffer, chrnum is tile, attr is attribute, sprid is offset in OAM in bytes //returns sprid+4, which is offset for a next sprite unsigned char __fastcall__ oam_spr(unsigned char x,unsigned char y,unsigned char chrnum,unsigned char attr,unsigned char sprid); //set metasprite in OAM buffer //meta sprite is a const unsigned char array, it contains four bytes per sprite //in order x offset, y offset, tile, attribute //x=128 is end of a meta sprite //returns sprid+4, which is offset for a next sprite unsigned char __fastcall__ oam_meta_spr(unsigned char x,unsigned char y,unsigned char sprid,const unsigned char *data); //hide all the sprites starting from given offset void __fastcall__ oam_hide_rest(unsigned char sprid); //wait NMI and sync to 50hz (with frameskip for NTSC) void __fastcall__ ppu_waitnmi(void); //play a music in FamiTone format void __fastcall__ music_play(const unsigned char *data); //stop music void __fastcall__ music_stop(void); //pause and unpause music void __fastcall__ music_pause(unsigned char pause); //play FamiTone sound effect on channel 0..3 void __fastcall__ sfx_play(unsigned char sound,unsigned char channel); //poll controller and return flags like PAD_LEFT etc, input is pad number (0 or 1) unsigned char __fastcall__ pad_poll(unsigned char pad); //poll controller in trigger mode, a flag is set only on button down, not hold //if you need to poll the pad in both normal and trigger mode, poll it in the //trigger mode for first, then use pad_state unsigned char __fastcall__ pad_trigger(unsigned char pad); //get previous pad state without polling ports unsigned char __fastcall__ pad_state(unsigned char pad); //set scroll, including top bits void __fastcall__ scroll(unsigned int x,unsigned int y); //select current chr bank for sprites, 0..1 void __fastcall__ bank_spr(unsigned char n); //select current chr bank for background, 0..1 void __fastcall__ bank_bg(unsigned char n); //returns random number 0..255 or 0..65535 unsigned char __fastcall__ rand8(void); unsigned int __fastcall__ rand16(void); //set random seed void __fastcall__ set_rand(unsigned int seed); //set a pointer to update buffer, contents of the buffer is transferred to vram every frame //buffer structure is MSB, LSB, byte to write, len is number of entries (not bytes) //could be set during rendering, but only takes effect on a new frame //number of transferred bytes is limited by vblank time void __fastcall__ set_vram_update(unsigned char len,unsigned char *buf); //set vram pointer to write operations if you need to write some data to vram //works only when rendering is turned off void __fastcall__ vram_adr(unsigned int adr); //put a byte at current vram address, works only when rendering is turned off void __fastcall__ vram_put(unsigned char n); //fill a block with a byte at current vram address, works only when rendering is turned off void __fastcall__ vram_fill(unsigned char n,unsigned int len); //set vram autoincrement, 0 for +1 and not 0 for +32 void __fastcall__ vram_inc(unsigned char n); //read a block from vram, works only when rendering is turned off void __fastcall__ vram_read(unsigned char *dst,unsigned int adr,unsigned int size); //write a block to vram, works only when rendering is turned off void __fastcall__ vram_write(unsigned char *src,unsigned int adr,unsigned int size); //unpack a nametable into vram void __fastcall__ unrle_vram(const unsigned char *data,unsigned int vram); //like a normal memcpy, but does not return anything void __fastcall__ memcpy(void *dst,void *src,unsigned int len); //like memset, but does not return anything void __fastcall__ memfill(void *dst,unsigned char value,unsigned int len); //delay for N frames void __fastcall__ delay(unsigned char frames); #define PAD_A 0x01 #define PAD_B 0x02 #define PAD_SELECT 0x04 #define PAD_START 0x08 #define PAD_UP 0x10 #define PAD_DOWN 0x20 #define PAD_LEFT 0x40 #define PAD_RIGHT 0x80 #define OAM_FLIP_V 0x80 #define OAM_FLIP_H 0x40 #define OAM_BEHIND 0x20 #define MAX(x1,x2) (x1