From f9392c5a96fd6e9deca5d6e7694f8f0408f0587e Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Wed, 18 Dec 2019 19:06:00 -0600 Subject: [PATCH] c64: updated filesystem, presets, load/save --- presets/c64/cartheader.dasm | 32 + presets/c64/eliza.c | 365 + presets/c64/hello.dasm | 15 +- presets/c64/sidtune.dasm | 332 + presets/c64/skeleton.cc65 | 10 + presets/c64/tgidemo.c | 196 + src/common/baseplatform.ts | 52 +- src/platform/c64.ts | 3 + src/worker/fs/fs65-c64.data | 39089 +++++++++++++++------------ src/worker/fs/fs65-c64.js | 65 +- src/worker/fs/fs65-c64.js.metadata | 2 +- test/cli/testworker.js | 6 + wasm/c64.wasm | Bin 97223 -> 97967 bytes 13 files changed, 22344 insertions(+), 17823 deletions(-) create mode 100644 presets/c64/cartheader.dasm create mode 100644 presets/c64/eliza.c create mode 100644 presets/c64/sidtune.dasm create mode 100644 presets/c64/skeleton.cc65 create mode 100644 presets/c64/tgidemo.c diff --git a/presets/c64/cartheader.dasm b/presets/c64/cartheader.dasm new file mode 100644 index 00000000..0bc51edd --- /dev/null +++ b/presets/c64/cartheader.dasm @@ -0,0 +1,32 @@ + processor 6502 + org $7ffe +; 2-byte load address for ROM image + word $8000 +; http://swut.net/c64cart-howto.html +; https://codebase64.org/doku.php?id=base:assembling_your_own_cart_rom_image + .word CartKReset ; cold start vector + .word CartWStart ; warm start vector + .byte $c3, $c2, $cd, $38, $30 ; "CBM80" +CartKReset + STX $D016 ; Turn on VIC for PAL / NTSC check + JSR $FDA3 ; IOINIT - Init CIA chips + JSR $FD50 ; RANTAM - Clear/test system RAM + JSR $FD15 ; RESTOR - Init KERNAL RAM vectors + JSR $FF5B ; CINT - Init VIC and screen editor + CLI ; Re-enable IRQ interrupts +CartBReset +; init BASIC? + IFCONST CART_INIT_BASIC + JSR $E453 ; Init BASIC RAM vectors + JSR $E3BF ; Main BASIC RAM Init routine + JSR $E422 ; Power-up message / NEW command + LDX #$FB + TXS ; Reduce stack pointer for BASIC +; don't init BASIC, just NOP + ELSE + REPEAT 12 + NOP + REPEND + ENDIF +CartWStart +; should be * = $x025 diff --git a/presets/c64/eliza.c b/presets/c64/eliza.c new file mode 100644 index 00000000..77951e13 --- /dev/null +++ b/presets/c64/eliza.c @@ -0,0 +1,365 @@ + +/* eliza.c + * ys + * original code by Weizenbaum, 1966 + * this rendition based on Charles Hayden's Java implementation from http://chayden.net/eliza/Eliza.html + * + * Note: There are certainly far more optimal and elegant ways to code this... we kept this + * structure to be faithful to the original. -scaz + */ + +#include +#include +#include +#include +#include + +#define NUMKEYWORDS 37 +#define MAXLINELEN 40 +#define NUMSWAPS 14 + +const char *keywords[]= { + "CAN YOU","CAN I","YOU ARE","YOURE","I DONT","I FEEL", + "WHY DONT YOU","WHY CANT I","ARE YOU","I CANT","I AM","IM ", + "YOU ","I WANT","WHAT","HOW","WHO","WHERE", + "WHEN","WHY", + "NAME","CAUSE","SORRY","DREAM","HELLO","HI ","MAYBE", + " NO","YOUR","ALWAYS","THINK","ALIKE","YES","FRIEND", + "COMPUTER","CAR","NOKEYFOUND"}; + +const char *SWAPS[NUMSWAPS][2] = { + {"ARE","AM"}, + {"WERE", "WAS"}, + {"YOU","I"}, + {"YOUR", "MY"}, + {"IVE", "YOU'VE"}, + {"IM", "YOU'RE"}, + {"YOU", "ME"}, + {"ME", "YOU"}, + {"AM","ARE"}, + {"WAS", "WERE"}, + {"I","YOU"}, + {"MY", "YOUR"}, + {"YOUVE", "I'VE"}, + {"YOURE", "I'M"} +}; + +int ResponsesPerKeyword[NUMKEYWORDS]= { + 3,2,4,4,4,3, + 3,2,3,3,4,4, + 3,5,9,9,9,9, + 9,9, + 2,4,4,4,1,1,5, + 5,2,4,3,7,3,6, + 7,5,6}; + +const char *responses[NUMKEYWORDS][9] = { + { "DON'T YOU BELIEVE THAT I CAN*", + "PERHAPS YOU WOULD LIKE TO BE ABLE TO*", + "YOU WANT ME TO BE ABLE TO*"}, + { "PERHAPS YOU DON'T WANT TO*", + "DO YOU WANT TO BE ABLE TO*"}, + { "WHAT MAKES YOU THINK I AM*", + "DOES IT PLEASE YOU TO BELIEVE I AM*", + "PERHAPS YOU WOULD LIKE TO BE*", + "DO YOU SOMETIMES WISH YOU WERE*"}, + { "WHAT MAKES YOU THINK I AM*", + "DOES IT PLEASE YOU TO BELIEVE I AM*", + "PERHAPS YOU WOULD LIKE TO BE*", + "DO YOU SOMETIMES WISH YOU WERE*"}, + { "DON'T YOU REALLY*", + "WHY DON'T YOU*", + "DO YOU WISH TO BE ABLE TO*", + "DOES THAT TROUBLE YOU?"}, + { "TELL ME MORE ABOUT SUCH FEELINGS.", + "DO YOU OFTEN FEEL*", + "DO YOU ENJOY FEELING*"}, + { "DO YOU REALLY BELIEVE I DON'T*", + "PERHAPS IN GOOD TIME I WILL*", + "DO YOU WANT ME TO*"}, + { "DO YOU THINK YOU SHOULD BE ABLE TO*", + "WHY CAN'T YOU*"}, + { "WHY ARE YOU INTERESTED IN WHETHER OR NOT I AM*", + "WOULD YOU PREFER IF I WERE NOT*", + "PERHAPS IN YOUR FANTASIES I AM*"}, + { "HOW DO YOU KNOW YOU CAN'T*", + "HAVE YOU TRIED?", + "PERHAPS YOU CAN NOW*"}, + { "DID YOU COME TO ME BECAUSE YOU ARE*", + "HOW LONG HAVE YOU BEEN*", + "DO YOU BELIEVE IT IS NORMAL TO BE*", + "DO YOU ENJOY BEING*"}, + { "DID YOU COME TO ME BECAUSE YOU ARE*", + "HOW LONG HAVE YOU BEEN*", + "DO YOU BELIEVE IT IS NORMAL TO BE*", + "DO YOU ENJOY BEING*"}, + { "WE WERE DISCUSSING YOU-- NOT ME.", + "OH, I*", + "YOU'RE NOT REALLY TALKING ABOUT ME, ARE YOU?"}, + { "WHAT WOULD IT MEAN TO YOU IF YOU GOT*", + "WHY DO YOU WANT*", + "SUPPOSE YOU SOON GOT*", + "WHAT IF YOU NEVER GOT*", + "I SOMETIMES ALSO WANT*"}, + { "WHY DO YOU ASK?", + "DOES THAT QUESTION INTEREST YOU?", + "WHAT ANSWER WOULD PLEASE YOU THE MOST?", + "WHAT DO YOU THINK?", + "ARE SUCH QUESTIONS ON YOUR MIND OFTEN?", + "WHAT IS IT THAT YOU REALLY WANT TO KNOW?", + "HAVE YOU ASKED ANYONE ELSE?", + "HAVE YOU ASKED SUCH QUESTIONS BEFORE?", + "WHAT ELSE COMES TO MIND WHEN YOU ASK THAT?"}, + { "WHY DO YOU ASK?", + "DOES THAT QUESTION INTEREST YOU?", + "WHAT ANSWER WOULD PLEASE YOU THE MOST?", + "WHAT DO YOU THINK?", + "ARE SUCH QUESTIONS ON YOUR MIND OFTEN?", + "WHAT IS IT THAT YOU REALLY WANT TO KNOW?", + "HAVE YOU ASKED ANYONE ELSE?", + "HAVE YOU ASKED SUCH QUESTIONS BEFORE?", + "WHAT ELSE COMES TO MIND WHEN YOU ASK THAT?"}, + { "WHY DO YOU ASK?", + "DOES THAT QUESTION INTEREST YOU?", + "WHAT ANSWER WOULD PLEASE YOU THE MOST?", + "WHAT DO YOU THINK?", + "ARE SUCH QUESTIONS ON YOUR MIND OFTEN?", + "WHAT IS IT THAT YOU REALLY WANT TO KNOW?", + "HAVE YOU ASKED ANYONE ELSE?", + "HAVE YOU ASKED SUCH QUESTIONS BEFORE?", + "WHAT ELSE COMES TO MIND WHEN YOU ASK THAT?"}, + { "WHY DO YOU ASK?", + "DOES THAT QUESTION INTEREST YOU?", + "WHAT ANSWER WOULD PLEASE YOU THE MOST?", + "WHAT DO YOU THINK?", + "ARE SUCH QUESTIONS ON YOUR MIND OFTEN?", + "WHAT IS IT THAT YOU REALLY WANT TO KNOW?", + "HAVE YOU ASKED ANYONE ELSE?", + "HAVE YOU ASKED SUCH QUESTIONS BEFORE?", + "WHAT ELSE COMES TO MIND WHEN YOU ASK THAT?"}, + { "WHY DO YOU ASK?", + "DOES THAT QUESTION INTEREST YOU?", + "WHAT ANSWER WOULD PLEASE YOU THE MOST?", + "WHAT DO YOU THINK?", + "ARE SUCH QUESTIONS ON YOUR MIND OFTEN?", + "WHAT IS IT THAT YOU REALLY WANT TO KNOW?", + "HAVE YOU ASKED ANYONE ELSE?", + "HAVE YOU ASKED SUCH QUESTIONS BEFORE?", + "WHAT ELSE COMES TO MIND WHEN YOU ASK THAT?"}, + { "WHY DO YOU ASK?", + "DOES THAT QUESTION INTEREST YOU?", + "WHAT ANSWER WOULD PLEASE YOU THE MOST?", + "WHAT DO YOU THINK?", + "ARE SUCH QUESTIONS ON YOUR MIND OFTEN?", + "WHAT IS IT THAT YOU REALLY WANT TO KNOW?", + "HAVE YOU ASKED ANYONE ELSE?", + "HAVE YOU ASKED SUCH QUESTIONS BEFORE?", + "WHAT ELSE COMES TO MIND WHEN YOU ASK THAT?"}, + { "NAMES DON'T INTEREST ME.", + "I DON'T CARE ABOUT NAMES-- PLEASE GO ON."}, + { "IS THAT THE REAL REASON?", + "DON'T ANY OTHER REASONS COME TO MIND?", + "DOES THAT REASON EXPLAIN ANY THING ELSE?", + "WHAT OTHER REASONS MIGHT THERE BE?"}, + { "PLEASE DON'T APOLOGIZE.", + "APOLOGIES ARE NOT NECESSARY.", + "WHAT FEELINGS DO YOU HAVE WHEN YOU APOLOGIZE?", + "DON'T BE SO DEFENSIVE!"}, + { "WHAT DOES THAT DREAM SUGGEST TO YOU?", + "DO YOU DREAM OFTEN?", + "WHAT PERSONS APPEAR IN YOUR DREAMS?", + "ARE YOU DISTURBED BY YOUR DREAMS?"}, + { "HOW DO YOU DO--PLEASE STATE YOUR PROBLEM."}, + { "HOW DO YOU DO--PLEASE STATE YOUR PROBLEM."}, + { "YOU DON'T SEEM QUITE CERTAIN.", + "WHY THE UNCERTAIN TONE?", + "CAN'T YOU BE MORE POSITIVE?", + "YOU AREN'T SURE?", + "DON'T YOU KNOW?"}, + { "ARE YOU SAYING NO JUST TO BE NEGATIVE?", + "YOU ARE BEING A BIT NEGATIVE.", + "WHY NOT?", + "ARE YOU SURE?", + "WHY NO?"}, + { "WHY ARE YOU CONCERNED ABOUT MY*", + "WHAT ABOUT YOUR OWN*"}, + { "CAN YOU THINK OF A SPECIFIC EXAMPLE?", + "WHEN?", + "WHAT ARE YOU THINKING OF?", + "REALLY, ALWAYS?"}, + { "DO YOU REALLY THINK SO?", + "BUT YOU ARE NOT SURE YOU*", + "DO YOU DOUBT YOU*"}, + { "IN WHAT WAY?", + "WHAT RESEMBLANCE DO YOU SEE?", + "WHAT DOES THE SIMILARITY SUGGEST TO YOU?", + "WHAT OTHER CONNECTIONS DO YOU SEE?", + "COULD THERE REALLY BE SOME CONNECTION?", + "HOW?"}, + { "YOU SEEM QUITE POSITIVE.", + "ARE YOU SURE?", + "I SEE.", + "I UNDERSTAND."}, + { "WHY DO YOU BRING UP THE TOPIC OF FRIENDS?", + "DO YOUR FRIENDS WORRY YOU?", + "DO YOUR FRIENDS PICK ON YOU?", + "ARE YOU SURE YOU HAVE ANY FRIENDS?", + "DO YOU IMPOSE ON YOUR FRIENDS?", + "PERHAPS YOUR LOVE FOR FRIENDS WORRIES YOU?"}, + { "DO COMPUTERS WORRY YOU?", + "ARE YOU TALKING ABOUT ME IN PARTICULAR?", + "ARE YOU FRIGHTENED BY MACHINES?", + "WHY DO YOU MENTION COMPUTERS?", + "WHAT DO YOU THINK MACHINES HAVE TO DO WITH YOUR PROBLEM?", + "DON'T YOU THINK COMPUTERS CAN HELP PEOPLE?", + "WHAT IS IT ABOUT MACHINES THAT WORRIES YOU?"}, + { "OH, DO YOU LIKE CARS?", + "MY FAVORITE CAR IS A LAMBORGINI COUNTACH. WHAT IS YOUR FAVORITE CAR?", + "MY FAVORITE CAR COMPANY IS FERRARI. WHAT IS YOURS?", + "DO YOU LIKE PORSCHES?", + "DO YOU LIKE PORSCHE TURBO CARRERAS?"}, + { "SAY, DO YOU HAVE ANY PSYCHOLOGICAL PROBLEMS?", + "WHAT DOES THAT SUGGEST TO YOU?", + "I SEE.", + "I'M NOT SURE I UNDERSTAND YOU FULLY.", + "COME, COME ELUCIDATE YOUR THOUGHTS.", + "CAN YOU ELABORATE ON THAT?", + "THAT IS QUITE INTERESTING."} + + +}; + +void print_center(const char *msg) { + int numspaces=(MAXLINELEN-strlen(msg))/2; + int i; + for(i=0;iMAXLINELEN-1) + { + printf("Exceeded Max Line Length\n"); + } + c=getchar(); + } + instr[slen]='\0'; +} + + +void main() +{ + int k,baseLength; + int whichReply[NUMKEYWORDS]; + char lastinput[MAXLINELEN]; + char reply[MAXLINELEN]; + char *baseResponse, *token; + const char separator[2]=" "; + char inputstr[MAXLINELEN]; + int x,s; + char *location; + + // use the first reply for each keyword match the first time you see that keyword + for (x=0;x"); + readline(inputstr); + printf("\n"); + + // check for termination + if (strcmp(inputstr,"BYE")==0) + break; + + // check for repeated entries + if (strcmp(lastinput,inputstr)==0) + { + printf("PLEASE DON'T REPEAT YOURSELF!\n"); + continue; + } + strncpy(lastinput,inputstr,strlen(inputstr)+1); + + // see if any of the keywords is contained in the input + // if not, we use the last element of keywords as our default responses + strcpy(reply,""); + for(k=0;k + // but skip over the keyword itself + location+=strlen(keywords[k]); + // take them one word at a time, so that we can substitute pronouns + token = strtok(location, separator); + while(token != NULL) + { + for(s=0;s= ResponsesPerKeyword[k]) + whichReply[k] = 0; + } + printf( "GOODBYE! THANKS FOR VISITING WITH ME...\n"); +} diff --git a/presets/c64/hello.dasm b/presets/c64/hello.dasm index 2b703978..906aa2c2 100644 --- a/presets/c64/hello.dasm +++ b/presets/c64/hello.dasm @@ -1,17 +1,8 @@ - processor 6502 - org $7ffe - word $8000 ; load address -; cartridge header (http://swut.net/c64cart-howto.html) - .byte $09, $80, $25, $80 - .byte $c3, $c2, $cd, $38, $30 - .byte $8e, $16, $d0, $20, $a3, $fd, $20 - .byte $50, $fd, $20, $15, $fd, $20, $5b - .byte $ff, $58 - .byte $ea, $ea, $ea, $ea, $ea, $ea, $ea - .byte $ea, $ea, $ea, $ea, $ea + include "cartheader.dasm" + ; program start -Temp equ $00 +Temp equ $03 Start sei ; turn off interrupts ldy #0 diff --git a/presets/c64/sidtune.dasm b/presets/c64/sidtune.dasm new file mode 100644 index 00000000..57ce9171 --- /dev/null +++ b/presets/c64/sidtune.dasm @@ -0,0 +1,332 @@ +; Title: "NewKidOnTheBlock" +; Chip: 6581 C64 used when composing. +; Author: Frantic/Hack'n'Trade +; https://codebase64.org/doku.php?id=base:256_bytes_tune_player + +;--------------------------------- +; CONSTANTS +; +DEBUG = 1 +NUMBEROFVOICES = 3 ;Using all three Voices +S = $10 ;Song "speed" + +;--------------------------------- +; ZERO PAGE ADDRESSES +; + +TICKCOUNTERS = $02 ;Use zp for tickcounters.. TICKCOUNTERS+0, TICKCOUNTERS+7, + ;TICKCOUNTERS+14 will be used. +DATAPOS = $03 ;Use zp for SONGPOSITIONS... 0, 7, 14.. +FILTERHI = $23 + +;--------------------------------- +; CODE +; + + include "cartheader.dasm" + +Start: sei + + ldy #$02 ;Set it to $02 so the first incorrectly timed + ;iteration won't affect anything + sty FILTERHI ;Init filtersweep to make it a bit more deterministic. + + ;Init counters and sonpositions + lda #(NUMBEROFVOICES-1)*7 ;Voice indeX +_initlp: tax + sta DATAPOS,x ;Init datapos+0 to 0, datapos+7 to 7 and datapos+14 to 14. + sty TICKCOUNTERS,x ;y can be anything.. doesn't matter, but now I happen to + ;init the filter so set it to $01 too + sec + sbc #7 + bpl _initlp + +;-- +; Main player loop +_outerloop: +_wrast: cpx $d012 ;After the loop, x is a negative number, thus well above $3e + ;(or whatever the critical raster value is again..) + bne _wrast ;First iteration won't be correct though, but since the + ;counters are set to 2 initially it doesn't matter. + + #if DEBUG + lda #1 + sta $d020 + sta $d021 + #endif + + jsr sweep + stx $d416 ;filter hi + + ldx #(NUMBEROFVOICES-1)*7 ;Voice indeX + ;Right here is a good place for Voice specific code, if there is any reason for that. +_innerloop: + dec TICKCOUNTERS,x + bne _loopend + + ;Time for new sound settings, turn gate and oscillator off.. + lda #8 + sta $d404,x + + ;Turn on global volume to make sure we'll hear anything at all. + ;Reason for having this code *inside* the loop: + ; To make sure the player won't run too fast and get executed + ; twice on the same rasterline. + lda #$5f ;Hi-pass + Lo-pass filter on. + sta $d418 + lda #$a2 ;Filter used on middle (melody) voice. + sta $d417 + + ;Parse data sequence data + ldy DATAPOS,x +_newseq: + iny + lda _musicdata-1,y ;Get databyte + bne _nonewseq + lda _musicdata-0,y ;Get jumpval if it's jumptime + tay ;..and use new one instead + bpl _newseq ;This means data may not be larger than $80 bytes +_nonewseq: + sty DATAPOS,x + pha + and #$0f ;Note value + tay + lda _freqhi,y + sta $d401,x ;Freq hi + lda _freqlo,y + sta $d400,x ;Freq lo + pla + lsr + lsr + lsr + lsr + tay + lda adtab,y + sta $d405,x + lda durtab,y + sta TICKCOUNTERS,x + lda ctrltab,y + sta $d404,x + +_loopend: + txa + .byte $cb,7 ;axs #7 / sbx #7 / whatever.. + bpl _innerloop + + #if DEBUG + dec $d020 + dec $d021 + jmp _outerloop + #endif + + bmi _outerloop + +sweep + inc $23 + ldx $23 + ldy #$00 + rts + +;--------------------------------- +; "Instruments" +; +; Using AD only to save space. (SR is set to 00 as default) +; +; A pattern is S*8 ticks long, so using "instrument" 5 we +; can represent a whole empty pattern by just one byte in +; the sequence data. At the same time, this format allows +; for changes to the waveform every tick, which means we +; can also make drums and such things. But, not in this +; tune. Perhaps in the next one.. +; +; 00 01 02 03 04 05 06 +adtab: .byte $1c, $1b, $cd, $2b, $1a, $00, $ad +ctrltab: .byte $11, $11, $21, $21, $21, $00, $21 +durtab: .byte S*1, S*3, S*6, S*2, S*1, S*8, S*8 + +;--------------------------------- +; Sequence data +; +; Voc0 starts at 0 +; Voc1 starts at 7 +; Voc2 starts at 14 +; +; Note and duration stored in one byte and the byte following a $00 (JP) +; byte is interpreted as the destination of a jump to another place in +; the data. + +_musicdata: +_Voc0start: + .byte $00 | G4 + .byte $00 | Az4 + .byte $00 | C5 + .byte $00 | D5 + .byte $00 | Dz5 + .byte JP + .byte <(_Voc0komp-_musicdata) +_Voc1start: + .byte $20 | D5 + .byte $30 | Dz5 + + .byte $20 | D5 + .byte $40 | A4 + .byte $40 | Az4 + + .byte JP + .byte <(_Voc1melody-_musicdata) +_Voc2start: + ;- + .byte $50 | 0 + .byte $50 | 0 + .byte $50 | 0 + .byte $50 | 0 + + ;- + .byte $50 | 0 +_Voc2loop: + .byte $50 | 0 + .byte $50 | 0 + .byte $20 | C5 + .byte $40 | Dz4 + .byte $40 | F4 + + ;- + .byte $50 | 0 + .byte $60 | D5 + .byte $20 | Dz5 + .byte $30 | Az4 + .byte $20 | A4 + .byte $30 | F4 + + ;- + .byte $60 | G4 + .byte $50 | 0 + .byte $50 | 0 + .byte $60 | C5 + + ;- + .byte $50 | 0 + .byte $60 | D5 + .byte $60 | Dz5 + .byte $60 | F5 + + ;- + .byte $60 | G5 + .byte JP + .byte <(_Voc2loop-_musicdata) +_Voc0komp: + .byte $10 | G5 + + .byte $00 | D4 + .byte $00 | Fz4 + .byte $00 | A4 + .byte $00 | Az4 + .byte $00 | C5 + .byte $10 | D5 + + .byte $00 | Dz4 + .byte $00 | F4 + .byte $00 | G4 + .byte $00 | Az4 + .byte $00 | C5 + .byte $10 | Dz5 + + .byte $00 | F4 + .byte $00 | A4 + .byte $00 | C5 + .byte $00 | D5 + .byte $00 | Dz5 + .byte $10 | F5 + + .byte JP + .byte <(_Voc0start-_musicdata) + +_Voc1melody: + .byte $20 | C5 + .byte $30 | Az4 + + .byte $20 | A4 + .byte $30 | F4 + + ;- + .byte $60 | G4 + + .byte $50 | 0 + + .byte $20 | F4 + .byte $30 | Dz4 + + .byte $20 | F4 + .byte $30 | Dz4 + + ;- + .byte $20 | D4 + .byte $30 | Dz4 + + .byte $20 | D4 + .byte $30 | Fz4 + + .byte $20 | G4 + .byte $30 | Dz4 + + .byte $00 | C4 + .byte $00 | Dz4 + .byte $00 | F4 + .byte $00 | G4 + .byte $00 | A4 + .byte $00 | C5 + .byte $00 | G5 + .byte $00 | F5 + + .byte JP + .byte <(_Voc1start-_musicdata) + +;--------------------------------- +;Note freq data +; +; Only using needed notes. + +JP = 0 +C4 = 1 +D4 = 2 +Dz4 = 3 +;E4 = 2;Not used +F4 = 4 +Fz4 = 5 +G4 = 6 +;Gz4 = 6;Not used +A4 = 7 +Az4 = 8 +;B4 = 8;Not used +C5 = 9 +;Cz5 = 9;Not used +D5 = 10 +Dz5 = 11 +;E5 = 11;Not used +F5 = 12 +;Fz5 = 13;Not used +G5 = 13 +;Gz5 ;Not used +;A5 ;Not used +;Az5 = 14;Not used + +_freqlo = *-1 ;-1 to exclude the corresponding first byte (in _freqhi) used as a "wrap flag" + .byte $77 + .byte $61,$e1 + .byte $f7,$8f,$30 + .byte $8f,$4e + .byte $ef + .byte $c3,$c3 + .byte $ef + .byte $60 + +_freqhi: + .byte $00 ;WRAP + .byte $07 + .byte $08,$08 + .byte $09,$0a,$0b + .byte $0c,$0d + .byte $0e + .byte $10,$11 + .byte $13 + .byte $16 diff --git a/presets/c64/skeleton.cc65 b/presets/c64/skeleton.cc65 new file mode 100644 index 00000000..4de32e87 --- /dev/null +++ b/presets/c64/skeleton.cc65 @@ -0,0 +1,10 @@ + +#include +#include +#include +#include + +void main(void) { + clrscr(); + printf("\r\nHello World!\r\n"); +} diff --git a/presets/c64/tgidemo.c b/presets/c64/tgidemo.c new file mode 100644 index 00000000..c208183a --- /dev/null +++ b/presets/c64/tgidemo.c @@ -0,0 +1,196 @@ + +#include +#include +#include +#include +#include +#include +#include +#include + +#define COLOR_BACK TGI_COLOR_BLACK +#define COLOR_FORE TGI_COLOR_WHITE + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + +/* Driver stuff */ +static unsigned MaxX; +static unsigned MaxY; +static unsigned AspectRatio; + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + +static void CheckError (const char* S) +{ + unsigned char Error = tgi_geterror (); + if (Error != TGI_ERR_OK) { + printf ("%s: %d\n", S, Error); + if (doesclrscrafterexit ()) { + cgetc (); + } + exit (EXIT_FAILURE); + } +} + +#if DYN_DRV +static void DoWarning (void) +/* Warn the user that the dynamic TGI driver is needed for this program */ +{ + printf ("Warning: This program needs the TGI\n" + "driver on disk! Press 'y' if you have\n" + "it - any other key exits.\n"); + if (tolower (cgetc ()) != 'y') { + exit (EXIT_SUCCESS); + } + printf ("OK. Please wait patiently...\n"); +} +#endif + +static void DoCircles (void) +{ + static const unsigned char Palette[2] = { TGI_COLOR_WHITE, TGI_COLOR_ORANGE }; + unsigned char I; + unsigned char Color = COLOR_FORE; + unsigned X = MaxX / 2; + unsigned Y = MaxY / 2; + + tgi_setpalette (Palette); + { + tgi_setcolor (COLOR_FORE); + tgi_line (0, 0, MaxX, MaxY); + tgi_line (0, MaxY, MaxX, 0); + tgi_setcolor (Color); + for (I = 10; I < 240; I += 10) { + tgi_ellipse (X, Y, I, tgi_imulround (I, AspectRatio)); + } + Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE; + } +} + + + +static void DoCheckerboard (void) +{ + static const unsigned char Palette[2] = { TGI_COLOR_WHITE, TGI_COLOR_BLACK }; + unsigned X, Y; + unsigned char Color; + + tgi_setpalette (Palette); + Color = COLOR_BACK; + { + for (Y = 0; Y <= MaxY; Y += 10) { + for (X = 0; X <= MaxX; X += 10) { + tgi_setcolor (Color); + tgi_bar (X, Y, X+9, Y+9); + Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE; + } + Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE; + } + Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE; + } +} + + + +static void DoDiagram (void) +{ + static const unsigned char Palette[2] = { TGI_COLOR_WHITE, TGI_COLOR_BLACK }; + int XOrigin, YOrigin; + int Amp; + int X, Y; + unsigned I; + + tgi_setpalette (Palette); + tgi_setcolor (COLOR_FORE); + tgi_clear(); + + /* Determine zero and aplitude */ + YOrigin = MaxY / 2; + XOrigin = 10; + Amp = (MaxY - 19) / 2; + + /* Y axis */ + tgi_line (XOrigin, 10, XOrigin, MaxY-10); + tgi_line (XOrigin-2, 12, XOrigin, 10); + tgi_lineto (XOrigin+2, 12); + + /* X axis */ + tgi_line (XOrigin, YOrigin, MaxX-10, YOrigin); + tgi_line (MaxX-12, YOrigin-2, MaxX-10, YOrigin); + tgi_lineto (MaxX-12, YOrigin+2); + + /* Sine */ + tgi_gotoxy (XOrigin, YOrigin); + for (I = 0; I <= 360; I += 5) { + + /* Calculate the next points */ + X = (int) (((long) (MaxX - 19) * I) / 360); + Y = (int) (((long) Amp * -_sin (I)) / 256); + + /* Draw the line */ + tgi_lineto (XOrigin + X, YOrigin + Y); + } +} + + + +static void DoLines (void) +{ + static const unsigned char Palette[2] = { TGI_COLOR_WHITE, TGI_COLOR_BLACK }; + unsigned X; + + tgi_setpalette (Palette); + tgi_setcolor (COLOR_FORE); + + for (X = 0; X <= MaxX; X += 10) { + tgi_line (0, 0, MaxY, X); + tgi_line (0, 0, X, MaxY); + tgi_line (MaxX, MaxY, 0, MaxY-X); + tgi_line (MaxX, MaxY, MaxY-X, 0); + } +} + + + +int main (void) +{ + unsigned char Border; + + /* Install the driver */ + tgi_install (tgi_static_stddrv); + CheckError ("tgi_install"); + + tgi_init (); + CheckError ("tgi_init"); + tgi_clear (); + + /* Get stuff from the driver */ + MaxX = tgi_getmaxx (); + MaxY = tgi_getmaxy (); + AspectRatio = tgi_getaspectratio (); + + /* Set the palette, set the border color */ + Border = bordercolor (COLOR_BLACK); + + /* Do graphics stuff */ + while (!kbhit()) { + DoCircles (); + DoCheckerboard (); + DoDiagram (); + DoLines (); + } + + /* Uninstall the driver */ + tgi_uninstall (); + + /* Reset the border */ + (void) bordercolor (Border); + + /* Done */ + clrscr(); + return EXIT_SUCCESS; +} diff --git a/src/common/baseplatform.ts b/src/common/baseplatform.ts index 887d2aca..0988165f 100644 --- a/src/common/baseplatform.ts +++ b/src/common/baseplatform.ts @@ -1117,6 +1117,7 @@ export abstract class BaseZ80MachinePlatform extends BaseMach } // WASM Support +// TODO: detangle from c64 export class WASMMachine implements Machine { @@ -1131,6 +1132,8 @@ export class WASMMachine implements Machine { romarr : Uint8Array; stateptr : number; statearr : Uint8Array; + cpustateptr : number; + cpustatearr : Uint8Array; cpu : CPU; audio : SampledAudioSink; audioarr : Float32Array; @@ -1147,7 +1150,6 @@ export class WASMMachine implements Machine { isStable: self.isStable.bind(self), reset: self.reset.bind(self), saveState: () => { - self.exports.machine_save_state(self.sys, self.stateptr); return self.getCPUState(); }, loadState: () => { @@ -1177,10 +1179,13 @@ export class WASMMachine implements Machine { // init machine instance this.sys = this.exports.machine_init(cBIOSPointer); console.log('machine_init', this.sys); - // create state buffer + // create state buffers var statesize = this.exports.machine_get_state_size(); this.stateptr = this.exports.malloc(statesize); this.statearr = new Uint8Array(this.exports.memory.buffer, this.stateptr, statesize); + var cpustatesize = this.exports.machine_get_cpu_state_size(); + this.cpustateptr = this.exports.malloc(cpustatesize); + this.cpustatearr = new Uint8Array(this.exports.memory.buffer, this.cpustateptr, cpustatesize); // create audio buffer var sampbufsize = 4096*4; this.audioarr = new Float32Array(this.exports.memory.buffer, this.exports.machine_get_sample_buffer(), sampbufsize); @@ -1194,6 +1199,7 @@ export class WASMMachine implements Machine { if (this.prgstart == 0x801) this.prgstart = 0x80d; } // set init string + // TODO: sometimes gets hung up if (this.prgstart) { this.initstring = "\r\r\r\r\r\r\r\r\r\r\rSYS " + this.prgstart + "\r"; this.initindex = 0; @@ -1253,33 +1259,24 @@ export class WASMMachine implements Machine { this.exports.machine_mem_write(this.sys, address & 0xffff, value & 0xff); } getCPUState() { + this.exports.machine_save_cpu_state(this.sys, this.cpustateptr); + var s = this.cpustatearr; return { - PC:this.getPC(), - SP:this.getSP(), - A:this.statearr[14], - X:this.statearr[15], - Y:this.statearr[16], - S:this.statearr[17], - flags:this.statearr[18], - C:this.statearr[18] & 1, - Z:this.statearr[18] & 2, - I:this.statearr[18] & 4, - D:this.statearr[18] & 8, - V:this.statearr[18] & 64, - N:this.statearr[18] & 128, + PC:s[2] + (s[3]<<8), + SP:s[9], + A:s[6], + X:s[7], + Y:s[8], + C:s[10] & 1, + Z:s[10] & 2, + I:s[10] & 4, + D:s[10] & 8, + V:s[10] & 64, + N:s[10] & 128, } } - /* - setPC(pc: number) { - this.exports.machine_save_state(this.sys, this.stateptr); - this.statearr[10] = pc & 0xff; - this.statearr[11] = pc >> 8; - this.exports.machine_load_state(this.sys, this.stateptr); - } - */ saveState() { this.exports.machine_save_state(this.sys, this.stateptr); - // TODO: take out CPU state, memory return { c:this.getCPUState(), state:this.statearr.slice(0) @@ -1289,11 +1286,14 @@ export class WASMMachine implements Machine { this.statearr.set(state.state); this.exports.machine_load_state(this.sys, this.stateptr); } + // assume controls buffer is smaller than cpu buffer saveControlsState() : any { - // TODO + this.exports.machine_save_controls_state(this.sys, this.cpustateptr); + return { controls:this.cpustatearr.slice(0, this.exports.machine_get_controls_state_size()) } } loadControlsState(state) : void { - // TODO + this.cpustatearr.set(state.controls); + this.exports.machine_load_controls_state(this.sys, this.cpustateptr); } getVideoParams() { return {width:392, height:272, overscan:true, videoFrequency:50}; // TODO: const diff --git a/src/platform/c64.ts b/src/platform/c64.ts index c37e35ac..8071e2e5 100644 --- a/src/platform/c64.ts +++ b/src/platform/c64.ts @@ -5,6 +5,9 @@ import { PLATFORMS } from "../common/emu"; const C64_PRESETS = [ {id:'hello.dasm', name:'Hello World (ASM)'}, + {id:'sidtune.dasm', name:'SID Tune (ASM)'}, + {id:'eliza.c', name:'Eliza (C)'}, + {id:'tgidemo.c', name:'TGI Graphics Demo (C)'}, ]; const C64_MEMORY_MAP = { main:[ diff --git a/src/worker/fs/fs65-c64.data b/src/worker/fs/fs65-c64.data index 04bb74d7..95b75c0e 100644 --- a/src/worker/fs/fs65-c64.data +++ b/src/worker/fs/fs65-c64.data @@ -1,15 +1,58 @@ /*****************************************************************************/ /* */ -/* cbm.h */ +/* lz4.h */ /* */ -/* CBM system-specific definitions */ +/* Decompression routine for the 'lz4' format */ /* */ /* */ /* */ -/* (C) 1998-2015, Ullrich von Bassewitz */ -/* Roemerstrasse 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ +/* (C) 2017 Mega Cat Studios */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _LZ4_H +#define _LZ4_H + +void __fastcall__ decompress_lz4 (const unsigned char* src, unsigned char* const dst, + const unsigned short uncompressed_size); +/* Decompresses the source buffer into the destination buffer. +** The size of the decompressed data must be known in advance, LZ4 +** does not include any terminator in-stream. +*/ + +/* end of lz4.h */ +#endif +/*****************************************************************************/ +/* */ +/* c64.h */ +/* */ +/* C64 system-specific definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-2013 Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -33,648 +76,131 @@ -#ifndef _CBM_H -#define _CBM_H +#ifndef _C64_H +#define _C64_H /* Check for errors */ -#if !defined(__CBM__) -# error This module may be used only when compiling for CBM machines! +#if !defined(__C64__) +# error This module may only be used when compiling for the C64! #endif -/* We need NULL. */ -#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 +/* Additional key defines */ +#define CH_F1 133 +#define CH_F2 137 +#define CH_F3 134 +#define CH_F4 138 +#define CH_F5 135 +#define CH_F6 139 +#define CH_F7 136 +#define CH_F8 140 -/* Data bit settings */ -#define SER_BITS_5 0x00 -#define SER_BITS_6 0x01 -#define SER_BITS_7 0x02 -#define SER_BITS_8 0x03 +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 +#define COLOR_RED 0x02 +#define COLOR_CYAN 0x03 +#define COLOR_VIOLET 0x04 +#define COLOR_PURPLE COLOR_VIOLET +#define COLOR_GREEN 0x05 +#define COLOR_BLUE 0x06 +#define COLOR_YELLOW 0x07 +#define COLOR_ORANGE 0x08 +#define COLOR_BROWN 0x09 +#define COLOR_LIGHTRED 0x0A +#define COLOR_GRAY1 0x0B +#define COLOR_GRAY2 0x0C +#define COLOR_LIGHTGREEN 0x0D +#define COLOR_LIGHTBLUE 0x0E +#define COLOR_GRAY3 0x0F -/* Stop bit settings */ -#define SER_STOP_1 0x00 /* One stop bit */ -#define SER_STOP_2 0x01 /* Two stop bits */ +/* TGI color defines */ +#define TGI_COLOR_BLACK COLOR_BLACK +#define TGI_COLOR_WHITE COLOR_WHITE +#define TGI_COLOR_RED COLOR_RED +#define TGI_COLOR_CYAN COLOR_CYAN +#define TGI_COLOR_VIOLET COLOR_VIOLET +#define TGI_COLOR_PURPLE COLOR_PURPLE +#define TGI_COLOR_GREEN COLOR_GREEN +#define TGI_COLOR_BLUE COLOR_BLUE +#define TGI_COLOR_YELLOW COLOR_YELLOW +#define TGI_COLOR_ORANGE COLOR_ORANGE +#define TGI_COLOR_BROWN COLOR_BROWN +#define TGI_COLOR_LIGHTRED COLOR_LIGHTRED +#define TGI_COLOR_GRAY1 COLOR_GRAY1 +#define TGI_COLOR_GRAY2 COLOR_GRAY2 +#define TGI_COLOR_LIGHTGREEN COLOR_LIGHTGREEN +#define TGI_COLOR_LIGHTBLUE COLOR_LIGHTBLUE +#define TGI_COLOR_GRAY3 COLOR_GRAY3 -/* Parity settings */ -#define SER_PAR_NONE 0x00 -#define SER_PAR_ODD 0x01 -#define SER_PAR_EVEN 0x02 -#define SER_PAR_MARK 0x03 -#define SER_PAR_SPACE 0x04 +/* Masks for joy_read */ +#define JOY_UP_MASK 0x01 +#define JOY_DOWN_MASK 0x02 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x10 -/* Handshake settings. The latter two may be combined. */ -#define SER_HS_NONE 0x00 /* No handshake */ -#define SER_HS_HW 0x01 /* Hardware (RTS/CTS) handshake */ -#define SER_HS_SW 0x02 /* Software handshake */ +/* Define hardware */ +#include <_vic2.h> +#define VIC (*(struct __vic2*)0xD000) -/* Bit masks to mask out things from the status returned by ser_status. -** These are 6551 specific and must be mapped by drivers for other chips. -*/ -#define SER_STATUS_PE 0x01 /* Parity error */ -#define SER_STATUS_FE 0x02 /* Framing error */ -#define SER_STATUS_OE 0x04 /* Overrun error */ -#define SER_STATUS_DCD 0x20 /* NOT data carrier detect */ -#define SER_STATUS_DSR 0x40 /* NOT data set ready */ +#include <_sid.h> +#define SID (*(struct __sid*)0xD400) -/* Error codes returned by all functions */ -#define SER_ERR_OK 0x00 /* Not an error - relax */ -#define SER_ERR_NO_DRIVER 0x01 /* No driver available */ -#define SER_ERR_CANNOT_LOAD 0x02 /* Error loading driver */ -#define SER_ERR_INV_DRIVER 0x03 /* Invalid driver */ -#define SER_ERR_NO_DEVICE 0x04 /* Device (hardware) not found */ -#define SER_ERR_BAUD_UNAVAIL 0x05 /* Baud rate not available */ -#define SER_ERR_NO_DATA 0x06 /* Nothing to read */ -#define SER_ERR_OVERFLOW 0x07 /* No room in send buffer */ -#define SER_ERR_INIT_FAILED 0x08 /* Initialization failed */ -#define SER_ERR_INV_IOCTL 0x09 /* IOCTL not supported */ -#define SER_ERR_INSTALLED 0x0A /* A driver is already installed */ -#define SER_ERR_NOT_OPEN 0x0B /* Driver is not open */ +#include <_6526.h> +#define CIA1 (*(struct __6526*)0xDC00) +#define CIA2 (*(struct __6526*)0xDD00) + +/* Define special memory areas */ +#define COLOR_RAM ((unsigned char*)0xD800) + +/* Return codes for get_ostype */ +#define C64_OS_US 0xAA /* US version */ +#define C64_OS_PET64 0x64 /* PET 64 */ +#define C64_OS_SX64 0x43 /* SX-64 */ +#define C64_EU_NEW 0x03 +#define C64_EU_OLD 0x00 +#define C64_DTV 0xFF /* C64 DTV */ + + + +/*****************************************************************************/ +/* Variables */ +/*****************************************************************************/ + + + +/* The addresses of the static drivers */ +extern void c64_65816_emd[]; +extern void c64_c256k_emd[]; +extern void c64_dqbb_emd[]; +extern void c64_georam_emd[]; +extern void c64_isepic_emd[]; +extern void c64_ram_emd[]; +extern void c64_ramcart_emd[]; +extern void c64_reu_emd[]; +extern void c64_vdc_emd[]; +extern void dtv_himem_emd[]; +extern void c64_hitjoy_joy[]; +extern void c64_numpad_joy[]; +extern void c64_ptvjoy_joy[]; +extern void c64_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ +extern void c64_1351_mou[]; /* Referred to by mouse_static_stddrv[] */ +extern void c64_joy_mou[]; +extern void c64_inkwell_mou[]; +extern void c64_pot_mou[]; +extern void c64_swlink_ser[]; +extern void c64_hi_tgi[]; /* Referred to by tgi_static_stddrv[] */ -/* Struct containing parameters for the serial port */ -struct ser_params { - unsigned char baudrate; /* Baudrate */ - unsigned char databits; /* Number of data bits */ - unsigned char stopbits; /* Number of stop bits */ - unsigned char parity; /* Parity setting */ - unsigned char handshake; /* Type of handshake to use */ -}; /*****************************************************************************/ @@ -683,50 +209,13 @@ struct ser_params { -unsigned char __fastcall__ ser_load_driver (const char* driver); -/* Load and install a serial driver. Return an error code. */ - -unsigned char ser_unload (void); -/* Uninstall, then unload the currently loaded driver. */ - -unsigned char __fastcall__ ser_install (void* driver); -/* Install an already loaded driver. Return an error code. */ - -unsigned char ser_uninstall (void); -/* Uninstall the currently loaded driver and return an error code. -** Note: This call does not free allocated memory. -*/ - -unsigned char __fastcall__ ser_open (const struct ser_params* params); -/* "Open" the port by setting the port parameters and enable interrupts. */ - -unsigned char ser_close (void); -/* "Close" the port. Clear buffers and and disable interrupts. */ - -unsigned char __fastcall__ ser_get (char* b); -/* Get a character from the serial port. If no characters are available, the -** function will return SER_ERR_NO_DATA, so this is not a fatal error. -*/ - -unsigned char __fastcall__ ser_put (char b); -/* Send a character via the serial port. There is a transmit buffer, but -** transmitting is not done via interrupt. The function returns -** SER_ERR_OVERFLOW if there is no space left in the transmit buffer. -*/ - -unsigned char __fastcall__ ser_status (unsigned char* status); -/* Return the serial port status. */ - -unsigned char __fastcall__ ser_ioctl (unsigned char code, void* data); -/* Driver specific entry. */ +unsigned char get_ostype (void); +/* Get the ROM version. Returns one of the C64_OS_xxx codes. */ -/* End of serial.h */ +/* End of c64.h */ #endif - - - /*****************************************************************************/ /* */ /* _pbi.h */ @@ -790,1431 +279,6 @@ unsigned char __fastcall__ ser_ioctl (unsigned char code, void* data); /* 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 */ @@ -2539,18 +603,13 @@ extern unsigned int _auxtype; /* Default: 0 */ #endif /*****************************************************************************/ /* */ -/* mouse.h */ +/* nes.h */ /* */ -/* Mouse API */ +/* NES system specific definitions */ /* */ /* */ /* */ -/* (C) 2003-2013, Ullrich von Bassewitz */ -/* Roemerstrasse 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ -/* */ -/* */ +/* (C) 2002-2003 Groepaz/Hitmen */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -2574,188 +633,1306 @@ extern unsigned int _auxtype; /* Default: 0 */ -#ifndef _MOUSE_H -#define _MOUSE_H +#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 /*****************************************************************************/ -/* Definitions */ +/* */ +/* 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. */ +/* */ /*****************************************************************************/ -/* 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 */ +#ifndef _ASSERT_H +#define _ASSERT_H -/* 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; + +#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 + + + +/*****************************************************************************/ +/* */ +/* _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 */ }; -/* 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. +/* End of _6545.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* _6522.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 2004 Stefan Haubenthal */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __VIA_H +#define __VIA_H + + + +/* Define a structure with the 6522 register offsets. +** NOTE: The timer registers are not declared as 16 bit registers, because +** the order in which the two 8 bit halves are written is important, and +** the compiler doesn't guarantee any order when writing 16 bit values. */ -struct 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. - */ +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 + + + /*****************************************************************************/ -/* Declarations */ +/* */ +/* 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. */ +/* */ /*****************************************************************************/ -/* The default mouse callbacks */ -extern const struct mouse_callbacks mouse_def_callbacks; +/* Exports structures and functions to load relocatable o65 modules at +** runtime. +*/ -#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; +#ifndef _MODLOAD_H +#define _MODLOAD_H + + + +/* The following struct is passed to the module loader. It contains stuff, +** the loader needs to work, and another area where the loader will place +** informational data if it was successful. You will have to check the return +** code of mod_load before accessing any of these additional struct members. +*/ +struct mod_ctrl { + /* Parameters passed into the loader routine. The member callerdata + ** is an opaque 16 bit datatype that may be used by the caller to + ** pass data through to the read routine. The read routine is used by the + ** loader to load any required data. There are several calls where the + ** read routine is passed a count of 1, so you may choose to make this + ** a special case when implementing read(). The read() should return the + ** number of bytes actually read. If the return value differs from the + ** passed count, this is considered an error. + ** NOTE: read() is designed so that the POSIX read() routine can be used + ** for this vector, if you're loading from disk. + */ + int __fastcall__ (*read) (int callerdata, void* buffer, unsigned count); + int callerdata; + + /* Parameters set by the loader routine */ + void* module; /* Pointer to module data */ + unsigned module_size; /* Total size of loaded module */ + unsigned module_id; /* Module id */ +}; + + + +unsigned char __fastcall__ mod_load (struct mod_ctrl* ctrl); +/* Load a module into memory and relocate it. The function will return an +** error code (see below). If MLOAD_OK is returned, the outgoing fields in +** the passed mod_ctrl struct contain information about the module just +** loaded. +*/ + +void __fastcall__ mod_free (void* module); +/* Free a loaded module. Note: The given pointer is the pointer to the +** module memory, not a pointer to a control structure. +*/ + + + +/* Errors */ +#define MLOAD_OK 0 /* Module load successful */ +#define MLOAD_ERR_READ 1 /* Read error */ +#define MLOAD_ERR_HDR 2 /* Header error */ +#define MLOAD_ERR_OS 3 /* Wrong OS */ +#define MLOAD_ERR_FMT 4 /* Data format error */ +#define MLOAD_ERR_MEM 5 /* Not enough memory */ + + + +/* End of modload.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* unistd.h */ +/* */ +/* Unix compatibility header file for cc65 */ +/* */ +/* */ +/* */ +/* (C) 2003-2011, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _UNISTD_H +#define _UNISTD_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Predefined file handles */ +#define STDIN_FILENO 0 +#define STDOUT_FILENO 1 +#define STDERR_FILENO 2 + +/* WE need size_t */ +#ifndef _HAVE_size_t +#define _HAVE_size_t +typedef unsigned size_t; +#endif + +/* We need off_t if sys/types is not included */ +#ifndef _HAVE_off_t +#define _HAVE_off_t +typedef long int off_t; +#endif + +/* Stuff for getopt */ +extern char *optarg; +extern int optind, opterr, optopt; + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +/* Files */ +int __fastcall__ write (int fd, const void* buf, unsigned count); +int __fastcall__ read (int fd, void* buf, unsigned count); +off_t __fastcall__ lseek (int fd, off_t offset, int whence); +int __fastcall__ unlink (const char* name); /* Same as remove() */ + +/* Directories */ +int __fastcall__ chdir (const char* name); +char* __fastcall__ getcwd (char* buf, size_t size); +int mkdir (const char* name, ...); /* May take a mode argument */ +int __fastcall__ rmdir (const char* name); + +/* Others */ +unsigned __fastcall__ sleep (unsigned seconds); +int __fastcall__ getopt (int argc, char* const* argv, const char* optstring); + +/* Non standard: */ +#if __CC65_STD__ == __CC65_STD_CC65__ +int __fastcall__ exec (const char* progname, const char* cmdline); +#endif + + + +/* End of unistd.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* 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_hi_tgi[]; +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 +/*****************************************************************************/ +/* */ +/* cx16.h */ +/* */ +/* CX16 system-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 _CX16_H +#define _CX16_H + + + +/* Check for errors */ +#ifndef __CX16__ +# error This module may be used only when compiling for the CX16! +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Additional key defines */ +#define CH_F1 0x85 +#define CH_F2 0x89 +#define CH_F3 0x86 +#define CH_F4 0x8A +#define CH_F5 0x87 +#define CH_F6 0x8B +#define CH_F7 0x88 +#define CH_F8 0x8C +#define CH_F9 0x10 +#define CH_F10 0x15 +#define CH_F11 0x16 +#define CH_F12 0x17 + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 +#define COLOR_RED 0x02 +#define COLOR_CYAN 0x03 +#define COLOR_VIOLET 0x04 +#define COLOR_PURPLE COLOR_VIOLET +#define COLOR_GREEN 0x05 +#define COLOR_BLUE 0x06 +#define COLOR_YELLOW 0x07 +#define COLOR_ORANGE 0x08 +#define COLOR_BROWN 0x09 +#define COLOR_LIGHTRED 0x0A +#define COLOR_GRAY1 0x0B +#define COLOR_GRAY2 0x0C +#define COLOR_LIGHTGREEN 0x0D +#define COLOR_LIGHTBLUE 0x0E +#define COLOR_GRAY3 0x0F + +/* NES controller masks for joy_read() */ + +#define JOY_BTN_1_MASK 0x80 +#define JOY_BTN_2_MASK 0x40 +#define JOY_BTN_3_MASK 0x20 +#define JOY_BTN_4_MASK 0x10 +#define JOY_UP_MASK 0x08 +#define JOY_DOWN_MASK 0x04 +#define JOY_LEFT_MASK 0x02 +#define JOY_RIGHT_MASK 0x01 + +#define JOY_BTN_A_MASK JOY_BTN_1_MASK +#define JOY_BTN_B_MASK JOY_BTN_2_MASK +#define JOY_SELECT_MASK JOY_BTN_3_MASK +#define JOY_START_MASK JOY_BTN_4_MASK + +#define JOY_BTN_A(v) ((v) & JOY_BTN_A_MASK) +#define JOY_BTN_B(v) ((v) & JOY_BTN_B_MASK) +#define JOY_SELECT(v) ((v) & JOY_SELECT_MASK) +#define JOY_START(v) ((v) & JOY_START_MASK) + +#define JOY_FIRE2_MASK JOY_BTN_2_MASK +#define JOY_FIRE2(v) ((v) & JOY_FIRE2_MASK) + +/* Additional mouse button mask */ +#define MOUSE_BTN_MIDDLE 0x02 + +/* get_tv() return codes +** set_tv() argument codes +*/ +#define TV_NONE 0 +#define TV_VGA 1 +#define TV_NTSC_COLOR 2 +#define TV_RGB 3 +#define TV_NONE2 4 +#define TV_VGA2 5 +#define TV_NTSC_MONO 6 +#define TV_RGB2 7 + +/* Video modes for videomode() */ +#define VIDEOMODE_40x30 0x00 +#define VIDEOMODE_80x60 0x02 +#define VIDEOMODE_40COL VIDEOMODE_40x30 +#define VIDEOMODE_80COL VIDEOMODE_80x60 +#define VIDEOMODE_320x240 0x80 +#define VIDEOMODE_SWAP (-1) + +/* VERA's interrupt flags */ +#define VERA_IRQ_VSYNC 0b00000001 +#define VERA_IRQ_RASTER 0b00000010 +#define VERA_IRQ_SPR_COLL 0b00000100 +#define VERA_IRQ_UART 0b00001000 + + +/* Define hardware. */ + +/* A structure with the Video Enhanced Retro Adapter's external registers */ +struct __vera { + unsigned short address; /* Address for data ports */ + unsigned char address_hi; + unsigned char data0; /* Data port 0 */ + unsigned char data1; /* Data port 1 */ + unsigned char control; /* Control register */ + unsigned char irq_enable; /* Interrupt enable bits */ + unsigned char irq_flags; /* Interrupt flags */ +}; +#define VERA (*(volatile struct __vera *)0x9F20) + +#include <_6522.h> +#define VIA1 (*(volatile struct __6522 *)0x9F60) +#define VIA2 (*(volatile struct __6522 *)0x9F70) + +/* A structure with the x16emu's settings registers */ +struct __emul { + unsigned char debug; /* Boolean: debugging enabled */ + unsigned char vera_action; /* Boolean: displaying VERA activity */ + unsigned char keyboard; /* Boolean: displaying typed keys */ + unsigned char echo; /* How Kernal output should be echoed to host */ + unsigned char save_on_exit; /* Boolean: save SD card when quitting */ + unsigned char gif_method; /* How GIF movie is being recorded */ + unsigned char unused[0xD - 0x6]; + unsigned char keymap; /* Keyboard layout number */ + const char detect[2]; /* "16" if running on x16emu */ +}; +#define EMULATOR (*(volatile struct __emul)0x9FB0) + +/* An array window into the half Mibibyte or two Mibibytes of banked RAM */ +#define BANK_RAM ((unsigned char[0x2000])0xA000) + + + +/* The addresses of the static drivers */ + +extern void cx16_std_joy[]; /* Referred to by joy_static_stddrv[] */ +extern void cx16_std_mou[]; /* Referred to by mouse_static_stddrv[] */ + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +signed char get_ostype (void); +/* Get the ROM build version. +** -1 -- custom build +** Negative -- prerelease build +** Positive -- release build +*/ + +unsigned char get_tv (void); +/* Return the video type that the machine is using. +** Return a TV_xx constant. +*/ + +void __fastcall__ set_tv (unsigned char type); +/* Set the video type that the machine will use. +** Call with a TV_xx constant. +*/ + +signed char __fastcall__ videomode (signed char mode); +/* Set the video mode, return the old mode. +** Return -1 if Mode isn't valid. +** Call with one of the VIDEOMODE_xx constants. +*/ + +unsigned char __fastcall__ vpeek (unsigned long addr); +/* Get a byte from a location in VERA's internal address space. */ + +void __fastcall__ vpoke (unsigned char data, unsigned long addr); +/* Put a byte into a location in VERA's internal address space. +** (addr is second instead of first for the sake of code efficiency.) +*/ + + + +/* End of cX16.h */ +#endif +/*****************************************************************************/ +/* */ +/* _mikey.h */ +/* */ +/* Atari Lynx, Mikey chip register hardware structures */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +#ifndef __MIKEY_H +#define __MIKEY_H + +/* timer structure */ +typedef struct _mikey_timer { + unsigned char reload; + unsigned char control; + unsigned char count; + unsigned char control2; +} _mikey_timer; + +typedef struct _mikey_all_timers { + struct _mikey_timer timer[8]; +} _mikey_all_timers; + +/* audio channel structure */ +typedef struct _mikey_audio { + unsigned char volume; + unsigned char feedback; + unsigned char dac; + unsigned char shiftlo; + unsigned char reload; + unsigned char control; + unsigned char count; + unsigned char other; +} _mikey_audio; + +/* Define a structure with the mikey register offsets */ +struct __mikey { + struct _mikey_timer timer0; // 0xFD00 + struct _mikey_timer timer1; // 0xFD04 + struct _mikey_timer timer2; // 0xFD08 + struct _mikey_timer timer3; // 0xFD0C + struct _mikey_timer timer4; // 0xFD10 + struct _mikey_timer timer5; // 0xFD14 + struct _mikey_timer timer6; // 0xFD18 + struct _mikey_timer timer7; // 0xFD1C + struct _mikey_audio channel_a; // 0xFD20 + struct _mikey_audio channel_b; // 0xFD28 + struct _mikey_audio channel_c; // 0xFD30 + struct _mikey_audio channel_d; // 0xFD38 + unsigned char attena; // 0xFD40 ?? not yet allocated? + unsigned char attenb; // 0xFD41 | + unsigned char attenc; // 0xFD42 | + unsigned char attend; // 0xFD43 | + unsigned char panning; // 0xFD44 | + unsigned char unused0[11]; // 0xFD45 - 0xFD4F not used + unsigned char mstereo; // 0xFD50 stereo control bits + unsigned char unused1[47]; // 0xFD51 - 0xFD7F not used + unsigned char intrst; // 0xFD80 interrupt poll 0 + unsigned char intset; // 0xFD81 interrupt poll 1 + unsigned char unused2[2]; // 0xFD82 - 0xFD83 not used + unsigned char magrdy0; // 0xFD84 mag tape channel0 ready bit + unsigned char magrdy1; // 0xFD85 mag tape channel1 ready bit + unsigned char audin; // 0xFD86 audio in + unsigned char sysctl1; // 0xFD87 control bits + unsigned char mikeyrev; // 0xFD88 mikey hardware rev + unsigned char mikeysrev; // 0xFD89 mikey software rev + unsigned char iodir; // 0xFD8A parallel i/o data dir + unsigned char iodat; // 0xFD8B parallel data + unsigned char serctl; // 0xFD8C serial control register + unsigned char serdat; // 0xFD8D serial data + unsigned char unused3[2]; // 0xFD8E - 0xFD8F not used + unsigned char sdoneack; // 0xFD90 suzy done acknowledge + unsigned char cpusleep; // 0xFD91 cpu bus request disable + unsigned char dispctl; // 0xFD92 video bus request enable, viddma + unsigned char pkbkup; // 0xFD93 magic 'P' count + unsigned char *scrbase; // 0xFD94 start address of video display + unsigned char unused4[6]; // 0xFD96 - 0xFD9B not used + unsigned char mtest0; // 0xFD9C + unsigned char mtest1; // 0xFD9D + unsigned char mtest2; // 0xFD9E + unsigned char unused5; // 0xFD9F not used + unsigned char palette[32]; // 0xFDA0 - 0xFDBF palette 32 bytes + // 0xFDC0 - 0xFDFF not used +}; + #endif -/* 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 */ +/* */ +/* 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. */ +/* */ /*****************************************************************************/ -unsigned char __fastcall__ mouse_load_driver (const struct mouse_callbacks* c, - const char* driver); -/* Load and install a mouse driver, return an error code. */ +#ifndef _C16_H +#define _C16_H -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. */ +/* Check for errors */ +#if !defined(__C16__) +# error This module may only be used when compiling for the C16! +#endif -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! + +/* 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 +/*****************************************************************************/ +/* */ +/* _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 mouse.h */ +/* End of _6525.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 /*****************************************************************************/ /* */ @@ -2977,15 +2154,16 @@ unsigned __fastcall__ lynx_eewrite (unsigned cell, unsigned val); #endif /*****************************************************************************/ /* */ -/* atari.h */ +/* 6502.h */ /* */ -/* Atari system specific definitions */ +/* 6502 specific declarations */ /* */ /* */ /* */ -/* (C) 2000-2006 Mark Keates */ -/* Freddy Offenga */ -/* Christian Groessler */ +/* (C) 1998-2012, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -3009,122 +2187,252 @@ unsigned __fastcall__ lynx_eewrite (unsigned cell, unsigned val); -#ifndef _ATARI_H -#define _ATARI_H +#ifndef _6502_H +#define _6502_H -/* Check for errors */ -#if !defined(__ATARI__) -# error This module may only be used when compiling for the Atari! +/* We need size_t */ +#ifndef _HAVE_size_t +#define _HAVE_size_t +typedef unsigned size_t; #endif -/* Character codes */ -#define CH_DELCHR 0xFE /* delete char under the cursor */ -#define CH_ENTER 0x9B -#define CH_ESC 0x1B -#define CH_CURS_UP 28 -#define CH_CURS_DOWN 29 -#define CH_CURS_LEFT 30 -#define CH_CURS_RIGHT 31 +/* Possible returns of getcpu() */ +#define CPU_6502 0 +#define CPU_65C02 1 +#define CPU_65816 2 +#define CPU_4510 3 +#define CPU_65SC02 4 +#define CPU_65CE02 5 +#define CPU_HUC6280 6 +#define CPU_2A0x 7 +#define CPU_45GS02 8 -#define CH_TAB 0x7F /* tabulator */ -#define CH_EOL 0x9B /* end-of-line marker */ -#define CH_CLR 0x7D /* clear screen */ -#define CH_BEL 0xFD /* bell */ -#define CH_DEL 0x7E /* back space (delete char to the left) */ -#define CH_RUBOUT 0x7E /* back space (old, deprecated) */ -#define CH_DELLINE 0x9C /* delete line */ -#define CH_INSLINE 0x9D /* insert line */ +unsigned char getcpu (void); +/* Detect the CPU the program is running on */ -/* These are defined to be Atari + NumberKey */ -#define CH_F1 177 -#define CH_F2 178 -#define CH_F3 179 -#define CH_F4 180 -#define CH_F5 181 -#define CH_F6 182 -#define CH_F7 183 -#define CH_F8 184 -#define CH_F9 185 -#define CH_F10 176 -#define CH_ULCORNER 0x11 -#define CH_URCORNER 0x05 -#define CH_LLCORNER 0x1A -#define CH_LRCORNER 0x03 -#define CH_TTEE 0x17 -#define CH_BTEE 0x18 -#define CH_LTEE 0x01 -#define CH_RTEE 0x04 -#define CH_CROSS 0x13 -#define CH_HLINE 0x12 -#define CH_VLINE 0x7C -/* color defines */ +/* Macros for CPU instructions */ +#define BRK() __asm__ ("brk") +#define CLI() __asm__ ("cli") +#define SEI() __asm__ ("sei") -/* make GTIA color value */ -#define _gtia_mkcolor(hue,lum) (((hue) << 4) | ((lum) << 1)) -/* luminance values go from 0 (black) to 7 (white) */ -/* hue values */ -#define HUE_GREY 0 -#define HUE_GOLD 1 -#define HUE_GOLDORANGE 2 -#define HUE_REDORANGE 3 -#define HUE_ORANGE 4 -#define HUE_MAGENTA 5 -#define HUE_PURPLE 6 -#define HUE_BLUE 7 -#define HUE_BLUE2 8 -#define HUE_CYAN 9 -#define HUE_BLUEGREEN 10 -#define HUE_BLUEGREEN2 11 -#define HUE_GREEN 12 -#define HUE_YELLOWGREEN 13 -#define HUE_YELLOW 14 -#define HUE_YELLOWRED 15 +/* Struct that holds the registers for the sys function */ +struct regs { + unsigned char a; /* A register value */ + unsigned char x; /* X register value */ + unsigned char y; /* Y register value */ + unsigned char flags; /* Flags value */ + unsigned pc; /* Program counter */ +}; -/* Color defines, similar to c64 colors (untested) */ -/* Note that the conio color implementation is monochrome (bgcolor and textcolor are only placeholders) */ -/* Use the defines with the setcolor() or _atari_xxxcolor() functions */ -#define COLOR_BLACK _gtia_mkcolor(HUE_GREY,0) -#define COLOR_WHITE _gtia_mkcolor(HUE_GREY,7) -#define COLOR_RED _gtia_mkcolor(HUE_REDORANGE,1) -#define COLOR_CYAN _gtia_mkcolor(HUE_CYAN,3) -#define COLOR_VIOLET _gtia_mkcolor(HUE_PURPLE,4) -#define COLOR_GREEN _gtia_mkcolor(HUE_GREEN,2) -#define COLOR_BLUE _gtia_mkcolor(HUE_BLUE,2) -#define COLOR_YELLOW _gtia_mkcolor(HUE_YELLOW,7) -#define COLOR_ORANGE _gtia_mkcolor(HUE_ORANGE,5) -#define COLOR_BROWN _gtia_mkcolor(HUE_YELLOW,2) -#define COLOR_LIGHTRED _gtia_mkcolor(HUE_REDORANGE,6) -#define COLOR_GRAY1 _gtia_mkcolor(HUE_GREY,2) -#define COLOR_GRAY2 _gtia_mkcolor(HUE_GREY,3) -#define COLOR_LIGHTGREEN _gtia_mkcolor(HUE_GREEN,6) -#define COLOR_LIGHTBLUE _gtia_mkcolor(HUE_BLUE,6) -#define COLOR_GRAY3 _gtia_mkcolor(HUE_GREY,5) +/* Defines for the flags in the regs structure */ +#define F6502_N 0x80 /* N flag */ +#define F6502_V 0x40 /* V flag */ +#define F6502_B 0x10 /* B flag */ +#define F6502_D 0x08 /* D flag */ +#define F6502_I 0x04 /* I flag */ +#define F6502_Z 0x02 /* Z flag */ +#define F6502_C 0x01 /* C flag */ -/* 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 +/* Function to call any machine language subroutine. All registers in the +** regs structure are passed into the routine and the results are passed +** out. The B flag is ignored on input. The called routine must end with +** an RTS. +*/ +void __fastcall__ _sys (struct regs* r); + + + +/* Set and reset the break vector. The given user function is called if +** a break occurs. The values of the registers may be read from the brk_... +** variables. The value in brk_pc will point to the address that contains +** the brk instruction. +** The set_brk function will install an exit handler that will reset the +** vector if the program ends. +*/ + +extern unsigned char brk_a; /* A register value */ +extern unsigned char brk_x; /* X register value */ +extern unsigned char brk_y; /* Y register value */ +extern unsigned char brk_sr; /* Status register */ +extern unsigned brk_pc; /* PC value */ + +typedef void (*brk_handler) (void); +/* Type of the break handler */ + +void __fastcall__ set_brk (brk_handler f); +/* Set the break vector to the given address */ + +void reset_brk (void); +/* Reset the break vector to the original value */ + + + +/* Possible returns for irq_handler() */ +#define IRQ_NOT_HANDLED 0 +#define IRQ_HANDLED 1 + +typedef unsigned char (*irq_handler) (void); +/* Type of the C level interrupt request handler */ + +void __fastcall__ set_irq (irq_handler f, void *stack_addr, size_t stack_size); +/* Set the C level interrupt request vector to the given address */ + +void reset_irq (void); +/* Reset the C level interrupt request vector */ + + + +/* End of 6502.h */ +#endif +/*****************************************************************************/ +/* */ +/* string.h */ +/* */ +/* String handling */ +/* */ +/* */ +/* */ +/* (C) 1998-2014, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _STRING_H +#define _STRING_H + + + +#include + + + +char* __fastcall__ strcat (char* dest, const char* src); +char* __fastcall__ strchr (const char* s, int c); +int __fastcall__ strcmp (const char* s1, const char* s2); +int __fastcall__ strcoll (const char* s1, const char* s2); +char* __fastcall__ strcpy (char* dest, const char* src); +size_t __fastcall__ strcspn (const char* s1, const char* s2); +char* __fastcall__ strerror (int errcode); +size_t __fastcall__ strlen (const char* s); +char* __fastcall__ strncat (char* s1, const char* s2, size_t count); +int __fastcall__ strncmp (const char* s1, const char* s2, size_t count); +char* __fastcall__ strncpy (char* dest, const char* src, size_t count); +char* __fastcall__ strpbrk (const char* str, const char* set); +char* __fastcall__ strrchr (const char* s, int c); +size_t __fastcall__ strspn (const char* s1, const char* s2); +char* __fastcall__ strstr (const char* str, const char* substr); +char* __fastcall__ strtok (char* s1, const char* s2); +size_t __fastcall__ strxfrm (char* s1, const char* s2, size_t count); +void* __fastcall__ memchr (const void* mem, int c, size_t count); +int __fastcall__ memcmp (const void* p1, const void* p2, size_t count); +void* __fastcall__ memcpy (void* dest, const void* src, size_t count); +void* __fastcall__ memmove (void* dest, const void* src, size_t count); +void* __fastcall__ memset (void* s, int c, size_t count); + +/* The following is an internal function, the compiler will replace memset +** with it if the fill value is zero. Never use this one directly! +*/ +void* __fastcall__ _bzero (void* ptr, size_t n); + +/* Non standard: */ +#if __CC65_STD__ == __CC65_STD_CC65__ +void __fastcall__ bzero (void* ptr, size_t n); /* BSD */ +char* __fastcall__ strdup (const char* s); /* SYSV/BSD */ +int __fastcall__ stricmp (const char* s1, const char* s2); /* DOS/Windows */ +int __fastcall__ strcasecmp (const char* s1, const char* s2); /* Same for Unix */ +int __fastcall__ strnicmp (const char* s1, const char* s2, size_t count); /* DOS/Windows */ +int __fastcall__ strncasecmp (const char* s1, const char* s2, size_t count); /* Same for Unix */ +char* __fastcall__ strlwr (char* s); +char* __fastcall__ strlower (char* s); +char* __fastcall__ strupr (char* s); +char* __fastcall__ strupper (char* s); +char* __fastcall__ strqtok (char* s1, const char* s2); +#endif + +const char* __fastcall__ _stroserror (unsigned char errcode); +/* Map an operating system error number to an error message. */ + + + +/* End of string.h */ +#endif +/*****************************************************************************/ +/* */ +/* atari5200.h */ +/* */ +/* Atari 5200 system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2014 Christian Groessler */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ATARI5200_H +#define _ATARI5200_H + + + +/* Check for errors */ +#if !defined(__ATARI5200__) +# error This module may only be used when compiling for the Atari 5200! +#endif + +/* no support for dynamically loadable drivers */ +#define DYN_DRV 0 + +/* the addresses of the static drivers */ +extern void atr5200std_joy[]; /* referred to by joy_static_stddrv[] */ /* Masks for joy_read */ #define JOY_UP_MASK 0x01 @@ -3133,208 +2441,497 @@ unsigned __fastcall__ lynx_eewrite (unsigned cell, unsigned val); #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 +/* Character codes */ +#define CH_ULCORNER 0x0B /* '+' sign */ +#define CH_URCORNER 0x0B +#define CH_LLCORNER 0x0B +#define CH_LRCORNER 0x0B +#define CH_HLINE 0x0D /* dash */ +#define CH_VLINE 0x01 /* exclamation mark */ /* get_tv return values */ #define AT_NTSC 0 #define AT_PAL 1 -/* 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> +#define GTIA_READ (*(struct __gtia_read*)0xC000) +#define GTIA_WRITE (*(struct __gtia_write*)0xC000) #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) +#define POKEY_READ (*(struct __pokey_read*)0xE800) +#define POKEY_WRITE (*(struct __pokey_write*)0xE800) #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 */ +/* conio color defines */ +#define COLOR_WHITE 0x00 +#define COLOR_RED 0x01 +#define COLOR_GREEN 0x02 +#define COLOR_BLACK 0x03 + +/* The following #define will cause the matching function calls in conio.h +** to be overlaid by macros with the same names, saving the function call +** overhead. +*/ +#define _bordercolor(color) 0 + +/* End of atari5200.h */ +#endif +/*****************************************************************************/ +/* */ +/* _vic.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 2002 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __VIC_H +#define __VIC_H + + + +/* Define a structure with the vic register offsets */ +struct __vic { + unsigned char leftborder; + unsigned char upperborder; + unsigned char charsperline; /* Characters per line */ + unsigned char linecount; /* Number of lines */ + unsigned char rasterline; /* Current raster line */ + unsigned char addr; /* Address of chargen and video ram */ + unsigned char strobe_x; /* Light pen, X position */ + unsigned char strobe_y; /* Light pen, Y position */ + unsigned char analog_x; /* Analog input X */ + unsigned char analog_y; /* Analog input Y */ + unsigned char voice1; /* Sound generator #1 */ + unsigned char voice2; /* Sound generator #2 */ + unsigned char voice3; /* Sound generator #3 */ + unsigned char noise; /* Noise generator */ + unsigned char volume_color; /* Bits 0..3: volume, 4..7: color */ + unsigned char bg_border_color;/* Background and border color */ }; -#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 */ + + +/* End of _vic.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* cbm_filetype.h */ +/* */ +/* Definitions for CBM file types */ +/* */ +/* */ +/* */ +/* (C) 2012, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _CBM_FILETYPE_H +#define _CBM_FILETYPE_H + + + +/* Check for errors */ +#if !defined(__CBM__) +# error This module may be used only when compiling for CBM machines! +#endif + + + +/*****************************************************************************/ +/* Definitions */ +/*****************************************************************************/ + + + +/* CBM FILE TYPES. The definitions are used within standard headers, so we +** be careful with identifiers in the user name space. +** "Regular" files have a special bit set so it's easier to pick them out. +*/ +#define _CBM_T_REG 0x10U /* Bit set for regular files */ +#define _CBM_T_SEQ 0x10U +#define _CBM_T_PRG 0x11U +#define _CBM_T_USR 0x12U +#define _CBM_T_REL 0x13U +#define _CBM_T_VRP 0x14U /* Vorpal fast-loadable format */ +#define _CBM_T_DEL 0x00U +#define _CBM_T_CBM 0x01U /* 1581 sub-partition */ +#define _CBM_T_DIR 0x02U /* IDE64 and CMD sub-directory */ +#define _CBM_T_LNK 0x03U /* IDE64 soft-link */ +#define _CBM_T_OTHER 0x04U /* File-type not recognized */ +#define _CBM_T_HEADER 0x05U /* Disk header / title */ + +#if __CC65_STD__ == __CC65_STD_CC65__ +/* Allow for names without leading underscores */ +#define CBM_T_DEL _CBM_T_DEL +#define CBM_T_SEQ _CBM_T_SEQ +#define CBM_T_PRG _CBM_T_PRG +#define CBM_T_USR _CBM_T_USR +#define CBM_T_REL _CBM_T_REL +#define CBM_T_CBM _CBM_T_CBM +#define CBM_T_DIR _CBM_T_DIR +#define CBM_T_LNK _CBM_T_LNK +#define CBM_T_VRP _CBM_T_VRP +#define CBM_T_OTHER _CBM_T_OTHER +#define CBM_T_HEADER _CBM_T_HEADER +#endif + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +unsigned char __fastcall__ _cbm_filetype (unsigned char c); +/* Map the start character for a file type to one of the file types above. +** Note: 'd' will always mapped to CBM_T_DEL. The calling function has to +** look at the following character to determine if the file type is actually +** CBM_T_DIR. +** This is a function used by the implementation. There is usually no need +** to call it from user code. +*/ + + + +/* End of cbm_filetype.h */ +#endif + + +/*****************************************************************************/ +/* */ +/* dirent.h */ +/* */ +/* Directory entries for cc65 */ +/* */ +/* */ +/* */ +/* (C) 2005 Oliver Schmidt, */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _DIRENT_H +#define _DIRENT_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +typedef struct DIR DIR; + +#if defined(__APPLE2__) + +struct dirent { + char d_name[16]; + unsigned d_ino; + unsigned d_blocks; + unsigned long d_size; + unsigned char d_type; + struct { + unsigned day :5; + unsigned mon :4; + unsigned year :7; + } d_cdate; + struct { + unsigned char min; + unsigned char hour; + } d_ctime; + unsigned char d_access; + unsigned d_auxtype; + struct { + unsigned day :5; + unsigned mon :4; + unsigned year :7; + } d_mdate; + struct { + unsigned char min; + unsigned char hour; + } d_mtime; }; -#define 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 */ +#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 -/* End of atari.h */ +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +DIR* __fastcall__ opendir (const char* name); + +struct dirent* __fastcall__ readdir (DIR* dir); + +int __fastcall__ closedir (DIR* dir); + +long __fastcall__ telldir (DIR* dir); + +void __fastcall__ seekdir (DIR* dir, long offs); + +void __fastcall__ rewinddir (DIR* dir); + + + +/* End of dirent.h */ +#endif +/*****************************************************************************/ +/* */ +/* vic20.h */ +/* */ +/* 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 /*****************************************************************************/ /* */ @@ -3646,6 +3243,567 @@ struct __iocb { #pragma charmap (0xFE, 0xFE) #pragma charmap (0xFF, 0xFF) +/*****************************************************************************/ +/* */ +/* iso646.h */ +/* */ +/* Alternative spellings */ +/* */ +/* */ +/* */ +/* (C) 1998-2000 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ISO646_H +#define _ISO646_H + + + +/* Operator tokens */ +#define and && +#define and_eq &= +#define bitand & +#define bitor | +#define compl ~ +#define not ! +#define not_eq != +#define or || +#define or_eq |= +#define xor ^ +#define xor_eq ^= + + + +/* End of iso646.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* locale.h */ +/* */ +/* Localization */ +/* */ +/* */ +/* */ +/* (C) 1998-2005 Ullrich von Bassewitz */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* stddef.h */ +/* */ +/* Common definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-2009, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _STDDEF_H +#define _STDDEF_H + + + +/* Standard data types */ +#ifndef _HAVE_ptrdiff_t +#define _HAVE_ptrdiff_t +typedef int ptrdiff_t; +#endif +#ifndef _HAVE_wchar_t +#define _HAVE_wchar_t +typedef char wchar_t; +#endif +#ifndef _HAVE_size_t +#define _HAVE_size_t +typedef unsigned size_t; +#endif + +/* NULL pointer */ +#ifndef _HAVE_NULL +#define NULL 0 +#define _HAVE_NULL +#endif + +/* offsetof macro */ +#define offsetof(type, member) (size_t) (&((type*) 0)->member) + + + +/* End of stddef.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* em.h */ +/* */ +/* API for extended memory access */ +/* */ +/* */ +/* */ +/* (C) 2002-2012, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _EM_H +#define _EM_H + + + +/*****************************************************************************/ +/* Definitions */ +/*****************************************************************************/ + + + +/* Size of an extended memory page */ +#define EM_PAGE_SIZE 256 + +/* Error codes */ +#define EM_ERR_OK 0 /* No error */ +#define EM_ERR_NO_DRIVER 1 /* No driver available */ +#define EM_ERR_CANNOT_LOAD 2 /* Error loading driver */ +#define EM_ERR_INV_DRIVER 3 /* Invalid driver */ +#define EM_ERR_NO_DEVICE 4 /* Device (hardware) not found */ +#define EM_ERR_INSTALLED 5 /* A driver is already installed */ + +/* Parameters for the em_copy_... functions. NOTE: The first seven bytes +** have the same order and alignment as needed for the Commodore REU, so +** don't change the order without changing the assembler file that defines +** the struct offsets and the code in the REU driver. +*/ +struct em_copy { + void* buf; /* Memory buffer to copy from or to */ + unsigned char offs; /* Offset into page */ + unsigned page; /* Starting page to copy from or to */ + unsigned count; /* Number of bytes to copy */ + unsigned char unused; /* Make the size 8 bytes */ +}; + + + +/*****************************************************************************/ +/* Functions */ +/*****************************************************************************/ + + + +unsigned char __fastcall__ em_load_driver (const char* driver); +/* Load and install an extended memory driver. Return an error code. */ + +unsigned char em_unload (void); +/* Uninstall, then unload the currently loaded driver. */ + +unsigned char __fastcall__ em_install (void* driver); +/* Install an already loaded driver. Return an error code. */ + +unsigned char em_uninstall (void); +/* Uninstall the currently loaded driver and return an error code. +** Note: This call does not free allocated memory. +*/ + +unsigned em_pagecount (void); +/* Return the total number of 256 byte pages available in extended memory. */ + +void* __fastcall__ em_map (unsigned page); +/* Unmap the current page from memory and map a new one. The function returns +** a pointer to the location of the page in memory. Note: Without calling +** em_commit, the old contents of the memory window may be lost! +*/ + +void* __fastcall__ em_use (unsigned page); +/* Tell the driver that the memory window is associated with a given page. +** This call is very similar to em_map. The difference is that the driver +** does not necessarily transfer the current contents of the extended +** memory into the returned window. If you're going to just write to the +** window and the current contents of the window are invalid or no longer +** use, this call may perform better than em_map. +*/ + +void em_commit (void); +/* Commit changes in the memory window to extended storage. If the contents +** of the memory window have been changed, these changes may be lost if +** em_map, em_copyfrom or em_copyto are called without calling em_commit +** first. Note: Not calling em_commit does not mean that the changes are +** discarded, it does just mean that some drivers will discard the changes. +*/ + +void __fastcall__ em_copyfrom (const struct em_copy* copy_data); +/* Copy from extended into linear memory. Note: This may invalidate the +** currently mapped page. +*/ + +void __fastcall__ em_copyto (const struct em_copy* copy_data); +/* Copy from linear into extended memory. Note: This may invalidate the +** currently mapped page. +*/ + + + +/* End of em.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* cc65.h */ +/* */ +/* Target independent but cc65 specific utility functions */ +/* */ +/* */ +/* */ +/* (C) 2009-2011, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _CC65_H +#define _CC65_H + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +long __fastcall__ idiv32by16r16 (long rhs, int lhs); +/* Divide a 32 bit signed value by a 16 bit signed value yielding a 16 +** bit result and a 16 bit remainder. The former is returned in the lower 16 +** bit of the result, the latter in the upper. If you don't need the +** remainder, just assign (or cast) to an int. +*/ + +unsigned long __fastcall__ udiv32by16r16 (unsigned long rhs, unsigned lhs); +/* Divide a 32 bit unsigned value by a 16 bit unsigned value yielding a 16 +** bit result and a 16 bit remainder. The former is returned in the lower 16 +** bit of the result, the latter in the upper. If you don't need the +** remainder, just assign (or cast) to an unsigned. +*/ + +int __fastcall__ imul8x8r16 (signed char lhs, signed char rhs); +/* Multiplicate two signed 8 bit to yield an signed 16 bit result */ + +long __fastcall__ imul16x16r32 (int lhs, int rhs); +/* Multiplicate two signed 16 bit to yield a signed 32 bit result */ + +unsigned __fastcall__ umul8x8r16 (unsigned char lhs, unsigned char rhs); +/* Multiplicate two unsigned 8 bit to yield an unsigned 16 bit result */ + +unsigned long __fastcall__ umul16x8r32 (unsigned lhs, unsigned char rhs); +/* Multiplicate an unsigned 16 bit by an unsigned 8 bit number yielding a 24 +** bit unsigned result that is extended to 32 bits for easier handling from C. +*/ + +unsigned long __fastcall__ umul16x16r32 (unsigned lhs, unsigned rhs); +/* Multiplicate two unsigned 16 bit to yield an unsigned 32 bit result */ + +unsigned int __fastcall__ mul20 (unsigned char value); +/* Multiply an 8 bit unsigned value by 20 and return the 16 bit unsigned +** result +*/ + +unsigned int __fastcall__ mul40 (unsigned char value); +/* Multiply an 8 bit unsigned value by 40 and return the 16 bit unsigned +** result +*/ + +int __fastcall__ _sin (unsigned x); +/* Return the sine of the argument, which must be in range 0..360. The result +** is in 8.8 fixed point format, which means that 1.0 = $100 and -1.0 = $FF00. +*/ + +int __fastcall__ _cos (unsigned x); +/* Return the cosine of the argument, which must be in range 0..360. The result +** is in 8.8 fixed point format, which means that 1.0 = $100 and -1.0 = $FF00. +*/ + +unsigned char doesclrscrafterexit (void); +/* Indicates whether the screen automatically be cleared after program +** termination. +*/ + + + +/* End of cc65.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* stdbool.h */ +/* */ +/* C99 Boolean definitions */ +/* */ +/* */ +/* */ +/* (C) 2002 Greg King */ +/* */ +/* */ +/* This software is provided "as-is," without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment, in the product's documentation, */ +/* would be appreciated, but is not required. */ +/* 2. Alterred source versions must be marked plainly as such, */ +/* and must not be misrepresented as being the original software. */ +/* 3. This notice may not be removed or alterred */ +/* from any source distribution. */ +/*****************************************************************************/ + + + +#ifndef _STDBOOL_H +#define _STDBOOL_H + + + +#define bool _Bool +typedef unsigned char _Bool; + +/* Standard test-results. */ +#define false 0 +#define true 1 + +/* All three names are macroes. */ +#define __bool_true_false_are_defined 1 + + + +/* End of stdbool.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* osic1p.h */ +/* */ +/* Challenger 1P system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2015 Stephan Muehlstrasser */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +#ifndef _OSIC1P_H +#define _OSIC1P_H + +/* Check for errors */ +#if !defined(__OSIC1P__) +# error "This module may only be used when compiling for the Challenger 1P!" +#endif + +/* The following #defines will cause the matching functions calls in conio.h +** to be overlaid by macros with the same names, saving the function call +** overhead. +*/ +#define _textcolor(color) COLOR_WHITE +#define _bgcolor(color) COLOR_BLACK +#define _bordercolor(color) COLOR_BLACK + +#endif /*****************************************************************************/ /* */ /* stdlib.h */ @@ -3696,6 +3854,18 @@ typedef unsigned size_t; #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 +#if __CC65_STD__ == __CC65_STD_CC65__ + +/* Those non-standard cc65 exit constants definitions are in addition +** to the EXIT_SUCCESS and EXIT_FAILURE constants, which should not be +** redefined +*/ +#define EXIT_ASSERT 2 +#define EXIT_ABORT 3 + +#endif + + /* Return type of the div function */ typedef struct { int rem; @@ -3784,11 +3954,612 @@ int __fastcall__ putenv (char* s); /*****************************************************************************/ /* */ -/* pen.h */ +/* atari.h */ /* */ -/* Lightpen API */ +/* Atari system specific definitions */ /* */ /* */ +/* */ +/* (C) 2000-2019 Mark Keates */ +/* Freddy Offenga */ +/* Christian Groessler */ +/* Bill Kendrick */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ATARI_H +#define _ATARI_H + + +/* Check for errors */ +#if !defined(__ATARI__) +# error This module may only be used when compiling for the Atari! +#endif + + +/*****************************************************************************/ +/* Character codes */ +/*****************************************************************************/ + +#define CH_DELCHR 0xFE /* delete char under the cursor */ +#define CH_ENTER 0x9B +#define CH_ESC 0x1B +#define CH_CURS_UP 28 +#define CH_CURS_DOWN 29 +#define CH_CURS_LEFT 30 +#define CH_CURS_RIGHT 31 + +#define CH_TAB 0x7F /* tabulator */ +#define CH_EOL 0x9B /* end-of-line marker */ +#define CH_CLR 0x7D /* clear screen */ +#define CH_BEL 0xFD /* bell */ +#define CH_DEL 0x7E /* back space (delete char to the left) */ +#define CH_RUBOUT 0x7E /* back space (old, deprecated) */ +#define CH_DELLINE 0x9C /* delete line */ +#define CH_INSLINE 0x9D /* insert line */ + +/* These are defined to be Atari + NumberKey */ +#define CH_F1 177 +#define CH_F2 178 +#define CH_F3 179 +#define CH_F4 180 +#define CH_F5 181 +#define CH_F6 182 +#define CH_F7 183 +#define CH_F8 184 +#define CH_F9 185 +#define CH_F10 176 + +#define CH_ULCORNER 0x11 +#define CH_URCORNER 0x05 +#define CH_LLCORNER 0x1A +#define CH_LRCORNER 0x03 +#define CH_TTEE 0x17 +#define CH_BTEE 0x18 +#define CH_LTEE 0x01 +#define CH_RTEE 0x04 +#define CH_CROSS 0x13 +#define CH_HLINE 0x12 +#define CH_VLINE 0x7C + + +/*****************************************************************************/ +/* Masks for joy_read */ +/*****************************************************************************/ + +#define JOY_UP_MASK 0x01 +#define JOY_DOWN_MASK 0x02 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x10 + +#define JOY_FIRE_MASK JOY_BTN_1_MASK +#define JOY_FIRE(v) ((v) & JOY_FIRE_MASK) + + +/*****************************************************************************/ +/* Keyboard values returned by kbcode / CH */ +/*****************************************************************************/ + +#define KEY_NONE ((unsigned char) 0xFF) + +#define KEY_0 ((unsigned char) 0x32) +#define KEY_1 ((unsigned char) 0x1F) +#define KEY_2 ((unsigned char) 0x1E) +#define KEY_3 ((unsigned char) 0x1A) +#define KEY_4 ((unsigned char) 0x18) +#define KEY_5 ((unsigned char) 0x1D) +#define KEY_6 ((unsigned char) 0x1B) +#define KEY_7 ((unsigned char) 0x33) +#define KEY_8 ((unsigned char) 0x35) +#define KEY_9 ((unsigned char) 0x30) + +#define KEY_A ((unsigned char) 0x3F) +#define KEY_B ((unsigned char) 0x15) +#define KEY_C ((unsigned char) 0x12) +#define KEY_D ((unsigned char) 0x3A) +#define KEY_E ((unsigned char) 0x2A) +#define KEY_F ((unsigned char) 0x38) +#define KEY_G ((unsigned char) 0x3D) +#define KEY_H ((unsigned char) 0x39) +#define KEY_I ((unsigned char) 0x0D) +#define KEY_J ((unsigned char) 0x01) +#define KEY_K ((unsigned char) 0x05) +#define KEY_L ((unsigned char) 0x00) +#define KEY_M ((unsigned char) 0x25) +#define KEY_N ((unsigned char) 0x23) +#define KEY_O ((unsigned char) 0x08) +#define KEY_P ((unsigned char) 0x0A) +#define KEY_Q ((unsigned char) 0x2F) +#define KEY_R ((unsigned char) 0x28) +#define KEY_S ((unsigned char) 0x3E) +#define KEY_T ((unsigned char) 0x2D) +#define KEY_U ((unsigned char) 0x0B) +#define KEY_V ((unsigned char) 0x10) +#define KEY_W ((unsigned char) 0x2E) +#define KEY_X ((unsigned char) 0x16) +#define KEY_Y ((unsigned char) 0x2B) +#define KEY_Z ((unsigned char) 0x17) + +#define KEY_COMMA ((unsigned char) 0x20) +#define KEY_PERIOD ((unsigned char) 0x22) +#define KEY_SLASH ((unsigned char) 0x26) +#define KEY_SEMICOLON ((unsigned char) 0x02) +#define KEY_PLUS ((unsigned char) 0x06) +#define KEY_ASTERISK ((unsigned char) 0x07) +#define KEY_DASH ((unsigned char) 0x0E) +#define KEY_EQUALS ((unsigned char) 0x0F) +#define KEY_LESSTHAN ((unsigned char) 0x36) +#define KEY_GREATERTHAN ((unsigned char) 0x37) + +#define KEY_ESC ((unsigned char) 0x1C) +#define KEY_TAB ((unsigned char) 0x2C) +#define KEY_SPACE ((unsigned char) 0x21) +#define KEY_RETURN ((unsigned char) 0x0C) +#define KEY_DELETE ((unsigned char) 0x34) +#define KEY_CAPS ((unsigned char) 0x3C) +#define KEY_INVERSE ((unsigned char) 0x27) +#define KEY_HELP ((unsigned char) 0x11) + +/* Function keys only exist on the 1200XL model. */ +#define KEY_F1 ((unsigned char) 0x03) +#define KEY_F2 ((unsigned char) 0x04) +#define KEY_F3 ((unsigned char) 0x13) +#define KEY_F4 ((unsigned char) 0x14) + +/* N.B. Cannot read Ctrl key alone */ +#define KEY_CTRL ((unsigned char) 0x80) + +/* N.B. Cannot read Shift key alone via KBCODE; +** instead, check "Shfit key press" bit of SKSTAT register. +** Also, no way to tell left Shift from right Shift. +*/ +#define KEY_SHIFT ((unsigned char) 0x40) + + +/* Composed keys +** (Other combinations are possible, including Shift+Ctrl+key, +** though not all such combinations are available.) +*/ + +#define KEY_EXCLAMATIONMARK (KEY_1 | KEY_SHIFT) +#define KEY_QUOTE (KEY_2 | KEY_SHIFT) +#define KEY_HASH (KEY_3 | KEY_SHIFT) +#define KEY_DOLLAR (KEY_4 | KEY_SHIFT) +#define KEY_PERCENT (KEY_5 | KEY_SHIFT) +#define KEY_AMPERSAND (KEY_6 | KEY_SHIFT) +#define KEY_APOSTROPHE (KEY_7 | KEY_SHIFT) +#define KEY_AT (KEY_8 | KEY_SHIFT) +#define KEY_OPENINGPARAN (KEY_9 | KEY_SHIFT) +#define KEY_CLOSINGPARAN (KEY_0 | KEY_SHIFT) +#define KEY_UNDERLINE (KEY_DASH | KEY_SHIFT) +#define KEY_BAR (KEY_EQUALS | KEY_SHIFT) +#define KEY_COLON (KEY_SEMICOLON | KEY_SHIFT) +#define KEY_BACKSLASH (KEY_PLUS | KEY_SHIFT) +#define KEY_CIRCUMFLEX (KEY_ASTERISK | KEY_SHIFT) +#define KEY_OPENINGBRACKET (KEY_COMMA | KEY_SHIFT) +#define KEY_CLOSINGBRACKET (KEY_PERIOD | KEY_SHIFT) +#define KEY_QUESTIONMARK (KEY_SLASH | KEY_SHIFT) +#define KEY_CLEAR (KEY_LESSTHAN | KEY_SHIFT) +#define KEY_INSERT (KEY_GREATERTHAN | KEY_SHIFT) + +#define KEY_UP (KEY_UNDERLINE | KEY_CTRL) +#define KEY_DOWN (KEY_EQUALS | KEY_CTRL) +#define KEY_LEFT (KEY_PLUS | KEY_CTRL) +#define KEY_RIGHT (KEY_ASTERISK | KEY_CTRL) + + +/*****************************************************************************/ +/* Color register functions */ +/*****************************************************************************/ + +extern void __fastcall__ _setcolor (unsigned char color_reg, unsigned char hue, unsigned char 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 + + +/*****************************************************************************/ +/* get_ostype return value defines (for explanation, see ostype.s) */ +/*****************************************************************************/ + +/* masks */ +#define AT_OS_TYPE_MAIN 7 +#define AT_OS_TYPE_MINOR (7 << 3) +/* AT_OS_TYPE_MAIN values */ +#define AT_OS_UNKNOWN 0 +#define AT_OS_400800 1 +#define AT_OS_1200XL 2 +#define AT_OS_XLXE 3 +/* AS_OS_TYPE_MINOR values */ +/* for 400/800 remember this are the ROM versions */ +/* to check whether the hw is PAL or NTSC, use get_tv() */ +#define AT_OS_400800PAL_A 1 +#define AT_OS_400800PAL_B 2 +#define AT_OS_400800NTSC_A 1 +#define AT_OS_400800NTSC_B 2 +#define AT_OS_1200_10 1 +#define AT_OS_1200_11 2 +#define AT_OS_XLXE_1 1 +#define AT_OS_XLXE_2 2 +#define AT_OS_XLXE_3 3 +#define AT_OS_XLXE_4 4 + + +/*****************************************************************************/ +/* get_tv return values */ +/*****************************************************************************/ + +#define AT_NTSC 0 +#define AT_PAL 1 + + +/*****************************************************************************/ +/* valid _dos_type values */ +/*****************************************************************************/ + +#define SPARTADOS 0 +#define REALDOS 1 +#define BWDOS 2 +#define OSADOS 3 +#define XDOS 4 +#define ATARIDOS 5 +#define MYDOS 6 +#define NODOS 255 + + +/*****************************************************************************/ +/* Define hardware and where they're mapped in memory */ +/*****************************************************************************/ + +#include <_atarios.h> +#define OS (*(struct __os*)0x0000) +#define BASIC (*(struct __basic*)0x0080) + +#include <_gtia.h> +#define GTIA_READ (*(struct __gtia_read*)0xD000) +#define GTIA_WRITE (*(struct __gtia_write*)0xD000) + +#include <_pbi.h> + +#include <_pokey.h> +#define POKEY_READ (*(struct __pokey_read*)0xD200) +#define POKEY_WRITE (*(struct __pokey_write*)0xD200) + +#include <_pia.h> +#define PIA (*(struct __pia*)0xD300) + +#include <_antic.h> +#define ANTIC (*(struct __antic*)0xD400) + + +/*****************************************************************************/ +/* conio and TGI color defines */ +/*****************************************************************************/ + +/* Note that the conio color implementation is monochrome +** (textcolor just sets text brightness low or high, depending on background +** color) +** These values can be used with bordercolor(), bgcolor(), and _setcolor_low() +*/ +#define COLOR_BLACK GTIA_COLOR_BLACK +#define COLOR_WHITE GTIA_COLOR_WHITE +#define COLOR_RED GTIA_COLOR_RED +#define COLOR_CYAN GTIA_COLOR_CYAN +#define COLOR_VIOLET GTIA_COLOR_VIOLET +#define COLOR_GREEN GTIA_COLOR_GREEN +#define COLOR_BLUE GTIA_COLOR_BLUE +#define COLOR_YELLOW GTIA_COLOR_YELLOW +#define COLOR_ORANGE GTIA_COLOR_ORANGE +#define COLOR_BROWN GTIA_COLOR_BROWN +#define COLOR_LIGHTRED GTIA_COLOR_LIGHTRED +#define COLOR_GRAY1 GTIA_COLOR_GRAY1 +#define COLOR_GRAY2 GTIA_COLOR_GRAY2 +#define COLOR_LIGHTGREEN GTIA_COLOR_LIGHTGREEN +#define COLOR_LIGHTBLUE GTIA_COLOR_LIGHTBLUE +#define COLOR_GRAY3 GTIA_COLOR_GRAY3 + +/* TGI color defines */ +#define TGI_COLOR_BLACK COLOR_BLACK +#define TGI_COLOR_WHITE COLOR_WHITE +#define TGI_COLOR_RED COLOR_RED +#define TGI_COLOR_CYAN COLOR_CYAN +#define TGI_COLOR_VIOLET COLOR_VIOLET +#define TGI_COLOR_GREEN COLOR_GREEN +#define TGI_COLOR_BLUE COLOR_BLUE +#define TGI_COLOR_YELLOW COLOR_YELLOW +#define TGI_COLOR_ORANGE COLOR_ORANGE +#define TGI_COLOR_BROWN COLOR_BROWN +#define TGI_COLOR_LIGHTRED COLOR_LIGHTRED +#define TGI_COLOR_GRAY1 COLOR_GRAY1 +#define TGI_COLOR_GRAY2 COLOR_GRAY2 +#define TGI_COLOR_LIGHTGREEN COLOR_LIGHTGREEN +#define TGI_COLOR_LIGHTBLUE COLOR_LIGHTBLUE +#define TGI_COLOR_GRAY3 COLOR_GRAY3 + + +/*****************************************************************************/ +/* PIA PORTA and PORTB register bits */ +/*****************************************************************************/ + +/* See also: "JOY_xxx_MASK" in "atari.h" */ + +/* Paddle 0-3 triggers (per PORTA bits) */ +#define PORTA_PTRIG3 0x80 +#define PORTA_PTRIG2 0x40 +#define PORTA_PTRIG1 0x08 +#define PORTA_PTRIG0 0x04 + + +/* On the Atari 400/800, PORTB is the same as PORTA, but for controller ports 3 & 4. */ + +/* Paddle 4-7 triggers (per PORTB bits); only 400/800 had four controller ports */ +#define PORTB_PTRIG7 0x80 +#define PORTB_PTRIG6 0x40 +#define PORTB_PTRIG5 0x08 +#define PORTB_PTRIG4 0x04 + + +/* On the XL series of computers, PORTB has been changed to a memory and +** LED control (1200XL model only) register (read/write): +*/ + +/* If set, the built-in OS is enabled, and occupies the address range $C000-$FFFF +** (except that the area $D000-$D7FF will only access the hardware registers.) +** If clear, RAM is enabled in this area (again, save for the hole.) +*/ +#define PORTB_OSROM 0x01 + +/* If set, RAM is enabled for the address range $A000-$BFFF. +** If clear, the built-in BASIC ROM is enabled at this address. +** And if there is a cartridge installed in the computer, it makes no difference. +*/ +#define PORTB_BASICROM 0x02 + +/* If set, the corresponding LED is turned off. If clear, the LED will be on. +** (1200XL only) +*/ +#define PORTB_LED1 0x04 +#define PORTB_LED2 0x08 + + +/* On the XE series of computers, PORTB is a bank-selected memory control register (read/write): */ + +/* These bits determine which memory bank is visible to the CPU and/or ANTIC chip +** when their Bank Switch bit is set. There are four possible banks of 16KB each. +*/ +#define PORTB_BANKSELECT1 0x00 +#define PORTB_BANKSELECT2 0x04 +#define PORTB_BANKSELECT3 0x08 +#define PORTB_BANKSELECT4 0x0C + +/* If set, the CPU and/or ANTIC chip will access bank-switched memory mapped to the +** address range $4000-$7FFF. +** If clear, the CPU and/or ANTIC will see normal memory in this region. +*/ +#define PORTB_BANKSWITCH_CPU 0x10 +#define PORTB_BANKSWITCH_ANTIC 0x20 + +/* If set, RAM is enabled for the address range $5000-$57FF. +** If clear, the self-test ROM (physically located at $D000-$D7FF, under the hardware registers) +** is remapped to this memory area. +*/ +#define PORTB_SELFTEST 0x80 + + +/*****************************************************************************/ +/* PACTL and PBCTL register bits */ +/*****************************************************************************/ + +/* (W) Peripheral PA1/PB1 interrupt (IRQ) ("peripheral proceed line available") enable. +** One equals enable. Set by the OS but available to the user; reset on powerup. +** (PxCTL_IRQ_STATUS (R) bit will get set upon interrupt occurance) +*/ +#define PxCTL_IRQ_ENABLE 0x01 /* bit 0 */ + +/* Note: Bit 1 is always set to */ + +/* (W) Controls PORTA/PORTB addressing +** 1 = PORTA/PORTB register; read/write to controller port +** 0 = direction control register; write to direction controls +** (allows setting data flow; write 0s & 1s to PORTA/PORTB bits +** to set which port's pins are read (input), or write (output), +** respectively) +*/ +#define PxCTL_ADDRESSING 0x04 /* bit 2 */ + +/* (W) Peripheral motor control line; Turn the cassette on or off +** (PACTL-specific register bit) +** 0 = on +** 1 = off +*/ +#define PACTL_MOTOR_CONTROL 0x08 /* bit 3 */ + +/* Peripheral command identification (serial bus command line) +** (PBCTL-specific register bit) +*/ +#define PBCTL_PERIPH_CMD_IDENT 0x08 /* bit 3 */ + +/* Note: Bits 4 & 5 are always set to 1 */ + +/* Note: Bit 6 is always set to 0 */ + +/* (R) Peripheral interrupt (IRQ) status bit. +** Set by Peripherals (PORTA / PORTB). Reset by reading from PORTA / PORTB. +** PACTL's is interrupt status of PROCEED +** PBCTL's is interrupt status of SIO +*/ +#define PxCTL_IRQ_STATUS 0x80 + + +/* The following #define will cause the matching function calls in conio.h +** to be overlaid by macros with the same names, saving the function call +** overhead. +*/ +#define _textcolor(color) COLOR_WHITE + +/* End of atari.h */ +#endif +/* +** _heap.h +** +** Ullrich von Bassewitz, 1998-06-03, 2004-12-19 +** +*/ + + + +#ifndef __HEAP_H +#define __HEAP_H + + + +/* Structure that preceeds a user block in most cases. +** The aligned_malloc function may generate blocks where the start pointer +** and size are splitted to handle a memory hole that is needed for +** alignment. +*/ +struct usedblock { + unsigned size; + struct usedblock* start; +}; + +/* Space needed for administering used blocks */ +#define HEAP_ADMIN_SPACE sizeof (struct usedblock) + +/* The data type used to implement the free list. +** Beware: Field order is significant! +*/ +struct freeblock { + unsigned size; + struct freeblock* next; + struct freeblock* prev; +}; + + + +/* Variables that describe the heap */ +extern unsigned* _heaporg; /* Bottom of heap */ +extern unsigned* _heapptr; /* Current top */ +extern unsigned* _heapend; /* Upper limit */ +extern struct freeblock* _heapfirst; /* First free block in list */ +extern struct freeblock* _heaplast; /* Last free block in list */ + + + +/* End of _heap.h */ + +#endif + + + +/*****************************************************************************/ +/* */ +/* cbm_petscii_charmap.h */ +/* */ +/* CBM system standard string mapping (ISO-8859-1 -> PetSCII) */ +/* */ +/* */ +/* 2019-03-10, Greg King */ +/* */ /* This software is provided "as-is", without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ @@ -3798,10 +4569,312 @@ int __fastcall__ putenv (char* s); /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ -/* claim that you wrote the original software. If you use this software */ +/* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated, but is not required. */ -/* 2. Altered source versions must be marked plainly as such; and, must not */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice must not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +/* No include guard here! Multiple use in one file might be intentional. */ + +#pragma warn (remap-zero, push, off) + +#pragma charmap (0x00, 0x00) +#pragma charmap (0x01, 0x01) +#pragma charmap (0x02, 0x02) +#pragma charmap (0x03, 0x03) +#pragma charmap (0x04, 0x04) +#pragma charmap (0x05, 0x05) +#pragma charmap (0x06, 0x06) +#pragma charmap (0x07, 0x07) +#pragma charmap (0x08, 0x14) +#pragma charmap (0x09, 0x09) +#pragma charmap (0x0A, 0x0D) +#pragma charmap (0x0B, 0x11) +#pragma charmap (0x0C, 0x93) +#pragma charmap (0x0D, 0x0A) +#pragma charmap (0x0E, 0x0E) +#pragma charmap (0x0F, 0x0F) +#pragma charmap (0x10, 0x10) +#pragma charmap (0x11, 0x0B) +#pragma charmap (0x12, 0x12) +#pragma charmap (0x13, 0x13) +#pragma charmap (0x14, 0x08) +#pragma charmap (0x15, 0x15) +#pragma charmap (0x16, 0x16) +#pragma charmap (0x17, 0x17) +#pragma charmap (0x18, 0x18) +#pragma charmap (0x19, 0x19) +#pragma charmap (0x1A, 0x1A) +#pragma charmap (0x1B, 0x1B) +#pragma charmap (0x1C, 0x1C) +#pragma charmap (0x1D, 0x1D) +#pragma charmap (0x1E, 0x1E) +#pragma charmap (0x1F, 0x1F) + +#pragma charmap (0x20, 0x20) +#pragma charmap (0x21, 0x21) +#pragma charmap (0x22, 0x22) +#pragma charmap (0x23, 0x23) +#pragma charmap (0x24, 0x24) +#pragma charmap (0x25, 0x25) +#pragma charmap (0x26, 0x26) +#pragma charmap (0x27, 0x27) +#pragma charmap (0x28, 0x28) +#pragma charmap (0x29, 0x29) +#pragma charmap (0x2A, 0x2A) +#pragma charmap (0x2B, 0x2B) +#pragma charmap (0x2C, 0x2C) +#pragma charmap (0x2D, 0x2D) +#pragma charmap (0x2E, 0x2E) +#pragma charmap (0x2F, 0x2F) +#pragma charmap (0x30, 0x30) +#pragma charmap (0x31, 0x31) +#pragma charmap (0x32, 0x32) +#pragma charmap (0x33, 0x33) +#pragma charmap (0x34, 0x34) +#pragma charmap (0x35, 0x35) +#pragma charmap (0x36, 0x36) +#pragma charmap (0x37, 0x37) +#pragma charmap (0x38, 0x38) +#pragma charmap (0x39, 0x39) +#pragma charmap (0x3A, 0x3A) +#pragma charmap (0x3B, 0x3B) +#pragma charmap (0x3C, 0x3C) +#pragma charmap (0x3D, 0x3D) +#pragma charmap (0x3E, 0x3E) +#pragma charmap (0x3F, 0x3F) + +#pragma charmap (0x40, 0x40) +#pragma charmap (0x41, 0xC1) +#pragma charmap (0x42, 0xC2) +#pragma charmap (0x43, 0xC3) +#pragma charmap (0x44, 0xC4) +#pragma charmap (0x45, 0xC5) +#pragma charmap (0x46, 0xC6) +#pragma charmap (0x47, 0xC7) +#pragma charmap (0x48, 0xC8) +#pragma charmap (0x49, 0xC9) +#pragma charmap (0x4A, 0xCA) +#pragma charmap (0x4B, 0xCB) +#pragma charmap (0x4C, 0xCC) +#pragma charmap (0x4D, 0xCD) +#pragma charmap (0x4E, 0xCE) +#pragma charmap (0x4F, 0xCF) +#pragma charmap (0x50, 0xD0) +#pragma charmap (0x51, 0xD1) +#pragma charmap (0x52, 0xD2) +#pragma charmap (0x53, 0xD3) +#pragma charmap (0x54, 0xD4) +#pragma charmap (0x55, 0xD5) +#pragma charmap (0x56, 0xD6) +#pragma charmap (0x57, 0xD7) +#pragma charmap (0x58, 0xD8) +#pragma charmap (0x59, 0xD9) +#pragma charmap (0x5A, 0xDA) +#pragma charmap (0x5B, 0x5B) +#pragma charmap (0x5C, 0xBF) +#pragma charmap (0x5D, 0x5D) +#pragma charmap (0x5E, 0x5E) +#pragma charmap (0x5F, 0xA4) + +#pragma charmap (0x60, 0xAD) +#pragma charmap (0x61, 0x41) +#pragma charmap (0x62, 0x42) +#pragma charmap (0x63, 0x43) +#pragma charmap (0x64, 0x44) +#pragma charmap (0x65, 0x45) +#pragma charmap (0x66, 0x46) +#pragma charmap (0x67, 0x47) +#pragma charmap (0x68, 0x48) +#pragma charmap (0x69, 0x49) +#pragma charmap (0x6A, 0x4A) +#pragma charmap (0x6B, 0x4B) +#pragma charmap (0x6C, 0x4C) +#pragma charmap (0x6D, 0x4D) +#pragma charmap (0x6E, 0x4E) +#pragma charmap (0x6F, 0x4F) +#pragma charmap (0x70, 0x50) +#pragma charmap (0x71, 0x51) +#pragma charmap (0x72, 0x52) +#pragma charmap (0x73, 0x53) +#pragma charmap (0x74, 0x54) +#pragma charmap (0x75, 0x55) +#pragma charmap (0x76, 0x56) +#pragma charmap (0x77, 0x57) +#pragma charmap (0x78, 0x58) +#pragma charmap (0x79, 0x59) +#pragma charmap (0x7A, 0x5A) +#pragma charmap (0x7B, 0xB3) +#pragma charmap (0x7C, 0xDD) +#pragma charmap (0x7D, 0xAB) +#pragma charmap (0x7E, 0xB1) +#pragma charmap (0x7F, 0xDF) + +#pragma charmap (0x80, 0x80) +#pragma charmap (0x81, 0x81) +#pragma charmap (0x82, 0x82) +#pragma charmap (0x83, 0x83) +#pragma charmap (0x84, 0x84) +#pragma charmap (0x85, 0x85) +#pragma charmap (0x86, 0x86) +#pragma charmap (0x87, 0x87) +#pragma charmap (0x88, 0x88) +#pragma charmap (0x89, 0x89) +#pragma charmap (0x8A, 0x8A) +#pragma charmap (0x8B, 0x8B) +#pragma charmap (0x8C, 0x8C) +#pragma charmap (0x8D, 0x8D) +#pragma charmap (0x8E, 0x8E) +#pragma charmap (0x8F, 0x8F) +#pragma charmap (0x90, 0x90) +#pragma charmap (0x91, 0x91) +#pragma charmap (0x92, 0x92) +#pragma charmap (0x93, 0x0C) +#pragma charmap (0x94, 0x94) +#pragma charmap (0x95, 0x95) +#pragma charmap (0x96, 0x96) +#pragma charmap (0x97, 0x97) +#pragma charmap (0x98, 0x98) +#pragma charmap (0x99, 0x99) +#pragma charmap (0x9A, 0x9A) +#pragma charmap (0x9B, 0x9B) +#pragma charmap (0x9C, 0x9C) +#pragma charmap (0x9D, 0x9D) +#pragma charmap (0x9E, 0x9E) +#pragma charmap (0x9F, 0x9F) + +#pragma charmap (0xA0, 0xA0) +#pragma charmap (0xA1, 0xA1) +#pragma charmap (0xA2, 0xA2) +#pragma charmap (0xA3, 0xA3) +#pragma charmap (0xA4, 0xA4) +#pragma charmap (0xA5, 0xA5) +#pragma charmap (0xA6, 0xA6) +#pragma charmap (0xA7, 0xA7) +#pragma charmap (0xA8, 0xA8) +#pragma charmap (0xA9, 0xA9) +#pragma charmap (0xAA, 0xAA) +#pragma charmap (0xAB, 0xAB) +#pragma charmap (0xAC, 0xAC) +#pragma charmap (0xAD, 0xAD) +#pragma charmap (0xAE, 0xAE) +#pragma charmap (0xAF, 0xAF) +#pragma charmap (0xB0, 0xB0) +#pragma charmap (0xB1, 0xB1) +#pragma charmap (0xB2, 0xB2) +#pragma charmap (0xB3, 0xB3) +#pragma charmap (0xB4, 0xB4) +#pragma charmap (0xB5, 0xB5) +#pragma charmap (0xB6, 0xB6) +#pragma charmap (0xB7, 0xB7) +#pragma charmap (0xB8, 0xB8) +#pragma charmap (0xB9, 0xB9) +#pragma charmap (0xBA, 0xBA) +#pragma charmap (0xBB, 0xBB) +#pragma charmap (0xBC, 0xBC) +#pragma charmap (0xBD, 0xBD) +#pragma charmap (0xBE, 0xBE) +#pragma charmap (0xBF, 0xBF) + +#pragma charmap (0xC0, 0x60) +#pragma charmap (0xC1, 0x61) +#pragma charmap (0xC2, 0x62) +#pragma charmap (0xC3, 0x63) +#pragma charmap (0xC4, 0x64) +#pragma charmap (0xC5, 0x65) +#pragma charmap (0xC6, 0x66) +#pragma charmap (0xC7, 0x67) +#pragma charmap (0xC8, 0x68) +#pragma charmap (0xC9, 0x69) +#pragma charmap (0xCA, 0x6A) +#pragma charmap (0xCB, 0x6B) +#pragma charmap (0xCC, 0x6C) +#pragma charmap (0xCD, 0x6D) +#pragma charmap (0xCE, 0x6E) +#pragma charmap (0xCF, 0x6F) +#pragma charmap (0xD0, 0x70) +#pragma charmap (0xD1, 0x71) +#pragma charmap (0xD2, 0x72) +#pragma charmap (0xD3, 0x73) +#pragma charmap (0xD4, 0x74) +#pragma charmap (0xD5, 0x75) +#pragma charmap (0xD6, 0x76) +#pragma charmap (0xD7, 0x77) +#pragma charmap (0xD8, 0x78) +#pragma charmap (0xD9, 0x79) +#pragma charmap (0xDA, 0x7A) +#pragma charmap (0xDB, 0x7B) +#pragma charmap (0xDC, 0x7C) +#pragma charmap (0xDD, 0x7D) +#pragma charmap (0xDE, 0x7E) +#pragma charmap (0xDF, 0x7F) + +#pragma charmap (0xE0, 0xE0) +#pragma charmap (0xE1, 0xE1) +#pragma charmap (0xE2, 0xE2) +#pragma charmap (0xE3, 0xE3) +#pragma charmap (0xE4, 0xE4) +#pragma charmap (0xE5, 0xE5) +#pragma charmap (0xE6, 0xE6) +#pragma charmap (0xE7, 0xE7) +#pragma charmap (0xE8, 0xE8) +#pragma charmap (0xE9, 0xE9) +#pragma charmap (0xEA, 0xEA) +#pragma charmap (0xEB, 0xEB) +#pragma charmap (0xEC, 0xEC) +#pragma charmap (0xED, 0xED) +#pragma charmap (0xEE, 0xEE) +#pragma charmap (0xEF, 0xEF) +#pragma charmap (0xF0, 0xF0) +#pragma charmap (0xF1, 0xF1) +#pragma charmap (0xF2, 0xF2) +#pragma charmap (0xF3, 0xF3) +#pragma charmap (0xF4, 0xF4) +#pragma charmap (0xF5, 0xF5) +#pragma charmap (0xF6, 0xF6) +#pragma charmap (0xF7, 0xF7) +#pragma charmap (0xF8, 0xF8) +#pragma charmap (0xF9, 0xF9) +#pragma charmap (0xFA, 0xFA) +#pragma charmap (0xFB, 0xFB) +#pragma charmap (0xFC, 0xFC) +#pragma charmap (0xFD, 0xFD) +#pragma charmap (0xFE, 0xFE) +#pragma charmap (0xFF, 0xFF) + +#pragma warn (remap-zero, pop) +/*****************************************************************************/ +/* */ +/* conio.h */ +/* */ +/* Direct console I/O */ +/* */ +/* */ +/* */ +/* (C) 1998-2007 Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ @@ -3810,23 +4883,29 @@ int __fastcall__ putenv (char* s); -#ifndef _PEN_H -#define _PEN_H - - - -/*****************************************************************************/ -/* Declarations */ -/*****************************************************************************/ - - - -/* A program optionally can set this pointer to a function that gives -** a calibration value to a driver. If this pointer isn't NULL, -** then a driver that wants a value can call that function. -** pen_adjuster must be set before the driver is installed. +/* +** This is the direct console interface for cc65. I do not like the function +** names very much, but the first version started as a rewrite of Borland's +** conio, and, even if the interface has changed, the names did not. +** +** The interface does direct screen I/O, so it is fast enough for most +** programs. I did not implement text windows, since many applications do +** not need them and should not pay for the additional overhead. It should +** be easy to add text windows on a higher level if needed, +** +** Most routines do not check the parameters. This may be unfortunate but is +** also related to speed. The coordinates are always 0/0 based. */ -extern void __fastcall__ (*pen_adjuster) (unsigned char *pValue); + + + +#ifndef _CONIO_H +#define _CONIO_H + + + +#include +#include @@ -3836,95 +4915,167 @@ extern void __fastcall__ (*pen_adjuster) (unsigned char *pValue); -void __fastcall__ pen_calibrate (unsigned char *XOffset); -/* Ask the user to help to calibrate a lightpen. Changes the screen! -** A pointer to this function can be put into pen_adjuster. +void clrscr (void); +/* Clear the whole screen and put the cursor into the top left corner */ + +unsigned char kbhit (void); +/* Return true if there's a key waiting, return false if not */ + +void __fastcall__ gotox (unsigned char x); +/* Set the cursor to the specified X position, leave the Y position untouched */ + +void __fastcall__ gotoy (unsigned char y); +/* Set the cursor to the specified Y position, leave the X position untouched */ + +void __fastcall__ gotoxy (unsigned char x, unsigned char y); +/* Set the cursor to the specified position */ + +unsigned char wherex (void); +/* Return the X position of the cursor */ + +unsigned char wherey (void); +/* Return the Y position of the cursor */ + +void __fastcall__ cputc (char c); +/* Output one character at the current cursor position */ + +void __fastcall__ cputcxy (unsigned char x, unsigned char y, char c); +/* Same as "gotoxy (x, y); cputc (c);" */ + +void __fastcall__ cputs (const char* s); +/* Output a NUL-terminated string at the current cursor position */ + +void __fastcall__ cputsxy (unsigned char x, unsigned char y, const char* s); +/* Same as "gotoxy (x, y); puts (s);" */ + +int cprintf (const char* format, ...); +/* Like printf(), but uses direct screen output */ + +int __fastcall__ vcprintf (const char* format, va_list ap); +/* Like vprintf(), but uses direct screen output */ + +char cgetc (void); +/* Return a character from the keyboard. If there is no character available, +** the function waits until the user does press a key. If cursor is set to +** 1 (see below), a blinking cursor is displayed while waiting. */ -void __fastcall__ pen_adjust (const char *filename); -/* Get a lightpen calibration value from a file if it exists. Otherwise, call -** pen_calibrate() to create a value; then, write it into a file, so that it -** will be available at the next time that the lightpen is used. -** Might change the screen. -** pen_adjust() is optional; if you want to use its feature, -** then it must be called before a driver is installed. -** Note: This function merely saves the file-name pointer, and sets -** the pen_adjuster pointer. The file will be read only when a driver -** is installed, and only if that driver wants to be calibrated. +int cscanf (const char* format, ...); +/* Like scanf(), but uses direct keyboard input */ + +int __fastcall__ vcscanf (const char* format, va_list ap); +/* Like vscanf(), but uses direct keyboard input */ + +char cpeekc (void); +/* Return the character from the current cursor position */ + +unsigned char cpeekcolor (void); +/* Return the color from the current cursor position */ + +unsigned char cpeekrevers (void); +/* Return the reverse attribute from the current cursor position. +** If the character is reversed, then return 1; return 0 otherwise. */ +void __fastcall__ cpeeks (char* s, unsigned int length); +/* Return a string of the characters that start at the current cursor position. +** Put the string into the buffer to which "s" points. The string will have +** "length" characters, then will be '\0'-terminated. +*/ + +unsigned char __fastcall__ cursor (unsigned char onoff); +/* If onoff is 1, a cursor is displayed when waiting for keyboard input. If +** onoff is 0, the cursor is hidden when waiting for keyboard input. The +** function returns the old cursor setting. +*/ + +unsigned char __fastcall__ revers (unsigned char onoff); +/* Enable/disable reverse character display. This may not be supported by +** the output device. Return the old setting. +*/ + +unsigned char __fastcall__ textcolor (unsigned char color); +/* Set the color for text output. The old color setting is returned. */ + +unsigned char __fastcall__ bgcolor (unsigned char color); +/* Set the color for the background. The old color setting is returned. */ + +unsigned char __fastcall__ bordercolor (unsigned char color); +/* Set the color for the border. The old color setting is returned. */ + +void __fastcall__ chline (unsigned char length); +/* Output a horizontal line with the given length starting at the current +** cursor position. +*/ + +void __fastcall__ chlinexy (unsigned char x, unsigned char y, unsigned char length); +/* Same as "gotoxy (x, y); chline (length);" */ + +void __fastcall__ cvline (unsigned char length); +/* Output a vertical line with the given length at the current cursor +** position. +*/ + +void __fastcall__ cvlinexy (unsigned char x, unsigned char y, unsigned char length); +/* Same as "gotoxy (x, y); cvline (length);" */ + +void __fastcall__ cclear (unsigned char length); +/* Clear part of a line (write length spaces). */ + +void __fastcall__ cclearxy (unsigned char x, unsigned char y, unsigned char length); +/* Same as "gotoxy (x, y); cclear (length);" */ + +void __fastcall__ screensize (unsigned char* x, unsigned char* y); +/* Return the current screen size. */ + +void __fastcall__ cputhex8 (unsigned char val); +void __fastcall__ cputhex16 (unsigned val); +/* These shouldn't be here... */ -/* End of pen.h */ + +/*****************************************************************************/ +/* Macros */ +/*****************************************************************************/ + + + +/* On some platforms, functions are not available or are dummys. To suppress +** the call to these functions completely, the platform header files may +** define macros for these functions that start with an underline. If such a +** macro exists, a new macro is defined here, that expands to the one with the +** underline. The reason for this two stepped approach is that it is sometimes +** necessary to take the address of the function, which is not possible when +** using a macro. Since the function prototype is still present, #undefining +** the macro will give access to the actual function. +*/ + +#ifdef _textcolor +# define textcolor(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 -/*****************************************************************************/ -/* */ -/* stdbool.h */ -/* */ -/* C99 Boolean definitions */ -/* */ -/* */ -/* */ -/* (C) 2002 Greg King */ -/* */ -/* */ -/* This software is provided "as-is," without any expressed or implied */ -/* warranty. In no event will the authors be held liable for any damages */ -/* arising from the use of this software. */ -/* */ -/* Permission is granted to anyone to use this software for any purpose, */ -/* including commercial applications, and to alter and redistribute it */ -/* freely, subject to the following restrictions: */ -/* */ -/* 1. The origin of this software must not be misrepresented; you must not */ -/* claim that you wrote the original software. If you use this software */ -/* in a product, an acknowledgment, in the product's documentation, */ -/* would be appreciated, but is not required. */ -/* 2. Alterred source versions must be marked plainly as such, */ -/* and must not be misrepresented as being the original software. */ -/* 3. This notice may not be removed or alterred */ -/* from any source distribution. */ -/*****************************************************************************/ - - - -#ifndef _STDBOOL_H -#define _STDBOOL_H - - - -#define bool _Bool -typedef unsigned char _Bool; - -/* Standard test-results. */ -#define false 0 -#define true 1 - -/* All three names are macroes. */ -#define __bool_true_false_are_defined 1 - - - -/* End of stdbool.h */ +/* End of conio.h */ #endif - - - /*****************************************************************************/ /* */ -/* cc65.h */ +/* dio.h */ /* */ -/* Target independent but cc65 specific utility functions */ +/* Low-Level diskette I/O functions */ /* */ /* */ /* */ -/* (C) 2009-2011, Ullrich von Bassewitz */ -/* Roemerstrasse 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ +/* (C) 2005 Christian Groessler */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -3948,8 +5099,32 @@ typedef unsigned char _Bool; -#ifndef _CC65_H -#define _CC65_H +#ifndef _DIO_H +#define _DIO_H + + + +/* Please note: All functions in this file will set _oserror *and* return its +** value. The only exception is dio_open, which will return NULL, but _oserror +** will be set. All function will also set _oserror in case of successful +** execution, effectively clearing it. +*/ + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +typedef struct __dhandle_t *dhandle_t; + +typedef struct { + unsigned char head; + unsigned track; + unsigned sector; +} dio_phys_pos; @@ -3959,201 +5134,52 @@ typedef unsigned char _Bool; -long __fastcall__ cc65_idiv32by16r16 (long rhs, int lhs); -/* Divide a 32 bit signed value by a 16 bit signed value yielding a 16 -** bit result and a 16 bit remainder. The former is returned in the lower 16 -** bit of the result, the latter in the upper. If you don't need the -** remainder, just assign (or cast) to an int. -*/ +unsigned __fastcall__ dio_query_sectsize (dhandle_t handle); +/* returns sector size */ -unsigned long __fastcall__ cc65_udiv32by16r16 (unsigned long rhs, unsigned lhs); -/* Divide a 32 bit unsigned value by a 16 bit unsigned value yielding a 16 -** bit result and a 16 bit remainder. The former is returned in the lower 16 -** bit of the result, the latter in the upper. If you don't need the -** remainder, just assign (or cast) to an unsigned. -*/ +unsigned __fastcall__ dio_query_sectcount (dhandle_t handle); +/* returns sector count */ -int __fastcall__ cc65_imul8x8r16 (signed char lhs, signed char rhs); -/* Multiplicate two signed 8 bit to yield an signed 16 bit result */ +dhandle_t __fastcall__ dio_open (unsigned char device); +/* open device for subsequent dio access */ -long __fastcall__ cc65_imul16x16r32 (int lhs, int rhs); -/* Multiplicate two signed 16 bit to yield a signed 32 bit result */ +unsigned char __fastcall__ dio_close (dhandle_t handle); +/* close device, returns oserror (0 for success) */ -unsigned __fastcall__ cc65_umul8x8r16 (unsigned char lhs, unsigned char rhs); -/* Multiplicate two unsigned 8 bit to yield an unsigned 16 bit result */ +unsigned char __fastcall__ dio_read (dhandle_t handle, + unsigned sect_num, + void *buffer); +/* read sector from device to memory at */ +/* the number of bytes transferred depends on the sector size */ +/* returns oserror (0 for success) */ -unsigned long __fastcall__ cc65_umul16x8r32 (unsigned lhs, unsigned char rhs); -/* Multiplicate an unsigned 16 bit by an unsigned 8 bit number yielding a 24 -** bit unsigned result that is extended to 32 bits for easier handling from C. -*/ +unsigned char __fastcall__ dio_write (dhandle_t handle, + unsigned sect_num, + const void *buffer); +/* write memory at to sector on device , no verify */ +/* the number of bytes transferred depends on the sector size */ +/* returns oserror (0 for success) */ -unsigned long __fastcall__ cc65_umul16x16r32 (unsigned lhs, unsigned rhs); -/* Multiplicate two unsigned 16 bit to yield an unsigned 32 bit result */ - -int __fastcall__ cc65_sin (unsigned x); -/* Return the sine of the argument, which must be in range 0..360. The result -** is in 8.8 fixed point format, which means that 1.0 = $100 and -1.0 = $FF00. -*/ - -int __fastcall__ cc65_cos (unsigned x); -/* Return the cosine of the argument, which must be in range 0..360. The result -** is in 8.8 fixed point format, which means that 1.0 = $100 and -1.0 = $FF00. -*/ - -unsigned char doesclrscrafterexit (void); -/* Indicates whether the screen automatically be cleared after program -** termination. -*/ - - - -/* End of cc65.h */ -#endif - - - -/*****************************************************************************/ -/* */ -/* signal.h */ -/* */ -/* Signal handling definitions */ -/* */ -/* */ -/* */ -/* (C) 2002-2005, Ullrich von Bassewitz */ -/* Rmerstrae 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ -/* */ -/* */ -/* This software is provided 'as-is', without any expressed or implied */ -/* warranty. In no event will the authors be held liable for any damages */ -/* arising from the use of this software. */ -/* */ -/* Permission is granted to anyone to use this software for any purpose, */ -/* including commercial applications, and to alter it and redistribute it */ -/* freely, subject to the following restrictions: */ -/* */ -/* 1. The origin of this software must not be misrepresented; you must not */ -/* claim that you wrote the original software. If you use this software */ -/* in a product, an acknowledgment in the product documentation would be */ -/* appreciated but is not required. */ -/* 2. Altered source versions must be plainly marked as such, and must not */ -/* be misrepresented as being the original software. */ -/* 3. This notice may not be removed or altered from any source */ -/* distribution. */ -/* */ -/*****************************************************************************/ - - - -#ifndef _SIGNAL_H -#define _SIGNAL_H - - - -/* sig_atomic_t */ -typedef unsigned char sig_atomic_t; - -/* Type of a signal handler */ -typedef void __fastcall__ (*__sigfunc) (int); - -/* Functions that implement SIG_IGN and SIG_DFL */ -void __fastcall__ _sig_ign (int); -void __fastcall__ _sig_dfl (int); - -/* Standard signal handling functions */ -#define SIG_DFL _sig_dfl -#define SIG_IGN _sig_ign -#define SIG_ERR ((__sigfunc) 0x0000) - -/* Signal numbers */ -#define SIGABRT 0 -#define SIGFPE 1 -#define SIGILL 2 -#define SIGINT 3 -#define SIGSEGV 4 -#define SIGTERM 5 - -/* Function declarations */ -__sigfunc __fastcall__ signal (int sig, __sigfunc func); -int __fastcall__ raise (int sig); - - - -/* End of signal.h */ -#endif - - - -/*****************************************************************************/ -/* */ -/* _sid.h */ -/* */ -/* Internal include file, do not use directly */ -/* */ -/* */ -/* */ -/* (C) 1998-2000 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ -/* EMail: uz@musoftware.de */ -/* */ -/* */ -/* This software is provided 'as-is', without any expressed or implied */ -/* warranty. In no event will the authors be held liable for any damages */ -/* arising from the use of this software. */ -/* */ -/* Permission is granted to anyone to use this software for any purpose, */ -/* including commercial applications, and to alter it and redistribute it */ -/* freely, subject to the following restrictions: */ -/* */ -/* 1. The origin of this software must not be misrepresented; you must not */ -/* claim that you wrote the original software. If you use this software */ -/* in a product, an acknowledgment in the product documentation would be */ -/* appreciated but is not required. */ -/* 2. Altered source versions must be plainly marked as such, and must not */ -/* be misrepresented as being the original software. */ -/* 3. This notice may not be removed or altered from any source */ -/* distribution. */ -/* */ -/*****************************************************************************/ - - - -#ifndef __SID_H -#define __SID_H - - - -/* Define a structure with the sid register offsets */ -struct __sid_voice { - unsigned freq; /* Frequency */ - unsigned pw; /* Pulse width */ - unsigned char ctrl; /* Control register */ - unsigned char ad; /* Attack/decay */ - unsigned char sr; /* Sustain/release */ -}; -struct __sid { - struct __sid_voice v1; /* Voice 1 */ - struct __sid_voice v2; /* Voice 2 */ - struct __sid_voice v3; /* Voice 3 */ - unsigned flt_freq; /* Filter frequency */ - unsigned char flt_ctrl; /* Filter control register */ - unsigned char amp; /* Amplitude */ - unsigned char ad1; /* A/D converter 1 */ - unsigned char ad2; /* A/D converter 2 */ - unsigned char noise; /* Noise generator */ - unsigned char read3; /* Value of voice 3 */ -}; - - - -/* End of _sid.h */ -#endif +unsigned char __fastcall__ dio_write_verify (dhandle_t handle, + unsigned sect_num, + const void *buffer); +/* write memory at to sector on device , verify after write */ +/* the number of bytes transferred depends on the sector size */ +/* returns oserror (0 for success) */ +unsigned char __fastcall__ dio_phys_to_log (dhandle_t handle, + const dio_phys_pos *physpos, /* input */ + unsigned *sectnum); /* output */ +/* convert physical sector address (head/track/sector) to logical sector number */ +/* returns oserror (0 for success) */ +unsigned char __fastcall__ dio_log_to_phys (dhandle_t handle, + const unsigned *sectnum, /* input */ + dio_phys_pos *physpos); /* output */ +/* convert logical sector number to physical sector address (head/track/sector) */ +/* returns oserror (0 for success) */ +#endif /* #ifndef _DIO_H */ /*****************************************************************************/ /* */ /* _vic2.h */ @@ -4346,4529 +5372,6 @@ struct __vic2 { -/*****************************************************************************/ -/* */ -/* unistd.h */ -/* */ -/* Unix compatibility header file for cc65 */ -/* */ -/* */ -/* */ -/* (C) 2003-2011, Ullrich von Bassewitz */ -/* Roemerstrasse 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ -/* */ -/* */ -/* This software is provided 'as-is', without any expressed or implied */ -/* warranty. In no event will the authors be held liable for any damages */ -/* arising from the use of this software. */ -/* */ -/* Permission is granted to anyone to use this software for any purpose, */ -/* including commercial applications, and to alter it and redistribute it */ -/* freely, subject to the following restrictions: */ -/* */ -/* 1. The origin of this software must not be misrepresented; you must not */ -/* claim that you wrote the original software. If you use this software */ -/* in a product, an acknowledgment in the product documentation would be */ -/* appreciated but is not required. */ -/* 2. Altered source versions must be plainly marked as such, and must not */ -/* be misrepresented as being the original software. */ -/* 3. This notice may not be removed or altered from any source */ -/* distribution. */ -/* */ -/*****************************************************************************/ - - - -#ifndef _UNISTD_H -#define _UNISTD_H - - - -/*****************************************************************************/ -/* Data */ -/*****************************************************************************/ - - - -/* Predefined file handles */ -#define STDIN_FILENO 0 -#define STDOUT_FILENO 1 -#define STDERR_FILENO 2 - -/* WE need size_t */ -#ifndef _HAVE_size_t -#define _HAVE_size_t -typedef unsigned size_t; -#endif - -/* We need off_t if sys/types is not included */ -#ifndef _HAVE_off_t -#define _HAVE_off_t -typedef long int off_t; -#endif - -/* Stuff for getopt */ -extern char *optarg; -extern int optind, opterr, optopt; - - - -/*****************************************************************************/ -/* Code */ -/*****************************************************************************/ - - - -/* Files */ -int __fastcall__ write (int fd, const void* buf, unsigned count); -int __fastcall__ read (int fd, void* buf, unsigned count); -off_t __fastcall__ lseek (int fd, off_t offset, int whence); -int __fastcall__ unlink (const char* name); /* Same as remove() */ - -/* Directories */ -int __fastcall__ chdir (const char* name); -char* __fastcall__ getcwd (char* buf, size_t size); -int mkdir (const char* name, ...); /* May take a mode argument */ -int __fastcall__ rmdir (const char* name); - -/* Others */ -unsigned __fastcall__ sleep (unsigned seconds); -int __fastcall__ getopt (int argc, char* const* argv, const char* optstring); - -/* Non standard: */ -#if __CC65_STD__ == __CC65_STD_CC65__ -int __fastcall__ exec (const char* progname, const char* cmdline); -#endif - - - -/* End of unistd.h */ -#endif - - - -/*****************************************************************************/ -/* */ -/* ctype.h */ -/* */ -/* Character handling */ -/* */ -/* */ -/* */ -/* (C) 1998-2013, Ullrich von Bassewitz */ -/* Roemerstrasse 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ -/* */ -/* */ -/* This software is provided 'as-is', without any expressed or implied */ -/* warranty. In no event will the authors be held liable for any damages */ -/* arising from the use of this software. */ -/* */ -/* Permission is granted to anyone to use this software for any purpose, */ -/* including commercial applications, and to alter it and redistribute it */ -/* freely, subject to the following restrictions: */ -/* */ -/* 1. The origin of this software must not be misrepresented; you must not */ -/* claim that you wrote the original software. If you use this software */ -/* in a product, an acknowledgment in the product documentation would be */ -/* appreciated but is not required. */ -/* 2. Altered source versions must be plainly marked as such, and must not */ -/* be misrepresented as being the original software. */ -/* 3. This notice may not be removed or altered from any source */ -/* distribution. */ -/* */ -/*****************************************************************************/ - - - -#ifndef _CTYPE_H -#define _CTYPE_H - - -/* The array containing character classification data */ -extern unsigned char _ctype[256]; - -/* Bits used to specify character classes */ -#define _CT_LOWER 0x01 /* 0 - Lower case char */ -#define _CT_UPPER 0x02 /* 1 - Upper case char */ -#define _CT_DIGIT 0x04 /* 2 - Numeric digit */ -#define _CT_XDIGIT 0x08 /* 3 - Hex digit (both lower and upper) */ -#define _CT_CNTRL 0x10 /* 4 - Control character */ -#define _CT_SPACE 0x20 /* 5 - The space character itself */ -#define _CT_OTHER_WS 0x40 /* 6 - Other whitespace ('\f', '\n', '\r', '\t', and '\v') */ -#define _CT_SPACE_TAB 0x80 /* 7 - Space or tab character */ - -/* Bit combinations */ -#define _CT_ALNUM (_CT_LOWER | _CT_UPPER | _CT_DIGIT) -#define _CT_ALPHA (_CT_LOWER | _CT_UPPER) -#define _CT_NOT_GRAPH (_CT_CNTRL | _CT_SPACE) -#define _CT_NOT_PRINT (_CT_CNTRL) -#define _CT_NOT_PUNCT (_CT_SPACE | _CT_CNTRL | _CT_DIGIT | _CT_UPPER | _CT_LOWER) -#define _CT_WS (_CT_SPACE | _CT_OTHER_WS) - -/* Character classification functions */ -int __fastcall__ isalnum (int c); -int __fastcall__ isalpha (int c); -int __fastcall__ iscntrl (int c); -int __fastcall__ isdigit (int c); -int __fastcall__ isgraph (int c); -int __fastcall__ islower (int c); -int __fastcall__ isprint (int c); -int __fastcall__ ispunct (int c); -int __fastcall__ isspace (int c); -int __fastcall__ isupper (int c); -int __fastcall__ isxdigit (int c); -#if __CC65_STD__ >= __CC65_STD_C99__ -int __fastcall__ isblank (int c); /* New in C99 */ -#endif - -int __fastcall__ toupper (int c); /* Always external */ -int __fastcall__ tolower (int c); /* Always external */ - -#if __CC65_STD__ >= __CC65_STD_CC65__ -unsigned char __fastcall__ toascii (unsigned char c); -/* Convert a target-specific character to ASCII. */ -#endif - - - -/* When inlining-of-known-functions is enabled, overload most of the above -** functions by macroes. The function prototypes are available again after -** #undef'ing the macroes. -** Please note that the following macroes do NOT handle EOF correctly, as -** stated in the manual. If you need correct behaviour for EOF, don't -** use --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 */ @@ -8923,9 +5426,10 @@ typedef unsigned size_t; typedef unsigned long time_t; typedef unsigned long clock_t; +typedef unsigned char clockid_t; /* Structure for broken down time */ -struct tm { +struct tm { int tm_sec; int tm_min; int tm_hour; @@ -8937,6 +5441,12 @@ struct tm { int tm_isdst; }; +/* Structure for seconds and nanoseconds */ +struct timespec { + time_t tv_sec; + long tv_nsec; +}; + /* Timezone representation, default is UTC */ extern struct _timezone { char daylight; /* True if daylight savings time active */ @@ -8987,16 +5497,10 @@ extern clock_t _clk_tck (void); # define CLK_TCK _clk_tck() # define CLOCKS_PER_SEC _clk_tck() #endif +#define CLOCK_REALTIME 0 -time_t _systime (void); -/* Similar to time(), but: -** - Is not ISO C -** - Does not take the additional pointer -** - Does not set errno when returning -1 -*/ - /* ISO C function prototypes */ char* __fastcall__ asctime (const struct tm* timep); clock_t clock (void); @@ -9009,1858 +5513,19 @@ time_t __fastcall__ time (time_t* t); +/* POSIX function prototypes */ +int __fastcall__ clock_getres (clockid_t clock_id, struct timespec *res); +int __fastcall__ clock_gettime (clockid_t clock_id, struct timespec *tp); +int __fastcall__ clock_settime (clockid_t clock_id, const struct timespec *tp); + + + /* End of time.h */ #endif -/*****************************************************************************/ -/* */ -/* modload.h */ -/* */ -/* o65 module loader interface for cc65 */ -/* */ -/* */ -/* */ -/* (C) 2002 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ -/* EMail: uz@musoftware.de */ -/* */ -/* */ -/* This software is provided 'as-is', without any expressed or implied */ -/* warranty. In no event will the authors be held liable for any damages */ -/* arising from the use of this software. */ -/* */ -/* Permission is granted to anyone to use this software for any purpose, */ -/* including commercial applications, and to alter it and redistribute it */ -/* freely, subject to the following restrictions: */ -/* */ -/* 1. The origin of this software must not be misrepresented; you must not */ -/* claim that you wrote the original software. If you use this software */ -/* in a product, an acknowledgment in the product documentation would be */ -/* appreciated but is not required. */ -/* 2. Altered source versions must be plainly marked as such, and must not */ -/* be misrepresented as being the original software. */ -/* 3. This notice may not be removed or altered from any source */ -/* distribution. */ -/* */ -/*****************************************************************************/ - - - -/* Exports structures and functions to load relocatable o65 modules at -** runtime. -*/ - - - -#ifndef _MODLOAD_H -#define _MODLOAD_H - - - -/* The following struct is passed to the module loader. It contains stuff, -** the loader needs to work, and another area where the loader will place -** informational data if it was successful. You will have to check the return -** code of mod_load before accessing any of these additional struct members. -*/ -struct mod_ctrl { - /* Parameters passed into the loader routine. The member callerdata - ** is an opaque 16 bit datatype that may be used by the caller to - ** pass data through to the read routine. The read routine is used by the - ** loader to load any required data. There are several calls where the - ** read routine is passed a count of 1, so you may choose to make this - ** a special case when implementing read(). The read() should return the - ** number of bytes actually read. If the return value differs from the - ** passed count, this is considered an error. - ** NOTE: read() is designed so that the POSIX read() routine can be used - ** for this vector, if you're loading from disk. - */ - int __fastcall__ (*read) (int callerdata, void* buffer, unsigned count); - int callerdata; - - /* Parameters set by the loader routine */ - void* module; /* Pointer to module data */ - unsigned module_size; /* Total size of loaded module */ - unsigned module_id; /* Module id */ -}; - - - -unsigned char __fastcall__ mod_load (struct mod_ctrl* ctrl); -/* Load a module into memory and relocate it. The function will return an -** error code (see below). If MLOAD_OK is returned, the outgoing fields in -** the passed mod_ctrl struct contain information about the module just -** loaded. -*/ - -void __fastcall__ mod_free (void* module); -/* Free a loaded module. Note: The given pointer is the pointer to the -** module memory, not a pointer to a control structure. -*/ - - - -/* Errors */ -#define MLOAD_OK 0 /* Module load successful */ -#define MLOAD_ERR_READ 1 /* Read error */ -#define MLOAD_ERR_HDR 2 /* Header error */ -#define MLOAD_ERR_OS 3 /* Wrong OS */ -#define MLOAD_ERR_FMT 4 /* Data format error */ -#define MLOAD_ERR_MEM 5 /* Not enough memory */ - - - -/* End of modload.h */ -#endif - - - -/*****************************************************************************/ -/* */ -/* string.h */ -/* */ -/* String handling */ -/* */ -/* */ -/* */ -/* (C) 1998-2014, Ullrich von Bassewitz */ -/* Roemerstrasse 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ -/* */ -/* */ -/* This software is provided 'as-is', without any expressed or implied */ -/* warranty. In no event will the authors be held liable for any damages */ -/* arising from the use of this software. */ -/* */ -/* Permission is granted to anyone to use this software for any purpose, */ -/* including commercial applications, and to alter it and redistribute it */ -/* freely, subject to the following restrictions: */ -/* */ -/* 1. The origin of this software must not be misrepresented; you must not */ -/* claim that you wrote the original software. If you use this software */ -/* in a product, an acknowledgment in the product documentation would be */ -/* appreciated but is not required. */ -/* 2. Altered source versions must be plainly marked as such, and must not */ -/* be misrepresented as being the original software. */ -/* 3. This notice may not be removed or altered from any source */ -/* distribution. */ -/* */ -/*****************************************************************************/ - - - -#ifndef _STRING_H -#define _STRING_H - - - -#include - - - -char* __fastcall__ strcat (char* dest, const char* src); -char* __fastcall__ strchr (const char* s, int c); -int __fastcall__ strcmp (const char* s1, const char* s2); -int __fastcall__ strcoll (const char* s1, const char* s2); -char* __fastcall__ strcpy (char* dest, const char* src); -size_t __fastcall__ strcspn (const char* s1, const char* s2); -char* __fastcall__ strerror (int errcode); -size_t __fastcall__ strlen (const char* s); -char* __fastcall__ strncat (char* s1, const char* s2, size_t count); -int __fastcall__ strncmp (const char* s1, const char* s2, size_t count); -char* __fastcall__ strncpy (char* dest, const char* src, size_t count); -char* __fastcall__ 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 */ @@ -11334,6 +5999,7803 @@ void __fastcall__ pokewsys (unsigned addr, unsigned val); #pragma charmap (0xFE, 0xFE) #pragma charmap (0xFF, 0xFF) +/*****************************************************************************/ +/* */ +/* joystick.h */ +/* */ +/* Read the joystick on systems that support it */ +/* */ +/* */ +/* */ +/* (C) 1998-2011, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _JOYSTICK_H +#define _JOYSTICK_H + + + +#include + + + +/*****************************************************************************/ +/* Definitions */ +/*****************************************************************************/ + + + +/* Error codes */ +#define JOY_ERR_OK 0 /* No error */ +#define JOY_ERR_NO_DRIVER 1 /* No driver available */ +#define JOY_ERR_CANNOT_LOAD 2 /* Error loading driver */ +#define JOY_ERR_INV_DRIVER 3 /* Invalid driver */ +#define JOY_ERR_NO_DEVICE 4 /* Device (hardware) not found */ + +/* Argument for the joy_read function */ +#define JOY_1 0 +#define JOY_2 1 + +/* Macros that evaluate the return code of joy_read */ +#define JOY_UP(v) ((v) & JOY_UP_MASK) +#define JOY_DOWN(v) ((v) & JOY_DOWN_MASK) +#define JOY_LEFT(v) ((v) & JOY_LEFT_MASK) +#define JOY_RIGHT(v) ((v) & JOY_RIGHT_MASK) +#define JOY_BTN_1(v) ((v) & JOY_BTN_1_MASK) /* Universally available */ +#define JOY_BTN_2(v) ((v) & JOY_BTN_2_MASK) /* Second button if available */ +#define JOY_BTN_3(v) ((v) & JOY_BTN_3_MASK) /* Third button if available */ +#define JOY_BTN_4(v) ((v) & JOY_BTN_4_MASK) /* Fourth button if available */ + +/* The name of the standard joystick driver for a platform */ +extern const char joy_stddrv[]; + +/* The address of the static standard joystick driver for a platform */ +extern const void joy_static_stddrv[]; + + + +/*****************************************************************************/ +/* Functions */ +/*****************************************************************************/ + + + +unsigned char __fastcall__ joy_load_driver (const char* driver); +/* Load and install a joystick driver. Return an error code. */ + +unsigned char joy_unload (void); +/* Uninstall, then unload the currently loaded driver. */ + +unsigned char __fastcall__ joy_install (void* driver); +/* Install an already loaded driver. Return an error code. */ + +unsigned char joy_uninstall (void); +/* Uninstall the currently loaded driver and return an error code. +** Note: This call does not free allocated memory. +*/ + +unsigned char joy_count (void); +/* Return the number of joysticks supported by the driver */ + +unsigned char __fastcall__ joy_read (unsigned char joystick); +/* Read a particular joystick */ + + + +/* End of joystick.h */ +#endif +/*****************************************************************************/ +/* */ +/* _suzy.h */ +/* */ +/* Atari Lynx, Suzy chip register hardware structures */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + +#ifndef __SUZY_H +#define __SUZY_H + +/* Joypad $FCB0 */ +#define JOYPAD_RIGHT 0x10 +#define JOYPAD_LEFT 0x20 +#define JOYPAD_DOWN 0x40 +#define JOYPAD_UP 0x80 +#define BUTTON_OPTION1 0x08 +#define BUTTON_OPTION2 0x04 +#define BUTTON_INNER 0x02 +#define BUTTON_OUTER 0x01 + +/* Switches $FCB1 */ +#define BUTTON_PAUSE 0x01 + + +/* Hardware Math */ +#define FACTOR_A *(unsigned int *) 0xFC54 +#define FACTOR_B *(unsigned int *) 0xFC52 +#define PRODUCT0 *(unsigned int *) 0xFC60 +#define PRODUCT1 *(unsigned int *) 0xFC62 +#define PRODUCT *(long *) 0xFC60 + +#define DIVIDEND0 *(unsigned int *) 0xFC60 +#define DIVIDEND1 *(unsigned int *) 0xFC62 +#define DIVIDEND *(long *) 0xFC60 +#define DIVISOR *(unsigned int *) 0xFC56 +#define QUOTIENT0 *(unsigned int *) 0xFC52 +#define QUOTIENT1 *(unsigned int *) 0xFC54 +#define QUOTIENT *(long *) 0xFC52 +#define REMAINDER0 *(unsigned int *) 0xFC6C +#define REMAINDER1 *(unsigned int *) 0xFC6E +#define REMAINDER *(long *) 0xFC6C + + +/* Sprite control block (SCB) defines */ + +/* SPRCTL0 $FC80 */ +#define BPP_4 0xC0 +#define BPP_3 0x80 +#define BPP_2 0x40 +#define BPP_1 0x00 +#define HFLIP 0x20 +#define VFLIP 0x10 +#define TYPE_SHADOW 0x07 +#define TYPE_XOR 0x06 +#define TYPE_NONCOLL 0x05 +#define TYPE_NORMAL 0x04 +#define TYPE_BOUNDARY 0x03 +#define TYPE_BSHADOW 0x02 +#define TYPE_BACKNONCOLL 0x01 +#define TYPE_BACKGROUND 0x00 + +/* SPRCTL1 $FC81 */ +#define LITERAL 0x80 +#define PACKED 0x00 +#define ALGO3 0x40 +#define RENONE 0x00 +#define REHV 0x10 +#define REHVS 0x20 +#define REHVST 0x30 +#define REUSEPAL 0x08 +#define SKIP 0x04 +#define DRAWUP 0x02 +#define DRAWLEFT 0x01 + +typedef struct SCB_REHVST_PAL { // SCB with all attributes + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; + unsigned int hsize; + unsigned int vsize; + unsigned int stretch; + unsigned int tilt; + unsigned char penpal[8]; +} SCB_REHVST_PAL; + +typedef struct SCB_REHVST { // SCB without pallette + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; + unsigned int hsize; + unsigned int vsize; + unsigned int stretch; + unsigned int tilt; +} SCB_REHVST; + +typedef struct SCB_REHV { // SCB without stretch/tilt + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; + unsigned int hsize; + unsigned int vsize; +} SCB_REHV; + +typedef struct SCB_REHV_PAL { // SCB without str/tilt, w/ penpal + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; + unsigned int hsize; + unsigned int vsize; + unsigned char penpal[8]; +} SCB_REHV_PAL; + +typedef struct SCB_REHVS { // SCB w/o tilt & penpal + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; + unsigned int hsize; + unsigned int vsize; + unsigned int stretch; +} SCB_REHVS; + +typedef struct SCB_REHVS_PAL { // SCB w/o tilt w/penpal + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; + unsigned int hsize; + unsigned int vsize; + unsigned int stretch; + unsigned char penpal[8]; +} SCB_REHVS_PAL; + +typedef struct SCB_RENONE { // SCB w/o size/stretch/tilt/pal + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; +} SCB_RENONE; + +typedef struct SCB_RENONE_PAL { // SCB w/o size/str/tilt w/penpal + unsigned char sprctl0; + unsigned char sprctl1; + unsigned char sprcoll; + char *next; + unsigned char *data; + signed int hpos; + signed int vpos; + unsigned char penpal[8]; +} SCB_RENONE_PAL; + +typedef struct PENPAL_4 { + unsigned char penpal[8]; +} PENPAL_4; + +typedef struct PENPAL_3 { + unsigned char penpal[4]; +} PENPAL_3; + +typedef struct PENPAL_2 { + unsigned char penpal[2]; +} PENPAL_2; + +typedef struct PENPAL_1 { + unsigned char penpal[1]; +} PENPAL_1; + +/* Misc system defines */ + +/* SPRGO $FC91 */ +#define EVER_ON 0x04 +#define SPRITE_GO 0x01 + +/* SPRSYS (write) $FC92 */ +#define SIGNMATH 0x80 +#define ACCUMULATE 0x40 +#define NO_COLLIDE 0x20 +#define VSTRETCH 0x10 +#define LEFTHAND 0x08 +#define CLR_UNSAFE 0x04 +#define SPRITESTOP 0x02 + +/* SPRSYS (read) $FC92 */ +#define MATHWORKING 0x80 +#define MATHWARNING 0x40 +#define MATHCARRY 0x20 +#define VSTRETCHING 0x10 +#define LEFTHANDED 0x08 +#define UNSAFE_ACCESS 0x04 +#define SPRITETOSTOP 0x02 +#define SPRITEWORKING 0x01 + +/* MAPCTL $FFF9 */ +#define HIGHSPEED 0x80 +#define VECTORSPACE 0x08 +#define ROMSPACE 0x04 +#define MIKEYSPACE 0x02 +#define SUZYSPACE 0x01 + + +/* Suzy Hardware Registers */ +struct __suzy { + unsigned int tmpadr; // 0xFC00 Temporary address + unsigned int tiltacc; // 0xFC02 Tilt accumulator + unsigned int hoff; // 0xFC04 Offset to H edge of screen + unsigned int voff; // 0xFC06 Offset to V edge of screen + unsigned char *sprbase; // 0xFC08 Base address of sprite + unsigned char *colbase; // 0xFC0A Base address of collision buffer + unsigned char *vidadr; // 0xFC0C Current vid buffer address + unsigned char *coladr; // 0xFC0E Current col buffer address + unsigned char *scbnext; // 0xFC10 Address of next SCB + unsigned char *sprdline; // 0xFC12 start of sprite data line address + unsigned char *hposstrt; // 0xFC14 start hpos + unsigned char *vposstrt; // 0xFC16 start vpos + unsigned char *sprhsize; // 0xFC18 sprite h size + unsigned char *sprvsize; // 0xFC1A sprite v size + unsigned int stretchl; // 0xFC1C H size adder + unsigned int tilt; // 0xFC1E H pos adder + unsigned int sprdoff; // 0xFC20 offset to next sprite data line + unsigned int sprvpos; // 0xFC22 current vpos + unsigned int colloff; // 0xFC24 offset to collision depository + unsigned int vsizeacc; // 0xFC26 vertical size accumulator + unsigned int hsizeoff; // 0xFC28 horizontal size offset + unsigned int vsizeoff; // 0xFC2A vertical size offset + unsigned char *scbaddr; // 0xFC2C address of current SCB + unsigned char *procaddr; // 0xFC2E address of current spr data proc + unsigned char unused0[32]; // 0xFC30 - 0xFC4F reserved/unused + unsigned char unused1[2]; // 0xFC50 - 0xFC51 do not use + unsigned char mathd; // 0xFC52 + unsigned char mathc; // 0xFC53 + unsigned char mathb; // 0xFC54 + unsigned char matha; // 0xFC55 + unsigned char mathp; // 0xFC56 + unsigned char mathn; // 0xFC57 + unsigned char unused2[8]; // 0xFC58 - 0xFC5F do not use + unsigned char mathh; // 0xFC60 + unsigned char mathg; // 0xFC61 + unsigned char mathf; // 0xFC62 + unsigned char mathe; // 0xFC63 + unsigned char unused3[8]; // 0xFC64 - 0xFC6B do not use + unsigned char mathm; // 0xFC6C + unsigned char mathl; // 0xFC6D + unsigned char mathk; // 0xFC6E + unsigned char mathj; // 0xFC6F + unsigned char unused4[16]; // 0xFC70 - 0xFC7F do not use + unsigned char sprctl0; // 0xFC80 sprite control bits 0 + unsigned char sprctl1; // 0xFC81 sprite control bits 1 + unsigned char sprcoll; // 0xFC82 sprite collision number + unsigned char sprinit; // 0xFC83 sprite initialization bits + unsigned char unused5[4]; // 0xFC84 - 0xFC87 unused + unsigned char suzyhrev; // 0xFC88 suzy hardware rev + unsigned char suzysrev; // 0xFC89 suzy software rev + unsigned char unused6[6]; // 0xFC8A - 0xFC8F unused + unsigned char suzybusen; // 0xFC90 suzy bus enable + unsigned char sprgo; // 0xFC91 sprite process start bit + unsigned char sprsys; // 0xFC92 sprite system control bits + unsigned char unused7[29]; // 0xFC93 - 0xFCAF unused + unsigned char joystick; // 0xFCB0 joystick and buttons + unsigned char switches; // 0xFCB1 other switches + unsigned char cart0; // 0xFCB2 cart0 r/w + unsigned char cart1; // 0xFCB3 cart1 r/w + unsigned char unused8[8]; // 0xFCB4 - 0xFCBF unused + unsigned char leds; // 0xFCC0 leds + unsigned char unused9; // 0xFCC1 unused + unsigned char parstat; // 0xFCC2 parallel port status + unsigned char pardata; // 0xFCC3 parallel port data + unsigned char howie; // 0xFCC4 howie (?) + // 0xFCC5 - 0xFCFF unused +}; + + +#endif + +/*****************************************************************************/ +/* */ +/* tgi.h */ +/* */ +/* Tiny graphics interface */ +/* */ +/* */ +/* */ +/* (C) 2002-2013, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _TGI_H +#define _TGI_H + + + +#include +#include + + + +/*****************************************************************************/ +/* Definitions */ +/*****************************************************************************/ + + + +/* Font constants for use with tgi_settextstyle */ +#define TGI_FONT_BITMAP 0 +#define TGI_FONT_VECTOR 1 + +/* Direction constants for use with tgi_settextstyle */ +#define TGI_TEXT_HORIZONTAL 0 +#define TGI_TEXT_VERTICAL 1 + +/* The name of the standard tgi driver for a platform */ +extern const char tgi_stddrv[]; + +/* The address of the static standard tgi driver for a platform */ +extern const void tgi_static_stddrv[]; + +/* A vector font definition */ +typedef struct tgi_vectorfont tgi_vectorfont; + + + +/*****************************************************************************/ +/* Functions */ +/*****************************************************************************/ + + + +void __fastcall__ tgi_load_driver (const char* name); +/* Load and install the given driver. */ + +void tgi_unload (void); +/* Uninstall, then unload the currently loaded driver. Will call tgi_done if +** necessary. +*/ + +void __fastcall__ tgi_install (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 +/*****************************************************************************/ +/* */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* zlib.h */ +/* */ +/* Decompression routines for the 'deflate' format */ +/* */ +/* */ +/* */ +/* (C) 2000-2015 Piotr Fusik */ +/* */ +/* This file is based on the zlib.h from 'zlib' general purpose compression */ +/* library, version 1.1.3, (C) 1995-1998 Jean-loup Gailly and Mark Adler. */ +/* */ +/* Jean-loup Gailly Mark Adler */ +/* jloup@gzip.org madler@alumni.caltech.edu */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ZLIB_H +#define _ZLIB_H + +#define Z_OK 0 +#define Z_DATA_ERROR (-3) +/* Return codes for uncompress() */ + +#define Z_DEFLATED 8 +/* The deflate compression method (the only one supported) */ + +#define Z_NULL 0 + + +unsigned __fastcall__ inflatemem (unsigned char* dest, + const unsigned char* source); +/* + Decompresses the source buffer into the destination buffer. + Returns the size of the uncompressed data (number of bytes written starting + from dest). + + This function expects data in the DEFLATE format, described in RFC + (Request for Comments) 1951 in the file + ftp://ds.internic.net/rfc/rfc1951.txt. + + This function does not exist in the original zlib. Its implementation + using original zlib might be following: + + unsigned inflatemem (char* dest, const char* source) + { + z_stream stream; + + stream.next_in = (Bytef*) source; + stream.avail_in = 65535; + + stream.next_out = dest; + stream.avail_out = 65535; + + stream.zalloc = (alloc_func) 0; + stream.zfree = (free_func) 0; + + inflateInit2(&stream, -MAX_WBITS); + inflate(&stream, Z_FINISH); + inflateEnd(&stream); + + return stream.total_out; + } +*/ + + +int __fastcall__ uncompress (unsigned char* dest, unsigned* destLen, + const unsigned char* source, unsigned sourceLen); +/* + Original zlib description: + + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total + size of the destination buffer, which must be large enough to hold the + entire uncompressed data. (The size of the uncompressed data must have + been saved previously by the compressor and transmitted to the decompressor + by some mechanism outside the scope of this compression library.) + Upon exit, destLen is the actual size of the compressed buffer. + This function can be used to decompress a whole file at once if the + input file is mmap'ed. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted. + + Implementation notes: + + This function expects data in the ZLIB format, described in RFC 1950 + in the file ftp://ds.internic.net/rfc/rfc1950.txt. The ZLIB format is + essentially the DEFLATE format plus a very small header and Adler-32 + checksum. + + Z_MEM_ERROR and Z_BUF_ERROR are never returned in this implementation. +*/ + + +unsigned long __fastcall__ adler32 (unsigned long adler, const 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 + + + +/*****************************************************************************/ +/* */ +/* stdint.h */ +/* */ +/* Standard integer types */ +/* */ +/* */ +/* */ +/* (C) 2002 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +/* Note: This file is not fully ISO 9899-1999 compliant because cc65 lacks +** a 64 bit data types. The declarations have been adjusted accordingly. +*/ + + + +#ifndef _STDINT_H +#define _STDINT_H + + + +/* Exact-width integer types */ +typedef signed char int8_t; +typedef int int16_t; +typedef long int32_t; +typedef unsigned char uint8_t; +typedef unsigned uint16_t; +typedef unsigned long uint32_t; + +#define INT8_MIN ((int8_t) 0x80) +#define INT8_MAX ((int8_t) 0x7F) +#define INT16_MIN ((int16_t) 0x8000) +#define INT16_MAX ((int16_t) 0x7FFF) +#define INT32_MIN ((int32_t) 0x80000000) +#define INT32_MAX ((int32_t) 0x7FFFFFFF) +#define UINT8_MAX ((uint8_t) 0xFF) +#define UINT16_MAX ((uint16_t) 0xFFFF) +#define UINT32_MAX ((uint32_t) 0xFFFFFFFF) + +/* Minimum-width integer types */ +typedef signed char int_least8_t; +typedef int int_least16_t; +typedef long int_least32_t; +typedef unsigned char uint_least8_t; +typedef unsigned uint_least16_t; +typedef unsigned long uint_least32_t; + +#define INT_LEAST8_MIN ((int_least8_t) 0x80) +#define INT_LEAST8_MAX ((int_least8_t) 0x7F) +#define INT_LEAST16_MIN ((int_least16_t) 0x8000) +#define INT_LEAST16_MAX ((int_least16_t) 0x7FFF) +#define INT_LEAST32_MIN ((int_least32_t) 0x80000000) +#define INT_LEAST32_MAX ((int_least32_t) 0x7FFFFFFF) +#define UINT_LEAST8_MAX ((uint_least8_t) 0xFF) +#define UINT_LEAST16_MAX ((uint_least16_t) 0xFFFF) +#define UINT_LEAST32_MAX ((uint_least32_t) 0xFFFFFFFF) + +/* Fastest minimum-width integer types */ +typedef signed char int_fast8_t; +typedef int int_fast16_t; +typedef long int_fast32_t; +typedef unsigned char uint_fast8_t; +typedef unsigned uint_fast16_t; +typedef unsigned long uint_fast32_t; + +#define INT_FAST8_MIN ((int_fast8_t) 0x80) +#define INT_FAST8_MAX ((int_fast8_t) 0x7F) +#define INT_FAST16_MIN ((int_fast16_t) 0x8000) +#define INT_FAST16_MAX ((int_fast16_t) 0x7FFF) +#define INT_FAST32_MIN ((int_fast32_t) 0x80000000) +#define INT_FAST32_MAX ((int_fast32_t) 0x7FFFFFFF) +#define UINT_FAST8_MAX ((uint_fast8_t) 0xFF) +#define UINT_FAST16_MAX ((uint_fast16_t) 0xFFFF) +#define UINT_FAST32_MAX ((uint_fast32_t) 0xFFFFFFFF) + +/* Integer types capable of holding object pointers */ +typedef int intptr_t; +typedef unsigned uintptr_t; + +#define INTPTR_MIN ((intptr_t)0x8000) +#define INTPTR_MAX ((intptr_t)0x7FFF) +#define UINTPTR_MAX ((uintptr_t) 0xFFFF) + +/* Greatest width integer types */ +typedef long intmax_t; +typedef unsigned long uintmax_t; + +#define INTMAX_MIN ((intmax_t) 0x80000000) +#define INTMAX_MAX ((intmax_t) 0x7FFFFFFF) +#define UINTMAX_MAX ((uintmax_t) 0xFFFFFFFF) + +/* Limits of other integer types */ +#define PTRDIFF_MIN ((int) 0x8000) +#define PTRDIFF_MAX ((int) 0x7FFF) + +#define SIG_ATOMIC_MIN ((unsigned char) 0x00) +#define SIG_ATOMIC_MAX ((unsigned char) 0xFF) + +#define SIZE_MAX 0xFFFF + +/* Macros for minimum width integer constants */ +#define INT8_C(c) c +#define INT16_C(c) c +#define INT32_C(c) c##L +#define UINT8_C(c) c##U +#define UINT16_C(c) c##U +#define UINT32_C(c) c##UL + +/* Macros for greatest width integer constants */ +#define INTMAX_C(c) c##L +#define UINTMAX_C(c) c##UL + + + +/* End of stdint.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* cbm610.h */ +/* */ +/* CBM610 system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-2009, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _CBM610_H +#define _CBM610_H + + + +/* Check for errors */ +#if !defined(__CBM610__) +# error This module may only be used when compiling for the CBM 610! +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Additional key defines */ +#define CH_F1 224 +#define CH_F2 225 +#define CH_F3 226 +#define CH_F4 227 +#define CH_F5 228 +#define CH_F6 229 +#define CH_F7 230 +#define CH_F8 231 +#define CH_F9 232 +#define CH_F10 233 +#define CH_F11 234 +#define CH_F12 235 +#define CH_F13 236 +#define CH_F14 237 +#define CH_F15 238 +#define CH_F16 239 +#define CH_F17 240 +#define CH_F18 241 +#define CH_F19 242 +#define CH_F20 243 + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 + +/* Define hardware */ +#include <_6545.h> +#define CRTC (*(struct __6545)0xD800) + +#include <_sid.h> +#define SID (*(struct __sid*)0xDA00) + +#include <_6526.h> +#define CIA1 (*(struct __6526*)0xDB00) +#define CIA2 (*(struct __6526*)0xDC00) + +#include <_6551.h> +#define ACIA (*(struct __6551*)0xDD00) + +#include <_6525.h> +#define TPI1 (*(struct __6525*)0xDE00) +#define TPI2 (*(struct __6525*)0xDF00) + + + +/*****************************************************************************/ +/* Variables */ +/*****************************************************************************/ + + + +/* The addresses of the static drivers */ +extern void cbm610_ram_emd[]; +extern void cbm610_std_ser[]; + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +/* Special routines to read/write bytes and words in the system bank */ +unsigned char __fastcall__ peekbsys (unsigned addr); +unsigned __fastcall__ peekwsys (unsigned addr); +void __fastcall__ pokebsys (unsigned addr, unsigned char val); +void __fastcall__ pokewsys (unsigned addr, unsigned val); + +#if defined(__OPT_i__) && (__OPT_i__ >= 600) +#define peekbsys(addr) \ + __AX__ = (addr), \ + __asm__ ("sta ptr1"), \ + __asm__ ("stx ptr1+1"), \ + __asm__ ("ldx $01"), \ + __asm__ ("lda #$0F"), \ + __asm__ ("sta $01"), \ + __asm__ ("ldy #$00"), \ + __asm__ ("lda (ptr1),y"), \ + __asm__ ("stx $01"), \ + __asm__ ("ldx #$00"), \ + __AX__ +#endif + + + +/* The following #defines will cause the matching functions calls in conio.h +** to be overlaid by macros with the same names, saving the function call +** overhead. +*/ +#define _textcolor(color) COLOR_WHITE +#define _bgcolor(color) COLOR_BLACK +#define _bordercolor(color) COLOR_BLACK +#define _cpeekcolor(color) COLOR_WHITE + + + +/* End of cbm610.h */ +#endif +/*****************************************************************************/ +/* */ +/* pet.h */ +/* */ +/* PET system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-2005 Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _PET_H +#define _PET_H + + + +/* Check for errors */ +#if !defined(__PET__) +# error This module may only be used when compiling for the CBM PET! +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 + +/* Masks for joy_read */ +#define JOY_UP_MASK 0x01 +#define JOY_DOWN_MASK 0x02 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x10 + +/* Define hardware */ +#include <_pia.h> +#define PIA1 (*(struct __pia*)0xE810) +#define PIA2 (*(struct __pia*)0xE820) + +#include <_6522.h> +#define VIA (*(struct __6522*)0xE840) + +/* All models from 40xx and above */ +#include <_6545.h> +#define CRTC (*(struct __6545)0xE880) + +/* SuperPET only */ +#include <_6551.h> +#define ACIA (*(struct __6551*)0xEFF0) + + + +/*****************************************************************************/ +/* Variables */ +/*****************************************************************************/ + + + +/* The addresses of the static drivers */ +extern void pet_ptvjoy_joy[]; +extern void pet_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +/* The following #defines will cause the matching functions calls in conio.h +** to be overlaid by macros with the same names, saving the function call +** overhead. +*/ +#define _textcolor(color) COLOR_WHITE +#define _bgcolor(color) COLOR_BLACK +#define _bordercolor(color) COLOR_BLACK +#define _cpeekcolor(color) COLOR_WHITE + + + +/* End of pet.h */ +#endif +/*****************************************************************************/ +/* */ +/* Atari VCS 2600 TIA registers addresses */ +/* */ +/* Source: DASM - vcs.h */ +/* */ +/* Florent Flament (contact@florentflament.com), 2017 */ +/* */ +/*****************************************************************************/ + +/* TIA write / read registers */ +struct __tia { + union { + unsigned char vsync; + unsigned char cxm0p; + }; + union { + unsigned char vblank; + unsigned char cxm1p; + }; + union { + unsigned char wsync; + unsigned char cxp0fb; + }; + union { + unsigned char rsync; + unsigned char cxp1fb; + }; + union { + unsigned char nusiz0; + unsigned char cxm0fb; + }; + union { + unsigned char nusiz1; + unsigned char cxm1fb; + }; + union { + unsigned char colup0; + unsigned char cxblpf; + }; + union { + unsigned char colup1; + unsigned char cxppmm; + }; + union { + unsigned char colupf; + unsigned char inpt0; + }; + union { + unsigned char colubk; + unsigned char inpt1; + }; + union { + unsigned char ctrlpf; + unsigned char inpt2; + }; + union { + unsigned char refp0; + unsigned char inpt3; + }; + union { + unsigned char refp1; + unsigned char inpt4; + }; + union { + unsigned char pf0; + unsigned char inpt5; + }; + unsigned char pf1; + unsigned char pf2; + unsigned char resp0; + unsigned char resp1; + unsigned char resm0; + unsigned char resm1; + unsigned char resbl; + unsigned char audc0; + unsigned char audc1; + unsigned char audf0; + unsigned char audf1; + unsigned char audv0; + unsigned char audv1; + unsigned char grp0; + unsigned char grp1; + unsigned char enam0; + unsigned char enam1; + unsigned char enabl; + unsigned char hmp0; + unsigned char hmp1; + unsigned char hmm0; + unsigned char hmm1; + unsigned char hmbl; + unsigned char vdelp0; + unsigned char vdelp1; + unsigned char vdelbl; + unsigned char resmp0; + unsigned char resmp1; + unsigned char hmove; + unsigned char hmclr; + unsigned char cxclr; +}; +/*****************************************************************************/ +/* */ +/* ctype.h */ +/* */ +/* Character handling */ +/* */ +/* */ +/* */ +/* (C) 1998-2013, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _CTYPE_H +#define _CTYPE_H + + +/* 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 --eagerly-inline-funcs 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 + + + +/*****************************************************************************/ +/* */ +/* _vdc.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 1998-2000 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __VDC_H +#define __VDC_H + + + +/* Define a structure with the vdc register offsets */ +struct __vdc { + unsigned char ctrl; /* Control register */ + unsigned char data; /* Data register */ +}; + + + +/* End of _vdc.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* _6526.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 1998-2000 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __6526_H +#define __6526_H + + + +/* Define a structure with the 6526 register offsets. +** NOTE: The timer registers are not declared as 16 bit registers, because +** the order in which the two 8 bit halves are written is important, and +** the compiler doesn't guarantee any order when writing 16 bit values. +*/ +struct __6526 { + unsigned char pra; /* Port register A */ + unsigned char prb; /* Port register B */ + unsigned char ddra; /* Data direction register A */ + unsigned char ddrb; /* Data direction register B */ + unsigned char ta_lo; /* Timer A, low byte */ + unsigned char ta_hi; /* Timer A, high byte */ + unsigned char tb_lo; /* Timer B, low byte */ + unsigned char tb_hi; /* Timer B, high byte */ + unsigned char tod_10; /* TOD, 1/10 sec. */ + unsigned char tod_sec; /* TOD, seconds */ + unsigned char tod_min; /* TOD, minutes */ + unsigned char tod_hour; /* TOD, hours */ + unsigned char sdr; /* Serial data register */ + unsigned char icr; /* Interrupt control register */ + unsigned char cra; /* Control register A */ + unsigned char crb; /* Control register B */ +}; + + + +/* End of _6526.h */ +#endif + + + +/* + Supreme GEOS header file + includes all other headers + + Maciej 'YTM/Elysium' Witkowiak, 27.10.1999 +*/ + + + +#ifndef _GEOS_H +#define _GEOS_H + + + +/* Check for errors */ +#if !defined(__GEOS__) +# error This module may only be used when compiling for GEOS! +#endif + + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + +#define CH_ULCORNER '+' +#define CH_URCORNER '+' +#define CH_LLCORNER '+' +#define CH_LRCORNER '+' +#define CH_TTEE '+' +#define CH_RTEE '+' +#define CH_BTEE '+' +#define CH_LTEE '+' +#define CH_CROSS '+' + +#define CH_F1 KEY_F1 +#define CH_F2 KEY_F2 +#define CH_F3 KEY_F3 +#define CH_F4 KEY_F4 +#define CH_F5 KEY_F5 +#define CH_F6 KEY_F6 +#define CH_F7 KEY_F7 +#define CH_F8 KEY_F8 + +#define CH_CURS_UP KEY_UP +#define CH_CURS_DOWN KEY_DOWN +#define CH_CURS_LEFT KEY_LEFT +#define CH_CURS_RIGHT KEY_RIGHT +#define CH_DEL KEY_DELETE +#define CH_INS KEY_INSERT +#define CH_ENTER KEY_ENTER +#define CH_STOP KEY_STOP +#define CH_ESC KEY_ESC + +#define COLOR_BLACK BLACK +#define COLOR_WHITE WHITE +#define COLOR_RED RED +#define COLOR_CYAN CYAN +#define COLOR_VIOLET PURPLE +#define COLOR_PURPLE PURPLE +#define COLOR_GREEN GREEN +#define COLOR_BLUE BLUE +#define COLOR_YELLOW YELLOW +#define COLOR_ORANGE ORANGE +#define COLOR_BROWN BROWN +#define COLOR_LIGHTRED LTRED +#define COLOR_GRAY1 DKGREY +#define COLOR_GRAY2 MEDGREY +#define COLOR_LIGHTGREEN LTGREEN +#define COLOR_LIGHTBLUE LTBLUE +#define COLOR_GRAY3 LTGREY + +#define TGI_COLOR_BLACK COLOR_BLACK +#define TGI_COLOR_WHITE COLOR_WHITE +#define TGI_COLOR_RED COLOR_RED +#define TGI_COLOR_CYAN COLOR_CYAN +#define TGI_COLOR_VIOLET COLOR_VIOLET +#define TGI_COLOR_PURPLE COLOR_PURPLE +#define TGI_COLOR_GREEN COLOR_GREEN +#define TGI_COLOR_BLUE COLOR_BLUE +#define TGI_COLOR_YELLOW COLOR_YELLOW +#define TGI_COLOR_ORANGE COLOR_ORANGE +#define TGI_COLOR_BROWN COLOR_BROWN +#define TGI_COLOR_LIGHTRED COLOR_LIGHTRED +#define TGI_COLOR_GRAY1 COLOR_GRAY1 +#define TGI_COLOR_GRAY2 COLOR_GRAY2 +#define TGI_COLOR_LIGHTGREEN COLOR_LIGHTGREEN +#define TGI_COLOR_LIGHTBLUE COLOR_LIGHTBLUE +#define TGI_COLOR_GRAY3 COLOR_GRAY3 + +#define JOY_UP_MASK 0x01 +#define JOY_DOWN_MASK 0x02 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x10 + + + +/* End of geos.h */ +#endif +/*****************************************************************************/ +/* */ +/* Atari VCS 2600 TIA & RIOT registers addresses */ +/* */ +/* Source: DASM Version 1.05 - vcs.h */ +/* */ +/* Florent Flament (contact@florentflament.com), 2017 */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ATARI2600_H +#define _ATARI2600_H + + + +/* Check for errors */ +#if !defined(__ATARI2600__) +# error This module may only be used when compiling for the Atari 2600! +#endif + +#include <_tia.h> +#define TIA (*(struct __tia*)0x0000) + +#include <_riot.h> +#define RIOT (*(struct __riot*)0x0280) + + + +/* End of atari2600.h */ +#endif +/*****************************************************************************/ +/* */ +/* device.h */ +/* */ +/* Device handling */ +/* */ +/* */ +/* */ +/* (C) 2012 Oliver Schmidt, */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _DEVICE_H +#define _DEVICE_H + + + +#ifndef _HAVE_size_t +typedef unsigned size_t; +#define _HAVE_size_t +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +#define INVALID_DEVICE 255 + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +unsigned char getfirstdevice (void); + +unsigned char __fastcall__ getnextdevice (unsigned char device); + +unsigned char getcurrentdevice (void); + +char* __fastcall__ getdevicedir (unsigned char device, char* buf, size_t size); + + + +/* End of device.h */ +#endif +/*****************************************************************************/ +/* */ +/* pce.h */ +/* */ +/* PC-Engine system-specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2015, Groepaz/Hitmen */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +#ifndef _PCE_H +#define _PCE_H + +/* Check for errors */ +#if !defined(__PCE__) +# error This module may only be used when compiling for the PCE! +#endif + +#define CH_HLINE 1 +#define CH_VLINE 2 +#define CH_CROSS 3 +#define CH_ULCORNER 4 +#define CH_URCORNER 5 +#define CH_LLCORNER 6 +#define CH_LRCORNER 7 +#define CH_TTEE 8 +#define CH_BTEE 9 +#define CH_LTEE 10 +#define CH_RTEE 11 + +#define CH_ENTER 13 +#define CH_PI 18 + +/* Color defines (CBM-compatible, for conio) */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 +#define COLOR_RED 0x02 +#define COLOR_CYAN 0x03 +#define COLOR_VIOLET 0x04 +#define COLOR_GREEN 0x05 +#define COLOR_BLUE 0x06 +#define COLOR_YELLOW 0x07 +#define COLOR_ORANGE 0x08 +#define COLOR_BROWN 0x09 +#define COLOR_LIGHTRED 0x0A +#define COLOR_GRAY1 0x0B +#define COLOR_GRAY2 0x0C +#define COLOR_LIGHTGREEN 0x0D +#define COLOR_LIGHTBLUE 0x0E +#define COLOR_GRAY3 0x0F + +#define TV_NTSC 0 +#define TV_PAL 1 +#define TV_OTHER 2 + +/* Masks for joy_read */ +#define JOY_UP_MASK 0x10 +#define JOY_DOWN_MASK 0x40 +#define JOY_LEFT_MASK 0x80 +#define JOY_RIGHT_MASK 0x20 +#define JOY_BTN_1_MASK 0x01 +#define JOY_BTN_2_MASK 0x02 +#define JOY_BTN_3_MASK 0x04 +#define JOY_BTN_4_MASK 0x08 + +#define JOY_BTN_I_MASK JOY_BTN_1_MASK +#define JOY_BTN_II_MASK JOY_BTN_2_MASK +#define JOY_SELECT_MASK JOY_BTN_3_MASK +#define JOY_RUN_MASK JOY_BTN_4_MASK + +#define JOY_BTN_I(v) ((v) & JOY_BTN_I_MASK) +#define JOY_BTN_II(v) ((v) & JOY_BTN_II_MASK) +#define JOY_SELECT(v) ((v) & JOY_SELECT_MASK) +#define JOY_RUN(v) ((v) & JOY_RUN_MASK) + +/* No support for dynamically loadable drivers */ +#define DYN_DRV 0 + +/* The addresses of the static drivers */ +extern void pce_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ + +void waitvsync (void); +/* Wait for start of the next frame */ + +/* NOTE: all PCEs are NTSC. */ +#define get_tv() TV_NTSC +/* Return the video mode the machine is using. */ + +/* End of pce.h */ +#endif +/*****************************************************************************/ +/* */ +/* apple2enh.h */ +/* */ +/* enhanced Apple //e system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2004 Oliver Schmidt, */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _APPLE2ENH_H +#define _APPLE2ENH_H + + + +/* Check for errors */ +#if !defined(__APPLE2ENH__) +# error This module may only be used when compiling for the enhanced Apple //e! +#endif + + + +#include + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Characters codes */ +#define CH_DEL 0x7F +#define CH_CURS_UP 0x0B +#define CH_CURS_DOWN 0x0A + +#define CH_HLINE 0x5F +#define CH_VLINE 0xDF +#define CH_ULCORNER 0x5F +#define CH_URCORNER 0x20 +#define CH_LLCORNER 0xD4 +#define CH_LRCORNER 0xDF +#define CH_TTEE 0x5F +#define CH_BTEE 0xD4 +#define CH_LTEE 0xD4 +#define CH_RTEE 0xDF +#define CH_CROSS 0xD4 + +/* These are defined to be OpenApple + NumberKey */ +#define CH_F1 0xB1 +#define CH_F2 0xB2 +#define CH_F3 0xB3 +#define CH_F4 0xB4 +#define CH_F5 0xB5 +#define CH_F6 0xB6 +#define CH_F7 0xB7 +#define CH_F8 0xB8 +#define CH_F9 0xB9 +#define CH_F10 0xB0 + +/* Video modes */ +#define VIDEOMODE_40x24 0x0011 +#define VIDEOMODE_80x24 0x0012 +#define VIDEOMODE_40COL VIDEOMODE_40x24 +#define VIDEOMODE_80COL VIDEOMODE_80x24 + + + +/*****************************************************************************/ +/* Variables */ +/*****************************************************************************/ + + + +/* The addresses of the static drivers */ +extern void a2e_auxmem_emd[]; +extern void a2e_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ +extern void a2e_stdmou_mou[]; /* Referred to by mouse_static_stddrv[] */ +extern void a2e_ssc_ser[]; +extern void a2e_hi_tgi[]; /* Referred to by tgi_static_stddrv[] */ +extern void a2e_lo_tgi[]; + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +unsigned __fastcall__ videomode (unsigned mode); +/* Set the video mode, return the old mode. Call with one of the VIDEOMODE_xx +** constants. +*/ + + + +/* End of apple2enh.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 +/*****************************************************************************/ +/* */ +/* 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 +/*****************************************************************************/ +/* */ +/* Atari VCS 2600 RIOT registers addresses */ +/* */ +/* Source: DASM - vcs.h */ +/* */ +/* Florent Flament (contact@florentflament.com), 2017 */ +/* */ +/*****************************************************************************/ + +/* RIOT registers */ +struct __riot { + unsigned char swcha; + unsigned char swacnt; + unsigned char swchb; + unsigned char swbcnt; + unsigned char intim; + unsigned char timint; + + unsigned char unused[14]; + + unsigned char tim1t; + unsigned char tim8t; + unsigned char tim64t; + unsigned char t1024t; +}; +/*****************************************************************************/ +/* */ +/* inttypes.h */ +/* */ +/* Format conversion of integer types */ +/* */ +/* */ +/* */ +/* (C) 2002-2011, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +/* Note: This file is not fully ISO 9899-1999 compliant because cc65 lacks +** a 64 bit data types and is not able to return structs > 4 bytes. The +** declarations have been adjusted accordingly or left out. +*/ + + + +#ifndef _INTTYPES_H +#define _INTTYPES_H + + + +/* inttypes.h must always include stdint.h */ +#ifndef _STDINT_H +#include +#endif + + + +/* Standard functions */ +intmax_t __fastcall__ imaxabs (intmax_t val); +intmax_t __fastcall__ strtoimax (const char* nptr, char** endptr, int base); +uintmax_t __fastcall__ strtoumax (const char* nptr, char** endptr, int base); + + + +/* printf() macros for signed integers */ +#define PRId8 "d" +#define PRId16 "d" +#define PRId32 "ld" + +#define PRIdLEAST8 "d" +#define PRIdLEAST16 "d" +#define PRIdLEAST32 "ld" + +#define PRIdFAST8 "d" +#define PRIdFAST16 "d" +#define PRIdFAST32 "ld" + +#define PRIdMAX "ld" +#define PRIdPTR "d" + +#define PRIi8 "i" +#define PRIi16 "i" +#define PRIi32 "li" + +#define PRIiLEAST8 "i" +#define PRIiLEAST16 "i" +#define PRIiLEAST32 "li" + +#define PRIiFAST8 "i" +#define PRIiFAST16 "i" +#define PRIiFAST32 "li" + +#define PRIiMAX "li" +#define PRIiPTR "i" + +/* fprintf() macros for unsigned integers */ +#define PRIo8 "o" +#define PRIo16 "o" +#define PRIo32 "lo" + +#define PRIoLEAST8 "o" +#define PRIoLEAST16 "o" +#define PRIoLEAST32 "lo" + +#define PRIoFAST8 "o" +#define PRIoFAST16 "o" +#define PRIoFAST32 "lo" + +#define PRIoMAX "lo" +#define PRIoPTR "o" + +#define PRIu8 "u" +#define PRIu16 "u" +#define PRIu32 "lu" + +#define PRIuLEAST8 "u" +#define PRIuLEAST16 "u" +#define PRIuLEAST32 "lu" + +#define PRIuFAST8 "u" +#define PRIuFAST16 "u" +#define PRIuFAST32 "lu" + +#define PRIuMAX "lu" +#define PRIuPTR "u" + +#define PRIx8 "x" +#define PRIx16 "x" +#define PRIx32 "lx" + +#define PRIxLEAST8 "x" +#define PRIxLEAST16 "x" +#define PRIxLEAST32 "lx" + +#define PRIxFAST8 "x" +#define PRIxFAST16 "x" +#define PRIxFAST32 "lx" + +#define PRIxMAX "lx" +#define PRIxPTR "x" + +#define PRIX8 "X" +#define PRIX16 "X" +#define PRIX32 "lX" + +#define PRIXLEAST8 "X" +#define PRIXLEAST16 "X" +#define PRIXLEAST32 "lX" + +#define PRIXFAST8 "X" +#define PRIXFAST16 "X" +#define PRIXFAST32 "lX" + +#define PRIXMAX "lX" +#define PRIXPTR "X" + +/* fscanf() macros for signed integers */ +#define SCNd8 "hd" +#define SCNd16 "d" +#define SCNd32 "ld" + +#define SCNdLEAST8 "hd" +#define SCNdLEAST16 "d" +#define SCNdLEAST32 "ld" + +#define SCNdFAST8 "hd" +#define SCNdFAST16 "d" +#define SCNdFAST32 "ld" + +#define SCNdMAX "ld" +#define SCNdPTR "d" + +#define SCNi8 "hi" +#define SCNi16 "i" +#define SCNi32 "li" + +#define SCNiLEAST8 "hi" +#define SCNiLEAST16 "i" +#define SCNiLEAST32 "li" + +#define SCNiFAST8 "hi" +#define SCNiFAST16 "i" +#define SCNiFAST32 "li" + +#define SCNiMAX "li" +#define SCNiPTR "i" + +/* fscanf() macros for unsigned integers */ +#define SCNo8 "ho" +#define SCNo16 "o" +#define SCNo32 "lo" + +#define SCNoLEAST8 "ho" +#define SCNoLEAST16 "o" +#define SCNoLEAST32 "lo" + +#define SCNoFAST8 "ho" +#define SCNoFAST16 "o" +#define SCNoFAST32 "lo" + +#define SCNoMAX "lo" +#define SCNoPTR "o" + +#define SCNu8 "hu" +#define SCNu16 "u" +#define SCNu32 "lu" + +#define SCNuLEAST8 "hu" +#define SCNuLEAST16 "u" +#define SCNuLEAST32 "lu" + +#define SCNuFAST8 "hu" +#define SCNuFAST16 "u" +#define SCNuFAST32 "lu" + +#define SCNuMAX "lu" +#define SCNuPTR "u" + +#define SCNx8 "hx" +#define SCNx16 "x" +#define SCNx32 "lx" + +#define SCNxLEAST8 "hx" +#define SCNxLEAST16 "x" +#define SCNxLEAST32 "lx" + +#define SCNxFAST8 "hx" +#define SCNxFAST16 "x" +#define SCNxFAST32 "lx" + +#define SCNxMAX "lx" +#define SCNxPTR "x" + + + +/* End of inttypes.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* peekpoke.h */ +/* */ +/* PEEK and POKE macros for those who want to write BASIC code in C */ +/* */ +/* */ +/* */ +/* (C) 2003 Ullrich von Bassewitz */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* setjmp.h */ +/* */ +/* Nonlocal jumps */ +/* */ +/* */ +/* */ +/* (C) 1998-2009, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _SETJMP_H +#define _SETJMP_H + + + +typedef char jmp_buf [5]; + + + +int __fastcall__ _setjmp (jmp_buf buf); +#define setjmp _setjmp /* ISO insists on a macro */ +void __fastcall__ longjmp (jmp_buf buf, int retval) __attribute__((noreturn)); + + + +/* End of setjmp.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* dbg.h */ +/* */ +/* Debugger module interface */ +/* */ +/* */ +/* */ +/* (C) 1998-2000, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +/* +** This is the interface to the cc65 debugger. Since many of the functions +** used for the debugger are quite usable even in another context, they +** are declared here. +** +** To use the debugger, just call DbgInit in your application. Once it has +** been called, the debugger will catch any BRK opcode. Use the BREAK macro +** defined below to insert breakpoints into your code. +** +** There are currently a lot of things that cannot be debugged, graphical +** applications are an example. The debugger does not save your screen +** contents, so even your text screen gets destroyed. However, you can +** debug the C and runtime library, even if the debugger is using this +** stuff itself. +** +** Note: When using the debugger, there are some other identifiers with +** external linkage, that start with Dbg. Avoid those names if you use the +** module. +*/ + + + +#ifndef _DBG_H +#define _DBG_H + + + +/*****************************************************************************/ +/* Utility functions */ +/*****************************************************************************/ + + + +unsigned __fastcall__ DbgDisAsm (unsigned Addr, char* Buf, unsigned char Len); +/* Disassemble one instruction at address addr into the given buffer. +** The resulting line has the format, "AAAA__BB_BB_BB___OPC_OPERAND", +** where AAAA is the hexadecimal representation of addr, BB are the +** bytes (in hex) that make the instruction, OPC is the mnemonic, and +** OPERAND is an operand for the instruction. +** The buffer is filled with spaces up to the given length and terminated as +** a usual C string. NOTE: Buf must be able to hold Len+1 characters. +** The function returns the length of the disassembled instruction, so, +** to disassemble the next instruction, add the return value to addr +** and call the function again. +*/ + +unsigned __fastcall__ DbgDisAsmLen (unsigned Addr); +/* Disassemble one instruction, but do only return the length, do not +** create a visible representation. This function is useful when +** disassembling backwards, it is much faster than DbgDisAsm. +*/ + +int __fastcall__ DbgIsRAM (unsigned Addr); +/* Return true if we can read and write the given address */ + +char* __cdecl__ DbgMemDump (unsigned Addr, char* Buf, unsigned char Len); +/* Create a line of a memory dump in the given buffer. The buffer contains +** the starting address (4 digits hex), then Len bytes in this format: +** "AAAA__XX_YY_ZZ_...". The passed char buffer must hold Len*3+5 bytes +** plus a terminator byte. +** The function does not work correctly if the created string is longer +** than 255 bytes. +** The return value is Buf. +*/ + + + +/*****************************************************************************/ +/* High level user interface */ +/*****************************************************************************/ + + + +void __fastcall__ DbgInit (unsigned unused); +/* Initialize the debugger. Use 0 as parameter. The debugger will popup on +** next brk encountered. +*/ + +#define BREAK() __asm__ ("brk") +/* Use this to insert breakpoints into your code */ + + + +/* End of dbg.h */ +#endif + + + + +/*****************************************************************************/ +/* */ +/* _antic.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* "ANTIC, Alphanumeric Television Interface Controller, is responsible for */ +/* the generation of playfield graphics which is delivered as a datastream */ +/* to the related CTIA/GTIA chip. The CTIA/GTIA provides the coloring of the */ +/* playfield graphics, and is responsible for adding overlaid sprite */ +/* (referred to as "Player/Missile graphics" by Atari). Atari advertised it */ +/* as a true microprocessor, in that it has an instruction set to run */ +/* programs (called display lists) to process data. ANTIC has no capacity */ +/* for writing back computed values to memory, it merely reads data from */ +/* memory and processes it for output to the screen, therefore it is not */ +/* Turing complete." - Wikipedia article on "ANTIC" (with edits) */ +/* */ +/* (C) 2000 Freddy Offenga */ +/* 24-Jan-2011: Christian Krueger: Added defines for Antic instruction set */ +/* 2019-01-16: Bill Kendrick : More defines for registers */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + +#ifndef __ANTIC_H +#define __ANTIC_H + +/*****************************************************************************/ +/* Define a structure with the ANTIC coprocessor's register offsets */ +/*****************************************************************************/ + +struct __antic { + unsigned char dmactl; /* (W) direct memory access control */ + unsigned char chactl; /* (W) character mode control */ + unsigned char dlistl; /* display list pointer low-byte */ + unsigned char dlisth; /* display list pointer high-byte */ + unsigned char hscrol; /* (W) horizontal scroll enable */ + unsigned char vscrol; /* (W) vertical scroll enable */ + unsigned char unuse0; /* unused */ + unsigned char pmbase; /* (W) msb of p/m base address (for when DMACTL has player and/or missile DMA enabled) */ + unsigned char unuse1; /* unused */ + unsigned char chbase; /* (W) msb of character set base address */ + unsigned char wsync; /* (W) wait for horizontal synchronization */ + unsigned char vcount; /* (R) vertical line counter */ + unsigned char penh; /* (R) light pen horizontal position */ + unsigned char penv; /* (R) light pen vertical position */ + unsigned char nmien; /* (W) non-maskable interrupt enable */ + union { + /* (W) ("NMIRES") nmi reset -- clears the interrupt request register; + ** resets all of the NMI status together + */ + unsigned char nmires; + + /* (R) ("NMIST") nmi status -- holds cause for the NMI interrupt */ + unsigned char nmist; + }; +}; + + +/*****************************************************************************/ +/* DMACTL register options */ +/*****************************************************************************/ + +/* Initialized to 0x22: DMA fetch, normal playfield, no PMG DMA, double-line PMGs */ + +/* Playfield modes: */ +#define DMACTL_PLAYFIELD_NONE 0x00 +#define DMACTL_PLAYFIELD_NARROW 0x01 /* e.g., 32 bytes per scanline with thick borders */ +#define DMACTL_PLAYFIELD_NORMAL 0x02 /* e.g., 40 bytes per scanline with normal borders */ +#define DMACTL_PLAYFIELD_WIDE 0x03 /* e.g., 48 bytes per scanline with no borders (overscan) */ + +/* Other options: */ + +/* If not set, GTIA's GRAFP0 thru GRAFP3, and/or GRAFM registers are used for +** player & missile shapes, respectively. (Modify the registers during the horizontal blank +** (Display List Interrupt), a la "racing the beam" on an Atari VCS/2600, ) +** if set, ANTIC's PMBASE will be used to fetch shapes from memory via DMA. +*/ +#define DMACTL_DMA_MISSILES 0x04 +#define DMACTL_DMA_PLAYERS 0x08 + +/* Unless set, PMGs (as fetched via DMA) will be double-scanline resolution */ +#define DMACTL_PMG_SINGLELINE 0x10 + +/* Unless set, ANTIC operation is disabled, since it cannot fetch +** Display List instructions +*/ +#define DMACTL_DMA_FETCH 0x20 + + +/*****************************************************************************/ +/* CHACTL register options */ +/*****************************************************************************/ + +/* Initialized to 2 (CHACTL_CHAR_NORMAL | CHACTL_INV_PRESENT) */ + +/* Inverted (upside-down) characters */ +#define CHACTL_CHAR_NORMAL 0x00 +#define CHACTL_CHAR_INVERTED 0x04 + +/* Inverse (reverse-video) characters */ +#define CHACTL_INV_TRANS 0x00 /* chars with high-bit shown */ +#define CHACTL_INV_OPAQUE 0x01 /* chars with high-bit appear as space */ +#define CHACTL_INV_PRESENT 0x02 /* chars with high-bit are reverse-video */ + + +/*****************************************************************************/ +/* Values for NMIEN (enabling interrupts) & NMIST (cause for the interrupt) */ +/*****************************************************************************/ + +/* Display List Interrupts +** Called on a modeline when "DL_DLI" bit is set the ANTIC instruction, +** and jumps through VDSLST vector. +*/ +#define NMIEN_DLI 0x80 + +/* Vertical Blank Interrupt +** Called during every vertical blank; see SYSVBV, VVBLKI, CRITIC, and VVBLKD, +** as well as the SETVBV routine. +*/ +#define NMIEN_VBI 0x40 + +/* [Reset] key pressed */ +#define NMIEN_RESET 0x20 + + +/*****************************************************************************/ +/* ANTIC instruction set */ +/*****************************************************************************/ + +/* Absolute instructions (non mode lines) */ +#define DL_JMP ((unsigned char) 1) +#define DL_JVB ((unsigned char) 65) + +#define DL_BLK1 ((unsigned char) 0) /* 1 blank scanline */ +#define DL_BLK2 ((unsigned char) 16) /* 2 blank scanlines */ +#define DL_BLK3 ((unsigned char) 32) /* ...etc. */ +#define DL_BLK4 ((unsigned char) 48) +#define DL_BLK5 ((unsigned char) 64) +#define DL_BLK6 ((unsigned char) 80) +#define DL_BLK7 ((unsigned char) 96) +#define DL_BLK8 ((unsigned char) 112) + + +/* Absolute instructions (mode lines) */ + +/* Note: Actual width varies (e.g., 40 vs 32 vs 48) depending on +** normal vs narrow vs wide (overscan) playfield setting; see DMACTL +*/ + +/* Character modes (text, tile graphics, etc.) */ + +/* monochrome, 40 character & 8 scanlines per mode line (aka Atari BASIC GRAPHICS 0 via OS's CIO routines) */ +#define DL_CHR40x8x1 ((unsigned char) 2) + +/* monochrome, 40 character & 10 scanlines per mode line (like GR. 0, with descenders) */ +#define DL_CHR40x10x1 ((unsigned char) 3) + +/* colour, 40 character & 8 scanlines per mode line (GR. 12) */ +#define DL_CHR40x8x4 ((unsigned char) 4) + +/* colour, 40 character & 16 scanlines per mode line (GR. 13) */ +#define DL_CHR40x16x4 ((unsigned char) 5) + +/* colour (duochrome per character), 20 character & 8 scanlines per mode line (GR. 1) */ +#define DL_CHR20x8x2 ((unsigned char) 6) + +/* colour (duochrome per character), 20 character & 16 scanlines per mode line (GR. 2) */ +#define DL_CHR20x16x2 ((unsigned char) 7) + + +/* Bitmap modes */ + +/* colour, 40 pixel & 8 scanlines per mode line (GR. 3) */ +#define DL_MAP40x8x4 ((unsigned char) 8) + +/* 'duochrome', 80 pixel & 4 scanlines per mode line (GR.4) */ +#define DL_MAP80x4x2 ((unsigned char) 9) + +/* colour, 80 pixel & 4 scanlines per mode line (GR.5) */ +#define DL_MAP80x4x4 ((unsigned char) 10) + +/* 'duochrome', 160 pixel & 2 scanlines per mode line (GR.6) */ +#define DL_MAP160x2x2 ((unsigned char) 11) + +/* 'duochrome', 160 pixel & 1 scanline per mode line (GR.14) */ +#define DL_MAP160x1x2 ((unsigned char) 12) + +/* 4 colours, 160 pixel & 2 scanlines per mode line (GR.7) */ +#define DL_MAP160x2x4 ((unsigned char) 13) + +/* 4 colours, 160 pixel & 1 scanline per mode line (GR.15) */ +#define DL_MAP160x1x4 ((unsigned char) 14) + +/* monochrome, 320 pixel & 1 scanline per mode line (GR.8) */ +#define DL_MAP320x1x1 ((unsigned char) 15) + + +/* Equivalents, for people familiar with Atari 8-bit OS */ + +#define DL_GRAPHICS0 DL_CHR40x8x1 +#define DL_GRAPHICS1 DL_CHR20x8x2 +#define DL_GRAPHICS2 DL_CHR20x16x2 +#define DL_GRAPHICS3 DL_MAP40x8x4 +#define DL_GRAPHICS4 DL_MAP80x4x2 +#define DL_GRAPHICS5 DL_MAP80x4x4 +#define DL_GRAPHICS6 DL_MAP160x2x2 +#define DL_GRAPHICS7 DL_MAP160x2x4 +#define DL_GRAPHICS8 DL_MAP320x1x1 +#define DL_GRAPHICS9 DL_MAP320x1x1 /* N.B.: GRAPHICS 9, 10, and 11 also involve GTIA's PRIOR register */ +#define DL_GRAPHICS10 DL_MAP320x1x1 +#define DL_GRAPHICS11 DL_MAP320x1x1 +#define DL_GRAPHICS12 DL_CHR40x8x4 /* N.B.: Atari 400/800 OS didn't have GRAPHICS 12 or 13 */ +#define DL_GRAPHICS13 DL_CHR40x16x4 +#define DL_GRAPHICS14 DL_MAP160x1x2 +#define DL_GRAPHICS15 DL_MAP160x1x4 + +/* Atari 400/800 OS didn't have GRAPHICS 14 or 15, so they were known by "6+" and "7+" */ +#define DL_GRAPHICS6PLUS DL_GRAPHICS14 +#define DL_GRAPHICS7PLUS DL_GRAPHICS15 + +/* Neither Atari 400/800 nor XL OS supported 10-scanline (descenders) text mode via CIO */ +#define DL_GRAPHICS0_DESCENDERS DL_CHR40x10x1 + +/* Modifiers to mode lines */ +#define DL_HSCROL(x) ((unsigned char)((x) | 16)) /* enable smooth horizontal scrolling on this line; see HSCROL */ +#define DL_VSCROL(x) ((unsigned char)((x) | 32)) /* enable smooth vertical scrolling on this line; see VSCROL */ +#define DL_LMS(x) ((unsigned char)((x) | 64)) /* Load Memory Scan (next two bytes must be the LSB/MSB of the data to load) */ + +/* General modifier */ +#define DL_DLI(x) ((unsigned char)((x) | 128)) /* enable Display List Interrupt on this mode line */ + + +/* End of _antic.h */ +#endif /* #ifndef __ANTIC_H */ +/*****************************************************************************/ +/* */ +/* target.h */ +/* */ +/* Target specific definitions */ +/* */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _TARGET_H +#define _TARGET_H + + + +/* Include the correct target specific file */ +#if defined(__APPLE2ENH__) +# include +#elif defined(__APPLE2__) +# include +#elif defined(__ATARI__) +# include +#elif defined(__ATARI2600__) +# include +#elif defined(__ATARI5200__) +# include +#elif defined(__ATMOS__) +# include +#elif defined(__CBM__) +# include +#elif defined(__CREATIVISION__) +# include +#elif defined(__GAMATE__) +# include +#elif defined(__GEOS__) +# include +#elif defined(__LYNX__) +# include +#elif defined(__NES__) +# include +#elif defined(__OSIC1P__) +# include +#elif defined(__PCE__) +# include +#elif defined(__SUPERVISION__) +# include +#elif defined(__TELESTRAT__) +# include +#endif + + + +/* End of target.h */ +#endif +/*****************************************************************************/ +/* */ +/* _gtia.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* "GTIA, Graphic Television Interface Adaptor, is a custom chip used in the */ +/* Atari 8-bit family of computers and in the Atari 5200 console. In these */ +/* systems, GTIA chip works together with ANTIC to produce video display. */ +/* ANTIC generates the playfield graphics (text and bitmap) while GTIA */ +/* provides the color for the playfield and adds overlay objects known as */ +/* player/missile graphics (sprites)" - Wikipedia article on "GTIA" */ +/* */ +/* */ +/* (C) 2000 Freddy Offenga */ +/* 2019-01-16: Bill Kendrick : More defines for registers */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + +#ifndef __GTIA_H +#define __GTIA_H + +/*****************************************************************************/ +/* Define a structure with the GTIA register offsets for write (W) */ +/*****************************************************************************/ + +struct __gtia_write { + unsigned char hposp0; /* 0x00: horizontal position of player 0 */ + unsigned char hposp1; /* 0x01: horizontal position of player 1 */ + unsigned char hposp2; /* 0x02: horizontal position of player 2 */ + unsigned char hposp3; /* 0x03: horizontal position of player 3 */ + unsigned char hposm0; /* 0x04: horizontal position of missile 0 */ + unsigned char hposm1; /* 0x05: horizontal position of missile 1 */ + unsigned char hposm2; /* 0x06: horizontal position of missile 2 */ + unsigned char hposm3; /* 0x07: horizontal position of missile 3 */ + + unsigned char sizep0; /* 0x08: size of player 0 */ + unsigned char sizep1; /* 0x09: size of player 1 */ + unsigned char sizep2; /* 0x0A: size of player 2 */ + unsigned char sizep3; /* 0x0B: size of player 3 */ + unsigned char sizem; /* 0x0C: size of missiles */ + + unsigned char grafp0; /* 0x0D: graphics shape player 0 (used when ANTIC is not instructed to use DMA; see DMACTL) */ + unsigned char grafp1; /* 0x0E: graphics shape player 1 */ + unsigned char grafp2; /* 0x0F: graphics shape player 2 */ + unsigned char grafp3; /* 0x10: graphics shape player 3 */ + unsigned char grafm; /* 0x11: graphics shape missiles */ + + unsigned char colpm0; /* 0x12: color player and missile 0 */ + unsigned char colpm1; /* 0x13: color player and missile 1 */ + unsigned char colpm2; /* 0x14: color player and missile 2 */ + unsigned char colpm3; /* 0x15: color player and missile 3 */ + unsigned char colpf0; /* 0x16: color playfield 0 */ + unsigned char colpf1; /* 0x17: color playfield 1 */ + unsigned char colpf2; /* 0x18: color playfield 2 */ + unsigned char colpf3; /* 0x19: color playfield 3 */ + unsigned char colbk; /* 0x1A: color background */ + + unsigned char prior; /* 0x1B: priority selection */ + + unsigned char vdelay; + /* 0x1C: vertical delay -- one-line resolution movement of + ** vertical position of an object when two line resolution display is enabled + */ + + unsigned char gractl; /* 0x1D: stick/paddle latch, p/m control */ + + unsigned char hitclr; /* 0x1E: clear p/m collision */ + unsigned char consol; /* 0x1F: builtin speaker */ +}; + + +/*****************************************************************************/ +/* (W) Values for SIZEP0-SIZEP3 and SIZEM registers: */ +/*****************************************************************************/ + +#define PMG_SIZE_NORMAL 0x0 /* one color clock per pixel */ +#define PMG_SIZE_DOUBLE 0x1 /* two color clocks per pixel */ +#define PMG_SIZE_QUAD 0x2 /* four color clocks per pixel */ + + +/* COLPM0-COLPM3, COLPF0-COLPF3, COLBK color registers */ + +/*****************************************************************************/ +/* Color definitions */ +/*****************************************************************************/ + +/* Make a GTIA color value */ +#define _gtia_mkcolor(hue,lum) (((hue) << 4) | ((lum) << 1)) + +/* Luminance values go from 0 (black) to 7 (white) */ + +/* Hue values */ +/* (These can vary depending on TV standard (NTSC vs PAL), +** tint potentiometer settings, TV tint settings, emulator palette, etc.) +*/ +#define HUE_GREY 0 +#define HUE_GOLD 1 +#define HUE_GOLDORANGE 2 +#define HUE_REDORANGE 3 +#define HUE_ORANGE 4 +#define HUE_MAGENTA 5 +#define HUE_PURPLE 6 +#define HUE_BLUE 7 +#define HUE_BLUE2 8 +#define HUE_CYAN 9 +#define HUE_BLUEGREEN 10 +#define HUE_BLUEGREEN2 11 +#define HUE_GREEN 12 +#define HUE_YELLOWGREEN 13 +#define HUE_YELLOW 14 +#define HUE_YELLOWRED 15 + +/* Color defines, similar to c64 colors (untested) */ +/* Hardware palette values (for GTIA colxxx registers) */ +#define GTIA_COLOR_BLACK _gtia_mkcolor(HUE_GREY,0) +#define GTIA_COLOR_WHITE _gtia_mkcolor(HUE_GREY,7) +#define GTIA_COLOR_RED _gtia_mkcolor(HUE_REDORANGE,1) +#define GTIA_COLOR_CYAN _gtia_mkcolor(HUE_CYAN,3) +#define GTIA_COLOR_VIOLET _gtia_mkcolor(HUE_PURPLE,4) +#define GTIA_COLOR_GREEN _gtia_mkcolor(HUE_GREEN,2) +#define GTIA_COLOR_BLUE _gtia_mkcolor(HUE_BLUE,2) +#define GTIA_COLOR_YELLOW _gtia_mkcolor(HUE_YELLOW,7) +#define GTIA_COLOR_ORANGE _gtia_mkcolor(HUE_ORANGE,5) +#define GTIA_COLOR_BROWN _gtia_mkcolor(HUE_YELLOW,2) +#define GTIA_COLOR_LIGHTRED _gtia_mkcolor(HUE_REDORANGE,6) +#define GTIA_COLOR_GRAY1 _gtia_mkcolor(HUE_GREY,2) +#define GTIA_COLOR_GRAY2 _gtia_mkcolor(HUE_GREY,3) +#define GTIA_COLOR_LIGHTGREEN _gtia_mkcolor(HUE_GREEN,6) +#define GTIA_COLOR_LIGHTBLUE _gtia_mkcolor(HUE_BLUE,6) +#define GTIA_COLOR_GRAY3 _gtia_mkcolor(HUE_GREY,5) + + +/*****************************************************************************/ +/* (W) PRIOR register values */ +/*****************************************************************************/ + +#define PRIOR_P03_PF03 0x01 /* Players 0-3, then Playfields 0-3, then background */ +#define PRIOR_P01_PF03_P23 0x02 /* Players 0-1, then Playfields 0-3, then Players 2-3, then background */ +#define PRIOR_PF03_P03 0x04 /* Playfields 0-3, then Players 0-3, then background */ +#define PRIOR_PF01_P03_PF23 0x08 /* Playfields 0-1, then Players 0-3, then Playfields 2-3, then background */ + +#define PRIOR_5TH_PLAYER 0x10 /* Four missiles combine to be a 5th player (uses COLPF3) */ + +/* Causes overlap of players 0 & 1 and of players 2 & 3 to result in a third color, +** the logical OR of the two players' colors, and other overlaps (e.g., players 0 and 2) +** to result in black (0x00). +*/ +#define PRIOR_OVERLAP_3RD_COLOR 0x20 + + +/*****************************************************************************/ +/* (W) GTIA special graphics mode options for GPRIOR */ +/*****************************************************************************/ + +/* Pixels are 2 color clocks wide, and one scanline tall +** (so 80x192 in normal playfield width). +** May be used with both bitmap and character modelines. +*/ + +/* 16 shade shades of the background (COLBK) hue; +** Note: brightnesses other than 0 (darkest) in COLBK cause additional effects +*/ +#define PRIOR_GFX_MODE_9 0x40 + +/* 9 color palette mode; +** COLPM0 (acts as background) thru COLPM3, followed by COLPF0 thru COLPF3, and COLBK +*/ +#define PRIOR_GFX_MODE_10 0x80 + +/* 16 hues of the background (COLBK) brightness; +** Note: hues other than 0 (greys) in COLBK caus additional effects +*/ +#define PRIOR_GFX_MODE_11 0xC0 + + +/*****************************************************************************/ +/* (W) VDELAY register values */ +/*****************************************************************************/ + +#define VDELAY_MISSILE0 0x01 +#define VDELAY_MISSILE1 0x02 +#define VDELAY_MISSILE2 0x04 +#define VDELAY_MISSILE3 0x08 +#define VDELAY_PLAYER0 0x10 +#define VDELAY_PLAYER1 0x20 +#define VDELAY_PLAYER2 0x40 +#define VDELAY_PLAYER3 0x80 + + +/*****************************************************************************/ +/* (W) GRACTL register values */ +/*****************************************************************************/ + +#define GRACTL_MISSLES 0x01 /* enable missiles */ +#define GRACTL_PLAYERS 0x02 /* enable players */ + +/* "Latch" triggers; once pressed, will give a continuous +** pressed input until this bit is cleared +*/ +#define GRACTL_LATCH_TRIGGER_INPUTS 0x04 + + +/*****************************************************************************/ +/* Define a structure with the GTIA register offsets for read (R) */ +/*****************************************************************************/ + +struct __gtia_read { + unsigned char m0pf; /* 0x00: missile 0 to playfield collision */ + unsigned char m1pf; /* 0x01: missile 1 to playfield collision */ + unsigned char m2pf; /* 0x02: missile 2 to playfield collision */ + unsigned char m3pf; /* 0x03: missile 3 to playfield collision */ + unsigned char p0pf; /* 0x04: player 0 to playfield collision */ + unsigned char p1pf; /* 0x05: player 1 to playfield collision */ + unsigned char p2pf; /* 0x06: player 2 to playfield collision */ + unsigned char p3pf; /* 0x07: player 3 to playfield collision */ + unsigned char m0pl; /* 0x08: missile 0 to player collision */ + unsigned char m1pl; /* 0x09: missile 1 to player collision */ + unsigned char m2pl; /* 0x0A: missile 2 to player collision */ + unsigned char m3pl; /* 0x0B: missile 3 to player collision */ + unsigned char p0pl; /* 0x0C: player 0 to player collision */ + unsigned char p1pl; /* 0x0D: player 1 to player collision */ + unsigned char p2pl; /* 0x0E: player 2 to player collision */ + unsigned char p3pl; /* 0x0F: player 3 to player collision */ + + unsigned char trig0; /* 0x10: joystick trigger 0 (0=pressed, 1=released) */ + unsigned char trig1; /* 0x11: joystick trigger 1 */ + unsigned char trig2; /* 0x12: joystick trigger 2 */ + unsigned char trig3; /* 0x13: joystick trigger 3 */ + + unsigned char pal; /* 0x14: pal/ntsc flag */ + + unsigned char unused[10]; + + unsigned char consol; /* 0x1F: console buttons */ +}; + + +/*****************************************************************************/ +/* (R) PAL register possible values */ +/*****************************************************************************/ + +/* Note: This only tells you whether the GTIA is PAL or NTSC; some NTSC +** systems are modded with PAL ANTIC chips; testing VCOUNT limits can be +** done to check for that. Seems like it's not possible to test for SECAM +*/ + +#define TV_STD_PAL 0x1 +#define TV_STD_NTSC 0xE + + +/*****************************************************************************/ +/* Macros for reading console keys (Start/Select/Option) via CONSOL register */ +/*****************************************************************************/ + +#define CONSOL_START(x) !((unsigned char)((x) & 1)) /* true if Start pressed */ +#define CONSOL_SELECT(x) !((unsigned char)((x) & 2)) /* true if Select pressed */ +#define CONSOL_OPTION(x) !((unsigned char)((x) & 4)) /* true if Option pressed */ + + +/* End of _gtia.h */ +#endif /* #ifndef __GTIA_H */ +/*****************************************************************************/ +/* */ +/* stdarg.h */ +/* */ +/* Variable arguments */ +/* */ +/* */ +/* */ +/* (C) 1998-2004 Ullrich von Bassewitz */ +/* 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 + + + + +/*****************************************************************************/ +/* */ +/* 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 + +/*****************************************************************************/ +/* */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* creativision.h */ +/* */ +/* Creativision system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2013 cvemu */ +/* (C) 2017 Christian Groessler */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +#ifndef _CVISION_H +#define _CVISION_H + +/* Character codes */ +#define CH_VLINE 33 +#define CH_HLINE 34 +#define CH_ULCORNER 35 +#define CH_URCORNER 36 +#define CH_LLCORNER 37 +#define CH_LRCORNER 38 + +/* Masks for joy_read */ +#define JOY_UP_MASK 0x10 +#define JOY_DOWN_MASK 0x04 +#define JOY_LEFT_MASK 0x20 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x01 +#define JOY_BTN_2_MASK 0x02 + +/* no support for dynamically loadable drivers */ +#define DYN_DRV 0 + +/* Colours - from TMS9918 */ +#define COLOR_TRANSPARENT 0 +#define COLOR_BLACK 1 +#define COLOR_MED_GREEN 2 +#define COLOR_LIGHT_GREEN 3 +#define COLOR_DARK_BLUE 4 +#define COLOR_LIGHT_BLUE 5 +#define COLOR_DARK_RED 6 +#define COLOR_CYAN 7 +#define COLOR_MED_RED 8 +#define COLOR_LIGHT_RED 9 +#define COLOR_DARK_YELLOW 10 +#define COLOR_LIGHT_YELLOW 11 +#define COLOR_DARK_GREEN 12 +#define COLOR_MAGENTA 13 +#define COLOR_GREY 14 +#define COLOR_WHITE 15 + +/* Protos */ +void __fastcall__ psg_outb(unsigned char b); +void __fastcall__ psg_delay(unsigned char b); +void psg_silence(void); +void __fastcall__ bios_playsound(void *a, unsigned char b); + +#endif /* #ifndef _CVISION_H */ +/*****************************************************************************/ +/* */ +/* telestrat.h */ +/* */ +/* Oric Telestrat system-specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2017 Debrune Jérome, */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_RED 0x01 +#define COLOR_GREEN 0x02 +#define COLOR_YELLOW 0x03 +#define COLOR_BLUE 0x04 +#define COLOR_MAGENTA 0x05 +#define COLOR_CYAN 0x06 +#define COLOR_WHITE 0x07 + +/* TGI color defines */ +/* White and red are swapped, so that the pallete +** driver is compatible with black-and-white drivers. +*/ +#define TGI_COLOR_BLACK COLOR_BLACK +#define TGI_COLOR_WHITE 1 +#define TGI_COLOR_GREEN COLOR_GREEN +#define TGI_COLOR_YELLOW COLOR_YELLOW +#define TGI_COLOR_BLUE COLOR_BLUE +#define TGI_COLOR_MAGENTA COLOR_MAGENTA +#define TGI_COLOR_CYAN COLOR_CYAN +#define TGI_COLOR_RED 7 + + +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(); + + + + +/*****************************************************************************/ +/* */ +/* 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 +/*****************************************************************************/ +/* */ +/* _atarios.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +#ifndef __ATARIOS_H +#define __ATARIOS_H + + +/* IOCB Command Codes */ + +#define IOCB_OPEN 0x03 /* open */ +#define IOCB_GETREC 0x05 /* get record */ +#define IOCB_GETCHR 0x07 /* get character(s) */ +#define IOCB_PUTREC 0x09 /* put record */ +#define IOCB_PUTCHR 0x0B /* put character(s) */ +#define IOCB_CLOSE 0x0C /* close */ +#define IOCB_STATIS 0x0D /* status */ +#define IOCB_SPECIL 0x0E /* special */ +#define IOCB_DRAWLN 0x11 /* draw line */ +#define IOCB_FILLIN 0x12 /* draw line with right fill */ +#define IOCB_RENAME 0x20 /* rename disk file */ +#define IOCB_DELETE 0x21 /* delete disk file */ +#define IOCB_LOCKFL 0x23 /* lock file (set to read-only) */ +#define IOCB_UNLOCK 0x24 /* unlock file */ +#define IOCB_POINT 0x25 /* point sector */ +#define IOCB_NOTE 0x26 /* note sector */ +#define IOCB_GETFL 0x27 /* get file length */ +#define IOCB_CHDIR_MYDOS 0x29 /* change directory (MyDOS) */ +#define IOCB_MKDIR 0x2A /* make directory (MyDOS/SpartaDOS) */ +#define IOCB_RMDIR 0x2B /* remove directory (SpartaDOS) */ +#define IOCB_CHDIR_SPDOS 0x2C /* change directory (SpartaDOS) */ +#define IOCB_GETCWD 0x30 /* get current directory (MyDOS/SpartaDOS) */ +#define IOCB_FORMAT 0xFE /* format */ + + +/* Device control block */ + +struct __dcb { + unsigned char ddevic; /* device id */ + unsigned char dunit; /* unit number */ + unsigned char dcomnd; /* command */ + unsigned char dstats; /* command type / status return */ + void *dbuf; /* pointer to buffer */ + unsigned char dtimlo; /* device timeout in seconds */ + unsigned char dunuse; /* - unused - */ + unsigned int dbyt; /* # of bytes to transfer */ + union { + struct { + unsigned char daux1; /* 1st command auxiliary byte */ + unsigned char daux2; /* 2nd command auxiliary byte */ + }; + unsigned int daux; /* auxiliary as word */ + }; +}; + +typedef struct __dcb dcb_t; + + +/* I/O control block */ + +struct __iocb { + unsigned char handler; /* handler index number (0xff free) */ + unsigned char drive; /* device number (drive) */ + unsigned char command; /* command */ + unsigned char status; /* status of last operation */ + void* buffer; /* pointer to buffer */ + void* put_byte; /* pointer to device's PUT BYTE routine */ + unsigned int buflen; /* length of buffer */ + unsigned char aux1; /* 1st auxiliary byte */ + unsigned char aux2; /* 2nd auxiliary byte */ + unsigned char aux3; /* 3rd auxiliary byte */ + unsigned char aux4; /* 4th auxiliary byte */ + unsigned char aux5; /* 5th auxiliary byte */ + unsigned char spare; /* spare byte */ +}; + +typedef struct __iocb iocb_t; + + +/* DOS 2.x zeropage variables */ + +struct __dos2x { + unsigned char* zbufp; /* points to user filename */ + unsigned char* zdrva; /* points to serveral buffers (mostly VTOC) */ + unsigned char* zsba; /* points to sector buffer */ + unsigned char errno; /* number of occured error */ +}; + +typedef struct __dos2x dos2x_t; + + +/* A single device handler formed by it's routines */ + +struct __devhdl { + void *open; /* address of OPEN routine -1 */ + void *close; /* address of CLOSE routine -1 */ + void *get; /* address of GET BYTE routine -1 */ + void *put; /* address of PUT BYTE routine -1 */ + void *status; /* address of GET STATUS routine -1 */ + void *special; /* address od SPECIAL routine -1 */ + void (*init)(void); /* init routine (JMP INIT) */ + void *reserved; /* unused */ +}; + +typedef struct __devhdl devhdl_t; + + +/* List of device handlers, as managed in HATABS */ + +struct __hatabs { + unsigned char id; /* ATASCII code of handler e.g. 'C','D','E','K','P','S','R' */ + devhdl_t* devhdl; /* Pointer to routines of device */ +}; + +typedef struct __hatabs hatabs_t; + + +/* Floating point register */ + +struct __fpreg { +#ifdef OS_REV2 + unsigned char fr; + unsigned char frm[5]; /* 5-byte register mantissa */ +#else + unsigned char fr[6]; /* 6 bytes for single register */ +#endif +}; + +typedef struct __fpreg fpreg_t; + +enum { /* enum for access of floating point registers */ + FPIDX_R0 = 0, /* (to use as index) */ + FPIDX_RE = 1, + FPIDX_R1 = 2, + FPIDX_R2 = 3 +}; + + +/* Define a structure with atari os register offsets */ + +struct __os { + + // --- Zero-Page --- + +#ifdef OSA + unsigned char* linzbs; // = $00/$01 LINBUG RAM (WILL BE REPLACED BY MONITOR RAM) +#else + unsigned char linflg; // = $00 LNBUG FLAG (0 = NOT LNBUG) + unsigned char ngflag; // = $01 MEMORY STATUS (0 = FAILURE) +#endif + unsigned char* casini; // = $02/$03 CASSETTE INIT LOCATION + unsigned char* ramlo; // = $04/$05 RAM POINTER FOR MEMORY TEST + +#ifdef OSA + unsigned char tramsz; // = $06 FLAG FOR LEFT CARTRIDGE + unsigned char tstdat; // = $07 FLAG FOR RIGHT CARTRIDGE +#else + unsigned char trnsmz; // = $06 TEMPORARY REGISTER FOR RAM SIZE + unsigned char tstdat; // = $07 UNUSED (NOT TOUCHED DURING RESET/COLD START) +#endif + + // Cleared upon Coldstart only + + unsigned char warmst; // = $08 WARM START FLAG + unsigned char bootq; // = $09 SUCCESSFUL BOOT FLAG + void (*dosvec)(void); // = $0A/$0B DISK SOFTWARE START VECTOR + void (*dosini)(void); // = $0C/$0D DISK SOFTWARE INIT ADDRESS + unsigned char* appmhi; // = $0E/$0F APPLICATIONS MEMORY HI LIMIT + + // Cleared upon Coldstart or Warmstart + + unsigned char pokmsk; // = $10 SYSTEM MASK FOR POKEY IRQ ENABLE + unsigned char brkkey; // = $11 BREAK KEY FLAG + unsigned char rtclok[3]; // = $12-$14 REAL TIME CLOCK (IN 16 MSEC UNITS) + unsigned char* bufadr; // = $15/$16 INDIRECT BUFFER ADDRESS REGISTER + unsigned char iccomt; // = $17 COMMAND FOR VECTOR + unsigned char* dskfms; // = $18/$19 DISK FILE MANAGER POINTER + unsigned char* dskutl; // = $1A/$1B DISK UTILITIES POINTER +#ifdef OSA + unsigned char ptimot; // = $1C PRINTER TIME OUT REGISTER + unsigned char pbpnt; // = $1D PRINT BUFFER POINTER + unsigned char pbufsz; // = $1E PRINT BUFFER SIZE + unsigned char ptemp; // = $1F TEMPORARY REGISTER +#else + unsigned char abufpt[4]; // = $1C-$1F ACMI BUFFER POINTER AREA +#endif + iocb_t ziocb; // = $20-$2F ZERO PAGE I/O CONTROL BLOCK + + unsigned char status; // = $30 INTERNAL STATUS STORAGE + unsigned char chksum; // = $31 CHECKSUM (SINGLE BYTE SUM WITH CARRY) + unsigned char* bufr; // = $32/$33 POINTER TO DATA BUFFER + unsigned char* bfen; // = $34/$35 NEXT BYTE PAST END OF THE DATA BUFFER LO +#ifdef OSA + unsigned char cretry; // = $36 NUMBER OF COMMAND FRAME RETRIES + unsigned char dretry; // = $37 NUMBER OF DEVICE RETRIES +#else + unsigned int ltemp; // = $36/$37 LOADER TEMPORARY +#endif + unsigned char bufrfl; // = $38 DATA BUFFER FULL FLAG + unsigned char recvdn; // = $39 RECEIVE DONE FLAG + unsigned char xmtdon; // = $3A TRANSMISSION DONE FLAG + unsigned char chksnt; // = $3B CHECKSUM SENT FLAG + unsigned char nocksm; // = $3C NO CHECKSUM FOLLOWS DATA FLAG + unsigned char bptr; // = $3D CASSETTE BUFFER POINTER + unsigned char ftype; // = $3E CASSETTE IRG TYPE + unsigned char feof; // = $3F CASSETTE EOF FLAG (0 // = QUIET) + + unsigned char freq; // = $40 CASSETTE BEEP COUNTER + unsigned char soundr; // = $41 NOISY I/0 FLAG. (ZERO IS QUIET) + unsigned char critic; // = $42 DEFINES CRITICAL SECTION (CRITICAL IF NON-Z) + dos2x_t fmszpg; // = $43-$49 DISK FILE MANAGER SYSTEM ZERO PAGE +#ifdef OSA + unsigned char ckey; // = $4A FLAG SET WHEN GAME START PRESSED + unsigned char cassbt; // = $4B CASSETTE BOOT FLAG +#else + void* zchain; // = $4A/$4B HANDLER LINKAGE CHAIN POINTER +#endif + unsigned char dstat; // = $4C DISPLAY STATUS + unsigned char atract; // = $4D ATRACT FLAG + unsigned char drkmsk; // = $4E DARK ATRACT MASK + unsigned char colrsh; // = $4F ATRACT COLOR SHIFTER (EOR'ED WITH PLAYFIELD + + unsigned char tmpchr; // = $50 TEMPORARY CHARACTER + unsigned char hold1; // = $51 TEMPORARY + unsigned char lmargn; // = $52 LEFT MARGIN (NORMALLY 2, CC65 C STARTUP CODE SETS IT TO 0) + unsigned char rmargn; // = $53 RIGHT MARGIN (NORMALLY 39 IF NO XEP80 IS USED) + unsigned char rowcrs; // = $54 1CURSOR ROW + unsigned int colcrs; // = $55/$56 CURSOR COLUMN + unsigned char dindex; // = $57 DISPLAY MODE + unsigned char* savmsc; // = $58/$59 SAVED MEMORY SCAN COUNTER + unsigned char oldrow; // = $5A PRIOR ROW + unsigned int oldcol; // = $5B/$5C PRIOR COLUMN + unsigned char oldchr; // = $5D DATA UNDER CURSOR + unsigned char* oldadr; // = $5E/$5F SAVED CURSOR MEMORY ADDRESS + +#ifdef OSA + unsigned char newrow; // = $60 POINT DRAW GOES TO + unsigned int newcol; // = $61/$62 COLUMN DRAW GOES TO +#else + unsigned char* fkdef; // = $60/$61 FUNCTION KEY DEFINITION TABLE + unsigned char palnts; // = $62 PAL/NTSC INDICATOR (0 // = NTSC) +#endif + unsigned char logcol; // = $63 POINTS AT COLUMN IN LOGICAL LINE + unsigned char* adress; // = $64/$65 TEMPORARY ADDRESS + unsigned int mlttmp; // = $66/$67 TEMPORARY / FIRST BYTE IS USED IN OPEN AS TEMP + unsigned int savadr; // = $68/$69 SAVED ADDRESS + unsigned char ramtop; // = $6A RAM SIZE DEFINED BY POWER ON LOGIC + unsigned char bufcnt; // = $6B BUFFER COUNT + unsigned char* bufstr; // = $6C/$6D EDITOR GETCH POINTER + unsigned char bitmsk; // = $6E BIT MASK + unsigned char shfamt; // = $6F SHIFT AMOUNT FOR PIXEL JUSTIFUCATION + + unsigned int rowac; // = $70/$71 DRAW WORKING ROW + unsigned int colac; // = $72/$73 DRAW WORKING COLUMN + unsigned char* endpt; // = $74/$75 END POINT + unsigned char deltar; // = $76 ROW DIFFERENCE + unsigned int deltac; // = $77/$78 COLUMN DIFFERENCE +#ifdef OSA + unsigned char rowinc; // = $79 ROWINC + unsigned char colinc; // = $7A COLINC +#else + unsigned char* keydef; // = $79/$7A 2-BYTE KEY DEFINITION TABLE ADDRESS +#endif + unsigned char swpflg; // = $7B NON-0 1F TXT AND REGULAR RAM IS SWAPPED + unsigned char holdch; // = $7C CH IS MOVED HERE IN KGETCH BEFORE CNTL & SH + unsigned char insdat; // = $7D 1-BYTE TEMPORARY + unsigned int countr; // = $7E/$7F 2-BYTE DRAW ITERATION COUNT + + unsigned char _free_1[0xD4-0x7F-1]; // USER SPACE + + // Floating Point Package Page Zero Address Equates + fpreg_t fpreg[4]; // = $D4-$EB 4 REGSITERS, ACCCESS LIKE "fpreg[FPIDX_R0].fr" + unsigned char frx; // = $EC 1-BYTE TEMPORARY + unsigned char eexp; // = $ED VALUE OF EXP +#ifdef OS_REV2 + unsigned char frsign; // = $EE ##REV2## 1-BYTE FLOATING POINT SIGN + unsigned char plycnt; // = $EF ##REV2## 1-BYTE POLYNOMIAL DEGREE + unsigned char sgnflg; // = $F0 ##REV2## 1-BYTE SIGN FLAG + unsigned char xfmflg; // = $F1 ##REV2## 1-BYTE TRANSFORM FLAG +#else + unsigned char nsign; // = $EE SIGN OF # + unsigned char esign; // = $EF SIGN OF EXPONENT + unsigned char fchrflg; // = $F0 1ST CHAR FLAG + unsigned char digrt; // = $F1 # OF DIGITS RIGHT OF DECIMAL +#endif + unsigned char cix; // = $F2 CURRENT INPUT INDEX + unsigned char* inbuff; // = $F3/$F4 POINTS TO USER'S LINE INPUT BUFFER + unsigned int ztemp1; // = $F5/$F6 2-BYTE TEMPORARY + unsigned int ztemp4; // = $F7/$F8 2-BYTE TEMPORARY + unsigned int ztemp3; // = $F9/$FA 2-BYTE TEMPORARY + + union { + unsigned char degflg; // = $FB ##OLD## SAME AS RADFLG + unsigned char radflg; // = $FB ##OLD## 0=RADIANS, 6=DEGREES + }; + + fpreg_t* flptr; // = $FC/$FD 2-BYTE FLOATING POINT NUMBER POINTER + fpreg_t* fptr2; // = $FE/$FF 2-BYTE FLOATING POINT NUMBER POINTER + + // --- Page 1 --- + + unsigned char stack[0x100]; // STACK + + // --- Page 2 --- + + void (*vdslst)(void); // = $0200/$0201 DISPLAY LIST NMI VECTOR + void (*vprced)(void); // = $0202/$0203 PROCEED LINE IRQ VECTOR + void (*vinter)(void); // = $0204/$0205 INTERRUPT LINE IRQ VECTOR + void (*vbreak)(void); // = $0206/$0207 SOFTWARE BREAK (00) INSTRUCTION IRQ VECTOR + void (*vkeybd)(void); // = $0208/$0209 POKEY KEYBOARD IRQ VECTOR + void (*vserin)(void); // = $020A/$020B POKEY SERIAL INPUT READY IRQ + void (*vseror)(void); // = $020C/$020D POKEY SERIAL OUTPUT READY IRQ + void (*vseroc)(void); // = $020E/$020F POKEY SERIAL OUTPUT COMPLETE IRQ + void (*vtimr1)(void); // = $0210/$0201 POKEY TIMER 1 IRQ + void (*vtimr2)(void); // = $0212/$0203 POKEY TIMER 2 IRQ + void (*vtimr4)(void); // = $0214/$0205 POKEY TIMER 4 IRQ + void (*vimirq)(void); // = $0216/$0207 IMMEDIATE IRQ VECTOR + unsigned int cdtmv1; // = $0218/$0210 COUNT DOWN TIMER 1 + unsigned int cdtmv2; // = $021A/$021B COUNT DOWN TIMER 2 + unsigned int cdtmv3; // = $021C/$021D COUNT DOWN TIMER 3 + unsigned int cdtmv4; // = $021E/$021F COUNT DOWN TIMER 4 + unsigned int cdtmv5; // = $0220/$0221 COUNT DOWN TIMER 5 + void (*vvblki)(void); // = $0222/$0223 IMMEDIATE VERTICAL BLANK NMI VECTOR + void (*vvblkd)(void); // = $0224/$0224 DEFERRED VERTICAL BLANK NMI VECTOR + void (*cdtma1)(void); // = $0226/$0227 COUNT DOWN TIMER 1 JSR ADDRESS + void (*cdtma2)(void); // = $0228/$0229 COUNT DOWN TIMER 2 JSR ADDRESS + unsigned char cdtmf3; // = $022A COUNT DOWN TIMER 3 FLAG + unsigned char srtimr; // = $022B SOFTWARE REPEAT TIMER + unsigned char cdtmf4; // = $022C COUNT DOWN TIMER 4 FLAG + unsigned char intemp; // = $022D IAN'S TEMP + unsigned char cdtmf5; // = $022E COUNT DOWN TIMER FLAG 5 + unsigned char sdmctl; // = $022F SAVE DMACTL REGISTER + union { + struct { + unsigned char sdlstl; // = $0230 SAVE DISPLAY LIST LOW BYTE + unsigned char sdlsth; // = $0231 SAVE DISPLAY LIST HI BYTE + }; + void* sdlst; // = $0230/$0231 (same as above as pointer) + }; + unsigned char sskctl; // = $0232 SKCTL REGISTER RAM +#ifdef OSA + unsigned char _spare_1; // = $0233 No OS use. +#else + unsigned char lcount; // = $0233 ##1200xl## 1-byte relocating loader record +#endif + unsigned char lpenh; // = $0234 LIGHT PEN HORIZONTAL VALUE + unsigned char lpenv; // = $0235 LIGHT PEN VERTICAL VALUE + void (*brkky)(void); // = $0236/$0237 BREAK KEY VECTOR +#ifdef OSA + unsigned char spare2[2]; // = $0238/$0239 No OS use. +#else + void (*vpirq)(void); // = $0238/$0239 ##rev2## 2-byte parallel device IRQ vector +#endif + unsigned char cdevic; // = $023A COMMAND FRAME BUFFER - DEVICE + unsigned char ccomnd; // = $023B COMMAND + union { + struct { + unsigned char caux1; // = $023C COMMAND AUX BYTE 1 + unsigned char caux2; // = $023D COMMAND AUX BYTE 2 + }; + unsigned int caux; // = $023C/$023D (same as above as word) + }; + unsigned char temp; // = $023E TEMPORARY RAM CELL + unsigned char errflg; // = $023F ERROR FLAG - ANY DEVICE ERROR EXCEPT TIME OUT + unsigned char dflags; // = $0240 DISK FLAGS FROM SECTOR ONE + unsigned char dbsect; // = $0241 NUMBER OF DISK BOOT SECTORS + unsigned char* bootad; // = $0242/$0243 ADDRESS WHERE DISK BOOT LOADER WILL BE PUT + unsigned char coldst; // = $0244 COLDSTART FLAG (1=IN MIDDLE OF COLDSTART> +#ifdef OSA + unsigned char spare3; // = $0245 No OS use. +#else + unsigned char reclen; // = $0245 ##1200xl## 1-byte relocating loader record length +#endif + unsigned char dsktim; // = $0246 DISK TIME OUT REGISTER +#ifdef OSA + unsigned char linbuf[40]; // = $0247-$026E ##old## CHAR LINE BUFFER +#else + unsigned char pdvmsk; // = $0247 ##rev2## 1-byte parallel device selection mask + unsigned char shpdvs; // = $0248 ##rev2## 1-byte PDVS (parallel device select) + unsigned char pdimsk; // = $0249 ##rev2## 1-byte parallel device IRQ selection + unsigned int reladr; // = $024A/$024B ##rev2## 2-byte relocating loader relative adr. + unsigned char pptmpa; // = $024C ##rev2## 1-byte parallel device handler temporary + unsigned char pptmpx; // = $024D ##rev2## 1-byte parallel device handler temporary + unsigned char _reserved_1[29]; // = $024E-$026A RESERVED + unsigned char chsalt; // = $026B ##1200xl## 1-byte character set alternate + unsigned char vsflag; // = $026C ##1200xl## 1-byte fine vertical scroll count + unsigned char keydis; // = $026D ##1200xl## 1-byte keyboard disable + unsigned char fine; // = $026E ##1200xl## 1-byte fine scrolling mode +#endif + unsigned char gprior; // = $026F GLOBAL PRIORITY CELL + unsigned char paddl0; // = $0270 1-BYTE POTENTIOMETER 0 + unsigned char paddl1; // = $0271 1-BYTE POTENTIOMETER 1 + unsigned char paddl2; // = $0272 1-BYTE POTENTIOMETER 2 + unsigned char paddl3; // = $0273 1-BYTE POTENTIOMETER 3 + unsigned char paddl4; // = $0274 1-BYTE POTENTIOMETER 4 + unsigned char paddl5; // = $0275 1-BYTE POTENTIOMETER 5 + unsigned char paddl6; // = $0276 1-BYTE POTENTIOMETER 6 + unsigned char paddl7; // = $0277 1-BYTE POTENTIOMETER 7 + unsigned char stick0; // = $0278 1-byte joystick 0 + unsigned char stick1; // = $0279 1-byte joystick 1 + unsigned char stick2; // = $027A 1-byte joystick 2 + unsigned char stick3; // = $027B 1-byte joystick 3 + unsigned char ptrig0; // = $027C 1-BYTE PADDLE TRIGGER 0 + unsigned char ptrig1; // = $027D 1-BYTE PADDLE TRIGGER 1 + unsigned char ptrig2; // = $027E 1-BYTE PADDLE TRIGGER 2 + unsigned char ptrig3; // = $027F 1-BYTE PADDLE TRIGGER 3 + unsigned char ptrig4; // = $0280 1-BYTE PADDLE TRIGGER 4 + unsigned char ptrig5; // = $0281 1-BYTE PADDLE TRIGGER 5 + unsigned char ptrig6; // = $0281 1-BYTE PADDLE TRIGGER 6 + unsigned char ptrig7; // = $0283 1-BYTE PADDLE TRIGGER 7 + unsigned char strig0; // = $0284 1-BYTE JOYSTICK TRIGGER 0 + unsigned char strig1; // = $0285 1-BYTE JOYSTICK TRIGGER 1 + unsigned char strig2; // = $0286 1-BYTE JOYSTICK TRIGGER 2 + unsigned char strig3; // = $0287 1-BYTE JOYSTICK TRIGGER 3 +#ifdef OSA + unsigned char cstat; // = $0288 ##old## cassette status register +#else + unsigned char hibyte; // = $0288 ##1200xl## 1-byte relocating loader high byte +#endif + unsigned char wmode; // = $0289 1-byte cassette WRITE mode + unsigned char blim; // = $028A 1-byte cassette buffer limit +#ifdef OSA + unsigned char _reserved_2[5]; // = $028B-$028F RESERVED +#else + unsigned char imask; // = $028B ##rev2## (not used) + void (*jveck)(void); // = $028C/$028D 2-byte jump vector + unsigned newadr; // = $028E/028F ##1200xl## 2-byte relocating address +#endif + unsigned char txtrow; // = $0290 TEXT ROWCRS + unsigned txtcol; // = $0291/$0292 TEXT COLCRS + unsigned char tindex; // = $0293 TEXT INDEX + unsigned char* txtmsc; // = $0294/$0295 FOOLS CONVRT INTO NEW MSC + unsigned char txtold[6]; // = $0296-$029B OLDROW & OLDCOL FOR TEXT (AND THEN SOME) +#ifdef OSA + unsigned char tmpx1; // = $029C ##old## 1--byte temporary register +#else + unsigned char cretry; // = $029C ##1200xl## 1-byte number of command frame retries +#endif + unsigned char hold3; // = $029D 1-byte temporary + unsigned char subtmp; // = $029E 1-byte temporary + unsigned char hold2; // = $029F 1-byte (not used) + unsigned char dmask; // = $02A0 1-byte display (pixel location) mask + unsigned char tmplbt; // = $02A1 1-byte (not used) + unsigned char escflg; // = $02A2 ESCAPE FLAG + unsigned char tabmap[15]; // = $02A3-$02B1 15-byte (120 bit) tab stop bit map + unsigned char logmap[4]; // = $02B2-$02B5 LOGICAL LINE START BIT MAP + unsigned char invflg; // = $02B6 INVERSE VIDEO FLAG (TOGGLED BY ATARI KEY) + unsigned char filflg; // = $02B7 RIGHT FILL FLAG FOR DRAW + unsigned char tmprow; // = $02B8 1-byte temporary row + unsigned tmpcol; // = $02B9/$02BA 2-byte temporary column + unsigned char scrflg; // = $02BB SET IF SCROLL OCCURS + unsigned char hold4; // = $02BC TEMP CELL USED IN DRAW ONLY +#ifdef OSA + unsigned char hold5; // = $02BD ##old## DITTO +#else + unsigned char dretry; // = $02BD ##1200xl## 1-byte number of device retries +#endif + unsigned char shflok; // = $02BE 1-byte shift/control lock flags + unsigned char botscr; // = $02BF BOTTOM OF SCREEN 24 NORM 4 SPLIT + unsigned char pcolr0; // = $02C0 1-byte player-missile 0 color/luminance + unsigned char pcolr1; // = $02C1 1-byte player-missile 1 color/luminance + unsigned char pcolr2; // = $02C2 1-byte player-missile 2 color/luminance + unsigned char pcolr3; // = $02C3 1-byte player-missile 3 color/luminance + unsigned char color0; // = $02C4 1-byte playfield 0 color/luminance + unsigned char color1; // = $02C5 1-byte playfield 1 color/luminance + unsigned char color2; // = $02C6 1-byte playfield 2 color/luminance + unsigned char color3; // = $02C7 1-byte playfield 3 color/luminance + unsigned char color4; // = $02C8 1-byte background color/luminance +#ifdef OSA + unsigned char _spare_2[23]; // = $02C9-$02DF No OS use. +#else + union { + unsigned char parmbl[6]; // = $02C9 ##rev2## 6-byte relocating loader parameter + struct { + void (*runadr)(void); // = $02C9 ##1200xl## 2-byte run address + unsigned int hiused; // = $02CB ##1200xl## 2-byte highest non-zero page address + unsigned int zhiuse; // = $02CD ##1200xl## 2-byte highest zero page address + }; + }; + union { + unsigned char oldpar[6]; // = $02CF ##rev2## 6-byte relocating loader parameter + struct { + void (*gbytea)(void); // = $02CF ##1200xl## 2-byte GET-BYTE routine address + unsigned int loadad; // = $02D1 ##1200xl## 2-byte non-zero page load address + unsigned int zloada; // = $02D3 ##1200xl## 2-byte zero page load address + }; + }; + unsigned int dsctln; // = $02D5 ##1200xl## 2-byte disk sector length + unsigned int acmisr; // = $02D7 ##1200xl## 2-byte ACMI interrupt service routine + unsigned char krpdel; // = $02D9 ##1200xl## 1-byte auto-repeat delay + unsigned char keyrep; // = $02DA ##1200xl## 1-byte auto-repeat rate + unsigned char noclik; // = $02DB ##1200xl## 1-byte key click disable + unsigned char helpfg; // = $02DC ##1200xl## 1-byte HELP key flag (0 = no HELP) + unsigned char dmasav; // = $02DD ##1200xl## 1-byte SDMCTL save/restore + unsigned char pbpnt; // = $02DE ##1200xl## 1-byte printer buffer pointer + unsigned char pbufsz; // = $02DF ##1200xl## 1-byte printer buffer size +#endif + union { + unsigned char glbabs[4]; // = $02E0-$02E3 byte global variables for non-DOS users + struct { + void (*runad)(void); // = $02E0 ##map## 2-byte binary file run address + void (*initad)(void); // = $02E2 ##map## 2-byte binary file initialization address + }; + }; + unsigned char ramsiz; // = $02E4 RAM SIZE (HI BYTE ONLY) + void* memtop; // = $02E5 TOP OF AVAILABLE USER MEMORY + void* memlo; // = $02E7 BOTTOM OF AVAILABLE USER MEMORY +#ifdef OSA + unsigned char _spare_3; // = $02E9 No OS use. +#else + unsigned char hndlod; // = $02E9 ##1200xl## 1-byte user load flag +#endif + unsigned char dvstat[4]; // = $02EA-$02ED STATUS BUFFER + union { + unsigned int cbaud; // = $02EE/$02EF 2-byte cassette baud rate + struct { + unsigned char cbaudl; // = $02EE 1-byte low cassette baud rate + unsigned char cbaudh; // = $02EF 1-byte high cassette baud rate + }; + }; + unsigned char crsinh; // = $02F0 CURSOR INHIBIT (00 = CURSOR ON) + unsigned char keydel; // = $02F1 KEY DELAY + unsigned char ch1; // = $02F2 1-byte prior keyboard character + unsigned char chact; // = $02F3 CHACTL REGISTER RAM + unsigned char chbas; // = $02F4 CHBAS REGISTER RAM +#ifdef OSA + unsigned char _spare_4[5]; // = $02F5-$02F9 No OS use. +#else + unsigned char newrow; // = $02F5 ##1200xl## 1-byte draw destination row + unsigned int newcol; // = $02F6/$02F7 ##1200xl## 2-byte draw destination column + unsigned char rowinc; // = $02F8 ##1200xl## 1-byte draw row increment + unsigned char colinc; // = $02F9 ##1200xl## 1-byte draw column increment +#endif + unsigned char char_; // = $02FA 1-byte internal character (naming changed due to do keyword conflict) + unsigned char atachr; // = $02FB ATASCII CHARACTER + unsigned char ch; // = $02FC GLOBAL VARIABLE FOR KEYBOARD + unsigned char fildat; // = $02FD RIGHT FILL DATA + unsigned char dspflg; // = $02FE DISPLAY FLAG DISPLAY CNTLS IF NON-ZERO + unsigned char ssflag; // = $02FF START/STOP FLAG FOR PAGING (CNTL 1). CLEARE + + // --- Page 3 --- + + dcb_t dcb; // = $0300-$030B DEVICE CONTROL BLOCK + unsigned int timer1; // = $030C/$030D INITIAL TIMER VALUE +#ifdef OSA + unsigned char addcor; // = $030E ##old## ADDITION CORRECTION +#else + unsigned char jmpers; // = $030E ##1200xl## 1-byte jumper options +#endif + unsigned char casflg; // = $030F CASSETTE MODE WHEN SET + unsigned int timer2; // = $0310/$0311 2-byte final baud rate timer value + unsigned char temp1; // = $0312 TEMPORARY STORAGE REGISTER +#ifdef OSA + unsigned char _spare_5; // = $0313 unused + unsigned char temp2; // = $0314 ##old## TEMPORARY STORAGE REGISTER +#else + unsigned char temp2; // = $0313 ##1200xl## 1-byte temporary + unsigned char ptimot; // = $0314 ##1200xl## 1-byte printer timeout +#endif + unsigned char temp3; // = $0315 TEMPORARY STORAGE REGISTER + unsigned char savio; // = $0316 SAVE SERIAL IN DATA PORT + unsigned char timflg; // = $0317 TIME OUT FLAG FOR BAUD RATE CORRECTION + unsigned char stackp; // = $0318 SIO STACK POINTER SAVE CELL + unsigned char tstat; // = $0319 TEMPORARY STATUS HOLDER +#ifdef OSA + hatabs_t hatabs[12]; // = $031A-$033D handler address table + unsigned int zeropad; // = $033E/$033F zero padding +#else + hatabs_t hatabs[11]; // = $031A-$033A handler address table + unsigned int zeropad; // = $033B/$033C zero padding + unsigned char pupbt1; // = $033D ##1200xl## 1-byte power-up validation byte 1 + unsigned char pupbt2; // = $033E ##1200xl## 1-byte power-up validation byte 2 + unsigned char pupbt3; // = $033F ##1200xl## 1-byte power-up validation byte 3 +#endif + + iocb_t iocb[8]; // = $0340-$03BF 8 I/O Control Blocks + unsigned char prnbuf[40]; // = $03C0-$3E7 PRINTER BUFFER +#ifdef OSA + unsigned char _spare_6[151]; // = $03E8-$047F unused +#else + unsigned char superf; // = $03E8 ##1200xl## 1-byte editor super function flag + unsigned char ckey; // = $03E9 ##1200xl## 1-byte cassette boot request flag + unsigned char cassbt; // = $03EA ##1200xl## 1-byte cassette boot flag + unsigned char cartck; // = $03EB ##1200xl## 1-byte cartridge equivalence check + unsigned char derrf; // = $03EC ##rev2## 1-byte screen OPEN error flag + unsigned char acmvar[11]; // = $03ED-$03F7 ##1200xl## reserved for ACMI, not cleared upon reset + unsigned char basicf; // = $03F8 ##rev2## 1-byte BASIC switch flag + unsigned char mintlk; // = $03F9 ##1200xl## 1-byte ACMI module interlock + unsigned char gintlk; // = $03FA ##1200xl## 1-byte cartridge interlock + void* chlink; // = $03FB/$03FC ##1200xl## 2-byte loaded handler chain link + unsigned char casbuf[131]; // = $03FD-$047F CASSETTE BUFFER +#endif + + // --- Page 4 --- + + unsigned char usarea[128]; // = $0480 128 bytes reserved for application + + // --- Page 5 --- + + unsigned char _spare_7[126]; // = $0500-$057D reserved for FP package / unused + unsigned char lbpr1; // = $057E LBUFF PREFIX 1 + unsigned char lbpr2; // = $057F LBUFF PREFIX 2 + unsigned char lbuff[128]; // = $0580-$05FF 128-byte line buffer +}; + + +/* Define a structure with the zero page atari basic register offsets */ + +struct __basic { + void* lowmem; // = $80/$81 POINTER TO BASIC'S LOW MEMORY + void* vntp; // = $82/$83 BEGINNING ADDRESS OF THE VARIABLE NAME TABLE + void* vntd; // = $84/$85 POINTER TO THE ENDING ADDRESS OF THE VARIABLE NAME TABLE PLUS ONE + void* vvtp; // = $86/$87 ADDRESS FOR THE VARIABLE VALUE TABLE + void* stmtab; // = $88/$89 ADDRESS OF THE STATEMENT TABLE + void* stmcur; // = $8A/$8B CURRENT BASIC STATEMENT POINTER + void* starp; // = $8C/$8D ADDRESS FOR THE STRING AND ARRAY TABLE + void* runstk; // = $8E/$8F ADDRESS OF THE RUNTIME STACK + void* memtop; // = $90/$91 POINTER TO THE TOP OF BASIC MEMORY + + unsigned char _internal_1[0xBA-0x91-1]; // INTERNAL DATA + + unsigned int stopln; // = $BA/$BB LINE WHERE A PROGRAM WAS STOPPED + + unsigned char _internal_2[0xC3-0xBB-1]; // INTERNAL DATA + + unsigned char errsav; // = $C3 NUMBER OF THE ERROR CODE + + unsigned char _internal_3[0xC9-0xC3-1]; // INTERNAL DATA + + unsigned char ptabw; // = $C9 NUMBER OF COLUMNS BETWEEN TAB STOPS + unsigned char loadflg; // = $CA LIST PROTECTION + + unsigned char _internal_4[0xD4-0xCA-1]; // INTERNAL DATA + + unsigned int binint; // = $D4/$D5 USR-CALL RETURN VALUE +}; + +#endif +/*****************************************************************************/ +/* */ +/* cbm.h */ +/* */ +/* CBM system-specific definitions */ +/* */ +/* */ +/* */ +/* (C) 1998-2015, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _CBM_H +#define _CBM_H + + + +/* Check for errors */ +#if !defined(__CBM__) +# error This module may be used only when compiling for CBM machines! +#endif + + + +/* We need NULL. */ +#include + +/* Load the system-specific files here, if needed. */ +#if defined(__C64__) && !defined(_C64_H) +# include +#elif defined(__VIC20__) && !defined(_VIC20_H) +# include +#elif defined(__C128__) && !defined(_C128_H) +# include +#elif defined(__PLUS4__) && !defined(_PLUS4_H) +# include +#elif defined(__C16__) && !defined(_C16_H) +# include +#elif defined(__CBM510__) && !defined(_CBM510_H) +# include +#elif defined(__CBM610__) && !defined(_CBM610_H) +# include +#elif defined(__PET__) && !defined(_PET_H) +# include +#elif defined(__CX16__) && !defined(_CX16_H) +# include +#endif + +/* Include definitions for CBM file types */ +#include + + + +#define JOY_FIRE_MASK JOY_BTN_1_MASK +#define JOY_FIRE(v) ((v) & JOY_FIRE_MASK) + + + +/*****************************************************************************/ +/* Variables */ +/*****************************************************************************/ + + + +/* The file stream implementation and the POSIX I/O functions will +** use the following variable to determine the file type to use. +*/ +extern char _filetype; /* Defaults to 's' */ + + + +/*****************************************************************************/ +/* Character-codes (CBM charset) */ +/*****************************************************************************/ + + + +#define CH_HLINE 192 +#define CH_VLINE 221 +#define CH_ULCORNER 176 +#define CH_URCORNER 174 +#define CH_LLCORNER 173 +#define CH_LRCORNER 189 +#define CH_TTEE 178 +#define CH_BTEE 177 +#define CH_LTEE 171 +#define CH_RTEE 179 +#define CH_CROSS 219 +#define CH_CURS_UP 145 +#define CH_CURS_DOWN 17 +#define CH_CURS_LEFT 157 +#define CH_CURS_RIGHT 29 +#define CH_PI 222 +#define CH_HOME 19 +#define CH_DEL 20 +#define CH_INS 148 +#define CH_ENTER 13 +#define CH_STOP 3 +#define CH_LIRA 92 +#define CH_ESC 27 +#define CH_FONT_LOWER 14 +#define CH_FONT_UPPER 142 + + + +/*****************************************************************************/ +/* Definitions for directory reading functions */ +/*****************************************************************************/ + + + +/* CBM FILE ACCESS */ +#define CBM_A_RO 1 /* Read only */ +#define CBM_A_WO 2 /* Write only */ +#define CBM_A_RW 3 /* Read, Write */ + +struct cbm_dirent { + char name[17]; /* File name in PetSCII, limited to 16 chars */ + unsigned int size; /* Size, in 254-/256-byte blocks */ + unsigned char type; + unsigned char access; +}; + + + +/*****************************************************************************/ +/* Machine info */ +/*****************************************************************************/ + + + +#define TV_NTSC 0 +#define TV_PAL 1 +#define TV_OTHER 2 + +unsigned char get_tv (void); +/* Return the video mode the machine is using. */ + +#define KBREPEAT_CURSOR 0x00 +#define KBREPEAT_NONE 0x40 +#define KBREPEAT_ALL 0x80 + +unsigned char __fastcall__ kbrepeat (unsigned char mode); +/* Changes which keys have automatic repeat. */ + +#if !defined(__CBM610__) && !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 +/*****************************************************************************/ +/* */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* pen.h */ +/* */ +/* Lightpen API */ +/* */ +/* */ +/* This software is provided "as-is", without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated, but is not required. */ +/* 2. Altered source versions must be marked plainly as such; and, must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _PEN_H +#define _PEN_H + + + +/*****************************************************************************/ +/* Declarations */ +/*****************************************************************************/ + + + +/* A program optionally can set this pointer to a function that gives +** a calibration value to a driver. If this pointer isn't NULL, +** then a driver that wants a value can call that function. +** pen_adjuster must be set before the driver is installed. +*/ +extern void __fastcall__ (*pen_adjuster) (unsigned char *pValue); + + + +/*****************************************************************************/ +/* Functions */ +/*****************************************************************************/ + + + +void __fastcall__ pen_calibrate (unsigned char *XOffset); +/* Ask the user to help to calibrate a lightpen. Changes the screen! +** A pointer to this function can be put into pen_adjuster. +*/ + +void __fastcall__ pen_adjust (const char *filename); +/* Get a lightpen calibration value from a file if it exists. Otherwise, call +** pen_calibrate() to create a value; then, write it into a file, so that it +** will be available at the next time that the lightpen is used. +** Might change the screen. +** pen_adjust() is optional; if you want to use its feature, +** then it must be called before a driver is installed. +** Note: This function merely saves the file-name pointer, and sets +** the pen_adjuster pointer. The file will be read only when a driver +** is installed, and only if that driver wants to be calibrated. +*/ + + + +/* End of pen.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* apple2.h */ +/* */ +/* Apple ][ system specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2000 Kevin Ruland, */ +/* (C) 2003 Ullrich von Bassewitz, */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _APPLE2_H +#define _APPLE2_H + + + +/* Check for errors */ +#if !defined(__APPLE2__) +# error This module may only be used when compiling for the Apple ][! +#endif + +#include + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Color defines */ +#define COLOR_BLACK 0x00 +#define COLOR_WHITE 0x01 + +/* TGI color defines */ +#define TGI_COLOR_BLACK 0x00 +#define TGI_COLOR_GREEN 0x01 +#define TGI_COLOR_VIOLET 0x02 +#define TGI_COLOR_WHITE 0x03 +#define TGI_COLOR_BLACK2 0x04 +#define TGI_COLOR_ORANGE 0x05 +#define TGI_COLOR_BLUE 0x06 +#define TGI_COLOR_WHITE2 0x07 + +#define TGI_COLOR_MAGENTA TGI_COLOR_BLACK2 +#define TGI_COLOR_DARKBLUE TGI_COLOR_WHITE2 +#define TGI_COLOR_DARKGREEN 0x08 +#define TGI_COLOR_GRAY 0x09 +#define TGI_COLOR_CYAN 0x0A +#define TGI_COLOR_BROWN 0x0B +#define TGI_COLOR_GRAY2 0x0C +#define TGI_COLOR_PINK 0x0D +#define TGI_COLOR_YELLOW 0x0E +#define TGI_COLOR_AQUA 0x0F + +/* Characters codes */ +#define CH_ENTER 0x0D +#define CH_ESC 0x1B +#define CH_CURS_LEFT 0x08 +#define CH_CURS_RIGHT 0x15 + +#if !defined(__APPLE2ENH__) +#define CH_HLINE '-' +#define CH_VLINE '!' +#define CH_ULCORNER '+' +#define CH_URCORNER '+' +#define CH_LLCORNER '+' +#define CH_LRCORNER '+' +#define CH_TTEE '+' +#define CH_BTEE '+' +#define CH_LTEE '+' +#define CH_RTEE '+' +#define CH_CROSS '+' +#endif + +/* Masks for joy_read */ +#define JOY_UP_MASK 0x10 +#define JOY_DOWN_MASK 0x20 +#define JOY_LEFT_MASK 0x04 +#define JOY_RIGHT_MASK 0x08 +#define JOY_BTN_1_MASK 0x40 +#define JOY_BTN_2_MASK 0x80 + +/* Return codes for get_ostype */ +#define APPLE_UNKNOWN 0x00 +#define APPLE_II 0x10 /* Apple ][ */ +#define APPLE_IIPLUS 0x11 /* Apple ][+ */ +#define APPLE_IIIEM 0x20 /* Apple /// (emulation) */ +#define APPLE_IIE 0x30 /* Apple //e */ +#define APPLE_IIEENH 0x31 /* Apple //e (enhanced) */ +#define APPLE_IIECARD 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 +/*****************************************************************************/ +/* */ +/* accelerator.h */ +/* */ +/* Accelerator specific definitions */ +/* */ +/* */ +/* */ +/* (C) 2018 Marco van den Heuvel */ +/* EMail: blackystardust68@yahoo.com */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ACCELERATOR_H +#define _ACCELERATOR_H + +/*****************/ +/* Speed defines */ +/*****************/ + +#define SPEED_SLOW 0x00 +#define SPEED_FAST 0xFF + +#define SPEED_1X SPEED_SLOW +#define SPEED_2X 2 - 1 /* C64 Chameleon, C64DTV, C128, PET 65816, Apple2 Fast Chip, Apple2 TransWarp, Apple2 Zip Chip */ +#define SPEED_3X 3 - 1 /* C64 Chameleon, C65, PET 65816, Apple2 Booster, Apple 2 Fast Chip, Apple2 Titan, Apple2 TransWarp, Apple2 Zip Chip */ +#define SPEED_4X 4 - 1 /* C64 Chameleon, C64 TurboMaster, C64 TurboProcess, PET 65816, Apple2 Fast Chip, Apple2 Zip Chip */ +#define SPEED_5X 5 - 1 /* C64 Chameleon, PET 65816, Apple2 Fast Chip */ +#define SPEED_6X 6 - 1 /* C64 Chameleon, PET 65816, Apple2 Fast Chip */ +#define SPEED_7X 7 - 1 /* PET 65816, Apple2 Fast Chip */ +#define SPEED_8X 8 - 1 /* C64 Flash8, PET 65816, Apple 2 Fast Chip */ +#define SPEED_10X 10 - 1 /* PET 65816, Apple2 Fast Chip */ +#define SPEED_12X 12 - 1 /* Apple2 Fast Chip */ +#define SPEED_16X 16 - 1 /* Apple2 Fast Chip */ +#define SPEED_20X 20 - 1 /* C64/C128 SuperCPU */ + +/***********************************/ +/* Accelerator function prototypes */ +/***********************************/ + +/* C64/C128 SuperCPU cartridge */ + +unsigned char __fastcall__ set_scpu_speed (unsigned char speed); + +/* Set the speed of the SuperCPU cartridge, using SPEED_SLOW will switch to + * 1 Mhz mode, SPEED_20X or SPEED_FAST will switch to 20 Mhz mode. + * + * Note that any value lower than SPEED_20X will switch to 1 Mhz mode, and + * any value higher or equal to SPEED_20X will switch to 20 Mhz mode. + * + * This function will return the actual speed the CPU is at after trying + * to set the requested speed, if this is not the speed that was requested + * then possibly the hardware speed switch prevented any software speed + * switching. + * + * This function does not check for the presence of the SuperCPU cartridge, + * make sure you use 'detect_scpu();' before using. + */ + +unsigned char get_scpu_speed (void); + +/* Get the speed of the SuperCPU cartridge. + * + * Possible return values: + * SPEED_1X : 1 Mhz mode + * SPEED_20X : 20 Mhz mode + * + * This function does not check for the presence of the SuperCPU cartridge, + * make sure you use 'detect_scpu();' before using. + */ + +unsigned char detect_scpu (void); + +/* Check for the presence of the SuperCPU cartridge. + * + * Possible return values: + * 0x00 : SuperCPU cartridge not present + * 0x01 : SuperCPU cartridge present + */ + + +/* C64DTV */ + +unsigned char __fastcall__ set_c64dtv_speed (unsigned char speed); + +/* Set the speed of the C64DTV, using SPEED_SLOW will switch to + * slow mode, SPEED_2X or SPEED_FAST will switch to fast mode. + * + * Note that any value higher or equal to SPEED_2X will switch to fast mode. + * + * This function will return the actual speed the CPU is at after trying + * to set the requested speed, to my knowledge the switch should not fail. + * + * This function does not check for the presence of the C64DTV, + * make sure you use 'detect_c64dtv();' before using. + */ + +unsigned char get_c64dtv_speed (void); + +/* Get the speed of the C64DTV. + * + * Possible return values: + * SPEED_1X : slow mode + * SPEED_2X : fast mode + * + * This function does not check for the presence of the C64DTV, + * make sure you use 'detect_c64dtv();' before using. + */ + +unsigned char detect_c64dtv (void); + +/* Check for the presence of the C64DTV. + * + * Possible return values: + * 0x00 : C64DTV not present + * 0x01 : C64DTV present + */ + + +/* C128 8502 CPU */ + +unsigned char __fastcall__ set_c128_speed (unsigned char speed); + +/* Set the speed of the C128 8502 CPU, using SPEED_SLOW will switch to + * 1 Mhz (slow) mode, SPEED_2X or SPEED_FAST will switch to 2Mhz (fast) mode. + * + * Note that any value higher or equal to SPEED_2X will switch to fast mode. + * + * This function will return the actual speed the CPU is at after trying + * to set the requested speed, to my knowledge the switching should not fail. + * + * This function does not check if the C128 CPU is the current CPU, make sure + * you use 'detect_c128();' before using. + */ + +unsigned char get_c128_speed (void); + +/* Get the speed of the C128 8502 CPU. + * + * Possible return values: + * SPEED_SLOW : Slow mode + * SPEED_2X : Fast mode + * + * This function does not check if the C128 CPU is the current CPU, make sure + * you use 'detect_c128();' before using. + */ + +unsigned char detect_c128 (void); + +/* Check if the C128 CPU is the current CPU. + * + * Possible return values: + * 0x00 : C128 CPU is not the current CPU + * 0x01 : C128 CPU is the current CPU + */ + + +/* C64 Chameleon cartridge */ + +unsigned char __fastcall__ set_chameleon_speed (unsigned char speed); + +/* Set the speed of the C64 Chameleon cartridge, the following inputs + * are accepted: + * SPEED_SLOW : 1 Mhz mode + * SPEED_1X : 1 Mhz mode + * SPEED_2X : 2 Mhz mode + * SPEED_3X : 3 Mhz mode + * SPEED_4X : 4 Mhz mode + * SPEED_5X : 5 Mhz mode + * SPEED_6X : 6 Mhz mode + * SPEED_FAST : Maximum speed mode + * + * Note that any value higher or equal to SPEED_7X will switch to maximum + * speed mode. + * + * This function will return the actual speed the CPU is at after trying + * to set the requested speed, to my knowledge the switching should not fail. + * + * This function does not check for the presence of the C64 Chameleon cartridge, + * make sure you use 'detect_chameleon();' before using. + */ + +unsigned char get_chameleon_speed (void); + +;/* Get the speed of the C64 Chameleon cartridge. +; * +; * Possible return values: +; * SPEED_SLOW : Slow mode +; * SPEED_2X : 2Mhz mode +; * SPEED_3X : 3Mhz mode +; * SPEED_4X : 4Mhz mode +; * SPEED_5X : 5Mhz mode +; * SPEED_6X : 6Mhz mode +; * SPEED_FAST : Maximum speed mode +; * +; * This function does not check for the presence of the C64 Chameleon cartridge, +; * make sure you use 'detect_chameleon();' before using. +; */ + +unsigned char detect_chameleon (void); + +/* Check for the presence of the C64 Chameleon cartridge. + * + * Possible return values: + * 0x00 : C64 Chameleon cartridge not present + * 0x01 : C64 Chameleon cartridge present + */ + + +/* C65/C64DX in C64 mode */ + +unsigned char __fastcall__ set_c65_speed (unsigned char speed); + +/* Set the speed of the C65/C64DX CPU, using SPEED_SLOW will switch to + * 1 Mhz mode, SPEED_3X or SPEED_FAST will switch to 3.5 Mhz (fast) mode. + * + * Note that any value higher or equal to SPEED_3X will switch to fast mode. + * + * This function will return the actual speed the CPU is at after trying + * to set the requested speed, to my knowledge the switching should not fail. + * + * This function does not check for the presence of a C65/C64DX in C64 mode, + * make sure you use 'detect_c65();' before using. + */ + +unsigned char get_c65_speed (void); + +/* Get the speed of the C65/C64DX CPU. + * + * Possible return values: + * SPEED_SLOW : Slow mode + * SPEED_3X : Fast mode + * + * This function does not check for the presence of a C65/C64DX in C64 mode, + * make sure you use 'detect_c65();' before using. + */ + +unsigned char detect_c65 (void); + +/* Check for the presence of a C65/C64DX in C64 mode. + * + * Possible return values: + * 0x00 : C65/C64DX in C64 mode not present + * 0x01 : C65/C64DX in C64 mode present + */ + + +/* C64 Turbo Master cartridge */ + +unsigned char __fastcall__ set_turbomaster_speed (unsigned char speed); + +/* Set the speed of the Turbo Master cartridge, using SPEED_SLOW will switch to + * 1 Mhz mode, SPEED_4X or SPEED_FAST will switch to 4 Mhz mode. + * + * Note that any value higher or equal to SPEED_4X will switch to 4 Mhz mode, + * any value lower than SPEED_4X will switch to 1 Mhz mode. + * + * This function will return the actual speed the CPU is at after trying + * to set the requested speed, if the speed is different it might indicate + * that the hardware switch has locked the speed. + * + * This function does not check for the presence of a Turbo Master cartridge, + * make sure you use 'detect_turbomaster();' before using. + */ + +unsigned char get_turbomaster_speed (void); + +/* Get the speed of the Turbo Master cartridge. + * + * Possible return values: + * SPEED_SLOW : 1 Mhz mode + * SPEED_4X : 4 Mhz mode + * + * This function does not check for the presence of a Turbo Master cartridge, + * make sure you use 'detect_turbomaster();' before using. + */ + +unsigned char detect_turbomaster (void); + +/* Check for the presence of a C64 Turbo Master cartridge. + * + * Possible return values: + * 0x00 : C64 Turbo Master cartridge not present + * 0x01 : C64 Turbo Master cartridge present + */ + +/* End of accelerator.h */ +#endif + +/*****************************************************************************/ +/* */ +/* errno.h */ +/* */ +/* Error codes */ +/* */ +/* */ +/* */ +/* (C) 1998-2010, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _ERRNO_H +#define _ERRNO_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Operating system specific error code */ +extern unsigned char _oserror; + +extern int _errno; +/* System errors go here */ + +#define errno _errno +/* errno must be a macro */ + + + +/* Possible error codes */ +#define ENOENT 1 /* No such file or directory */ +#define ENOMEM 2 /* Out of memory */ +#define EACCES 3 /* Permission denied */ +#define ENODEV 4 /* No such device */ +#define EMFILE 5 /* Too many open files */ +#define EBUSY 6 /* Device or resource busy */ +#define EINVAL 7 /* Invalid argument */ +#define ENOSPC 8 /* No space left on device */ +#define EEXIST 9 /* File exists */ +#define EAGAIN 10 /* Try again */ +#define EIO 11 /* I/O error */ +#define EINTR 12 /* Interrupted system call */ +#define ENOSYS 13 /* Function not implemented */ +#define ESPIPE 14 /* Illegal seek */ +#define ERANGE 15 /* Range error */ +#define EBADF 16 /* Bad file number */ +#define ENOEXEC 17 /* Exec format error */ +#define EUNKNOWN 18 /* Unknown OS specific error */ + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +int __fastcall__ _osmaperrno (unsigned char oserror); +/* Map an operating system specific error code (for example from _oserror) +** into one of the E... codes above. It is user callable. +*/ + +unsigned char __fastcall__ _seterrno (unsigned char code); +/* Set errno to a specific error code and return zero. Used by the library */ + +int __fastcall__ _directerrno (unsigned char code); +/* Set errno to a specific error code, clear _oserror and return -1. Used +** by the library. +*/ + +int __fastcall__ _mappederrno (unsigned char code); +/* Set _oserror to the given platform specific error code. If it is a real +** error code (not zero) set errno to the corresponding system error code +** and return -1. Otherwise return zero. +** Used by the library. +*/ + + + +/* End of errno.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* limits.h */ +/* */ +/* Sizes of integer types */ +/* */ +/* */ +/* */ +/* (C) 1998-2002 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _LIMITS_H +#define _LIMITS_H + + + +#define CHAR_BIT 8 + +#define SCHAR_MIN ((signed char) 0x80) +#define SCHAR_MAX 127 + +#define UCHAR_MAX 255 + +#define CHAR_MIN 0 +#define CHAR_MAX 255 + +#define SHRT_MIN ((short) 0x8000) +#define SHRT_MAX 32767 + +#define USHRT_MAX 65535U + +#define INT_MIN ((int) 0x8000) +#define INT_MAX 32767 + +#define UINT_MAX 65535U + +#define LONG_MAX 2147483647L +#define LONG_MIN ((long) 0x80000000) + +#define ULONG_MAX 4294967295UL + + + +/* End of limits.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* _pokey.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* POKEY, Pot Keyboard Integrated Circuit, is a digital I/O chip designed */ +/* for the Atari 8-bit family of home computers; it combines functions for */ +/* sampling (ADC) potentiometers (such as game paddles) and scan matrices of */ +/* switches (such as a computer keyboard) as well as sound generation. */ +/* It produces four voices of distinctive square wave sound, either as clear */ +/* tones or modified with a number of distortion settings. - Wikipedia */ +/* "POKEY" article. */ +/* */ +/* */ +/* (C) 2000 Freddy Offenga */ +/* 2019-01-16: Bill Kendrick : More defines for registers */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __POKEY_H +#define __POKEY_H + + + +/*****************************************************************************/ +/* Define a structure with the POKEY register offsets for write (W) */ +/*****************************************************************************/ + +struct __pokey_write { + unsigned char audf1; /* audio channel #1 frequency */ + unsigned char audc1; /* audio channel #1 control */ + unsigned char audf2; /* audio channel #2 frequency */ + unsigned char audc2; /* audio channel #2 control */ + unsigned char audf3; /* audio channel #3 frequency */ + unsigned char audc3; /* audio channel #3 control */ + unsigned char audf4; /* audio channel #4 frequency */ + unsigned char audc4; /* audio channel #4 control */ + unsigned char audctl; /* audio control */ + unsigned char stimer; /* start pokey timers */ + + unsigned char skrest; + /* reset serial port status reg.; + ** Reset BITs 5 - 7 of the serial port status register (SKCTL) to "1" + */ + + unsigned char potgo; /* start paddle scan sequence (see "ALLPOT") */ + unsigned char unuse1; /* unused */ + unsigned char serout; /* serial port data output */ + unsigned char irqen; /* interrupt request enable */ + unsigned char skctl; /* serial port control */ +}; + + +/*****************************************************************************/ +/* (W) AUDC1-4 register values */ +/*****************************************************************************/ + +/* Meaningful values for the distortion bits. +** The first process is to divide the clock value by the frequency, +** then mask the output using the polys in the order below; +** finally, the result is divided by two. +*/ +#define AUDC_POLYS_5_17 0x00 +#define AUDC_POLYS_5 0x20 /* Same as 0x60 */ +#define AUDC_POLYS_5_4 0x40 +#define AUDC_POLYS_17 0x80 +#define AUDC_POLYS_NONE 0xA0 /* Same as 0xE0 */ +#define AUDC_POLYS_4 0xC0 + +/* When set, the volume value in AUDC1-4 bits 0-3 is sent directly to the speaker; +** it is not modulated with the frequency specified in the AUDF1-4 registers. +** (See "De Re Atari" Chapter 7: Sound) +*/ +#define AUDC_VOLUME_ONLY 0x10 + + +/*****************************************************************************/ +/* (W) AUDCTL register values */ +/*****************************************************************************/ + +#define AUDCTL_CLOCKBASE_15HZ 0x01 /* Switch main clock base from 64 KHz to 15 KHz */ +#define AUDCTL_HIGHPASS_CHAN2 0x02 /* Insert high pass filter into channel two, clocked by channel four */ +#define AUDCTL_HIGHPASS_CHAN1 0x04 /* Insert high pass filter into channel one, clocked by channel two */ +#define AUDCTL_JOIN_CHAN34 0x08 /* Join channels four and three (16 bit) */ +#define AUDCTL_JOIN_CHAN12 0x10 /* Join channels two and one (16 bit) */ +#define AUDCTL_CLOCK_CHAN3_179MHZ 0x20 /* Clock channel three with 1.79 MHz */ +#define AUDCTL_CLOCK_CHAN1_179MHZ 0x40 /* Clock channel one with 1.79 MHz */ +#define AUDCTL_9BIT_POLY 0x80 /* Makes the 17 bit poly counter into nine bit poly (see also: RANDOM) */ + + +/*****************************************************************************/ +/* (W) IRQEN register values */ +/*****************************************************************************/ + +#define IRQEN_TIMER_1 0x01 /* The POKEY timer one interrupt is enabled */ +#define IRQEN_TIMER_2 0x02 /* The POKEY timer two interrupt is enabled */ +#define IRQEN_TIMER_4 0x04 /* The POKEY timer four interrupt is enabled */ +#define IRQEN_SERIAL_TRANS_FINISHED 0x08 /* The serial out transmission finished interrupt is enabled */ +#define IRQEN_SERIAL_OUT_DATA_REQUIRED 0x10 /* The serial output data required interrupt is enabled */ +#define IRQEN_SERIAL_IN_DATA_READY 0x20 /* The serial input data ready interrupt is enabled. */ +#define IRQEN_OTHER_KEY 0x40 /* The "other key" interrupt is enabled */ +#define IRQEN_BREAK_KEY 0x80 /* The BREAK key is enabled */ + + +/*****************************************************************************/ +/* (W) SKCTL register values */ +/*****************************************************************************/ + +#define SKCTL_KEYBOARD_DEBOUNCE 0x01 /* Enable keyboard debounce circuits */ +#define SKCTL_KEYBOARD_SCANNING 0x02 /* Enable keyboard scanning circuit */ + +/* Fast pot scan +** The pot scan counter completes its sequence in two TV line times instead of +** one frame time (228 scan lines). Not as accurate as the normal pot scan +*/ +#define SKCTL_FAST_POT_SCAN 0x04 + +/* POKEY two-tone mode +** Serial output is transmitted as a two-tone signal rather than a logic true/false. +*/ +#define SKCTL_TWO_TONE_MODE 0x08 + +/* Force break (serial output to zero) */ +#define SKCTL_FORCE_BREAK 0x80 + + +/* Bits 4, 5, and 6 of SKCTL set Serial Mode Control: */ + +/* Trans. & Receive rates set by external clock; Also internal clock phase reset to zero. */ +#define SKCTL_SER_MODE_TX_EXT_RX_EXT 0x00 + +/* Trans. rate set by external clock; Receive asynch. (ch. 4) (CH3 and CH4). */ +#define SKCTL_SER_MODE_TX_EXT_RX_ASYNC 0x10 + +/* Trans. & Receive rates set by Chan. 4; Chan. 4 output on Bi-Direct. clock line. */ +#define SKCTL_SER_MODE_TX_CH4_RX_CH4_BIDIR 0x20 + +/* N.B.: Bit combination 0,1,1 not useful */ + +/* Trans. rate set by Chan. 4; Receive rate set by external clock. */ +#define SKCTL_SER_MODE_TX_CH4_RX_EXT 0x40 + +/* N.B.: Bit combination 1,0,1 not useful */ + +/* Trans. rate set by Chan. 2; Receive rate set by Chan. 4; Chan. 4 out on Bi-Direct. clock line. */ +#define SKCTL_SER_MODE_TX_CH2_RX_CH4_BIDIR 0x60 + +/* Trans. rate set by Chan. 2; Receive asynch. (chan 3 & 4); Bi-Direct. clock not used (tri-state condition). */ +#define SKCTL_SER_MODE_TX_CH4_RX_ASYNC 0x70 + + +/*****************************************************************************/ +/* Define a structure with the POKEY register offsets for read (R) */ +/*****************************************************************************/ + +struct __pokey_read { + unsigned char pot0; /* paddle 0 value */ + unsigned char pot1; /* paddle 1 value */ + unsigned char pot2; /* paddle 2 value */ + unsigned char pot3; /* paddle 3 value */ + unsigned char pot4; /* paddle 4 value */ + unsigned char pot5; /* paddle 5 value */ + unsigned char pot6; /* paddle 6 value */ + unsigned char pot7; /* paddle 7 value */ + unsigned char allpot; /* eight paddle port status (see "POTGO") */ + unsigned char kbcode; /* keyboard code */ + unsigned char random; /* random number generator */ + unsigned char unuse2; /* unused */ + unsigned char unuse3; /* unused */ + unsigned char serin; /* serial port input */ + unsigned char irqst; /* interrupt request status */ + unsigned char skstat; /* serial port status */ +}; + + +/*****************************************************************************/ +/* (R) SKSTAT register values */ +/*****************************************************************************/ + +#define SKSTAT_SERIN_SHIFTREG_BUSY 0x02 /* Serial input shift register busy */ +#define SKSTAT_LASTKEY_PRESSED 0x04 /* the last key is still pressed */ +#define SKSTAT_SHIFTKEY_PRESSED 0x08 /* the [Shift] key is pressed */ +#define SKSTAT_DATA_READ_INGORING_SHIFTREG 0x10 /* Data can be read directly from the serial input port, ignoring the shift register. */ +#define SKSTAT_KEYBOARD_OVERRUN 0x20 /* Keyboard over-run; Reset BITs 7, 6 and 5 (latches) to 1, using SKREST */ +#define SKSTAT_INPUT_OVERRUN 0x40 /* Serial data input over-run. Reset latches as above. */ +#define SKSTAT_INPUT_FRAMEERROR 0x80 /* Serial data input frame error caused by missing or extra bits. Reset latches as above. */ + + +/* KBCODE, internal keyboard codes for Atari 8-bit computers, +** are #defined as "KEY_..." in "atari.h". +** Note some keys are not read via KBCODE: +** - Reset +** - Start, Select, and Option; see CONSOL in "gtia.h" +** - Break +*/ + + +/* End of _pokey.h */ +#endif /* #ifndef __POKEY_H */ +/*****************************************************************************/ +/* */ +/* _pia.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* The Peripheral Interface Adapter (PIA) chip (a 6520 or 6820) provides */ +/* parallel I/O interfacing; it was used in Atari 400/800 and Commodore PET */ +/* family of computers, for joystick and some interrupts. */ +/* Sources; various + Wikpedia article on "Peripheral Interface Adapter". */ +/* */ +/* */ +/* (C) 2000 Freddy Offenga */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __PIA_H +#define __PIA_H + + +/* Define a structure with the PIA register offsets */ +struct __pia { + unsigned char porta; /* port A data r/w */ + unsigned char portb; /* port B data r/w */ + unsigned char pactl; /* port A control */ + unsigned char pbctl; /* port B control */ +}; + +/* (Some specific register values for Atari defined in atari.h) */ + +/* End of _pia.h */ +#endif +/*****************************************************************************/ +/* */ +/* mouse.h */ +/* */ +/* Mouse API */ +/* */ +/* */ +/* */ +/* (C) 2003-2013, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _MOUSE_H +#define _MOUSE_H + + + +/*****************************************************************************/ +/* Definitions */ +/*****************************************************************************/ + + + +/* Error codes */ +#define MOUSE_ERR_OK 0 /* No error */ +#define MOUSE_ERR_NO_DRIVER 1 /* No driver available */ +#define MOUSE_ERR_CANNOT_LOAD 2 /* Error loading driver */ +#define MOUSE_ERR_INV_DRIVER 3 /* Invalid driver */ +#define MOUSE_ERR_NO_DEVICE 4 /* Mouse hardware not found */ +#define MOUSE_ERR_INV_IOCTL 5 /* Invalid ioctl code */ + +/* Mouse button masks */ +#define MOUSE_BTN_LEFT 0x10 +#define MOUSE_BTN_RIGHT 0x01 + +/* Structure containing the mouse coordinates */ +struct mouse_pos { + int x; + int y; +}; + +/* Structure containing information about the mouse */ +struct mouse_info { + struct mouse_pos pos; /* Mouse position */ + unsigned char buttons; /* Mouse button mask */ +}; + +/* Structure used for getbox/setbox */ +struct mouse_box { + int minx; + int miny; + int maxx; + int maxy; +}; + +/* Structure containing mouse callback functions. These functions are declared +** in C notation here, but they cannot be C functions (at least not easily), +** since they may be called from within an interrupt. +*/ +struct mouse_callbacks { + + void (*hide) (void); + /* Hide the mouse cursor. */ + + void (*show) (void); + /* Show the mouse cursor. */ + + void (*prep) (void); + /* Prepare to move the mouse cursor. This function is called, + ** even when the cursor is currently invisible. + */ + + void (*draw) (void); + /* Draw the mouse cursor. This function is called, + ** even when the cursor is currently invisible. + */ + + void __fastcall__ (*movex) (int x); + /* Move the mouse cursor to the new X coordinate. This function is called, + ** even when the cursor is currently invisible. + */ + + void __fastcall__ (*movey) (int y); + /* Move the mouse cursor to the new Y coordinate. This function is called, + ** even when the cursor is currently invisible. + */ +}; + + + +/*****************************************************************************/ +/* Declarations */ +/*****************************************************************************/ + + + +/* The default mouse callbacks */ +extern const struct mouse_callbacks mouse_def_callbacks; + +#if defined(__CBM__) + +/* The default mouse pointer shape used by the default mouse callbacks */ +extern const unsigned char mouse_def_pointershape[63]; + +/* The default mouse pointer color used by the default mouse callbacks */ +extern const unsigned char mouse_def_pointercolor; + +#endif + +/* The name of the standard mouse driver for a platform */ +extern const char mouse_stddrv[]; + +/* The address of the static standard mouse driver for a platform */ +extern const void mouse_static_stddrv[]; + + + +/*****************************************************************************/ +/* Functions */ +/*****************************************************************************/ + + + +unsigned char __fastcall__ mouse_load_driver (const struct mouse_callbacks* c, + const char* driver); +/* Load and install a mouse driver, return an error code. */ + +unsigned char mouse_unload (void); +/* Uninstall, then unload the currently loaded driver. */ + +unsigned char __fastcall__ mouse_install (const struct mouse_callbacks* c, + void* driver); +/* Install an already loaded driver. Return an error code. */ + +unsigned char mouse_uninstall (void); +/* Uninstall the currently loaded driver. Return an error code. */ + +const char* __fastcall__ mouse_geterrormsg (unsigned char code); +/* Get an error message describing the error in code. */ + +void mouse_hide (void); +/* Hide the mouse. The function manages a counter and may be called more than +** once. For each call to mouse_hide there must be a call to mouse_show to make +** the mouse visible again. +*/ + +void mouse_show (void); +/* Show the mouse. See mouse_hide() for more information. */ + +void __fastcall__ mouse_setbox (const struct mouse_box* box); +/* Set the bounding box for the mouse pointer movement. The mouse X and Y +** coordinates will never go outside the given box. +** NOTE: The function does *not* check if the mouse is currently inside the +** given margins. The proper way to use this function therefore is: +** +** - Hide the mouse +** - Set the bounding box +** - Place the mouse at the desired position +** - Show the mouse again. +** +** NOTE2: When setting the box to something that is larger than the actual +** screen, the positioning of the mouse cursor can fail. If such margins +** are really what you want, you have to use your own cursor routines. +*/ + +void __fastcall__ mouse_getbox (struct mouse_box* box); +/* Get the current bounding box for the mouse pointer movement. */ + +void __fastcall__ mouse_move (int x, int y); +/* Set the mouse cursor to the given position. If a mouse cursor is defined +** and currently visible, the mouse cursor is also moved. +** NOTE: This function does not check if the given position is valid and +** inside the bounding box. +*/ + +unsigned char mouse_buttons (void); +/* Return a bit mask encoding the states of the mouse buttons. Use the +** MOUSE_BTN_XXX flags to decode a specific button. +*/ + +void __fastcall__ mouse_pos (struct mouse_pos* pos); +/* Return the current mouse position. */ + +void __fastcall__ mouse_info (struct mouse_info* info); +/* Return the state of the mouse buttons and the position of the mouse. */ + +unsigned char __fastcall__ mouse_ioctl (unsigned char code, void* data); +/* Call the driver-specific ioctl function. Return an error code. +** NON-PORTABLE! +*/ + + + +/* End of mouse.h */ +#endif +/*****************************************************************************/ +/* */ +/* ascii_charmap.h */ +/* */ +/* No translations, encodings are stored as they were typed in the host. */ +/* */ +/* */ +/* 2019-09-07, Greg King */ +/* */ +/* This software is provided "as-is", without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated, but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice must not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + +/* No include guard here. Each charnap header +** may be included many times in a source file. +*/ + +#pragma warn (remap-zero, push, off) + +/* ASCII */ +#pragma charmap (0x00, 0x00) +#pragma charmap (0x01, 0x01) +#pragma charmap (0x02, 0x02) +#pragma charmap (0x03, 0x03) +#pragma charmap (0x04, 0x04) +#pragma charmap (0x05, 0x05) +#pragma charmap (0x06, 0x06) +#pragma charmap (0x07, 0x07) +#pragma charmap (0x08, 0x08) +#pragma charmap (0x09, 0x09) +#pragma charmap (0x0A, 0x0A) +#pragma charmap (0x0B, 0x0B) +#pragma charmap (0x0C, 0x0C) +#pragma charmap (0x0D, 0x0D) +#pragma charmap (0x0E, 0x0E) +#pragma charmap (0x0F, 0x0F) +#pragma charmap (0x10, 0x10) +#pragma charmap (0x11, 0x11) +#pragma charmap (0x12, 0x12) +#pragma charmap (0x13, 0x13) +#pragma charmap (0x14, 0x14) +#pragma charmap (0x15, 0x15) +#pragma charmap (0x16, 0x16) +#pragma charmap (0x17, 0x17) +#pragma charmap (0x18, 0x18) +#pragma charmap (0x19, 0x19) +#pragma charmap (0x1A, 0x1A) +#pragma charmap (0x1B, 0x1B) +#pragma charmap (0x1C, 0x1C) +#pragma charmap (0x1D, 0x1D) +#pragma charmap (0x1E, 0x1E) +#pragma charmap (0x1F, 0x1F) +#pragma charmap (0x20, 0x20) +#pragma charmap (0x21, 0x21) +#pragma charmap (0x22, 0x22) +#pragma charmap (0x23, 0x23) +#pragma charmap (0x24, 0x24) +#pragma charmap (0x25, 0x25) +#pragma charmap (0x26, 0x26) +#pragma charmap (0x27, 0x27) +#pragma charmap (0x28, 0x28) +#pragma charmap (0x29, 0x29) +#pragma charmap (0x2A, 0x2A) +#pragma charmap (0x2B, 0x2B) +#pragma charmap (0x2C, 0x2C) +#pragma charmap (0x2D, 0x2D) +#pragma charmap (0x2E, 0x2E) +#pragma charmap (0x2F, 0x2F) +#pragma charmap (0x30, 0x30) +#pragma charmap (0x31, 0x31) +#pragma charmap (0x32, 0x32) +#pragma charmap (0x33, 0x33) +#pragma charmap (0x34, 0x34) +#pragma charmap (0x35, 0x35) +#pragma charmap (0x36, 0x36) +#pragma charmap (0x37, 0x37) +#pragma charmap (0x38, 0x38) +#pragma charmap (0x39, 0x39) +#pragma charmap (0x3A, 0x3A) +#pragma charmap (0x3B, 0x3B) +#pragma charmap (0x3C, 0x3C) +#pragma charmap (0x3D, 0x3D) +#pragma charmap (0x3E, 0x3E) +#pragma charmap (0x3F, 0x3F) +#pragma charmap (0x40, 0x40) +#pragma charmap (0x41, 0x41) +#pragma charmap (0x42, 0x42) +#pragma charmap (0x43, 0x43) +#pragma charmap (0x44, 0x44) +#pragma charmap (0x45, 0x45) +#pragma charmap (0x46, 0x46) +#pragma charmap (0x47, 0x47) +#pragma charmap (0x48, 0x48) +#pragma charmap (0x49, 0x49) +#pragma charmap (0x4A, 0x4A) +#pragma charmap (0x4B, 0x4B) +#pragma charmap (0x4C, 0x4C) +#pragma charmap (0x4D, 0x4D) +#pragma charmap (0x4E, 0x4E) +#pragma charmap (0x4F, 0x4F) +#pragma charmap (0x50, 0x50) +#pragma charmap (0x51, 0x51) +#pragma charmap (0x52, 0x52) +#pragma charmap (0x53, 0x53) +#pragma charmap (0x54, 0x54) +#pragma charmap (0x55, 0x55) +#pragma charmap (0x56, 0x56) +#pragma charmap (0x57, 0x57) +#pragma charmap (0x58, 0x58) +#pragma charmap (0x59, 0x59) +#pragma charmap (0x5A, 0x5A) +#pragma charmap (0x5B, 0x5B) +#pragma charmap (0x5C, 0x5C) +#pragma charmap (0x5D, 0x5D) +#pragma charmap (0x5E, 0x5E) +#pragma charmap (0x5F, 0x5F) +#pragma charmap (0x60, 0x60) +#pragma charmap (0x61, 0x61) +#pragma charmap (0x62, 0x62) +#pragma charmap (0x63, 0x63) +#pragma charmap (0x64, 0x64) +#pragma charmap (0x65, 0x65) +#pragma charmap (0x66, 0x66) +#pragma charmap (0x67, 0x67) +#pragma charmap (0x68, 0x68) +#pragma charmap (0x69, 0x69) +#pragma charmap (0x6A, 0x6A) +#pragma charmap (0x6B, 0x6B) +#pragma charmap (0x6C, 0x6C) +#pragma charmap (0x6D, 0x6D) +#pragma charmap (0x6E, 0x6E) +#pragma charmap (0x6F, 0x6F) +#pragma charmap (0x70, 0x70) +#pragma charmap (0x71, 0x71) +#pragma charmap (0x72, 0x72) +#pragma charmap (0x73, 0x73) +#pragma charmap (0x74, 0x74) +#pragma charmap (0x75, 0x75) +#pragma charmap (0x76, 0x76) +#pragma charmap (0x77, 0x77) +#pragma charmap (0x78, 0x78) +#pragma charmap (0x79, 0x79) +#pragma charmap (0x7A, 0x7A) +#pragma charmap (0x7B, 0x7B) +#pragma charmap (0x7C, 0x7C) +#pragma charmap (0x7D, 0x7D) +#pragma charmap (0x7E, 0x7E) +#pragma charmap (0x7F, 0x7F) + +/* beyond ASCII */ +#pragma charmap (0x80, 0x80) +#pragma charmap (0x81, 0x81) +#pragma charmap (0x82, 0x82) +#pragma charmap (0x83, 0x83) +#pragma charmap (0x84, 0x84) +#pragma charmap (0x85, 0x85) +#pragma charmap (0x86, 0x86) +#pragma charmap (0x87, 0x87) +#pragma charmap (0x88, 0x88) +#pragma charmap (0x89, 0x89) +#pragma charmap (0x8A, 0x8A) +#pragma charmap (0x8B, 0x8B) +#pragma charmap (0x8C, 0x8C) +#pragma charmap (0x8D, 0x8D) +#pragma charmap (0x8E, 0x8E) +#pragma charmap (0x8F, 0x8F) +#pragma charmap (0x90, 0x90) +#pragma charmap (0x91, 0x91) +#pragma charmap (0x92, 0x92) +#pragma charmap (0x93, 0x93) +#pragma charmap (0x94, 0x94) +#pragma charmap (0x95, 0x95) +#pragma charmap (0x96, 0x96) +#pragma charmap (0x97, 0x97) +#pragma charmap (0x98, 0x98) +#pragma charmap (0x99, 0x99) +#pragma charmap (0x9A, 0x9A) +#pragma charmap (0x9B, 0x9B) +#pragma charmap (0x9C, 0x9C) +#pragma charmap (0x9D, 0x9D) +#pragma charmap (0x9E, 0x9E) +#pragma charmap (0x9F, 0x9F) +#pragma charmap (0xA0, 0xA0) +#pragma charmap (0xA1, 0xA1) +#pragma charmap (0xA2, 0xA2) +#pragma charmap (0xA3, 0xA3) +#pragma charmap (0xA4, 0xA4) +#pragma charmap (0xA5, 0xA5) +#pragma charmap (0xA6, 0xA6) +#pragma charmap (0xA7, 0xA7) +#pragma charmap (0xA8, 0xA8) +#pragma charmap (0xA9, 0xA9) +#pragma charmap (0xAA, 0xAA) +#pragma charmap (0xAB, 0xAB) +#pragma charmap (0xAC, 0xAC) +#pragma charmap (0xAD, 0xAD) +#pragma charmap (0xAE, 0xAE) +#pragma charmap (0xAF, 0xAF) +#pragma charmap (0xB0, 0xB0) +#pragma charmap (0xB1, 0xB1) +#pragma charmap (0xB2, 0xB2) +#pragma charmap (0xB3, 0xB3) +#pragma charmap (0xB4, 0xB4) +#pragma charmap (0xB5, 0xB5) +#pragma charmap (0xB6, 0xB6) +#pragma charmap (0xB7, 0xB7) +#pragma charmap (0xB8, 0xB8) +#pragma charmap (0xB9, 0xB9) +#pragma charmap (0xBA, 0xBA) +#pragma charmap (0xBB, 0xBB) +#pragma charmap (0xBC, 0xBC) +#pragma charmap (0xBD, 0xBD) +#pragma charmap (0xBE, 0xBE) +#pragma charmap (0xBF, 0xBF) +#pragma charmap (0xC0, 0xC0) +#pragma charmap (0xC1, 0xC1) +#pragma charmap (0xC2, 0xC2) +#pragma charmap (0xC3, 0xC3) +#pragma charmap (0xC4, 0xC4) +#pragma charmap (0xC5, 0xC5) +#pragma charmap (0xC6, 0xC6) +#pragma charmap (0xC7, 0xC7) +#pragma charmap (0xC8, 0xC8) +#pragma charmap (0xC9, 0xC9) +#pragma charmap (0xCA, 0xCA) +#pragma charmap (0xCB, 0xCB) +#pragma charmap (0xCC, 0xCC) +#pragma charmap (0xCD, 0xCD) +#pragma charmap (0xCE, 0xCE) +#pragma charmap (0xCF, 0xCF) +#pragma charmap (0xD0, 0xD0) +#pragma charmap (0xD1, 0xD1) +#pragma charmap (0xD2, 0xD2) +#pragma charmap (0xD3, 0xD3) +#pragma charmap (0xD4, 0xD4) +#pragma charmap (0xD5, 0xD5) +#pragma charmap (0xD6, 0xD6) +#pragma charmap (0xD7, 0xD7) +#pragma charmap (0xD8, 0xD8) +#pragma charmap (0xD9, 0xD9) +#pragma charmap (0xDA, 0xDA) +#pragma charmap (0xDB, 0xDB) +#pragma charmap (0xDC, 0xDC) +#pragma charmap (0xDD, 0xDD) +#pragma charmap (0xDE, 0xDE) +#pragma charmap (0xDF, 0xDF) +#pragma charmap (0xE0, 0xE0) +#pragma charmap (0xE1, 0xE1) +#pragma charmap (0xE2, 0xE2) +#pragma charmap (0xE3, 0xE3) +#pragma charmap (0xE4, 0xE4) +#pragma charmap (0xE5, 0xE5) +#pragma charmap (0xE6, 0xE6) +#pragma charmap (0xE7, 0xE7) +#pragma charmap (0xE8, 0xE8) +#pragma charmap (0xE9, 0xE9) +#pragma charmap (0xEA, 0xEA) +#pragma charmap (0xEB, 0xEB) +#pragma charmap (0xEC, 0xEC) +#pragma charmap (0xED, 0xED) +#pragma charmap (0xEE, 0xEE) +#pragma charmap (0xEF, 0xEF) +#pragma charmap (0xF0, 0xF0) +#pragma charmap (0xF1, 0xF1) +#pragma charmap (0xF2, 0xF2) +#pragma charmap (0xF3, 0xF3) +#pragma charmap (0xF4, 0xF4) +#pragma charmap (0xF5, 0xF5) +#pragma charmap (0xF6, 0xF6) +#pragma charmap (0xF7, 0xF7) +#pragma charmap (0xF8, 0xF8) +#pragma charmap (0xF9, 0xF9) +#pragma charmap (0xFA, 0xFA) +#pragma charmap (0xFB, 0xFB) +#pragma charmap (0xFC, 0xFC) +#pragma charmap (0xFD, 0xFD) +#pragma charmap (0xFE, 0xFE) +#pragma charmap (0xFF, 0xFF) + +#pragma warn (remap-zero, pop) +/*****************************************************************************/ +/* */ +/* supervision.h */ +/* */ +/* Supervision specific definitions */ +/* */ +/* */ +/* */ +/* 2003 Peter Trauner (trap@utanet.at) */ +/* */ +/* */ +/* This software is provided "as-is," without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment, in the product's documentation, */ +/* would be appreciated, but is not required. */ +/* 2. Alterred source versions must be marked plainly as such, */ +/* and must not be misrepresented as being the original software. */ +/* 3. This notice may not be removed or alterred */ +/* from any source distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _SUPERVISION_H +#define _SUPERVISION_H + + + +/* Check for errors */ +#if !defined(__SUPERVISION__) +# error This module may only be used when compiling for the Supervision! +#endif + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +struct __sv_lcd { + unsigned char width; + unsigned char height; + unsigned char xpos; + unsigned char ypos; +}; +#define SV_LCD (*(struct __sv_lcd*)0x2000) + +struct __sv_tone { + unsigned delay; + unsigned char control; + unsigned char timer; +}; +#define SV_RIGHT (*(struct __sv_tone*)0x2010) +#define SV_LEFT (*(struct __sv_tone*)0x2014) + +struct __sv_noise { + unsigned char volume; /* and frequency */ + unsigned char timer; + unsigned char control; +}; +#define SV_NOISE (*(struct __sv_noise*)0x2028) + +struct __io_port { + unsigned char in; + unsigned char out; +}; +#define IO_PORT (*(struct __io_port*)0x2021) + +struct __sv_dma { + unsigned start; + unsigned char size; + unsigned char control; + unsigned char on; +}; +#define SV_DMA (*(struct __sv_dma*)0x2018) + +#define SV_CONTROL (*(unsigned char*)0x2020) + +#define SV_BANK (*(unsigned char*)0x2026) +#define SV_BANK_COMBINE(nmi,irq_timer,irq_dma,lcd_on, timer_prescale, bank) \ + ((nmi)?1:0)|((irq_timer)?2:0)|((irq_dma)?4:0)|((lcd_on)?8:0) \ + |((timer_prescale)?0x10:0)|((bank)<<5) + +#define SV_VIDEO ((unsigned char*)0x4000) +#define SV_TIMER_COUNT (*(unsigned char*)0x2023) + + + +/* Counters incremented asynchronously! +** If you want more complex, copy the crt0.s file from the libsrc/supervision +** directory and code them yourself (in assembler) +*/ +extern unsigned char sv_nmi_counter; +extern unsigned char sv_timer_irq_counter; +extern unsigned char sv_timer_dma_counter; + +/* Masks for joy_read */ +#define JOY_UP_MASK 0x08 +#define JOY_DOWN_MASK 0x04 +#define JOY_LEFT_MASK 0x02 +#define JOY_RIGHT_MASK 0x01 +#define JOY_BTN_1_MASK 0x20 +#define JOY_BTN_2_MASK 0x10 +#define JOY_BTN_3_MASK 0x80 +#define JOY_BTN_4_MASK 0x40 + +#define JOY_BTN_A_MASK JOY_BTN_1_MASK +#define JOY_BTN_B_MASk JOY_BTN_2_MASK +#define JOY_START_MASK JOY_BTN_3_MASK +#define JOY_SELECT_MASK JOY_BTN_4_MASK + +#define JOY_BTN_A(v) ((v) & JOY_BTN_A_MASK) +#define JOY_BTN_B(v) ((v) & JOY_BTN_B_MASK) +#define JOY_START(v) ((v) & JOY_START_MASK) +#define JOY_SELECT(v) ((v) & JOY_SELECT_MASK) + +/* No support for dynamically loadable drivers */ +#define DYN_DRV 0 + +/* The addresses of the static drivers */ +extern void supervision_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */ + + + +/* End of supervision.h */ +#endif +/*****************************************************************************/ +/* */ +/* _ted.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 2003 Ullrich von Bassewitz */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* o65.h */ +/* */ +/* Definitions for the o65 file format */ +/* */ +/* */ +/* */ +/* (C) 2002-2009, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +/* This files exports structures and constants to handle the o65 relocatable +** file format as defined by Andre Fachat. See the original document under +** +** http://www.6502.org/users/andre/o65/fileformat.html +** +** for more information. +*/ + + + +#ifndef _O65_H +#define _O65_H + + + +/* o65 size type. It is 2 bytes for the 6502 and 4 bytes for the 65816 */ +typedef unsigned o65_size; + + +/* Structure that defines the o65 file header */ +typedef struct o65_header o65_header; +struct o65_header { + char marker[2]; /* Non-C64 marker */ + char magic[3]; /* o65 magic */ + char version; /* Version number */ + unsigned mode; /* Mode word */ + o65_size tbase; /* Original text (code) segment address */ + o65_size tlen; /* Size of text (code) segment */ + o65_size dbase; /* Original data segment address */ + o65_size dlen; /* Size of data segment */ + o65_size bbase; /* Original bss segment address */ + o65_size blen; /* Size of bss segment */ + o65_size zbase; /* Original zp segment address */ + o65_size zlen; /* Size of zp segment */ + o65_size stack; /* Stacksize needed */ +}; + + + +/* Marker, magic and version number */ +#define O65_MARKER_0 0x01 +#define O65_MARKER_1 0x00 +#define O65_MAGIC_0 0x6F /* 'o' */ +#define O65_MAGIC_1 0x36 /* '6' */ +#define O65_MAGIC_2 0x35 /* '5' */ +#define O65_VERSION 0x00 + +/* Defines for the mode word */ +#define O65_CPU_65816 0x8000 /* Executable is for 65816 */ +#define O65_CPU_6502 0x0000 /* Executable is for the 6502 */ +#define O65_CPU_MASK 0x8000 /* Mask to extract CPU type */ + +#define O65_RELOC_PAGE 0x4000 /* Page wise relocation */ +#define O65_RELOC_BYTE 0x0000 /* Byte wise relocation */ +#define O65_RELOC_MASK 0x4000 /* Mask to extract relocation type */ + +#define O65_SIZE_32BIT 0x2000 /* All size words are 32bit */ +#define O65_SIZE_16BIT 0x0000 /* All size words are 16bit */ +#define O65_SIZE_MASK 0x2000 /* Mask to extract size */ + +#define O65_FTYPE_OBJ 0x1000 /* Object file */ +#define O65_FTYPE_EXE 0x0000 /* Executable file */ +#define O65_FTYPE_MASK 0x1000 /* Mask to extract type */ + +#define O65_ADDR_SIMPLE 0x0800 /* Simple addressing */ +#define O65_ADDR_DEFAULT 0x0000 /* Default addressing */ +#define O65_ADDR_MASK 0x0800 /* Mask to extract addressing */ + +#define O65_CHAIN 0x0400 /* Chained file, another one follows */ +#define O65_CHAIN_MASK 0x0400 /* Mask to extract chain flag */ + +#define O65_BSSZERO 0x0200 /* BSS segment must be zeroed */ +#define O65_BSSZERO_MASK 0x0200 /* Mask to extract bss zero flag */ + +/* The following is used if O65_CPU == 6502 */ +#define O65_CPU2_6502 0x0000 /* Executable is for 6502 */ +#define O65_CPU2_65C02 0x0010 /* Executable is for 65C02 */ +#define O65_CPU2_65SC02 0x0020 /* Executable is for 65SC02 */ +#define O65_CPU2_65CE02 0x0030 /* Executable is for 65CE02 */ +#define O65_CPU2_6502X 0x0040 /* Executable is for NMOS 6502 */ +#define O65_CPU2_65816_EMU 0x0050 /* Executable is for 65816 in emul mode */ +#define O65_CPU2_MASK 0x00F0 /* Mask to extract CPU2 field */ + +#define O65_ALIGN_1 0x0000 /* Bytewise alignment */ +#define O65_ALIGN_2 0x0001 /* Align words */ +#define O65_ALIGN_4 0x0002 /* Align longwords */ +#define O65_ALIGN_256 0x0003 /* Align pages (256 bytes) */ +#define O65_ALIGN_MASK 0x0003 /* Mask to extract alignment */ + +/* The mode word as generated by the ld65 linker */ +#define O65_MODE_CC65 (O65_CPU_6502 | \ + O65_RELOC_BYTE | \ + O65_SIZE_16BIT | \ + O65_FTYPE_EXE | \ + O65_ADDR_SIMPLE | \ + O65_ALIGN_1) + +/* The four o65 segment types. */ +#define O65_SEGID_UNDEF 0x00 +#define O65_SEGID_ABS 0x01 +#define O65_SEGID_TEXT 0x02 +#define O65_SEGID_DATA 0x03 +#define O65_SEGID_BSS 0x04 +#define O65_SEGID_ZP 0x05 +#define O65_SEGID_MASK 0x07 + +/* Relocation type codes */ +#define O65_RTYPE_WORD 0x80 +#define O65_RTYPE_HIGH 0x40 +#define O65_RTYPE_LOW 0x20 +#define O65_RTYPE_SEGADDR 0xC0 +#define O65_RTYPE_SEG 0xA0 +#define O65_RTYPE_MASK 0xE0 + +/* Segment IDs */ +#define O65_SEGID_UNDEF 0x00 +#define O65_SEGID_ABS 0x01 +#define O65_SEGID_TEXT 0x02 +#define O65_SEGID_DATA 0x03 +#define O65_SEGID_BSS 0x04 +#define O65_SEGID_ZP 0x05 +#define O65_SEGID_MASK 0x07 + +/* Option tags */ +#define O65_OPT_FILENAME 0 +#define O65_OPT_OS 1 +#define O65_OPT_ASM 2 +#define O65_OPT_AUTHOR 3 +#define O65_OPT_TIMESTAMP 4 + +/* Operating system codes for O65_OPT_OS */ +#define O65_OS_OSA65 1 +#define O65_OS_LUNIX 2 +#define O65_OS_CC65 3 +#define O65_OS_OPENCBM 4 + + + +/* End of o65.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* _6551.h */ +/* */ +/* Internal include file, do not use directly */ +/* */ +/* */ +/* */ +/* (C) 1998-2000 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef __6551_H +#define __6551_H + + + +/* Define a structure with the 6551 register offsets */ +struct __6551 { + unsigned char data; /* Data register */ + unsigned char status; /* Status register */ + unsigned char cmd; /* Command register */ + unsigned char ctrl; /* Control register */ +}; + + + +/* End of _6551.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* cbm_screen_charmap.h */ +/* */ +/* (c) Copyright 2019, Gerhard W. Gruber (sparhawk@gmx.at) */ +/* */ +/* When using CBM mode, this include converts character literals */ +/* from ASCII to screen-code mapping, so you can write directly */ +/* to the screen memory. */ +/* */ +/* If this include is used, no additional macroes are needed. */ +/* */ +/*****************************************************************************/ + +/* No include guard here! Multiple use in one file may be intentional. */ + +#pragma warn (remap-zero, push, off) + +// Char $00 -> c + 128 +#pragma charmap (0x00, 0x80) + +// Char $01 ... $1A -> c + 128 + 64 (control alphabet) +#pragma charmap (0x01, 0xC1) +#pragma charmap (0x02, 0xC2) +#pragma charmap (0x03, 0xC3) +#pragma charmap (0x04, 0xC4) +#pragma charmap (0x05, 0xC5) +#pragma charmap (0x06, 0xC6) +#pragma charmap (0x07, 0xC7) +#pragma charmap (0x08, 0xC8) +#pragma charmap (0x09, 0xC9) +#pragma charmap (0x0A, 0xCA) +#pragma charmap (0x0B, 0xCB) +#pragma charmap (0x0C, 0xCC) +#pragma charmap (0x0D, 0xCD) +#pragma charmap (0x0E, 0xCE) +#pragma charmap (0x0F, 0xCF) +#pragma charmap (0x10, 0xD0) +#pragma charmap (0x11, 0xD1) +#pragma charmap (0x12, 0xD2) +#pragma charmap (0x13, 0xD3) +#pragma charmap (0x14, 0xD4) +#pragma charmap (0x15, 0xD5) +#pragma charmap (0x16, 0xD6) +#pragma charmap (0x17, 0xD7) +#pragma charmap (0x18, 0xD8) +#pragma charmap (0x19, 0xD9) +#pragma charmap (0x1A, 0xDA) + +// Char $1B ... $1F -> c + 128 +#pragma charmap (0x1B, 0x9B) +#pragma charmap (0x1C, 0x9C) +#pragma charmap (0x1D, 0x9D) +#pragma charmap (0x1E, 0x9E) +#pragma charmap (0x1F, 0x9F) + +// Char $20 ... $3F -> c +#pragma charmap (0x20, 0x20) +#pragma charmap (0x21, 0x21) +#pragma charmap (0x22, 0x22) +#pragma charmap (0x23, 0x23) +#pragma charmap (0x24, 0x24) +#pragma charmap (0x25, 0x25) +#pragma charmap (0x26, 0x26) +#pragma charmap (0x27, 0x27) +#pragma charmap (0x28, 0x28) +#pragma charmap (0x29, 0x29) +#pragma charmap (0x2A, 0x2A) +#pragma charmap (0x2B, 0x2B) +#pragma charmap (0x2C, 0x2C) +#pragma charmap (0x2D, 0x2D) +#pragma charmap (0x2E, 0x2E) +#pragma charmap (0x2F, 0x2F) +#pragma charmap (0x30, 0x30) +#pragma charmap (0x31, 0x31) +#pragma charmap (0x32, 0x32) +#pragma charmap (0x33, 0x33) +#pragma charmap (0x34, 0x34) +#pragma charmap (0x35, 0x35) +#pragma charmap (0x36, 0x36) +#pragma charmap (0x37, 0x37) +#pragma charmap (0x38, 0x38) +#pragma charmap (0x39, 0x39) +#pragma charmap (0x3A, 0x3A) +#pragma charmap (0x3B, 0x3B) +#pragma charmap (0x3C, 0x3C) +#pragma charmap (0x3D, 0x3D) +#pragma charmap (0x3E, 0x3E) +#pragma charmap (0x3F, 0x3F) + +// Char $40 -> c - 64 +#pragma charmap (0x40, 0x00) + +// Char $41 ... $5A -> c (upper-case alphabet) +#pragma charmap (0x41, 0x41) +#pragma charmap (0x42, 0x42) +#pragma charmap (0x43, 0x43) +#pragma charmap (0x44, 0x44) +#pragma charmap (0x45, 0x45) +#pragma charmap (0x46, 0x46) +#pragma charmap (0x47, 0x47) +#pragma charmap (0x48, 0x48) +#pragma charmap (0x49, 0x49) +#pragma charmap (0x4A, 0x4A) +#pragma charmap (0x4B, 0x4B) +#pragma charmap (0x4C, 0x4C) +#pragma charmap (0x4D, 0x4D) +#pragma charmap (0x4E, 0x4E) +#pragma charmap (0x4F, 0x4F) +#pragma charmap (0x50, 0x50) +#pragma charmap (0x51, 0x51) +#pragma charmap (0x52, 0x52) +#pragma charmap (0x53, 0x53) +#pragma charmap (0x54, 0x54) +#pragma charmap (0x55, 0x55) +#pragma charmap (0x56, 0x56) +#pragma charmap (0x57, 0x57) +#pragma charmap (0x58, 0x58) +#pragma charmap (0x59, 0x59) +#pragma charmap (0x5A, 0x5A) + +// Char $5B ... $5F -> c - 64 +#pragma charmap (0x5B, 0x1B) +#pragma charmap (0x5C, 0x1C) +#pragma charmap (0x5D, 0x1D) +#pragma charmap (0x5E, 0x1E) +#pragma charmap (0x5F, 0x1F) + +// Char $60 -> c - 32 +#pragma charmap (0x60, 0x40) + +// Char $61 ... $7A -> c - 32 - 64 (lower-case alphabet) +#pragma charmap (0x61, 0x01) +#pragma charmap (0x62, 0x02) +#pragma charmap (0x63, 0x03) +#pragma charmap (0x64, 0x04) +#pragma charmap (0x65, 0x05) +#pragma charmap (0x66, 0x06) +#pragma charmap (0x67, 0x07) +#pragma charmap (0x68, 0x08) +#pragma charmap (0x69, 0x09) +#pragma charmap (0x6A, 0x0A) +#pragma charmap (0x6B, 0x0B) +#pragma charmap (0x6C, 0x0C) +#pragma charmap (0x6D, 0x0D) +#pragma charmap (0x6E, 0x0E) +#pragma charmap (0x6F, 0x0F) +#pragma charmap (0x70, 0x10) +#pragma charmap (0x71, 0x11) +#pragma charmap (0x72, 0x12) +#pragma charmap (0x73, 0x13) +#pragma charmap (0x74, 0x14) +#pragma charmap (0x75, 0x15) +#pragma charmap (0x76, 0x16) +#pragma charmap (0x77, 0x17) +#pragma charmap (0x78, 0x18) +#pragma charmap (0x79, 0x19) +#pragma charmap (0x7A, 0x1A) + +// Char $7B ... $7F -> c - 32 +#pragma charmap (0x7B, 0x5B) +#pragma charmap (0x7C, 0x5C) +#pragma charmap (0x7D, 0x5D) +#pragma charmap (0x7E, 0x5E) +#pragma charmap (0x7F, 0x5F) + +// Char $80 -> c + 64 +#pragma charmap (0x80, 0xC0) + +// Char $81 ... $9A -> c (control alphabet) +#pragma charmap (0x81, 0x81) +#pragma charmap (0x82, 0x82) +#pragma charmap (0x83, 0x83) +#pragma charmap (0x84, 0x84) +#pragma charmap (0x85, 0x85) +#pragma charmap (0x86, 0x86) +#pragma charmap (0x87, 0x87) +#pragma charmap (0x88, 0x88) +#pragma charmap (0x89, 0x89) +#pragma charmap (0x8A, 0x8A) +#pragma charmap (0x8B, 0x8B) +#pragma charmap (0x8C, 0x8C) +#pragma charmap (0x8D, 0x8D) +#pragma charmap (0x8E, 0x8E) +#pragma charmap (0x8F, 0x8F) +#pragma charmap (0x90, 0x90) +#pragma charmap (0x91, 0x91) +#pragma charmap (0x92, 0x92) +#pragma charmap (0x93, 0x93) +#pragma charmap (0x94, 0x94) +#pragma charmap (0x95, 0x95) +#pragma charmap (0x96, 0x96) +#pragma charmap (0x97, 0x97) +#pragma charmap (0x98, 0x98) +#pragma charmap (0x99, 0x99) +#pragma charmap (0x9A, 0x9A) + +// Char $9B ... $9F -> c + 64 +#pragma charmap (0x9B, 0xDB) +#pragma charmap (0x9C, 0xDC) +#pragma charmap (0x9D, 0xDD) +#pragma charmap (0x9E, 0xDE) +#pragma charmap (0x9F, 0xDF) + +// Char $A0 ... $BF -> c - 64 +#pragma charmap (0xA0, 0x60) +#pragma charmap (0xA1, 0x61) +#pragma charmap (0xA2, 0x62) +#pragma charmap (0xA3, 0x63) +#pragma charmap (0xA4, 0x64) +#pragma charmap (0xA5, 0x65) +#pragma charmap (0xA6, 0x66) +#pragma charmap (0xA7, 0x67) +#pragma charmap (0xA8, 0x68) +#pragma charmap (0xA9, 0x69) +#pragma charmap (0xAA, 0x6A) +#pragma charmap (0xAB, 0x6B) +#pragma charmap (0xAC, 0x6C) +#pragma charmap (0xAD, 0x6D) +#pragma charmap (0xAE, 0x6E) +#pragma charmap (0xAF, 0x6F) +#pragma charmap (0xB0, 0x70) +#pragma charmap (0xB1, 0x71) +#pragma charmap (0xB2, 0x72) +#pragma charmap (0xB3, 0x73) +#pragma charmap (0xB4, 0x74) +#pragma charmap (0xB5, 0x75) +#pragma charmap (0xB6, 0x76) +#pragma charmap (0xB7, 0x77) +#pragma charmap (0xB8, 0x78) +#pragma charmap (0xB9, 0x79) +#pragma charmap (0xBA, 0x7A) +#pragma charmap (0xBB, 0x7B) +#pragma charmap (0xBC, 0x7C) +#pragma charmap (0xBD, 0x7D) +#pragma charmap (0xBE, 0x7E) +#pragma charmap (0xBF, 0x7F) + +// Char $C0 ... $DF -> c - 128 +#pragma charmap (0xC0, 0x40) + +// Char $C1 ... $DA -> c - 128 - 64 (lower-case alphabet) +#pragma charmap (0xC1, 0x01) +#pragma charmap (0xC2, 0x02) +#pragma charmap (0xC3, 0x03) +#pragma charmap (0xC4, 0x04) +#pragma charmap (0xC5, 0x05) +#pragma charmap (0xC6, 0x06) +#pragma charmap (0xC7, 0x07) +#pragma charmap (0xC8, 0x08) +#pragma charmap (0xC9, 0x09) +#pragma charmap (0xCA, 0x0A) +#pragma charmap (0xCB, 0x0B) +#pragma charmap (0xCC, 0x0C) +#pragma charmap (0xCD, 0x0D) +#pragma charmap (0xCE, 0x0E) +#pragma charmap (0xCF, 0x0F) +#pragma charmap (0xD0, 0x10) +#pragma charmap (0xD1, 0x11) +#pragma charmap (0xD2, 0x12) +#pragma charmap (0xD3, 0x13) +#pragma charmap (0xD4, 0x14) +#pragma charmap (0xD5, 0x15) +#pragma charmap (0xD6, 0x16) +#pragma charmap (0xD7, 0x17) +#pragma charmap (0xD8, 0x18) +#pragma charmap (0xD9, 0x19) +#pragma charmap (0xDA, 0x1A) + +// Char $DB ... $DF -> c - 128 +#pragma charmap (0xDB, 0x5B) +#pragma charmap (0xDC, 0x5C) +#pragma charmap (0xDD, 0x5D) +#pragma charmap (0xDE, 0x5E) +#pragma charmap (0xDF, 0x5F) + +// Char $E0 ... $FF -> c - 128 +#pragma charmap (0xE0, 0x60) +#pragma charmap (0xE1, 0x61) +#pragma charmap (0xE2, 0x62) +#pragma charmap (0xE3, 0x63) +#pragma charmap (0xE4, 0x64) +#pragma charmap (0xE5, 0x65) +#pragma charmap (0xE6, 0x66) +#pragma charmap (0xE7, 0x67) +#pragma charmap (0xE8, 0x68) +#pragma charmap (0xE9, 0x69) +#pragma charmap (0xEA, 0x6A) +#pragma charmap (0xEB, 0x6B) +#pragma charmap (0xEC, 0x6C) +#pragma charmap (0xED, 0x6D) +#pragma charmap (0xEE, 0x6E) +#pragma charmap (0xEF, 0x6F) +#pragma charmap (0xF0, 0x70) +#pragma charmap (0xF1, 0x71) +#pragma charmap (0xF2, 0x72) +#pragma charmap (0xF3, 0x73) +#pragma charmap (0xF4, 0x74) +#pragma charmap (0xF5, 0x75) +#pragma charmap (0xF6, 0x76) +#pragma charmap (0xF7, 0x77) +#pragma charmap (0xF8, 0x78) +#pragma charmap (0xF9, 0x79) +#pragma charmap (0xFA, 0x7A) +#pragma charmap (0xFB, 0x7B) +#pragma charmap (0xFC, 0x7C) +#pragma charmap (0xFD, 0x7D) +#pragma charmap (0xFE, 0x7E) +#pragma charmap (0xFF, 0x7F) + +#pragma warn (remap-zero, pop) /*****************************************************************************/ /* */ /* em-kernel.h */ @@ -11410,856 +13872,6 @@ extern em_drv_header* em_drv; /* Pointer to driver */ /* End of em-kernel.h */ -#endif -/*****************************************************************************/ -/* */ -/* mouse-kernel.h */ -/* */ -/* Internally used mouse functions */ -/* */ -/* */ -/* */ -/* (C) 2003-2006, Ullrich von Bassewitz */ -/* Rmerstrae 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ -/* */ -/* */ -/* This software is provided 'as-is', without any expressed or implied */ -/* warranty. In no event will the authors be held liable for any damages */ -/* arising from the use of this software. */ -/* */ -/* Permission is granted to anyone to use this software for any purpose, */ -/* including commercial applications, and to alter it and redistribute it */ -/* freely, subject to the following restrictions: */ -/* */ -/* 1. The origin of this software must not be misrepresented; you must not */ -/* claim that you wrote the original software. If you use this software */ -/* in a product, an acknowledgment in the product documentation would be */ -/* appreciated but is not required. */ -/* 2. Altered source versions must be plainly marked as such, and must not */ -/* be misrepresented as being the original software. */ -/* 3. This notice may not be removed or altered from any source */ -/* distribution. */ -/* */ -/*****************************************************************************/ - - - -#ifndef _MOUSE_KERNEL_H -#define _MOUSE_KERNEL_H - - - -/*****************************************************************************/ -/* Data */ -/*****************************************************************************/ - - - -/* Mouse kernel variables */ -extern void* mouse_drv; /* Pointer to driver */ - - - -/*****************************************************************************/ -/* Code */ -/*****************************************************************************/ - - - -void mouse_clear_ptr (void); -/* Clear the mouse_drv pointer */ - - - -/* End of mouse-kernel.h */ -#endif - - - -/*****************************************************************************/ -/* */ -/* tgi-vectorfont.h */ -/* */ -/* TGI vector font definitions */ -/* */ -/* */ -/* */ -/* (C) 2009, Ullrich von Bassewitz */ -/* Roemerstrasse 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ -/* */ -/* */ -/* This software is provided 'as-is', without any expressed or implied */ -/* warranty. In no event will the authors be held liable for any damages */ -/* arising from the use of this software. */ -/* */ -/* Permission is granted to anyone to use this software for any purpose, */ -/* including commercial applications, and to alter it and redistribute it */ -/* freely, subject to the following restrictions: */ -/* */ -/* 1. The origin of this software must not be misrepresented; you must not */ -/* claim that you wrote the original software. If you use this software */ -/* in a product, an acknowledgment in the product documentation would be */ -/* appreciated but is not required. */ -/* 2. Altered source versions must be plainly marked as such, and must not */ -/* be misrepresented as being the original software. */ -/* 3. This notice may not be removed or altered from any source */ -/* distribution. */ -/* */ -/*****************************************************************************/ - - - -#ifndef _TGI_VECTORFONT_H -#define _TGI_VECTORFONT_H - - - -/*****************************************************************************/ -/* Data */ -/*****************************************************************************/ - - - -#define TGI_VF_FIRSTCHAR 0x20 /* First char in file */ -#define TGI_VF_LASTCHAR 0x7E /* Last char in file */ -#define TGI_VF_CCOUNT (TGI_VF_LASTCHAR - TGI_VF_FIRSTCHAR + 1) - -#define TGI_VF_VERSION 0x00 /* File version number */ - -/* TCH file header */ -typedef struct tgi_vectorfont_header tgi_vectorfont_header; -struct tgi_vectorfont_header { - unsigned char magic[3]; /* "TCH" */ - unsigned char version; /* Version number */ - unsigned size; /* Font data size */ -}; - -/* Font data loaded directly from file */ -struct tgi_vectorfont { - unsigned char top; /* Height of char */ - unsigned char baseline; /* Character baseline */ - unsigned char bottom; /* Descender */ - unsigned char widths[TGI_VF_CCOUNT]; /* Char widths */ - unsigned char* chars[TGI_VF_CCOUNT]; /* Pointer to character defs */ - unsigned char vec_ops[1]; /* Actually dynamic */ -}; - - - -/*****************************************************************************/ -/* Code */ -/*****************************************************************************/ - - - -void __fastcall__ tgi_vectorchar (char C); -/* Draw one character of the vector font at the current graphics cursor -** position using the current font magnification. -*/ - - - -/* End of tgi-vectorfont.h */ -#endif - - - -/*****************************************************************************/ -/* */ -/* tgi-kernel.h */ -/* */ -/* TGI kernel interface */ -/* */ -/* */ -/* */ -/* (C) 2002-2012, Ullrich von Bassewitz */ -/* Roemerstrasse 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ -/* */ -/* */ -/* This software is provided 'as-is', without any expressed or implied */ -/* warranty. In no event will the authors be held liable for any damages */ -/* arising from the use of this software. */ -/* */ -/* Permission is granted to anyone to use this software for any purpose, */ -/* including commercial applications, and to alter it and redistribute it */ -/* freely, subject to the following restrictions: */ -/* */ -/* 1. The origin of this software must not be misrepresented; you must not */ -/* claim that you wrote the original software. If you use this software */ -/* in a product, an acknowledgment in the product documentation would be */ -/* appreciated but is not required. */ -/* 2. Altered source versions must be plainly marked as such, and must not */ -/* be misrepresented as being the original software. */ -/* 3. This notice may not be removed or altered from any source */ -/* distribution. */ -/* */ -/*****************************************************************************/ - - - -#ifndef _TGI_KERNEL_H -#define _TGI_KERNEL_H - - - -/*****************************************************************************/ -/* Data */ -/*****************************************************************************/ - - - -/* TGI kernel variables */ -extern void* tgi_drv; /* Pointer to driver */ -extern unsigned char tgi_error; /* Last error code */ -extern unsigned char tgi_gmode; /* Flag: Graphics mode active */ -extern int tgi_curx; /* Current drawing cursor X */ -extern int tgi_cury; /* Current drawing cursor Y */ -extern unsigned char tgi_color; /* Current drawing color */ -extern unsigned char tgi_font; /* Current font type */ -extern unsigned tgi_xres; /* X resolution of the current mode */ -extern unsigned tgi_yres; /* Y resolution of the current mode */ -extern unsigned char tgi_colorcount; /* Number of available colors */ -extern unsigned char tgi_pagecount; /* Number of available screens */ -extern unsigned char tgi_fontwidth; /* System font width in pixels */ -extern unsigned char tgi_fontheight; /* System font height in pixels */ -extern unsigned tgi_aspectratio; /* Aspect ratio as fixed point 8.8 */ -extern unsigned char tgi_flags; /* TGI driver flags */ -extern unsigned tgi_textscalew[2]; /* Vector/bitmap font scale 8.8 */ -extern unsigned tgi_textscaleh[2]; /* Vector/bitmap font scale 8.8 */ -extern unsigned tgi_charwidth; /* Width of scaled bitmap font */ -extern unsigned tgi_charheight; /* Height of scaled bitmap font */ - - - -/* End of tgi-kernel.h */ -#endif - - - - -/*****************************************************************************/ -/* */ -/* tgi-error.h */ -/* */ -/* TGI error codes */ -/* */ -/* */ -/* */ -/* (C) 2002-2012, Ullrich von Bassewitz */ -/* Roemerstrasse 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ -/* */ -/* */ -/* This software is provided 'as-is', without any expressed or implied */ -/* warranty. In no event will the authors be held liable for any damages */ -/* arising from the use of this software. */ -/* */ -/* Permission is granted to anyone to use this software for any purpose, */ -/* including commercial applications, and to alter it and redistribute it */ -/* freely, subject to the following restrictions: */ -/* */ -/* 1. The origin of this software must not be misrepresented; you must not */ -/* claim that you wrote the original software. If you use this software */ -/* in a product, an acknowledgment in the product documentation would be */ -/* appreciated but is not required. */ -/* 2. Altered source versions must be plainly marked as such, and must not */ -/* be misrepresented as being the original software. */ -/* 3. This notice may not be removed or altered from any source */ -/* distribution. */ -/* */ -/*****************************************************************************/ - - - -#ifndef _TGI_ERROR_H -#define _TGI_ERROR_H - - - -/*****************************************************************************/ -/* Data */ -/*****************************************************************************/ - - - -#define TGI_ERR_OK 0 /* No error */ -#define TGI_ERR_NO_DRIVER 1 /* No driver available */ -#define TGI_ERR_CANNOT_LOAD 2 /* Error loading driver or font */ -#define TGI_ERR_INV_DRIVER 3 /* Invalid driver */ -#define TGI_ERR_INV_MODE 4 /* Mode not supported by driver */ -#define TGI_ERR_INV_ARG 5 /* Invalid function argument */ -#define TGI_ERR_INV_FUNC 6 /* Function not supported */ -#define TGI_ERR_INV_FONT 7 /* Font file is invalid */ -#define TGI_ERR_NO_RES 8 /* Out of resources */ -#define TGI_ERR_INSTALLED 9 /* A driver is already installed */ - - - -/* End of tgi-error.h */ -#endif - - - -/* - GEOS mouse and sprite functions - - by Maciej 'YTM/Elysium' Witkowiak -*/ - -#ifndef _GSPRITE_H -#define _GSPRITE_H - -void StartMouseMode(void); -void ClearMouseMode(void); -void MouseUp(void); -void MouseOff(void); -char __fastcall__ IsMseInRegion(struct window *region); - -void __fastcall__ DrawSprite(char spritenum, const char *spritepic); -void __fastcall__ PosSprite(char spritenum, struct pixel *position); -void __fastcall__ EnablSprite(char spritenum); -void __fastcall__ DisablSprite(char spritenum); - -void __fastcall__ InitTextPrompt(char height); -void __fastcall__ PromptOn(struct pixel *position); -void PromptOff(void); -char GetNextChar(void); - -/* keyboard constants */ -#define KEY_F1 1 -#define KEY_F2 2 -#define KEY_F3 3 -#define KEY_F4 4 -#define KEY_F5 5 -#define KEY_F6 6 -#define KEY_NOSCRL 7 -#define KEY_ENTER 13 -#define KEY_F7 14 -#define KEY_F8 15 -#define KEY_HOME 18 -#define KEY_CLEAR 19 -#define KEY_LARROW 20 -#define KEY_UPARROW 21 -#define KEY_STOP 22 -#define KEY_RUN 23 -#define KEY_BPS 24 -#define KEY_HELP 25 -#define KEY_ALT 26 -#define KEY_ESC 27 -#define KEY_INSERT 28 -#define KEY_INVALID 31 -#define KEY_LEFT BACKSPACE -#ifdef __GEOS_CBM__ -#define KEY_UP 16 -#define KEY_DOWN 17 -#define KEY_DELETE 29 -#define KEY_RIGHT 30 -#else -#define KEY_UP 11 -#define KEY_DOWN 10 -#define KEY_DELETE 127 -#define KEY_RIGHT 21 -#endif - -/* values of faultData - pointer position vs. mouseWindow */ -/* bit numbers */ -#define OFFTOP_BIT 7 -#define OFFBOTTOM_BIT 6 -#define OFFLEFT_BIT 5 -#define OFFRIGHT_BIT 4 -#define OFFMENU_BIT 3 -/* bit masks */ -#define SET_OFFTOP 0x80 -#define SET_OFFBOTTOM 0x40 -#define SET_OFFLEFT 0x20 -#define SET_OFFRIGHT 0x10 -#define SET_OFFMENU 0x08 - -/* mouseOn */ -/* bit numbers */ -#define MOUSEON_BIT 7 -#define MENUON_BIT 6 -#define ICONSON_BIT 5 -/* bit masks */ -#define SET_MSE_ON 0x80 -#define SET_MENUON 0x40 -#define SET_ICONSON 0x20 - -/* pressFlag */ -/* bit numbers */ -#define KEYPRESS_BIT 7 -#define INPUT_BIT 6 -#define MOUSE_BIT 5 -/* bit masks */ -#define SET_KEYPRESS 0x80 -#define SET_INPUTCHG 0x40 -#define SET_MOUSE 0x20 - -#endif -/* - GEOS constants - - reassembled by Maciej 'YTM/Elysium' Witkowiak -*/ - -/* Here are constants which didn't fit into any other cathegory... */ - -#ifndef _GCONST_H -#define _GCONST_H - -#define NULL 0 -#define FALSE NULL -#define TRUE 0xff -#define MOUSE_SPRNUM 0 -#define DISK_DRV_LGH 0x0d80 - -/* drivetypes */ -#define DRV_NULL 0 -#define DRV_1541 1 -#define DRV_1571 2 -#define DRV_1581 3 -#define DRV_NETWORK 15 - -/* various disk constants */ -#define REL_FILE_NUM 9 -#define CMND_FILE_NUM 15 -#define MAX_CMND_STR 32 -#define DIR_1581_TRACK 40 -#define DIR_ACC_CHAN 13 -#define DIR_TRACK 18 -#define N_TRACKS 35 -#define DK_NM_ID_LEN 18 -#define TRACK 9 -#define SECTOR 12 -#define TOTAL_BLOCKS 664 - -/* offset to something */ -#define OFF_INDEX_PTR 1 - -/* values for CPU_DATA memory config - C64 */ -#define IO_IN 0x35 -#define KRNL_IO_IN 0x36 -#define KRNL_BAS_IO_IN 0x37 - -/* values for MMU config - C128 */ -#define CIOIN 0x7E -#define CRAM64K 0x7F -#define CKRNLBASIOIN 0x40 -#define CKRNLIOIN 0x4E - -/* alarmSetFlag */ -#define ALARMMASK 4 - -#define CLR_SAVE 0x40 -#define CONSTRAINED 0x40 -#define UN_CONSTRAINED 0 -#define FG_SAVE 0x80 - -#define FUTURE1 7 -#define FUTURE2 8 -#define FUTURE3 9 -#define FUTURE4 10 -#define USELAST 127 -#define SHORTCUT 128 - -#endif -/* - GEOS graphic (non icon/menu/sprite) functions - - by Maciej 'YTM/Elysium' Witkowiak -*/ - -#ifndef _GGRAPH_H -#define _GGRAPH_H - -#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 @@ -12600,157 +14212,6 @@ typedef void dlgBoxStr; #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 @@ -12925,6 +14386,181 @@ struct inittab { /* use struct inittab mytab[n] for initram char values[]; /* actual string of bytes */ }; +#endif +/* + GEOS mouse and sprite functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GSPRITE_H +#define _GSPRITE_H + +void StartMouseMode(void); +void ClearMouseMode(void); +void MouseUp(void); +void MouseOff(void); +char __fastcall__ IsMseInRegion(struct window *region); + +void __fastcall__ DrawSprite(char spritenum, const char *spritepic); +void __fastcall__ PosSprite(char spritenum, struct pixel *position); +void __fastcall__ EnablSprite(char spritenum); +void __fastcall__ DisablSprite(char spritenum); + +void __fastcall__ InitTextPrompt(char height); +void __fastcall__ PromptOn(struct pixel *position); +void PromptOff(void); +char GetNextChar(void); + +/* keyboard constants */ +#define KEY_F1 1 +#define KEY_F2 2 +#define KEY_F3 3 +#define KEY_F4 4 +#define KEY_F5 5 +#define KEY_F6 6 +#define KEY_NOSCRL 7 +#define KEY_ENTER 13 +#define KEY_F7 14 +#define KEY_F8 15 +#define KEY_HOME 18 +#define KEY_CLEAR 19 +#define KEY_LARROW 20 +#define KEY_UPARROW 21 +#define KEY_STOP 22 +#define KEY_RUN 23 +#define KEY_BPS 24 +#define KEY_HELP 25 +#define KEY_ALT 26 +#define KEY_ESC 27 +#define KEY_INSERT 28 +#define KEY_INVALID 31 +#define KEY_LEFT BACKSPACE +#ifdef __GEOS_CBM__ +#define KEY_UP 16 +#define KEY_DOWN 17 +#define KEY_DELETE 29 +#define KEY_RIGHT 30 +#else +#define KEY_UP 11 +#define KEY_DOWN 10 +#define KEY_DELETE 127 +#define KEY_RIGHT 21 +#endif + +/* values of faultData - pointer position vs. mouseWindow */ +/* bit numbers */ +#define OFFTOP_BIT 7 +#define OFFBOTTOM_BIT 6 +#define OFFLEFT_BIT 5 +#define OFFRIGHT_BIT 4 +#define OFFMENU_BIT 3 +/* bit masks */ +#define SET_OFFTOP 0x80 +#define SET_OFFBOTTOM 0x40 +#define SET_OFFLEFT 0x20 +#define SET_OFFRIGHT 0x10 +#define SET_OFFMENU 0x08 + +/* mouseOn */ +/* bit numbers */ +#define MOUSEON_BIT 7 +#define MENUON_BIT 6 +#define ICONSON_BIT 5 +/* bit masks */ +#define SET_MSE_ON 0x80 +#define SET_MENUON 0x40 +#define SET_ICONSON 0x20 + +/* pressFlag */ +/* bit numbers */ +#define KEYPRESS_BIT 7 +#define INPUT_BIT 6 +#define MOUSE_BIT 5 +/* bit masks */ +#define SET_KEYPRESS 0x80 +#define SET_INPUTCHG 0x40 +#define SET_MOUSE 0x20 + +#endif +/* + GEOS functions from disk driver + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GDISK_H +#define _GDISK_H + +#include + +char __fastcall__ ReadBuff(struct tr_se *myTrSe); +char __fastcall__ WriteBuff(struct tr_se *myTrSe); + +char __fastcall__ GetBlock(struct tr_se *myTrSe, char *buffer); +char __fastcall__ PutBlock(struct tr_se *myTrSe, const char *buffer); +char __fastcall__ ReadBlock(struct tr_se *myTrSe, char *buffer); +char __fastcall__ WriteBlock(struct tr_se *myTrSe, const char *buffer); +char __fastcall__ VerWriteBlock(struct tr_se *myTrSe, const char *buffer); + +unsigned CalcBlksFree(void); +char ChkDkGEOS(void); +char SetGEOSDisk(void); +char NewDisk(void); +char OpenDisk(void); + +char __fastcall__ FindBAMBit(struct tr_se *myTrSe); +char __fastcall__ BlkAlloc(struct tr_se output[], unsigned length); +char __fastcall__ NxtBlkAlloc(struct tr_se *startTrSe, + struct tr_se output[], unsigned length); +char __fastcall__ FreeBlock(struct tr_se *myTrSe); +struct tr_se __fastcall__ SetNextFree(struct tr_se *myTrSe); +// above needs (unsigned) casts on both sides of '=' + +char GetDirHead(void); +char PutDirHead(void); +void __fastcall__ GetPtrCurDkNm(char *name); + +void EnterTurbo(void); +void ExitTurbo(void); +void PurgeTurbo(void); + +char __fastcall__ ChangeDiskDevice(char newdev); + +/* disk header offsets i.e. index curDirHead with these */ +#define OFF_TO_BAM 4 +#define OFF_DISK_NAME 144 +#define OFF_GS_DTYPE 189 +#define OFF_OP_TR_SC 171 +#define OFF_GS_ID 173 +/* disk errors reported in _oserror */ +#define ANY_FAULT 0xf0 +#define G_EOF 0 +#define NO_BLOCKS 1 +#define INV_TRACK 2 +#define INSUFF_SPACE 3 +#define FULL_DIRECTORY 4 +#define FILE_NOT_FOUND 5 +#define BAD_BAM 6 +#define UNOPENED_VLIR 7 +#define INV_RECORD 8 +#define OUT_OF_RECORDS 9 +#define STRUCT_MISMAT 10 +#define BFR_OVERFLOW 11 +#define CANCEL_ERR 12 +#define DEV_NOT_FOUND 13 +#define INCOMPATIBLE 14 +#define HDR_NOT_THERE 0x20 +#define NO_SYNC 0x21 +#define DBLK_NOT_THERE 0x22 +#define DAT_CHKSUM_ERR 0x23 +#define WR_VER_ERR 0x25 +#define WR_PR_ON 0x26 +#define HDR_CHKSUM_ERR 0x27 +#define DSK_ID_MISMAT 0x29 +#define BYTE_DEC_ERR 0x2e +#define DOS_MISMATCH 0x73 + #endif /* GEOS system functions @@ -12980,6 +14616,985 @@ char get_tv(void); #define TV_NTSC 0x80 #endif +/* + GEOS menu and icon functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GMENU_H +#define _GMENU_H + +#include + +void __fastcall__ DoMenu(struct menu *myMenu); +void ReDoMenu(void); +void RecoverMenu(void); +void RecoverAllMenus(void); +void DoPreviousMenu(void); +void GotoFirstMenu(void); + +void __fastcall__ DoIcons(struct icontab *myIconTab); + +/* DoMenu - menutypes */ +#define MENU_ACTION 0x00 +#define DYN_SUB_MENU 0x40 +#define SUB_MENU 0x80 +#define HORIZONTAL 0x00 +#define VERTICAL 0x80 +/* menu string offsets */ +#define OFF_MY_TOP 0 +#define OFF_MY_BOT 1 +#define OFF_MX_LEFT 2 +#define OFF_MX_RIGHT 4 +#define OFF_NUM_M_ITEMS 6 +#define OFF_1ST_M_ITEM 7 +/* icon string offsets */ +#define OFF_NM_ICNS 0 +#define OFF_IC_XMOUSE 1 +#define OFF_IC_YMOUSE 3 +#define OFF_PIC_ICON 0 +#define OFF_X_ICON_POS 2 +#define OFF_Y_ICON_POS 3 +#define OFF_WDTH_ICON 4 +#define OFF_HEIGHT_ICON 5 +#define OFF_SRV_RT_ICON 6 +#define OFF_NX_ICON 8 +/* icons, menus status flags */ +#define ST_FLASH 0x80 +#define ST_INVERT 0x40 +#define ST_LD_AT_ADDR 0x01 +#define ST_LD_DATA 0x80 +#define ST_PR_DATA 0x40 +#define ST_WR_PR 0x40 + +#endif +/* + GEOS constants + + reassembled by Maciej 'YTM/Elysium' Witkowiak +*/ + +/* Here are constants which didn't fit into any other cathegory... */ + +#ifndef _GCONST_H +#define _GCONST_H + +#define NULL 0 +#define FALSE NULL +#define TRUE 0xff +#define MOUSE_SPRNUM 0 +#define DISK_DRV_LGH 0x0d80 + +/* drivetypes */ +#define DRV_NULL 0 +#define DRV_1541 1 +#define DRV_1571 2 +#define DRV_1581 3 +#define DRV_NETWORK 15 + +/* various disk constants */ +#define REL_FILE_NUM 9 +#define CMND_FILE_NUM 15 +#define MAX_CMND_STR 32 +#define DIR_1581_TRACK 40 +#define DIR_ACC_CHAN 13 +#define DIR_TRACK 18 +#define N_TRACKS 35 +#define DK_NM_ID_LEN 18 +#define TRACK 9 +#define SECTOR 12 +#define TOTAL_BLOCKS 664 + +/* offset to something */ +#define OFF_INDEX_PTR 1 + +/* values for CPU_DATA memory config - C64 */ +#define IO_IN 0x35 +#define KRNL_IO_IN 0x36 +#define KRNL_BAS_IO_IN 0x37 + +/* values for MMU config - C128 */ +#define CIOIN 0x7E +#define CRAM64K 0x7F +#define CKRNLBASIOIN 0x40 +#define CKRNLIOIN 0x4E + +/* alarmSetFlag */ +#define ALARMMASK 4 + +#define CLR_SAVE 0x40 +#define CONSTRAINED 0x40 +#define UN_CONSTRAINED 0 +#define FG_SAVE 0x80 + +#define FUTURE1 7 +#define FUTURE2 8 +#define FUTURE3 9 +#define FUTURE4 10 +#define USELAST 127 +#define SHORTCUT 128 + +#endif +/* + GEOS memory and string functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GMEMORY_H +#define _GMEMORY_H + +#include + +void __fastcall__ CopyString(char *dest, const char *source); +char __fastcall__ CmpString(const char *dest, const char *source); +void __fastcall__ CopyFString(char len, char *dest, const char *source); +char __fastcall__ CmpFString(char len, char *dest, const char *source); + +unsigned __fastcall__ CRC(const char *buffer, unsigned len); +void* __fastcall__ ClearRam(char *dest, unsigned len); +void* __fastcall__ FillRam(char *dest, char what, unsigned len); + +void* __fastcall__ MoveData(char *dest, const char *source, unsigned len); + +void __fastcall__ InitRam(char *myInitTab); + +void __fastcall__ StashRAM(char REUBank, unsigned len, char *reuaddy, const char *cpuaddy); +void __fastcall__ FetchRAM(char REUBank, unsigned len, const char *reuaddy, char *cpuaddy); +void __fastcall__ SwapRAM(char REUBank, unsigned len, char *reuaddy, char *cpuaddy); +char __fastcall__ VerifyRAM(char REUBank, unsigned len, const char *reuaddy, const char *cpuaddy); + +#endif +/* + GEOS dialog box functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GDLGBOX_H +#define _GDLGBOX_H + +char __fastcall__ DoDlgBox(const char *dboxstring); +char RstrFrmDialogue(void); + +/* These are custom, predefined dialog boxes, I'm sure you'll find them usable + Most of them show 2 lines of text */ + +char __fastcall__ DlgBoxYesNo(const char *line1, const char *line2); +char __fastcall__ DlgBoxOkCancel(const char *line1, const char *line2); +void __fastcall__ DlgBoxOk(const char *line1, const char *line2); +char __fastcall__ DlgBoxGetString(char *myString, char strLength, + const char *line1, const char *line2); +char __fastcall__ DlgBoxFileSelect(const char *classtxt, char ftype, + char *fname); + +/* This is a more general dialog box, works like printf in a window */ +char MessageBox(char mode, const char *format, ...); + +/* mode argument for MessageBox() */ +enum { + MB_EMPTY=0, + MB_OK, + MB_OKCANCEL, + MB_YESNO, + MB_LAST }; + +/* Now the command string type */ + +typedef void dlgBoxStr; + +/* and command string commands - macros */ + +#define DB_DEFPOS(pattern) (char)(DEF_DB_POS | (pattern)) +#define DB_SETPOS(pattern,top,bot,left,right) \ + (char)(SET_DB_POS | (pattern)), (char)(top), (char)(bot), \ + (unsigned)(left), (unsigned)(right) +#define DB_ICON(i,x,y) (char)(i), (char)(x), (char)(y) +#define DB_TXTSTR(x,y,text) (char)DBTXTSTR, (char)(x), (char)(y), (text) +#define DB_VARSTR(x,y,ptr) (char)DBVARSTR, (char)(x), (char)(y), (char)(ptr) +#define DB_GETSTR(x,y,ptr,length) (char)DBGETSTRING, (char)(x), (char)(y), (char)(ptr), (char)(length) +#define DB_SYSOPV(ptr) (char)DBSYSOPV, (unsigned)(ptr) +#define DB_GRPHSTR(ptr) (char)DBGRPHSTR, (unsigned)(ptr) +#define DB_GETFILES(x,y) (char)DBGETFILES, (char)(x), (char)(y) +#define DB_OPVEC(ptr) (char)DBOPVEC, (unsigned)(ptr) +#define DB_USRICON(x,y,ptr) (char)DBUSRICON, (char)(x), (char)(y), (unsigned)(ptr) +#define DB_USRROUT(ptr) (char)DB_USR_ROUT, (unsigned)(ptr) +#define DB_END (char)NULL + +/* + part of constants below is used internally, but some are useful for macros above +*/ + +/* icons for DB_ICON */ +#define OK 1 +#define CANCEL 2 +#define YES 3 +#define NO 4 +#define OPEN 5 +#define DISK 6 +/* commands - internally used by command macros */ +#define DBTXTSTR 11 +#define DBVARSTR 12 +#define DBGETSTRING 13 +#define DBSYSOPV 14 +#define DBGRPHSTR 15 +#define DBGETFILES 16 +#define DBOPVEC 17 +#define DBUSRICON 18 +#define DB_USR_ROUT 19 +/* icons tabulation in standard window */ +#define DBI_X_0 1 +#define DBI_X_1 9 +#define DBI_X_2 17 +#define DBI_Y_0 8 +#define DBI_Y_1 40 +#define DBI_Y_2 72 +/* standard window size defaults */ +#define SET_DB_POS 0 +#define DEF_DB_POS 0x80 +#define DEF_DB_TOP 32 +#define DEF_DB_BOT 127 +#define DEF_DB_LEFT 64 +#define DEF_DB_RIGHT 255 +/* text tabulation in standard window */ +#define TXT_LN_1_Y 16 +#define TXT_LN_2_Y 32 +#define TXT_LN_3_Y 48 +#define TXT_LN_4_Y 64 +#define TXT_LN_5_Y 80 +#define TXT_LN_X 16 +/* system icons size */ +#define SYSDBI_HEIGHT 16 +#define SYSDBI_WIDTH 6 +/* dialogbox string offsets */ +#define OFF_DB_FORM 0 +#define OFF_DB_TOP 1 +#define OFF_DB_BOT 2 +#define OFF_DB_LEFT 3 +#define OFF_DB_RIGHT 5 +#define OFF_DB_1STCMD 7 + +#endif +/* + GEOS filesystem functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GFILE_H +#define _GFILE_H + +#include + +struct filehandle *Get1stDirEntry(void); +struct filehandle *GetNxtDirEntry(void); + +char __fastcall__ FindFTypes(char *buffer, char ftype, char fmaxnum, const char *classtxt); + +char __fastcall__ GetFile(char flag, const char *fname, + const char *loadaddr, const char *datadname, const char *datafname); +char __fastcall__ FindFile(const char *fname); +char __fastcall__ ReadFile(struct tr_se *myTrSe, char *buffer, unsigned flength); +char __fastcall__ SaveFile(char skip, struct fileheader *myHeader); +char __fastcall__ FreeFile(struct tr_se myTable[]); +char __fastcall__ DeleteFile(const char *fname); +char __fastcall__ RenameFile(const char *source, const char *target); + +char ReadByte(void); + +char __fastcall__ FollowChain(struct tr_se *startTrSe, char *buffer); +char __fastcall__ GetFHdrInfo(struct filehandle *myFile); + +char __fastcall__ OpenRecordFile(const char *fname); +char CloseRecordFile(void); +char NextRecord(void); +char PreviousRecord(void); +char __fastcall__ PointRecord(char); +char DeleteRecord(void); +char InsertRecord(void); +char AppendRecord(void); +char __fastcall__ ReadRecord(char *buffer, unsigned flength); +char __fastcall__ WriteRecord(const char *buffer, unsigned flength); +char UpdateRecordFile(void); + +/* GEOS filetypes */ +#define NOT_GEOS 0 +#define BASIC 1 +#define ASSEMBLY 2 +#define DATA 3 +#define SYSTEM 4 +#define DESK_ACC 5 +#define APPLICATION 6 +#define APPL_DATA 7 +#define FONT 8 +#define PRINTER 9 +#define INPUT_DEVICE 10 +#define DISK_DEVICE 11 +#define SYSTEM_BOOT 12 +#define TEMPORARY 13 +#define AUTO_EXEC 14 +#define INPUT_128 15 +#define NUMFILETYPES 16 +/* supported structures */ +#define SEQUENTIAL 0 +#define VLIR 1 +/* DOS filetypes */ +#define DEL 0 +#define SEQ 1 +#define PRG 2 +#define USR 3 +#define REL 4 +#define CBM 5 + +#endif +/* + GEOS graphic (non icon/menu/sprite) functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GGRAPH_H +#define _GGRAPH_H + +#include + +void __fastcall__ SetPattern(char newpattern); + +void __fastcall__ HorizontalLine(char pattern, char y, unsigned xstart, unsigned xend); +void __fastcall__ InvertLine(char y, unsigned xstart, unsigned xend); +void __fastcall__ RecoverLine(char y, unsigned xstart, unsigned xend); +void __fastcall__ VerticalLine(char pattern, char ystart, char yend, unsigned x); + +void __fastcall__ InitDrawWindow(struct window *myRectangle); +void Rectangle(void); +void __fastcall__ FrameRectangle(char pattern); +void InvertRectangle(void); +void ImprintRectangle(void); +void RecoverRectangle(void); + +void __fastcall__ DrawLine(char mode, struct window *topBotCoords); + +void __fastcall__ DrawPoint(char mode, struct pixel *myPixel); +char __fastcall__ TestPoint(struct pixel *myPixel); + +void __fastcall__ PutChar(char character, char y, unsigned x); +void __fastcall__ PutString(char *myString, char y, unsigned x); +void __fastcall__ PutDecimal(char style, unsigned value, char y, unsigned x); + +char __fastcall__ GetCharWidth(char character); +void __fastcall__ LoadCharSet(struct fontdesc *myFont); +void UseSystemFont(void); + +void __fastcall__ BitmapUp(struct iconpic *myIcon); +void __fastcall__ BitmapClip(char skipl, char skipr, unsigned skiptop, + struct iconpic *myIcon); +void __fastcall__ BitOtherClip(void *proc1, void *proc2, char skipl, + char skipr, unsigned skiptop, + struct iconpic *myIcon); + +void __fastcall__ GraphicsString(char *myGfxString); + +#ifdef __GEOS_CBM__ +void SetNewMode(void); +#endif + +/* VIC colour constants */ +#define BLACK 0 +#define WHITE 1 +#define RED 2 +#define CYAN 3 +#define PURPLE 4 +#define GREEN 5 +#define BLUE 6 +#define YELLOW 7 +#define ORANGE 8 +#define BROWN 9 +#define LTRED 10 +#define DKGREY 11 +#define GREY 12 +#define MEDGREY 12 +#define LTGREEN 13 +#define LTBLUE 14 +#define LTGREY 15 +/* VIC memory banks - lowest 2 bits of cia2base+0 */ +#define GRBANK0 3 +#define GRBANK1 2 +#define GRBANK2 1 +#define GRBANK3 0 +/* VIC screen sizes */ +#define VIC_X_POS_OFF 24 +#define VIC_Y_POS_OFF 50 +#ifdef __GEOS_CBM__ +#define SC_BYTE_WIDTH 40 +#define SC_PIX_HEIGHT 200 +#define SC_PIX_WIDTH 320 +#define SC_SIZE 8000 +#else +#define SC_BYTE_WIDTH 70 +#define SC_PIX_HEIGHT 192 +#define SC_PIX_WIDTH 560 +#define SC_SIZE 13440 +#endif +/* VDC screen constants */ +#define SCREENBYTEWIDTH 80 +#define SCREENPIXELWIDTH 640 +/* control characters for use as numbers, not characters */ +#define BACKSPACE 8 +#define FORWARDSPACE 9 +#define TAB 9 +#define LF 10 +#define HOME 11 +#define PAGE_BREAK 12 +#define UPLINE 12 +#define CR 13 +#define ULINEON 14 +#define ULINEOFF 15 +#define ESC_GRAPHICS 16 +#define ESC_RULER 17 +#define REV_ON 18 +#define REV_OFF 19 +#define GOTOX 20 +#define GOTOY 21 +#define GOTOXY 22 +#define NEWCARDSET 23 +#define BOLDON 24 +#define ITALICON 25 +#define OUTLINEON 26 +#define PLAINTEXT 27 +/* control characters for use in + strings: eg: str[10]=CBOLDON "Hello"; */ +#define CCR "\015" +#define CULINEON "\016" +#define CULINEOFF "\017" +#define CREV_ON "\022" +#define CREV_OFF "\023" +#define CBOLDON "\030" +#define CITALICON "\031" +#define COUTLINEON "\032" +#define CPLAINTEXT "\033" + +/*values of currentMode */ +/* bitNumbers */ +#define UNDERLINE_BIT 7 +#define BOLD_BIT 6 +#define REVERSE_BIT 5 +#define ITALIC_BIT 4 +#define OUTLINE_BIT 3 +#define SUPERSCRIPT_BIT 2 +#define SUBSCRIPT_BIT 1 +/* bitMasks */ +#define SET_UNDERLINE 0x80 +#define SET_BOLD 0x40 +#define SET_REVERSE 0x20 +#define SET_ITALIC 0x10 +#define SET_OUTLINE 0x08 +#define SET_SUPERSCRIPT 0x04 +#define SET_SUBSCRIPT 0x02 +#define SET_PLAINTEXT 0 +/* values of dispBufferOn */ +#define ST_WRGS_FORE 0x20 +#define ST_WR_BACK 0x40 +#define ST_WR_FORE 0x80 +/* PutDecimal parameters */ +/* leading zeros? */ +#define SET_NOSURPRESS 0 +#define SET_SURPRESS 0x40 +/* justification */ +#define SET_RIGHTJUST 0 +#define SET_LEFTJUST 0x80 +/* C128 x-extension flags */ +#define ADD1_W 0x2000 +#define DOUBLE_B 0x80 +#define DOUBLE_W 0x8000 +/* DrawLine/DrawPoint mode values */ +#define DRAW_ERASE 0x00 +#define DRAW_DRAW 0x40 +#define DRAW_COPY 0x80 + +typedef void graphicStr; + +#define MOVEPENTO(x,y) (char)1, (unsigned)(x), (char)(y) +#define LINETO(x,y) (char)2, (unsigned)(x), (char)(y) +#define RECTANGLETO(x,y) (char)3, (unsigned)(x), (char)(y) +#define NEWPATTERN(p) (char)5, (char)(p) +#define FRAME_RECTO(x,y) (char)7, (unsigned)(x), (char)(y) +#define PEN_X_DELTA(x) (char)8, (unsigned)(x) +#define PEN_Y_DELTA(y) (char)9, (char)(y) +#define PEN_XY_DELTA(x,y) (char)10, (unsigned)(x), (char)(y) +#define GSTR_END (char)NULL +/* ESC_PUTSTRING can't be implemented - it needs text, not pointer to it + #define ESC_PUTSTRING(x,y,text) (char)6, (unsigned)(x), (char)(y), (text), (char)NULL +*/ + +#endif +/* + GEOS processes (~multitasking) functions + + by Maciej 'YTM/Elysium' Witkowiak +*/ + +#ifndef _GPROCESS_H +#define _GPROCESS_H + +#include + +void __fastcall__ InitProcesses(char number, struct process *proctab); +void __fastcall__ RestartProcess(char number); +void __fastcall__ EnableProcess(char number); +void __fastcall__ BlockProcess(char number); +void __fastcall__ UnblockProcess(char number); +void __fastcall__ FreezeProcess(char number); +void __fastcall__ UnfreezeProcess(char number); + +void __fastcall__ Sleep(unsigned jiffies); + +#endif +/*****************************************************************************/ +/* */ +/* tgi-error.h */ +/* */ +/* TGI error codes */ +/* */ +/* */ +/* */ +/* (C) 2002-2012, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _TGI_ERROR_H +#define _TGI_ERROR_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +#define TGI_ERR_OK 0 /* No error */ +#define TGI_ERR_NO_DRIVER 1 /* No driver available */ +#define TGI_ERR_CANNOT_LOAD 2 /* Error loading driver or font */ +#define TGI_ERR_INV_DRIVER 3 /* Invalid driver */ +#define TGI_ERR_INV_MODE 4 /* Mode not supported by driver */ +#define TGI_ERR_INV_ARG 5 /* Invalid function argument */ +#define TGI_ERR_INV_FUNC 6 /* Function not supported */ +#define TGI_ERR_INV_FONT 7 /* Font file is invalid */ +#define TGI_ERR_NO_RES 8 /* Out of resources */ +#define TGI_ERR_INSTALLED 9 /* A driver is already installed */ + + + +/* End of tgi-error.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* tgi-kernel.h */ +/* */ +/* TGI kernel interface */ +/* */ +/* */ +/* */ +/* (C) 2002-2012, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _TGI_KERNEL_H +#define _TGI_KERNEL_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* TGI kernel variables */ +extern void* tgi_drv; /* Pointer to driver */ +extern unsigned char tgi_error; /* Last error code */ +extern unsigned char tgi_gmode; /* Flag: Graphics mode active */ +extern int tgi_curx; /* Current drawing cursor X */ +extern int tgi_cury; /* Current drawing cursor Y */ +extern unsigned char tgi_color; /* Current drawing color */ +extern unsigned char tgi_font; /* Current font type */ +extern unsigned tgi_xres; /* X resolution of the current mode */ +extern unsigned tgi_yres; /* Y resolution of the current mode */ +extern unsigned char tgi_colorcount; /* Number of available colors */ +extern unsigned char tgi_pagecount; /* Number of available screens */ +extern unsigned char tgi_fontwidth; /* System font width in pixels */ +extern unsigned char tgi_fontheight; /* System font height in pixels */ +extern unsigned tgi_aspectratio; /* Aspect ratio as fixed point 8.8 */ +extern unsigned char tgi_flags; /* TGI driver flags */ +extern unsigned tgi_textscalew[2]; /* Vector/bitmap font scale 8.8 */ +extern unsigned tgi_textscaleh[2]; /* Vector/bitmap font scale 8.8 */ +extern unsigned tgi_charwidth; /* Width of scaled bitmap font */ +extern unsigned tgi_charheight; /* Height of scaled bitmap font */ + + + +/* End of tgi-kernel.h */ +#endif + + + + +/*****************************************************************************/ +/* */ +/* tgi-vectorfont.h */ +/* */ +/* TGI vector font definitions */ +/* */ +/* */ +/* */ +/* (C) 2009, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _TGI_VECTORFONT_H +#define _TGI_VECTORFONT_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +#define TGI_VF_FIRSTCHAR 0x20 /* First char in file */ +#define TGI_VF_LASTCHAR 0x7E /* Last char in file */ +#define TGI_VF_CCOUNT (TGI_VF_LASTCHAR - TGI_VF_FIRSTCHAR + 1) + +#define TGI_VF_VERSION 0x00 /* File version number */ + +/* TCH file header */ +typedef struct tgi_vectorfont_header tgi_vectorfont_header; +struct tgi_vectorfont_header { + unsigned char magic[3]; /* "TCH" */ + unsigned char version; /* Version number */ + unsigned size; /* Font data size */ +}; + +/* Font data loaded directly from file */ +struct tgi_vectorfont { + unsigned char top; /* Height of char */ + unsigned char baseline; /* Character baseline */ + unsigned char bottom; /* Descender */ + unsigned char widths[TGI_VF_CCOUNT]; /* Char widths */ + unsigned char* chars[TGI_VF_CCOUNT]; /* Pointer to character defs */ + unsigned char vec_ops[1]; /* Actually dynamic */ +}; + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +void __fastcall__ tgi_vectorchar (char C); +/* Draw one character of the vector font at the current graphics cursor +** position using the current font magnification. +*/ + + + +/* End of tgi-vectorfont.h */ +#endif + + + +/*****************************************************************************/ +/* */ +/* mouse-kernel.h */ +/* */ +/* Internally used mouse functions */ +/* */ +/* */ +/* */ +/* (C) 2003-2006, Ullrich von Bassewitz */ +/* 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 + + + +/*****************************************************************************/ +/* */ +/* joy-kernel.h */ +/* */ +/* Internally used joystick functions */ +/* */ +/* */ +/* */ +/* (C) 2002-2006, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef _JOY_KERNEL_H +#define _JOY_KERNEL_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* A structure that describes the header of a joystick driver loaded into +** memory. +*/ +typedef struct { + + /* Driver header */ + char id[3]; /* Contains 0x6a, 0x6f, 0x79 ("joy") */ + unsigned char version; /* Interface version */ + void* libreference; /* Library reference */ + + /* Jump vectors. Note that these are not C callable */ + void* install; /* INSTALL routine */ + void* uninstall; /* UNINSTALL routine */ + void* count; /* COUNT routine */ + void* read; /* READ routine */ + +} joy_drv_header; + + + +/* JOY kernel variables */ +extern joy_drv_header* joy_drv; /* Pointer to driver */ + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +void joy_clear_ptr (void); +/* Clear the joy_drv pointer */ + + + +/* End of joy-kernel.h */ +#endif +/*****************************************************************************/ +/* */ +/* types.h */ +/* */ +/* Primitive system data types for cc65 */ +/* */ +/* */ +/* */ +/* (C) 2003 Ullrich von Bassewitz */ +/* 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 + + + /*****************************************************************************/ /* */ /* utsname.h */ @@ -13079,9 +15694,9 @@ int __fastcall__ uname (struct utsname* buf); /*****************************************************************************/ /* */ -/* types.h */ +/* stat.h */ /* */ -/* Primitive system data types for cc65 */ +/* Constants for the mode argument of open and creat */ /* */ /* */ /* */ @@ -13112,8 +15727,8 @@ int __fastcall__ uname (struct utsname* buf); -#ifndef _TYPES_H -#define _TYPES_H +#ifndef _STAT_H +#define _STAT_H @@ -13123,11 +15738,8 @@ int __fastcall__ uname (struct utsname* buf); -/* off_t is also defined in unistd.h */ -#ifndef _HAVE_off_t -#define _HAVE_off_t -typedef long int off_t; -#endif +#define S_IREAD 0x01 +#define S_IWRITE 0x02 @@ -13137,107 +15749,1360 @@ typedef long int off_t; -/* End of types.h */ +/* End of stat.h */ #endif +;**************************************************************************** +;* * +;* ser-error.inc * +;* * +;* Serial communication API * +;* * +;* * +;* * +;* (C) 2003-2012, Ullrich von Bassewitz * +;* Roemerstrasse 52 * +;* D-70794 Filderstadt * +;* EMail: uz@cc65.org * +;* * +;* * +;*This software is provided 'as-is', without any expressed or implied * +;*warranty. In no event will the authors be held liable for any damages * +;*arising from the use of this software. * +;* * +;*Permission is granted to anyone to use this software for any purpose, * +;*including commercial applications, and to alter it and redistribute it * +;*freely, subject to the following restrictions: * +;* * +;*1. The origin of this software must not be misrepresented; you must not * +;* claim that you wrote the original software. If you use this software * +;* in a product, an acknowledgment in the product documentation would be * +;* appreciated but is not required. * +;*2. Altered source versions must be plainly marked as such, and must not * +;* be misrepresented as being the original software. * +;*3. This notice may not be removed or altered from any source * +;* distribution. * +;* * +;**************************************************************************** -/*****************************************************************************/ -/* */ -/* joy-kernel.h */ -/* */ -/* Internally used joystick functions */ -/* */ -/* */ -/* */ -/* (C) 2002-2006, Ullrich von Bassewitz */ -/* Roemerstrasse 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ -/* */ -/* */ -/* This software is provided 'as-is', without any expressed or implied */ -/* warranty. In no event will the authors be held liable for any damages */ -/* arising from the use of this software. */ -/* */ -/* Permission is granted to anyone to use this software for any purpose, */ -/* including commercial applications, and to alter it and redistribute it */ -/* freely, subject to the following restrictions: */ -/* */ -/* 1. The origin of this software must not be misrepresented; you must not */ -/* claim that you wrote the original software. If you use this software */ -/* in a product, an acknowledgment in the product documentation would be */ -/* appreciated but is not required. */ -/* 2. Altered source versions must be plainly marked as such, and must not */ -/* be misrepresented as being the original software. */ -/* 3. This notice may not be removed or altered from any source */ -/* distribution. */ -/* */ -/*****************************************************************************/ +;------------------------------------------------------------------------------ +; Error codes + +.enum + SER_ERR_OK ; Not an error - relax + SER_ERR_NO_DRIVER ; No driver available + SER_ERR_CANNOT_LOAD ; Error loading driver + SER_ERR_INV_DRIVER ; Invalid driver + SER_ERR_NO_DEVICE ; Device (hardware) not found + SER_ERR_BAUD_UNAVAIL ; Baud rate not available + SER_ERR_NO_DATA ; Nothing to read + SER_ERR_OVERFLOW ; No room in send buffer + SER_ERR_INIT_FAILED ; Initialization failed + SER_ERR_INV_IOCTL ; IOCTL not supported + SER_ERR_INSTALLED ; A driver is already installed + SER_ERR_NOT_OPEN ; Driver not open + + SER_ERR_COUNT ; Special: Number of error codes +.endenum + +; +; C128 generic definitions. Stolen from Elite128 +; + + +; --------------------------------------------------------------------------- +; Zero page, Commodore stuff + +TXTPTR := $3D ; Pointer into BASIC source code +TIME := $A0 ; 60HZ clock +FNAM_LEN := $B7 ; Length of filename +SECADR := $B9 ; Secondary address +DEVNUM := $BA ; Device number +FNAM := $BB ; Address of filename +FNAM_BANK := $C7 ; Bank for filename +KEY_COUNT := $D0 ; Number of keys in input buffer +FKEY_COUNT := $D1 ; Characters for function key +MODE := $D7 ; 40-/80-column mode (bit 7: 80 columns) +GRAPHM := $D8 ; Graphics mode flags (bits 5-7) +CHARDIS := $D9 ; Bit 2 shadow for location $01 +CURS_X := $EC ; Cursor column +CURS_Y := $EB ; Cursor row +SCREEN_PTR := $E0 ; Pointer to current char in text screen +CRAM_PTR := $E2 ; Pointer to current char in color RAM + +CHARCOLOR := $F1 +RVS := $F3 ; Reverse output flag +SCROLL := $F8 ; Disable scrolling flag + +BASIC_BUF := $0200 ; Location of command-line +BASIC_BUF_LEN = 162 ; Maximum length of command-line + +FETCH := $02A2 ; Fetch subroutine in RAM +FETVEC := $02AA ; Vector patch location for FETCH +STASH := $02AF ; Stash routine in RAM +STAVEC := $02B9 ; Vector patch location for STASH +IRQInd := $02FD ; JMP $0000 -- used as indirect IRQ vector +PALFLAG := $0A03 ; $FF=PAL, $00=NTSC +INIT_STATUS := $0A04 ; Flags: Reset/Restore initiation status +VM2 := $0A2D ; VIC-IIe shadow for $D018 -- graphics mode +FKEY_LEN := $1000 ; Function key lengths +FKEY_TEXT := $100A ; Function key texts + +KBDREPEAT := $028a +KBDREPEATRATE := $028b +KBDREPEATDELAY := $028c + +; --------------------------------------------------------------------------- +; Vectors + +IRQVec := $0314 +BRKVec := $0316 +NMIVec := $0318 +KeyStoreVec := $033C + +; --------------------------------------------------------------------------- +; I/O: VIC + +VIC := $D000 +VIC_SPR0_X := $D000 +VIC_SPR0_Y := $D001 +VIC_SPR1_X := $D002 +VIC_SPR1_Y := $D003 +VIC_SPR2_X := $D004 +VIC_SPR2_Y := $D005 +VIC_SPR3_X := $D006 +VIC_SPR3_Y := $D007 +VIC_SPR4_X := $D008 +VIC_SPR4_Y := $D009 +VIC_SPR5_X := $D00A +VIC_SPR5_Y := $D00B +VIC_SPR6_X := $D00C +VIC_SPR6_Y := $D00D +VIC_SPR7_X := $D00E +VIC_SPR7_Y := $D00F +VIC_SPR_HI_X := $D010 +VIC_SPR_ENA := $D015 +VIC_SPR_EXP_Y := $D017 +VIC_SPR_EXP_X := $D01D +VIC_SPR_MCOLOR := $D01C +VIC_SPR_BG_PRIO := $D01B + +VIC_SPR_MCOLOR0 := $D025 +VIC_SPR_MCOLOR1 := $D026 + +VIC_SPR0_COLOR := $D027 +VIC_SPR1_COLOR := $D028 +VIC_SPR2_COLOR := $D029 +VIC_SPR3_COLOR := $D02A +VIC_SPR4_COLOR := $D02B +VIC_SPR5_COLOR := $D02C +VIC_SPR6_COLOR := $D02D +VIC_SPR7_COLOR := $D02E + +VIC_CTRL1 := $D011 +VIC_CTRL2 := $D016 + +VIC_HLINE := $D012 + +VIC_LPEN_X := $D013 +VIC_LPEN_Y := $D014 + +VIC_VIDEO_ADR := $D018 + +VIC_IRR := $D019 ; Interrupt request register +VIC_IMR := $D01A ; Interrupt mask register + +VIC_BORDERCOLOR := $D020 +VIC_BG_COLOR0 := $D021 +VIC_BG_COLOR1 := $D022 +VIC_BG_COLOR2 := $D023 +VIC_BG_COLOR3 := $D024 + +; 128 stuff: +VIC_KBD_128 := $D02F ; Extended kbd bits (visible in 64 mode) +VIC_CLK_128 := $D030 ; Clock rate register (visible in 64 mode) + + +; --------------------------------------------------------------------------- +; I/O: SID + +SID := $D400 +SID_S1Lo := $D400 +SID_S1Hi := $D401 +SID_PB1Lo := $D402 +SID_PB1Hi := $D403 +SID_Ctl1 := $D404 +SID_AD1 := $D405 +SID_SUR1 := $D406 + +SID_S2Lo := $D407 +SID_S2Hi := $D408 +SID_PB2Lo := $D409 +SID_PB2Hi := $D40A +SID_Ctl2 := $D40B +SID_AD2 := $D40C +SID_SUR2 := $D40D + +SID_S3Lo := $D40E +SID_S3Hi := $D40F +SID_PB3Lo := $D410 +SID_PB3Hi := $D411 +SID_Ctl3 := $D412 +SID_AD3 := $D413 +SID_SUR3 := $D414 + +SID_FltLo := $D415 +SID_FltHi := $D416 +SID_FltCtl := $D417 +SID_Amp := $D418 +SID_ADConv1 := $D419 +SID_ADConv2 := $D41A +SID_Noise := $D41B +SID_Read3 := $D41C + +; --------------------------------------------------------------------------- +; I/O: VDC (128 only) + +VDC_INDEX := $D600 ; register address port +VDC_DATA := $D601 ; data port + +; Registers +VDC_DATA_HI = 18 ; video RAM address (big endian) +VDC_DATA_LO = 19 +VDC_CSET = 28 +VDC_RAM_RW = 31 ; RAM port + +; --------------------------------------------------------------------------- +; I/O: Complex Interface Adapters + +CIA1 := $DC00 +CIA1_PRA := $DC00 ; Port A +CIA1_PRB := $DC01 ; Port B +CIA1_DDRA := $DC02 ; Data direction register for port A +CIA1_DDRB := $DC03 ; Data direction register for port B +CIA1_TA := $DC04 ; 16-bit timer A +CIA1_TB := $DC06 ; 16-bit timer B +CIA1_TOD10 := $DC08 ; Time-of-day tenths of a second +CIA1_TODSEC := $DC09 ; Time-of-day seconds +CIA1_TODMIN := $DC0A ; Time-of-day minutes +CIA1_TODHR := $DC0B ; Time-of-day hours +CIA1_SDR := $DC0C ; Serial data register +CIA1_ICR := $DC0D ; Interrupt control register +CIA1_CRA := $DC0E ; Control register for timer A +CIA1_CRB := $DC0F ; Control register for timer B + +CIA2 := $DD00 +CIA2_PRA := $DD00 +CIA2_PRB := $DD01 +CIA2_DDRA := $DD02 +CIA2_DDRB := $DD03 +CIA2_TA := $DD04 +CIA2_TB := $DD06 +CIA2_TOD10 := $DD08 +CIA2_TODSEC := $DD09 +CIA2_TODMIN := $DD0A +CIA2_TODHR := $DD0B +CIA2_SDR := $DD0C +CIA2_ICR := $DD0D +CIA2_CRA := $DD0E +CIA2_CRB := $DD0F + +; --------------------------------------------------------------------------- +; I/O: MMU + +MMU_CR := $FF00 +MMU_CFG_CC65 := %00001110 ; Bank 0 with kernal ROM +MMU_CFG_RAM0 := %00111111 ; Bank 0 full RAM +MMU_CFG_RAM1 := %01111111 ; Bank 1 full RAM +MMU_CFG_RAM2 := %10111111 ; Bank 2 full RAM +MMU_CFG_RAM3 := %11111111 ; Bank 3 full RAM +MMU_CFG_IFROM := %01010111 ; Bank 1 with Internal Function RAM/ROM +MMU_CFG_EFROM := %01101011 ; Bank 1 with External Function RAM/ROM + +; --------------------------------------------------------------------------- +; Super CPU + +SCPU_VIC_Bank1 := $D075 +SCPU_Slow := $D07A +SCPU_Fast := $D07B +SCPU_EnableRegs := $D07E +SCPU_DisableRegs:= $D07F +SCPU_Detect := $D0BC +; Atari 2600 TIA read / write registers +; +; Source: DASM - vcs.h +; Details available in: Stella Programmer's Guide by Steve Wright +; +; Florent Flament (contact@florentflament.com), 2017 + +; Read registers +VSYNC := $00 +VBLANK := $01 +WSYNC := $02 +RSYNC := $03 +NUSIZ0 := $04 +NUSIZ1 := $05 +COLUP0 := $06 +COLUP1 := $07 +COLUPF := $08 +COLUBK := $09 +CTRLPF := $0A +REFP0 := $0B +REFP1 := $0C +PF0 := $0D +PF1 := $0E +PF2 := $0F +RESP0 := $10 +RESP1 := $11 +RESM0 := $12 +RESM1 := $13 +RESBL := $14 +AUDC0 := $15 +AUDC1 := $16 +AUDF0 := $17 +AUDF1 := $18 +AUDV0 := $19 +AUDV1 := $1A +GRP0 := $1B +GRP1 := $1C +ENAM0 := $1D +ENAM1 := $1E +ENABL := $1F +HMP0 := $20 +HMP1 := $21 +HMM0 := $22 +HMM1 := $23 +HMBL := $24 +VDELP0 := $25 +VDELP1 := $26 +VDELBL := $27 +RESMP0 := $28 +RESMP1 := $29 +HMOVE := $2A +HMCLR := $2B +CXCLR := $2C + +; Write registers +CXM0P := $00 +CXM1P := $01 +CXP0FB := $02 +CXP1FB := $03 +CXM0FB := $04 +CXM1FB := $05 +CXBLPF := $06 +CXPPMM := $07 +INPT0 := $08 +INPT1 := $09 +INPT2 := $0A +INPT3 := $0B +INPT4 := $0C +INPT5 := $0D +; +; _heap.inc +; +; (c) Copyright 2003, Ullrich von Bassewitz (uz@cc65.org) +; + +; Assembler include file that makes the constants and structures in _heap.h +; available for asm code. + +; Struct freeblock +; NOTE: For performance reasons, the asm code often uses increment/decrement +; operators to access other offsets, so just changing offsets here will +; probably not work. +.struct freeblock + size .word + next .addr + prev .addr +.endstruct + +; Struct usedblock +; See notes above +.struct usedblock + size .word + start .addr +.endstruct + +HEAP_MIN_BLOCKSIZE = .sizeof (freeblock) ; Minimum size of an allocated block +HEAP_ADMIN_SPACE = .sizeof (usedblock) ; Additional space for used bock + +; Variables +.global __heaporg +.global __heapptr +.global __heapend +.global __heapfirst +.global __heaplast +; +; PET generic definitions. +; + + +; --------------------------------------------------------------------------- +; Zero page, Commodore stuff + +VARTAB := $2A ; Pointer to start of BASIC variables +MEMSIZE := $34 ; Size of memory installed +TXTPTR := $77 ; Pointer into BASIC source code +TIME := $8D ; 60HZ clock +KEY_COUNT := $9E ; Number of keys in input buffer +RVS := $9F ; Reverse flag +CURS_FLAG := $A7 ; 1 = cursor off +CURS_BLINK := $A8 ; Blink counter +CURS_CHAR := $A9 ; Character under the cursor +CURS_STATE := $AA ; Cursor blink state +SCREEN_PTR := $C4 ; Pointer to current char in text screen +CURS_X := $C6 ; Cursor column +FNLEN := $D1 ; Length of filename +LFN := $D2 ; Current Logical File Number +SECADR := $D3 ; Secondary address +DEVNUM := $D4 ; Device number +SCR_LINELEN := $D5 ; Screen line length +CURS_Y := $D8 ; Cursor row +FNADR := $DA ; Pointer to file name + +; 80-Column CBMs +KBDREPEAT80 := $E4 +KBDRPTRATE80 := $E5 +KBDRPTDELAY80 := $E6 + +BASIC_BUF := $200 ; Location of command-line +BASIC_BUF_LEN = 81 ; Maximum length of command-line + +KEY_BUF := $26F ; Keyboard buffer + +; 40-Column PETs/CBMs +KBDRPTDELAY40 := $3E9 +KBDRPTRATE40 := $3EA +KBDREPEAT40 := $3EE +KBDREPEAT40B := $3F8 + +;---------------------------------------------------------------------------- +; PET ROM type detection + +PET_DETECT := $FFFB +PET_2000 = $CA +PET_3000 = $FC +PET_4000 = $FD + + +;---------------------------------------------------------------------------- +; Vector and other locations + +IRQVec := $0090 +BRKVec := $0092 +NMIVec := $0094 + +; --------------------------------------------------------------------------- +; I/O: 6522 VIA2 + +VIA := $E840 ; VIA base address +VIA_PB := VIA+$0 ; Port register B +VIA_PA1 := VIA+$1 ; Port register A +VIA_PRB := VIA+$0 ; *** Deprecated *** +VIA_PRA := VIA+$1 ; *** Deprecated *** +VIA_DDRB := VIA+$2 ; Data direction register B +VIA_DDRA := VIA+$3 ; Data direction register A +VIA_T1CL := VIA+$4 ; Timer 1, low byte +VIA_T1CH := VIA+$5 ; Timer 1, high byte +VIA_T1LL := VIA+$6 ; Timer 1 latch, low byte +VIA_T1LH := VIA+$7 ; Timer 1 latch, high byte +VIA_T2CL := VIA+$8 ; Timer 2, low byte +VIA_T2CH := VIA+$9 ; Timer 2, high byte +VIA_SR := VIA+$A ; Shift register +VIA_CR := VIA+$B ; Auxiliary control register +VIA_PCR := VIA+$C ; Peripheral control register +VIA_IFR := VIA+$D ; Interrupt flag register +VIA_IER := VIA+$E ; Interrupt enable register +VIA_PA2 := VIA+$F ; Port register A w/o handshake +; opcodes.inc +; ca65 6502 - opcode definitions, mainly for self modifying code +; +; Christian Krger, latest change: 18-Sep-2010 +; +; This software is provided 'as-is', without any expressed or implied +; warranty. In no event will the authors be held liable for any damages +; arising from the use of this software. +; +; Permission is granted to anyone to use this software for any purpose, +; including commercial applications, and to alter it and redistribute it +; freely, subject to the following restrictions: +; +; 1. The origin of this software must not be misrepresented; you must not +; claim that you wrote the original software. If you use this software +; in a product, an acknowledgment in the product documentation would be +; appreciated but is not required. +; 2. Altered source versions must be plainly marked as such, and must not +; be misrepresented as being the original software. +; 3. This notice may not be removed or altered from any source +; distribution. +; + +; Opcode-Table +; ------------ +; Post fix explanation: +; imm = #$00 +; zp = $00 +; zpx = $00,X +; zpy = $00,Y +; izp = ($00) +; izx = ($00,X) +; izy = ($00),Y +; abs = $0000 +; abx = $0000,X +; aby = $0000,Y +; ind = ($0000) +; iax = ($0000,X) +; rel = $0000 (PC-relative) (supressed here) + +.macpack cpu + +OPC_BRK = $00 +OPC_ORA_izx = $01 +OPC_ORA_zp = $05 +OPC_ASL_zp = $06 +OPC_PHP = $08 +OPC_ORA_imm = $09 +OPC_ASL = $0A +OPC_ORA_abs = $0D +OPC_ASL_abs = $0E + +OPC_BPL = $10 +OPC_ORA_izy = $11 +OPC_ORA_zpx = $15 +OPC_ASL_zpx = $16 +OPC_CLC = $18 +OPC_ORA_aby = $19 +OPC_ORA_abx = $1D +OPC_ASL_abx = $1E + +OPC_JSR_abs = $20 +OPC_AND_izx = $21 +OPC_BIT_zp = $24 +OPC_AND_zp = $25 +OPC_ROL_zp = $26 +OPC_PLP = $28 +OPC_AND_imm = $29 +OPC_ROL = $2A +OPC_BIT_abs = $2C +OPC_AND_abs = $2D +OPC_ROL_abs = $2E + +OPC_BMI = $30 +OPC_AND_izy = $31 +OPC_AND_zpx = $35 +OPC_ROL_zpx = $36 +OPC_SEC = $38 +OPC_AND_aby = $39 +OPC_AND_abx = $3D +OPC_ROL_abx = $3E + + +OPC_RTI = $40 +OPC_EOR_izx = $41 +OPC_EOR_zp = $45 +OPC_LSR_zp = $46 +OPC_PHA = $48 +OPC_EOR_imm = $49 +OPC_LSR = $4A +OPC_JMP_abs = $4C +OPC_EOR_abs = $4D +OPC_LSR_abs = $4E + +OPC_BVC = $50 +OPC_EOR_izy = $51 +OPC_EOR_zpx = $55 +OPC_LSR_zpx = $56 +OPC_CLI = $58 +OPC_EOR_aby = $59 +OPC_EOR_abx = $5D +OPC_LSR_abx = $5E + +OPC_RTS = $60 +OPC_ADC_izx = $61 +OPC_ADC_zp = $65 +OPC_ROR_zp = $66 +OPC_PLA = $68 +OPC_ADC_imm = $69 +OPC_ROR = $6A +OPC_JMP_ind = $6C +OPC_ADC_abs = $6D +OPC_ROR_abs = $6E + +OPC_BVS = $70 +OPC_ADC_izy = $71 +OPC_ADC_zpx = $75 +OPC_ROR_zpx = $76 +OPC_SEI = $78 +OPC_ADC_aby = $79 +OPC_ADC_abx = $7D +OPC_ROR_abx = $7E + +OPC_STA_izx = $81 +OPC_STY_zp = $84 +OPC_STA_zp = $85 +OPC_STX_zp = $86 +OPC_DEY = $88 +OPC_TXA = $8A +OPC_STY_abs = $8C +OPC_STA_abs = $8D +OPC_STX_abs = $8E + +OPC_BCC = $90 +OPC_STA_izy = $91 +OPC_STY_zpx = $94 +OPC_STA_zpx = $95 +OPC_STX_zpy = $96 +OPC_TYA = $98 +OPC_STA_aby = $99 +OPC_TXS = $9A +OPC_STA_abx = $9D + +OPC_LDY_imm = $A0 +OPC_LDA_izx = $A1 +OPC_LDX_imm = $A2 +OPC_LDY_zp = $A4 +OPC_LDA_zp = $A5 +OPC_LDX_zp = $A6 +OPC_TAY = $A8 +OPC_LDA_imm = $A9 +OPC_TAX = $AA +OPC_LDY_abs = $AC +OPC_LDA_abs = $AD +OPC_LDX_abs = $AE + +OPC_BCS = $B0 +OPC_LDA_izy = $B1 +OPC_LDY_zpx = $B4 +OPC_LDA_zpx = $B5 +OPC_LDX_zpy = $B6 +OPC_CLV = $B8 +OPC_LDA_aby = $B9 +OPC_TSX = $BA +OPC_LDY_abx = $BC +OPC_LDA_abx = $BD +OPC_LDX_aby = $BE + +OPC_CPY_imm = $C0 +OPC_CMP_izx = $C1 +OPC_CPY_zp = $C4 +OPC_CMP_zp = $C5 +OPC_DEC_zp = $C6 +OPC_INY = $C8 +OPC_CMP_imm = $C9 +OPC_DEX = $CA +OPC_CPY_abs = $CC +OPC_CMP_abs = $CD +OPC_DEC_abs = $CE + +OPC_BNE = $D0 +OPC_CMP_izy = $D1 +OPC_CMP_zpx = $D5 +OPC_DEC_zpx = $D6 +OPC_CLD = $D8 +OPC_CMP_aby = $D9 +OPC_CMP_abx = $DD +OPC_DEC_abx = $DE + +OPC_CPX_imm = $E0 +OPC_SBC_izx = $E1 +OPC_CPX_zp = $E4 +OPC_SBC_zp = $E5 +OPC_INC_zp = $E6 +OPC_INX = $E8 +OPC_SBC_imm = $E9 +OPC_NOP = $EA +OPC_CPX_abs = $EC +OPC_SBC_abs = $ED +OPC_INC_abs = $EE + + +OPC_BEQ = $F0 +OPC_SBC_izy = $F1 +OPC_SBC_zpx = $F5 +OPC_INC_zpx = $F6 +OPC_SED = $F8 +OPC_SBC_aby = $F9 +OPC_SBC_abx = $FD +OPC_INC_abx = $FE + + +.if (.cpu .bitand ::CPU_ISET_65SC02) + +; OPC_NOP = $02 ; doublet +; OPC_NOP = $03 ; doublet +OPC_TSB_zp = $04 +; OPC_NOP = $0B ; doublet +OPC_TSB_abs = $0C + +OPC_ORA_izp = $12 +; OPC_NOP = $13 ; doublet +OPC_TRB_zp = $14 +OPC_INC = $1A +; OPC_NOP = $1B ; doublet +OPC_TRB_abs = $1C + +; OPC_NOP = $22 ; doublet +; OPC_NOP = $23 ; doublet +; OPC_NOP = $2B ; doublet + +OPC_AND_izp = $32 +; OPC_NOP = $33 ; doublet +OPC_BIT_zpx = $34 +OPC_DEC = $3A +; OPC_NOP = $3B ; doublet +OPC_BIT_abx = $3C + +; OPC_NOP = $42 ; doublet +; OPC_NOP = $43 ; doublet +; OPC_NOP = $44 ; doublet +; OPC_NOP = $4B ; doublet + +OPC_EOR_izp = $52 +; OPC_NOP = $53 ; doublet +; OPC_NOP = $54 ; doublet +; OPC_NOP = $5A ; doublet +; OPC_NOP = $5B ; doublet + +; OPC_NOP = $62 ; doublet +; OPC_NOP = $63 ; doublet +OPC_STZ_zp = $64 +; OPC_NOP = $6B ; doublet + +OPC_ADC_izp = $72 +; OPC_NOP = $73 ; doublet +OPC_STZ_zpx = $74 +OPC_PLY = $7A +; OPC_NOP = $7B ; doublet +OPC_JMP_iax = $7C + +OPC_BRA = $80 +; OPC_NOP = $82 ; doublet +; OPC_NOP = $83 ; doublet +OPC_BIT_imm = $89 +; OPC_NOP = $8B ; doublet + +OPC_STA_izp = $92 +; OPC_NOP = $93 ; doublet +; OPC_NOP = $9B ; doublet +OPC_STZ_abs = $9C +OPC_STZ_abx = $9E + +; OPC_NOP = $A3 ; doublet +; OPC_NOP = $AB ; doublet + +OPC_LDA_izp = $B2 +; OPC_NOP = $B3 ; doublet +; OPC_NOP = $BB ; doublet + +; OPC_NOP = $C2 ; doublet +; OPC_NOP = $C3 ; doublet +; OPC_NOP = $CB ; doublet + +OPC_CMP_izp = $D2 +; OPC_NOP = $D3 ; doublet +; OPC_NOP = $D4 ; doublet +OPC_PHX = $DA +; OPC_NOP = $DB ; doublet +; OPC_NOP = $DC ; doublet + +; OPC_NOP = $E2 ; doublet +; OPC_NOP = $E3 ; doublet +; OPC_NOP = $EB ; doublet + +OPC_SBC_izp = $F2 +; OPC_NOP = $F3 ; doublet +; OPC_NOP = $F4 ; doublet +OPC_PLX = $FA +; OPC_NOP = $FB ; doublet +; OPC_NOP = $FC ; doublet + + +.if (.cpu .bitand ::CPU_ISET_65C02) + +; bit instructions for 65C02 + +OPC_RMB0 = $07 +OPC_RMB1 = $17 +OPC_RMB2 = $27 +OPC_RMB3 = $37 +OPC_RMB4 = $47 +OPC_RMB5 = $57 +OPC_RMB6 = $67 +OPC_RMB7 = $77 + +OPC_SMB0 = $87 +OPC_SMB1 = $97 +OPC_SMB2 = $A7 +OPC_SMB3 = $B7 +OPC_SMB4 = $C7 +OPC_SMB5 = $D7 +OPC_SMB6 = $E7 +OPC_SMB7 = $F7 + +OPC_BBR0 = $0F +OPC_BBR1 = $1F +OPC_BBR2 = $2F +OPC_BBR3 = $3F +OPC_BBR4 = $4F +OPC_BBR5 = $5F +OPC_BBR6 = $6F +OPC_BBR7 = $7F + +OPC_BBS0 = $8F +OPC_BBS1 = $9F +OPC_BBS2 = $AF +OPC_BBS3 = $BF +OPC_BBS4 = $CF +OPC_BBS5 = $DF +OPC_BBS6 = $EF +OPC_BBS7 = $FF + +.else + +; no bit instructions for 65SC02 + +; OPC_NOP = $07 ; doublet +; OPC_NOP = $17 ; doublet +; OPC_NOP = $27 ; doublet +; OPC_NOP = $37 ; doublet +; OPC_NOP = $47 ; doublet +; OPC_NOP = $57 ; doublet +; OPC_NOP = $67 ; doublet +; OPC_NOP = $77 ; doublet +; OPC_NOP = $87 ; doublet +; OPC_NOP = $97 ; doublet +; OPC_NOP = $A7 ; doublet +; OPC_NOP = $B7 ; doublet +; OPC_NOP = $C7 ; doublet +; OPC_NOP = $D7 ; doublet +; OPC_NOP = $E7 ; doublet +; OPC_NOP = $F7 ; doublet +; OPC_NOP = $0F ; doublet +; OPC_NOP = $1F ; doublet +; OPC_NOP = $2F ; doublet +; OPC_NOP = $3F ; doublet +; OPC_NOP = $4F ; doublet +; OPC_NOP = $5F ; doublet +; OPC_NOP = $6F ; doublet +; OPC_NOP = $7F ; doublet +; OPC_NOP = $8F ; doublet +; OPC_NOP = $9F ; doublet +; OPC_NOP = $AF ; doublet +; OPC_NOP = $BF ; doublet +; OPC_NOP = $CF ; doublet +; OPC_NOP = $DF ; doublet +; OPC_NOP = $EF ; doublet +; OPC_NOP = $FF ; doublet + +.endif + +.elseif (.cpu .bitand ::CPU_ISET_6502X) + +; stable, undocumented opcodes + +; OPC_KIL = $02 ; unstable +OPC_SLO_izx = $03 +OPC_NOP_zp = $04 +OPC_SLO_zp = $07 +OPC_ANC_imm = $0B +OPC_NOP_abs = $0C +OPC_SLO_abs = $0F + +; OPC_KIL = $12 ; unstable +OPC_SLO_izy = $13 +OPC_NOP_zpx = $14 +OPC_SLO_zpx = $17 +;OPC_NOP = $1A +OPC_SLO_aby = $1B +OPC_NOP_abx = $1C +OPC_SLO_abx = $1F + +; OPC_KIL = $22 ; unstable +OPC_RLA_izx = $23 +OPC_RLA_zp = $27 +OPC_ANC_imm = $2B +OPC_RLA_abs = $2F + +; OPC_KIL = $32 ; unstable +OPC_RLA_izy = $33 +OPC_NOP_zpx = $34 +OPC_RLA_zpx = $37 +; OPC_NOP = $3A ; doublet +OPC_RLA_aby = $3B +OPC_NOP_abx = $3C +OPC_RLA_abx = $3F + +; OPC_KIL = $42 ; unstable +OPC_SRE_izx = $43 +OPC_NOP_zp = $44 +OPC_SRE_zp = $47 +OPC_ALR_imm = $4B +OPC_SRE_abs = $4F + +; OPC_KIL = $52 ; unstable +OPC_SRE_izy = $53 +OPC_NOP_zpx = $54 +OPC_SRE_zpx = $57 +; OPC_NOP = $5A ; doublet +OPC_SRE_aby = $5B +OPC_NOP_abx = $5C +OPC_SRE_abx = $5F + +; OPC_KIL = $62 +OPC_RRA_izx = $63 +OPC_NOP_zp = $64 +OPC_RRA_zp = $67 +OPC_ARR_imm = $6B +OPC_RRA_abs = $6F + +; OPC_KIL = $72 +OPC_RRA_izy = $73 +OPC_NOP_zpx = $74 +OPC_RRA_zpx = $77 +; OPC_NOP = $7A ; doublet +OPC_RRA_aby = $7B +OPC_NOP_abx = $7C +OPC_RRA_abx = $7F + +OPC_NOP_imm = $80 +; OPC_NOP_imm = $82 ; doublet +OPC_SAX_izx = $83 +OPC_SAX_zp = $87 +; OPC_NOP_imm = $89 ; doublet +; OPC_XAA = $8B ; unstable +OPC_SAX_abs = $8F + +; OPC_KIL = $92 ; unstable +; OPC_AHX_izy = $93 ; unstable +OPC_SAX_zpy = $97 +; OPC_TAS_aby = $9B ; unstable +; OPC_SHY_abx = $9C ; unstable +; OPC_SHX_aby = $9E ; unstable +; OPC_AHX_aby = $9F ; unstable + +OPC_LAX_izx = $A3 +OPC_LAX_zp = $A7 +; OPC_LAX_imm = $AB ; unstable +OPC_LAX_abs = $AF + +; OPC_KIL = $B2 ; unstable +OPC_LAX_izy = $B3 +OPC_LAX_zpy = $B7 +OPC_LAS_aby = $BB +OPC_LAX_aby = $BF + +; OPC_NOP_imm = $C2 ; doublet +OPC_DCP_izx = $C3 +OPC_DCP_zp = $C7 +OPC_AXS_imm = $CB +OPC_DCP_abs = $CF + +; OPC_KIL = $D2 ; unstable +OPC_DCP_izy = $D3 +OPC_NOP_zpx = $D4 +OPC_DCP_zpx = $D7 +OPC_NOP_DA = $DA +OPC_DCP_aby = $DB +OPC_NOP_abx = $DC +OPC_DCP_abx = $DF + +; OPC_NOP_imm = $E2 ; doublet +OPC_ISC_izx = $E3 +OPC_ISC_zp = $E7 +; OPC_SBC_imm = $EB ; doublet +OPC_ISC_abs = $EF + +; OPC_KIL = $F2 ; unstable +OPC_ISC_izy = $F3 +OPC_NOP_zpx = $F4 +OPC_ISC_zpx = $F7 +OPC_NOP_FA = $FA +OPC_ISC_aby = $FB +OPC_NOP_abx = $FC +OPC_ISC_abx = $FF + +.endif +;*****************************************************************************/ +;* */ +;* 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. */ +;* */ +;*****************************************************************************/ -#ifndef _JOY_KERNEL_H -#define _JOY_KERNEL_H +;---------------------------------------------------------------------------- +; Constants + +_IOFBF = 0 +_IOLBF = 1 +_IONBF = 2 +BUFSIZ = 256 +EOF = -1 +.if .defined(__APPLE2__) +FILENAME_MAX = 64+1 +.elseif .defined(__ATARI__) +FILENAME_MAX = 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 -/*****************************************************************************/ -/* Data */ -/*****************************************************************************/ +;*****************************************************************************/ +;* */ +;* tgi-vectorfont.inc */ +;* */ +;* TGI vector font definitions */ +;* */ +;* */ +;* */ +;* (C) 2009, Ullrich von Bassewitz */ +;* Roemerstrasse 52 */ +;* D-70794 Filderstadt */ +;* EMail: uz@cc65.org */ +;* */ +;* */ +;* This software is provided 'as-is', without any expressed or implied */ +;* warranty. In no event will the authors be held liable for any damages */ +;* arising from the use of this software. */ +;* */ +;* Permission is granted to anyone to use this software for any purpose, */ +;* including commercial applications, and to alter it and redistribute it */ +;* freely, subject to the following restrictions: */ +;* */ +;* 1. The origin of this software must not be misrepresented; you must not */ +;* claim that you wrote the original software. If you use this software */ +;* in a product, an acknowledgment in the product documentation would be */ +;* appreciated but is not required. */ +;* 2. Altered source versions must be plainly marked as such, and must not */ +;* be misrepresented as being the original software. */ +;* 3. This notice may not be removed or altered from any source */ +;* distribution. */ +;* */ +;*****************************************************************************/ -/* A structure that describes the header of a joystick driver loaded into -** memory. -*/ -typedef struct { +;------------------------------------------------------------------------------ +; Vectorfont constants - /* Driver header */ - char id[3]; /* Contains 0x6a, 0x6f, 0x79 ("joy") */ - unsigned char version; /* Interface version */ - void* libreference; /* Library reference */ +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) - /* 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 */ +;------------------------------------------------------------------------------ +; TCH file header and font data structures -} joy_drv_header; +; 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 -/* JOY kernel variables */ -extern joy_drv_header* joy_drv; /* Pointer to driver */ +; +; NES definitions. By Groepaz/Hitmem. +; + + +;; FIXME: optimize zeropage usage + +SCREEN_PTR = $62 ;2 +CRAM_PTR = $64 ;2 +CHARCOLOR = $66 +BGCOLOR = $67 +RVS = $68 +CURS_X = $69 +CURS_Y = $6a + +tickcount = $6b ;2 + +VBLANK_FLAG = $70 + +ringbuff = $0200 +ringwrite = $71 +ringread = $72 +ringcount = $73 + +ppuhi = $74 +ppulo = $75 +ppuval = $76 + +screenrows = (30-1) +charsperline = 32 +xsize = charsperline + +;; PPU defines + +PPU_CTRL1 = $2000 +PPU_CTRL2 = $2001 +PPU_STATUS = $2002 +PPU_SPR_ADDR = $2003 +PPU_SPR_IO = $2004 +PPU_VRAM_ADDR1 = $2005 +PPU_VRAM_ADDR2 = $2006 +PPU_VRAM_IO = $2007 + +;; APU defines + +APU_PULSE1CTRL = $4000 ; Pulse #1 Control Register (W) +APU_PULSE1RAMP = $4001 ; Pulse #1 Ramp Control Register (W) +APU_PULSE1FTUNE = $4002 ; Pulse #1 Fine Tune (FT) Register (W) +APU_PULSE1CTUNE = $4003 ; Pulse #1 Coarse Tune (CT) Register (W) +APU_PULSE2CTRL = $4004 ; Pulse #2 Control Register (W) +APU_PULSE2RAMP = $4005 ; Pulse #2 Ramp Control Register (W) +APU_PULSE2FTUNE = $4006 ; Pulse #2 Fine Tune Register (W) +APU_PULSE2STUNE = $4007 ; Pulse #2 Coarse Tune Register (W) +APU_TRICTRL1 = $4008 ; Triangle Control Register #1 (W) +APU_TRICTRL2 = $4009 ; Triangle Control Register #2 (?) +APU_TRIFREQ1 = $400A ; Triangle Frequency Register #1 (W) +APU_TRIFREQ2 = $400B ; Triangle Frequency Register #2 (W) +APU_NOISECTRL = $400C ; Noise Control Register #1 (W) +;;APU_ = $400D ; Unused (???) +APU_NOISEFREQ1 = $400E ; Noise Frequency Register #1 (W) +APU_NOISEFREQ2 = $400F ; Noise Frequency Register #2 (W) +APU_MODCTRL = $4010 ; Delta Modulation Control Register (W) +APU_MODDA = $4011 ; Delta Modulation D/A Register (W) +APU_MODADDR = $4012 ; Delta Modulation Address Register (W) +APU_MODLEN = $4013 ; Delta Modulation Data Length Register (W) +APU_SPR_DMA = $4014 ; Sprite DMA Register (W) +APU_CHANCTRL = $4015 ; Sound/Vertical Clock Signal Register (R) +APU_PAD1 = $4016 ; Joypad #1 (RW) +APU_PAD2 = $4017 ; Joypad #2/SOFTCLK (RW) + + +CH_HLINE = 11 +CH_VLINE = 14 +CH_ULCORNER = 176 +CH_URCORNER = 174 +CH_LLCORNER = 173 +CH_LRCORNER = 189 +CH_TTEE = 178 +CH_RTEE = 179 +CH_BTEE = 177 +CH_LTEE = 171 +CH_CROSS = 123 +CH_CURS_UP = 145 +CH_CURS_DOWN = 17 +CH_CURS_LEFT = 157 +CH_CURS_RIGHT = 29 +CH_PI = 126 +CH_DEL = 20 +CH_INS = 148 +CH_ENTER = 10 +CH_STOP = 3 +CH_ESC = 27 + +;------------------------------------------------------------------------- +; Atari 5200 System Equates +; by Christian Groessler +; taken from EQUATES.INC from Atari Inc. +;------------------------------------------------------------------------- + +;------------------------------------------------------------------------- +; ATASCII CHARACTER DEFS +;------------------------------------------------------------------------- + +ATEOL = $9B ; END-OF-LINE, used by CONIO + +;------------------------------------------------------------------------- +; CONIO CHARACTER DEFS +;------------------------------------------------------------------------- + +CH_ULCORNER = $0B ; '+' sign +CH_URCORNER = $0B +CH_LLCORNER = $0B +CH_LRCORNER = $0B +CH_HLINE = $0D ; dash +CH_VLINE = $01 ; exclamation mark + +;------------------------------------------------------------------------- +; Zero Page +;------------------------------------------------------------------------- + +POKMSK = $00 ; Mask for Pokey IRQ enable +RTCLOK = $01 ; 60 hz. clock +JUMP = $01 +CRITIC = $03 ; Critical section +ATRACT = $04 ; Attract Mode + +SDLSTL = $05 ; DLISTL Shadow +SDLSTH = $06 ; DLISTH " +SDMCTL = $07 ; DMACTL " + +PCOLR0 = $08 ; COLPM0 Shadow +PCOLR1 = $09 ; COLPM1 " +PCOLR2 = $0A ; COLPM2 " +PCOLR3 = $0B ; COLPM3 " + +COLOR0 = $0C ; COLPF0 Shadow +COLOR1 = $0D ; COLPF1 " +COLOR2 = $0E ; COLPF2 " +COLOR3 = $0F ; COLPF3 " +COLOR4 = $10 ; COLBK " + +PADDL0 = $11 ; POT0 Shadow +PADDL1 = $12 ; POT1 " +PADDL2 = $13 ; POT2 " +PADDL3 = $14 ; POT3 " +PADDL4 = $15 ; POT4 " +PADDL5 = $16 ; POT5 " +PADDL6 = $17 ; POT6 " +PADDL7 = $18 ; POT7 " + +; cc65 runtime zero page variables + +ROWCRS_5200 = $19 +COLCRS_5200 = $1A +SAVMSC = $1B ; pointer to screen memory (conio) + +;------------------------------------------------------------------------- +; Page #2 +;------------------------------------------------------------------------- + +;Interrupt Vectors + +VIMIRQ = $0200 ; Immediate IRQ + ; Preset $FC03 (SYSIRQ) +VVBLKI = $0202 ; Vblank immediate + ; Preset $FCB8 (SYSVBL) +VVBLKD = $0204 ; Vblank deferred + ; Preset $FCB2 (XITVBL) +VDSLST = $0206 ; Display List + ; Preset $FEA1 (OSDLI) +VKYBDI = $0208 ; Keyboard immediate + ; Preset $FD02 (SYSKBD) +VKYBDF = $020A ; Deferred Keyboard + ; Preset $FCB2 (XITVBL) +VTRIGR = $020C ; Soft Trigger +VBRKOP = $020E ; BRK Opcode +VSERIN = $0210 ; Serial in Ready +VSEROR = $0212 ; Serial Out Ready +VSEROC = $0214 ; Serial Output complete +VTIMR1 = $0216 ; Pokey Timer 1 +VTIMR2 = $0218 ; Pokey Timer 2 +VTIMR4 = $021A ; Pokey Timer 4 -/*****************************************************************************/ -/* Code */ -/*****************************************************************************/ +;------------------------------------------------------------------------- +; CTIA/GTIA Address Equates +;------------------------------------------------------------------------- +GTIA = $C000 ; CTIA/GTIA area +.include "atari_gtia.inc" +;------------------------------------------------------------------------- +; ANTIC Address Equates +;------------------------------------------------------------------------- -void joy_clear_ptr (void); -/* Clear the joy_drv pointer */ +ANTIC = $D400 ; ANTIC area +.include "atari_antic.inc" +;------------------------------------------------------------------------- +; POKEY Address Equates +;------------------------------------------------------------------------- +POKEY = $E800 ; POKEY area +.include "atari_pokey.inc" -/* End of joy-kernel.h */ -#endif +;------------------------------------------------------------------------- +; conio color defines +;------------------------------------------------------------------------- + +COLOR_WHITE = 0 +COLOR_RED = 1 +COLOR_GREEN = 2 +COLOR_BLACK = 3 + +;------------------------------------------------------------------------- +; Cartridge Parameters +;------------------------------------------------------------------------- + +CARTNM = $BFE8 ; Cartridge Name Area +COPYD = $BFFC ; Copyright Decade in Cart +COPYR = $BFFD ; Copyright Year in Cart + ; $FF=Diagnostic Cart +GOCART = $BFFE ; Cartridge Start Vector + +CHRORG = $F800 ; Character Generator Base ;/*****************************************************************************/ ;/* */ -;/* time.inc */ +;/* signal.inc */ ;/* */ -;/* Date and time */ +;/* Signal handling definitions */ ;/* */ ;/* */ ;/* */ -;/* (C) 2009 Ullrich von Bassewitz */ -;/* Roemerstrasse 52 */ -;/* D-70794 Filderstadt */ -;/* EMail: uz@cc65.org */ +;/* (C) 2002 Ullrich von Bassewitz */ +;/* Wacholderweg 14 */ +;/* D-70597 Stuttgart */ +;/* EMail: uz@musoftware.de */ ;/* */ ;/* */ ;/* This software is provided 'as-is', without any expressed or implied */ @@ -13261,30 +17126,1450 @@ void joy_clear_ptr (void); -;------------------------------------------------------------------------------ -; Struct tm - must match the struct defined in time.h +; Standard signal handling functions +SIG_ERR = $0000 -.struct tm - tm_sec .word - tm_min .word - tm_hour .word - tm_mday .word - tm_mon .word - tm_year .word - tm_wday .word - tm_yday .word - tm_isdst .word +; Signal numbers +SIGABRT = 0 +SIGFPE = 1 +SIGILL = 2 +SIGINT = 3 +SIGSEGV = 4 +SIGTERM = 5 +SIGCOUNT = 6 ; Number of signals + +; Table with signal handlers (asm code only) +.global sigtable + +; Function declarations +.global __sig_ign +.global __sig_dfl +.global _signal +.global _raise + + +; +; Accelerator definitions. +; + +; --------------------------------------------------------------------------- +; Speed definitions for all accelerator, to be used as input for the 'set' +; functions. + + +SPEED_SLOW = $00 +SPEED_FAST = $FF + +SPEED_1X = SPEED_SLOW +SPEED_2X = 2 - 1 +SPEED_3X = 3 - 1 +SPEED_4X = 4 - 1 +SPEED_5X = 5 - 1 +SPEED_6X = 6 - 1 +SPEED_7X = 7 - 1 +SPEED_8X = 8 - 1 +SPEED_10X = 10 - 1 +SPEED_12X = 12 - 1 +SPEED_16X = 16 - 1 +SPEED_20X = 20 - 1 + + +; --------------------------------------------------------------------------- +; C64/C128 Super CPU cartridge + +SuperCPU_Slow := $D07A +SuperCPU_Fast := $D07B +SuperCPU_Speed_Mode := $D0B8 +SuperCPU_Detect := $D0BC + + +; --------------------------------------------------------------------------- +; C64DTV + +C64DTV_Extended_Regs := $D03F + +C64DTV_Slow = $00 +C64DTV_Fast = $03 + + +; --------------------------------------------------------------------------- +; C128 native and C128 in C64 mode + +C128_VICIIE_CLK := $D030 + + +; --------------------------------------------------------------------------- +; C64 Chameleon cartridge + +CHAMELEON_CFGTUR := $D0F3 +CHAMELEON_CFGENA := $D0FE + +CHAMELEON_ENABLE_REGS = $2A +CHAMELEON_DISABLE_REGS = $FF + +CHAMELEON_CFGTUR_LIMIT_1MHZ = %00001100 +CHAMELEON_CFGTUR_LIMIT_NONE = %10000000 + + +; --------------------------------------------------------------------------- +; C65/C64DX in C64 mode + +C65_VICIII_KEY := $D02F +C65_VICIII_CTRL_B := $D031 + +C65_VICIII_UNLOCK_1 = $A5 +C65_VICIII_UNLOCK_2 = $96 + + +; --------------------------------------------------------------------------- +; C64 Turbo Master cartridge + +TURBOMASTER_DETECT := $BF53 + +TURBOMASTER_SPEED_REG := $00 + +; +; 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) + + +;*****************************************************************************/ +;* */ +;* tgi-kernel.inc */ +;* */ +;* TGI kernel interface */ +;* */ +;* */ +;* */ +;* (C) 2002-2012, Ullrich von Bassewitz */ +;* Roemerstrasse 52 */ +;* D-70794 Filderstadt */ +;* EMail: uz@cc65.org */ +;* */ +;* */ +;* This software is provided 'as-is', without any expressed or implied */ +;* warranty. In no event will the authors be held liable for any damages */ +;* arising from the use of this software. */ +;* */ +;* Permission is granted to anyone to use this software for any purpose, */ +;* including commercial applications, and to alter it and redistribute it */ +;* freely, subject to the following restrictions: */ +;* */ +;* 1. The origin of this software must not be misrepresented; you must not */ +;* claim that you wrote the original software. If you use this software */ +;* in a product, an acknowledgment in the product documentation would be */ +;* appreciated but is not required. */ +;* 2. Altered source versions must be plainly marked as such, and must not */ +;* be misrepresented as being the original software. */ +;* 3. This notice may not be removed or altered from any source */ +;* distribution. */ +;* */ +;*****************************************************************************/ + + + +;------------------------------------------------------------------------------ +; The driver header + +.struct TGI_HDR + ID .byte 3 ; Contains 0x74, 0x67, 0x69 ("tgi") + VERSION .byte 1 ; Interface version + LIBREF .addr ; Library reference + VARS .struct + XRES .word 1 ; X resolution + YRES .word 1 ; Y resolution + COLORCOUNT .byte 1 ; Number of available colors + PAGECOUNT .byte 1 ; Number of screens available + FONTWIDTH .byte 1 ; System font width in pixel + FONTHEIGHT .byte 1 ; System font height in pixel + ASPECTRATIO .word 1 ; Fixed point 8.8 format + FLAGS .byte 1 ; TGI driver flags + .endstruct + JUMPTAB .struct + INSTALL .addr ; INSTALL routine + UNINSTALL .addr ; UNINSTALL routine + INIT .addr ; INIT routine + DONE .addr ; DONE routine + GETERROR .addr ; GETERROR routine + CONTROL .addr ; CONTROL routine + CLEAR .addr ; CLEAR routine + SETVIEWPAGE .addr ; SETVIEWPAGE routine + SETDRAWPAGE .addr ; SETDRAWPAGE routine + SETCOLOR .addr ; SETCOLOR routine + SETPALETTE .addr ; SETPALETTE routine + GETPALETTE .addr ; GETPALETTE routine + GETDEFPALETTE .addr ; GETDEFPALETTE routine + SETPIXEL .addr ; SETPIXEL routine + GETPIXEL .addr ; GETPIXEL routine + LINE .addr ; LINE routine + BAR .addr ; BAR routine + TEXTSTYLE .addr ; TEXTSTYLE routine + OUTTEXT .addr ; OUTTEXT routine + .endstruct +.endstruct + +;------------------------------------------------------------------------------ +; The TGI API version, stored at TGI_HDR_VERSION + +TGI_API_VERSION = $06 + +;------------------------------------------------------------------------------ +; Bitmapped tgi driver flags, stored in TGI_HDR::VARS::FLAGS. +; Beware: Some of the bits are tested using the BIT instruction, so do not +; change the values without checking the code! + +TGI_BM_FONT_FINESCALE = $80 ; Bitmap fonts are fine grained scalable + +;------------------------------------------------------------------------------ +; Text constants + +TGI_FONT_BITMAP = 0 +TGI_FONT_VECTOR = 1 + +TGI_TEXT_HORIZONTAL = 0 +TGI_TEXT_VERTICAL = 1 + +;---------------------------------------------------------------------------- +; Results of tgi_outcode + +TGI_CLIP_NONE = $00 +TGI_CLIP_LEFT = $01 +TGI_CLIP_RIGHT = $02 +TGI_CLIP_BOTTOM = $04 +TGI_CLIP_TOP = $08 + +;------------------------------------------------------------------------------ +; ASM accessible color constants + + .global tgi_color_black:zp ; Target-specific value for black + .global tgi_color_white:zp ; Target-specific value for white + +;------------------------------------------------------------------------------ +; C accessible variables + + .global _tgi_drv ; Pointer to driver + .global _tgi_error ; Last error code + .global _tgi_gmode ; Flag: graphics mode active + .global _tgi_curx ; Current drawing cursor X + .global _tgi_cury ; Current drawing cursor Y + .global _tgi_color ; Current drawing color + .global _tgi_font ; Which font to use + .global _tgi_textdir ; Current text direction + .global _tgi_vectorfont ; Pointer to vector font + .global _tgi_textscalew ; Text magnification for the width + .global _tgi_textscaleh ; Text magnification for the height + .global _tgi_charwidth ; Width of scaled system font char + .global _tgi_charheight ; Height of scaled system font char + .global _tgi_xres ; X resolution of the current mode + .global _tgi_yres ; Y resolution of the current mode + .global _tgi_xmax ; Maximum X coordinate + .global _tgi_ymax ; Maximum Y coordinate + .global _tgi_colorcount ; Number of available colors + .global _tgi_pagecount ; Number of available screen pages + .global _tgi_fontwidth ; System font width + .global _tgi_fontheight ; System font height + .global _tgi_aspectratio ; Aspect ratio, fixed point 8.8 + .global _tgi_flags ; TGI driver flags + +;------------------------------------------------------------------------------ +; ASM accessible variables + + .global tgi_clip_x1 ; Coordinate for line clipper + .global tgi_clip_y1 ; Coordinate for line clipper + .global tgi_clip_x2 ; Coordinate for line clipper + .global tgi_clip_y2 ; Coordinate for line clipper + +;------------------------------------------------------------------------------ +; Driver entry points + + .global tgi_install + .global tgi_uninstall + .global tgi_init + .global tgi_done + .global tgi_geterror + .global tgi_control + .global tgi_clear + .global tgi_setviewpage + .global tgi_setdrawpage + .global tgi_setcolor + .global tgi_setpalette + .global tgi_getpalette + .global tgi_getdefpalette + .global tgi_setpixel + .global tgi_getpixel + .global tgi_line + .global tgi_bar + .global tgi_textstyle + .global tgi_outtext + +;------------------------------------------------------------------------------ +; ASM functions + + .global tgi_clear_ptr + .global tgi_clippedline + .global tgi_curtoxy + .global tgi_getset + .global tgi_imulround + .global tgi_inv_arg + .global tgi_inv_drv + .global tgi_linepop + .global tgi_outcode + .global tgi_popxy + .global tgi_popxy2 + .global tgi_set_ptr + +;------------------------------------------------------------------------------ +; C callable functions + + .global _tgi_arc + .global _tgi_bar + .global _tgi_circle + .global _tgi_clear + .global _tgi_done + .global _tgi_ellipse + .global _tgi_getaspectratio + .global _tgi_getcolor + .global _tgi_getcolorcount + .global _tgi_getdefpalette + .global _tgi_geterror + .global _tgi_geterrormsg + .global _tgi_getmaxcolor + .global _tgi_getmaxx + .global _tgi_getmaxy + .global _tgi_getpagecount + .global _tgi_getpalette + .global _tgi_getpixel + .global _tgi_gettextheight + .global _tgi_gettextwidth + .global _tgi_getxres + .global _tgi_getyres + .global _tgi_gotoxy + .global _tgi_imulround + .global _tgi_init + .global _tgi_install + .global _tgi_install_vectorfont + .global _tgi_ioctl + .global _tgi_line + .global _tgi_lineto + .global _tgi_load_driver + .global _tgi_outtext + .global _tgi_outtextxy + .global _tgi_pieslice + .global _tgi_setaspectratio + .global _tgi_setcolor + .global _tgi_setdrawpage + .global _tgi_setpalette + .global _tgi_setpixel + .global _tgi_settextdir + .global _tgi_settextscale + .global _tgi_settextstyle + .global _tgi_setviewpage + .global _tgi_uninstall + .global _tgi_unload +; +; CX16 definitions +; + +; --------------------------------------------------------------------------- +; Constants + +.enum COLOR + BLACK = $00 + WHITE + RED + CYAN + VIOLET + PURPLE = VIOLET + GREEN + BLUE + YELLOW + ORANGE + BROWN + LIGHTRED + GRAY1 + GRAY2 + LIGHTGREEN + LIGHTBLUE + GRAY3 +.endenum + +; Special keys +.enum KEY + F1 = $85 + F3 + F5 + F7 + F2 + F4 + F6 + F8 + F9 = $10 + F10 = $15 + F11 + F12 +.endenum + +; --------------------------------------------------------------------------- +; Zero page + +; Kernal +FNAM := $84 ; Pointer to filename +KTEMP2 := $86 ; 2 bytes for temporary storage +SCREEN_PTR := $88 ; Pointer to current row on text screen (16 bits) +IMPARM := $8A ; Pointer for PRIMM function + +; BASIC +TXTPTR := $EE ; Pointer into BASIC source code + +; Page two + +BASIC_BUF := $0200 ; Location of command-line +BASIC_BUF_LEN = 81 ; Maximum length of command-line + +CURS_COLOR := $027E ; Color under the cursor +CHARCOLOR := $0286 ; Cursor's color nybbles (high: background, low: foreground) +STATUS := $0287 ; Status from previous I/O operation +IN_DEV := $028E ; Current input device number +OUT_DEV := $028F ; Current output device number +TIME := $0292 ; 60 Hz. clock (3 bytes, big-endian) +FNAM_LEN := $0298 ; Length of filename +SECADR := $029A ; Secondary address +DEVNUM := $029B ; Device number +KEY_COUNT := $029E ; Number of keys in input buffer +RVS := $029F ; Reverse flag +CURS_FLAG := $02A3 ; 1 = cursor off +CURS_BLINK := $02A4 ; Blink counter +CURS_CHAR := $02A5 ; Character under the cursor +CURS_STATE := $02A6 ; Cursor blink state +CURS_X := $02A8 ; Cursor column +CURS_Y := $02AB ; Cursor row +LLEN := $02AE ; Line length +NLINES := $02AF ; Number of screen lines +JOY1 := $02BC ; 3 bytes of NES/SNES gamepad data +JOY2 := $02BF + +; BASIC +VARTAB := $02DD ; Pointer to start of BASIC variables +MEMSIZE := $02E5 ; Pointer to highest BASIC RAM location (+1) + +; Kernal mouse +MSEPAR := $0371 ; mouse: $8x=sprite on, 1/2: scale +MOUSEL := $0372 ; min. x co-ordinate +MOUSER := $0374 ; max. x co-ordinate +MOUSET := $0376 ; min. y co-ordinate +MOUSEB := $0378 ; max. y co-ordinate +MOUSEX := $037A ; x co-ordinate +MOUSEY := $037C ; y co-ordinate +MOUSEBT := $037E ; buttons (bits 2: middle, 1: right, 0: left) + +; --------------------------------------------------------------------------- +; Vector and other locations + +IRQVec := $0314 +BRKVec := $0316 +NMIVec := $0318 + +; --------------------------------------------------------------------------- +; I/O locations + +; Video Enhanced Retro Adapter +; Has audio, SPI, and UART. +.scope VERA + ; External registers + .struct + .org $9F20 + ADDR .faraddr ; Address for data port access + DATA0 .byte ; First data port + DATA1 .byte ; Second data port + CTRL .byte ; Control register + IRQ_EN .byte ; Interrupt enable bits + IRQ_FLAGS .byte ; Interrupt flags + .endstruct + .enum ; Address automatic increment amounts + INC0 = 0 << 4 + INC1 = 1 << 4 + INC2 = 2 << 4 + INC4 = 3 << 4 + INC8 = 4 << 4 + INC16 = 5 << 4 + INC32 = 6 << 4 + INC64 = 7 << 4 + INC128 = 8 << 4 + INC256 = 9 << 4 + INC512 = 10 << 4 + INC1024 = 11 << 4 + INC2048 = 12 << 4 + INC4096 = 13 << 4 + INC8192 = 14 << 4 + INC16384 = 15 << 4 + .endenum + .enum ; Interrupt request flags + VERT_SYNC = %00000001 + RASTER = %00000010 + SPR_COLLIDED = %00000100 + UART_IRQ = %00001000 + .endenum + ; Internal RAM and registers + VRAM := $000000 + .scope COMPOSER ; Display composer + .struct + .org $0F0000 + VIDEO .byte + HSCALE .byte + VSCALE .byte + FRAME .byte + HSTART_LO .byte + HSTOP_LO .byte + VSTART_LO .byte + VSTOP_LO .byte + STRTSTOP_HI .byte + IRQ_LINE .word + .endstruct + .enum MODE ; Output mode + DISABLE = 0 + VGA + NTSC + RGB ; Interlaced, composite sync + .endenum + .enum + ENABLE_COLOR = 0 << 2 + DISABLE_COLOR = 1 << 2 ; NTSC monochrome + .endenum + .endscope + PALETTE := $0F1000 + .struct L0 ; Layer 0 registers + .org $0F2000 + CTRL0 .byte ; Display mode control + CTRL1 .byte ; Geometry control + MAP_BASE .addr + TILE_BASE .addr + HSCROLL .word ; Horizontal scroll + VSCROLL .word ; Vertical scroll + .endstruct + .struct L1 ; Layer 1 registers (same as layer 0) + .org $0F3000 + CTRL0 .byte + CTRL1 .byte + MAP_BASE .addr + TILE_BASE .addr + HSCROLL .word + VSCROLL .word + .endstruct + .enum MAP ; Map geometry + WIDTH32 = 0 + WIDTH64 + WIDTH128 + WIDTH256 + HEIGHT32 = 0 << 2 + HEIGHT64 = 1 << 2 + HEIGHT128 = 2 << 2 + HEIGHT256 = 3 << 2 + .endenum + .scope TILE ; Tile geometry + .enum + WIDTH8 = 0 << 4 + WIDTH16 = 1 << 4 + WIDTH320 = WIDTH8 + WIDTH640 = WIDTH16 + HEIGHT8 = 0 << 5 + HEIGHT16 = 1 << 5 + .endenum + .enum FLIP + NONE = 0 << 2 + HORIZ = 1 << 2 + VERT = 2 << 2 + BOTH = 3 << 2 + .endenum + .endscope + .enum DMODE ; Display modes + TEXT16 = 0 << 5 + TEXT256 = 1 << 5 + TILE4 = 2 << 5 + TILE16 = 3 << 5 + TILE256 = 4 << 5 + BITMAP4 = 5 << 5 + BITMAP16 = 6 << 5 + BITMAP256 = 7 << 5 + .endenum + .scope SPRITE + .struct + .org $0F4000 + CTRL .byte ; Enables sprites + COLLISION .byte + .endstruct + .enum FLIP + NONE = 0 + HORIZ + VERT + BOTH + .endenum + .enum ; Sprite geometry + WIDTH8 = 0 << 4 + WIDTH16 = 1 << 4 + WIDTH32 = 2 << 4 + WIDTH64 = 3 << 4 + HEIGHT8 = 0 << 6 + HEIGHT16 = 1 << 6 + HEIGHT32 = 2 << 6 + HEIGHT64 = 3 << 6 + COLORS16 = 0 << 7 + COLORS256 = 1 << 7 + .endenum + .enum DEPTH + DISABLE = 0 << 2 + CANVAS = 1 << 2 + LAYER0 = 2 << 2 + LAYER1 = 3 << 2 + .endenum + ATTRIB := $0F5000 ; Sprite attributes + .endscope + AUDIO := $0F6000 + .scope SPI + .struct + .org $0F7000 + DATA .byte + CONTROL .byte + .endstruct + .enum + DESELECT = 0 + SELECT + BUSY_MASK = 1 << 1 + .endenum + .endscope + .scope UART ; Universal Asyncronous Receiver Transmitter + .struct + .org $0F8000 + DATA .byte + STATUS .byte + BPS_DIV .word + .endstruct + .enum MASK + RECEIVE = 1 << 0 + TRANSMIT = 1 << 1 + .endenum + .endscope +.endscope + +; 65C22 +.struct VIA1 ; Versatile Interface Adapter + .org $9F60 + PRB .byte ; ROM bank, IEC (Port Register B) + PRA .byte ; RAM bank (Port Register A) + DDRB .byte ; (Data Direction Register B) + DDRA .byte ; (Data Direction Register A) + T1 .word ; (Timer 1) + T1L .word ; (Timer 1 Latch) + T2 .word ; (Timer 2) + SR .byte ; (Shift Register) + ACR .byte ; (Auxiliary Control Register) + PCR .byte ; (Peripheral Control Register) + IFR .byte ; (Interrupt Flags Register) + IER .byte ; (Interrupt Enable Register) + PRA2 .byte ; RAM bank (Port Register A without handshaking) +.endstruct + +; 65C22 +.struct VIA2 + .org $9F70 + PRB .byte ; Mouse communication ? + PRA .byte ; NES controller communication + DDRB .byte + DDRA .byte + T1 .word + T1L .word + T2 .word + SR .byte + ACR .byte + PCR .byte + IFR .byte + IER .byte + PRA2 .byte +.endstruct + +; Real-Time Clock + +; X16 Emulator device +; This device doesn't exist on the real machine. +.struct EMULATOR + .org $9FB0 + DEBUG .byte ; Boolean: debugging enabled + VERALOG .byte ; Boolean: log VERA activity + KEYBOARDLOG .byte ; Boolean: log keyboard data + ECHO .byte ; Type of echo that's enabled + SAVEXIT .byte ; Boolean: save on exit + GIFREC .byte ; Method of recording GIF movie + .org $9FBD + KEYMAP .byte ; Current keyboard layout number (Read-Only) + DETECT .byte 2 ; If is "16" string, then running on emulator (RO) +.endstruct +; +; Oric TELEMON definition +; TELEMON 2.4 & TELEMON 3.x +; For TELEMON 3.x check http://orix.oric.org +; + +; --------------------------------------------------------------------------- +; Constants + +SCREEN_XSIZE = 40 ; Screen columns +SCREEN_YSIZE = 28 ; Screen rows + +FUNCTKEY = $A5 + +FNAME_LEN = 11 ; Maximum length of file-name + +; --------------------------------------------------------------------------- +; I/O Identifier +; Theses identifers are used for channel management +; + +XKBD = $80 ; Keyboard +XRSE = $83 ; RS232 in +XSCR = $88 ; Screen +XRSS = $90 ; RS232 out + +; --------------------------------------------------------------------------- +; Zero page + +; --------------------------------------------------------------------------- +; Page 00 +RES := $00 +RESB := $02 + +DECDEB := $04 +DECFIN := $06 +DECCIB := $08 +DECTRV := $0A + +TR0 := $0C +TR1 := $0D +TR2 := $0E +TR3 := $0F +TR4 := $10 +TR5 := $11 +TR6 := $12 +TR7 := $13 + +DEFAFF := $14 + +IRQSVA := $21 ; Used to save A when a BRK call occurs +IRQSVX := $22 ; Used to save X when a BRK call occurs +IRQSVY := $23 ; Used to save Y when a BRK call occurs +IRQSVP := $24 ; Used to save P when a BRK call occurs + +ADSCR := $26 +SCRNB := $28 ; Id of the current window + +ADKBD := $2A ; Address ASCII conversion table + + +PTR_READ_DEST := $2C ; Used for XFREAD and XWRITE only in TELEMON 3.x + +ADCLK := $40 ; Address for clock display +TIMEUS := $42 +TIMEUD := $44 + + +HRSX := $46 +HRSY := $47 + +XLPRBI := $48 ; Printer flag (b7) + +HRSX40 := $49 +HRSX6 := $4A + +ADHRS := $4B ; Hires screen address (word) + +HRS1 := $4D +HRS2 := $4F +HRS3 := $51 +HRS4 := $53 +HRS5 := $55 + +HRSFB := $57 + +VABKP1 := $58 + +; RS232T +; b0-b3 : speed +; 1111 => 19200 bps (please note that telestrat can't handle this speed without stopping all IRQ except ACIA's one) +; 1100 => 9600 bps (default from TELEMON) +; 1110 => 4800 bps +; 1010 => 2400 bps +; 1000 => 1200 bps +; 0111 => 600 bps +; 0110 => 300 bps +; 0101 => 150 bps +; 0010 => 75 bps + +; b4 : 0 external clock, 1 internal clock +; b6-b5 : 00 8 bits +; 01 7 bits +; 10 6 bits +; 11 5 bits +; b7 : 0 a stop + +RS232T := $59 + +; RS232C +; b0-b3 : 0 +; b4 : 1 if echo +; b5 : 1 if parity +; b7-b6 : 00 in/out parity odd +; : 01 on/out parity even +; : 10 parity sent, answer not tested +; : 11 SPACE SENT, reception not tested + +RS232C := $5A +INDRS := $5B + +; Float and integer management +ACC1E := $60 +ACC1M := $61 +ACC1S := $65 +ACC1EX := $66 +ACC1J := $67 +ACC2E := $68 +ACC2M := $69 +ACC2S := $6D +ACCPS := $6E +ACC3 := $6F + +ACC4E := $73 +ACC4M := $74 + + +FLDT0 := $74 +FLDT1 := $75 +FLDT2 := $76 +FLSVY := $77 +FLTR0 := $7D +FLTR1 := $7E + +; Menu management +MENDDY := $62 +MENDFY := $63 +MENX := $64 +MENDY := $66 +FLGMEN := $68 +ADMEN := $69 + +FLSGN := $8A +FLINT := $88 +FLSVS := $89 +FLERR := $8B + +VARLNG := $8C +VARAPL := $D0 + +; --------------------------------------------------------------------------- +; Low memory +IRQVec := $02FB ; "fast" interrupt vector + +; --------------------------------------------------------------------------- +; I/O locations + +; 6522 +.struct VIA ; Versatile Interface Adapter + .res $0300 +PRB .byte ; Port Register B +PRA .byte ; Port Register A +DDRB .byte ; Data Direction Register B +DDRA .byte ; Data Direction Register A +T1 .word ; Timer 1 +T1L .word ; Timer 1 Latch +T2 .word ; Timer 2 +SR .byte ; Shift Register +ACR .byte ; Auxiliary Control Register +PCR .byte ; Peripheral Control Register +IFR .byte ; Interrupt Flags Register +IER .byte ; Interrupt Enable Register +PRA2 .byte ; Port Register A without handshaking .endstruct +.struct VIA2 ; Versatile Interface Adapter + .res $0320 +PRB .byte ; Port Register B +PRA .byte ; Port Register A +DDRB .byte ; Data Direction Register B +DDRA .byte ; Data Direction Register A +T1 .word ; Timer 1 +T1L .word ; Timer 1 Latch +T2 .word ; Timer 2 +SR .byte ; Shift Register +ACR .byte ; Auxiliary Control Register +PCR .byte ; Peripheral Control Register +IFR .byte ; Interrupt Flags Register +IER .byte ; Interrupt Enable Register +PRA2 .byte ; Port Register A without handshaking +.endstruct + +; 6551 +.struct ACIA ; Asynchronous Communications Interface Adapter + .res $031C +DATA .byte +STATUS .byte +CMD .byte ; Command register +CTRL .byte ; Control register +.endstruct + +SCREEN := $BB80 + + +; --------------------------------------------------------------------------- +; ROM entries + +; TELEMON primitives (2.4 & 3.x) + +; all values are used to call bank 7 of telestrat cardridge. It works with 'brk value' +XOP0 = $00 ; Open device on channel 0 +XOP1 = $01 ; Open device on channel 1 +XOP2 = $02 ; Open device on channel 2 +XOP3 = $03 ; Open device on channel 3 + +XCL0 = $04 ; Close channel 0 +XCL1 = $05 ; Close channel 1 +XCL2 = $06 ; Close channel 2 +XCL3 = $07 ; Close channel 3 + +XRD0 = $08 +XRDW0 = $0C + +XWR0 = $10 ; Write a char in channel 0 +XWR1 = $11 ; Write a char in channel 1 +XWR2 = $12 ; Write a char in channel 2 +XWR3 = $13 ; Write a char in channel 3 + +XWSTR0 = $14 ; Write a string in text mode channel 0 +XWSTR1 = $15 ; Write a string in text mode channel 1 +XWSTR2 = $16 ; Write a string in text mode channel 2 +XWSTR3 = $17 ; Write a string in text mode channel 3 + +XDECAL = $18 + +XTEXT = $19 +XHIRES = $1A +XEFFHI = $1B ; Clear hires screen +XFILLM = $1C +XMINMA = $1F +XVARS = $24 ; Only in TELEMON 3.x, in TELEMON 2.4, it's XNOMFI ($24) +XCRLF = $25 ; Jump a line and return to the beginning of the line +XDECAY = $26 +XFREAD = $27 ; Only in TELEMON 3.x (bank 7 of Orix) +XBINDX = $28 ; Convert a number into hex and displays on channel 0 +XDECIM = $29 +XHEXA = $2A ; Convert a number into hex + +XEDT = $2D ; Launch editor +XINSER = $2E + +XSCELG = $2F ; Search a line in editor mode +XOPEN = $30 ; Only in TELEMON 3.x (bank 7 of Orix) +XECRPR = $33 ; Displays prompt +XCOSCR = $34 ; Switch off cursor +XCSSCR = $35 ; Switch on cursor +XSCRSE = $36 +XSCROH = $37 ; Scroll up text screen +XSCROB = $38 ; Scroll down text screen +XSCRNE = $39 ; Load charset from rom to ram +XCLOSE = $3A ; Only in TELEMON 3.x close file (bank 7 of Orix) +XFWRITE = $3B ; Only in TELEMON 3.x write file (bank 7 of Orix) + +; Clock primitive +XRECLK = $3C ; Reset clock +XCLCL = $3D ; Close clock +XWRCLK = $3E ; Displays clock in the adress in A & Y registers + +XSONPS = $40 ; Send data to PSG register (14 values) +XOUPS = $42 ; Send Oups sound into PSG +XPLAY = $43 ; Play a sound +XSOUND = $44 +XMUSIC = $45 +XZAP = $46 ; Send Zap sound to PSG +XSHOOT = $47 +XMKDIR = $4B ; Create a folder. Only available in TELEMON 3.x (bank 7 of Orix) +XRM = $4D ; Remove a folder or a file. Only available in TELEMON 3.x (bank 7 of Orix) +XFWR = $4E ; Put a char on the first screen. Only available in TELEMON 3.x (bank 7 of Orix) +XGOKBD = $52 + +; Buffer management +XECRBU = $54 ; Write A or AY in the buffer +XLISBU = $55 ; Read A or AY in the buffer +XTSTBU = $56 +XVIDBU = $57 ; Flush the buffer +XINIBU = $58 ; Initialize the buffer X +XDEFBU = $59 ; Reset all value of the buffer +XBUSY = $5A ; Test if the buffer is empty + +XMALLOC = $5B ; Only in TELEMON 3.x (bank 7 of Orix) +XFREE = $62 ; Only in TELEMON 3.x (bank 7 of Orix) +XSOUT = $67 ; Send accumulator value (A) to RS232, available in TELEMON 2.4 & 3.x : if RS232 buffer is full, the Oric Telestrat freezes +XHRSSE = $8C ; Set hires position cursor +XDRAWA = $8D ; Draw a line absolute +XDRAWR = $8E ; Draw a line (relative) +XCIRCL = $8F ; Draw a circle +XCURSE = $90 ; Plot a pixel +XCURMO = $91 ; Move to x,y pos in Hires +XPAPER = $92 +XINK = $93 +XBOX = $94 ; Draw a box +XABOX = $95 +XFILL = $96 +XCHAR = $97 ; Display a char on the screen in Hires +XSCHAR = $98 ; Draw a string in hires +XEXPLO = $9C ; Send Explode sound to PSG +XPING = $9D ; Send Ping sound to PSG + +; --------------------------------------------------------------------------- +; ROM entries variables + +PWD_PTR = $00 + +; --------------------------------------------------------------------------- +; +BUFTRV := $100 + + +; --------------------------------------------------------------------------- +; Page $200 +BNKST := $200 ; Used to store signature of 8 bank (length : 8 bytes) +TABDRV := $208 + +DRVDEF := $20C +FLGTEL := $20D +KOROM := $20E ; Used to compute the size of all rom bank. The result is store here. The value is in KB +KORAM := $20F ; Used to compute the size of all ram bank. The result is store here. The value is in KB +; Time management +TIMED := $210 +TIMES := $211 +TIMEM := $212 +TIMEH := $213 +FLGCLK := $214 +FLGCLK_FLAG := $215 +FLGCUR := $216 ; Cursor management flag +; screens position managements + +FLGCUR_STATE := $217 ; Cursor state flag + +ADSCRL := $218 +ADSCRH := $21C +SCRX := $220 +SCRY := $224 + +SCRDX := $228 +SCRFX := $22C +SCRDY := $230 +SCRFY := $234 +SCRBAL := $238 +SCRBAH := $23C +SCRCT := $240 +SCRCF := $244 +FLGSCR := $248 +CURSCR := $24C + +HARD_COPY_HIRES := $250 ; Hard copy vector + +SCRTXT := $256 +SCRHIR := $25C +SCRTRA := $262 ; 6 bytes lenfth + +; Keyboard management +KBDCOL := $268 ; 8 bytes length +KBDFLG_KEY := $270 ; 0 if no key pressed +KBDVRR := $272 + +KBDVRL := $273 +FLGKBD := $275 +KBDFCT := $276 +KBDSHT := $278 + +KBDKEY := $279 +KBDCTC := $27E +LPRX := $286 +LPRY := $287 +LPRFX := $288 +LPRFY := $289 +FLGLPR := $28A + +; Joysticks management +FLGJCK := $28C +JCGVAL := $28D +JCDVAL := $28E +JCKTAB := $29D + + +HRSPAT := $2AA ; Hires pattern : it's used to draw pattern for a line or a circle +HRSERR := $2AB + +IOTAB0 := $2AE +IOTAB1 := $2B2 +IOTAB2 := $2B6 +IOTAB3 := $2BA +ADIOB := $2BE ; 48 bytes length +FLGRST := $2EE +CSRND := $2EF +VNMI := $2F4 +ADIODB_VECTOR := $2f7 ; 3 bytes length + +IRQVECTOR := $2FA +VAPLIC := $2FD + +; --------------------------------------------------------------------------- +; Page $400 +EXBNK := $40C +VEXBNK := $414 +BNKCIB := $417 + +; --------------------------------------------------------------------------- +; Page $500 + +DRIVE := $500 +ERRNB := $512 +SAVES := $513 +BUFNOM := $517 +VSALO0 := $528 +VSALO1 := $529 +FTYPE := $52C ; File type +DESALO := $52D +FISALO := $52F +EXSALO := $531 +EXTDEF := $55D ; Default extension. At the start of telemon, it's set to ".COM" +BUFEDT := $590 ; Buffer edition + +MAX_BUFEDT_LENGTH=110 + +; --------------------------------------------------------------------------- +; Hardware +CH376_DATA := $340 +CH376_COMMAND := $341 + +; RAM overlays buffer +BUFBUF := $c080 + +; --------------------------------------------------------------------------- +; Stratsed vectors +; Stratsed is the main OS for Telestrat +XMERGE := $FF0E +XFST := $FF11 +XSPUT := $FF14 +XSTAKE := $FF17 +XTAKE := $FF20 +XOPENS := $FF1A ; XOPEN from Stratsed +XCLOSES := $FF1D ; XCLOSE from Stratsed +XPUT := $FF23 +XREWIN := $FF29 +XJUMP := $FF2C +XLGBUF := $FF2F +XERVEC := $FF32 +XESAVE := $FF35 +XCOPY := $FF38 +XDNAME := $FF3B +XSTATU := $FF3E +XUPDAT := $FF41 +XFORMA := $FF44 +XDELBK := $FF4A +XDELN := $FF4D +XPROT := $FF50 +XUNPRO := $FF53 +XDIRN := $FF56 +XBKP := $FF59 +XINITI := $FF5C +XERREU := $FF5F +XLOAD := $FF62 +XDEFSA := $FF65 +XDEFLO := $FF68 +XSAVE := $FF6B +XNOMDE := $FF6E +XCREAY := $FF71 +XDETSE := $FF74 +XLIBSE := $FF77 +XTRVCA := $FF7A +XTRVNM := $FF7D +XTRVNX := $FF80 +XBUCA := $FF86 +XVBUF1 := $FF89 +XSVSEC := $FF8C +XSAY := $FF8F +XSBUF1 := $FF92 +XSBUF2 := $FF95 +XSBUF3 := $FF98 +XSCAT := $FF9B +XPRSEC := $FFA1 +XPBUF1 := $FFA4 +XPMAP := $FFA7 +XRWTS := $FFAA + +; --------------------------------------------------------------------------- +; MACRO + +.macro BRK_TELEMON value + .byte $00,value +.endmacro +;------------------------------------------------------------------------- +; POKEY Address Equates +;------------------------------------------------------------------------- + +; Read Addresses + +POT0 = POKEY + $00 ;potentiometer 0 +POT1 = POKEY + $01 ;potentiometer 1 +POT2 = POKEY + $02 ;potentiometer 2 +POT3 = POKEY + $03 ;potentiometer 3 +POT4 = POKEY + $04 ;potentiometer 4 +POT5 = POKEY + $05 ;potentiometer 5 +POT6 = POKEY + $06 ;potentiometer 6 +POT7 = POKEY + $07 ;potentiometer 7 + +ALLPOT = POKEY + $08 ;potentiometer port status +KBCODE = POKEY + $09 ;keyboard code +RANDOM = POKEY + $0A ;random number generator +SERIN = POKEY + $0D ;serial port input +IRQST = POKEY + $0E ;IRQ interrupt status +SKSTAT = POKEY + $0F ;serial port and keyboard status + +; Write Addresses + +AUDF1 = POKEY + $00 ;channel 1 audio frequency +AUDC1 = POKEY + $01 ;channel 1 audio control + +AUDF2 = POKEY + $02 ;channel 2 audio frequency +AUDC2 = POKEY + $03 ;channel 2 audio control + +AUDF3 = POKEY + $04 ;channel 3 audio frequency +AUDC3 = POKEY + $05 ;channel 3 audio control + +AUDF4 = POKEY + $06 ;channel 4 audio frequency +AUDC4 = POKEY + $07 ;channel 4 audio control + +AUDCTL = POKEY + $08 ;audio control +STIMER = POKEY + $09 ;start timers +SKRES = POKEY + $0A ;reset SKSTAT status +POTGO = POKEY + $0B ;start potentiometer scan sequence +SEROUT = POKEY + $0D ;serial port output +IRQEN = POKEY + $0E ;IRQ interrupt enable +SKCTL = POKEY + $0F ;serial port and keyboard control +.ifndef DYN_DRV + DYN_DRV = 1 +.endif + +.macro module_header module_label + .if DYN_DRV + .segment "HEADER" + .else + .data + .export module_label + module_label: + .endif +.endmacro +;/*****************************************************************************/ +;/* */ +;/* mouse-kernel.inc */ +;/* */ +;/* Mouse API */ +;/* */ +;/* */ +;/* */ +;/* (C) 2003-2009, Ullrich von Bassewitz */ +;/* Roemerstrasse 52 */ +;/* D-70794 Filderstadt */ +;/* EMail: uz@cc65.org */ +;/* */ +;/* */ +;/* */ +;/* */ +;/* This software is provided 'as-is', without any expressed or implied */ +;/* warranty. In no event will the authors be held liable for any damages */ +;/* arising from the use of this software. */ +;/* */ +;/* Permission is granted to anyone to use this software for any purpose, */ +;/* including commercial applications, and to alter it and redistribute it */ +;/* freely, subject to the following restrictions: */ +;/* */ +;/* 1. The origin of this software must not be misrepresented; you must not */ +;/* claim that you wrote the original software. If you use this software */ +;/* in a product, an acknowledgment in the product documentation would be */ +;/* appreciated but is not required. */ +;/* 2. Altered source versions must be plainly marked as such, and must not */ +;/* be misrepresented as being the original software. */ +;/* 3. This notice may not be removed or altered from any source */ +;/* distribution. */ +;/* */ +;/*****************************************************************************/ + + + + ;------------------------------------------------------------------------------ -; Exported functions +; Error codes -.global __systime -.global _mktime +.enum + MOUSE_ERR_OK ; No error + MOUSE_ERR_NO_DRIVER ; No driver available + MOUSE_ERR_CANNOT_LOAD ; Error loading driver + MOUSE_ERR_INV_DRIVER ; Invalid driver + MOUSE_ERR_NO_DEVICE ; Mouse hardware not found + MOUSE_ERR_INV_IOCTL ; Invalid ioctl code + MOUSE_ERR_COUNT ; Special: Number of error codes +.endenum +;------------------------------------------------------------------------------ +; The driver header +.struct MOUSE_HDR + ID .byte 3 ; Contains 0x6D, 0x6F, 0x75 ("mou") + VERSION .byte 1 ; Interface version + LIBREF .addr ; Library reference + JUMPTAB .struct + INSTALL .addr + UNINSTALL .addr + HIDE .addr + SHOW .addr + SETBOX .addr + GETBOX .addr + MOVE .addr + BUTTONS .addr + POS .addr + INFO .addr + IOCTL .addr + IRQ .addr + .endstruct + FLAGS .byte ; Mouse driver flags + CALLBACKS .struct ; Jump instructions + .byte ; JMP opcode + CHIDE .addr ; Jump address + .byte + CSHOW .addr + .byte + CPREP .addr + .byte + CDRAW .addr + .byte + CMOVEX .addr + .byte + CMOVEY .addr + .endstruct +.endstruct + +;------------------------------------------------------------------------------ +; The mouse callback structure + +.struct MOUSE_CALLBACKS + HIDE .addr ; Hide the mouse cursor + SHOW .addr ; Show the mouse cursor + PREP .addr ; Prepare to move the mouse cursor + DRAW .addr ; Draw the mouse cursor + MOVEX .addr ; Move the mouse cursor to X coord + MOVEY .addr ; Move the mouse cursor to Y coord +.endstruct + +;------------------------------------------------------------------------------ +; The mouse API version, stored in MOUSE_HDR::VERSION + +MOUSE_API_VERSION = $06 + +;------------------------------------------------------------------------------ +; Bitmapped mouse driver flags, stored in MOUSE_HDR::FLAGS. +; Note: If neither of MOUSE_FLAG_XXX_IRQ is set, no interrupts are supplied +; to the driver. If one of the bits is set, the interrupt vector MUST be +; valid. +; Beware: Some of the bits are tested using the BIT instruction, so do not +; change the values without checking the code! + +MOUSE_FLAG_EARLY_IRQ = $40 ; Enable IRQ *before* calling INSTALL +MOUSE_FLAG_LATE_IRQ = $80 ; Enable IRQ *after* calling INSTALL + +;------------------------------------------------------------------------------ +; Mouse button definitions + +MOUSE_BTN_LEFT = $10 +MOUSE_BTN_RIGHT = $01 + +;------------------------------------------------------------------------------ +; Structures used to return data from the mouse driver + +.struct MOUSE_POS + XCOORD .word + YCOORD .word +.endstruct + +.struct MOUSE_INFO + POS .tag MOUSE_POS + BUTTONS .byte +.endstruct + +.struct MOUSE_BOX + MINX .word + MINY .word + MAXX .word + MAXY .word +.endstruct + +;------------------------------------------------------------------------------ +; Variables + + .global _mouse_drv ; Pointer to driver + .global _mouse_hidden ; Counter, 0 = mouse is visible + +;------------------------------------------------------------------------------ +; C callable functions + + .global _mouse_load_driver + .global _mouse_unload + .global _mouse_install + .global _mouse_uninstall + .global _mouse_geterrormsg + .global _mouse_hide + .global _mouse_show + .global _mouse_setbox + .global _mouse_getbox + .global _mouse_move + .global _mouse_buttons + .global _mouse_pos + .global _mouse_info + .global _mouse_ioctl + + .global _mouse_clear_ptr + +;------------------------------------------------------------------------------ +; Driver entry points (asm callable) + + .global mouse_install + .global mouse_uninstall + .global mouse_hide + .global mouse_show + .global mouse_setbox + .global mouse_getbox + .global mouse_move + .global mouse_buttons + .global mouse_pos + .global mouse_info + .global mouse_ioctl ;------------------------------------------------------------------------- ; Atari System Equates ; by Freddy Offenga, Christian Groessler, and Christian Krueger @@ -13294,6 +18579,7 @@ void joy_clear_ptr (void); ; - Atari OS manual - XL addendum ; - Atari XL/XE rev.2 source code, Atari 1984 ; - Mapping the Atari - revised edition, Ian Chadwick 1985 +; - SpartaDOS-X User Guide (Aug-8-2016) ; ; ##old## old OS rev.B label - moved or deleted ; ##1200xl## new label introduced in 1200XL OS (rev.10/11) @@ -14044,6 +19330,34 @@ FPSCR1 = $05EC ;6-byte floating point temporary DOS = $0700 +;------------------------------------------------------------------------- +; SpartaDOS-X Definitions +;------------------------------------------------------------------------- + +SDX_FLAG = DOS ; 'S' for SpartaDOS +SDX_VERSION = $0701 ; SD version (e.g. $32 = 3.2, $40 = 4.0) + ; address $0702 contains sub-version, e.g. + ; 8 in case of SDX 4.48 +SDX_KERNEL = $0703 ; SDX kernel entry point +SDX_BLOCK_IO = $0706 ; block I/O entry point +SDX_MISC = $0709 ; "misc" entry point +SDX_DEVICE = $0761 +SDX_DATE = $077B ; day, month, year (3 bytes) +SDX_TIME = $077E ; hour, min, sec (3 bytes) +SDX_DATESET = $0781 +SDX_PATH = $07A0 ; 64 bytes +SDX_IFSYMBOL = $07EB ; only valid on SDX 4.40 or newer +SDX_S_LOOKUP = SDX_IFSYMBOL ; alternative name for SDX_IFSYMBOL + +; values for SDX_DEVICE + +SDX_CLK_DEV = $10 ; clock device + +; clock device functions + +SDX_KD_GETTD = 100 ; get time and date +SDX_KD_SETTD = 101 ; set time and date + ;------------------------------------------------------------------------- ; Cartridge Address Equates ;------------------------------------------------------------------------- @@ -14089,6 +19403,104 @@ PDVS = $D1FF ;##rev2## parallel device select POKEY = $D200 ;POKEY area .include "atari_pokey.inc" +; POKEY KBCODE Values + +KEY_NONE = $FF + +KEY_0 = $32 +KEY_1 = $1F +KEY_2 = $1E +KEY_3 = $1A +KEY_4 = $18 +KEY_5 = $1D +KEY_6 = $1B +KEY_7 = $33 +KEY_8 = $35 +KEY_9 = $30 + +KEY_A = $3F +KEY_B = $15 +KEY_C = $12 +KEY_D = $3A +KEY_E = $2A +KEY_F = $38 +KEY_G = $3D +KEY_H = $39 +KEY_I = $0D +KEY_J = $01 +KEY_K = $05 +KEY_L = $00 +KEY_M = $25 +KEY_N = $23 +KEY_O = $08 +KEY_P = $0A +KEY_Q = $2F +KEY_R = $28 +KEY_S = $3E +KEY_T = $2D +KEY_U = $0B +KEY_V = $10 +KEY_W = $2E +KEY_X = $16 +KEY_Y = $2B +KEY_Z = $17 + +KEY_COMMA = $20 +KEY_PERIOD = $22 +KEY_SLASH = $26 +KEY_SEMICOLON = $02 +KEY_PLUS = $06 +KEY_ASTERISK = $07 +KEY_DASH = $0E +KEY_EQUALS = $0F +KEY_LESSTHAN = $36 +KEY_GREATERTHAN = $37 + +KEY_ESC = $1C +KEY_TAB = $2C +KEY_SPACE = $21 +KEY_RETURN = $0C +KEY_DELETE = $34 +KEY_CAPS = $3C +KEY_INVERSE = $27 +KEY_HELP = $11 + +KEY_F1 = $03 +KEY_F2 = $04 +KEY_F3 = $13 +KEY_F4 = $14 + +KEY_SHIFT = $40 +KEY_CTRL = $80 + +; Composed keys + +KEY_EXCLAMATIONMARK = KEY_1 | KEY_SHIFT +KEY_QUOTE = KEY_2 | KEY_SHIFT +KEY_HASH = KEY_3 | KEY_SHIFT +KEY_DOLLAR = KEY_4 | KEY_SHIFT +KEY_PERCENT = KEY_5 | KEY_SHIFT +KEY_AMPERSAND = KEY_6 | KEY_SHIFT +KEY_APOSTROPHE = KEY_7 | KEY_SHIFT +KEY_AT = KEY_8 | KEY_SHIFT +KEY_OPENINGPARAN = KEY_9 | KEY_SHIFT +KEY_CLOSINGPARAN = KEY_0 | KEY_SHIFT +KEY_UNDERLINE = KEY_DASH | KEY_SHIFT +KEY_BAR = KEY_EQUALS | KEY_SHIFT +KEY_COLON = KEY_SEMICOLON | KEY_SHIFT +KEY_BACKSLASH = KEY_PLUS | KEY_SHIFT +KEY_CIRCUMFLEX = KEY_ASTERISK | KEY_SHIFT +KEY_OPENINGBRACKET = KEY_COMMA | KEY_SHIFT +KEY_CLOSINGBRACKET = KEY_PERIOD | KEY_SHIFT +KEY_QUESTIONMARK = KEY_SLASH | KEY_SHIFT +KEY_CLEAR = KEY_LESSTHAN | KEY_SHIFT +KEY_INSERT = KEY_GREATERTHAN | KEY_SHIFT + +KEY_UP = KEY_UNDERLINE | KEY_CTRL +KEY_DOWN = KEY_EQUALS | KEY_CTRL +KEY_LEFT = KEY_PLUS | KEY_CTRL +KEY_RIGHT = KEY_ASTERISK | KEY_CTRL + ;------------------------------------------------------------------------- ; ANTIC Address Equates ;------------------------------------------------------------------------- @@ -14290,10 +19702,12 @@ diopp_size = 5 ; size of structure ;------------------------------------------------------------------------- SPARTADOS = 0 -OSADOS = 1 ; OS/A+ -XDOS = 2 -ATARIDOS = 3 -MYDOS = 4 +REALDOS = 1 +BWDOS = 2 +OSADOS = 3 ; OS/A+ +XDOS = 4 +ATARIDOS = 5 +MYDOS = 6 NODOS = 255 ; The DOSes with dos_type below or equal MAX_DOS_WITH_CMDLINE do support ; command line arguments. @@ -14325,332 +19739,6 @@ 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 */ @@ -14705,14 +19793,14 @@ CDR_MEM_ENABLE = $1807 ;/*****************************************************************************/ ;/* */ -;/* em-error.inc */ +;/* joy-kernel.inc */ ;/* */ -;/* EM error codes */ +;/* Internally used joystick functions */ ;/* */ ;/* */ ;/* */ -;/* (C) 2002-2012, Ullrich von Bassewitz */ -;/* Roemerstrasse 52 */ +;/* (C) 2002-2006, Ullrich von Bassewitz */ +;/* Rmerstrae 52 */ ;/* D-70794 Filderstadt */ ;/* EMail: uz@cc65.org */ ;/* */ @@ -14738,20 +19826,597 @@ CDR_MEM_ENABLE = $1807 -; Error constants -.enum - EM_ERR_OK ; No error - EM_ERR_NO_DRIVER ; No driver available - EM_ERR_CANNOT_LOAD ; Error loading driver - EM_ERR_INV_DRIVER ; Invalid driver - EM_ERR_NO_DEVICE ; Device (hardware) not found - EM_ERR_INSTALLED ; A driver is already installed - EM_ERR_COUNT ; Special: Number of error messages + + +;------------------------------------------------------------------------------ +; 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 +; 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 +;/*****************************************************************************/ +;/* */ +;/* 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 + + +;------------------------------------------------------------------------------ +; Struct timespec - must match the struct defined in time.h + +.struct timespec + tv_sec .dword + tv_nsec .dword +.endstruct + + +;------------------------------------------------------------------------------ +; Exported functions + +.global _clock_getres +.global _clock_gettime +.global _clock_settime +.global _localtime +.global _mktime +; +; Olli Savia +; +; Commodore Kernal functions +; + +.if .def(__CX16__) + ; CX16 extended jump table + GETJOY := $FF06 + MOUSE := $FF09 + SCRMOD := $FF5F +.endif + +.if .def(__C128__) + ; C128 extended jump table + C64MODE := $FF4D + SWAPPER := $FF5F + SETBNK := $FF68 +.endif + +.if .def(__C128__) || .def(__CX16__) + ; Extended jump table + CLSALL := $FF4A + JSRFAR := $FF6E + INDFET := $FF74 + INDSTA := $FF77 + INDCMP := $FF7A + PRIMM := $FF7D +.endif + +.if .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__) + CINT := $FF81 + IOINIT := $FF84 + RAMTAS := $FF87 +.elseif .def(__VIC20__) + CINT := $E518 ; No entries are in the Kernal jump table of the VIC-20 for these three (3) functions. + IOINIT := $FDF9 ; The entries for these functions have been set to point directly to the functions + RAMTAS := $FD8D ; in the Kernal, to maintain compatibility with the other Commodore platforms. +.elseif .def(__CBM510__) || .def(__CBM610__) + IOINIT := $FF7B + CINT := $FF7E +.endif + +.if .def(__VIC20__) || .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__) + RESTOR := $FF8A + VECTOR := $FF8D +.elseif .def(__CBM510__) || .def(__CBM610__) + VECTOR := $FF84 + RESTOR := $FF87 +.endif + +.if .def(__CBM510__) || .def(__CBM610__) || .def(__VIC20__) || .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__) + SETMSG := $FF90 + SECOND := $FF93 + TKSA := $FF96 + MEMTOP := $FF99 + MEMBOT := $FF9C + SCNKEY := $FF9F + SETTMO := $FFA2 + ACPTR := $FFA5 + CIOUT := $FFA8 + UNTLK := $FFAB + UNLSN := $FFAE + LISTEN := $FFB1 + TALK := $FFB4 + READST := $FFB7 + SETLFS := $FFBA + SETNAM := $FFBD + OPEN := $FFC0 + CLOSE := $FFC3 +.endif + +; Available on all platforms including PET +CHKIN := $FFC6 +CKOUT := $FFC9 +CHKOUT := $FFC9 +CLRCH := $FFCC +CLRCHN := $FFCC +BASIN := $FFCF +CHRIN := $FFCF +BSOUT := $FFD2 +CHROUT := $FFD2 + +.if .def(__CBM510__) || .def(__CBM610__) || .def(__VIC20__) || .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__) + LOAD := $FFD5 + SAVE := $FFD8 + SETTIM := $FFDB + RDTIM := $FFDE +.endif + +; Available on all platforms including PET +STOP := $FFE1 +GETIN := $FFE4 +CLALL := $FFE7 +UDTIM := $FFEA + +.if .def(__CBM510__) || .def(__CBM610__) || .def(__VIC20__) || .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__) + SCREEN := $FFED + PLOT := $FFF0 + IOBASE := $FFF3 +.endif + +; --------------------------------------------------------------------------- +; Kernal routines, direct entries +; +; Unlike the above, these are not standard functions with entries in the jump +; table. They do not exist in all Kernals, and where they do the entry point is +; specific to that particular machine and possibly even Kernal version. +; +; This list is not comprehensive: missing items for particular machines +; should be added as needed. +; +; UPDCRAMPTR: Updates the color RAM pointer to match the screen RAM pointer. +; + +.if .def(__VIC20__) + CLRSCR := $E55F + KBDREAD := $E5CF + UPDCRAMPTR := $EAB2 +.elseif .def(__C64__) + CLRSCR := $E544 + KBDREAD := $E5B4 + NMIEXIT := $FEBC + UPDCRAMPTR := $EA24 +.elseif .def(__C128__) + CLRSCR := $C142 + KBDREAD := $C006 + NMIEXIT := $FF33 + NEWLINE := $C363 + PRINT := $C322 + CURS_SET := $CD57 + CURS_ON := $CD6F + CURS_OFF := $CD9F +.elseif .def(__C16__) + CLRSCR := $D88B + KBDREAD := $D8C1 +.endif +; Convert characters to screen codes + +; Helper macro that converts and outputs one character +.macro _scrcode char + .if (char < 256) + .byte (char + 128) + .else + .error "scrcode: Character constant out of range" + .endif +.endmacro + +.macro scrcode arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 + + ; Bail out if next argument is empty + .if .blank (arg1) + .exitmacro + .endif + + ; Check for a string + .if .match ({arg1}, "") + + ; Walk over all string chars + .repeat .strlen (arg1), i + _scrcode {.strat (arg1, i)} + .endrepeat + + ; Check for a number + .elseif .match (.left (1, {arg1}), 0) + + ; Just output the number + _scrcode arg1 + + ; Check for a character + .elseif .match (.left (1, {arg1}), 'a') + + ; Just output the character + _scrcode arg1 + + ; Anything else is an error + .else + + .error "scrcode: invalid argument type" + + .endif + + ; Call the macro recursively with the remaining args + scrcode arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 +.endmacro +; +; Plus/4 generic definitions. +; + + +; --------------------------------------------------------------------------- +; 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 + +; --------------------------------------------------------------------------- +; Vector and other locations + +IRQVec := $0314 +BRKVec := $0316 +NMIVec := $0318 + +; --------------------------------------------------------------------------- +; Screen size + +XSIZE = 40 +YSIZE = 25 + +; --------------------------------------------------------------------------- +; I/O + +TED_T1LO := $FF00 +TED_T1HI := $FF01 +TED_T2LO := $FF02 +TED_T2HI := $FF03 +TED_T3LO := $FF04 +TED_T4HI := $FF05 +TED_MULTI1 := $FF07 +TED_KBD := $FF08 +TED_CURSHI := $FF0C +TED_CURSLO := $FF0D +TED_V1FRQLO := $FF0E +TED_V2FRQLO := $FF0F +TED_V2FRQHI := $FF10 +TED_CLK := $FF13 +TED_BGCOLOR := $FF15 +TED_COLOR1 := $FF16 +TED_COLOR2 := $FF17 +TED_COLOR3 := $FF18 +TED_BORDERCOLOR := $FF19 +TED_VLINEHI := $FF1C +TED_VLINELO := $FF1D +TED_HPOS := $FF1E +TED_ROMSEL := $FF3E +TED_RAMSEL := $FF3F + +; --------------------------------------------------------------------------- +; RAM/ROM selection addresses + +ENABLE_ROM := TED_ROMSEL +ENABLE_RAM := TED_RAMSEL +; Convert characters to screen codes + +; Helper macro that converts and outputs one character +.macro _scrcode char + .if (char >= 0) .and (char <= 31) + .byte (char + 64) + .elseif (char >= 32) .and (char <= 95) + .byte (char - 32) + .elseif (char >= 96) .and (char <= 127) + .byte char + .elseif (char >= 128) .and (char <= 159) + .byte (char + 64) + .elseif (char >= 160) .and (char <= 223) + .byte (char - 32) + .elseif (char >= 224) .and (char <= 255) + .byte char + .else + .error "scrcode: Character constant out of range" + .endif +.endmacro + +.macro scrcode arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 + + ; Bail out if next argument is empty + .if .blank (arg1) + .exitmacro + .endif + + ; Check for a string + .if .match ({arg1}, "") + + ; Walk over all string chars + .repeat .strlen (arg1), i + _scrcode {.strat (arg1, i)} + .endrepeat + + ; Check for a number + .elseif .match (.left (1, {arg1}), 0) + + ; Just output the number + _scrcode arg1 + + ; Check for a character + .elseif .match (.left (1, {arg1}), 'a') + + ; Just output the character + _scrcode arg1 + + ; Anything else is an error + .else + + .error "scrcode: invalid argument type" + + .endif + + ; Call the macro recursively with the remaining args + scrcode arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 +.endmacro + +; +; C16 generic definitions. +; +; The C16 and Plus/4 are identical, so just include the Plus/4 include file. + + +.include "plus4.inc" + + +; +; get_tv.inc +; +; Ullrich von Bassewitz, 2004-10-15 +; +; Defines for the get_tv function. + + + +; Error codes returned by all functions +.enum TV + NTSC + PAL + OTHER .endenum +; get_tv function + .global _get_tv + + +; +; PCE definitions. By Groepaz/Hitmen. +; + +; FIXME: Screen dimensions can change according to the selected video mode. +screenrows = (224/8) +charsperline = 61 + +CH_HLINE = 1 +CH_VLINE = 2 + +; HuC6270 -- Video Display Controller (VDC) + +VDC_MAWR = 0 ; Memory Address Write Register +VDC_MARR = 1 ; Memory Address Read Register +VDC_VWR = 2 ; VRAM Write Register +VDC_VRR = 2 ; VRAM Read Register +VDC_UNK03 = 3 ; (unknown) +VDC_UNK04 = 4 ; (unknown) +VDC_CR = 5 ; Control Register +VDC_RCR = 6 ; Raster Counter Register +VDC_BXR = 7 ; Background X-Scroll Register +VDC_BYR = 8 ; Background Y-Scroll Register +VDC_MWR = 9 ; Memory-access Width Register +VDC_HSR = 10 ; Horizontal Sync Register +VDC_HDR = 11 ; Horizontal Display Register +VDC_VSR = 12 ; Vertical sync Register +VDC_VDR = 13 ; Vertical Display register +VDC_VCR = 14 ; Vertical display END position register +VDC_DCR = 15 ; (DMA) Control Register +VDC_SOUR = 16 ; (DMA) Source Register +VDC_DESR = 17 ; (DMA) Destination Register +VDC_LENR = 18 ; (DMA) Length Register +VDC_SATB = 19 ; Sprite Attribute Table + +; VDC port +; Note: The zero-page addressing mode is redirected to page $20. +; We avoid it by using mirror locations that are outside of the zero page. + +VDC_CTRL := $0200 +VDC_DATA_LO := $0202 +VDC_DATA_HI := $0203 + +; HuC6260 -- Video Color Encoder (VCE) + +; The DAC has a palette of 512 colours. +; The bitmap of that data is 0000000gggrrrbbb (Green, Red, Blue). +; You can read and write the DAC registers. + +VCE := $0400 ; base + +VCE_CTRL := $0400 ; write $00 to reset +VCE_ADDR_LO := $0402 ; LSB of byte offset into palette +VCE_ADDR_HI := $0403 ; MSB of byte offset into palette +VCE_DATA_LO := $0404 ; LSB of 16-bit palette data +VCE_DATA_HI := $0405 ; MSB of 16-bit palette data + +; Programmable Sound Generator (PSG) + +PSG := $0800 ; base + +PSG_CHAN_SELECT := $0800 +PSG_GLOBAL_PAN := $0801 +PSG_FREQ_LO := $0802 +PSG_FREQ_HI := $0803 +PSG_CHAN_CTRL := $0804 +PSG_CHAN_PAN := $0805 +PSG_CHAN_DATA := $0806 +PSG_NOISE := $0807 +PSG_LFO_FREQ := $0808 +PSG_LFO_CTRL := $0809 + +; Timer + +TIMER := $0C00 ; base + +TIMER_COUNT := $0C00 +TIMER_CTRL := $0C01 + +JOY_CTRL := $1000 + +IRQ_MASK := $1402 +IRQ_STATUS := $1403 + +CDR_MEM_DISABLE := $1803 +CDR_MEM_ENABLE := $1807 + +; Write to a VDC register. +.macro VREG arg1, arg2 + st0 #arg1 + st1 #<(arg2) + st2 #>(arg2) +.endmacro ;* ;** VTech Creativision Definitions ;* @@ -14813,137 +20478,222 @@ 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. */ -;/* */ -;/*****************************************************************************/ +; +; 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 -;------------------------------------------------------------------------------ -; The driver header +ExecReg := $00 ; Controls execution memory bank +IndReg := $01 ; Controls indirect indexed load-store bank -.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 +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 -;------------------------------------------------------------------------------ -; The EMD API version, stored in EMD_HDR::VERSION -EMD_API_VERSION = $02 +; I/O $db00: CIA 6526, Inter Process Communication +; +; IPCcia = $db00 -;------------------------------------------------------------------------------ -; 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 +.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 -;------------------------------------------------------------------------------ -; 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 +; I/O $dc00: CIA 6526 ; -; zeropage.inc +; cia = $dc00 + + +; I/O $dd00: ACIA 6551 ; -; (C) Copyright 2002-2012, Ullrich von Bassewitz (uz@cc65.org) +; acia = $dd00 + +.struct ACIA + DATA .byte + STATUS .byte + CMD .byte + CTRL .BYTE +.endstruct + + +; I/O $de00: Triport #1 6525 +; +; tpi1 = $de00 + +.struct TPI + PRA .byte + PRB .byte + .union + PRC .byte + INT .byte + .endunion + DDRA .byte + DDRB .byte + .union + DDRC .byte + IMR .byte + .endunion + CR .byte + AIR .byte +.endstruct + + +; I/O $df00: Triport #2 6525 + +; tpi2 = $df00 + + +;----------------------------------------------------------------------------- + +BASIC_BUF := $FA5E ; Bank 1 location of command-line +BASIC_BUF_LEN = 162 ; Maximum length of command-line + +;----------------------------------------------------------------------------- +; Zero page 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 +; +; Definitions for CBM file types. From cbm.h +; +; Ullrich von Bassewitz, 2012-06-03 ; -; Assembler include file that imports the runtime zero page locations used -; by the compiler, ready for usage in asm code. +; 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 - .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 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); -; The total amount of zero page space used -zpspace = 26 + .global __cbm_filetype -; The amount of space that needs to be saved by an interrupt handler that -; calls C code (does not include the register bank, which is saved by the -; generated C code if required). -zpsavespace = zpspace - regbanksize ; Lynx system hardware includes ; Shawn Jefferson @@ -15224,699 +20974,6 @@ RSTVECTH = $FFFD NMIVECTL = $FFFA NMIVECTH = $FFFB -;*****************************************************************************/ -;* */ -;* tgi-kernel.inc */ -;* */ -;* TGI kernel interface */ -;* */ -;* */ -;* */ -;* (C) 2002-2012, Ullrich von Bassewitz */ -;* Roemerstrasse 52 */ -;* D-70794 Filderstadt */ -;* EMail: uz@cc65.org */ -;* */ -;* */ -;* This software is provided 'as-is', without any expressed or implied */ -;* warranty. In no event will the authors be held liable for any damages */ -;* arising from the use of this software. */ -;* */ -;* Permission is granted to anyone to use this software for any purpose, */ -;* including commercial applications, and to alter it and redistribute it */ -;* freely, subject to the following restrictions: */ -;* */ -;* 1. The origin of this software must not be misrepresented; you must not */ -;* claim that you wrote the original software. If you use this software */ -;* in a product, an acknowledgment in the product documentation would be */ -;* appreciated but is not required. */ -;* 2. Altered source versions must be plainly marked as such, and must not */ -;* be misrepresented as being the original software. */ -;* 3. This notice may not be removed or altered from any source */ -;* distribution. */ -;* */ -;*****************************************************************************/ - - - -;------------------------------------------------------------------------------ -; The driver header - -.struct TGI_HDR - ID .byte 3 ; Contains 0x74, 0x67, 0x69 ("tgi") - VERSION .byte 1 ; Interface version - LIBREF .addr ; Library reference - VARS .struct - XRES .word 1 ; X resolution - YRES .word 1 ; Y resolution - COLORCOUNT .byte 1 ; Number of available colors - PAGECOUNT .byte 1 ; Number of screens available - FONTWIDTH .byte 1 ; System font width in pixel - FONTHEIGHT .byte 1 ; System font height in pixel - ASPECTRATIO .word 1 ; Fixed point 8.8 format - FLAGS .byte 1 ; TGI driver flags - .endstruct - JUMPTAB .struct - INSTALL .addr ; INSTALL routine - UNINSTALL .addr ; UNINSTALL routine - INIT .addr ; INIT routine - DONE .addr ; DONE routine - GETERROR .addr ; GETERROR routine - CONTROL .addr ; CONTROL routine - CLEAR .addr ; CLEAR routine - SETVIEWPAGE .addr ; SETVIEWPAGE routine - SETDRAWPAGE .addr ; SETDRAWPAGE routine - SETCOLOR .addr ; SETCOLOR routine - SETPALETTE .addr ; SETPALETTE routine - GETPALETTE .addr ; GETPALETTE routine - GETDEFPALETTE .addr ; GETDEFPALETTE routine - SETPIXEL .addr ; SETPIXEL routine - GETPIXEL .addr ; GETPIXEL routine - LINE .addr ; LINE routine - BAR .addr ; BAR routine - TEXTSTYLE .addr ; TEXTSTYLE routine - OUTTEXT .addr ; OUTTEXT routine - .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 ;------------------------------------------------------------------------- @@ -16012,18 +21069,82 @@ DL_LMS = 64 ; general modifier... DL_DLI = 128 +;------------------------------------------------------------------------------- +; gamate.inc +; +; Gamate system specific definitions +; +; (w) 2015 Groepaz/Hitmen (groepaz@gmx.net) +; based on technical reference by PeT (mess@utanet.at) +;------------------------------------------------------------------------------- + +; look at gamate.h for comments, they are not duplicated here + +AUDIO_BASE = $4000 + +JOY_DATA = $4400 + +JOY_DATA_UP = $01 +JOY_DATA_DOWN = $02 +JOY_DATA_LEFT = $04 +JOY_DATA_RIGHT = $08 +JOY_DATA_FIRE_A = $10 +JOY_DATA_FIRE_B = $20 +JOY_DATA_START = $40 +JOY_DATA_SELECT = $80 + +LCD_WIDTH = 160 +LCD_HEIGHT = 152 + +LCD_BASE = $5000 +LCD_MODE = $5001 +LCD_XPOS = $5002 +LCD_YPOS = $5003 +LCD_X = $5004 +LCD_Y = $5005 +LCD_READ = $5006 +LCD_DATA = $5007 + +LCD_MODE_INC_X = $00 +LCD_MODE_INC_Y = $40 +LCD_XPOS_PLANE1 = $00 +LCD_XPOS_PLANE2 = $80 + +; constants for the conio implementation +charsperline = (LCD_WIDTH / 8) +screenrows = (LCD_HEIGHT / 8) + +CH_HLINE = 1 +CH_VLINE = 2 + +COLOR_WHITE = 0 +COLOR_GREY2 = 1 +COLOR_GREY1 = 2 +COLOR_BLACK = 3 + +; bios zp usage: +ZP_NMI_4800 = $0a +ZP_IRQ_COUNT = $0b +ZP_IRQ_CTRL = $0c + +ZP_IRQ_CNT1 = $0e +ZP_IRQ_CNT2 = $0f +ZP_IRQ_CNT3 = $10 +ZP_IRQ_CNT4 = $11 + +ZP_NMI_FLAG = $e8 ;/*****************************************************************************/ ;/* */ -;/* signal.inc */ +;/* em-kernel.inc */ ;/* */ -;/* Signal handling definitions */ +;/* EM kernel interface */ ;/* */ ;/* */ ;/* */ -;/* (C) 2002 Ullrich von Bassewitz */ -;/* Wacholderweg 14 */ -;/* D-70597 Stuttgart */ -;/* EMail: uz@musoftware.de */ +;/* (C) 2002-2003 Ullrich von Bassewitz */ +;/* Rmerstrasse 52 */ +;/* D-70794 Filderstadt */ +;/* EMail: uz@cc65.org */ ;/* */ ;/* */ ;/* This software is provided 'as-is', without any expressed or implied */ @@ -16047,367 +21168,89 @@ DL_DLI = 128 -; Standard signal handling functions -SIG_ERR = $0000 +;------------------------------------------------------------------------------ +; The driver header -; Signal numbers -SIGABRT = 0 -SIGFPE = 1 -SIGILL = 2 -SIGINT = 3 -SIGSEGV = 4 -SIGTERM = 5 -SIGCOUNT = 6 ; Number of signals +.struct EMD_HDR + ID .byte 3 ; Contains 0x65, 0x6d, 0x64 ("emd") + VERSION .byte 1 ; Interface version + LIBREF .addr ; Library reference + JUMPTAB .struct + INSTALL .addr ; INSTALL routine + UNINSTALL .addr ; UNINSTALL routine + PAGECOUNT .addr ; PAGECOUNT routine + MAP .addr ; MAP routine + USE .addr ; USE routine + MAPCLEAN .addr ; MAPCLEAN routine + COPYFROM .addr ; COPYFROM routine + COPYTO .addr ; COPYTO routine + .endstruct +.endstruct -; Table with signal handlers (asm code only) -.global sigtable +;------------------------------------------------------------------------------ +; The EMD API version, stored in EMD_HDR::VERSION -; Function declarations -.global __sig_ign -.global __sig_dfl -.global _signal -.global _raise +EMD_API_VERSION = $02 +;------------------------------------------------------------------------------ +; The asm equivalent to the C em_copy structure -; -; C128 generic definitions. Stolen from Elite128 -; +.struct EM_COPY + BUF .addr ; Memory buffer to copy from or to + OFFS .byte ; Offset into page + PAGE .word ; Starting page to copy from or to + COUNT .word ; Number of bytes to copy + UNUSED .byte ; Make the size 8 bytes +.endstruct +;------------------------------------------------------------------------------ +; Variables -; --------------------------------------------------------------------------- -; Zero page, Commodore stuff + .global _em_drv ; Pointer to driver -TXTPTR := $3D ; Pointer into BASIC source code -TIME := $A0 ; 60HZ clock -FNAM_LEN := $B7 ; Length of filename -SECADR := $B9 ; Secondary address -DEVNUM := $BA ; Device number -FNAM := $BB ; Address of filename -FNAM_BANK := $C7 ; Bank for filename -KEY_COUNT := $D0 ; Number of keys in input buffer -FKEY_COUNT := $D1 ; Characters for function key -MODE := $D7 ; 40-/80-column mode (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 +;------------------------------------------------------------------------------ +; Driver entry points + + .global emd_install + .global emd_uninstall + .global emd_pagecount + .global emd_map + .global emd_use + .global emd_commit + .global emd_copyfrom + .global emd_copyto -CHARCOLOR := $F1 -RVS := $F3 ; Reverse output flag -SCROLL := $F8 ; Disable scrolling flag +;------------------------------------------------------------------------------ +; ASM functions -BASIC_BUF := $200 ; Location of command-line -BASIC_BUF_LEN = 162 ; Maximum length of command-line + .global em_clear_ptr -FETCH := $2A2 ; Fetch subroutine in RAM -FETVEC := $2AA ; Vector patch location for FETCH -STASH := $2AF ; Stash routine in RAM -STAVEC := $2B9 ; Vector patch location for STASH -IRQInd := $2FD ; JMP $0000 -- used as indirect IRQ vector -PALFLAG := $A03 ; $FF=PAL, $00=NTSC -INIT_STATUS := $A04 ; Flags: Reset/Restore initiation status -FKEY_LEN := $1000 ; Function key lengths -FKEY_TEXT := $100A ; Function key texts +;------------------------------------------------------------------------------ +; C callable functions -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 + .global _em_load_driver + .global _em_unload + .global _em_install + .global _em_uninstall + .global _em_pagecount + .global _em_map + .global _em_use + .global _em_commit + .global _em_copyfrom + .global _em_copyto ;/*****************************************************************************/ ;/* */ -;/* joy-error.inc */ +;/* em-error.inc */ ;/* */ -;/* Joystick error codes */ +;/* EM error codes */ ;/* */ ;/* */ ;/* */ -;/* (C) 2002 Ullrich von Bassewitz */ -;/* Wacholderweg 14 */ -;/* D-70597 Stuttgart */ -;/* EMail: uz@musoftware.de */ +;/* (C) 2002-2012, Ullrich von Bassewitz */ +;/* Roemerstrasse 52 */ +;/* D-70794 Filderstadt */ +;/* EMail: uz@cc65.org */ ;/* */ ;/* */ ;/* This software is provided 'as-is', without any expressed or implied */ @@ -16431,12 +21274,17 @@ CH_ESC = 27 -; Error codes -JOY_ERR_OK = 0 ; No error -JOY_ERR_NO_DRIVER = 1 ; No driver available -JOY_ERR_CANNOT_LOAD = 2 ; Error loading driver -JOY_ERR_INV_DRIVER = 3 ; Invalid driver -JOY_ERR_NO_DEVICE = 4 ; Device (hardware) not found +; Error constants +.enum + EM_ERR_OK ; No error + EM_ERR_NO_DRIVER ; No driver available + EM_ERR_CANNOT_LOAD ; Error loading driver + EM_ERR_INV_DRIVER ; Invalid driver + EM_ERR_NO_DEVICE ; Device (hardware) not found + EM_ERR_INSTALLED ; A driver is already installed + + EM_ERR_COUNT ; Special: Number of error messages +.endenum @@ -16483,15 +21331,15 @@ JOY_ERR_NO_DEVICE = 4 ; Device (hardware) not found VERSION .byte 1 ; Interface version LIBREF .addr ; Library reference JUMPTAB .struct - INSTALL .addr ; INSTALL routine - UNINSTALL .addr ; UNINSTALL routine - OPEN .addr ; OPEN routine - CLOSE .addr ; CLOSE routine - GET .addr ; GET routine - PUT .addr ; PUT routine - STATUS .addr ; STATUS routine - IOCTL .addr ; IOCTL routine - IRQ .addr ; IRQ routine + SER_INSTALL .addr ; SER_INSTALL routine + SER_UNINSTALL .addr ; SER_UNINSTALL routine + SER_OPEN .addr ; SER_OPEN routine + SER_CLOSE .addr ; SER_CLOSE routine + SER_GET .addr ; SER_GET routine + SER_PUT .addr ; SER_PUT routine + SER_STATUS .addr ; SER_STATUS routine + SER_IOCTL .addr ; SER_IOCTL routine + SER_IRQ .addr ; SER_IRQ routine .endstruct .endstruct @@ -16602,6 +21450,51 @@ SER_STATUS_DSR = $40 ; NOT data set ready .global _ser_ioctl .global _ser_clear_ptr +;/*****************************************************************************/ +;/* */ +;/* utsname.inc */ +;/* */ +;/* Return system information */ +;/* */ +;/* */ +;/* */ +;/* (C) 2003 Ullrich von Bassewitz */ +;/* 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 + + ; ; C64 generic definitions. Stolen from Elite128 @@ -16642,14 +21535,6 @@ KBDREPEAT := $28a KBDREPEATRATE := $28b KBDREPEATDELAY := $28c -; --------------------------------------------------------------------------- -; Kernal routines - -; Direct entries -CLRSCR := $E544 -KBDREAD := $E5B4 -NMIEXIT := $FEBC - ; --------------------------------------------------------------------------- ; Vector and other locations @@ -16827,271 +21712,6 @@ CASSMOT = $20 ; Cassette motor on TP_FAST = $80 ; Switch Rossmoeller TurboProcess to fast mode RAMONLY = $F8 ; (~(LORAM | HIRAM | IOEN)) & $FF -; Convert characters to screen codes - -; Helper macro that converts and outputs one character -.macro _scrcode char - .if (char < 256) - .byte (char + 128) - .else - .error "scrcode: Character constant out of range" - .endif -.endmacro - -.macro scrcode arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 - - ; Bail out if next argument is empty - .if .blank (arg1) - .exitmacro - .endif - - ; Check for a string - .if .match ({arg1}, "") - - ; Walk over all string chars - .repeat .strlen (arg1), i - _scrcode {.strat (arg1, i)} - .endrepeat - - ; Check for a number - .elseif .match (.left (1, {arg1}), 0) - - ; Just output the number - _scrcode arg1 - - ; Check for a character - .elseif .match (.left (1, {arg1}), 'a') - - ; Just output the character - _scrcode arg1 - - ; Anything else is an error - .else - - .error "scrcode: invalid argument type" - - .endif - - ; Call the macro recursively with the remaining args - scrcode arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 -.endmacro -; 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 ; @@ -17113,624 +21733,6 @@ 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 ; @@ -17929,153 +21931,508 @@ COLOR_RAM := $D400 ; System bank BASIC_BUF := $FB5E ; Bank 0 location of command-line BASIC_BUF_LEN = 162 ; Maximum length of command-line -;------------------------------------------------------------------------------- -; gamate.inc ; -; Gamate system specific definitions +; Oric Atmos definitions +; BASIC 1.1 addresses ; -; (w) 2015 Groepaz/Hitmen (groepaz@gmx.net) -; based on technical reference by PeT (mess@utanet.at) -;------------------------------------------------------------------------------- - -; look at gamate.h for comments, they are not duplicated here - -AUDIO_BASE = $4000 - -JOY_DATA = $4400 - -JOY_DATA_UP = $01 -JOY_DATA_DOWN = $02 -JOY_DATA_LEFT = $04 -JOY_DATA_RIGHT = $08 -JOY_DATA_FIRE_A = $10 -JOY_DATA_FIRE_B = $20 -JOY_DATA_START = $40 -JOY_DATA_SELECT = $80 - -LCD_WIDTH = 160 -LCD_HEIGHT = 152 - -LCD_BASE = $5000 -LCD_MODE = $5001 -LCD_XPOS = $5002 -LCD_YPOS = $5003 -LCD_X = $5004 -LCD_Y = $5005 -LCD_READ = $5006 -LCD_DATA = $5007 - -LCD_MODE_INC_X = $00 -LCD_MODE_INC_Y = $40 -LCD_XPOS_PLANE1 = $00 -LCD_XPOS_PLANE2 = $80 - -; constants for the conio implementation -charsperline = (LCD_WIDTH / 8) -screenrows = (LCD_HEIGHT / 8) - -CH_HLINE = 1 -CH_VLINE = 2 - -COLOR_WHITE = 0 -COLOR_GREY2 = 1 -COLOR_GREY1 = 2 -COLOR_BLACK = 3 - -; bios zp usage: -ZP_NMI_4800 = $0a -ZP_IRQ_COUNT = $0b -ZP_IRQ_CTRL = $0c - -ZP_IRQ_CNT1 = $0e -ZP_IRQ_CNT2 = $0f -ZP_IRQ_CNT3 = $10 -ZP_IRQ_CNT4 = $11 - -ZP_NMI_FLAG = $e8 -;*****************************************************************************/ -;* */ -;* tgi-vectorfont.inc */ -;* */ -;* TGI vector font definitions */ -;* */ -;* */ -;* */ -;* (C) 2009, Ullrich von Bassewitz */ -;* Roemerstrasse 52 */ -;* D-70794 Filderstadt */ -;* EMail: uz@cc65.org */ -;* */ -;* */ -;* This software is provided 'as-is', without any expressed or implied */ -;* warranty. In no event will the authors be held liable for any damages */ -;* arising from the use of this software. */ -;* */ -;* Permission is granted to anyone to use this software for any purpose, */ -;* including commercial applications, and to alter it and redistribute it */ -;* freely, subject to the following restrictions: */ -;* */ -;* 1. The origin of this software must not be misrepresented; you must not */ -;* claim that you wrote the original software. If you use this software */ -;* in a product, an acknowledgment in the product documentation would be */ -;* appreciated but is not required. */ -;* 2. Altered source versions must be plainly marked as such, and must not */ -;* be misrepresented as being the original software. */ -;* 3. This notice may not be removed or altered from any source */ -;* distribution. */ -;* */ -;*****************************************************************************/ +; --------------------------------------------------------------------------- +; Constants -;------------------------------------------------------------------------------ -; Vectorfont constants +SCREEN_XSIZE = 40 ; screen columns +SCREEN_YSIZE = 28 ; screen rows -TGI_VF_VERSION = $00 ; File version number -TGI_VF_FIRSTCHAR = $20 ; First char in file -TGI_VF_LASTCHAR = $7E ; Last char in file -TGI_VF_CCOUNT = (TGI_VF_LASTCHAR - TGI_VF_FIRSTCHAR + 1) +FUNCTKEY = $A5 -;------------------------------------------------------------------------------ -; TCH file header and font data structures +FNAME_LEN = 16 ; maximum length of file-name -; TCH file header -.struct TGI_VF_HDR - MAGIC .byte 3 ; "TCH" - VERSION .byte 1 ; Version number - SIZE .word 1 ; Font data size + +; --------------------------------------------------------------------------- +; Zero page + +SCRPTR := $12 +BASIC_BUF := $35 +CHARGOT := $E8 +TXTPTR := $E9 + + +; --------------------------------------------------------------------------- +; Low memory + +MODEKEY := $0209 +CAPSLOCK := $020C ; $7F = not locked, $FF = locked +PATTERN := $0213 +IRQVec := $0245 ; "fast" interrupt vector +JOINFLAG := $025A ; 0 = don't joiu, $4A = join BASIC programs +VERIFYFLAG := $025B ; 0 = load, 1 = verify +CURS_Y := $0268 +CURS_X := $0269 +STATUS := $026A +BACKGRND := $026B +FOREGRND := $026C +TIMER3 := $0276 +CFILE_NAME := $027F +CFOUND_NAME := $0293 +FILESTART := $02A9 +FILEEND := $02AB +AUTORUN := $02AD ; $00 = only load, $C7 = autorun +LANGFLAG := $02AE ; $00 = BASIC, $80 = machine code +LOADERR := $02B1 +KEYBUF := $02DF +PARMERR := $02E0 +PARAM1 := $02E1 ; & $02E2 +PARAM2 := $02E3 ; & $02E4 +PARAM3 := $02E5 ; & $02E6 +BANGVEC := $02F5 + + +; --------------------------------------------------------------------------- +; I/O locations + +; 6522 +.struct VIA ; Versatile Interface Adapter + .res $0300 +PRB .byte ; Port Register B +PRA .byte ; Port Register A +DDRB .byte ; Data Direction Register B +DDRA .byte ; Data Direction Register A +T1 .word ; Timer 1 +T1L .word ; Timer 1 Latch +T2 .word ; Timer 2 +SR .byte ; Shift Register +ACR .byte ; Auxiliary Control Register +PCR .byte ; Peripheral Control Register +IFR .byte ; Interrupt Flags Register +IER .byte ; Interrupt Enable Register +PRA2 .byte ; Port Register A without handshaking .endstruct -; Font data loaded directly from file -.struct TGI_VECTORFONT - TOP .byte ; Height of char - BOTTOM .byte ; Descender - HEIGHT .byte ; Maximum char height - WIDTHS .byte ::TGI_VF_CCOUNT ; Char widths - CHARS .word ::TGI_VF_CCOUNT ; Pointer to character defs - OPS .byte ; Actually dynamic +; 6551 +.struct ACIA ; Asynchronous Communications Interface Adapter + .res $031C +DATA .byte +STATUS .byte +CMD .byte ; Command register +CTRL .byte ; Control register .endstruct -;------------------------------------------------------------------------------ -; C callable functions - - .global _tgi_vectorchar +SCREEN := $BB80 +; --------------------------------------------------------------------------- +; ROM entries -.ifndef DYN_DRV - DYN_DRV = 1 -.endif +GETLINE := $C592 +TEXT := $EC21 +HIRES := $EC33 +CURSET := $F0C8 +CURMOV := $F0FD +DRAW := $F110 +CHAR := $F12D +POINT := $F1C8 +PAPER := $F204 +INK := $F210 +PRINT := $F77C -.macro module_header module_label - .if DYN_DRV - .segment "HEADER" +; Sound Effects +PING := $FA9F +PING1 := $FA85 +SHOOT := $FAB5 +SHOOT1 := $FA9B +EXPLODE := $FACB +EXPLODE1 := $FAB1 +ZAP := $FAE1 +ZAP1 := $FAC7 +TICK := $FB14 +TICK1 := $FAFA +TOCK := $FB2A +TOCK1 := $FB10 +; Atari 2600 TIA & RIOT read / write registers +; +; Florent Flament (contact@florentflament.com), 2017 + +; TIA & RIOT registers mapping +.include "atari2600_tia.inc" +.include "atari2600_riot.inc" +; +; Ullrich von Bassewitz, 16.05.2000 +; + +; Variables and functions + + .global __errno, __oserror + .global __osmaperrno + .global __seterrno + .global __directerrno, __mappederrno + +; Error codes, must match the values in the C headers +.enum + EOK ; No error + ENOENT ; No such file or directory + ENOMEM ; Out of memory + EACCES ; Permission denied + ENODEV ; No such device + EMFILE ; Too many open files + EBUSY ; Device or resource busy + EINVAL ; Invalid argument + ENOSPC ; No space left on device + EEXIST ; File exists + EAGAIN ; Try again + EIO ; I/O error + EINTR ; Interrupted system call + ENOSYS ; Function not implemented + ESPIPE ; Illegal seek + ERANGE ; Range error + EBADF ; Bad file number + ENOEXEC ; Exec format error + EUNKNOWN ; Unknown OS specific error - must be last! + + EMAX = EUNKNOWN ; Highest error code +.endenum + + +; Convert characters to screen codes + +; Macro that converts one character. +; scrbyte() can be used as an instruction operand +.define scrbyte(code) (<(.strat ("h@dbdlhh", code >> 5) << 4) ^ code) + +; Helper macro that stores one character +.macro _scrcode char + .if (char < 256) + .byte scrbyte {char} .else - .data - .export module_label - module_label: + .error "scrcode: Character constant out of range" .endif .endmacro + +.macro scrcode arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 + + ; Bail out if next argument is empty + .if .blank ({arg1}) + .exitmacro + .endif + + ; Check for a string + .if .match ({arg1}, "") + + ; Walk over all string chars + .repeat .strlen (arg1), i + _scrcode {.strat (arg1, i)} + .endrepeat + + ; Check for a number + .elseif .match (.left (1, {arg1}), 0) + + ; Just output the number + _scrcode arg1 + + ; Check for a character + .elseif .match (.left (1, {arg1}), 'a') + + ; Just output the character + _scrcode arg1 + + ; Anything else is an error + .else + .error "scrcode: invalid argument type" + .endif + + ; Call the macro recursively with the remaining args + scrcode arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 +.endmacro +; +; zeropage.inc +; +; (C) Copyright 2002-2012, Ullrich von Bassewitz (uz@cc65.org) +; + +; Assembler include file that imports the runtime zero page locations used +; by the compiler, ready for usage in asm code. + + + .globalzp sp, sreg, regsave + .globalzp ptr1, ptr2, ptr3, ptr4 + .globalzp tmp1, tmp2, tmp3, tmp4 + .globalzp regbank + +; The size of the register bank +regbanksize = 6 + +; The total amount of zero page space used +zpspace = 26 + +; The amount of space that needs to be saved by an interrupt handler that +; calls C code (does not include the register bank, which is saved by the +; generated C code if required). +zpsavespace = zpspace - regbanksize + +;------------------------------------------------------------------------- +; CTIA/GTIA Address Equates +;------------------------------------------------------------------------- + +; Read/Write Addresses + +CONSOL = GTIA + $1F ;console switches and speaker control + +; Read Addresses + +M0PF = GTIA + $00 ;missile 0 and playfield collision +M1PF = GTIA + $01 ;missile 1 and playfield collision +M2PF = GTIA + $02 ;missile 2 and playfield collision +M3PF = GTIA + $03 ;missile 3 and playfield collision + +P0PF = GTIA + $04 ;player 0 and playfield collision +P1PF = GTIA + $05 ;player 1 and playfield collision +P2PF = GTIA + $06 ;player 2 and playfield collision +P3PF = GTIA + $07 ;player 3 and playfield collision + +M0PL = GTIA + $08 ;missile 0 and player collision +M1PL = GTIA + $09 ;missile 1 and player collision +M2PL = GTIA + $0A ;missile 2 and player collision +M3PL = GTIA + $0B ;missile 3 and player collision + +P0PL = GTIA + $0C ;player 0 and player collision +P1PL = GTIA + $0D ;player 1 and player collision +P2PL = GTIA + $0E ;player 2 and player collision +P3PL = GTIA + $0F ;player 3 and player collision + +TRIG0 = GTIA + $10 ;joystick trigger 0 +TRIG1 = GTIA + $11 ;joystick trigger 1 + +TRIG2 = GTIA + $12 ;cartridge interlock +TRIG3 = GTIA + $13 ;ACMI module interlock + +PAL = GTIA + $14 ;##rev2## PAL/NTSC indicator + +; Write Addresses + +HPOSP0 = GTIA + $00 ;player 0 horizontal position +HPOSP1 = GTIA + $01 ;player 1 horizontal position +HPOSP2 = GTIA + $02 ;player 2 horizontal position +HPOSP3 = GTIA + $03 ;player 3 horizontal position + +HPOSM0 = GTIA + $04 ;missile 0 horizontal position +HPOSM1 = GTIA + $05 ;missile 1 horizontal position +HPOSM2 = GTIA + $06 ;missile 2 horizontal position +HPOSM3 = GTIA + $07 ;missile 3 horizontal position + +SIZEP0 = GTIA + $08 ;player 0 size +SIZEP1 = GTIA + $09 ;player 1 size +SIZEP2 = GTIA + $0A ;player 2 size +SIZEP3 = GTIA + $0B ;player 3 size + +SIZEM = GTIA + $0C ;missile sizes + +GRAFP0 = GTIA + $0D ;player 0 graphics +GRAFP1 = GTIA + $0E ;player 1 graphics +GRAFP2 = GTIA + $0F ;player 2 graphics +GRAFP3 = GTIA + $10 ;player 3 graphics + +GRAFM = GTIA + $11 ;missile graphics + +COLPM0 = GTIA + $12 ;player-missile 0 color/luminance +COLPM1 = GTIA + $13 ;player-missile 1 color/luminance +COLPM2 = GTIA + $14 ;player-missile 2 color/luminance +COLPM3 = GTIA + $15 ;player-missile 3 color/luminance + +COLPF0 = GTIA + $16 ;playfield 0 color/luminance +COLPF1 = GTIA + $17 ;playfield 1 color/luminance +COLPF2 = GTIA + $18 ;playfield 2 color/luminance +COLPF3 = GTIA + $19 ;playfield 3 color/luminance + +COLBK = GTIA + $1A ;background color/luminance + +PRIOR = GTIA + $1B ;priority select +VDELAY = GTIA + $1C ;vertical delay +GRACTL = GTIA + $1D ;graphic control +HITCLR = GTIA + $1E ;collision clear + + +; Hue values + +HUE_GREY = 0 +HUE_GOLD = 1 +HUE_GOLDORANGE = 2 +HUE_REDORANGE = 3 +HUE_ORANGE = 4 +HUE_MAGENTA = 5 +HUE_PURPLE = 6 +HUE_BLUE = 7 +HUE_BLUE2 = 8 +HUE_CYAN = 9 +HUE_BLUEGREEN = 10 +HUE_BLUEGREEN2 = 11 +HUE_GREEN = 12 +HUE_YELLOWGREEN = 13 +HUE_YELLOW = 14 +HUE_YELLOWRED = 15 + +; Color defines, similar to c64 colors (untested) + +GTIA_COLOR_BLACK = (HUE_GREY << 4) +GTIA_COLOR_WHITE = (HUE_GREY << 4 | 7 << 1) +GTIA_COLOR_RED = (HUE_REDORANGE << 4 | 1 << 1) +GTIA_COLOR_CYAN = (HUE_CYAN << 4 | 3 << 1) +GTIA_COLOR_VIOLET = (HUE_PURPLE << 4 | 4 << 1) +GTIA_COLOR_GREEN = (HUE_GREEN << 4 | 2 << 1) +GTIA_COLOR_BLUE = (HUE_BLUE << 4 | 2 << 1) +GTIA_COLOR_YELLOW = (HUE_YELLOW << 4 | 7 << 1) +GTIA_COLOR_ORANGE = (HUE_ORANGE << 4 | 5 << 1) +GTIA_COLOR_BROWN = (HUE_YELLOW << 4 | 2 << 1) +GTIA_COLOR_LIGHTRED = (HUE_REDORANGE << 4 | 6 << 1) +GTIA_COLOR_GRAY1 = (HUE_GREY << 4 | 2 << 1) +GTIA_COLOR_GRAY2 = (HUE_GREY << 4 | 3 << 1) +GTIA_COLOR_LIGHTGREEN = (HUE_GREEN << 4 | 6 << 1) +GTIA_COLOR_LIGHTBLUE = (HUE_BLUE << 4 | 6 << 1) +GTIA_COLOR_GRAY3 = (HUE_GREY << 4 | 5 << 1) +; supervision symbols + +; supervision 65c02s +; in cc65 up to 2.9.1 65c02 means 65sc02 + +lcd_addr = $4000 +LCD_LINESIZE = $30 +LCD_WIDTH = 160 +LCD_HEIGHT = 160 +; 2 bit per pixel, packed + +lcd_width = $2000 +lcd_height = $2001 +lcd_xpos = $2002 ; in pixel, bit 0+1 not used +lcd_ypos = $2003 ; weird + +sv_port_r = $2021 +sv_port_w = $2022 + +sv_timer_count = $2023 +; read for quitting +sv_timer_quit = $2024 + +; bit 0 timer, bit 1 dma +sv_irq_source = $2027 +SV_IRQ_REQUEST_TIMER = 1 +SV_IRQ_REQUEST_DMA = 2 + +; bit 5,6,7 select bank at 0x8000 +sv_bank = $2026 +SV_NMI_ENABLE_ON = 1 +SV_IRQ_ENABLE_TIMER = 2 +SV_IRQ_ENABLE_DMA = 4 +SV_LCD_ON = 8 +SV_TIMER_MODE_240Hz = $10 ; else 15360 + + +; low activ/pressed +sv_control = $2020 +SV_RIGHT = 1 +SV_LEFT = 2 +SV_DOWN = 4 +SV_UP = 8 +SV_BUTTONB = $10 +SV_BUTTONA = $20 +SV_SELECT = $40 +SV_START = $80 + +; frequency=125000/counter +sv_audio_right_counter = $2010 ;word +sv_audio_left_counter = $2014 +SV_AUDIO_ON =$40 +;bits 0..3 volume +; bit 4 ? +; bit 5 ? +sv_audio_right_control = $2012 +sv_audio_left_control = $2016 +; write activates tone for x/60 sec (0 means 256) +sv_audio_right_timer = $2013 +sv_audio_left_timer = $2017 + + +;read for irq quitting +sv_dma_quit = $2025 +sv_dma_on = $201c +; bit 7 true start, false stop +sv_dma_start = $2018 ; word +sv_dma_size = $201a ; *32 samples +sv_dma_control = $201b +; bit 0,1 speed: 0 15360, 11 15360/4 +; bit 2,3 volume: 0 silent, 11 loud + +sv_noise_volume = $2028 ; and frequency +sv_noise_timer = $2029 +sv_noise_control = $202a +;/*****************************************************************************/ +;/* */ +;/* joy-error.inc */ +;/* */ +;/* Joystick error codes */ +;/* */ +;/* */ +;/* */ +;/* (C) 2002 Ullrich von Bassewitz */ +;/* Wacholderweg 14 */ +;/* D-70597 Stuttgart */ +;/* EMail: uz@musoftware.de */ +;/* */ +;/* */ +;/* This software is provided 'as-is', without any expressed or implied */ +;/* warranty. In no event will the authors be held liable for any damages */ +;/* arising from the use of this software. */ +;/* */ +;/* Permission is granted to anyone to use this software for any purpose, */ +;/* including commercial applications, and to alter it and redistribute it */ +;/* freely, subject to the following restrictions: */ +;/* */ +;/* 1. The origin of this software must not be misrepresented; you must not */ +;/* claim that you wrote the original software. If you use this software */ +;/* in a product, an acknowledgment in the product documentation would be */ +;/* appreciated but is not required. */ +;/* 2. Altered source versions must be plainly marked as such, and must not */ +;/* be misrepresented as being the original software. */ +;/* 3. This notice may not be removed or altered from any source */ +;/* distribution. */ +;/* */ +;/*****************************************************************************/ + + + +; Error codes +JOY_ERR_OK = 0 ; No error +JOY_ERR_NO_DRIVER = 1 ; No driver available +JOY_ERR_CANNOT_LOAD = 2 ; Error loading driver +JOY_ERR_INV_DRIVER = 3 ; Invalid driver +JOY_ERR_NO_DEVICE = 4 ; Device (hardware) not found + + + +; +; _file.inc +; +; (C) Copyright 2002 Ullrich von Bassewitz (uz@cc65.org) +; + +; Assembler include file that makes the constants and structures in _file.h +; available for asm code. + +; Struct _FILE +.struct _FILE + f_fd .byte + f_flags .byte + f_pushback .byte +.endstruct + +; Flags field +_FCLOSED = $00 +_FOPEN = $01 +_FEOF = $02 +_FERROR = $04 +_FPUSHBACK = $08 + +; File table +.global __filetab + + ;*****************************************************************************/ ;* */ ;* o65.inc */ @@ -18226,135 +22583,247 @@ 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. */ -;/* */ -;/*****************************************************************************/ + +; 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 + +;*****************************************************************************/ +;* */ +;* 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. -;------------------------------------------------------------------------------ -; 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 +; 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 -;------------------------------------------------------------------------------ -; The JOY API version, stored in JOY_HDR::VERSION +; 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 -JOY_API_VERSION = $05 +; 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 -;------------------------------------------------------------------------------ -; 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. */ -;/* */ -;/*****************************************************************************/ +; 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 +; 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 -; Struct utsname -.struct utsname - sysname .byte 17 - nodename .byte 9 - release .byte 9 - version .byte 9 - machine .byte 25 -.endstruct - - +; Read registers +SWCHA := $0280 +SWACNT := $0281 +SWCHB := $0282 +SWBCNT := $0283 +INTIM := $0284 +TIMINT := $0285 +; Write registers +TIM1T := $0294 +TIM8T := $0295 +TIM64T := $0296 +T1024T := $0297 +.macro jeq Target + .if .match(Target, 0) + bne *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + beq Target + .else + bne *+5 + jmp Target + .endif +.endmacro +.macro jne Target + .if .match(Target, 0) + beq *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + bne Target + .else + beq *+5 + jmp Target + .endif +.endmacro +.macro jmi Target + .if .match(Target, 0) + bpl *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + bmi Target + .else + bpl *+5 + jmp Target + .endif +.endmacro +.macro jpl Target + .if .match(Target, 0) + bmi *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + bpl Target + .else + bmi *+5 + jmp Target + .endif +.endmacro +.macro jcs Target + .if .match(Target, 0) + bcc *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + bcs Target + .else + bcc *+5 + jmp Target + .endif +.endmacro +.macro jcc Target + .if .match(Target, 0) + bcs *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + bcc Target + .else + bcs *+5 + jmp Target + .endif +.endmacro +.macro jvs Target + .if .match(Target, 0) + bvc *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + bvs Target + .else + bvc *+5 + jmp Target + .endif +.endmacro +.macro jvc Target + .if .match(Target, 0) + bvs *+5 + jmp Target + .elseif .def(Target) .and .const((*-2)-(Target)) .and ((*+2)-(Target) <= 127) + bvc Target + .else + bvs *+5 + jmp Target + .endif +.endmacro ; smc.mac ; ca65 Macro-Pack for Self Modifying Code (SMC) ; @@ -18420,7 +22889,7 @@ _SMCDesignator: statement ldy #opcode sty _SMCDesignator .else - .error "Invalid usage of macro 'SMC_TransferOpcode'" + .error "Invalid usage of macro 'SMC_TransferOpcode'" .endif .endmacro @@ -18432,7 +22901,7 @@ _SMCDesignator: statement .elseif .match ({register}, y) ldy _SMCDesignator .else - .error "Invalid usage of macro 'SMC_LoadOpcode'" + .error "Invalid usage of macro 'SMC_LoadOpcode'" .endif .endmacro @@ -18444,7 +22913,7 @@ _SMCDesignator: statement .elseif .match ({register}, y) sty _SMCDesignator .else - .error "Invalid usage of macro 'SMC_StoreOpcode'" + .error "Invalid usage of macro 'SMC_StoreOpcode'" .endif .endmacro @@ -18459,7 +22928,7 @@ _SMCDesignator: statement ldy #(<(destination - _SMCDesignator - 2)) sty _SMCDesignator+1 .else - .error "Invalid usage of macro 'SMC_ChangeBranch'" + .error "Invalid usage of macro 'SMC_ChangeBranch'" .endif .endmacro @@ -18474,7 +22943,7 @@ _SMCDesignator: statement ldy value sty _SMCDesignator+1 .else - .error "Invalid usage of macro 'SMC_TransferValue'" + .error "Invalid usage of macro 'SMC_TransferValue'" .endif .endmacro @@ -18486,7 +22955,7 @@ _SMCDesignator: statement .elseif .match ({register}, y) ldy _SMCDesignator+1 .else - .error "Invalid usage of macro 'SMC_LoadValue'" + .error "Invalid usage of macro 'SMC_LoadValue'" .endif .endmacro @@ -18498,7 +22967,7 @@ _SMCDesignator: statement .elseif .match ({register}, y) sty _SMCDesignator+1 .else - .error "Invalid usage of macro 'SMC_StoreValue'" + .error "Invalid usage of macro 'SMC_StoreValue'" .endif .endmacro @@ -18526,7 +22995,7 @@ SMC_StoreValue label, register ldy value sty _SMCDesignator+2 .else - .error "Invalid usage of macro 'SMC_TransferHighByte'" + .error "Invalid usage of macro 'SMC_TransferHighByte'" .endif .endmacro @@ -18538,7 +23007,7 @@ SMC_StoreValue label, register .elseif .match ({register}, y) ldy _SMCDesignator+2 .else - .error "Invalid usage of macro 'SMC_LoadHighByte'" + .error "Invalid usage of macro 'SMC_LoadHighByte'" .endif .endmacro @@ -18550,7 +23019,7 @@ SMC_StoreValue label, register .elseif .match ({register}, y) sty _SMCDesignator+2 .else - .error "Invalid usage of macro 'SMC_StoreHighByte'" + .error "Invalid usage of macro 'SMC_StoreHighByte'" .endif .endmacro @@ -18598,7 +23067,7 @@ SMC_StoreValue label, register sty _SMCDesignator+2 .endif .else - .error "Invalid usage of macro 'SMC_TransferAddressSingle'" + .error "Invalid usage of macro 'SMC_TransferAddressSingle'" .endif .endmacro @@ -18623,615 +23092,6 @@ SMC_StoreValue label, register 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 ; @@ -19274,13 +23134,6 @@ KBDREPEATDELAY := $28c XSIZE = 22 YSIZE = 23 -; --------------------------------------------------------------------------- -; Kernal routines - -; Direct entries -CLRSCR := $E55F -KBDREAD := $E5CF - ; --------------------------------------------------------------------------- ; Vector and other locations @@ -19292,9 +23145,25 @@ NMIVec := $0318 ; I/O: 6560 VIC VIC := $9000 -VIC_LINES := $9003 ; Screen lines, bit 7 is bit 0 from VIC_HLINE -VIC_HLINE := $9004 ; Rasterline, bits 1-8 -VIC_COLOR := $900F ; Border and background color +VIC_CR0 := VIC+$0 +VIC_CR1 := VIC+$1 +VIC_CR2 := VIC+$2 +VIC_CR3 := VIC+$3 +VIC_LINES := VIC+$3 ; Screen lines, bit 7 is bit 0 from VIC_HLINE +VIC_CR4 := VIC+$4 +VIC_HLINE := VIC+$4 ; Rasterline, bits 1-8 +VIC_CR5 := VIC+$5 +VIC_CR6 := VIC+$6 +VIC_CR7 := VIC+$7 +VIC_CR8 := VIC+$8 +VIC_CR9 := VIC+$9 +VIC_CRA := VIC+$A +VIC_CRB := VIC+$B +VIC_CRC := VIC+$C +VIC_CRD := VIC+$D +VIC_CRE := VIC+$E +VIC_CRF := VIC+$F +VIC_COLOR := VIC+$F ; Border and background color ; --------------------------------------------------------------------------- ; I/O: 6522 VIA1 @@ -19339,423 +23208,6 @@ 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 FEATURES { STARTADDRESS: default = $0801; } @@ -19903,79 +23355,65 @@ FEATURES { segment = RODATA, import = __CALLIRQ__; } -Uzna` ix=gKE@Ĵ([faX GHIJKLE ?3=;-4)392 +Uzna` ix=gKE@֓]] GHIJKLE ?3=;-4)392 ,1"A0&/5 -;4+0)#:'$#/! FD}<<C`B$$A@33><--:98,,7AA6&&5   . 44, * ::( &%//"B-G?)& !9C%6#1'$.   5 -F"%@ *(&,2 : #'D$+M__CBM____C64__c64/extra/soft80.sca65 V2.17 - Git 6c320f7c64/extra/../soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline +F"%@ *(&,2 : #'D$+M__CBM____C64__c64/extra/soft80.sca65 V2.18 - Git cab4910ac64/extra/../soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER soft80_cgetc_cgetcsoft80_textcolorsoft80_bgcolor _textcolor_bgcolor soft80_cpeekc_cpeekcsoft80_cpeekcolor _cpeekcolorsoft80_cpeekrevers _cpeekrevers soft80_cpeeks_cpeeks soft80_cputcsoft80_cputcxysoft80_cputdirectsoft80_putcharsoft80_newline soft80_plot_cputc_cputcxy cputdirectputcharnewlineplotsoft80_kclrscr_clrscr soft80_kplotPLOTsoft80_screensize screensizemcb_spritememorymcb_spritepointer chlinechar -cvlinecharreturn1_doesclrscrafterexitCODERODATABSSDATAZEROPAGENULLUzna` ix=gKE@Ĵ([faX GHIJKLE ?>!=;#4A3(2 +cvlinecharreturn1_doesclrscrafterexitCODERODATABSSDATAZEROPAGENULLUzna` ix=gKE@֓]] GHIJKLE ?>!=;#4A3(2 21+09/ .- 5+;)40'&$#!"FD}C`$$BA::@!!><##:9822765 ... 55, ;;* 00( &&&%"""B-0G")&!9C8%#1'4 J.  -I= 5F" *(&,/ #'B<$+M__CBM____C64__c64/extra/soft80mono.sca65 V2.17 - Git 6c320f7c64/extra/../soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline +I= 5F" *(&,/ #'B<$+M__CBM____C64__c64/extra/soft80mono.sca65 V2.18 - Git cab4910ac64/extra/../soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNERsoft80mono_cgetc_cgetcsoft80mono_textcolorsoft80mono_bgcolor _textcolor_bgcolor soft80_cpeekc_cpeekcsoft80mono_cpeekcolor _cpeekcolorsoft80_cpeekrevers _cpeekrevers soft80_cpeeks_cpeekssoft80mono_cputcsoft80mono_cputcxysoft80mono_cputdirectsoft80mono_putcharsoft80mono_newlinesoft80mono_plot_cputc_cputcxy cputdirectputcharnewlineplotsoft80mono_kclrscr_clrscrsoft80mono_kplotPLOTsoft80_screensize screensizemcb_spritememorymcb_spritepointer chlinechar -cvlinecharreturn1_doesclrscrafterexitCODERODATABSSDATAZEROPAGENULLUzna` iq=st@Ĵ([  -   __CBM____C64__c64/extra/tgimousedata.sca65 V2.17 - Git 6c320f7COLORMAPmcb_spritepointermcb_spritememoryCODERODATABSSDATAZEROPAGENULLnaUz Uzna` kzi)  5@ĴD*[faX,  - - -  - H I  -   -   -  -  - L - - - - - - - - - -  - - - - - - -      % S ( % U )     !  , -0")&14$. 5 -%*(,2/#'+"__CBM____C64__../libwrk/c64/_afailed.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stderr_fprintf_exit __afailedL0004.sizepushaxpushwyspincsp4CODERODATABSSDATAZEROPAGENULLUzna` iqA kBC@ĴfaX +cvlinecharreturn1_doesclrscrafterexitCODERODATABSSDATAZEROPAGENULLUzna` iq=tu@֓]  +   __CBM____C64__c64/extra/tgimousedata.sca65 V2.18 - Git cab4910aCOLORMAPmcb_spritepointermcb_spritememoryCODERODATABSSDATAZEROPAGENULLnaUz fUzna` kz~/' 3635@֓]]2!  +  + + +  + H! I!  +   +   +   +   +L +    %S(%U)  !" 2  +" -0)&986314$. 5 +%*(,2/#'+#__CBM____C64__../libwrk/c64/_afailed.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_raise_stderr_fprintf_exit __afailedL0006.sizepushaxpushwyspincsp4CODERODATABSSDATAZEROPAGENULLUzna` iqA lCD@֓]   -    __CBM____C64__conio/_cursor.sca65 V2.17 - Git 6c320f7cursor.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixK%S -@ĴfaX ([  +    __CBM____C64__conio/_cursor.sca65 V2.18 - Git cab4910acursor.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixK%I +@֓] ]  !   )7(ED;8' 9:+4 -5*2,>.0C"__CBM____C64__ 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 mhi@ĴfaXfaX faX*4 +5*2,>.0C"__CBM____C64__ common/_cwd.sca65 V2.18 - Git cab4910a__cwd__cwd_buf_sizecwd_initinitcwd/home/pzp/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 XST@֓]] ]*4     .(`"56789 +   3  -"   :__CBM____C64__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    -   __CBM____C64__common/_environ.sca65 V2.17 - Git 6c320f7 __environ -__envcount __envsizeinitenvenv_init.sizeCODERODATABSSDATAZEROPAGENULLUzna` iL[ gjoi@ĴfaX([faX&9 +"   :__CBM____C64__common/_directerrno.sca65 V2.18 - Git cab4910a/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX/home/pzp/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@֓]    +   __CBM____C64__common/_environ.sca65 V2.18 - Git cab4910a __environ +__envcount __envsizeinitenvenv_init.sizeCODERODATABSSDATAZEROPAGENULLUzna` iL[ gjoi@֓]]]&9   %%00L -.i H/ I/#`'()*+" /  "4")& 7( ED;8'$!9:+4%5*(2 ,>. #0+C,__CBM____C64__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 +.i H/ I/#`'()*+" /  "4")& 7( ED;8'$!9:+4%5*(2 ,>. #0+C,__CBM____C64__common/_fdesc.sca65 V2.18 - Git cab4910a__fdescreturn0/home/pzp/cc65/asminc/stdio.inc_IOFBF_IOLBF_IONBFBUFSIZEOF FILENAME_MAXL_tmpnamSEEK_CURSEEK_ENDSEEK_SETTMP_MAX FOPEN_MAX_stdin_stdout_stderr/home/pzp/cc65/asminc/_file.inc_FILEf_fd.sizef_flags f_pushback_FCLOSED_FOPEN_FEOF_FERROR -_FPUSHBACK __filetabLoopFound@L1CODERODATABSSDATAZEROPAGENULLUzna` ikl?@ĴfaX([faX!faX,-./   222222222222222 +_FPUSHBACK __filetabLoopFound@L1CODERODATABSSDATAZEROPAGENULLUzna` ikl?@֓]]]!],-./   222222222222222   -01/. 7 )&7( ED;8'$!9: +45*2 ,>. # 0C2__CBM____C64__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 +01/. 7 )&7( ED;8'$!9: +45*2 ,>. # 0C2__CBM____C64__common/_file.sca65 V2.18 - Git cab4910a __filetab/home/pzp/cc65/asminc/stdio.inc_IOFBF_IOLBF_IONBFBUFSIZEOF FILENAME_MAXL_tmpnamSEEK_CURSEEK_ENDSEEK_SETTMP_MAX FOPEN_MAX_stdin_stdout_stderr/home/pzp/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCL/home/pzp/cc65/asminc/_file.inc_FILEf_fd.sizef_flags f_pushback_FCLOSED_FOPEN_FEOF_FERROR -_FPUSHBACKCODERODATABSSDATAZEROPAGENULLUzna` ij1! -0Eu.//@ĴfaX faX 'faX2faX/F{f +_FPUSHBACKCODERODATABSSDATAZEROPAGENULLUzna` ij1! -0Eu/@֓] ] ']2]/F{f a ak k` `4 b bgJ JWGGs2sRRR 22]]A+SS)R)B __+-pp= EEB,jj  9L0 @@ -19989,28 +23427,28 @@ _FPUSHBACKCODERODATABSSDATAZEROPAGENULLUzna` i `bJV.$1 /ko* 30>O{C<th\jU -P0]HG ?")o>f98Opg b3T1A;e Jn.^!i  Idx= -F"7[@ *( rV,2cRz/ : #' BSZQ<+L__CBM____C64__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"7[@ *( rV,2cRz/ : #' BSZQ<+L__CBM____C64__common/_fopen.sca65 V2.18 - Git cab4910a__fopen_openpushaxincsp4return0spptr1/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX/home/pzp/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCL/home/pzp/cc65/asminc/_file.inc_FILEf_fd.sizef_flags f_pushback_FCLOSED_FOPEN_FEOF_FERROR -_FPUSHBACK __filetabfile@L1@L3@L2invmodemodeok@L4openokCODERODATABSSDATAZEROPAGENULLUzna` ixEdYH@ĴfaX -faX* +_FPUSHBACK __filetabfile@L1@L3@L2invmodemodeok@L4openokCODERODATABSSDATAZEROPAGENULLUzna` ixEdY>@֓] +]*    h8 ! H!   I$ -$`  !  % $  &"& !#$!"%*(  #' __CBM____C64__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 Nf@ĴfaX +$`  !  % $  &"& !#$!"%*(  #' __CBM____C64__common/_heap.sca65 V2.18 - Git cab4910ainitheap __BSS_RUN__ __BSS_SIZE__ __STACKSIZE__sp/home/pzp/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplastCODERODATABSSDATAZEROPAGENULLONCEUzna` ia NQ@֓] -faXfaX! $ $  +]]! $ $        `#%  L    $ & -"!#34 $.!  -"%,/ #'+!__CBM____C64__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/ xSn@ĴfaXfaXfaXfaX+,*8 8 +"%,/ #'+!__CBM____C64__common/_heapadd.sca65 V2.18 - Git cab4910aptr1ptr2popaxheapadd __heapadd/home/pzp/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast!/home/pzp/cc65/asminc/generic.mac@L1CODERODATABSSDATAZEROPAGENULLUzna` i/ xSN@֓]]]]+,*8 8 ' 'G G> >$ ? ?D0 0# #= e .  .HI(e h-8% %HFH Hh*`",-./0>?0# 8'GH)K -?")> !CE# A;J.!= -F"@*(,K : #'BD<1__CBM____C64__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 Ar^_@ĴfaX faXfaXSI< +F"@*(,K : #'BD<1__CBM____C64__common/_heapblocksize.sca65 V2.18 - Git cab4910aptr1ptr2__heapblocksize/home/pzp/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast!/home/pzp/cc65/asminc/generic.mac/home/pzp/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510CODERODATABSSDATAZEROPAGENULLUzna` ij2 A]IJ@֓] ]]SI< <8% %8 82 2 @@ -20020,8 +23458,8 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510CODERODATABSS  1 1 +  7  ? ?, => > L( (! !833%   --`` !"*$9<26 '8&#?!' ".51 >@U -P0M")!9C8LOE#3T1A;J$.! -F"7@N(2K/ :#BD<#__CBM____C64__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 Af@A@ĴfaX faXfaXNE; 7 7 +F"7@N(2K/ :#BD<#__CBM____C64__common/_heapmaxavail.sca65 V2.18 - Git cab4910aptr1ptr2__heapmaxavail/home/pzp/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast!/home/pzp/cc65/asminc/generic.mac@L1@L3@L2@L5@L4CODERODATABSSDATAZEROPAGENULLUzna` iV4 AQ+,@֓] ]]NE; 7 7 = =6 6  ( (-? ?0 e0+ 0+ 3 3e   # ) 5 5L  * m*+ @@ -20032,19 +23470,32 @@ __heaplast,/home/hugg/compilers/cc65/asminc/generic.mac@L1@L3@L2@L5@L4CODE " 1 `,'6*4 $ 70 <% $= (?35@ -0HG?&!9C8L6#1A;J.!I5 -F"%7@N*,K/ : BD+ __CBM____C64__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@ĴD*[faXV0123 +F"%7@N*,K/ : BD+ __CBM____C64__common/_heapmemavail.sca65 V2.18 - Git cab4910aptr1ptr2__heapmemavail/home/pzp/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast!/home/pzp/cc65/asminc/generic.mac@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz o|}@֓]]V0123 4 56789    "!  - __CBM____C64__../libwrk/c64/_hextab.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac__hextab.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzy $'./@ĴD*[faXB  -2147483648   -__CBM____C64__../libwrk/c64/_longminstr.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac __longminstr.sizeCODERODATABSSDATAZEROPAGENULLUzna` i| #7"@ĴfaXfaX faX!faXE6  + __CBM____C64__../libwrk/c64/_hextab.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac__hextab.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix+A MPO@֓]]|H   +e    hL +    +    &  $!  #'!__CBM____C64__common/_idiv32by16r16.sca65 V2.18 - Git cab4910a_idiv32by16r16 idiv32by16r16incsp4"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace@L1.size@L2CODERODATABSSDATAZEROPAGENULLUzna` ixk V\lm@֓]]4 +    +L +   +    +    __CBM____C64__common/_imul16x16r32.sca65 V2.18 - Git cab4910a _imul16x16r32 imul16x16r32popax"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq[ )@֓]$ +   +L +    __CBM____C64__common/_imul8x8r16.sca65 V2.18 - Git cab4910a _imul8x8r16 +imul8x8r16popaptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzy $'%&@֓]]B  -2147483648   +__CBM____C64__../libwrk/c64/_longminstr.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac __longminstr.sizeCODERODATABSSDATAZEROPAGENULLUzna` i| #7}"@֓]] ]!]E6  3 3   - -,`789:; -0 7  ! -5"   <__CBM____C64__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 pLM@ĴfaX +5"   <__CBM____C64__common/_mappederrno.sca65 V2.18 - Git cab4910a/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX!/home/pzp/cc65/asminc/generic.mac/home/pzp/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 qMN@֓]   -     __CBM____C64__common/_oserror.sca65 V2.17 - Git 6c320f7 __oserror.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz(<d psZZr@ĴD*[ faXO Q9 ' +     __CBM____C64__common/_oserror.sca65 V2.18 - Git cab4910a __oserror.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz(<d psZQr@֓] +]O Q9 ' '     @@ -20064,8 +23515,8 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeokCODERO L) ).!%S: %S "#$% )  '&  " ! Q*$. -0?)>&986E31A4;$.= 5 -%7@*(,2/:#'BD<+&__CBM____C64__../libwrk/c64/_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!faXj      `# +%7@*(,2/:#'BD<+&__CBM____C64__../libwrk/c64/_poserror.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_stderr_fprintf +__poserror __stroserror __oserrorL0008.sizeL000FpushaxL0004pushwyspL0012incsp4CODERODATABSSDATAZEROPAGENULLUzna` ib, "&&@֓]Ԩ]!]j      `#  v v   H I  @@ -20227,448 +23678,465 @@ __poserror __stroserror __oserrorL0008.sizeL000FpushaxL0004pushwyspL0012 Lo &ok[l+ ,Qh1L  mLno 3!! !U!!!Y!6   4ZKVcyMf'r5r -/^m\| -PlHG?)o>&y  98}OpEbk3;  Jn qIdx= F[*(ar,2wcRz:~'SDZ{Q<YX+p__CBM____C64__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 +/^m\| -PlHG?)o>&y  98}OpEbk3;  Jn qIdx= F[*(ar,2wcRz:~'SDZ{Q<YX+p__CBM____C64__common/_printf.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace__printfpopaxpushaxpusheaxdecsp6push1axlongaxulong_ltoa_ultoa _strlower_strlen!/home/pzp/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}EZ9Ka1:K@ĴD*[faX,   -  ) ) % - %x  - - -  - - -  - - -' -' -| -| -  -  H I  -'L -  -L - - %"  -#--  -L -^ -^ -  - y - y ; -;L7 -7  -%{** - *=  - - -  - - - -   -$ -= -=3 - - - -  - ( ( - )me ( ( -J -J  -  -$ -  -  -%L - - -  - - - - - H,JML/TJZF BL -b - ( - ( (H- - -% -L -_ - ( -@ (@ (L - - -  - - AAL -CL -DgoEzzLz -zFL -GL -I^NL -uO[PL -GS3`U<XZPZ[L -L -L -L -L -L -66L6 -6L - -$  -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 -  - -Xw  - 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_ -_ ( ( - ( - ( ( ` -` -  -  - ` - ( - ( ( - ( - ( (  - - - +CheckOctal CheckPointer@Oct1 CheckStringIsHex CheckUnsignedCheckHex UnknownFormatCODERODATABSSDATAZEROPAGENULLUzna` k{.0/ P1_1b1Fi{Ka1|K@֓]],   +  ) )  +   +) +) +  +  + +  + + + + + + +  +  H I 0 +'0L" +" ` +`L + + %>"> 9 +#9 , +,L +@ +@ +  +  +   +L +  +% + *  + + +  + + + +   +$ +=o +=o3 + + + + M +M ( ( + )e ( ( + +  +  +$ +  +.  +%L + + +  + + + + +  HJML/TJZFBL +b + ( + (E (EH- + +% +L +_ + ( + (F (Li +i + +  + + AL +CL +DoEL +F55L5 +5GL +I^N]L +uO[PL +GS`U<X P[L +8L +L +'L +L +L +L +L + +  +L +  +L +  +L + | +|L +  +  + + +9 +8 + + + n +nJ )J )L +O + ) ) * *  + ) ) + * I +I + +PP + +  +# +cc + +  + -  -u - u`  -H H I  -hdL -& N -N` -L -`LY -Y  - - -  -#` -- - -  - + -  - -`  -  , h -$h  ,0L -: ,  -!7  - L -   + +L" +" ) +L" +" +L + += +& + +  + + +[= +=8 + + +  + ) )L + T +T ) ) *G *G  +# )# ) + *  + + + +  + +L" +" +L +  +  + + + +  +L + I! (! H ( (  +^?  + + +  + + ]YL +L +L ( + (f (-; +  +? + +  +] +?  +"-  +"L + +?  +" +  +? + +?+L + +   +"  + + ] +  +83 +3e +e +  +G +> +A +8v7 +7* +* +  + ) )L + +44 ) ) * *  + ) ) + *2 +2 +>  +  +1 + +V +V  +YY +>L +S +SL" +" ) +L" +" +L +  + +0{{L{" +{" +  + +Xw  +  +B  +Ls +s +  +   +  +h  +L +  +  + + + + + + + [ +[ +!q +q8 + +L +   +%L +  +%L +  +lL" +P"L + + +  +k +k6 +6  +U +Z +ZH , )x ,x )hL +HJJJh) +L +!`  +  + + +L + +  +  +=< +<L +F` +I +;` +3 +  + + ( + (b ( + ( +O ( (  + +  +  + ` + ( + ( ( + ( + z (z (  + + + + H + H`  +H H I  +hL +& R +R` +ttL +`L~ +~  +D +D +  +#--` +- + +  + + +  +$ +$`C  +  ,  +$  ,0L +:  ,  +!7  + L/ + /  - -A - - - -L - -A -G +G - + - -  - 8 ,  -  -  -  -  -@  -  -  - - - + - + -  - - -  -"" - - -  - -  - -@ ,] -A  - -L - -+ -8 - - -  - ( ( - - ( - -`  -  -  - ,B -05  - -X , -  -L -bo ,  -U0 - -L -b - ,q ,q  -B -# - + - + - -  - - - +? -? + -  -L - - * - * - -[ */ - `5i @BBss>-ZN1`]ZEA=;;21%hWnKb@< lFr5j ( -G q -hm\j|U -P0]l?)o>&ysf9C8}L6pgtbk3T1A4;en.^!iqdx= 5 -%7_ [@*(ar,2 wcRvz/:u~ '`BSDZ{Q<Y+__CBM____C64__../libwrk/c64/_scanf.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_memset__setjmp_longjmp + +A + + +: +:L + +A + + + + + +  +  ,  +  +  +  +  +@  +  +  + + + + + + +  + + +  +""_ +_ + +  + +  + +@w ,w +A  + +L + ++ +8 + + +  + ( (p +pm +m% (% +X +X`  +  +  + ,B +05  + +Xr , +  +L +bu ,  +U0 + +L +b + , ,  +B +B#B + + + + + +  +g +g + + +a +a +  +L + + * + * + +W * + `P j @ABByy(-ddd^ddddddddd/dddR5ddd dddddddad^dnIdEdMAd?d6d 5d90N%zE! J# G +a wx +hm\j|U -P0]l?)o>&ysfW9C8}L6pgtk3T1A4;en.^!iqdx= 5 +%7_ [@*(rV,2 wRvz/:u~ '`BSD{Q<+__CBM____C64__../libwrk/c64/_scanf.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/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 +_Converted _Positive _NoAssign_Invert_CharSetL01B5L02B9L02C8L02D7L0191L0192L0193pushaxldaxyspL01A0L01A3 _ReadCharL01FEL01A6L01AAL01AC _SkipWhitetosicmp0 -_GetFormatbooleqL01A6L01B3L01B2mulax10L0316L01BAL031DcomplaxL01CBL0303L01D4L01DEL0304L02D2L0309L01E8L01EEL02C2L01F2L02A8L01FCL01F6L0246L02EB_ScanInt _CheckEndL020DL020AldaxiL0305L0214incax1L0317L0308L0212L0221L0240L0231L0234L0232L0236L023EL0242L02FCL030AL030BL025DL0257L0262L0267L026F _AddCharToSetL0302L030FL027DL031A_InvertCharSetL0292L028FL0310L0311 _IsCharInSetL0314L0295L02B7_ReadInt -_AssignIntL02C8L02CAtossuba0axulongL02F3 _PushBackincsp8_FindBitL0010pushaincsp1L1L002DL0055pusha0jmpvecL0082L00B6_ErrorL00D1L00D7L00D5 _ReadSignL00E3L00ECL00F1_HexValL00FEL031EdecaxyL0105L0106L010CL0320pusheaxaulong tosmuleax tosaddeaxL0323L0110L0324L013EL012AL0131L0328L0327L0325L0326L0161L0166negeaxL0173CODERODATABSSDATAZEROPAGENULLUzna` iq= oGH@ĴfaX  +_GetFormatbooleqL01BEL01CBL01CAmulax10L0332L01D2L0339complaxL01E3L031FL01ECL01F6L0320L02EDL0325L0200L0206L02DDL020AL02C1L0214L020EL025EL0306_ScanInt _CheckEndL0225L0222ldaxiL0321L022Cincax1L0333L0324L022AL0239L0258L0249L024CL024AL024EL0256L025AL0318L0326L0327L0275L026FL027AL027FL0287 _AddCharToSetL031EL032BL0295L0336_InvertCharSetL02AAL02A7L032CL032D _IsCharInSetL0330L02ADL02D1_ReadInt +_AssignIntL02E3L02E5tossuba0axulongL030F _PushBackincsp8_FindBitL0010pushaincsp1L1L002DL0055pusha0jmpvecL0083L00BA_ErrorL00D8L00E0L00DE _ReadSignL00ECL00F6L00FD_HexValL010DL033AdecaxyL0114L0115L011BL033Cpusheaxaulong tosmuleax tosaddeaxL033FL011FL0340L014FL0139L0140L0344L0343L0341L0342L0174L0179negeaxL0186CODERODATABSSDATAZEROPAGENULLUzna` iq= pHI@֓]     - __CBM____C64__c64/_scrsize.sca65 V2.17 - Git 6c320f7 -screensizeSCREENCODERODATABSSDATAZEROPAGENULLUzna` ixb \@ĴfaXfaX +!  + __CBM____C64__c64/_scrsize.sca65 V2.18 - Git cab4910a +screensizeSCREENCODERODATABSSDATAZEROPAGENULLUzna` ixb R@֓]] +!     `"#$%&    - "  '__CBM____C64__common/_seterrno.sca65 V2.17 - Git 6c320f7*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno -__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq4( s@Ĵ([/+I   + "  '__CBM____C64__common/_seterrno.sca65 V2.18 - Git cab4910a/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq4( s@֓]/+I   I                 `  -    0")& 4 $! 5%*(/#'+__CBM____C64__common/_swap.sca65 V2.17 - Git 6c320f7__swappopaxpopptr1ptr1ptr2ptr3.size@L1@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` iq  t@ĴfaX I D< " "  +    0")& 4 $! 5%*(/#'+__CBM____C64__common/_swap.sca65 V2.18 - Git cab4910a__swappopaxpopptr1ptr1ptr2ptr3.size@L1@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` iq  u@֓] I D< " "     (+hQ, ,)0Q$ $H -& &H  * 'h(%  0H!.  /# #h h) (` -    ",$& # 1U-P0HG")& C8L6ET1A J$.!I= F%7(2K/ #'BD<__CBM____C64__ common/_sys.sca65 V2.17 - Git 6c320f7__sysjmpvecptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzD  p$@ĴD*[faXw   +    ",$& # 1U-P0HG")& C8L6ET1A J$.!I= F%7(2K/ #'BD<__CBM____C64__ common/_sys.sca65 V2.18 - Git cab4910a__sysjmpvecptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix;X dg f @֓]]     +e     L +   +   +   "&  $!  '!__CBM____C64__common/_udiv32by16r16.sca65 V2.18 - Git cab4910a_udiv32by16r16udiv32by16r16mincsp4"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace@L1.size@L2CODERODATABSSDATAZEROPAGENULLUzna` ixk V\lm@֓]]4 +    +L +     +  +   __CBM____C64__common/_umul16x16r32.sca65 V2.18 - Git cab4910a _umul16x16r32 umul16x16r32popax"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixq [l yz@֓]]:      + L +  + +        __CBM____C64__common/_umul16x8r32.sca65 V2.18 - Git cab4910a _umul16x8r32 umul8x16r24popax"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq[ )@֓]$ +   +L +   __CBM____C64__common/_umul8x8r16.sca65 V2.18 - Git cab4910a _umul8x8r16 +umul8x8r16popaptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzD  p@֓]]w    H I    @@ -20691,90 +24159,88 @@ __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEB          -0)&1$.  -%*(,#'+!__CBM____C64__../libwrk/c64/abort.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stderr_fputs_abort_exit_raiseL0005.sizepushaxCODERODATABSSDATAZEROPAGENULLUzna` i~m   @Ĵ([L([ ([ 6,*00()`/-./01 .0/-GOC))%'6 D9M:+**F2,1<0  0= -7!$32__CBM____C64__c64/acc_c128_speed.sca65 V2.17 - Git 6c320f7c64/../c128/acc_c128_speed.s_set_c128_speed_get_c128_speed0/home/hugg/compilers/cc65/asminc/accelerator.inc +%*(,#'+!__CBM____C64__../libwrk/c64/abort.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_stderr_fputs_abort_exit_raiseL0005.sizepushaxCODERODATABSSDATAZEROPAGENULLUzna` i~m   @֓]L] ] 6,*00()`/-./01 .0/-GOC))%'6 D9M:+**F2,1<0  0= +7!$32__CBM____C64__c64/acc_c128_speed.sca65 V2.18 - Git cab4910ac64/../c128/acc_c128_speed.s_set_c128_speed_get_c128_speed%/home/pzp/cc65/asminc/accelerator.inc SPEED_SLOW -SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixNOmp<o@Ĵ([([ /$&  +SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixNOmp<o@֓]] /$&   ,2**=2..L 2$$2'')33,; `(0123448?<-0?))>&!F= 9786DO1'4;G$6 9: -=5%7@**(,/ : 'M0<+C5__CBM____C64__c64/acc_c64dtv_speed.sca65 V2.17 - Git 6c320f7_set_c64dtv_speed_get_c64dtv_speed0/home/hugg/compilers/cc65/asminc/accelerator.inc +=5%7@**(,/ : 'M0<+C5__CBM____C64__c64/acc_c64dtv_speed.sca65 V2.18 - Git cab4910a_set_c64dtv_speed_get_c64dtv_speed%/home/pzp/cc65/asminc/accelerator.inc SPEED_SLOW SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size -high_speed low_speed set_speed in_fast_modeCODERODATABSSDATAZEROPAGENULLUzna` ixlmU @Ĵ([([ 14)  +high_speed low_speed set_speed in_fast_modeCODERODATABSSDATAZEROPAGENULLUzna` ixlmU@֓]] 14)  & 9/ /)-111L   @22 ' &'/*)@6@`&+/;/1=`234567<D<-0?))&!F= 9C786EDO1'A4;G$.6 9: -=5%7@**(,2 : 'MBD0<+C7__CBM____C64__c64/acc_c65_speed.sca65 V2.17 - Git 6c320f7_set_c65_speed_get_c65_speed0/home/hugg/compilers/cc65/asminc/accelerator.inc +=5%7@**(,2 : 'MBD0<+C7__CBM____C64__c64/acc_c65_speed.sca65 V2.18 - Git cab4910a_set_c65_speed_get_c65_speed%/home/pzp/cc65/asminc/accelerator.inc SPEED_SLOW SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.sizeactivate_new_vic_mode -high_speed low_speed store_speedreturn_c65_speed speed_is_slowCODERODATABSSDATAZEROPAGENULLUzna` ixI}(@Ĵ([([ 3E.!%%3  6  +high_speed low_speed store_speedreturn_c65_speed speed_is_slowCODERODATABSSDATAZEROPAGENULLUzna` ixI}@֓]] 3E.!%%3  6  ?DL& & H 4 ?4 0()@  )7 )M? ?"`;NLL ++*: `>45678)=R<\U-PM]HG?)>!F= 9C78LO6EDOb3T'A4;GJ.6^ 9: -Id=5F7N*aV2cRK :`MBS0ZQYXC9__CBM____C64__c64/acc_chameleon_speed.sca65 V2.17 - Git 6c320f7_set_chameleon_speed_get_chameleon_speed0/home/hugg/compilers/cc65/asminc/accelerator.inc +Id=5F7N*aV2cRK :`MBS0ZQYXC9__CBM____C64__c64/acc_chameleon_speed.sca65 V2.18 - Git cab4910a_set_chameleon_speed_get_chameleon_speed%/home/pzp/cc65/asminc/accelerator.inc SPEED_SLOW -SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size maximum_speed low_speed set_speed activate_regs return_speed return_value is_slow_mode is_max_modeCODERODATABSSDATAZEROPAGENULLUzna` ixy @Ĵ([([ B+ :(0*`,-./0"/<)!F= 7DO'G6! 9: -*  M0C1__CBM____C64__c64/acc_detect_c128.sca65 V2.17 - Git 6c320f7 _detect_c1280/home/hugg/compilers/cc65/asminc/accelerator.inc +SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size maximum_speed low_speed set_speed activate_regs return_speed return_value is_slow_mode is_max_modeCODERODATABSSDATAZEROPAGENULLUzna` ixy @֓]] B+ :(0*`,-./0"/<)!F= 7DO'G6! 9: +*  M0C1__CBM____C64__c64/acc_detect_c128.sca65 V2.18 - Git cab4910a _detect_c128%/home/pzp/cc65/asminc/accelerator.inc SPEED_SLOW SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size -detect_endCODERODATABSSDATAZEROPAGENULLUzna` ix89 EH(p(G)@Ĵ([([ ,+?3/?*@55.@  ,#2' +detect_endCODERODATABSSDATAZEROPAGENULLUzna` ix89 EH(pG@֓]] ,+?3/?*@55.@  ,#2' ?%`9-./01;<"))&!F= 7DO'G$6! 9: -%**(,  #'M0+C2__CBM____C64__c64/acc_detect_c64dtv.sca65 V2.17 - Git 6c320f7_detect_c64dtv0/home/hugg/compilers/cc65/asminc/accelerator.inc +%**(,  #'M0+C2__CBM____C64__c64/acc_detect_c64dtv.sca65 V2.18 - Git cab4910a_detect_c64dtv%/home/pzp/cc65/asminc/accelerator.inc SPEED_SLOW -SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size not_foundfoundCODERODATABSSDATAZEROPAGENULLUzna` ixop |Fw~x@Ĵ([ ([ ,6!**96$6%!;  k7ɣ((./ ,/?@0@4  &/`)-./01A<-0"))!F= 76DO3'4G$.6 9: -5%7**(,2/ #M0+C2__CBM____C64__c64/acc_detect_c65.sca65 V2.17 - Git 6c320f7 _detect_c650/home/hugg/compilers/cc65/asminc/accelerator.inc +SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size not_foundfoundCODERODATABSSDATAZEROPAGENULLUzna` ixop |Fm~n@֓] ] ,6!**96$6%!;  k7ɣ((./ ,/?@0@4  &/`)-./01A<-0"))!F= 76DO3'4G$.6 9: +5%7**(,2/ #M0+C2__CBM____C64__c64/acc_detect_c65.sca65 V2.18 - Git cab4910a _detect_c65%/home/pzp/cc65/asminc/accelerator.inc SPEED_SLOW -SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size not_foundfoundCODERODATABSSDATAZEROPAGENULLUzna` ix #&:%@Ĵ([([ g,#00,*' 2++ $-"` -./017<")&!F= 7DO'G$6! 9: -%*  #'M0C2__CBM____C64__c64/acc_detect_chameleon.sca65 V2.17 - Git 6c320f7_detect_chameleon0/home/hugg/compilers/cc65/asminc/accelerator.inc +SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size not_foundfoundCODERODATABSSDATAZEROPAGENULLUzna` ix #&:%@֓]] g,#00,*' 2++ $-"` -./017<")&!F= 7DO'G$6! 9: +%*  #'M0C2__CBM____C64__c64/acc_detect_chameleon.sca65 V2.18 - Git cab4910a_detect_chameleon%/home/pzp/cc65/asminc/accelerator.inc SPEED_SLOW SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size not_foundfoundCODERODATABSSDATAZEROPAGENULLUzna` ix  - @Ĵ([([ K, !!** + @֓]] K, !!** (` -./011<")!F= 7DO'G6! 9: -*  M0C2__CBM____C64__c64/acc_detect_scpu.sca65 V2.17 - Git 6c320f7 _detect_scpu0/home/hugg/compilers/cc65/asminc/accelerator.inc +*  M0C2__CBM____C64__c64/acc_detect_scpu.sca65 V2.18 - Git cab4910a _detect_scpu%/home/pzp/cc65/asminc/accelerator.inc SPEED_SLOW -SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size not_foundfoundCODERODATABSSDATAZEROPAGENULLUzna` ix() 58Q7@Ĵ([ ([ y,"11)  --kɣ ..S 0&&$`(-./018<-"))&!F= 7DO'G6! 9: -**(,  #'M0+C2__CBM____C64__c64/acc_detect_turbomaster.sca65 V2.17 - Git 6c320f7_detect_turbomaster0/home/hugg/compilers/cc65/asminc/accelerator.inc +SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size not_foundfoundCODERODATABSSDATAZEROPAGENULLUzna` ix() 58Q 7 +@֓] ] y,"11)  --kɣ ..S 0&&$`(-./018<-"))&!F= 7DO'G6! 9: +**(,  #'M0+C2__CBM____C64__c64/acc_detect_turbomaster.sca65 V2.18 - Git cab4910a_detect_turbomaster%/home/pzp/cc65/asminc/accelerator.inc SPEED_SLOW -SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size not_foundfoundCODERODATABSSDATAZEROPAGENULLUzna` ix9<U.;/@Ĵ([ ([ k.&z6L( +SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size not_foundfoundCODERODATABSSDATAZEROPAGENULLUzna` ix9<U$;%@֓] ] k.&z6L(  ({,)   "`.`/0123 /(18<"))!F= 9786DO31'4;G.6 9: -57**(,2/ :#'M0+C4__CBM____C64__c64/acc_scpu_speed.sca65 V2.17 - Git 6c320f7_set_scpu_speed_get_scpu_speed0/home/hugg/compilers/cc65/asminc/accelerator.inc +57**(,2/ :#'M0+C4__CBM____C64__c64/acc_scpu_speed.sca65 V2.18 - Git cab4910a_set_scpu_speed_get_scpu_speed%/home/pzp/cc65/asminc/accelerator.inc SPEED_SLOW SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size -high_speed low_speed is_fast_speedCODERODATABSSDATAZEROPAGENULLUzna` ix2%&@Ĵ([ ([ N. 0' +high_speed low_speed is_fast_speedCODERODATABSSDATAZEROPAGENULLUzna` ix2@֓] ] N. 0'  %j5)*!`#/0123 - 7<-0"))&!F= 786DO31'4G6! 9: -57**(,2/ 'M0+C4__CBM____C64__c64/acc_turbomaster_speed.sca65 V2.17 - Git 6c320f7_set_turbomaster_speed_get_turbomaster_speed0/home/hugg/compilers/cc65/asminc/accelerator.inc +57**(,2/ 'M0+C4__CBM____C64__c64/acc_turbomaster_speed.sca65 V2.18 - Git cab4910a_set_turbomaster_speed_get_turbomaster_speed%/home/pzp/cc65/asminc/accelerator.inc SPEED_SLOW -SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size store_speed is_slow_speed is_high_speedCODERODATABSSDATAZEROPAGENULLUzna` ix;Mjm@l@Ĵ([ faX q% %  q) ) i#    ` !"# %) * -0)& 631 $. *(,2/'+$__CBM____C64__ 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 +SPEED_FASTSPEED_1XSPEED_2XSPEED_3XSPEED_4XSPEED_5XSPEED_6XSPEED_7XSPEED_8X SPEED_10X SPEED_12X SPEED_16X SPEED_20X SuperCPU_Slow SuperCPU_FastSuperCPU_Speed_ModeSuperCPU_DetectC64DTV_Extended_Regs C64DTV_Slow C64DTV_FastC128_VICIIE_CLKCHAMELEON_CFGTURCHAMELEON_CFGENACHAMELEON_ENABLE_REGSCHAMELEON_DISABLE_REGSCHAMELEON_CFGTUR_LIMIT_1MHZCHAMELEON_CFGTUR_LIMIT_NONEC65_VICIII_KEYC65_VICIII_CTRL_BC65_VICIII_UNLOCK_1C65_VICIII_UNLOCK_2TURBOMASTER_DETECTTURBOMASTER_SPEED_REG.size store_speed is_slow_speed is_high_speedCODERODATABSSDATAZEROPAGENULLUzna` ix;Mjm@l@֓] ] q% %  q) ) i#    ` !"# %) * -0)& 631 $. *(,2/'+$__CBM____C64__ runtime/add.sca65 V2.18 - Git cab4910atosadda0tosaddaxsptmp1/home/pzp/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 - &)[{(@ĴfaXW  q  H q  h` + &)[|(@֓]W  q  H q  h`            -__CBM____C64__runtime/addeqsp.sca65 V2.17 - Git 6c320f7addeq0spaddeqyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  #Lo{"@ĴfaXR +__CBM____C64__runtime/addeqsp.sca65 V2.18 - Git cab4910aaddeq0spaddeqyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  #Lo|"@֓]R H e    h`            -__CBM____C64__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<+!__CBM____C64__zlib/adler32.sca65 V2.17 - Git 6c320f7_adler32incsp2incsp4popptr1popeaxsregptr1ptr2tmp1BASE.size@L1@L0@L2@RET@L3@L4@L5@L6@L7@L8@L9CODERODATABSSDATAZEROPAGENULLUzna` iqx3D|@Ĵ([A +__CBM____C64__runtime/addysp.sca65 V2.18 - Git cab4910aaddysp1addyspsp.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqg= !$Ae5#6@֓]0ma   8 +85 5/T/ $ +$: :44" " H 6)q 77-   ,??.!2 e  'e * * +33 >& &   ++ + 9 < <((   %%  11` = =0;L +  < :"  5  + * += $8#@U -P0MHG?")>& 9C86E31A4; J.!I=5F%7@*(,RK/: #'BSDQ<+!__CBM____C64__zlib/adler32.sca65 V2.18 - Git cab4910a_adler32incsp2incsp4popptr1popeaxsregptr1ptr2tmp1BASE.size@L1@L0@L2@RET@L3@L4@L5@L6@L7@L8@L9CODERODATABSSDATAZEROPAGENULLUzna` iqx3D}@֓]A  ɀ    `    -  __CBM____C64__runtime/along.sca65 V2.17 - Git 6c320f7aulongalongsreg.sizestoreCODERODATABSSDATAZEROPAGENULLUzna` ix#&r%s@ĴfaX -faXI  1 H!1 hL - !"# %    $__CBM____C64__ 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)= IL8%K&@ĴD*[faX/%  +  __CBM____C64__runtime/along.sca65 V2.18 - Git cab4910aaulongalongsreg.sizestoreCODERODATABSSDATAZEROPAGENULLUzna` ix#&h%i@֓] +]I  1 H!1 hL + !"# %    $__CBM____C64__ runtime/and.sca65 V2.18 - Git cab4910atosanda0tosandaxaddysp1spptr4/home/pzp/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz)= IL/K@֓]]/%   H I     H I  @@ -20785,23 +24251,23 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODAT L %C  !"   /  -0)&96314$. 5 -%7*(,2/: '+#__CBM____C64__../libwrk/c64/asctime.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_asctime _strftimeL000A.sizeL0005pushaxpusha0ldaxyspL000Dincsp2CODERODATABSSDATAZEROPAGENULLUzna` iqe 3,x@ĴfaX.   +%7*(,2/: '+#__CBM____C64__../libwrk/c64/asctime.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_asctime _strftimeL000A.sizeL0005pushaxpusha0ldaxyspL000Dincsp2CODERODATABSSDATAZEROPAGENULLUzna` iqe 3,y@֓].   &  `         -__CBM____C64__runtime/aslax1.sca65 V2.17 - Git 6c320f7aslax1shlax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqt - =Fx@ĴfaX=    +__CBM____C64__runtime/aslax1.sca65 V2.18 - Git cab4910aaslax1shlax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqt + =Fy@֓]=    &   &   `          -__CBM____C64__runtime/aslax2.sca65 V2.17 - Git 6c320f7aslax2shlax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq G`x@ĴfaXL   +__CBM____C64__runtime/aslax2.sca65 V2.18 - Git cab4910aaslax2shlax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq G`y@֓]L   &   &    &  `           -__CBM____C64__runtime/aslax3.sca65 V2.17 - Git 6c320f7aslax3shlax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq &)Qzx(@ĴfaX[   +__CBM____C64__runtime/aslax3.sca65 V2.18 - Git cab4910aaslax3shlax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq &)Qzy(@֓][    &   &   &  @@ -20809,17 +24275,17 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODAT            -__CBM____C64__runtime/aslax4.sca65 V2.17 - Git 6c320f7aslax4shlax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqB\@ĴfaXH +__CBM____C64__runtime/aslax4.sca65 V2.18 - Git cab4910aaslax4shlax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqB\@֓]H     & &  &  `            -__CBM____C64__runtime/asleax1.sca65 V2.17 - Git 6c320f7asleax1shleax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq,CFVE@ĴfaXq +__CBM____C64__runtime/asleax1.sca65 V2.18 - Git cab4910aasleax1shleax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq,CFVE@֓]q     & & &   & & &  `             -__CBM____C64__runtime/asleax2.sca65 V2.17 - Git 6c320f7asleax2shleax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqBXorj\q]@ĴfaX +__CBM____C64__runtime/asleax2.sca65 V2.18 - Git cab4910aasleax2shleax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqBXorj]q^@֓]    @@ -20827,51 +24293,51 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODAT & & &  &  & &  `              -__CBM____C64__runtime/asleax3.sca65 V2.17 - Git 6c320f7asleax3shleax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq,/Q.@ĴfaX]     +__CBM____C64__runtime/asleax3.sca65 V2.18 - Git cab4910aasleax3shleax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq,/Q.@֓]]     & &  &  `            -__CBM____C64__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    +__CBM____C64__runtime/asleax4.sca65 V2.18 - Git cab4910aasleax4shleax4sregtmp1.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqahk9j@֓] ^ @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/'+__CBM____C64__ dbg/asmtab.sca65 V2.17 - Git 6c320f7 OffsetTab +%7*(,2/'+__CBM____C64__ dbg/asmtab.sca65 V2.18 - Git cab4910a OffsetTab AdrFlagTab SymbolTab1 -SymbolTab2 MnemoTab1 MnemoTab2.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqHcd@ĴfaX<4   +SymbolTab2 MnemoTab1 MnemoTab2.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqHde@֓]<4     H'$)8*&&h -(ɀ j -!!h`"hɀ %%`,ih)  +f j ` # .-MHG)&9C8L6E1A;!F%7@N*,2: 'BD<+__CBM____C64__ runtime/asr.sca65 V2.17 - Git 6c320f7tosasraxasraxypopaxtmp1.sizeL2L3L6L1L4L5L7CODERODATABSSDATAZEROPAGENULLUzna` iqk 3'q@ĴfaX4 +(ɀ j -!!h`"hɀ %%`,ih)  +f j ` # .-MHG)&9C8L6E1A;!F%7@N*,2: 'BD<+__CBM____C64__ runtime/asr.sca65 V2.18 - Git cab4910atosasraxasraxypopaxtmp1.sizeL2L3L6L1L4L5L7CODERODATABSSDATAZEROPAGENULLUzna` iqk 3'r@֓]4   f j `          -__CBM____C64__runtime/asrax1.sca65 V2.17 - Git 6c320f7asrax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq +__CBM____C64__runtime/asrax1.sca65 V2.18 - Git cab4910aasrax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  -BLq @ĴfaXI   f j +BLr @֓]I   f j f  j `              -__CBM____C64__runtime/asrax2.sca65 V2.17 - Git 6c320f7asrax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq   Qqq@ĴfaX^  +__CBM____C64__runtime/asrax2.sca65 V2.18 - Git cab4910aasrax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq   Qqr@֓]^  f  jf  jf j `   -        __CBM____C64__runtime/asrax3.sca65 V2.17 - Git 6c320f7asrax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq ' 36`q5@ĴfaXs  f jf  jf j f +        __CBM____C64__runtime/asrax3.sca65 V2.18 - Git cab4910aasrax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq ' 36`r5 @֓]s  f jf  jf j f  j `       -    __CBM____C64__runtime/asrax4.sca65 V2.17 - Git 6c320f7asrax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq #&Gmx%@ĴfaX^    f f  f  j ` +    __CBM____C64__runtime/asrax4.sca65 V2.18 - Git cab4910aasrax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq #&Gmy%@֓]^    f f  f  j `             -__CBM____C64__runtime/asreax1.sca65 V2.17 - Git 6c320f7asreax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq5I UX`x0W1@ĴfaX   +__CBM____C64__runtime/asreax1.sca65 V2.18 - Git cab4910aasreax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq5I UX`y1W2@֓]    f f f  jf f f j  `             -__CBM____C64__runtime/asreax2.sca65 V2.17 - Git 6c320f7asreax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqd{ yx{|@ĴfaX "   f f f j f f f +__CBM____C64__runtime/asreax2.sca65 V2.18 - Git cab4910aasreax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqd{ yy|}@֓] "   f f f j f f f  j f f f j `           -__CBM____C64__runtime/asreax3.sca65 V2.17 - Git 6c320f7asreax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq, 8;V| :@ĴfaXs +__CBM____C64__runtime/asreax3.sca65 V2.18 - Git cab4910aasreax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq, 8;V}:@֓]s     f f  f j `            -__CBM____C64__runtime/asreax4.sca65 V2.17 - Git 6c320f7asreax4sregtmp1.size@L1CODERODATABSSDATAZEROPAGENULLUzna` i< DE@ĴfaX faX #faX<8+ +__CBM____C64__runtime/asreax4.sca65 V2.18 - Git cab4910aasreax4sregtmp1.size@L1CODERODATABSSDATAZEROPAGENULLUzna` i< /0@֓] ] #]<8+   E= @@ -20885,9 +24351,9 @@ SymbolTab2 MnemoTab1 MnemoTab2.sizeCODERODATABSSDATAZEROPAGENULLUzna 2LM  M` =>   O?@A 320 -M %T PG?")> 9C86TA;$. -I="@ *(,R :# DQ<+B__CBM____C64__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)@CC]B@ĴfaX faX4%  '/ /A AW W 8 8Z +I="@ *(,R :# DQ<+B__CBM____C64__common/atexit.sca65 V2.18 - Git cab4910a_atexitdoatexitcallax/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX/home/pzp/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)@CCSB@֓] ]4%  '/ /A AW W 8 8Z Z)U55VV2 2??D+dII- 33Q--J J# # R R).`F` B @@ -20897,19 +24363,19 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510exitfunc_index e :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++__CBM____C64__ 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` iqx8I@Ĵ([A +F%_@N*aV,2cRKz/:u~ #`BSDZQ<YX++__CBM____C64__ common/atoi.sca65 V2.18 - Git cab4910a_atoi_atolnegeax__ctypesregptr1ptr2tmp1/home/pzp/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` iqx8I@֓]A     -  `       __CBM____C64__runtime/axlong.sca65 V2.17 - Git 6c320f7axulongaxlongsreg.sizestoreCODERODATABSSDATAZEROPAGENULLUzna` iqw BK@ĴfaX@    +  `       __CBM____C64__runtime/axlong.sca65 V2.18 - Git cab4910aaxulongaxlongsreg.sizestoreCODERODATABSSDATAZEROPAGENULLUzna` iqw BK@֓]@     ` `       -__CBM____C64__runtime/bneg.sca65 V2.17 - Git 6c320f7bnegabnegaxreturn0return1.sizeL0L1CODERODATABSSDATAZEROPAGENULLUzna` ix[ s] ^ @ĴfaX([4 S *t`D>Ry-Yl[jNB!FPX Hu%EDaOA;LG   : -gn4xo "i5K q_rU,&dT]\@tb. Q^I`sJeMVRS$C3__CBM____C64__c64/bordercolor.sca65 V2.17 - Git 6c320f7 _bordercolor(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +__CBM____C64__runtime/bneg.sca65 V2.18 - Git cab4910abnegabnegaxreturn0return1.sizeL0L1CODERODATABSSDATAZEROPAGENULLUzna` ix[ z]& ' @֓]]2 S &w`F@R<y-?YlpjNB!FP=X Hk%EDaA};L8ZG   9: +g+xz "i{~fmK q_2U,&dT]|>w\@b QWIJMVS$C3__CBM____C64__c64/bordercolor.sca65 V2.18 - Git cab4910a _bordercolor/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -20932,41 +24398,41 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqW 3(@ĴfaX +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqW 3(@֓]  L       -   __CBM____C64__runtime/bpushbsp.sca65 V2.17 - Git 6c320f7bpushbsp bpushbysppushasp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixUV2@ĴfaX ([4tS$ -$ -z -z ) -) %% - -_ H<_ I<RR` -U -Uss((" -S -S`h> -hA -Ah -h)Q -Qh 85 -h -  - -H -HL -Hj[ -[2 -2D -D@ c E :  3 VL 3v -vQ :v2EvA[cvD&%<r.%rhyj-UPYl0M][jlN?")B>& !FfPWX H8uL%OgEDaOAb;LT1A4;G eJ. : -gnd4xo= -"i%5K_[@N *q_rU,a&dTV],2\@cRtb./ :Q^I` #sJ'e`MBSDVZRQ<SYX$+C3__CBM____C64__ c64/break.sca65 V2.17 - Git 6c320f7_set_brk -_reset_brk_brk_a_brk_x_brk_y_brk_sr_brk_pc(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +   __CBM____C64__runtime/bpushbsp.sca65 V2.18 - Git cab4910abpushbsp bpushbysppushasp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixWX@֓] ]2tS$ +$ +| +| ( +( %% + +a H<a I<SS` +W +Wss''" +U +U`h: +h? +?h +h)R +Rh 83 +h +  + +H +HK +Hm] +]/ +/B +B@ e D 7  0 XL 0v +vR 7v/Dv?]evB&%9r+%r<hyj-?UPYlp0M]jlN?")B>& !FfP=WX H8Lk%OgEDaA}b;L8T1ZA4;G eJ. 9: +g+dxz= +"i{~%fmK_[@N *q_2U,a&dTV]|>,2w\@cRb/ :QWI #J'`MBSDVZQ<SYX$+C3__CBM____C64__ c64/break.sca65 V2.18 - Git cab4910a_set_brk +_reset_brk_brk_a_brk_x_brk_y_brk_sr_brk_pc/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -20989,7 +24455,7 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeoldvecuservecL1 brk_handler@L9CODERODATABSSDATAZEROPAGENULLUzna` kzxv "EF@ĴD*[faXA+  +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeoldvecuservecL1 brk_handler@L9CODERODATABSSDATAZEROPAGENULLUzna` kzxv "<=@֓]]A+   ] ] T T  @@ -21037,79 +24503,122 @@ CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_Fas 9OL' ',-./0*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+1__CBM____C64__../libwrk/c64/bsearch.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_bsearchpushaxdecsp4push0ldaxyspdecax1L0019L0005.sizeasrax1staxysppushwysp tosumulaxtosaddaxjmpvecincsp2L0012incax1L0025stax0sptosicmpL0020L0001addyspCODERODATABSSDATAZEROPAGENULLUzna` iqR $urs@ĴfaX  -`  -      __CBM____C64__ cbm/c_acptr.sca65 V2.17 - Git 6c320f7 _cbm_k_acptrACPTR.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqR $urs@ĴfaX  -`  -      __CBM____C64__ cbm/c_basin.sca65 V2.17 - Git 6c320f7 _cbm_k_basinBASIN.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq= oGH@ĴfaX  -   - __CBM____C64__ cbm/c_bsout.sca65 V2.17 - Git 6c320f7 _cbm_k_bsoutBSOUTCODERODATABSSDATAZEROPAGENULLUzna` iqf 8%|@ĴfaX/ -  - -` -        -__CBM____C64__ cbm/c_chkin.sca65 V2.17 - Git 6c320f7 _cbm_k_chkinCHKIN.size@NotOkCODERODATABSSDATAZEROPAGENULLUzna` iq= oBC@ĴfaX  -   __CBM____C64__ cbm/c_ciout.sca65 V2.17 - Git 6c320f7CIOUT _cbm_k_cioutCODERODATABSSDATAZEROPAGENULLUzna` iqf 3 |@ĴfaX/ -  -  ` -    -   __CBM____C64__ cbm/c_ckout.sca65 V2.17 - Git 6c320f7 _cbm_k_ckoutCKOUT.size@NotOkCODERODATABSSDATAZEROPAGENULLUzna` iq= oBC@ĴfaX  -   __CBM____C64__ cbm/c_clall.sca65 V2.17 - Git 6c320f7CLALL _cbm_k_clallCODERODATABSSDATAZEROPAGENULLUzna` iqL $ulm@ĴfaXL -  -      -__CBM____C64__ cbm/c_close.sca65 V2.17 - Git 6c320f7 _cbm_k_closeCLOSE.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq= oGH@ĴfaX  -   - __CBM____C64__ cbm/c_clrch.sca65 V2.17 - Git 6c320f7 _cbm_k_clrchCLRCHCODERODATABSSDATAZEROPAGENULLUzna` iqR $urs@ĴfaX  -`  -      __CBM____C64__ cbm/c_getin.sca65 V2.17 - Git 6c320f7 _cbm_k_getinGETIN.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqe 8$x@ĴfaX.   -H -h`  -        -__CBM____C64__cbm/c_iobase.sca65 V2.17 - Git 6c320f7 _cbm_k_iobaseIOBASE.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq= rEF@ĴfaX  -   __CBM____C64__cbm/c_listen.sca65 V2.17 - Git 6c320f7LISTEN _cbm_k_listenCODERODATABSSDATAZEROPAGENULLUzna` iqB` loyrns@ĴfaX      - -  -   - -    Hh`    -      -__CBM____C64__ cbm/c_load.sca65 V2.17 - Git 6c320f7 _cbm_k_loadLOAD __oserrorpopaptr1.size@OkCODERODATABSSDATAZEROPAGENULLUzna` iqa .y@ĴfaX*   -` -      __CBM____C64__ cbm/c_open.sca65 V2.17 - Git 6c320f7 _cbm_k_openOPEN.size@NotOkCODERODATABSSDATAZEROPAGENULLUzna` iqR $xuv@ĴfaX  -`  -      __CBM____C64__cbm/c_readst.sca65 V2.17 - Git 6c320f7 _cbm_k_readstREADST.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq6 BEV&D'@Ĵ([r     - - -     -`     -     -__CBM____C64__ cbm/c_save.sca65 V2.17 - Git 6c320f7 _cbm_k_saveSAVEpopptr1ptr1tmp1.size@NotOkCODERODATABSSDATAZEROPAGENULLUzna` iq= rEF@ĴfaX  -   __CBM____C64__cbm/c_scnkey.sca65 V2.17 - Git 6c320f7SCNKEY _cbm_k_scnkeyCODERODATABSSDATAZEROPAGENULLUzna` iq= rJK@Ĵ([  -    __CBM____C64__cbm/c_second.sca65 V2.17 - Git 6c320f7SECOND _cbm_k_secondCODERODATABSSDATAZEROPAGENULLUzna` iqt  BK@ĴfaX= -     -  - L -     -      -__CBM____C64__cbm/c_setlfs.sca65 V2.17 - Git 6c320f7 _cbm_k_setlfsSETLFSpopatmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq! -0Q/@ĴfaXh -    -   L -           __CBM____C64__cbm/c_setnam.sca65 V2.17 - Git 6c320f7 _cbm_k_setnamSETNAMptr1.size@LoopCODERODATABSSDATAZEROPAGENULLUzna` iq= l?@@ĴfaX  -   __CBM____C64__ cbm/c_talk.sca65 V2.17 - Git 6c320f7TALK _cbm_k_talkCODERODATABSSDATAZEROPAGENULLUzna` iq= lDE@Ĵ([  -    __CBM____C64__ cbm/c_tksa.sca65 V2.17 - Git 6c320f7TKSA _cbm_k_tksaCODERODATABSSDATAZEROPAGENULLUzna` iq= oBC@ĴfaX  -   __CBM____C64__ cbm/c_udtim.sca65 V2.17 - Git 6c320f7UDTIM _cbm_k_udtimCODERODATABSSDATAZEROPAGENULLUzna` iq= oBC@ĴfaX  -   __CBM____C64__ cbm/c_unlsn.sca65 V2.17 - Git 6c320f7UNLSN _cbm_k_unlsnCODERODATABSSDATAZEROPAGENULLUzna` iq= oGH@Ĵ([  -    __CBM____C64__ cbm/c_untlk.sca65 V2.17 - Git 6c320f7 _cbm_k_untlkUNTLKCODERODATABSSDATAZEROPAGENULLUzna` iqa $@ĴfaX*   l +F%7_ [@N*(arV,2wcRKv/: #'`BSDZQ<YX+1__CBM____C64__../libwrk/c64/bsearch.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_bsearchpushaxdecsp4push0ldaxyspdecax1L0019L0005.sizeasrax1staxysppushwysp tosumulaxtosaddaxjmpvecincsp2L0012incax1L0025stax0sptosicmpL0020L0001addyspCODERODATABSSDATAZEROPAGENULLUzna` ixR @֓]]:  +`,;<=>?8 8</-?) !F= (%E#'  6 ++4 "5*2,1&>. 0$3@__CBM____C64__ cbm/c_acptr.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_acptr.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixR @֓]]:  +`,;<=>?*8 8</-?) !F= (%E#'  6 ++4 "5*2,1&>. 0$3@__CBM____C64__ cbm/c_basin.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_basin.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix=  +@֓]]9:;<=>,%8 5</-? ) !F= (%E#' 6 ++4"5*2,1&>. 0$3?__CBM____C64__ cbm/c_bsout.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_bsoutCODERODATABSSDATAZEROPAGENULLUzna` ixf -!  +@֓]]/; +"  +0`<=>?@'*8 <</-?) !F= (%E#'  6 ++4 "5*2,1&>. 0$3A__CBM____C64__ cbm/c_chkin.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_chkin.size@NotOkCODERODATABSSDATAZEROPAGENULLUzna` ix= @֓]]9:;<=>84</-?)!F= (%E#' 6 ++4 +"5*2,1&>. 0$3?__CBM____C64__ cbm/c_ciout.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_cioutCODERODATABSSDATAZEROPAGENULLUzna` ixf (@֓]]/; +!  +/`<=>?@(8 ;</-?) !F= (%E#'  6 ++4 "5*2,1&>. 0$3A__CBM____C64__ cbm/c_ckout.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_ckout.size@NotOkCODERODATABSSDATAZEROPAGENULLUzna` ix= @֓]]9:;<=>0 8  4</-?) !F= (%E#' 6 ++4"5*2,1&>. 0$3?__CBM____C64__ cbm/c_clall.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_clallCODERODATABSSDATAZEROPAGENULLUzna` ixL @֓]]:L +;<=>?48 7</-? ) !F= (%E#'  6 ++4 "5*2,1&>. 0$3@__CBM____C64__ cbm/c_close.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_close.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix=  +@֓]]9:;<=>)+8 5</-? ) !F= (%E#' 6 ++4"5*2,1&>. 0$3?__CBM____C64__ cbm/c_clrch.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_clrchCODERODATABSSDATAZEROPAGENULLUzna` ixR @֓]]:  +`;<=>?/8 8</-? ) !F= (%E#'  6 ++4 "5*2,1&>. 0$3@__CBM____C64__ cbm/c_getin.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_getin.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixe - @֓]].:   +"H0h`;<=>?& 8 <</-? ) !F= (%E#'  6 ++4 "5*2,1&>. 0$3@__CBM____C64__cbm/c_iobase.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_iobase.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix= @֓]]9:;<=>  8  4</-?) !F= (%E#' 6 ++4"5*2,1&>. 0$3?__CBM____C64__cbm/c_listen.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_listenCODERODATABSSDATAZEROPAGENULLUzna` ixIg sviu@֓]]>9 9% %  +    +! +!. .B BH?: h'`?@ABC;#9%.B:9*! 8H</-? ) !F= (%E#'  6 ++4 +"5*2,1&>. 0$3D__CBM____C64__ cbm/c_load.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_load __oserrorpopaptr1.size@OkCODERODATABSSDATAZEROPAGENULLUzna` ixa #@֓]]*;   + ..`<=>?@ 8 :</-?) !F= (%E#'  6 ++4 "5*2,1&>. 0$3A__CBM____C64__ cbm/c_open.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_open.size@NotOkCODERODATABSSDATAZEROPAGENULLUzna` ixR @֓]]:  +`,;<=>?08 8</-?) !F= (%E#'  6 ++4 "5*2,1&>. 0$3@__CBM____C64__cbm/c_readst.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_readst.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix!= ILKK@֓]]r>5 5" "  +     +**<`?@ABC;5":9&!18B</-? ) !F= (%E#' 6 ++4 +"5*2,1&>. 0$3D__CBM____C64__ cbm/c_save.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_savepopptr1ptr1tmp1.size@NotOkCODERODATABSSDATAZEROPAGENULLUzna` ix= @֓]]9:;<=>& 8  4</-?) !F= (%E#' 6 ++4"5*2,1&>. 0$3?__CBM____C64__cbm/c_scnkey.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_scnkeyCODERODATABSSDATAZEROPAGENULLUzna` ix=  +@֓]]9:;<=>*8 5</-? ) !F= (%E#' 6 ++4"5*2,1&>. 0$3?__CBM____C64__cbm/c_second.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_secondCODERODATABSSDATAZEROPAGENULLUzna` ixt 2B/0@֓]]=<    +  + L +=>?@A:$9 8 =</-? )!F= (%E#'  6 ++4 "5*2,1&>. 0$3B__CBM____C64__cbm/c_setlfs.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_setlfspopatmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix( 47Axf6g@֓]]h< 3 3  ( (L: +:=>?@A9$3(%:8# @</-?) !F= (%E#' 6 ++4 +"5*2,1&>. 0$3B__CBM____C64__cbm/c_setnam.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_setnamptr1.size@LoopCODERODATABSSDATAZEROPAGENULLUzna` ix= @֓]]9:;<=>- 8  4</-?) !F= (%E#' 6 ++4"5*2,1&>. 0$3?__CBM____C64__ cbm/c_talk.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_talkCODERODATABSSDATAZEROPAGENULLUzna` ix=  +@֓]]9:;<=>08 5</-? ) !F= (%E#' 6 ++4"5*2,1&>. 0$3?__CBM____C64__ cbm/c_tksa.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_tksaCODERODATABSSDATAZEROPAGENULLUzna` ix= @֓]]9:;<=>1 8  4</-?) !F= (%E#' 6 ++4"5*2,1&>. 0$3?__CBM____C64__ cbm/c_udtim.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_udtimCODERODATABSSDATAZEROPAGENULLUzna` ix= @֓]]9:;<=>( 8  4</-?) !F= (%E#' 6 ++4"5*2,1&>. 0$3?__CBM____C64__ cbm/c_unlsn.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_unlsnCODERODATABSSDATAZEROPAGENULLUzna` ix=  +@֓]]9:;<=>/8 5</-? ) !F= (%E#' 6 ++4"5*2,1&>. 0$3?__CBM____C64__ cbm/c_untlk.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE _cbm_k_untlkCODERODATABSSDATAZEROPAGENULLUzna` iqa $@֓]*   l        -__CBM____C64__runtime/call.sca65 V2.17 - Git 6c320f7callaxptr1.size"jmp (abs)" across page borderCODERODATABSSDATAZEROPAGENULL HUzna` iqKe?/@ĴfaX H  +__CBM____C64__runtime/call.sca65 V2.18 - Git cab4910acallaxptr1.size"jmp (abs)" across page borderCODERODATABSSDATAZEROPAGENULL HUzna` iqKe?/@֓] H         `    )   - ?")>&9C86A4;$!=5%7@(: B<__CBM____C64__runtime/callirq.sca65 V2.17 - Git 6c320f7callirq callirq_y __CALLIRQ__irq_initirq_done__INTERRUPTOR_TABLE____INTERRUPTOR_COUNT__initirqdoneirq.sizeloopjmpvecindexdoneCODERODATABSSDATAZEROPAGENULLUzna` iq,,X[V<Z=@ĴfaXj  + ?")>&9C86A4;$!=5%7@(: B<__CBM____C64__runtime/callirq.sca65 V2.18 - Git cab4910acallirq callirq_y __CALLIRQ__irq_initirq_done__INTERRUPTOR_TABLE____INTERRUPTOR_COUNT__initirqdoneirq.sizeloopjmpvecindexdoneCODERODATABSSDATAZEROPAGENULLUzna` iq,,X[V=Z>@֓]j      @@ -21117,7 +24626,7 @@ CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_Fas    L        -  $(#__CBM____C64__runtime/callmain.sca65 V2.17 - Git 6c320f7callmain__argc__argv_mainpushax.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq3L X[ogZh@ĴfaX  !  +  $(#__CBM____C64__runtime/callmain.sca65 V2.18 - Git cab4910acallmain__argc__argv_mainpushax.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq3L X[ohZi@֓]  !      @@ -21129,110 +24638,108 @@ CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_Fas L      !  0?& 31$5 -%*2/#<__CBM____C64__common/calloc.sca65 V2.17 - Git 6c320f7_calloc_malloc__bzero tosumulaxpushaxSize -ClearBlock.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqG @Ĵ([ l +%*2/#<__CBM____C64__common/calloc.sca65 V2.18 - Git cab4910a_calloc_malloc__bzero tosumulaxpushaxSize +ClearBlock.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqG @֓] l       -__CBM____C64__runtime/callptr4.sca65 V2.17 - Git 6c320f7callptr4ptr4.size"jmp (abs)" across page borderCODERODATABSSDATAZEROPAGENULL HUzna` iq= vNO@ĴfaX  +__CBM____C64__runtime/callptr4.sca65 V2.18 - Git cab4910acallptr4ptr4.size"jmp (abs)" across page borderCODERODATABSSDATAZEROPAGENULL HUzna` iq= wOP@֓]     - __CBM____C64__cbm/cbm_close.sca65 V2.17 - Git 6c320f7 _cbm_k_close -_cbm_closeCODERODATABSSDATAZEROPAGENULLUzna` kz &3Y\s9[:@ĴD*[/faX P  - = -= H I  - !((  -  -  -h _ -_ U -U  - !  - @ - @9 9   W - Wl !l  - 2 - 20 0   b - b)  - f ! - !  -E !  - P - P     -+ -+)  -  - ~ -~  -Jq !q  -  -   / -  -  ->i -i -DL} + __CBM____C64__cbm/cbm_close.sca65 V2.18 - Git cab4910a _cbm_k_close +_cbm_closeCODERODATABSSDATAZEROPAGENULLUzna` kzR h4_@ד]0] V  + = += H I  +  !**  +  +  +k ` +` V +V  + !  + @ + @: :   X + Xp !p  + 4 + 42 2   d + d+  + i # + #  +E !  + P + P     +- +-)  +  +  +  +Jv !v  +  +   1    +>l +l +DL -} , - ,{  -  -.  -  -  - !  -:L -c   -AALA -cA   - ] -]H  H    -  Z -Z Y - Y  - < -< s -s  -' !BL -C  -  -L -_\Lu -?u  -QLd -_d  - ! !"xL -{ F -FL -_ !meM  M   w w ! GqB !B ! C -C !"; !e    66 O O $ !$a:a-   !  7  7 y - y n -nS !SX  - !8 !"VVL -Y v -vL -_  - ! 3?  ?N !N*     k -k !E  E   ^ - ^` !`  - I -I  -ITg !gD*pp    -  - !<t(t  Kee&L -B5  L -Y  -RRL -_  - ! !j !j  - !H8 !   !  hL# -#  -  !  -L| -|Q$%%RSTU"O4|+4N4#D4I44s34<+41404"4,Yy^/4},4!+4Wb*4@2P)4(4U'4_&4%4$4"4!4= 4+i [rFv~c]ZCnkwO90 - HM7?E!B$SN`gjlqz ozLhm\jU -P0M]lHG?)o>sfW9C8LO6pEgtbk3T1A4;eJn$.^iqId= 5 -F7_[@N*(arV,2 cRKv/:~`BSDZQ<YX+V__CBM____C64__../libwrk/c64/cbm_dir.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac__cbm_filetype _cbm_k_basin _cbm_k_chkin _cbm_k_clrch _cbm_k_readst _cbm_open -_cbm_close _cbm_opendir _cbm_readdir _cbm_closedir __oserrorL0007.sizeenterdecsp2pushaxL00B0leaa0spincax3staxyspsubeqyspldaxistax0spincax4pushaldaxyspL0024L00B1leaveyregswap2decsp1L0032tosorax staxspidxL00B6L0042L00B8L0040L00BEL00B5L004CL0050L0060L0056L005CL00B2L00B3L007EL0070staspidxL00A1L0078L0084L008DL00BDL00BAL00BCL009FL00A3incsp7incsp1CODERODATABSSDATAZEROPAGENULLUzna` ipq |_~@ĴfaX faXfaXV'8C   ""1 +  + A  + ^ +^H  +  +[ Z +Z !  +<L +c  x +x))L) +c)   +  +      +   +  +   +  +  + ] +]z !RBffL +C  +  +}L +_FL +?  +L +_ r +r !M !"L +{ | +|L +_ !GBBeC  C  ;   ! 7qO !O !  + !"&cc/ !/e    8 8~ ~sT TY !:  $W !W  {  {  +   + !  + !85 !?LN +YN  +L +_ o +o ! E_b  b !*I U   j +j,u !u      +  !  +  + y +yIKh !hD(6    +  +S !<(  L +Bn  L +Y  +9 L +_  + !% !%m !m g +g !Ha !at  t !  hL +   +q !  +L +7W$''0XYZ["UQ+QTQ JQ:Q9Q+QZ7Q^6Q"Q/Q,Q#+QXd*Q@4P)Q(QV'Q`&Q%Q$Q"Q!Q= Q-l +\wx|ge]rojy8~T:2  C{bt!O/Wuh%mapvz Lhm\jU -P0M]lHG?)o>sfW9C8LO6pEgtbk3T1A4;eJn$.^iqId= 5 +F7_[@N*(arV,2 cRKv/:~`BSDZQ<YX+\__CBM____C64__../libwrk/c64/cbm_dir.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac__cbm_filetype _cbm_k_basin _cbm_k_chkin _cbm_k_clrch _cbm_k_readst _cbm_open +_cbm_close _cbm_opendir _cbm_readdir _cbm_closedir __oserrorL0007.sizeenterdecsp2pushaxL00B7leaa0spincax3staxyspsubeqyspldaxistax0spincax4pushaldaxyspL0024L00B8leaveyL0048L0055L0062L0085L00ABL00B0regswap2decsp1L0032tosorax staxspidxL00BDL0042L00BFL0040L00C5L00BCL004DL0051L0063L0058L005EL00B9L00BAL0081L0073staspidxL00A5L007BL0088L0091L00C4L00C1L00C3L00A3L00A7incsp7incsp1CODERODATABSSDATAZEROPAGENULLUzna` ipq |J~@ד] ]]V'8C   ""1 1``-j #,*$.) +!3-G"& 63A4; $!  -=5%7/  #BD<__CBM____C64__cbm/cbm_filetype.sca65 V2.17 - Git 6c320f71/home/hugg/compilers/cc65/asminc/cbm_filetype.inc CBM_T_REG CBM_T_SEQ CBM_T_PRG CBM_T_USR CBM_T_REL CBM_T_VRP CBM_T_DEL CBM_T_CBM CBM_T_DIR CBM_T_LNK CBM_T_OTHER CBM_T_HEADER__cbm_filetype,/home/hugg/compilers/cc65/asminc/generic.mac TypeTable.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` kz1= R@ĴD*[faXD/  +=5%7/  #BD<__CBM____C64__cbm/cbm_filetype.sca65 V2.18 - Git cab4910a&/home/pzp/cc65/asminc/cbm_filetype.inc CBM_T_REG CBM_T_SEQ CBM_T_PRG CBM_T_USR CBM_T_REL CBM_T_VRP CBM_T_DEL CBM_T_CBM CBM_T_DIR CBM_T_LNK CBM_T_OTHER CBM_T_HEADER__cbm_filetype!/home/pzp/cc65/asminc/generic.mac TypeTable.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` kz1= I@ד]]D/    &" "   # @@ -21246,7 +24753,7 @@ _cbm_close _cbm_opendir _cbm_readdir _cbm_closedir __oserrorL0007.sizeenterd 8  H   h L! ! !"# !$# ( " D%) -0")&986314$.!= 5 -%7*(,2/: #'<+$__CBM____C64__../libwrk/c64/cbm_load.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac _cbm_k_load _cbm_k_setlfs _cbm_k_setnam _cbm_loadpushaxpushaldaxyspL000Bbooleq.sizeincsp5CODERODATABSSDATAZEROPAGENULLUzna` iq" .1`506@ĴfaX[ H H  +%7*(,2/: #'<+$__CBM____C64__../libwrk/c64/cbm_load.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac _cbm_k_load _cbm_k_setlfs _cbm_k_setnam _cbm_loadpushaxpushaldaxyspL000Bbooleq.sizeincsp5CODERODATABSSDATAZEROPAGENULLUzna` iq" .1`607@ד][ H H     hh    @@ -21255,19 +24762,20 @@ _cbm_close _cbm_opendir _cbm_readdir _cbm_closedir __oserrorL0007.sizeenterd  `    -  "$%*(, #'__CBM____C64__cbm/cbm_open.sca65 V2.17 - Git 6c320f7 _cbm_openpopa _cbm_k_setlfs _cbm_k_setnam _cbm_k_open __oserror.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixlQ (@ĴfaXfaX ]NI- -I% % & -&     -7 $ +  "$%*(, #'__CBM____C64__cbm/cbm_open.sca65 V2.18 - Git cab4910a _cbm_openpopa _cbm_k_setlfs _cbm_k_setnam _cbm_k_open __oserror.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixlQ @ד]]F]NI + +NI). . " +"> >  U +U/ _ + _;=;-Y Y [%[  -$ = 3 4 4% # - #1&1  -' '  - )600 + +9 9885 5  2 2)) //  -  ` - `" !"# ,,&:':4: +95:-%2(((# ($  -;h\jU-P0M])o>9C78pEgAb38T14;eJn^9:qI=57N*arV,2@cRK`BDZQ<YX+$__CBM____C64__cbm/cbm_read.sca65 V2.17 - Git 6c320f7 cbm/cbm.inc +81&1  +   ! + +!)^^Z Z*  aa` `A A @ @XXH H'' 9 +9 $ $`4 +2`#GHIJK ?M>dU=d"<C Z;CYA$:C>`9C+.@H*)Q9'G_T!8Sf<m\/-?UP0M]H)o)!Ff=W C8L(%O6pgEb#3T1'A4; Jn6i +q+Id4="75_[**2,a1&>,2./ :`BSD0Q<YX$+3L__CBM____C64__cbm/cbm_read.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN -MAX_DRIVES FIRST_DRIVE _cbm_readCHKINREADSTBASINCLRCHptr1ptr2ptr3tmp1popaxpopa __oserror.size@E1@L3@L1@L4@L2CODERODATABSSDATAZEROPAGENULLUzna` kzA X@ĴD*[faX;)  +MAX_DRIVES FIRST_DRIVE _cbm_readptr1ptr2ptr3tmp1popaxpopa __oserror.size@E1@L3@L1@L4@L2CODERODATABSSDATAZEROPAGENULLUzna` kzA O@ד]];)   $ $!   "  @@ -21281,64 +24789,33 @@ MAX_DRIVES FIRST_DRIVE _cbm_readCHKINREADSTBASINCLRCHptr1ptr2ptr3tmp1po  !"#    % $   # ;& -0")&96314$.! 5 -%7*(,2/: #'+$__CBM____C64__../libwrk/c64/cbm_save.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac _cbm_k_save _cbm_k_setlfs _cbm_k_setnam _cbm_save __oserrorpushaxpushaldaxysppushwyspincsp7.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixGa mppo@ĴfaXfaX kL? & &I2( (I, ,  -) )   -  " - "(    - . .  00   - + + % -% 1 1`/ -$ -$` !" -!$ -&1-). -(,+% " '3\-P]G?")>W9C78L6EA381AJ$.^!9:I=5%7_[N*(,2@K/#BSDQ+#__CBM____C64__cbm/cbm_write.sca65 V2.17 - Git 6c320f7 cbm/cbm.inc +%7*(,2/: #'+$__CBM____C64__../libwrk/c64/cbm_save.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac _cbm_k_save _cbm_k_setlfs _cbm_k_setnam _cbm_save __oserrorpushaxpushaldaxysppushwyspincsp7.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixGa mpG`oa@ד]]kEL?> > I<\ \GI* *  + # #H H & +&3  +7(7 Y + Y2:% %T TU U 4 +4 00( (KK  +   `JDX +X9` FGHIJ +>)X=P&<P ;>:#H%TU9\*(,B4)M (OY8S-^<\/-?-P0M]H"))>!F= C8(%O6E#1'A4 J$.6^! ++I4=5F"75[@**(2,1&V>,2RK. #'BD0Z<$+3K__CBM____C64__cbm/cbm_write.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN MAX_DRIVES FIRST_DRIVE -_cbm_writeCKOUTREADSTBSOUTCLRCHptr1ptr2ptr3popaxpopa __oserror.size@E2@L3@L1@E1@L2CODERODATABSSDATAZEROPAGENULLUzna` ix+A MP/O@ĴfaXfaX|H   -e    hL -    -    &  $!  #'!__CBM____C64__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\#@ĴfaXfaX4 -    -L -   -    -    __CBM____C64__common/cc65_imul16x16r32.sca65 V2.17 - Git 6c320f7_cc65_imul16x16r32 imul16x16r32popax-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq[ )@ĴfaX$ -   -L -    __CBM____C64__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<__CBM____C64__common/cc65_sincos.sca65 V2.17 - Git 6c320f7 _cc65_cos _cc65_sin _cc65_sintab.size@L1@L2@L3L3L4L1L2L5L6L7CODERODATABSSDATAZEROPAGENULLUzna` ix;X dg0f @ĴfaXfaX     -e     L -   -   -   "&  $!  '!__CBM____C64__common/cc65_udiv32by16r16.sca65 V2.17 - Git 6c320f7_cc65_udiv32by16r16udiv32by16r16mincsp4-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace@L1.size@L2CODERODATABSSDATAZEROPAGENULLUzna` ixk V\#@ĴfaXfaX4 -    -L -     -  -   __CBM____C64__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 -  - -        __CBM____C64__common/cc65_umul16x8r32.sca65 V2.17 - Git 6c320f7_cc65_umul16x8r32 umul8x16r24popax-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq[ )@ĴfaX$ -   -L -   __CBM____C64__common/cc65_umul8x8r16.sca65 V2.17 - Git 6c320f7_cc65_umul8x8r16 -umul8x8r16popaptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq69V8 @ĴfaX] H   +_cbm_writeptr1ptr2ptr3popaxpopa __oserror.size@E2@L3@L1@E1@L2CODERODATABSSDATAZEROPAGENULLUzna` iq69V 8!@ד]] H   h       `          -__CBM____C64__ cbm/cclear.sca65 V2.17 - Git 6c320f7 _cclearxy_ccleargotoxy -cputdirecttmp1.sizeL9L1CODERODATABSSDATAZEROPAGENULLUzna` ix :JR S @ĴfaX ([4FG8Nee9H1 - * -!*=IIrh  -! `xx  ttR RIFDDGGh66`m/`HcNPy--Yl0[jN)B!FPX 9Hu%6EDaOA;3L14;G  . : -gn4xo= 5"i%75K *q(_rU,&dT],2\@tb./ :Q^I` sJ'eMVRS$+C3__CBM____C64__ c64/cgetc.sca65 V2.17 - Git 6c320f7_cgetccursor(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +__CBM____C64__ cbm/cclear.sca65 V2.18 - Git cab4910a _cclearxy_ccleargotoxy +cputdirecttmp1.sizeL9L1CODERODATABSSDATAZEROPAGENULLUzna` i  "%[<$@ד] ]7]2RG8EE;H3 +3 ] +!]wh  +! `##|| ppIggttI`>uu`3{< yV/-S?Gk-C0zN~3c)B>&;HA]!FP=X_7+x8K|&IB6q% E-DaOA};a#3DL98p\i1'M4;:U.j6Q!Td9:g84xz} {5"X{75b?Kfm*(F_ U,YdT>,]|>,22<E\@tb.L$/l :Q@^Wy WP JN MZV= +wR<"!J+C__CBM____C64__ c64/cgetc.sca65 V2.18 - Git cab4910a_cgetccursor$/home/pzp/cc65/asminc/cbm_kernal.incCINTIOINITRAMTASRESTORVECTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSECHKINCKOUTCHKOUTCLRCHCLRCHNBASINCHRINBSOUTCHROUTLOADSAVESETTIMRDTIMSTOPGETINCLALLUDTIMSCREENPLOTIOBASECLRSCRKBDREADNMIEXIT +UPDCRAMPTR/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -21361,57 +24838,65 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeL3 setcursorL1L2setoncrs9crs8CODERODATABSSDATAZEROPAGENULLUzna` iqQ . @ĴfaX   +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeL3 setcursorL1L2setoncrs9crs8CODERODATABSSDATAZEROPAGENULLUzna` iqQ . @ד]   L        -__CBM____C64__common/chdir.sca65 V2.17 - Git 6c320f7_chdir -__syschdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq #@CV4B5@ĴfaXaH   +__CBM____C64__common/chdir.sca65 V2.18 - Git cab4910a_chdir +__syschdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq #@CV5B6@ד]aH   h       `            -__CBM____C64__ cbm/chline.sca65 V2.17 - Git 6c320f7 _chlinexy_chlinegotoxy +__CBM____C64__ cbm/chline.sca65 V2.18 - Git cab4910a _chlinexy_chlinegotoxy cputdirecttmp1 -chlinechar.sizeL9L1CODERODATABSSDATAZEROPAGENULLUzna` ip=uOP@ĴfaX}  -  ]@ __CBM____C64__cbm/clinechars.sca65 V2.17 - Git 6c320f7 +chlinechar.sizeL9L1CODERODATABSSDATAZEROPAGENULLUzna` ip=vPQ@ד]}  +  ]@ __CBM____C64__cbm/clinechars.sca65 V2.18 - Git cab4910a chlinechar -cvlinecharCODERODATABSSDATAZEROPAGENULLUzna` iql =7r@ĴfaX5 -    - ` -     - -   __CBM____C64__ cbm/clock.sca65 V2.17 - Git 6c320f7_clockRDTIMsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` i$5 un@Ĵ([ -faX %faX ,faX<8.B/B;;+' '% -)CC#!#1 -1M8i $ -$9 9 -  -H) . -.  -hL@ -@  L/ -/=>?@A..-!1&@&/ '9**$8"N  - ?")>A 98639 4:$.! -85 -F"7@ *,2 :@#B7+B__CBM____C64__ cbm/close.sca65 V2.17 - Git 6c320f7_closeCLOSE readdiskerrorclosecmdchanneltmp2*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno -__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX cbm/cbm.inc +cvlinecharCODERODATABSSDATAZEROPAGENULLUzna` ixl -.  @ד]]5; +0   + `<=>?@9"#8 +! <</-?) !F= (%E#' 6 ++4 +"5*2,1&>. 0$3A__CBM____C64__ cbm/clock.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVE_clocksreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` i$5 YGu@ד] ] $]W]g8.l/bbX+X +  +a9 +9)c!cHH +EwiRR  +1 1S +S . +.H5= =# +# A +AhL +L +hijklY3S#X69>^::> +1=A.87x - ?3")(> 49+8)&16'%6-3 /1A4.! +=5 +"7?* *(F >,,22<E#$  #50  = +"!+m__CBM____C64__ cbm/close.sca65 V2.18 - Git cab4910a_close readdiskerrorclosecmdchanneltmp2/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN MAX_DRIVES FIRST_DRIVEcbm/filedes.incfdtabunittabfreefdMAX_FDSLFN_OFFS LFN_CLOSEDLFN_READ LFN_WRITELFN_OPENLFN_EOF LFN_STDIN LFN_STDOUT -LFN_STDERR invalidfd.sizeCODERODATABSSDATAZEROPAGENULLUzna` iKc nqDhp@ĴfaXfaXfaX% +LFN_STDERR invalidfd.sizeCODERODATABSSDATAZEROPAGENULLUzna` iKc nqD^p@ד]]]%   & &"   ' 'H#H    ) )h!h`&'()*$)#' -&  *0) 14 $  5%* 2/# ++__CBM____C64__cbm/closedir.sca65 V2.17 - Git 6c320f7 cbm/dir.incDIRfd.sizeoffname_opendir _closedir_readdir_seekdir_telldir +&  *0) 14 $  5%* 2/# ++__CBM____C64__cbm/closedir.sca65 V2.18 - Git cab4910a cbm/dir.incDIRfd.sizeoffname_opendir _closedir_readdir_seekdir_telldir _rewinddir __dirread -__dirread1-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace_close_freeCODERODATABSSDATAZEROPAGENULLUzna` ixC wC  @ĴfaX([4D >y- Yl[jNB!FPX Hu%EDaOA;LG  : -gn4xo"i5K q_rU,&dT]\@tb. Q^I`sJeMVRS$C3__CBM____C64__ c64/clrscr.sca65 V2.17 - Git 6c320f7_clrscr(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +__dirread1"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace_close_freeCODERODATABSSDATAZEROPAGENULLUzna` ix= G @ד]]6789:;DA<y/-? NcB!FP=X7EDaOA};#L8'69:4xz"{5K_U,dT]|>\@tb. Q^WJMVRC<__CBM____C64__ c64/clrscr.sca65 V2.18 - Git cab4910a_clrscr$/home/pzp/cc65/asminc/cbm_kernal.incCINTIOINITRAMTASRESTORVECTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSECHKINCKOUTCHKOUTCLRCHCLRCHNBASINCHRINBSOUTCHROUTLOADSAVESETTIMRDTIMSTOPGETINCLALLUDTIMSCREENPLOTIOBASECLRSCRKBDREADNMIEXIT +UPDCRAMPTRCODERODATABSSDATAZEROPAGENULLUzna` ixt + e  f @ד]]28(zI`0!4!?c`!U<y-?YlpjNB !FP=X Hk%EDaA};L8ZG  9: +g+xz "i{~fmK q_2U,&dT]|>w\@b QWIJMVS$C3__CBM____C64__ c64/color.sca65 V2.18 - Git cab4910a +_textcolor_bgcolor/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -21434,41 +24919,10 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYCODERODATABSSDATAZEROPAGENULLUzna` ixt -    @ĴfaX([48,wG`1!5!=_`$ U y-Yl[jNB !FPX Hu%EDaOA;LG  : -gn4xo "i5K q_rU,&dT]\@tb. Q^I`sJeMVRS$C3__CBM____C64__ c64/color.sca65 V2.17 - Git 6c320f7 -_textcolor_bgcolor(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG -CURS_BLINK CURS_CHAR -CURS_STATE -SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC -VIC_SPR0_X -VIC_SPR0_Y -VIC_SPR1_X -VIC_SPR1_Y -VIC_SPR2_X -VIC_SPR2_Y -VIC_SPR3_X -VIC_SPR3_Y -VIC_SPR4_X -VIC_SPR4_Y -VIC_SPR5_X -VIC_SPR5_Y -VIC_SPR6_X -VIC_SPR6_Y -VIC_SPR7_X -VIC_SPR7_Y VIC_SPR_HI_X VIC_SPR_ENA VIC_SPR_EXP_Y VIC_SPR_EXP_XVIC_SPR_MCOLORVIC_SPR_BG_PRIOVIC_SPR_MCOLOR0VIC_SPR_MCOLOR1VIC_SPR0_COLORVIC_SPR1_COLORVIC_SPR2_COLORVIC_SPR3_COLORVIC_SPR4_COLORVIC_SPR5_COLORVIC_SPR6_COLORVIC_SPR7_COLOR VIC_CTRL1 VIC_CTRL2 VIC_HLINE -VIC_LPEN_X -VIC_LPEN_Y VIC_VIDEO_ADRVIC_IRRVIC_IMRVIC_BORDERCOLOR VIC_BG_COLOR0 VIC_BG_COLOR1 VIC_BG_COLOR2 VIC_BG_COLOR3 VIC_KBD_128 VIC_CLK_128SIDSID_S1LoSID_S1Hi SID_PB1Lo SID_PB1HiSID_Ctl1SID_AD1SID_SUR1SID_S2LoSID_S2Hi SID_PB2Lo SID_PB2HiSID_Ctl2SID_AD2SID_SUR2SID_S3LoSID_S3Hi SID_PB3Lo SID_PB3HiSID_Ctl3SID_AD3SID_SUR3 SID_FltLo SID_FltHi -SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DATACIA1CIA1_PRACIA1_PRB CIA1_DDRA CIA1_DDRBCIA1_TACIA1_TB -CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN -CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB -CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqb 8l@ĴfaX+ I HIh +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqb 8m@ד]+ I HIh `         - __CBM____C64__runtime/compl.sca65 V2.17 - Git 6c320f7complax.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix.$RUn -xTy@ĴfaX faXI&  . H.   H) I)L + __CBM____C64__runtime/compl.sca65 V2.18 - Git cab4910acomplax.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix.$RUnnTo@ד] ]I&  . H.   H) I)L `'()%2  2  4 @@ -21479,13 +24933,15 @@ CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_Fas    &`*+I,   H33/ H/ IL `0 . -) /%%     8-P0MHG" CLO6E3T14J!IF%@N 2RK/ #BD-__CBM____C64__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` ixCrJ  @ĴfaX([4_=j=y-Yl[jNB!FPX Hu%EDaOA;LG  : -gn4xo"i5K q_rU,&dT]\@tb. Q^I`sJeMVRS$C3__CBM____C64__ c64/conio.sca65 V2.17 - Git 6c320f7CURS_XCURS_Y(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +) /%%     8-P0MHG" CLO6E3T14J!IF%@N 2RK/ #BD-__CBM____C64__runtime/condes.sca65 V2.18 - Git cab4910ainitlibdonelibcondes__CONSTRUCTOR_TABLE____CONSTRUCTOR_COUNT____DESTRUCTOR_TABLE____DESTRUCTOR_COUNT__/home/pzp/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` ixC\4 + +@ד]]2e?m?<y-?YlpjNB!FP=X Hk%EDaA};L8ZG  9: +g+xz"i{~fmK q_2U,&dT]|>w\@b QWIJMVS$C3__CBM____C64__ c64/conio.sca65 V2.18 - Git cab4910aCURS_XCURS_Y/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -21508,16 +24964,16 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYCODERODATABSSDATAZEROPAGENULLUzna` iqB/ ;<@ĴfaX -, H +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYCODERODATABSSDATAZEROPAGENULLUzna` iqB/ <=@ד] -, H   I  H   I   HB IB       `     -  0"& 1 $! %,#'+__CBM____C64__common/copydata.sca65 V2.17 - Git 6c320f7copydata __DATA_LOAD__ __DATA_RUN__ __DATA_SIZE__ptr1ptr2tmp1.size@L1@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` ix#$ 03 2 @Ĵ([ ([4oR) l @h`@ HH`i}i A`^[y--Yl0[jN)B!FPX Hu%EDaOA;3L4G . : -gn4xo5"i5K *q(_rU,&dT]2\@tb./ Q^I` sJeMVRS$+C3__CBM____C64__ cbm/cpeekc.sca65 V2.17 - Git 6c320f7_cpeekc(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +  0"& 1 $! %,#'+__CBM____C64__common/copydata.sca65 V2.18 - Git cab4910acopydata __DATA_LOAD__ __DATA_RUN__ __DATA_SIZE__ptr1ptr2tmp1.size@L1@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` ix$% 14 3 @ד] ]2pT) p @l`@ JJ`ii C`^[<y-?-Ylp0jN)B!FP=X Hk%EDaA};3L8Z4G . 9: +g+xz5"i{~fmK *q(_2U,&dT]|>2w\@b/ QWI JMVS$+C3__CBM____C64__ cbm/cpeekc.sca65 V2.18 - Git cab4910a_cpeekc/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -21540,12 +24996,12 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.size@sk1@end@sk2CODERODATABSSDATAZEROPAGENULLUzna` ixb q r @Ĵ([([4& )v`]Sy-Yl[jNB!FPX Hu%EDaOA;LG  : -gn4xo"i5K q_rU,&dT]\@tb. Q^I`sJeMVRS$C3__CBM____C64__cbm/cpeekcolor.sca65 V2.17 - Git 6c320f7 _cpeekcolor(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.size@sk1@end@sk2CODERODATABSSDATAZEROPAGENULLUzna` ixb s: ; @ד]]2& )z`aS<y-?YlpjNB!FP=X Hk%EDaA};L8ZG  9: +g+xz"i{~fmK q_2U,&dT]|>w\@b QWIJMVS$C3__CBM____C64__cbm/cpeekcolor.sca65 V2.18 - Git cab4910a _cpeekcolor/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -21568,14 +25024,14 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixl   @Ĵ([([40 -N) -E*`Wy-Yl[jN"B!FPX Hu%EDaOA;LG ! : -gn4xo"i5K q_rU,&dT]\@tb. Q^I` #sJeMVRS$C3__CBM____C64__cbm/cpeekrevers.sca65 V2.17 - Git 6c320f7 _cpeekrevers(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixl Z [ @ד]]20 +P) +G*`W<y-?YlpjN"B!FP=X Hk%EDaA};L8ZG ! 9: +g+xz"i{~fmK q_2U,&dT]|>w\@b QWI #JMVS$C3__CBM____C64__cbm/cpeekrevers.sca65 V2.18 - Git cab4910a _cpeekrevers/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -21598,18 +25054,15 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeCODERODATABSSDATAZEROPAGENULLUzna` i4D E@Ĵ([ faX ([4YLIz$ $It % %   u -u  h c})c} L L@@: : )l < @Q `!i qi F I I   -  -7 7  `  - $ -7%L:I0us \VSUG[POCe0]^HG3");HA] 4W9_Cx8K`&ILtBO6qE%o -a3D\i1MR;:UJr$.jQ.!Td5gIu5 -FXn%7b[N*s(F 0Y,V,2ERKL$/l:@y #5P 'N SDZ -Q"!JX+__CBM____C64__ cbm/cpeeks.sca65 V2.17 - Git 6c320f7_cpeekspopaxptr1ptr2ptr3tmp1tmp2,/home/hugg/compilers/cc65/asminc/generic.mac(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeCODERODATABSSDATAZEROPAGENULLUzna` i-D @ד] ] ]2YLIn Ii     j +j  ^ Ws)Ws A A55/ / )a 1x x@Ex x`xxwi gi ; = =   . .  `  + .A/=)jh \VSUGkPC0]HzG~3");HA] W9_C+x8K|&ILBO6qE% -a3D9p\i1M;:UJ$.jQ!Td5gI8}{5 +FX%7b?f[Nm*(F 0Y>,V,22<ERKL$/l:@y #WP 'N SZDZ= +wQ"!JX+__CBM____C64__ cbm/cpeeks.sca65 V2.18 - Git cab4910a_cpeekspopaxptr1ptr2ptr3tmp1tmp2!/home/pzp/cc65/asminc/generic.mac/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -21632,7 +25085,7 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeL3L4L2@sk1L5@sk2L1CODERODATABSSDATAZEROPAGENULLUzna` ix % X !@ĴfaX faX*$ +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeL3L4L2@sk1L5@sk2L1CODERODATABSSDATAZEROPAGENULLUzna` ix % X@ד] ]*$ e             @@ -21642,20 +25095,20 @@ CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_Fas          - -0">& 94$.!=5%@,/ #'+__CBM____C64__conio/cprintf.sca65 V2.17 - Git 6c320f7_cprintfpushaxaddysp _vcprintfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixzp2@ĴfaX ([4oKHG : -:h -L i! % _0}3}`*)&&)?  -c(RVV w -4wB~`<W(et)##U(e8DDy"`)>~^A @L -k\3F`  x: -[/ 4/wcNs$s&scshy- -PYlM[jHNG?")B>& !FfPX CH8uL%O6EgEDaOAb;3L1A4;G e$ : -gnd4xo=5 -F"i%75K[@N *q(_rU,&dT],2\@cRtb. :Q^I`#sJ'eMBDVZRQ<SYX$C3__CBM____C64__ c64/cputc.sca65 V2.17 - Git 6c320f7_cputcxy_cputc -cputdirectputcharnewlineplotgotoxyPLOT(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG + -0">& 94$.!=5%@,/ #'+__CBM____C64__conio/cprintf.sca65 V2.18 - Git cab4910a_cprintfpushaxaddysp _vcprintfspptr1!/home/pzp/cc65/asminc/generic.mac ParamSize.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix{p@ד] ]2oKHF 7 +7h +L k! % a03`))&&)?  +c(RXX w +4w@`9Y(et(##W(e5BBy"`):~^? @L +n^0D`  x7 +[, 4,wcMs$s&ses<hy-? -PYlpMjHNG?")B>& !FfP=X CH8Lk%O6EgEDaA}b;3L81ZA4;G e$ 9: +g+dxz=5 +F"i{~%f7mK[@N *q(_2U,&dT]|>,2w\@cRb :QWI#J'MBDVZQ<SYX$C3__CBM____C64__ c64/cputc.sca65 V2.18 - Git cab4910a_cputcxy_cputc +cputdirectputcharnewlineplotgotoxyPLOT/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -21678,7 +25131,7 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeL1L10L2advanceL3L4L5L11CODERODATABSSDATAZEROPAGENULLUzna` iq#2PSyURV@ĴfaX{ +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeL1L10L2advanceL3L4L5L11CODERODATABSSDATAZEROPAGENULLUzna` iq#2PSyVRW@ד]{ H   hHJ J JJ @@ -21686,62 +25139,59 @@ CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_Fas h)  L        - '__CBM____C64__conio/cputhex.sca65 V2.17 - Git 6c320f7 _cputhex8 -_cputhex16_cputc__hextab.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqbt@Ĵ([#    + '__CBM____C64__conio/cputhex.sca65 V2.18 - Git cab4910a _cputhex8 +_cputhex16_cputc__hextab.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqbt@ד]#    L              `       !  -#__CBM____C64__ 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+%__CBM____C64__ zlib/crc32.sca65 V2.17 - Git 6c320f7_crc32compleaxincsp2incsp4popptr1popeaxsregptr1ptr2tmp1tmp2 +#__CBM____C64__ conio/cputs.sca65 V2.18 - Git cab4910a_cputsxy_cputsgotoxy_cputcptr1tmp1.sizeL0L1L9CODERODATABSSDATAZEROPAGENULLUzna` iqPY@ד](  ) )3H^ ^J[[S SJ +I> a ajZI; \ \j8IE ] ]jLI KK*iFP Pf  f9 9jW //Q +Q- -1 +1D D$ +$F F +XX2 +2`C0``c c& &  +@ @6K6! +!   J +J f +fb b.. OO h +hd dIQ  :G +GE_ _M M+ ++ET TA A4 +4E ' ' +< < , 7 7% %??N NL +U UR RBLV +V ! e   * "Y#$ 5 \9-d_AN5^]M 5c&b7% 5@  5)SaP DFT',,2<EcvL$l:u@y #WP N `BZZ= +w<"!JYX__CBM____C64__ +c64/crt0.sca65 V2.18 - Git cab4910a_exit __STARTUP__initlibdonelibzerobsscallmainBSOUT__MAIN_START__ __MAIN_SIZE__ __STACKSIZE__ST"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -21764,29 +25214,29 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYStart.sizemmusavespsaveinitL2zpsaveL1CODERODATABSSDATAZEROPAGENULLSTARTUPONCEINITUzna` i % I@ĴfaX - faX -faX*$ +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYStart.sizemmusavespsaveinitL2zpsaveL1CODERODATABSSDATAZEROPAGENULLSTARTUPONCEINITUzna` i % 4@ד] + ] +]*$     e  $ $!  " "       L    !"$" #  '->&6 1$=5 -%( ,#' <#__CBM____C64__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 )~@ĴfaX   +%( ,#' <#__CBM____C64__conio/cscanf.sca65 V2.18 - Git cab4910a_cscanfpushaxaddysp_vcscanf!/home/pzp/cc65/asminc/generic.mac"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeArgSize@L1CODERODATABSSDATAZEROPAGENULLUzna` iqQ )@ד]   L  -    __CBM____C64__common/ctime.sca65 V2.17 - Git 6c320f7_ctime -_localtime_asctime.sizeCODERODATABSSDATAZEROPAGENULLUzna` iy?@ LOF ] N^ @ĴfaXՠfaX28P3PP!PvPqz[SJP|6.xL^*(W"  Z     u   G +    __CBM____C64__common/ctime.sca65 V2.18 - Git cab4910a_ctime +_localtime_asctime.sizeCODERODATABSSDATAZEROPAGENULLUzna` iy?@ LOF S NT @ד]ՠ]28P3PP!PvPqz[SJP|6.xL^*(W"  Z     u   G #   k   ~Ca l'4\=j;Up$i& t/7QAONy1bsrPPPcPHPXfP ?o}_De@9:0 ,   F  -{V%-g`IMKd+5E n]>RwTmBhm\j|U-P0M]lHG?")o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.!i qIdx=5F%7_[@N *(arV,2wcRKvz/:u~ #'`BSDZ{Q<YX+__CBM____C64__ cbm/ctype.sca65 V2.17 - Git 6c320f7*/home/hugg/compilers/cc65/asminc/ctype.inc__ctypeCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqR )~@ĴfaX +{V%-g`IMKd+5E n]>RwTmBhm\j|U-P0M]lHG?")o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.!i qIdx=5F%7_[@N *(arV,2wcRKvz/:u~ #'`BSDZ{Q<YX+__CBM____C64__ cbm/ctype.sca65 V2.18 - Git cab4910a/home/pzp/cc65/asminc/ctype.inc__ctypeCT_NONECT_LOWERCT_UPPERCT_DIGIT CT_XDIGITCT_CTRLCT_SPACE CT_OTHER_WS CT_SPACE_TABCT_ALNUMCT_ALPHA CT_CTRL_SPACE CT_NOT_PUNCT.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqR )@ד] `  -    __CBM____C64__cbm/curdevice.sca65 V2.17 - Git 6c320f7_getcurrentdevicecurunit.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqa 8!r@ĴfaX* +    __CBM____C64__cbm/curdevice.sca65 V2.18 - Git cab4910a_getcurrentdevicecurunit.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqa 8!s@ד]*    @@ -21794,15 +25244,15 @@ _localtime_asctime.sizeCODERODATABSSDATAZEROPAGENULLUzna` i `       -   __CBM____C64__conio/cursor.sca65 V2.17 - Git 6c320f7_cursorcursor.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq 3PS[NRO@ĴfaXkH   +   __CBM____C64__conio/cursor.sca65 V2.18 - Git cab4910a_cursorcursor.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq 3PS[ORP@ד]kH   h        `             -__CBM____C64__ cbm/cvline.sca65 V2.17 - Git 6c320f7 _cvlinexy_cvlinegotoxyputcharnewlinetmp1 -cvlinechar.sizeL9L1CODERODATABSSDATAZEROPAGENULLUzna` k{mIn hyHyy7Ͱ -y@ĴD*[faX=Y"  +__CBM____C64__ cbm/cvline.sca65 V2.18 - Git cab4910a _cvlinexy_cvlinegotoxyputcharnewlinetmp1 +cvlinechar.sizeL9L1CODERODATABSSDATAZEROPAGENULLUzna` k{mIn hyHyy7Ͱ +y@ד]]=Y"    |       @@ -22910,7 +26360,7 @@ cvlinechar.sizeL9L1CODERODATABSSDATAZEROPAGENULLUzna` k    -+ __CBM____C64__../libwrk/c64/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 ++ __CBM____C64__../libwrk/c64/dbg.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/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 @@ -22924,7 +26374,7 @@ _InputGoto_AsmHomeincsp3decsp1pushaL0373L038CL037CL0380L0387L0384L050 _StackHomeincsp2 _UpdateStackL03B3L03CEL03BCL03C0L03C7L03C4L0503L03BA _CStackHome _UpdateCStackshlax3L03F3L0412L03FCL0400L040BL0404L0408L0504L03FA _DumpHome _UpdateDumppusha0_ActivateFrame _AnyKeyPrompt_Redraw_DisplayPromptL0155ldaxysp _SingleStepL044AL045DL0458L0434L0455L0438L0432 _GetArg16L0505ldaxildaidxL0453incax2_DbgSetTmpBreak _SetRTSBreak _GetStack16tosaddax _RedrawStatic _DrawFrames _HelpPromptincsp1 _UpdateRegL047FL0482L0506L0488L048BL048EL0491L0507 _DrawFrameregswap2subyspL00D4L0509staxyspL0111L010Ftosadda0ldaxidxaddeqyspaddyspL050BL011CL050CL011Dpushw0spL050FL012FL0131aslax1pushwL0137L0141L050Etosicmp0incsp6 _IsAbortKeyL0511L0512_Inputdecsp8L0194L0199L0516L01A7L051DL01BCL051BL051Cpushwyspbooleq _InputHexleaa0spL01FBL01D3L01E2L01E0shlax4L01EBL051Fdecaxyaddeq0spL051E _ErrorPromptincsp4L0525_BreakInRomErrorL021DL022DL0223L0229_DbgResetTmpBreaksL0527L0238L023F_DbgTmpBreaksOkL0528L052AL024EL025Bmulax3tossubaxL0264L052EL026DL0530L0275L0532L052FL027BL025CL0535L0286L0292L029AL02A0L02AA _AsmArg16incax1L02C4L02BAL053AL0539L02C0L053BL0537L0536_InitAsm_InitRegL053FL0357L053D -_InitStackL0541L0542 _InitCStackL0543L03DDL0544L0498decsp2L049AL0549L04ABcallaxL0548L04E3L04D9L0547L04C3L04CFL04FDL04F9L04F3L04C8L04B4L054ACODERODATABSSDATAZEROPAGENULLUzna` iqfpG gjM -zi{@ĴfaX=/C  * +_InitStackL0541L0542 _InitCStackL0543L03DDL0544L0498decsp2L049AL0549L04ABcallaxL0548L04E3L04D9L0547L04C3L04CFL04FDL04F9L04F3L04C8L04B4L054ACODERODATABSSDATAZEROPAGENULLUzna` iqfpG gjM .{i|@ד]=/C  * *     q q  b b_ _8e L LC C < g,& &  # #!{ { k @@ -22959,7 +26409,7 @@ _InitStackL0541L0542 _InitCStackL0543L03DDL0544L0498decsp2L049AL0549L0 B BcD &\ \*5;;i?  IKLR GRDEFGHWWWxWWWW W H Hm -H H3 o^i*/O/\j|-P0M]lHG?)>ysW98}LO6pEtbk314;e J.^iqIdx= 5F%7_[@N*(arV,wcKvz/:u~'`BZ{<YX+I__CBM____C64__ dbg/dbgdasm.sca65 V2.17 - Git 6c320f7popax__hextab OffsetTab +H H3 o^i*/O/\j|-P0M]lHG?)>ysW98}LO6pEtbk314;e J.^iqIdx= 5F%7_[@N*(arV,wcKvz/:u~'`BZ{<YX+I__CBM____C64__ dbg/dbgdasm.sca65 V2.18 - Git cab4910apopax__hextab OffsetTab AdrFlagTab SymbolTab1 SymbolTab2 MnemoTab1 MnemoTab2sregtmp1tmp2tmp3tmp4ptr1ptr2ptr3BufIndex @@ -22968,7 +26418,7 @@ AdrFlagBufYSaveXSaveBufPtrMemPtrMnemoBuf _DbgDisAsm _DbgDisAsmLen DisAssLineL2L1.size disassret AnalyzeOPCode Put3SpacesPutSpace -Put2SpacesPutCharPC9PutHex16PutHex8L2083L208CL2094PutMnemoL20A4L20BAL20AC GetBranchAdrL20CCL20DDL20D9L20E3L20E8L20F8L2107L2103L210BL212BL2120L2124L213AL213ECODERODATABSSDATAZEROPAGENULLUzna` iqUE  A[@ĴfaXl]& 2 2"    , ,9 97 73 3  +Put2SpacesPutCharPC9PutHex16PutHex8L2083L208CL2094PutMnemoL20A4L20BAL20AC GetBranchAdrL20CCL20DDL20D9L20E3L20E8L20F8L2107L2103L210BL212BL2120L2124L213AL213ECODERODATABSSDATAZEROPAGENULLUzna` iqUE  A[@ד]l]& 2 2"    , ,9 97 73 3  ; ;6 6   * N*   8 N8 0 @@ -22981,13 +26431,13 @@ Put2SpacesPutCharPC9PutHex16PutHex8L2083L208CL2094PutMnemoL20A4L20BAL ah<))   # # `4 . (93 5 ('+ (2/ (6! (;#(,7 : $@-0MHG?>& C8O6E31A4 J$.I= 5 -F%7@N*(,K/ 'BDQ<+__CBM____C64__ dbg/dbgdump.sca65 V2.17 - Git 6c320f7 _DbgMemDumpaddysp1__hextabsptmp2tmp3tmp4ptr3ptr4.sizedumpputspacedump1dump9putcCODERODATABSSDATAZEROPAGENULLUzna` iq W@ĴfaX+%  x  H +F%7@N*(,K/ 'BDQ<+__CBM____C64__ dbg/dbgdump.sca65 V2.18 - Git cab4910a _DbgMemDumpaddysp1__hextabsptmp2tmp3tmp4ptr3ptr4.sizedumpputspacedump1dump9putcCODERODATABSSDATAZEROPAGENULLUzna` iq W@ד]+%  x  H     & h  (L h (L -  `U3  ! -0")& 4 .! 57(/ '__CBM____C64__dbg/dbgisram.sca65 V2.17 - Git 6c320f7 _DbgIsRAMpopaxreturn0return1ptr1.sizeL1TestVal CheckCellL2CODERODATABSSDATAZEROPAGENULLUzna` ixu]f8;3n e :f @Ĵ([%faX9& H&8 I8LE +  `U3  ! -0")& 4 .! 57(/ '__CBM____C64__dbg/dbgisram.sca65 V2.18 - Git cab4910a _DbgIsRAMpopaxreturn0return1ptr1.sizeL1TestVal CheckCellL2CODERODATABSSDATAZEROPAGENULLUzna` ixu]f8;3n [ :\ @ד]%]9& H&8 I8LE EhR Rh XN @@ -23023,61 +26473,61 @@ H vM M Hn In=eF F__3`Q:#;  b C   2<=> PX5MFG K-> '/(Ic\VO<}Whxn #E # #)v #i4q0@CZbZZLhmj| -P0Ml?")o&ys f }LOpEgtbk3T1A; e n!i qdx -%_@N*(ar,2wcRKz/:u~#'BSD{Q+?__CBM____C64__ 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 +%_@N*(ar,2wcRKz/:u~#'BSD{Q+?__CBM____C64__ dbg/dbgsupp.sca65 V2.18 - Git cab4910a_DbgInit_DbgSP_DbgCS_DbgHIpopptr1return0 _DbgEntry_set_brk_end_brk +_DbgBreaks_brk_pc __ZP_START__"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeDbgBreakretsav DbgSwapZPDbgStackResetDbgBreaks SetDbgBreaksCTempSwap1 MaxBreaksL4L6L5L7L8_DbgGetBreakSlotL10L11L12 _DbgIsBreakL20L21L22L23CODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@ד]]' 8   `  -     __CBM____C64__runtime/decax1.sca65 V2.17 - Git 6c320f7decax1,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@ĴfaXfaX' 8 +     __CBM____C64__runtime/decax1.sca65 V2.18 - Git cab4910adecax1!/home/pzp/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@ד]]' 8   `  -     __CBM____C64__runtime/decax2.sca65 V2.17 - Git 6c320f7decax2,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@ĴfaXfaX' 8 +     __CBM____C64__runtime/decax2.sca65 V2.18 - Git cab4910adecax2!/home/pzp/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@ד]]' 8   `  -     __CBM____C64__runtime/decax3.sca65 V2.17 - Git 6c320f7decax3,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@ĴfaXfaX' 8 +     __CBM____C64__runtime/decax3.sca65 V2.18 - Git cab4910adecax3!/home/pzp/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@ד]]' 8   `  -     __CBM____C64__runtime/decax4.sca65 V2.17 - Git 6c320f7decax4,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@ĴfaXfaX' 8 +     __CBM____C64__runtime/decax4.sca65 V2.18 - Git cab4910adecax4!/home/pzp/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@ד]]' 8   `  -     __CBM____C64__runtime/decax5.sca65 V2.17 - Git 6c320f7decax5,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@ĴfaXfaX' 8 +     __CBM____C64__runtime/decax5.sca65 V2.18 - Git cab4910adecax5!/home/pzp/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@ד]]' 8   `  -     __CBM____C64__runtime/decax6.sca65 V2.17 - Git 6c320f7decax6,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@ĴfaXfaX' 8 +     __CBM____C64__runtime/decax6.sca65 V2.18 - Git cab4910adecax6!/home/pzp/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@ד]]' 8   `  -     __CBM____C64__runtime/decax7.sca65 V2.17 - Git 6c320f7decax7,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@ĴfaXfaX' 8 +     __CBM____C64__runtime/decax7.sca65 V2.18 - Git cab4910adecax7!/home/pzp/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix^ =#@ד]]' 8   `  -     __CBM____C64__runtime/decax8.sca65 V2.17 - Git 6c320f7decax8,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixm LH@ĴfaXfaX6 +     __CBM____C64__runtime/decax8.sca65 V2.18 - Git cab4910adecax8!/home/pzp/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixm LH@ד]]6   8   `      -  __CBM____C64__runtime/decaxy.sca65 V2.17 - Git 6c320f7decaxytmp1,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqp 81s@ĴfaX9     +  __CBM____C64__runtime/decaxy.sca65 V2.18 - Git cab4910adecaxytmp1!/home/pzp/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqp 81t@ד]9      `          -__CBM____C64__runtime/decsp1.sca65 V2.17 - Git 6c320f7decsp1sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPs@ĴfaXI   8 +__CBM____C64__runtime/decsp1.sca65 V2.18 - Git cab4910adecsp1sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPt@ד]I   8   ` `           -__CBM____C64__runtime/decsp2.sca65 V2.17 - Git 6c320f7decsp2sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPs@ĴfaXI   8 +__CBM____C64__runtime/decsp2.sca65 V2.18 - Git cab4910adecsp2sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPt@ד]I   8   ` `           -__CBM____C64__runtime/decsp3.sca65 V2.17 - Git 6c320f7decsp3sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPs@ĴfaXI   8 +__CBM____C64__runtime/decsp3.sca65 V2.18 - Git cab4910adecsp3sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPt@ד]I   8   ` `           -__CBM____C64__runtime/decsp4.sca65 V2.17 - Git 6c320f7decsp4sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPs@ĴfaXI   8 +__CBM____C64__runtime/decsp4.sca65 V2.18 - Git cab4910adecsp4sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPt@ד]I   8   ` `           -__CBM____C64__runtime/decsp5.sca65 V2.17 - Git 6c320f7decsp5sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPs@ĴfaXI   8 +__CBM____C64__runtime/decsp5.sca65 V2.18 - Git cab4910adecsp5sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPt@ד]I   8   ` `           -__CBM____C64__runtime/decsp6.sca65 V2.17 - Git 6c320f7decsp6sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPs@ĴfaXI   8     ` ` +__CBM____C64__runtime/decsp6.sca65 V2.18 - Git cab4910adecsp6sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPt@ד]I   8     ` `           -__CBM____C64__runtime/decsp7.sca65 V2.17 - Git 6c320f7decsp7sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPs@ĴfaXI   8 +__CBM____C64__runtime/decsp7.sca65 V2.18 - Git cab4910adecsp7sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPt@ד]I   8   ` `           -__CBM____C64__runtime/decsp8.sca65 V2.17 - Git 6c320f7decsp8sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixBC  * @ĴfaX - faX  ,9/   0 +__CBM____C64__runtime/decsp8.sca65 V2.18 - Git cab4910adecsp8sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixBC  * @ד] + ]  ,9/   0 0* *  / /     1 @@ -23091,13 +26541,15 @@ _DbgBreaks_brk_pc __ZP_START__-/home/hugg/compilers/cc65/asminc/zeropage.incsp 13  %" *6  0  /99-0?") 61;$.! =5 -"7 *(,/  #<+2__CBM____C64__cbm/devicedir.sca65 V2.17 - Git 6c320f7 _getdevicedirdiskinit devicestrfnunitpopapopaxptr2ptr3*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno -__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXsizefail.sizeokayCODERODATABSSDATAZEROPAGENULLUzna` iwCr>  @ĴfaXn([4==y-Yl[jNB!FPX Hu%EDaOA;LG  : -gn4xo"i5K q_rU,&dT]\@tb. Q^I`sJeMVRS$C3__CBM____C64__ c64/devnum.sca65 V2.17 - Git 6c320f7(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +"7 *(,/  #<+2__CBM____C64__cbm/devicedir.sca65 V2.18 - Git cab4910a _getdevicedirdiskinit devicestrfnunitpopapopaxptr2ptr3/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXsizefail.sizeokayCODERODATABSSDATAZEROPAGENULLUzna` iwC\( + +@ד]n]2??<y-?YlpjNB!FP=X Hk%EDaA};L8ZG  9: +g+xz"i{~fmK q_2U,&dT]|>w\@b QWIJMVS$C3__CBM____C64__ c64/devnum.sca65 V2.18 - Git cab4910a/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -23120,56 +26572,60 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYdevnumCODERODATABSSDATAZEROPAGENULLUzna` i^-,/a?.@@ĴfaXfaXfaX .faX'CA6  +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYdevnumCODERODATABSSDATAZEROPAGENULLUzna` i^-,/L*.+@ד]]] .]'CA6  CH4(A A  !: :  #. .H1 B Bh$P- -hHJ / /'>>hO`= hUT TMM )2 2H H66DEFGH?&/>6+T2  ./A:B-?2H3V   P0 &W9C8O6E314;  J.^  =5F7_*a2cRK/: `DZ -Q<"YXI__CBM____C64__ cbm/dir.sca65 V2.17 - Git 6c320f7 cbm/dir.incDIRfd.sizeoffname_opendir _closedir_readdir_seekdir_telldir +Q<"YXI__CBM____C64__ cbm/dir.sca65 V2.18 - Git cab4910a cbm/dir.incDIRfd.sizeoffname_opendir _closedir_readdir_seekdir_telldir _rewinddir __dirread -__dirread1*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno -__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespacepushax_readL3L1L2CODERODATABSSDATAZEROPAGENULLUzna` iefRUJ W -TX -@ŴfaX1faX faX^6LL`8H` m -m # > ->nn0 0]i*& w - w X - X  - c c 1 -1[ --`d  -G -GaatO@ -@8i  - -DD T -T  xi:  -    -)Y  - -e -  - -`  = -=)eb b)##oH S -S |  -h<`CQ HQ( (5 I5h hj -jr/B -B ? -?__$ $P6iU f -fz" "~ ~ R - R  H ^ -^hy`M N -N`\7y8,,,,,,,,,,,,,,,,,,,,,,,9:;4(h~40 -b$"KBKjKQ5p^Npfp.=S.R. . .X .w -kA l QvZ6%! eW {EmT? mj -MlHG?"oy W978L6EAk81e n$^!9:dx= -F7_@N* ,2@cv:~ DZ<Y<__CBM____C64__ cbm/diskcmd.sca65 V2.17 - Git 6c320f7isdiskopencmdchannelclosecmdchannel readdiskerror writediskcmdwritefndiskcmdSETLFSSETNAMOPENCLOSEBSOUTBASINCHKINCKOUTCLRCHfncmdfnlenfnunittmp1ptr1 cbm/cbm.inc +__dirread1/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespacepushax_readL3L1L2CODERODATABSSDATAZEROPAGENULLUzna` i@o.i_ M N @ד]0]C]Y`]8` w +w# +S +Sli@r 8 +8 T +T j +j& & +4 +4An +nW`; 1 +1 + ~J +[i + K +K    +:i N +N  +)H + +k +e +  + +  +)pPe" +"'7H/ 5 +5 Rff D +Dh`u H  e I e6  6 + 2 +   +MM +`icF  +ggb +b. .(  +))H # +#h`s _ +_`aZ[\]^75 54D#_32}N*K)Oj(oT',86.S "b < < <e +V YQIm6+ yi Xw1<h m\j/|-?U 0]l")> !F=W C8}L(%6EEtbk#'4;  J6i ++4=5 +F"75**(2 ,a1&>wcKv./ :~  BD0X$+3___CBM____C64__ cbm/diskcmd.sca65 V2.18 - Git cab4910aisdiskopencmdchannelclosecmdchannel readdiskerror writediskcmdwritefndiskcmdfncmdfnlenfnunittmp1ptr1 cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN MAX_DRIVES FIRST_DRIVEcbm/filedes.incfdtabunittabfreefdMAX_FDSLFN_OFFS LFN_CLOSEDLFN_READ LFN_WRITELFN_OPENLFN_EOF LFN_STDIN LFN_STDOUT LFN_STDERR@L1.sizesuccessopentabisopendone@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` iqK-x  -@ŴfaX* +@ד]*     `  I @@ -23180,21 +26636,19 @@ LFN_STDERR@L1.sizesuccessopentabisopendone@L2@L3CODERODATABSSDATAZE   h `    -     *0")31$. 5%*/#__CBM____C64__cbm/diskinit.sca65 V2.17 - Git 6c320f7diskinitopencmdchannelclosecmdchannelwritefndiskcmd readdiskerrorisdiskfnunitfncmdopen.sizedonecloseCODERODATABSSDATAZEROPAGENULLUzna` iq!0MPVBOC@Ŵ([g   +     *0")31$. 5%*/#__CBM____C64__cbm/diskinit.sca65 V2.18 - Git cab4910adiskinitopencmdchannelclosecmdchannelwritefndiskcmd readdiskerrorisdiskfnunitfncmdopen.sizedonecloseCODERODATABSSDATAZEROPAGENULLUzna` iq!0MPVCOD@ד]g     E    L  `        $ -%#__CBM____C64__ runtime/div.sca65 V2.17 - Git 6c320f7tosdiva0tosdivaxpopsargsudiv16negaxptr1tmp1tmp2.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq!0 <?G>@ŴfaXg   -   -  -  $  L - ` -   -   "!__CBM____C64__ common/divt.sca65 V2.17 - Git 6c320f7_divtosdivaxnegaxsregptr1tmp1.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq= WX@ŴfaX  +%#__CBM____C64__ runtime/div.sca65 V2.18 - Git cab4910atosdiva0tosdivaxpopsargsudiv16negaxptr1tmp1tmp2.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq5 ADLC@ד]q   +       +$ L + ` +   "&$#__CBM____C64__ common/divt.sca65 V2.18 - Git cab4910a_divtosdivaxnegaxsregptr1tmp1.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq= XY@ד]      - __CBM____C64__common/doesclrscr.sca65 V2.17 - Git 6c320f7_doesclrscrafterexitreturn0CODERODATABSSDATAZEROPAGENULLUzna` i{ VY bIXJ@ŴfaXfaX&2faX@qAQ?eVmVdVVK + __CBM____C64__common/doesclrscr.sca65 V2.18 - Git cab4910a_doesclrscrafterexitreturn0CODERODATABSSDATAZEROPAGENULLUzna` i{ VY b4X5@ד]]&2]@qAQ?eVmVdVVK K  / /R R(+ +: : >a9 H9 B IB* * ;  @@ -23217,34 +26671,32 @@ LFN_STDERR@L1.sizesuccessopentabisopendone@L2@L3CODERODATABSSDATAZE LZ ZDE8 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 F__CBM____C64__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 +" 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 F__CBM____C64__em/em-kernel.sca65 V2.18 - Git cab4910areturn0 em_librefptr1#/home/pzp/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&/01234! , +/ - h[cB)P(EDaOA:g+4if5*2 U, 1 dT@b. Q`JeV0 RSC3 5__CBM____C64__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 +_em_copyto"/home/pzp/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= +@ד]]&/01234! , +/ - h[cB)P(EDaOA:g+4if5*2 U, 1 dT@b. Q`JeV0 RSC3 5__CBM____C64__em/em_commit.sca65 V2.18 - Git cab4910a#/home/pzp/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&/01234"-+/ - h[cB)P(EDaOA:g+4 -if5*2 U, 1 dT@b. Q`JeV0 RSC3 5__CBM____C64__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 +@ד]]&/01234"-+/ - h[cB)P(EDaOA:g+4 +if5*2 U, 1 dT@b. Q`JeV0 RSC3 5__CBM____C64__em/em_copyfrom.sca65 V2.18 - Git cab4910a#/home/pzp/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&/01234#%.+/ - h[cB)P(EDaOA:g+4 -if5*2 U, 1 dT@b. Q`JeV0 RSC3 5__CBM____C64__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 +@ד]]&/01234#%.+/ - h[cB)P(EDaOA:g+4 +if5*2 U, 1 dT@b. Q`JeV0 RSC3 5__CBM____C64__em/em_copyto.sca65 V2.18 - Git cab4910a#/home/pzp/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$@ |K9  @ŴfaXfaX&/faX7faXFfaX]ZE| +_em_copytoCODERODATABSSDATAZEROPAGENULLUzna` i$@ |KY Z @ד]]&/]7]F]]ZE| |``  <<hh I  ) )LL " @@ -23266,57 +26718,59 @@ _em_copytoCODERODATABSSDATAZEROPAGENULLUzna` i$  c  B  qab -V U-cT?kR&"QH)?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 c__CBM____C64__ 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 +V U-cT?kR&"QH)?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 c__CBM____C64__ em/em_load.sca65 V2.18 - Git cab4910a#/home/pzp/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&/01234'*+/ - h[cB)P(EDaOA :g+4if5*2 U, 1 dT@b. Q`JeV0 RSC3 5__CBM____C64__ 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 +_em_copyto"/home/pzp/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/pzp/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/pzp/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= +@ד]]&/01234'*+/ - h[cB)P(EDaOA :g+4if5*2 U, 1 dT@b. Q`JeV0 RSC3 5__CBM____C64__ em/em_map.sca65 V2.18 - Git cab4910a#/home/pzp/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&/01234!)+/ - h[cB)P(EDaOA:g+4 -if5*2 U, 1 dT@b. Q`JeV0 RSC3 5__CBM____C64__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 +@ד]]&/01234!)+/ - h[cB)P(EDaOA:g+4 +if5*2 U, 1 dT@b. Q`JeV0 RSC3 5__CBM____C64__em/em_pagecount.sca65 V2.18 - Git cab4910a#/home/pzp/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}wMXN@ŴfaXfaX&/faX7faXrG7 +_em_copytoCODERODATABSSDATAZEROPAGENULLUzna` i/K VY}W-X.@ד]]&/]7]rG7 7 ! !      , ,L -$`HIJKL?E, A7! (&L/ - hKcB)(P2+<J)&('E-DaGOA:g+40if5**12 U, 1 dTI@b. H/Q4`Je3VB0 RFSC3 M__CBM____C64__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 +$`HIJKL?E, A7! (&L/ - hKcB)(P2+<J)&('E-DaGOA:g+40if5**12 U, 1 dTI@b. H/Q4`Je3VB0 RFSC3 M__CBM____C64__em/em_unload.sca65 V2.18 - Git cab4910a em_clear_ptr#/home/pzp/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 +_em_copyto"/home/pzp/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/pzp/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&/01234 (++/ - h[cB)P(EDaOA:g+4if5*2 U, 1 dT@b. Q`JeV0 RSC3 5__CBM____C64__ 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 +@ד]]&/01234 (++/ - h[cB)P(EDaOA:g+4if5*2 U, 1 dT@b. Q`JeV0 RSC3 5__CBM____C64__ em/em_use.sca65 V2.18 - Git cab4910a#/home/pzp/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 - =Lp@ŴfaXN   + =Lq@ד]N         `          -__CBM____C64__runtime/enter.sca65 V2.17 - Git 6c320f7entersp.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ŴfaX& +__CBM____C64__runtime/enter.sca65 V2.18 - Git cab4910aentersp.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ד]&   L   -    __CBM____C64__ runtime/eq.sca65 V2.17 - Git 6c320f7toseq00toseqa0toseqaxtosicmpbooleqsptmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixC RX@ŴfaXfaX !" #$%& +    __CBM____C64__ runtime/eq.sca65 V2.18 - Git cab4910atoseq00toseqa0toseqaxtosicmpbooleqsptmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixC RN@ד]] !" #$%&  - "  '__CBM____C64__common/errno.sca65 V2.17 - Git 6c320f7*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno -__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz  n w  @ŴE*[faX(_) + "  '__CBM____C64__common/errno.sca65 V2.18 - Git cab4910a/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz  n n + +@ד]](_) - &  @@ -23350,9 +26804,9 @@ __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEB Y  $N$K$N$O$W$N$ $E$R$R$O$R$$LLEGAL SEEK3I3L3E3 3E3X3I3S3T3S33ANGE ERROR9/99 9E9R9R9O9R99RY AGAIN*+,-+IU -P0MHG?")>&9C8LO6E3T1A4;J$.!I= 5 -F%7@N*(,2RK/: #'BSDQ<+.__CBM____C64__../libwrk/c64/errormsg.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac __sys_errlist.sizeL0001L0003L0005L0007L0009L000BL000DL000FL0011L0013L0015L0017L0019L001BL001DL001FL0021L0023L0025CODERODATABSSDATAZEROPAGENULLUzna` kzq  - -@ŴE*[faX5 > +F%7@N*(,2RK/: #'BSDQ<+.__CBM____C64__../libwrk/c64/errormsg.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac __sys_errlist.sizeL0001L0003L0005L0007L0009L000BL000DL000FL0011L0013L0015L0017L0019L001BL001DL001FL0021L0023L0025CODERODATABSSDATAZEROPAGENULLUzna` kzq  + +@ד]]5 > > u u' 'z22TLL D h @@ -23396,12 +26850,12 @@ __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEB bL5 567&&AP89:;%#v %nH:oF"V"V"q"^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^     ,]014y)1yO0y`,y"*y\[)y.M5%y>1~cr sYpBR6 $uh*(4=Jb/3Q 8liS<@dhm\j|U PM]lHG")o&ysfW9C8}LOpEgtbkTA4;eJn$^!iqIdx=  -F%_[N*(arVwcRKvz:u~ #'`BSDZ{Q<YX+<__CBM____C64__../libwrk/c64/exec.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_open_close_exec_exit_utoa_strncat __mappederrno_getcurrentdevice_vartab_memsize_txtptr_basbuf _basbuf_len_basic.sizeL0017L0018L0019pushaxL001EL0057L0058incsp4pusha0L0059pushwyspL002DL0034L003BldaxyspstaspidxL0035L004Bdecax2CODERODATABSSDATAZEROPAGENULLLOWCODEUzna` ixCD  @ŴfaX([4YGGz7-zzy- Yl[jN"B !FPX Hu%EDaOA;LG ! : -gn4xo "i5K q_rU,&dT]\@tb. Q^I`sJeMVRS$C3__CBM____C64__cbm/execvars.sca65 V2.17 - Git 6c320f7(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +F%_[N*(arVwcRKvz:u~ #'`BSDZ{Q<YX+<__CBM____C64__../libwrk/c64/exec.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_open_close_exec_exit_utoa_strncat __mappederrno_getcurrentdevice_vartab_memsize_txtptr_basbuf _basbuf_len_basic.sizeL0017L0018L0019pushaxL001EL0057L0058incsp4pusha0L0059pushwyspL002DL0034L003BldaxyspstaspidxL0035L004Bdecax2CODERODATABSSDATAZEROPAGENULLLOWCODEUzna` ixCD  @ד]]2YIIz7-~~<y-? YlpjN"B !FP=X Hk%EDaA};L8ZG ! 9: +g+xz "i{~fmK q_2U,&dT]|>w\@b QWIJMVS$C3__CBM____C64__cbm/execvars.sca65 V2.18 - Git cab4910a/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -23424,25 +26878,25 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY_vartab_memsize_txtptr_basbuf _basbuf_lenCODERODATABSSDATAZEROPAGENULLUzna` iqUV cfG\eo@ŴfaX  +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY_vartab_memsize_txtptr_basbuf _basbuf_lenCODERODATABSSDATAZEROPAGENULLUzna` iqUV cfG]ep@ד]        -  H  +   H  0 H d 0 H 0 H  0   ! -__CBM____C64__ cbm/exehdr.sca65 V2.17 - Git 6c320f7 -__EXEHDR__NextStart.size0Start address too large for generated BASIC stubCODERODATABSSDATAZEROPAGENULLEXEHDR  '  Uzna` iRi ux#w@ŴfaXfaX #faX0"  3- -)   +__CBM____C64__ cbm/exehdr.sca65 V2.18 - Git cab4910a +__EXEHDR__NextStart.size0Start address too large for generated BASIC stubCODERODATABSSDATAZEROPAGENULLEXEHDR  '  Uzna` iRi ux#swt@ד]] #]0"  3- -)    4`"  $ $* L1 112345 # -$1": -") 1$.!  -"% * ,2/ #6__CBM____C64__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 +"% * ,2/ #6__CBM____C64__common/fclose.sca65 V2.18 - Git cab4910a_fclose_closeptr1/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX/home/pzp/cc65/asminc/_file.inc_FILEf_fd.sizef_flags f_pushback_FCLOSED_FOPEN_FEOF_FERROR -_FPUSHBACK __filetab@L1CODERODATABSSDATAZEROPAGENULLUzna` kz2G SV*DUE@ŴE*[faXd>3  +_FPUSHBACK __filetab@L1CODERODATABSSDATAZEROPAGENULLUzna` kz2G SV!;U<@ד]]d>3       % %" "  ## $ $ L& @@ -23450,8 +26904,8 @@ _FPUSHBACK __filetab@L1CODERODATABSSDATAZEROPAGENULLUzna` k    H       hL    %   "$ >' -0")&86314;$.! 5 -%7*(,2/: #'+!__CBM____C64__../libwrk/c64/fdopen.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fdopen -__seterrno__fdescpushaxL0003L000B.sizeincsp6CODERODATABSSDATAZEROPAGENULLUzna` kzCF }Xno@ŴE*[ faX#h > +%7*(,2/: #'+!__CBM____C64__../libwrk/c64/fdopen.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_fdopen +__seterrno__fdescpushaxL0003L000B.sizeincsp6CODERODATABSSDATAZEROPAGENULLUzna` kzCF }Oef@ד] ]#h > >8 & &  C= =)%? ?)#--@L4 @@ -23468,7 +26922,7 @@ __seterrno__fdescpushaxL0003L000B.sizeincsp6CODERODATABSSDATAZEROPAGE |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+)__CBM____C64__../libwrk/c64/fgetc.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fgetc_readpushaxregswap2decsp1L0025L0027.sizeL0016L000Cpusha0leaa0spL0023L001DL0021incsp3CODERODATABSSDATAZEROPAGENULLUzna` kzvE aV@ŴE*[faX 4$  +F%7_[@N*(V,2RK/: #'`BSDZQ<YX+)__CBM____C64__../libwrk/c64/fgetc.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_fgetc_readpushaxregswap2decsp1L0025L0027.sizeL0016L000Cpusha0leaa0spL0023L001DL0021incsp3CODERODATABSSDATAZEROPAGENULLUzna` kzvE aM@ד]] 4$        @@ -23483,8 +26937,8 @@ __seterrno__fdescpushaxL0003L000B.sizeincsp6CODERODATABSSDATAZEROPAGE  L !"#$%  4  -")&1$.!  -%*(,2/ #'+&__CBM____C64__../libwrk/c64/fgetpos.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fgetpos_ftellpushaxpushw0spldaxysp -steaxspidxldax0spldeaxipusheaxtosneeaxL0005incsp4.sizeCODERODATABSSDATAZEROPAGENULLUzna` kztlZ gjKi@ŴE*[faX=) L +%*(,2/ #'+&__CBM____C64__../libwrk/c64/fgetpos.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_fgetpos_ftellpushaxpushw0spldaxysp +steaxspidxldax0spldeaxipusheaxtosneeaxL0005incsp4.sizeCODERODATABSSDATAZEROPAGENULLUzna` kztlZ gjKi@ד]]=) L L 5  W  WR  R 3 3 S @@ -23505,64 +26959,66 @@ steaxspidxldax0spldeaxipusheaxtosneeaxL0005incsp4.sizeCODERODATABSSDA 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+/__CBM____C64__../libwrk/c64/fgets.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fgetc_fgets -__seterrnopushaxregswap2ldaxyspdecsp4L0004L0002.sizestaxyspL002BL000Bstax0spL001EL002AL000CL0022addeqyspsubeqyspL0029addyspCODERODATABSSDATAZEROPAGENULLUzna` i &FILTHU@ŴfaXfaX faXC  -$$` , !  %!"  !& )&7A8$9:%*( @# +#__CBM____C64__ cbm/filedes.sca65 V2.17 - Git 6c320f7 cbm/cbm.inc +F%7_[@N*(aV,2cRK/: #'`BSDZQ<YX+/__CBM____C64__../libwrk/c64/fgets.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_fgetc_fgets +__seterrnopushaxregswap2ldaxyspdecsp4L0004L0002.sizestaxyspL002BL000Bstax0spL001EL002AL000CL0022addeqyspsubeqyspL0029addyspCODERODATABSSDATAZEROPAGENULLUzna` i &FIdHHI@ד]]8]CI  +$$0KK`EJK,LF&. 42 PMN;:49FR< /-?))&!F= (%E#' $6 ++4"%5**(2 ,1&>. # 0$+3O__CBM____C64__ cbm/filedes.sca65 V2.18 - Git cab4910a cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN MAX_DRIVES FIRST_DRIVEcbm/filedes.incfdtabunittabfreefdMAX_FDSLFN_OFFS LFN_CLOSEDLFN_READ LFN_WRITELFN_OPENLFN_EOF LFN_STDIN LFN_STDOUT -LFN_STDERRloop.sizefoundCODERODATABSSDATAZEROPAGENULLUzna` ix|'i[0 1 @ŴfaX'faX0,vGg gY Y - -c c6 -e e 5 -5D ff!T`/j j   -v]  0JJ1#\ -\k. .:QQn -nH 0M) -):[; -;1* -* -_ _$X== - -b -b: -*( -A -Fh -h`B -U -U`pV -V H l IlL` -`H< - $ -$hNHO,Z ! -!h3W -W: -:C -C`%-. + 0 E/$S9 #01@gc@j ._Ye22` # C l\n);b9Eh 0W:V* +U vo? -P? ?$W?!5} -R4&4=[I4s\j|U P0MG"o& C}LObk3T1e $!i dx  %[@N aV,wcRKv~ #'`BSZ+2__CBM____C64__cbm/filename.sca65 V2.17 - Git 6c320f7fnparse fnparsenamefnsetfnadd fnaddmode -fncomplete fndefunitfnunitfnlenfnisfilefncmdfnbufSETNAMcurunit -__filetypeptr1tmp1*/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_PUNCTnameloop.sizenamedone invalidnamedigitnodrive drivedoneCODERODATABSSDATAZEROPAGENULLUzna` iqB nKL@ŴfaX  -S     __CBM____C64__cbm/filetype.sca65 V2.17 - Git 6c320f7 -__filetype.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqGd@ŴfaX +LFN_STDERRloop.sizefoundCODERODATABSSDATAZEROPAGENULLUzna` i.B_}5  @ד]']$]I^v` { {   N +  L +L\ !s`E # #  +v+ +0dd1/   +C C:pp +a 0i= +=:~S +SH> +> + $yUU +) +) +: +*< +Y +_ +`Z +t +t`u +u H IL +HT& +& 7 +7hjHm,| , +,hJx +xR +R[ +[`9_` @ G ]a$SQ # bc<II#+C{ &  # [=S)Q] GxRu> @t vX +nX "X7xX,L} +qK:KU[bK\j|U P0MG3"o(& 4C+)}&L1O'%6-bk3T/1e $.!i dx %?[@*N F a>,V,2<wEcRKv#$~ #50 ' `BSZ= +"!+d__CBM____C64__cbm/filename.sca65 V2.18 - Git cab4910afnparse fnparsenamefnsetfnadd fnaddmode +fncomplete fndefunitfnunitfnlenfnisfilefncmdfnbufcurunit +__filetypeptr1tmp1/home/pzp/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 cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVEnameloop.sizenamedone invalidnamedigitnodrive drivedoneCODERODATABSSDATAZEROPAGENULLUzna` iqB oLM@ד]  +S     __CBM____C64__cbm/filetype.sca65 V2.18 - Git cab4910a +__filetype.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqGd@ד]       9        - `    __CBM____C64__cbm/filevars.sca65 V2.17 - Git 6c320f7curunit initcurunitdevnum.size@L0CODERODATABSSDATAZEROPAGENULLINITONCEUzna` ifONQP@ŴfaX faXfaX /7D9  & &)55`I E + `    __CBM____C64__cbm/filevars.sca65 V2.18 - Git cab4910acurunit initcurunitdevnum.size@L0CODERODATABSSDATAZEROPAGENULLINITONCEUzna` ifONQP@ד] ]] /7D9  & &)55`I E E,, )FF* *`4  ++C C)  #`; D D%%Q Q)11`    .( (>` P P=K`"89:;<P (QC*& 06 6)/2)# ) :) J)U U-P0]HG?">& 9L3T1; J$.! I=F%[@,2RK/: # S -Q<"=__CBM____C64__common/fmisc.sca65 V2.17 - Git 6c320f7 _clearerr_feof_ferror_fileno_fflushreturn0ptr1*/home/hugg/compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags +Q<"=__CBM____C64__common/fmisc.sca65 V2.18 - Git cab4910a _clearerr_feof_ferror_fileno_fflushreturn0ptr1/home/pzp/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 8@ŴfaX -faX b'  +_FPUSHBACK __filetab/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXgetferr@L1errorCODERODATABSSDATAZEROPAGENULLUzna` ix* 69 x8@ד] +] b'    '" "  @@ -23570,8 +27026,8 @@ __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEB &` L ()*+,&* 0")&1.!  -" (  '-__CBM____C64__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+$ +" (  '-__CBM____C64__common/fopen.sca65 V2.18 - Git cab4910a_fopen__fopen__fdescpushaxreturn0/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix % N@ד] ]+$    e         @@ -23581,19 +27037,19 @@ __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEB L     -   -?) C6E34;$.5*(,2:D+__CBM____C64__common/fprintf.sca65 V2.17 - Git 6c320f7_fprintfaddyspdecsp4 _vfprintfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz6:p |z@~@ŴE*[ faXW@ + -+'  -/ /)*+ ),%  -  - - --$  - # -#1%  -((&   !L -G  ) )H0   " " h.L -  !"#$ -+# / - )"W2 -0?")>&9C86E31A4;$.!= 5 -F%7@*(,2/: #'B<+%__CBM____C64__../libwrk/c64/fputc.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fputc_writepushaxregswap2L000Bpusha0leaa0spL0017L000C.sizeL0002incsp4CODERODATABSSDATAZEROPAGENULLUzna` kzdB  ,/KH.I@ŴE*[faX- D2  +   -?) C6E34;$.5*(,2:D+__CBM____C64__common/fprintf.sca65 V2.18 - Git cab4910a_fprintfaddyspdecsp4 _vfprintfspptr1!/home/pzp/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz<:v =@ד] +] W@ 0 +0+  +- )  ++ +. .)$%#3 3 % +%  + ) +) & +&!    * *2L +G  H"/ /  1  hL + !'"#$%(((%((0)& .3 * /W4 -0HG?")>&9C86E31A4;J$.!= 5 +F%7@*(,2K/: #'BD<+&__CBM____C64__../libwrk/c64/fputc.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_fputc_writeL000C.sizepushaxregswap2L000Bpusha0leaa0spL0019L000DL0002incsp4CODERODATABSSDATAZEROPAGENULLUzna` kzdB  ,/B?.@@ד]]- D2     &# #)$ $)%L 4  ( @@ -23607,9 +27063,9 @@ __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEB "!"#$% "!(   #$ D) -0")&986314$.!= 5 -%7*(,2/: #'<+&__CBM____C64__../libwrk/c64/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 -faX9faXIM Mc +%7*(,2/: #'<+&__CBM____C64__../libwrk/c64/fputs.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_fputs_strlen_writepushaxregswap2L0011L0003.sizeL0002pusha0pushwyspldaxyspincsp4CODERODATABSSDATAZEROPAGENULLUzna` i ` ?B + +@ד]+] -]9]IM Mc c   r rF F)ssBBd d)++' '[[  Lh @@ -23637,11 +27093,11 @@ __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEB SJK T LMN:i7,7Ax3xN .g \ \e IS IO @ }^(zZ\j|U P0]HG?o>&y98}LpE tbk3T1e J$^i Id=  -F"%7[@  ,2cRKz ~ 'DZ{Q+O__CBM____C64__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"%7[@  ,2cRKz ~ 'DZ{Q+O__CBM____C64__common/fread.sca65 V2.18 - Git cab4910a_fread_readpusha0pushaxincsp4incsp6ldaxyspldax0sppushwysp tosumulax tosudivaxptr1sp/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX/home/pzp/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   a b@ŴfaX faXfaX +_FPUSHBACK __filetab!/home/pzp/cc65/asminc/generic.macregbankfilesave@L1@L2@L99@L3pb@L4@L6@L5@L8@L7@L9@L10CODERODATABSSDATAZEROPAGENULLUzna` i +S k   L M@ד] ]] '% % ! !`M :   " "  b  (e  ec c$ $ex x.`.` ` @@ -23679,8 +27135,8 @@ _FPUSHBACK __filetab,/home/hugg/compilers/cc65/asminc/generic.macregbankfiles   `       =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-__CBM____C64__ 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@ !L@ A@ŴE*[ faX!K4  +H+. %+hm\j|M]lH?o>!W}Otbk#niId"_[NaVwcv u~`ZYX-__CBM____C64__ common/free.sca65 V2.18 - Git cab4910aptr1ptr2ptr3ptr4_freeheapadd/home/pzp/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast!/home/pzp/cc65/asminc/generic.mac@L1@L3@L9@L8SearchFreeList@L2@LoopCheckRightMergeCheckLeftMerge2 NoRightMergeCheckLeftMerge NoLeftMergeCODERODATABSSDATAZEROPAGENULLUzna` kzX@ !C7 8@ד] ]!K4     ( ($ )% %  @@ -23697,8 +27153,8 @@ __heaplast,/home/hugg/compilers/cc65/asminc/generic.mac@L1@L3@L9@L8SearchFr #L  !"#$  &#! (K'* -0")>&986314;$.!= 5 -%7*(,2/: #'+%__CBM____C64__../libwrk/c64/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+$ +%7*(,2/: #'+%__CBM____C64__../libwrk/c64/freopen.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_freopen_close +__seterrno__fopenpushaxldax0spL0011incsp6.sizeL0009pushwyspldaxyspCODERODATABSSDATAZEROPAGENULLUzna` ix % N@ד] ]+$    e             @@ -23708,7 +27164,7 @@ __seterrno__fopenpushaxldax0spL0011incsp6.sizeL0009pushwyspldaxyspCODE       - P0G?>& 98O6A45F7@K:'BQ__CBM____C64__common/fscanf.sca65 V2.17 - Git 6c320f7_fscanfaddyspdecsp4_vfscanfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz~nf sv_Zu[@ŴE*[ faXG'` 5 + P0G?>& 98O6A45F7@K:'BQ__CBM____C64__common/fscanf.sca65 V2.18 - Git cab4910a_fscanfaddyspdecsp4_vfscanfspptr1!/home/pzp/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz~nf sv_|QuR@ד] ]G'` 5 5#   > @@ -23728,8 +27184,8 @@ __seterrno__fopenpushaxldax0spL0011incsp6.sizeL0009pushwyspldaxyspCODE $  $ 7  7H.  B  B6? ?  h1L ()*+,&A#A "A!AC A9AA+AA>AA54%* ( "<$7B(-(E?,&FU -P0MHG?")>&W9C8LO6E3T1A4;J$.!I= 5 -F%7@N*(V,2RK/: #'BSDZQ<Y+-__CBM____C64__../libwrk/c64/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`4N@ŴE*[faXd  +F%7@N*(V,2RK/: #'BSDZQ<Y+-__CBM____C64__../libwrk/c64/fseek.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_fseek +__seterrno_lseekpushaxregswap2decsp4L0022L0026.sizeL000A lsubeqysppusha0ldeaxysppusheaxldaxyspsteax0spldeax0spL0016L0027addyspCODERODATABSSDATAZEROPAGENULLUzna` kz+@ LO`+N@ד]]d        @@ -23738,8 +27194,8 @@ __seterrno_lseekpushaxregswap2decsp4L0022L0026.sizeL000A lsubeqysppusha    L  !  "&$!  - #'"__CBM____C64__../libwrk/c64/fsetpos.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_fsetpos_fseekpushaxpushwyspldaxyspldeaxipusheaxincsp4.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzoj xyz@ŴE*[ -faX%gL , + #'"__CBM____C64__../libwrk/c64/fsetpos.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_fsetpos_fseekpushaxpushwyspldaxyspldeaxipusheaxincsp4.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzoj opq@ד] +]%gL , ,   4 @@ -23757,8 +27213,8 @@ __seterrno_lseekpushaxregswap2decsp4L0022L0026.sizeL000A lsubeqysppusha  & &H3 5  5" "  hL &'()*$#!$ *&4,+.# !)/5!2( !"g%8 -0HG?")>&9C8L6E31A4;$.!I= 5 -F%7@*(,2K/: #'BD<++__CBM____C64__../libwrk/c64/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 @,-@ŴfaXfaX +faX<{[K +F%7@*(,2K/: #'BD<++__CBM____C64__../libwrk/c64/ftell.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_ftell +__seterrno_lseekpushaxregswap2decsp4L0003L0002.sizepusha0pushl0steax0spldeax0sppusheaxtosgeeaxL000F lsubeq0spincsp6CODERODATABSSDATAZEROPAGENULLUzna` i.J +@ד]] +]<{[K K  2 2 U U)..; ; @ @`LG @@ -23783,21 +27239,21 @@ __seterrno_lseekpushaxregswap2decsp4L0003L0002.sizepusha0pushl0steax0s ?@ U <5,% , ^Y [] ZGS38{=7ah\j P0]")sfW9C8}L6Eg tk1A;e J$^i qId -"%7[ * r,2wcRK u~#BSDQ<+B__CBM____C64__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 +"%7[ * r,2wcRK u~#BSDQ<+B__CBM____C64__common/fwrite.sca65 V2.18 - Git cab4910a_fwrite_writepushaxincsp6addyspldaxysppushwyspreturn0 tosumulax tosudivaxptr1/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX/home/pzp/cc65/asminc/_file.inc_FILEf_fd.sizef_flags f_pushback_FCLOSED_FOPEN_FEOF_FERROR -_FPUSHBACK __filetabfile@L2@L1@L3@L4CODERODATABSSDATAZEROPAGENULLUzna` iq] .  3? @ŴfaX& +_FPUSHBACK __filetabfile@L2@L1@L3@L4CODERODATABSSDATAZEROPAGENULLUzna` iq] .  3? @ד]&   L      -   __CBM____C64__ runtime/ge.sca65 V2.17 - Git 6c320f7tosge00tosgea0tosgeaxtosicmpboolge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq `y@ŴfaXg! +   __CBM____C64__ runtime/ge.sca65 V2.18 - Git cab4910atosge00tosgea0tosgeaxtosicmpboolge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq `z@ד]g! ?@   @ `? `   -   !")*(#'+__CBM____C64__c64/get_ostype.sca65 V2.17 - Git 6c320f7 _get_ostype@c64dtv.sizeCODERODATABSSDATAZEROPAGENULLUzna` iY   @ŴfaX([4faXHH4`*-y-Yl[jNB!FPX Hu% EDaOA;LG  : -gn4xo"i5K q_ rU,&dT]\@tb. Q^I`sJeMVRS$C3__CBM____C64__ c64/get_tv.sca65 V2.17 - Git 6c320f7(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +   !")*(#'+__CBM____C64__c64/get_ostype.sca65 V2.18 - Git cab4910a _get_ostype@c64dtv.sizeCODERODATABSSDATAZEROPAGENULLUzna` iY m_ ` @ד]]2]JJ3`')<y-?YlpjNB!FP=X Hk% EDaA};L8ZG  9: +g+xz"i{~fmK q_2 U,&dT]|>w\@b QWIJMVS$C3__CBM____C64__ c64/get_tv.sca65 V2.18 - Git cab4910a/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -23820,16 +27276,14 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY+/home/hugg/compilers/cc65/asminc/get_tv.incTVNTSCPALOTHER_get_tv.sizeCODERODATABSSDATAZEROPAGENULLUzna` kza =5 BC@ŴE*[faX*  +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY /home/pzp/cc65/asminc/get_tv.incTVNTSCPALOTHER_get_tv.sizeCODERODATABSSDATAZEROPAGENULLUzna` kza =59:@ד]]*    L      - __CBM____C64__../libwrk/c64/getchar.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stdin_fgetc_getchar.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqd [\@Ŵ([- K7)''B!!\0#3$ i  - - - &$&- "(( :  ,,%*"/`. 1U-PHG&98O6E3T1A4;J$.I=5F%7@N*V,2R: BSZQ<YX+__CBM____C64__common/getcpu.sca65 V2.17 - Git 6c320f7_getcpu.size@L8@L6@L9@L5@L4CODERODATABSSDATAZEROPAGENULLUzna` ix -$ YZ@Ŵ([ -faX **%I 1I, ,  + __CBM____C64__../libwrk/c64/getchar.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_stdin_fgetc_getchar.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix> 9@ד]&]uZLH.8BI9K9>\,E &?Y?Q Q4 4  7 7' 'K K I2* *  8 8PA`M=`R  -i5J +;##@3$3   $"1:<"FCCDNG %OO!` !"# /Q'*847K 0+Sm\j|U-P0M]lHG?">&sfW }LOpgtbk1A eJ.^! qId=_[@N(arV,2cRvz/u~ '`BS{Q<X$__CBM____C64__common/getcpu.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace_getcpu.size@IsNMOS@HasINCA@LoadXAndReturn @Is45GS02@Is4510@Is2a03 @CheckHuC6280CODERODATABSSDATAZEROPAGENULLUzna` ix +$ OP@ד] +] **%I 1I, ,     - -  @@ -23839,8 +27293,8 @@ CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_Fas `4 4 ` +,-./! ,-"4  *7 -")> 864$! =5 -"7@ *, #B<+0__CBM____C64__common/getcwd.sca65 V2.17 - Git 6c320f7_getcwdpopptr1__cwdptr1ptr2*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno -__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXloop.size@L1overflowdoneCODERODATABSSDATAZEROPAGENULLUzna` iqH"j@ŴfaX %  +"7@ *, #B<+0__CBM____C64__common/getcwd.sca65 V2.18 - Git cab4910a_getcwdpopptr1__cwdptr1ptr2/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXloop.size@L1overflowdoneCODERODATABSSDATAZEROPAGENULLUzna` iqH"j@ד] %          @@ -23848,12 +27302,12 @@ __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEB   0`         0? 1A $.=  -%7@,2/+__CBM____C64__cbm/getdevice.sca65 V2.17 - Git 6c320f7_getfirstdevice_getnextdeviceisdiskopencmdchannelclosecmdchannelSTtmp2.sizenextdoneCODERODATABSSDATAZEROPAGENULLUzna` iq9 EHj^G_@ŴfaXv    +%7@,2/+__CBM____C64__cbm/getdevice.sca65 V2.18 - Git cab4910a_getfirstdevice_getnextdeviceisdiskopencmdchannelclosecmdchannelSTtmp2.sizenextdoneCODERODATABSSDATAZEROPAGENULLUzna` iq9 EHj_G`@ד]v     L   8e `        )&  $.  -%*(,'__CBM____C64__common/getenv.sca65 V2.17 - Git 6c320f7_getenv __environ -__envcount searchenvreturn0ptr1ptr3tmp1found.size@L9CODERODATABSSDATAZEROPAGENULLUzna` kzg vPS  @RA@ŴE*[%faX A y +%*(,'__CBM____C64__common/getenv.sca65 V2.18 - Git cab4910a_getenv __environ +__envcount searchenvreturn0ptr1ptr3tmp1found.size@L9CODERODATABSSDATAZEROPAGENULLUzna` kzg vPS 7R8@ד]%] A y y M M  @@ -23975,7 +27429,15 @@ __envcount searchenvreturn0ptr1ptr3tmp1found.size@L9CODERODATABSSDATA H> T TxV V hoLB B;B77: OPTION REQUIRES4 4A4N4 4A4R4G4U4M4E4N4T4 4-4-4 : ILLEGAL OPTION 9-9-9 99C$$D" !EF@B=543{0A/-)(.'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<YXG__CBM____C64__../libwrk/c64/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_ }Ue@ŴE*[ faX%o 9 +F%_[N(arV wcRKvz/u~ #'`BSDZ{Q<YXG__CBM____C64__../libwrk/c64/getopt.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_stderr_fputc_fputs_strchr_optarg_optind_opterr_optopt_getopt.sizeL004EL002AL0048L005EL0004L0005pushaxL0012L0064L0067aslax1ldaxiL000EL0009L0003L0015incax1L0068pushwyspbnegaxL0018L0022ldaxysppushwpusha0L0037L0035L003EL006BL003FL0059L0046tosicmpL0066L0044incsp8CODERODATABSSDATAZEROPAGENULLUzna` ix1 <?>(>)@ד]]] +  +   +   +L + !"#  +"/-B) (DA8$9:+ +%*,1@.0C$__CBM____C64__ cbm/getres.sca65 V2.18 - Git cab4910a/home/pzp/cc65/asminc/time.inctmtm_sec.sizetm_mintm_hourtm_mdaytm_montm_yeartm_wdaytm_ydaytm_isdsttimespectv_sectv_nsec _clock_getres_clock_gettime_clock_settime +_localtime_mktimeptr1incsp1return0@L1timeCODERODATABSSDATAZEROPAGENULLUzna` kzi_ }U\@ד] ]%o 9 9  %  %  @@ -24007,353 +27469,31 @@ __envcount searchenvreturn0ptr1ptr3tmp1found.size@L9CODERODATABSSDATA 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++__CBM____C64__../libwrk/c64/gets.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_stdin_fgetc_getspushaxldaxyspdecsp2push0L0005.sizestaxyspL0018L0026L0002L0006L001AL0022addeq0spincsp8CODERODATABSSDATAZEROPAGENULLUzna` kzUQ  ,/R'.(@ŴE*[faX <-  -  -  L -  -   -  - -   - -  - -   -   -  -      - - -L -!"#$%    - < ! -0")&14$.! 5 -%*(,2/ #'+&__CBM____C64__../libwrk/c64/gmtime.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac__tz_gmtime -_localtimepushaxdecsp4L000Cincsp6ldaxysp.sizeldeaxipusheax tosaddeaxsteax0spCODERODATABSSDATAZEROPAGENULLUzna` iqQ $suv@ŴfaX  L - -     __CBM____C64__ cbm/gotox.sca65 V2.17 - Git 6c320f7_gotoxplotCURS_X.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqo=W@ŴfaX8  -  -    -  L -  -   - -   __CBM____C64__ cbm/gotoxy.sca65 V2.17 - Git 6c320f7gotoxy_gotoxypopaplotCURS_XCURS_Y.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $suv@ŴfaX  L - -      __CBM____C64__ cbm/gotoy.sca65 V2.17 - Git 6c320f7_gotoyplotCURS_Y.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ŴfaX& -  -L -    -    __CBM____C64__ runtime/gt.sca65 V2.17 - Git 6c320f7tosgt00tosgta0tosgtaxtosicmpboolgt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq#j@ŴfaX.(     -      8    i `PI `     -"&  $! %*(,/#'+__CBM____C64__runtime/icmp.sca65 V2.17 - Git 6c320f7tosicmptosicmp0spsreg.size@L1@L2@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` ix+, -@ŴfaX -faX3+# #    -  $ $E  $ !!"8 I%i   - $  0  `L - !"#  $  &-0?") 984 .! @*(,/: #'+#__CBM____C64__runtime/idiv32by16r16.sca65 V2.17 - Git 6c320f7 idiv32by16r16negaxudiv32by16r16m-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L1@L3@L2@L4CODERODATABSSDATAZEROPAGENULLUzna` ix. j-@ŴfaX faX+&   -   E         -    - L -` !"  -  - -")&  $! %*(, #'+#__CBM____C64__runtime/imul16x16r32.sca65 V2.17 - Git 6c320f7 imul16x16r32negax umul16x16r32mnegeax-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L1@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` ix2MjmZl[@Ŵ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__CBM____C64__runtime/imul8x8r16.sca65 V2.17 - Git 6c320f7 -imul8x8r16 imul8x8r16mptr1ptr3tmp1,/home/hugg/compilers/cc65/asminc/generic.mac.size@L7NegMult@L2@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` i^ 9:@ŴfaXfaXfaX'i` !    "__CBM____C64__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  -` -      __CBM____C64__runtime/incax2.sca65 V2.17 - Git 6c320f7incax2,/home/hugg/compilers/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )spq@ŴfaXL -  -      -__CBM____C64__runtime/incax3.sca65 V2.17 - Git 6c320f7incax3incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )spq@ŴfaXL -  -      -__CBM____C64__runtime/incax5.sca65 V2.17 - Git 6c320f7incax5incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )spq@ŴfaXL -  -      -__CBM____C64__runtime/incax6.sca65 V2.17 - Git 6c320f7incax6incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )spq@ŴfaXL -  -      -__CBM____C64__runtime/incax7.sca65 V2.17 - Git 6c320f7incax7incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )spq@ŴfaXL -  -      -__CBM____C64__runtime/incax8.sca65 V2.17 - Git 6c320f7incax8incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixsGZ@Ŵ([faX<  -  e   `    -    __CBM____C64__runtime/incaxy.sca65 V2.17 - Git 6c320f7incaxyincax4tmp1,/home/hugg/compilers/cc65/asminc/generic.mac.size@L9CODERODATABSSDATAZEROPAGENULLUzna` iqf 3!s@ŴfaX/   `  -    -   -__CBM____C64__runtime/incsp1.sca65 V2.17 - Git 6c320f7incsp1sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix% 1NQP@Ŵ([faXv   ! ! ##`  % %` !"#! %)"& $! *(/ #'$__CBM____C64__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 )spq@ŴfaXL -  -      -__CBM____C64__runtime/incsp3.sca65 V2.17 - Git 6c320f7incsp3addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )spq@ŴfaXL -  -      -__CBM____C64__runtime/incsp4.sca65 V2.17 - Git 6c320f7incsp4addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )spq@ŴfaXL -  -      -__CBM____C64__runtime/incsp5.sca65 V2.17 - Git 6c320f7incsp5addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )spq@ŴfaXL -  -      -__CBM____C64__runtime/incsp6.sca65 V2.17 - Git 6c320f7incsp6addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )spq@ŴfaXL -  -      -__CBM____C64__runtime/incsp7.sca65 V2.17 - Git 6c320f7incsp7addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )spq@ŴfaXL -  -      -__CBM____C64__runtime/incsp8.sca65 V2.17 - Git 6c320f7incsp8addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqA B   [_m @Ŵ([t l2 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    `m    -    2n  > [ 0 9  s  >opq h hb^@ -h hhh6$hmj|U PM]l?>&s98ptkTA;Jn$^!iqd= %_@Nr2wcRvz/:u `BSZ{Q<Xr__CBM____C64__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` ix|0m@A@ŴfaXfaX,$ H I    -  - -  - i0  i0  - `      -      ")& $! -%( #'__CBM____C64__ cbm/initcwd.sca65 V2.17 - Git 6c320f7initcwd devicestrcurunit__cwdpusha0 tosudiva0sregptr1ptr2,/home/hugg/compilers/cc65/asminc/generic.mac.size@L0CODERODATABSSDATAZEROPAGENULLUzna` i'/_V{@Ŵ([ 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@2 5 3@): *###FmjU -0MlH?s  9CL6EgtkT1A4 n$.^ qd5 -_[N*ar,wRK/:u'`BSZQ<YX+)__CBM____C64__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` ix  @ŴfaX([4F  -T -TxXK`LC] N7 -7/ -/ H( I(L; -;" g -gL -g,2,y-Yl[jN")B!FPX Hu%EDaOA;L1G ! : -gn4xo"i5K *q(_rU,&dT]\@tb. Q^I` sJeMVRS$+C3__CBM____C64__ c64/irq.sca65 V2.17 - Git 6c320f7initirqdoneirqcallirq(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG -CURS_BLINK CURS_CHAR -CURS_STATE -SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC -VIC_SPR0_X -VIC_SPR0_Y -VIC_SPR1_X -VIC_SPR1_Y -VIC_SPR2_X -VIC_SPR2_Y -VIC_SPR3_X -VIC_SPR3_Y -VIC_SPR4_X -VIC_SPR4_Y -VIC_SPR5_X -VIC_SPR5_Y -VIC_SPR6_X -VIC_SPR6_Y -VIC_SPR7_X -VIC_SPR7_Y VIC_SPR_HI_X VIC_SPR_ENA VIC_SPR_EXP_Y VIC_SPR_EXP_XVIC_SPR_MCOLORVIC_SPR_BG_PRIOVIC_SPR_MCOLOR0VIC_SPR_MCOLOR1VIC_SPR0_COLORVIC_SPR1_COLORVIC_SPR2_COLORVIC_SPR3_COLORVIC_SPR4_COLORVIC_SPR5_COLORVIC_SPR6_COLORVIC_SPR7_COLOR VIC_CTRL1 VIC_CTRL2 VIC_HLINE -VIC_LPEN_X -VIC_LPEN_Y VIC_VIDEO_ADRVIC_IRRVIC_IMRVIC_BORDERCOLOR VIC_BG_COLOR0 VIC_BG_COLOR1 VIC_BG_COLOR2 VIC_BG_COLOR3 VIC_KBD_128 VIC_CLK_128SIDSID_S1LoSID_S1Hi SID_PB1Lo SID_PB1HiSID_Ctl1SID_AD1SID_SUR1SID_S2LoSID_S2Hi SID_PB2Lo SID_PB2HiSID_Ctl2SID_AD2SID_SUR2SID_S3LoSID_S3Hi SID_PB3Lo SID_PB3HiSID_Ctl3SID_AD3SID_SUR3 SID_FltLo SID_FltHi -SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DATACIA1CIA1_PRACIA1_PRB CIA1_DDRA CIA1_DDRBCIA1_TACIA1_TB -CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN -CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB -CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeIRQIndIRQStubsetvecCODERODATABSSDATAZEROPAGENULLONCELOWCODEUzna` ixw )@ŴfaXfaX@    - )``      - __CBM____C64__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@    - )``      - __CBM____C64__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@  -) -` `     __CBM____C64__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@    - )``      - __CBM____C64__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@    - )``      - __CBM____C64__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  ``     __CBM____C64__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@    - )``      - __CBM____C64__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)` -`      - __CBM____C64__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  ``     __CBM____C64__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@    - )```      - __CBM____C64__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@    - )``      - __CBM____C64__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@    - )``      - __CBM____C64__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# -z {@Ŵ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<+ __CBM____C64__ common/itoa.sca65 V2.17 - Git 6c320f7_itoa_utoaaddysp1__hextabspsregptr2ptr3tmp1specval.sizedopoputoaL2L1L10L3L5L6L7L9CODERODATABSSDATAZEROPAGENULLUzna` iqD lFG@Ŵ([  -L    __CBM____C64__runtime/jmpvec.sca65 V2.17 - Git 6c320f7jmpvec.sizeCODERODATABSSDATAZEROPAGENULLUzna` iGZuhE@Ŵ([([ faX],M; - 5 5O -O= =# #> ->! !$11A HA% %K0 I0 FH  -8 2 -82   L( -(`J ; -N`M  - ' - -*`-jGoGyGG -. "/ LDLLCL?01/5=#%)A0C-@96 ?C D( OQj/ -?UP0HNG)(>FfPW9C)&O'E%gEDOb3L14;GeJi9+d4=5FN*(2 ,a1 V>,2.:QMBD0 Q<SYX+32__CBM____C64__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$__CBM____C64__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 ij@ŴfaX([faX$faX2faXGWB H -H8 +F%7_[@N*(V,2RK/: #'`BSDZQ<YX++__CBM____C64__../libwrk/c64/gets.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_stdin_fgetc_getspushaxldaxyspdecsp2push0L0005.sizestaxyspL0018L0026L0002L0006L001AL0022addeq0spincsp8CODERODATABSSDATAZEROPAGENULLUzna` i_ @ד]]]2iL W +W j +j )~~ui$ p +Wp +* +*  +W +% %  +W + H I q -8 X - -X   3 -3EE  -  [ -[5 -5e -eF0414D HD I  -H@G -G% -%  - hMM - -  9 - 9/VVH; - -; - - 0 -0  -h7`..`\HIJ - -U  - >  `KL B 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 < FS3M__CBM____C64__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$__CBM____C64__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= _`@ŴfaX  -    - __CBM____C64__c64/joy_stat_stddrv.sca65 V2.17 - Git 6c320f7_joy_static_stddrv_c64_stdjoy_joyCODERODATABSSDATAZEROPAGENULLUzna` iqX q_`@ŴfaX!C64-STDJOY.JOY  -    __CBM____C64__c64/joy_stddrv.sca65 V2.17 - Git 6c320f7 _joy_stddrv.sizeCODERODATABSSDATAZEROPAGENULLUzna` iC^ ilAk@ŴfaX([faX$faX5 -H  -  -H*  -h1h$  -L9 -9 -h7!`)6789:3(9+;/ @/ -?KN"(FP2<J)&'%EDGOLG $!9+40 %12 ,1 >I.H/Q4#M3B0 FS3;__CBM____C64__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` ixh k l @ŴfaX([4, ,vvGG1`) @By-Yl[jNB!FPX Hu%EDaOA;LG   : -gn4xo"i5K q_rU,&dT]\@tb. Q^I`sJeMVRS$C3__CBM____C64__ c64/kbhit.sca65 V2.17 - Git 6c320f7_kbhit(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +q e +e ] +] h +hE  +5  +  +L +) )oJ> >JJeA Ae ` ]mmmemmhmWj>ATqW V/-SGk -PC0MHzG?~3")B)&;HA]9_+xK|&ILB(O6q% -DAa3D98p\i1M4: UJ$.jQ!Td9:g+I8}= {5FX%7b?fN*m*(F ,1Y>,,2<E@K.L$l:@y #WP 'N SZD0= +wQ<"!J+C__CBM____C64__ c64/gettime.sca65 V2.18 - Git cab4910a/home/pzp/cc65/asminc/time.inctmtm_sec.sizetm_mintm_hourtm_mdaytm_montm_yeartm_wdaytm_ydaytm_isdsttimespectv_sectv_nsec _clock_getres_clock_gettime_clock_settime +_localtime_mktime/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -24376,209 +27516,9 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYL9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixa y] ^ @Ŵ([([4% -V @S`-!(y- Yl[jNB !FPX Hu%EDaOA;LG   : -gn4xo  -"i5K q_rU,&dT]\@tb. Q^I`sJeMVRS$C3__CBM____C64__c64/kbrepeat.sca65 V2.17 - Git 6c320f7 _kbrepeat(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG -CURS_BLINK CURS_CHAR -CURS_STATE -SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC -VIC_SPR0_X -VIC_SPR0_Y -VIC_SPR1_X -VIC_SPR1_Y -VIC_SPR2_X -VIC_SPR2_Y -VIC_SPR3_X -VIC_SPR3_Y -VIC_SPR4_X -VIC_SPR4_Y -VIC_SPR5_X -VIC_SPR5_Y -VIC_SPR6_X -VIC_SPR6_Y -VIC_SPR7_X -VIC_SPR7_Y VIC_SPR_HI_X VIC_SPR_ENA VIC_SPR_EXP_Y VIC_SPR_EXP_XVIC_SPR_MCOLORVIC_SPR_BG_PRIOVIC_SPR_MCOLOR0VIC_SPR_MCOLOR1VIC_SPR0_COLORVIC_SPR1_COLORVIC_SPR2_COLORVIC_SPR3_COLORVIC_SPR4_COLORVIC_SPR5_COLORVIC_SPR6_COLORVIC_SPR7_COLOR VIC_CTRL1 VIC_CTRL2 VIC_HLINE -VIC_LPEN_X -VIC_LPEN_Y VIC_VIDEO_ADRVIC_IRRVIC_IMRVIC_BORDERCOLOR VIC_BG_COLOR0 VIC_BG_COLOR1 VIC_BG_COLOR2 VIC_BG_COLOR3 VIC_KBD_128 VIC_CLK_128SIDSID_S1LoSID_S1Hi SID_PB1Lo SID_PB1HiSID_Ctl1SID_AD1SID_SUR1SID_S2LoSID_S2Hi SID_PB2Lo SID_PB2HiSID_Ctl2SID_AD2SID_SUR2SID_S3LoSID_S3Hi SID_PB3Lo SID_PB3HiSID_Ctl3SID_AD3SID_SUR3 SID_FltLo SID_FltHi -SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DATACIA1CIA1_PRACIA1_PRB CIA1_DDRA CIA1_DDRBCIA1_TACIA1_TB -CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN -CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB -CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq=x{IFzG@ŴfaX+,-./0&*:)9L(7' &H8%>D$J#2"'!6C  (?A%G+* -1=BIEF4 #5 -K") @<  . -3$ /0!,;&MU PMHG?")>& W9C8LO6E3TA4; J$!I= 5 -F%7@N*(V,2RK: #'BSDQ<+1__CBM____C64__ c64/kernal.sca65 V2.17 - Git 6c320f7CINTIOINITRAMTASRESTORVECTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSECHKINCKOUTCLRCHBASINBSOUTLOADSAVESETTIMRDTIMSTOPGETINCLALLUDTIMSCREENIOBASECODERODATABSSDATAZEROPAGENULLUzna` iq\ . itu@ŴfaX%  L$L  -       __CBM____C64__ c64/kplot.sca65 V2.17 - Git 6c320f7PLOT@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqf 86@ŴfaX/  -  -L -`    -   -__CBM____C64__ common/labs.sca65 V2.17 - Git 6c320f7_labs_imaxabsnegeaxsreg.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` ixs"@A@ŴfaX faX%"  'q# # +q& &( (q   * *q     L/ -/ !"#$ -   (*  #& /"0")&  $!% *(, #'+%__CBM____C64__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/: #'%__CBM____C64__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`      " !  - __CBM____C64__runtime/laddeqsp.sca65 V2.17 - Git 6c320f7 laddeq0sp laddeqyspspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixn"@A@Ŵ([ faX$!  1 ,  -1( (  1* *" "   10 0# # L' -' !"#$ -  " #(*0'+10")&  $.! -% *(,/#'+%__CBM____C64__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^j_@ŴfaX  )   -    f -  -f f j   `    - "&$!%*, #+__CBM____C64__runtime/lasr.sca65 V2.17 - Git 6c320f7 tosasreaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` iq Lkz@ŴfaXY -      - -``            -__CBM____C64__runtime/lbneg.sca65 V2.17 - Git 6c320f7bnegeaxsregtmp1.size@L0CODERODATABSSDATAZEROPAGENULLUzna` iqX! PQ@ŴfaX !;4 ! !  8  "% % " "  && # #  - ($`'`PI    -(` !#  % - (-0")& 86314.! 5 -%*(2#'+__CBM____C64__runtime/lcmp.sca65 V2.17 - Git 6c320f7toslcmpincsp4spsregptr1.sizeL4L1L2L3L5CODERODATABSSDATAZEROPAGENULLUzna` iq - ),[s+@ŴfaXkI HI  I  I h`  -      -  __CBM____C64__runtime/lcompl.sca65 V2.17 - Git 6c320f7compleaxsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq{ BFs@ŴfaXD     -   ` -           -__CBM____C64__runtime/ldai.sca65 V2.17 - Git 6c320f7ldaidxptr1@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix03q2r@ŴfaX faXT    -  -  ` !" - #    #__CBM____C64__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(q@ŴfaX5    `   -     -    -__CBM____C64__runtime/ldaui.sca65 V2.17 - Git 6c320f7ldauidxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq36V 5 @ŴfaX^ -       `        - -    -__CBM____C64__runtime/ldauisp.sca65 V2.17 - Git 6c320f7ldaui0spldauiyspspptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq -B]w@ŴfaXI     -  -   ` -     -      -__CBM____C64__runtime/ldaxi.sca65 V2.17 - Git 6c320f7ldaxildaxidxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqf=<x@ŴfaX/  -   ` -        __CBM____C64__runtime/ldaxsp.sca65 V2.17 - Git 6c320f7ldax0spldaxyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq)<Y\`;[<@ŴfaX - -  -         `     -        -__CBM____C64__runtime/ldeaxi.sca65 V2.17 - Git 6c320f7ldeaxidxldeaxisregptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq =@[?@ŴfaXg -      -   `          __CBM____C64__runtime/ldeaxysp.sca65 V2.17 - Git 6c320f7ldeax0spldeaxyspsregsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq) 58Vy7@Ŵ([q - 8          `    -  $ #__CBM____C64__runtime/ldec.sca65 V2.17 - Git 6c320f7deceaxysregtmp1.size@L9CODERODATABSSDATAZEROPAGENULLUzna` iq3.a~e@ŴfaX     -  -   E  L -  `  -  -  -  - -      & ! -%( __CBM____C64__runtime/ldiv.sca65 V2.17 - Git 6c320f7 tosdiv0ax tosdiveax poplsargsudiv32negeaxsregptr1tmp1tmp2.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ŴfaX& -  - - -L -    -     -__CBM____C64__ runtime/le.sca65 V2.17 - Git 6c320f7tosle00toslea0tosleaxtosicmpboolle.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq{L`y@ŴfaXD   e H e h` -    -     -__CBM____C64__runtime/leaaxsp.sca65 V2.17 - Git 6c320f7leaaxspleaa0spsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix3Cb;<@Ŵ([ faX" #  -H  8&e  !! h`#$%&' "  -    -').-0 8314 . 7 *,2/(__CBM____C64__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 $z|}@ŴfaX   -L - -      -__CBM____C64__ runtime/leq.sca65 V2.17 - Git 6c320f7toseqeaxtoslcmpbooleq.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $z|}@ŴfaX   -L - -      -__CBM____C64__ runtime/lge.sca65 V2.17 - Git 6c320f7tosgeeaxtoslcmpboolge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $z|}@ŴfaX   -L - -      -__CBM____C64__ runtime/lgt.sca65 V2.17 - Git 6c320f7tosgteaxtoslcmpboolgt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq= -)3@ŴfaX -     -   __CBM____C64__ c64/libref.sca65 V2.17 - Git 6c320f7 em_libref -joy_libref -ser_libref -tgi_libref_exitCODERODATABSSDATAZEROPAGENULLUzna` iq  $'Qxy&@ŴfaXa -  e     `    - -    -__CBM____C64__runtime/linc.sca65 V2.17 - Git 6c320f7inceaxyptr4sreg@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $z|}@ŴfaX   -L - -      -__CBM____C64__ runtime/lle.sca65 V2.17 - Git 6c320f7tosleeaxtoslcmpboolle.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ zwx@ŴfaX   -L - -      -__CBM____C64__ runtime/llt.sca65 V2.17 - Git 6c320f7toslteaxtoslcmpboollt.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixT5|;<@Ŵ([ -faX%     -   -# #  % %  $ L -`&'()*  # -%  $* ") 3 $.! -% *2 #+__CBM____C64__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<+0__CBM____C64__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 $z|}@ŴfaX   -L - -      -__CBM____C64__ runtime/lne.sca65 V2.17 - Git 6c320f7tosneeaxtoslcmpboolne.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq0 -: FIoo'H(@ŴfaXIiH  Ii -  -I i  Ii h `  -    -  -__CBM____C64__runtime/lneg.sca65 V2.17 - Git 6c320f7negeaxsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqR ybc@ŴfaX  -    - __CBM____C64__cbm/loadaddr.sca65 V2.17 - Git 6c320f7 __LOADADDR__.sizeCODERODATABSSDATAZEROPAGENULLLOADADDRUzna` kz+_CK@ŴE*[faXuJ= H9 I9` & -&!8 8  020  -  B B7@ @ 3 -3 D DCA A//L -0  - # #- ->2 26'L -  H IL - .EE!e" - - -. -= - -; -5 - - -% -?:$<",#$ 3 & B@DA#-2+8 E*)Fh\jU -PM]"&fW9LOEgbkT;eJ$^!Id= 5 -%_[N*aV,cRK: #`SZQYX+%__CBM____C64__../libwrk/c64/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@ŴE*[ faX%j @ +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYsregtmp1tmp2pushaxpusheax tosmul0ax +steaxspidxincsp1return0TM +load_tenth@L1@L2BCD2decCODERODATABSSDATAZEROPAGENULLUzna` kz.e  nu@ד] ]%j @ @ : :#  <! !**  @@ -24616,73 +27556,645 @@ _setlocale _EmptyString.size_lcL0003L0022pushaxL002Aldax0spL002Cincsp4 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++__CBM____C64__../libwrk/c64/localtime.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac -_localtime_mktimeL0004.sizepushaxdecsp4L001Eldaxyspldeaxisteax0spL0005incsp6ldeax0sppusheax +F%7_[@N*(V,2RK/: #'`BSDZQ<YX++__CBM____C64__../libwrk/c64/gmtime.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_gmtime_mktimeL0004.sizepushaxdecsp4L001Eldaxyspldeaxisteax0spL0005incsp6ldeax0sppusheax tosumod0ax tosudiv0ax -tosudiveaxinceaxyCODERODATABSSDATAZEROPAGENULLUzna` iq# M@Ŵ([ ('       -        H H  +tosudiveaxinceaxyCODERODATABSSDATAZEROPAGENULLUzna` iqQ $tvw@ד]  L + +      __CBM____C64__ cbm/gotox.sca65 V2.18 - Git cab4910a_gotoxplotCURS_X.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqo=W@ד]8  +  +    +  L +  +   + +   __CBM____C64__ cbm/gotoxy.sca65 V2.18 - Git cab4910agotoxy_gotoxypopaplotCURS_XCURS_Y.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $tvw@ד]  L + +      __CBM____C64__ cbm/gotoy.sca65 V2.18 - Git cab4910a_gotoyplotCURS_Y.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ד]& +  +L +    +    __CBM____C64__ runtime/gt.sca65 V2.18 - Git cab4910atosgt00tosgta0tosgtaxtosicmpboolgt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq#j@ד].(     +      8    i `PI `     -"&  $! %*(,/#'+__CBM____C64__runtime/icmp.sca65 V2.18 - Git cab4910atosicmptosicmp0spsreg.size@L1@L2@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` ix+ }#@ד] +]0(! !  +  " "ɀE   # #   + $ 0  ` +L + !"!   "  # $-?"> 983 .! 7*(,/ #'+#__CBM____C64__runtime/idiv32by16r16.sca65 V2.18 - Git cab4910a idiv32by16r16negaxudiv32by16r16m"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L1@L3@L2@L4CODERODATABSSDATAZEROPAGENULLUzna` ix. j#@ד] ]+&   +   E         +    + L +` !"  +  + -")&  $! %*(, #'+#__CBM____C64__runtime/imul16x16r32.sca65 V2.18 - Git cab4910a imul16x16r32negax umul16x16r32mnegeax"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L1@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` ix2ORkWQX@ד] +]hC>/ / i1 1 - .).I&  *% *%'  " " &4 4F   $%$%0` e )e  &3 3F2 2%%`6! /1"43!2,#8U-PMHG?">& WC8LO6T14;J.I=5 +7@0,2RK/:#'BSQ<X+__CBM____C64__runtime/imul8x8r16.sca65 V2.18 - Git cab4910a +imul8x8r16 imul8x8r16mptr1ptr3tmp1!/home/pzp/cc65/asminc/generic.mac.sizePosStartNegMultNegStartNegAddNegShiftPosAddPosShiftCODERODATABSSDATAZEROPAGENULLUzna` i^ $%@ד]]]'i` !    "__CBM____C64__runtime/incax1.sca65 V2.18 - Git cab4910aincax1!/home/pzp/cc65/asminc/generic.mac/home/pzp/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^ =#@ד]]'  i  +` +      __CBM____C64__runtime/incax2.sca65 V2.18 - Git cab4910aincax2!/home/pzp/cc65/asminc/generic.mac@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )tqr@ד]L +  +      +__CBM____C64__runtime/incax3.sca65 V2.18 - Git cab4910aincax3incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )tqr@ד]L +  +      +__CBM____C64__runtime/incax5.sca65 V2.18 - Git cab4910aincax5incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )tqr@ד]L +  +      +__CBM____C64__runtime/incax6.sca65 V2.18 - Git cab4910aincax6incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )tqr@ד]L +  +      +__CBM____C64__runtime/incax7.sca65 V2.18 - Git cab4910aincax7incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )tqr@ד]L +  +      +__CBM____C64__runtime/incax8.sca65 V2.18 - Git cab4910aincax8incaxy.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixsGZ@ד]]<  +  e   `    +    __CBM____C64__runtime/incaxy.sca65 V2.18 - Git cab4910aincaxyincax4tmp1!/home/pzp/cc65/asminc/generic.mac.size@L9CODERODATABSSDATAZEROPAGENULLUzna` iqf 3!t@ד]/   `  +    +   +__CBM____C64__runtime/incsp1.sca65 V2.18 - Git cab4910aincsp1sp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix% 1NQP@ד]]v   ! ! ##`  % %` !"#! %)"& $! *(/ #'$__CBM____C64__runtime/incsp2.sca65 V2.18 - Git cab4910apopaxincsp2sp/home/pzp/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 )tqr@ד]L +  +      +__CBM____C64__runtime/incsp3.sca65 V2.18 - Git cab4910aincsp3addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )tqr@ד]L +  +      +__CBM____C64__runtime/incsp4.sca65 V2.18 - Git cab4910aincsp4addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )tqr@ד]L +  +      +__CBM____C64__runtime/incsp5.sca65 V2.18 - Git cab4910aincsp5addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )tqr@ד]L +  +      +__CBM____C64__runtime/incsp6.sca65 V2.18 - Git cab4910aincsp6addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )tqr@ד]L +  +      +__CBM____C64__runtime/incsp7.sca65 V2.18 - Git cab4910aincsp7addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )tqr@ד]L +  +      +__CBM____C64__runtime/incsp8.sca65 V2.18 - Git cab4910aincsp8addysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq( F   [Kn @ד]t l ^ ^        +J-   +   +- -   8 +8  +ABA (UU y yH, , hL +I<*6q +q + i> +s[  +3  +ww  iiJFf  J&  u +ui   +B?? J@  +I5   + + +  +2Ie    +  + V +V ++Q +Q  +} +   + + +   +3 g  +  +DNNil l (r r E +E['1 I I   +f L +o +>eZZ +S +>Skk +> +  +^| +~@} +>@hh + +~! +~!G +Gv>] x +x + + + + +`  +*cJ +} }8 +> } +~ +` +>8 +^} +{ +{)b`/&   +  +Fp pj`  +L  +jY`F ##H9 9 T T8>j\) )h` : :    H H`m  """""" "" +"" "" "" """""    2n n >   X $   >mopq  O + *PyWmj|U0l?"o>&s9C}Otk3TA;e n^!iqdx=%_[@NarVwRKv:u '`BS{Q<Yr__CBM____C64__zlib/inflatemem.sca65 V2.18 - Git cab4910a _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` ix|0m67@ד]],$ H I    +  + +  + i0  i0  + `      +      ")& $! +%( #'__CBM____C64__ cbm/initcwd.sca65 V2.18 - Git cab4910ainitcwd devicestrcurunit__cwdpusha0 tosudiva0sregptr1ptr2!/home/pzp/cc65/asminc/generic.mac.size@L0CODERODATABSSDATAZEROPAGENULLUzna` i'/_Vf@ד] ]]#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@2 5 3@): *###FmjU -0MlH?s  9CL6EgtkT1A4 n$.^ qd5 +_[N*ar,wRK/:u'`BSZQ<YX+)__CBM____C64__common/interrupt.sca65 V2.18 - Git cab4910a_set_irq +_reset_irq +clevel_irqpopax __ZP_START__jmpvec"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace!/home/pzp/cc65/asminc/generic.macirqvec.sizeirqspzpsave@L1@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` ixve f @ד]]2F  +V +VxXM`LD^ P6 +6, +, H% I%L: +:" k +kL +k).)<y-?YlpjN")B!FP=X Hk%EDaA};L81ZG ! 9: +g+xz"i{~fmK *q(_2U,&dT]|>w\@b QWI JMVS$+C3__CBM____C64__ c64/irq.sca65 V2.18 - Git cab4910ainitirqdoneirqcallirq/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +CURS_BLINK CURS_CHAR +CURS_STATE +SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC +VIC_SPR0_X +VIC_SPR0_Y +VIC_SPR1_X +VIC_SPR1_Y +VIC_SPR2_X +VIC_SPR2_Y +VIC_SPR3_X +VIC_SPR3_Y +VIC_SPR4_X +VIC_SPR4_Y +VIC_SPR5_X +VIC_SPR5_Y +VIC_SPR6_X +VIC_SPR6_Y +VIC_SPR7_X +VIC_SPR7_Y VIC_SPR_HI_X VIC_SPR_ENA VIC_SPR_EXP_Y VIC_SPR_EXP_XVIC_SPR_MCOLORVIC_SPR_BG_PRIOVIC_SPR_MCOLOR0VIC_SPR_MCOLOR1VIC_SPR0_COLORVIC_SPR1_COLORVIC_SPR2_COLORVIC_SPR3_COLORVIC_SPR4_COLORVIC_SPR5_COLORVIC_SPR6_COLORVIC_SPR7_COLOR VIC_CTRL1 VIC_CTRL2 VIC_HLINE +VIC_LPEN_X +VIC_LPEN_Y VIC_VIDEO_ADRVIC_IRRVIC_IMRVIC_BORDERCOLOR VIC_BG_COLOR0 VIC_BG_COLOR1 VIC_BG_COLOR2 VIC_BG_COLOR3 VIC_KBD_128 VIC_CLK_128SIDSID_S1LoSID_S1Hi SID_PB1Lo SID_PB1HiSID_Ctl1SID_AD1SID_SUR1SID_S2LoSID_S2Hi SID_PB2Lo SID_PB2HiSID_Ctl2SID_AD2SID_SUR2SID_S3LoSID_S3Hi SID_PB3Lo SID_PB3HiSID_Ctl3SID_AD3SID_SUR3 SID_FltLo SID_FltHi +SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DATACIA1CIA1_PRACIA1_PRB CIA1_DDRA CIA1_DDRBCIA1_TACIA1_TB +CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN +CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB +CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeIRQIndIRQStubsetvecCODERODATABSSDATAZEROPAGENULLONCELOWCODEUzna` ixw @ד]]@    + )``      + __CBM____C64__common/isalnum.sca65 V2.18 - Git cab4910a_isalnum/home/pzp/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 @ד]]@    + )``      + __CBM____C64__common/isalpha.sca65 V2.18 - Git cab4910a_isalpha/home/pzp/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 @ד]]@  +) +` `     __CBM____C64__common/isblank.sca65 V2.18 - Git cab4910a_isblank/home/pzp/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 @ד]]@    + )``      + __CBM____C64__common/iscntrl.sca65 V2.18 - Git cab4910a_iscntrl/home/pzp/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 @ד]]@    + )``      + __CBM____C64__common/isdigit.sca65 V2.18 - Git cab4910a_isdigit/home/pzp/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 @ד]]R  + +)0  ``     __CBM____C64__common/isgraph.sca65 V2.18 - Git cab4910a_isgraph/home/pzp/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 @ד]]@    + )``      + __CBM____C64__common/islower.sca65 V2.18 - Git cab4910a_islower/home/pzp/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}   +@ד]]F   +I)` +`      + __CBM____C64__common/isprint.sca65 V2.18 - Git cab4910a_isprint/home/pzp/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 @ד]]R  + +)7  ``     __CBM____C64__common/ispunct.sca65 V2.18 - Git cab4910a_ispunct/home/pzp/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 @ד]]@    + )```      + __CBM____C64__common/isspace.sca65 V2.18 - Git cab4910a_isspace/home/pzp/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 @ד]]@    + )``      + __CBM____C64__common/isupper.sca65 V2.18 - Git cab4910a_isupper/home/pzp/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 !@ד]]@    + )``      + __CBM____C64__common/isxdigit.sca65 V2.18 - Git cab4910a _isxdigit/home/pzp/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# +{ |@ד]~* *;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<+ __CBM____C64__ common/itoa.sca65 V2.18 - Git cab4910a_itoa_utoaaddysp1__hextabspsregptr2ptr3tmp1specval.sizedopoputoaL2L1L10L3L5L6L7L9CODERODATABSSDATAZEROPAGENULLUzna` iqD mGH@ד]  +L    __CBM____C64__runtime/jmpvec.sca65 V2.18 - Git cab4910ajmpvec.sizeCODERODATABSSDATAZEROPAGENULLUzna` iGZuh0@ד]] ]],M; + 5 5O +O= =# #> +>! !$11A HA% %K0 I0 FH  +8 2 +82   L( +(`J ; +N`M  + ' + +*`-jGoGyGG +. "/ LDLLCL?01/5=#%)A0C-@96 ?C D( OQj/ -?UP0HNG)(>FfPW9C)&O'E%gEDOb3L14;GeJi9+d4=5FN*(2 ,a1 V>,2.:QMBD0 Q<SYX+32__CBM____C64__joystick/joy-kernel.sca65 V2.18 - Git cab4910a +joy_librefptr1$/home/pzp/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/pzp/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|@ד]] !"#/ -?NFPEDOLG9+4 +2 ,1 >.QM0 S3$__CBM____C64__joystick/joy_count.sca65 V2.18 - Git cab4910a$/home/pzp/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 f>?@ד]]]$]2]GWB H +H8 + +8 X + +X   3 +3EE  +  [ +[5 +5e +eF0414D HD I  +H@G +G% +%  + hMM + +  9 + 9/VVH; + +; + + 0 +0  +h7`..`\HIJ + +U  + >  `KL B 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 < FS3M__CBM____C64__joystick/joy_load.sca65 V2.18 - Git cab4910a$/home/pzp/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/pzp/cc65/asminc/joy-error.inc +JOY_ERR_OKJOY_ERR_NO_DRIVERJOY_ERR_CANNOT_LOADJOY_ERR_INV_DRIVERJOY_ERR_NO_DEVICE!/home/pzp/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/pzp/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$__CBM____C64__joystick/joy_read.sca65 V2.18 - Git cab4910a$/home/pzp/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= `a@ד]  +    + __CBM____C64__c64/joy_stat_stddrv.sca65 V2.18 - Git cab4910a_joy_static_stddrv_c64_stdjoy_joyCODERODATABSSDATAZEROPAGENULLUzna` iqX r`a@ד]!C64-STDJOY.JOY  +    __CBM____C64__c64/joy_stddrv.sca65 V2.18 - Git cab4910a _joy_stddrv.sizeCODERODATABSSDATAZEROPAGENULLUzna` iC^ ilAzk{@ד]]]$]5 +H  +  +H*  +h1h$  +L9 +9 +h7!`)6789:3(9+;/ @/ -?KN"(FP2<J)&'%EDGOLG $!9+40 %12 ,1 >I.H/Q4#M3B0 FS3;__CBM____C64__joystick/joy_unload.sca65 V2.18 - Git cab4910a$/home/pzp/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/pzp/cc65/asminc/joy-error.inc +JOY_ERR_OKJOY_ERR_NO_DRIVERJOY_ERR_CANNOT_LOADJOY_ERR_INV_DRIVERJOY_ERR_NO_DEVICE!/home/pzp/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` ixh t4 5 @ד]]2, (yyII0`& BD<y-?YlpjNB!FP=X Hk%EDaA};L8ZG   9: +g+xz"i{~fmK q_2U,&dT]|>w\@b QWIJMVS$C3__CBM____C64__ c64/kbhit.sca65 V2.18 - Git cab4910a_kbhit/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +CURS_BLINK CURS_CHAR +CURS_STATE +SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC +VIC_SPR0_X +VIC_SPR0_Y +VIC_SPR1_X +VIC_SPR1_Y +VIC_SPR2_X +VIC_SPR2_Y +VIC_SPR3_X +VIC_SPR3_Y +VIC_SPR4_X +VIC_SPR4_Y +VIC_SPR5_X +VIC_SPR5_Y +VIC_SPR6_X +VIC_SPR6_Y +VIC_SPR7_X +VIC_SPR7_Y VIC_SPR_HI_X VIC_SPR_ENA VIC_SPR_EXP_Y VIC_SPR_EXP_XVIC_SPR_MCOLORVIC_SPR_BG_PRIOVIC_SPR_MCOLOR0VIC_SPR_MCOLOR1VIC_SPR0_COLORVIC_SPR1_COLORVIC_SPR2_COLORVIC_SPR3_COLORVIC_SPR4_COLORVIC_SPR5_COLORVIC_SPR6_COLORVIC_SPR7_COLOR VIC_CTRL1 VIC_CTRL2 VIC_HLINE +VIC_LPEN_X +VIC_LPEN_Y VIC_VIDEO_ADRVIC_IRRVIC_IMRVIC_BORDERCOLOR VIC_BG_COLOR0 VIC_BG_COLOR1 VIC_BG_COLOR2 VIC_BG_COLOR3 VIC_KBD_128 VIC_CLK_128SIDSID_S1LoSID_S1Hi SID_PB1Lo SID_PB1HiSID_Ctl1SID_AD1SID_SUR1SID_S2LoSID_S2Hi SID_PB2Lo SID_PB2HiSID_Ctl2SID_AD2SID_SUR2SID_S3LoSID_S3Hi SID_PB3Lo SID_PB3HiSID_Ctl3SID_AD3SID_SUR3 SID_FltLo SID_FltHi +SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DATACIA1CIA1_PRACIA1_PRB CIA1_DDRA CIA1_DDRBCIA1_TACIA1_TB +CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN +CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB +CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYL9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixa zc& ' @ד]]2% +V +BS`)%<y-? YlpjNB !FP=X Hk%EDaA};L8ZG   9: +g+xz  +"i{~fmK q_2U,&dT]|>w\@b QWIJMVS$C3__CBM____C64__c64/kbrepeat.sca65 V2.18 - Git cab4910a _kbrepeat/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +CURS_BLINK CURS_CHAR +CURS_STATE +SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC +VIC_SPR0_X +VIC_SPR0_Y +VIC_SPR1_X +VIC_SPR1_Y +VIC_SPR2_X +VIC_SPR2_Y +VIC_SPR3_X +VIC_SPR3_Y +VIC_SPR4_X +VIC_SPR4_Y +VIC_SPR5_X +VIC_SPR5_Y +VIC_SPR6_X +VIC_SPR6_Y +VIC_SPR7_X +VIC_SPR7_Y VIC_SPR_HI_X VIC_SPR_ENA VIC_SPR_EXP_Y VIC_SPR_EXP_XVIC_SPR_MCOLORVIC_SPR_BG_PRIOVIC_SPR_MCOLOR0VIC_SPR_MCOLOR1VIC_SPR0_COLORVIC_SPR1_COLORVIC_SPR2_COLORVIC_SPR3_COLORVIC_SPR4_COLORVIC_SPR5_COLORVIC_SPR6_COLORVIC_SPR7_COLOR VIC_CTRL1 VIC_CTRL2 VIC_HLINE +VIC_LPEN_X +VIC_LPEN_Y VIC_VIDEO_ADRVIC_IRRVIC_IMRVIC_BORDERCOLOR VIC_BG_COLOR0 VIC_BG_COLOR1 VIC_BG_COLOR2 VIC_BG_COLOR3 VIC_KBD_128 VIC_CLK_128SIDSID_S1LoSID_S1Hi SID_PB1Lo SID_PB1HiSID_Ctl1SID_AD1SID_SUR1SID_S2LoSID_S2Hi SID_PB2Lo SID_PB2HiSID_Ctl2SID_AD2SID_SUR2SID_S3LoSID_S3Hi SID_PB3Lo SID_PB3HiSID_Ctl3SID_AD3SID_SUR3 SID_FltLo SID_FltHi +SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DATACIA1CIA1_PRACIA1_PRB CIA1_DDRA CIA1_DDRBCIA1_TACIA1_TB +CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN +CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB +CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix=}./@ד] ]56789:&0D-.P -AI,Tc+F?*K)@(U\'`&B;$S,""X ^=/[V_3d +L#WM]H>*!%20( 1 .J < +Q7 +98Re<y/-? -Nc")B& !FP=X7EDaOA};#L8' $.6!9:4xz  +"{%5K*(_U,dT]|>,\@tb. Q^W #J'MVR+C;__CBM____C64__ c64/kernal.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/cbm_kernal.incCINTIOINITRAMTASRESTORVECTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSECHKINCKOUTCHKOUTCLRCHCLRCHNBASINCHRINBSOUTCHROUTLOADSAVESETTIMRDTIMSTOPGETINCLALLUDTIMSCREENPLOTIOBASECLRSCRKBDREADNMIEXIT +UPDCRAMPTRCODERODATABSSDATAZEROPAGENULLUzna` ix\ `D@ד]]%8 "" L$L 9:;<= 'F<y/-?NcB!FP=X7EDaOA};#L8'69:4xz"{5K_U,dT]|>\@tb. Q^WJMVRC>__CBM____C64__ c64/kplot.sca65 V2.18 - Git cab4910aPLOTKERNAL$/home/pzp/cc65/asminc/cbm_kernal.incCINTIOINITRAMTASRESTORVECTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSECHKINCKOUTCHKOUTCLRCHCLRCHNBASINCHRINBSOUTCHROUTLOADSAVESETTIMRDTIMSTOPGETINCLALLUDTIMSCREENIOBASECLRSCRKBDREADNMIEXIT +UPDCRAMPTR@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqf 86@ד]/   -`    -  0") 1 $!  -*(,2#+__CBM____C64__common/longjmp.sca65 V2.17 - Git 6c320f7_longjmppopptr1spptr1ptr2.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixn"=>@Ŵ([ faX$!   ,  -( (  * *" "   0 0# # L' +L +`    +   +__CBM____C64__ common/labs.sca65 V2.18 - Git cab4910a_labs_imaxabsnegeaxsreg.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` ixs"67@ד] ]%"  'q# # +q& &( (q   * *q     L/ +/ !"#$ +   (*  #& /"0")&  $!% *(, #'+%__CBM____C64__runtime/ladd.sca65 V2.18 - Git cab4910a tosadd0ax tosaddeaxaddysp1spsregtmp1/home/pzp/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*. +@ד] ]-*  0 0,q  +  +-H /q$ $  "% q * * & q   h`+ !"#$  0 +$ *05 -0") 8634 .!=5% *(,2/: #'%__CBM____C64__runtime/laddeq.sca65 V2.18 - Git cab4910aladdeq1laddeqaladdeqsregptr1tmp1/home/pzp/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X +CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqe|)@ד] +#"q   H +q     q    q   h`      " !  + __CBM____C64__runtime/laddeqsp.sca65 V2.18 - Git cab4910a laddeq0sp laddeqyspspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixn"67@ד] ]$!  1 ,  +1( (  1* *" "   10 0# # L' ' !"#$   " #(*0'+10")&  $.! -% *(,/#'+%__CBM____C64__ 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 >A@@Ŵ([ faXl      -  L - !"  %   - #__CBM____C64__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.23@Ŵ([ faX!) )% %H . -.(   *  ,# #h  `  !"#$ -)%  #. 2 -0")& 1 $.! % *(, #'%__CBM____C64__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"MN@Ŵ([ faX%" - -8  *  , ," -  1 1# # ( (  L$ -$ !"#$ - - # ,1($%2 -0")& 31 .! % *(,2/ #'+%__CBM____C64__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`xy@Ŵ([ - +% *(,/#'+%__CBM____C64__runtime/land.sca65 V2.18 - Git cab4910a tosand0ax tosandeaxaddysp1spsregtmp1/home/pzp/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_j`@ד]  )   +    f +  +f f j   `    + "&$!%*, #+__CBM____C64__runtime/lasr.sca65 V2.18 - Git cab4910a tosasreaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` iq Lk{@ד]Y +      + +``            +__CBM____C64__runtime/lbneg.sca65 V2.18 - Git cab4910abnegeaxsregtmp1.size@L0CODERODATABSSDATAZEROPAGENULLUzna` iqX! QR@ד] !;4 ! !  8  "% % " "  && # #  + ($`'`PI    +(` !#  % + (-0")& 86314.! 5 +%*(2#'+__CBM____C64__runtime/lcmp.sca65 V2.18 - Git cab4910atoslcmpincsp4spsregptr1.sizeL4L1L2L3L5CODERODATABSSDATAZEROPAGENULLUzna` iq + ),[t+@ד]kI HI  I  I h`  +      +  __CBM____C64__runtime/lcompl.sca65 V2.18 - Git cab4910acompleaxsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq{ BFt@ד]D     +   ` +           +__CBM____C64__runtime/ldai.sca65 V2.18 - Git cab4910aldaidxptr1@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix03g2h@ד] ]T    +  +  ` !" + #    #__CBM____C64__runtime/ldau0sp.sca65 V2.18 - Git cab4910aldau00spldau0yspspptr1/home/pzp/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(r@ד]5    `   +     +    +__CBM____C64__runtime/ldaui.sca65 V2.18 - Git cab4910aldauidxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq36V 5@ד]^ +       `        + +    +__CBM____C64__runtime/ldauisp.sca65 V2.18 - Git cab4910aldaui0spldauiyspspptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq +B]x@ד]I     +  +   ` +     +      +__CBM____C64__runtime/ldaxi.sca65 V2.18 - Git cab4910aldaxildaxidxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqf=<y@ד]/  +   ` +        __CBM____C64__runtime/ldaxsp.sca65 V2.18 - Git cab4910aldax0spldaxyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq)<Y\`<[=@ד] +  -       `       `    -        __CBM____C64__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/: #'<+__CBM____C64__runtime/lshelp.sca65 V2.17 - Git 6c320f7 poplsargsgetlopsregtmp1tmp2ptr1ptr3ptr4.sizeL1L2CODERODATABSSDATAZEROPAGENULLUzna` iq-E\_jW^X@ŴfaX )   -   -& -  -& &     `    - ")$!%*, #__CBM____C64__runtime/lshl.sca65 V2.17 - Git 6c320f7 tosasleax tosshleaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` iq-E QTe=S>@ŴfaX )   -   F f f -  -j    `   -   0")$!( #__CBM____C64__runtime/lshr.sca65 V2.17 - Git 6c320f7 tosshreaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` ixuJK@Ŵ([ -faX'"   8'Iq  -H I/q$ $ -"3 3% % * *  h&L - !"#  % $3*,4 -0")& 314 .! -% *(,2/ #'+$__CBM____C64__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 *(/ #'+$__CBM____C64__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`      " $!  - #__CBM____C64__runtime/lsubeqsp.sca65 V2.17 - Git 6c320f7 lsubeq0sp lsubeqyspspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ŴfaX& +         `     +        +__CBM____C64__runtime/ldeaxi.sca65 V2.18 - Git cab4910aldeaxidxldeaxisregptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq =@[?@ד]g +      +   `          __CBM____C64__runtime/ldeaxysp.sca65 V2.18 - Git cab4910aldeax0spldeaxyspsregsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq) 58Vz7 @ד]q + 8          `    +  $ #__CBM____C64__runtime/ldec.sca65 V2.18 - Git cab4910adeceaxysregtmp1.size@L9CODERODATABSSDATAZEROPAGENULLUzna` iq3.a~e@ד]     +  +   E  L +  `  +  +  +  + +      & ! +%( __CBM____C64__runtime/ldiv.sca65 V2.18 - Git cab4910a tosdiv0ax tosdiveax poplsargsudiv32negeaxsregptr1tmp1tmp2.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ד]&    L          -__CBM____C64__ runtime/lt.sca65 V2.17 - Git 6c320f7toslt00toslta0tosltaxtosicmpboollt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq -!$Lp#@ŴfaXS      +__CBM____C64__ runtime/le.sca65 V2.18 - Git cab4910atosle00toslea0tosleaxtosicmpboolle.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq{L`z@ד]D   e H e h` +    +     +__CBM____C64__runtime/leaaxsp.sca65 V2.18 - Git cab4910aleaaxspleaa0spsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix3Cb12@ד] ]" #  +H  8&e  !! h`#$%&' "  +    +').-0 8314 . 7 *,2/(__CBM____C64__runtime/leave.sca65 V2.18 - Git cab4910aleave00leave0leavey00leavey0leaveyleaveaddyspsp/home/pzp/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 ${}~@ד]   +L + +      +__CBM____C64__ runtime/leq.sca65 V2.18 - Git cab4910atoseqeaxtoslcmpbooleq.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ ${}~@ד]   +L + +      +__CBM____C64__ runtime/lge.sca65 V2.18 - Git cab4910atosgeeaxtoslcmpboolge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ ${}~@ד]   +L + +      +__CBM____C64__ runtime/lgt.sca65 V2.18 - Git cab4910atosgteaxtoslcmpboolgt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq= +)3@ד] +     +   __CBM____C64__ c64/libref.sca65 V2.18 - Git cab4910a em_libref +joy_libref +ser_libref +tgi_libref_exitCODERODATABSSDATAZEROPAGENULLUzna` iq  $'Qxz&@ד]a +  e     `    + +    +__CBM____C64__runtime/linc.sca65 V2.18 - Git cab4910ainceaxyptr4sreg@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ ${}~@ד]   +L + +      +__CBM____C64__ runtime/lle.sca65 V2.18 - Git cab4910atosleeaxtoslcmpboolle.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ {xy@ד]   +L + +      +__CBM____C64__ runtime/llt.sca65 V2.18 - Git cab4910atoslteaxtoslcmpboollt.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixT5|12@ד] +]%     +   +# #  % %  $ L +`&'()*  # +%  $* ") 3 $.! +% *2 #+__CBM____C64__runtime/lmod.sca65 V2.18 - Git cab4910a tosmod0ax tosmodeax poplsargsudiv32negeaxsregptr1ptr2tmp1tmp3tmp4/home/pzp/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,/.@ד] ]*\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<+0__CBM____C64__runtime/lmul.sca65 V2.18 - Git cab4910a +tosumul0ax +tosumuleax tosmul0ax tosmuleaxaddysp1spsregtmp1tmp2tmp3tmp4ptr1ptr3ptr4/home/pzp/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 ${}~@ד]   +L + +      +__CBM____C64__ runtime/lne.sca65 V2.18 - Git cab4910atosneeaxtoslcmpboolne.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq0 +: FIop(H)@ד]IiH  Ii +  +I i  Ii h `  +    +  +__CBM____C64__runtime/lneg.sca65 V2.18 - Git cab4910anegeaxsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqR zcd@ד]  +    + __CBM____C64__cbm/loadaddr.sca65 V2.18 - Git cab4910a __LOADADDR__.sizeCODERODATABSSDATAZEROPAGENULLLOADADDRUzna` kz+_CB@ד]]uJ= H9 I9` & +&!8 8  020  +  B B7@ @ 3 +3 D DCA A//L +0  + # #- ->2 26'L +  H IL + .EE!e" + + +. += + +; +5 + + +% +?:$<",#$ 3 & B@DA#-2+8 E*)Fh\jU -PM]"&fW9LOEgbkT;eJ$^!Id= 5 +%_[N*aV,cRK: #`SZQYX+%__CBM____C64__../libwrk/c64/locale.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac _localeconv +_setlocale _EmptyString.size_lcL0003L0022pushaxL002Aldax0spL002Cincsp4CODERODATABSSDATAZEROPAGENULLUzna` kzUQ  ,/L!."@ד]] <-  +  +  L +  +   +  + +   + +  + +   +   +  +      + + +L +!"#$%     + <! -0")&14$.! 5 +%*(,2/ #'+&__CBM____C64__../libwrk/c64/localtime.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac__tz_gmtime +_localtimepushaxdecsp4L000Cincsp6ldaxysp.sizeldeaxipusheax tosaddeaxsteax0spCODERODATABSSDATAZEROPAGENULLUzna` iq# M@ד] ('       +        H H  +  +`    +  0") 1 $!  +*(,2#+__CBM____C64__common/longjmp.sca65 V2.18 - Git cab4910a_longjmppopptr1spptr1ptr2.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ixn"34@ד] ]$!   ,  +( (  * *" "   0 0# # L' +' !"#$ +  " #(*0'+10")&  $.! +% *(,/#'+%__CBM____C64__ runtime/lor.sca65 V2.18 - Git cab4910atosor0axtosoreaxaddysp1spsregtmp1/home/pzp/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 >A}x@y@ד] ]l      +  L + !"  %   + #__CBM____C64__runtime/lpop.sca65 V2.18 - Git cab4910apopeaxincsp4spsreg/home/pzp/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.()@ד] ]!) )% %H . +.(   *  ,# #h  `  !"#$ +)%  #. 2 -0")& 1 $.! % *(, #'%__CBM____C64__runtime/lpush.sca65 V2.18 - Git cab4910apushl0push0axpusheaxdecsp4spsreg/home/pzp/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"CD@ד] ]%" - -8  *  , ," +  1 1# # ( (  L$ +$ !"#$ + - # ,1($%2 -0")& 31 .! % *(,2/ #'+%__CBM____C64__runtime/lrsub.sca65 V2.18 - Git cab4910a +tosrsub0ax +tosrsubeaxaddysp1spsregtmp1/home/pzp/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`yz@ד] + +  +       `       `    +        __CBM____C64__runtime/lsave.sca65 V2.18 - Git cab4910asaveeaxresteaxsregregsave.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq?9x x@ד] RA $ +$   !, I)i%  Ii-( ( Ii*  Ii+! !  / /"!"& &Ii# # Ii   I i +' ' I.i `  ' &#  +( / !$ 0 0">&98631A4; $.!=5 +%7@*(,2/: #'<+__CBM____C64__runtime/lshelp.sca65 V2.18 - Git cab4910a poplsargsgetlopsregtmp1tmp2ptr1ptr3ptr4.sizeL1L2CODERODATABSSDATAZEROPAGENULLUzna` iq-E\_jX^Y@ד] )   +   +& +  +& &     `    + ")$!%*, #__CBM____C64__runtime/lshl.sca65 V2.18 - Git cab4910a tosasleax tosshleaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` iq-E QTe>S?@ד] )   +   F f f +  +j    `   +   0")$!( #__CBM____C64__runtime/lshr.sca65 V2.18 - Git cab4910a tosshreaxpopeaxsregtmp1.sizeL9L2CODERODATABSSDATAZEROPAGENULLUzna` ixu@A@ד] +]'"   8'Iq  -H I/q$ $ +"3 3% % * *  h&L + !"#  % $3*,4 -0")& 314 .! +% *(,2/ #'+$__CBM____C64__runtime/lsub.sca65 V2.18 - Git cab4910a tossub0ax tossubeaxaddysp1spsreg/home/pzp/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. @ד] +]1,  2 28.I) q  / /H1I(q  & &6 , ,   " " $ $h` !"#  2 / &,"$2!7 -0?")& 96314; $.!57 *(/ #'+$__CBM____C64__runtime/lsubeq.sca65 V2.18 - Git cab4910alsubeq1lsubeqalsubeqsregptr1/home/pzp/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?@ד] +'$8I q  H +Iq            h`      " $!  + #__CBM____C64__runtime/lsubeqsp.sca65 V2.18 - Git cab4910a lsubeq0sp lsubeqyspspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ד]& +  + + +L +    +     +__CBM____C64__ runtime/lt.sca65 V2.18 - Git cab4910atoslt00toslta0tosltaxtosicmpboollt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq +!$Lp#@ד]S       `             -__CBM____C64__runtime/ltest.sca65 V2.17 - Git 6c320f7utsteaxtsteaxsregtmp1.sizeL9CODERODATABSSDATAZEROPAGENULLUzna` ix,[#"%' $@Ŵ([faX/) ) 2 +__CBM____C64__runtime/ltest.sca65 V2.18 - Git cab4910autsteaxtsteaxsregtmp1.sizeL9CODERODATABSSDATAZEROPAGENULLUzna` ix,[#"%'$@ד]]/) ) 2 2C CZ Z X X O O  8 8 `\ @ @@ -24701,45 +28213,45 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODAT UF$].(5RN  8H67: =% = bO2YD;@;ehmjU -0lG?oys f 9C8LO6pEgtk3T1AeJn.idx5 -F%7_[@N *r,2wKvz/:~`SQ+5__CBM____C64__ 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 +F%7_[@N *r,2wKvz/:~`SQ+5__CBM____C64__ common/ltoa.sca65 V2.18 - Git cab4910a_ltoa_ultoapopaxpopptr1negeax__hextab __longminstrsregptr1ptr2ptr3tmp1/home/pzp/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 % %  + @ד]](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"  +N? ?, ,U U W# #&: :& &  *5&/ /&J J& ZI IV V) ) C C \ \[[  2> >TB B& &H H6 6. . $ $3''  `)*+,- 9&9?/VBH 9G +(#:$ 9U  9,J6 9%0"  91E8 N57O7S7!7^mjU-]lHG?")o& fW 98L6Egbk3T1A4eJ$.^iId5 -F%7_@ aV,2cRK/:#'`BSDQYX.__CBM____C64__runtime/ludiv.sca65 V2.17 - Git 6c320f7 +F%7_@ aV,2cRK/:#'`BSDQYX.__CBM____C64__runtime/ludiv.sca65 V2.18 - Git cab4910a 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 $}@ŴfaX   +tosudiveaxgetlopudiv32addysp1spsregtmp3tmp4ptr1ptr2ptr3ptr4/home/pzp/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 $~@ד]   L        -__CBM____C64__runtime/luge.sca65 V2.17 - Git 6c320f7 tosugeeaxtoslcmpbooluge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $}@ŴfaX   +__CBM____C64__runtime/luge.sca65 V2.18 - Git cab4910a tosugeeaxtoslcmpbooluge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $~@ד]   L        -__CBM____C64__runtime/lugt.sca65 V2.17 - Git 6c320f7 tosugteaxtoslcmpboolugt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $}@ŴfaX   +__CBM____C64__runtime/lugt.sca65 V2.18 - Git cab4910a tosugteaxtoslcmpboolugt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ $~@ד]   L        -__CBM____C64__runtime/lule.sca65 V2.17 - Git 6c320f7 tosuleeaxtoslcmpboolule.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ }z{@ŴfaX   +__CBM____C64__runtime/lule.sca65 V2.18 - Git cab4910a tosuleeaxtoslcmpboolule.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ ~{|@ד]   L        -__CBM____C64__runtime/lult.sca65 V2.17 - Git 6c320f7 tosulteaxtoslcmpboolult.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix6)_|C~@Ŵ([ faX!     +__CBM____C64__runtime/lult.sca65 V2.18 - Git cab4910a tosulteaxtoslcmpboolult.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix6)_|C~@ד] ]!            # # `"#$%& #       "'"  ! -  '__CBM____C64__runtime/lumod.sca65 V2.17 - Git 6c320f7 +  '__CBM____C64__runtime/lumod.sca65 V2.18 - Git cab4910a 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"@A@Ŵ([ faX$!  Q ,  Q( (  Q* *! ! +tosumodeaxgetlopudiv32sregtmp3tmp4ptr2/home/pzp/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"67@ד] ]$!  Q ,  Q( (  Q* *! !  Q0 0" " L' ' !"#$   !"(*0'+1")&  $.! -% *(,2/#'+%__CBM____C64__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 l X @Ŵ([&faXE* g g  +% *(,2/#'+%__CBM____C64__runtime/lxor.sca65 V2.18 - Git cab4910a tosxor0ax tosxoreaxaddysp1spsregtmp1/home/pzp/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 b X @ד]&]E* g g  b b     #  @@ -24775,25 +28287,27 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODAT 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<0__CBM____C64__ common/lz4.sca65 V2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.macmemcpy_upwardspushaxpopax_decompress_lz4outwrittentmptokenoffsetinoutlenL0046L0004.sizeL000AL0013L001AL0017L001CL0047L002FL0045L003CL0039CODERODATABSSDATAZEROPAGENULLUzna` ixRL@ŴfaX([4 - - iI\PMR -Rt>>y -ySq@q+ɏ&Q@u4u% !hh" O -O -^ -^~ -iXX3B -BZ(H -H - H I - ; -;`    ;yHhy\|--PYl0][jHNG?oB>!FfPX Hu}%6EgEDaOtA;3LT1A4;G en.^! : -gnId4xo=5F"i75K_[@ q(_rU,&dT]2\@Rtvzb./ uQ~^I` sJe`MSVZ{RQ<S$C3__CBM____C64__c64/mainargs.sca65 V2.17 - Git 6c320f7 initmainargs__argc__argv(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +F%7_[N(aV<z/~ #'`BDQ<0__CBM____C64__ common/lz4.sca65 V2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.macmemcpy_upwardspushaxpopax_decompress_lz4outwrittentmptokenoffsetinoutlenL0046L0004.sizeL000AL0013L001AL0017L001CL0047L002FL0045L003CL0039CODERODATABSSDATAZEROPAGENULLUzna` ix?+jk@ד]]2 + iI^QMT +Tt<<| +|Uq@q*ɏ&S>u4u% !jj" P +P +` +` +lZZ0@ +@\(F +F + H I + + +7 +7`    +7|F<hy\|-?-PYlp0]jHNG?oB>!FfP=X H}k%6EgEDatA};3L8T1ZA4;G en.^! 9: +g+Idxz=5F"i{~f7mK_[@ q(_2U,&dT]|>2w\@Rvzb/ uQ~WI J`MSVZ{Q<S$C3__CBM____C64__c64/mainargs.sca65 V2.18 - Git cab4910a initmainargs__argc__argv/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -24816,13 +28330,13 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYMAXARGSREMNAME_LEN.sizeL1L0nameL2donenextfoundsettermtermargvargloopCODERODATABSSDATAZEROPAGENULLONCEINITUzna` iqno@Ŵ([,% ` +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYMAXARGSREMNAME_LEN.sizeL1L0nameL2donenextfoundsettermtermargvargloopCODERODATABSSDATAZEROPAGENULLONCEINITUzna` iqno@ד],% `   `   0`!!`"` *` ' %    !   -#0")& 314 ! 5*(,2/ #'+__CBM____C64__runtime/makebool.sca65 V2.17 - Git 6c320f7boolnebooleqboolltboolleboolgtboolgeboolultbooluleboolugtboolugeret1.sizeret0L0CODERODATABSSDATAZEROPAGENULLUzna` i|  -  @ŴfaXR faXfaX& b b 6_6  io  CC +#0")& 314 ! 5*(,2/ #'+__CBM____C64__runtime/makebool.sca65 V2.18 - Git cab4910aboolnebooleqboolltboolleboolgtboolgeboolultbooluleboolugtboolugeret1.sizeret0L0CODERODATABSSDATAZEROPAGENULLUzna` i|  +  @ד]R ]]& b b 6_6  io  CC  e e m m" " n @@ -24845,35 +28359,35 @@ CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_Fas '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 ,__CBM____C64__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 +emK{?y8uGm|l!}#x"wv ,__CBM____C64__common/malloc.sca65 V2.18 - Git cab4910aptr1ptr2ptr3_malloc/home/pzp/cc65/asminc/_heap.inc freeblocksize.sizenextprev usedblockstartHEAP_MIN_BLOCKSIZEHEAP_ADMIN_SPACE __heaporg __heapptr __heapend __heapfirst +__heaplast!/home/pzp/cc65/asminc/generic.macDone@L1@L2@L4@L3 BlockFoundOutOfHeapSpace@L5 TakeFromTopFillSizeAndRet SliceBlock -RetUserPtr@L9CODERODATABSSDATAZEROPAGENULLUzna` i^ ~= w @ŴfaX faX<\([4faX6-^`+ `0i0JiE E~)`@ `i2J|`H  - -  -6 - - -/!0x8? -* -*e H@e -X -'` - a*e<h mV/|-S? UG [YOCe0M^jl3c)B ;yHAs]F = 4X_H xuK`&ILtB6q%o E -D aO tA b;aD\Ti1MAR;G : UJr.jQ.Td9:gq+Iuz  -Xn{7bK[@*s(F_2 U ,arYd,> 2wE@ RKtvzb.L$/luQ @W Iy`#5P J'N eM BS0 -{<"!S JC __CBM____C64__c64/mcbdefault.sca65 V2.17 - Git 6c320f7initmcb_mouse_def_callbacks_mouse_def_pointershape_mouse_def_pointercolormcb_spritememorymcb_spritepointer1/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 +RetUserPtr@L9CODERODATABSSDATAZEROPAGENULLUzna` i] }& @ fg@ד] ]<\]2]6-S`% `u(i(Ci> >r)`9 ` i2Cp`H  + +  +0 + + +/!0x2? +$ +$Z H@Z +X +'` + U$Z<h mV/|-S? UGk YC0Mjlz~3c)B ;yHAs]F = X_H +xuK|&ILB6q% E -D aO tA b;aD9p\Ti1MA;G : UJ.jQTd9:gq+I8z} { +X{7b?Kf[@m*(F_2 U ,arYd>,> 22<wE@ RKtvzb.L$/luQ @W Iy`#WP J'N eM BSZ0= +{w<"!S JC __CBM____C64__c64/mcbdefault.sca65 V2.18 - Git cab4910ainitmcb_mouse_def_callbacks_mouse_def_pointershape_mouse_def_pointercolormcb_spritememorymcb_spritepointer&/home/pzp/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/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +mouse_info mouse_ioctl/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -24896,158 +28410,162 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY,/home/hugg/compilers/cc65/asminc/generic.mac MOUSE_SPRMOUSE_SPR_MASKMOUSE_SPR_NMASK VIC_SPR_X VIC_SPR_Y@L0hideshowprepdrawmovex@L1moveyCODERODATABSSDATAZEROPAGENULLONCEUzna` iqL ij@ŴfaX  +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY!/home/pzp/cc65/asminc/generic.mac MOUSE_SPRMOUSE_SPR_MASKMOUSE_SPR_NMASK VIC_SPR_X VIC_SPR_Y@L0hideshowprepdrawmovex@L1moveyCODERODATABSSDATAZEROPAGENULLONCEUzna` iqL jk@ד]      -__CBM____C64__cbm/mcbpointercolor.sca65 V2.17 - Git 6c320f7_mouse_def_pointercolor.sizeCODERODATABSSDATAZEROPAGENULLONCEUzna` iq y|@ŴfaX   +__CBM____C64__cbm/mcbpointercolor.sca65 V2.18 - Git cab4910a_mouse_def_pointercolor.sizeCODERODATABSSDATAZEROPAGENULLONCEUzna` iq y|@ד]     A ??         x 8         -__CBM____C64__cbm/mcbpointershape.sca65 V2.17 - Git 6c320f7_mouse_def_pointershape.sizeCODERODATABSSDATAZEROPAGENULLONCEUzna` iq=`a@ŴfaX  -  @ __CBM____C64__c64/mcbspritedata.sca65 V2.17 - Git 6c320f7mcb_spritememorymcb_spritepointerCODERODATABSSDATAZEROPAGENULLUzna` iq8% 9:@Ŵ([ 2-I  I  +__CBM____C64__cbm/mcbpointershape.sca65 V2.18 - Git cab4910a_mouse_def_pointershape.sizeCODERODATABSSDATAZEROPAGENULLONCEUzna` iq=ab@ד]  +  @ __CBM____C64__c64/mcbspritedata.sca65 V2.18 - Git cab4910amcb_spritememorymcb_spritepointerCODERODATABSSDATAZEROPAGENULLUzna` iq8% :;@ד] 2-I  I     H   h    "" !! L# # e `  -  #2$0"& 8314 !5%7*2/ #+__CBM____C64__common/memchr.sca65 V2.17 - Git 6c320f7_memchrpopaxpopptr1return0ptr1ptr2L1.sizeL3L2foundnotfoundL9CODERODATABSSDATAZEROPAGENULLUzna` iqJ, fg@Ŵ([ 6/I  I   " +  #2$0"& 8314 !5%7*2/ #+__CBM____C64__common/memchr.sca65 V2.18 - Git cab4910a_memchrpopaxpopptr1return0ptr1ptr2L1.sizeL3L2foundnotfoundL9CODERODATABSSDATAZEROPAGENULLUzna` iqJ, gh@ד] 6/I  I   " " ! !      $$      L `#`   -! "% 0?)> 9C8E31A$F%7@*2/: D+__CBM____C64__common/memcmp.sca65 V2.17 - Git 6c320f7_memcmppopaxpopptr1return0ptr1ptr2ptr3.sizeLoop BumpHiCntCompNotEqualGreaterCODERODATABSSDATAZEROPAGENULLUzna` iq1*/Y\%[@Ŵ([Q<9  +! "% 0?)> 9C8E31A$F%7@*2/: D+__CBM____C64__common/memcmp.sca65 V2.18 - Git cab4910a_memcmppopaxpopptr1return0ptr1ptr2ptr3.sizeLoop BumpHiCntCompNotEqualGreaterCODERODATABSSDATAZEROPAGENULLUzna` iq1*/Y\%[@ד]Q<9  )  ! !  ! ! & &% %    ''  $L       # #  ` "  "%# "& -"  ) (-0M?")CLO1AJ.!I 5F@N*K/ +__CBM____C64__common/memcpy.sca65 V2.17 - Git 6c320f7_memcpymemcpy_upwardsmemcpy_getparamspopaxpopptr1spptr1ptr2ptr3.sizeL2L1doneL3CODERODATABSSDATAZEROPAGENULLUzna` i< M>?@Ŵ([faXfaXPM  +"  ) (-0M?")CLO1AJ.!I 5F@N*K/ +__CBM____C64__common/memcpy.sca65 V2.18 - Git cab4910a_memcpymemcpy_upwardsmemcpy_getparamspopaxpopptr1spptr1ptr2ptr3.sizeL2L1doneL3CODERODATABSSDATAZEROPAGENULLUzna` i< 8)*@ד]]]PM  / /*   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<<+__CBM____C64__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 + 7? -C0>HG?">&98BO@6E314 J!I= 5F%@,2K/:9#'D<<+__CBM____C64__common/memmove.sca65 V2.18 - Git cab4910a_memmovememcpy_getparamsmemcpy_upwardspopaxptr1ptr2ptr3ptr4tmp1!/home/pzp/cc65/asminc/generic.mac$/home/pzp/cc65/asminc/longbranch.mac.size@entry PageSizeCopy @copyBytedone @initBase @copyBytes -@copyEntryCODERODATABSSDATAZEROPAGENULLUzna` iqH9(2O  @ŴfaX]Y4 4 2-- 6 6 1 +@copyEntryCODERODATABSSDATAZEROPAGENULLUzna` iqH9(2O  @ד]]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+__CBM____C64__common/memset.sca65 V2.17 - Git 6c320f7_memset_bzero__bzeropopaxspptr1ptr2ptr3.sizecommon evenCountoddCountL2L1leaveL3CODERODATABSSDATAZEROPAGENULLUzna` iqQ )@ŴfaX   + *<9   3)1&$=-0M]H)>&W98LOI63TA4;J.!=5F%7G[@N*(V2K/: 'BSZ<YX+__CBM____C64__common/memset.sca65 V2.18 - Git cab4910a_memset_bzero__bzeropopaxspptr1ptr2ptr3.sizecommon evenCountoddCountL2L1leaveL3CODERODATABSSDATAZEROPAGENULLUzna` iqQ )@ד]   L       -__CBM____C64__common/mkdir.sca65 V2.17 - Git 6c320f7_mkdir -__sysmkdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz (7: (w*9*@ŴE*[CfaXUF  -  -  - "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  -  -  ! - !  +__CBM____C64__common/mkdir.sca65 V2.18 - Git cab4910a_mkdir +__sysmkdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzKH ))++@ד]E]M  +Y U +U  + $ &N = += $ $L +, $, $  +<  +!P $P $ % $ % $ $ $ $ $ $T $ek $ke $xL + $ $  +w $w $e $H?e $Qh)  +' $S $ + ++<  +! $d $d % $ %r $r $~ $~ $ $ $g $ge $eH $HL + $ $  +4 $ $e $He $h  + $ $  +  +!z $z $ % $ % $ $ $ $ $ $ $e $ e $}uuLu +u $v $v  +-f $f  $e $H^e $h . +.  $D $  +R   +! $ $ %a $a % $ $ $# $# $  $> $e $e $L + $ $  + [ $[&p $e $He $h  +y $y $)%  $ $O "O "le "He "h  +LG +G 1] $] $ "i I " H "  +0 $ $ b +b6  +  +0OM  $@ $  $ $  $L + $ $  +\ $\( $( $ $  + $ $88 &8H/ &/hL +, $ $  +  $ $  +im H mi I   + $ + $ +  +  +  +  $ $ *pI/  $` $`3 "3 "leB "BHe "h  +Wo $ $  + $ $  $ $F  +  +m  + " "  $ $E ! +!  +Ae "Hle "h  +t $K% $  + _ +_ $ $ n +n  + " +"  +  +   + $ $  +e  +   +   +   + Q % %9  -Q # #  -   - -a " "  -   - -  -  - 8 - -89 "96 "6  -<  -  -   -  - - "J "J  -   -L - # #H !  $H "HU !hA -L - : -: $G)z/z  -d  -  -  -DssL -L -Lw -wG$~ C;dZxne0NHIJK%EwC4@:>;:98786!5432?10/,+*)(@$#"0q$g[=4u}) -4 V;+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.+L__CBM____C64__../libwrk/c64/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 + : + : $7 $  +   +   +   +  + M $M $  +<  +  +   +  +  $J $ X + X  +  + C + C % + Z %Z +  +   +L + % %H # < &< $I #h +L +  + &)/ | +|dF $ +$;  +  +LiiL +L +L +N. Eh;Zxsj0NcOPQR'LJ:$G|EBA@?>=:<X;:9"8_765!210/.*)(#.  =U+bnC5O3B +5 ,Pkwdr~gHzvfa#[y]\( + `MZ8/<hm\j|U PM]lHG?")o>&ysfW98}LOpEgtbkTA4;eJn$^!i5qId1x=  +F%_ [@N*(ar3V,4wcRKvz:u~ #'`SZ{Q<YX.+S__CBM____C64__../libwrk/c64/mktime.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_div__tz_mktime _MonthLength.size +_MonthDaysL002FL0038L0043L004EL005Dpushaxregswap2decsp4L002AL002E staxspidxL0099L0060 _IsLeapYearL009CstaxyspldaxysptosicmpL0052L006EL00A3incax1aslax1pushwtosaddaxdecax1L007EL007Cdecaxy tosumulaxshrax2stax0spincax4 tosumoda0ldax0spaxulongpusheax tosumuleax -tosumul0ax tosaddeax tosumula0L0029L0090addyspL009Epushw0spL0022L00A3 tosumodaxL00A2incsp2CODERODATABSSDATAZEROPAGENULLUzna` iq25L4@Ŵ([S    +tosumul0ax tosaddeax tosumula0 tossubeaxL0029L0096addyspL00A4pushw0spL0022L00A9 tosumodaxL00A8incsp2CODERODATABSSDATAZEROPAGENULLUzna` iq25L4@ד]S      $  L `        $ -% __CBM____C64__ runtime/mod.sca65 V2.17 - Git 6c320f7tosmoda0tosmodaxpopsargsudiv16negaxsregtmp1.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq= oGH@ŴfaX  -  &$# __CBM____C64__common/modfree.sca65 V2.17 - Git 6c320f7 _mod_free_freeCODERODATABSSDATAZEROPAGENULLUzna` i% GE @ŴfaXfaX9WfaXffaXfaX: .  L +% __CBM____C64__ runtime/mod.sca65 V2.18 - Git cab4910atosmoda0tosmodaxpopsargsudiv16negaxsregtmp1.sizePosCODERODATABSSDATAZEROPAGENULLUzna` iq= pHI@ד]  +  &$# __CBM____C64__common/modfree.sca65 V2.18 - Git cab4910a _mod_free_freeCODERODATABSSDATAZEROPAGENULLUzna` i% GE @ד]]9W]f]]: .  L  3 3 `A9G3& & ` H I`2 [ [I HI I  @@ -25122,9 +28640,9 @@ tosumul0ax tosaddeax tosumula0L0029L0090addyspL009Epushw0spL0022L00A3 tos  h  m  - *`-iio$6$5$#   L~}@|@{@zv|r3^:<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__CBM____C64__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 tu@ŴfaX,faX<l}l + *`-iio$6$5$#   L~}@|@{@zv|r3^:<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__CBM____C64__common/modload.sca65 V2.18 - Git cab4910a/home/pzp/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/pzp/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/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespacepushaxpusha0push0push1decax1_malloc_free_bzero __ZP_START__!/home/pzp/cc65/asminc/generic.macModuleCtrlTPtrStack RegBankSaveHeader InputByteRelocValRead ExpectedHdrExpectedHdrSizePushCallerDataRestoreRegBank@L1GetReloc FormatErrorReadSizeReadByteReadAndCheckError@L2CleanupAndExitDoneRelocSegLoop RelocWord RelocHighRelocLow AddCommonAddHighValidateHeader HeaderErrorOptOptDoneSkipOptOSError CalcSizesGotMemUndefRelocCODERODATABSSDATAZEROPAGENULLUzna` ixrR jk@ד],]<l}l l7 7s s3 3i i  ]yMM:m Hm a IaT T{6 @@ -25149,7 +28667,7 @@ CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_R -  jA  -X`mmoun * Po%L +X`mmoun * Po%L L L_ _L @@ -25161,7 +28679,7 @@ CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_R LW WLr r`"""pq hS h; -h73iT h<VmaVVV _YWr^r]W\[ZYYX W V_U-TfSpHKGODP6C*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 r__CBM____C64__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 +h73iT h<VmaVVV _YWr^r]W\[ZYYX W V_U-TfSpHKGODP6C*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 r__CBM____C64__mouse/mouse-kernel.sca65 V2.18 - Git cab4910areturn0popsregincsp2 mouse_librefsregptr1tmp1tmp2 mouse_irq&/home/pzp/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 @@ -25169,7 +28687,7 @@ 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<VWXYZ[RG$F$W</-? YjcB F = XH uE D aO A ;G  9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C \__CBM____C64__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 +@ד]]<VWXYZ[RG$F$W</-? YjcB F = XH uE D aO A ;G  9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C \__CBM____C64__mouse/mouse_buttons.sca65 V2.18 - Git cab4910a&/home/pzp/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 @@ -25177,53 +28695,53 @@ mouse_hide mouse_show mouse_setbox mouse_getbox mouse_move mouse_buttons mouse_pos mouse_info mouse_ioctlCODERODATABSSDATAZEROPAGENULLUzna` ix= -@ŴfaXfaX<VWXYZ[P+DW</-?  YjcB F = XH uE D aO A ;G 9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C \__CBM____C64__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 +@ד]]<VWXYZ[P+DW</-?  YjcB F = XH uE D aO A ;G 9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C \__CBM____C64__mouse/mouse_getbox.sca65 V2.18 - Git cab4910a&/home/pzp/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 (+g7*@ŴfaX faX<pa??!!QQ7% I% Hy +mouse_info mouse_ioctlCODERODATABSSDATAZEROPAGENULLUzna` ix (+g-*@ד] ]<pa??!!QQ7% I% Hy ))0`Gb5 `03?DXkdO ERRORHHO DRIVEqR AVAILAqBLEqqANNOT LPOAD DRIVPERPPNVALID  DRIVER  OUSE HA4RDWARE N4OT FOUND44NVALID YIOCTL COYDEYYNKNOWN ERRORcdef@ -s</-?  -Y0jc")B &F = XH uE D aO A ;1G $.!9:+z {%K*_2U ,d> ,@ tb./Q W I`#J'eM 0S +C g__CBM____C64__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 +s</-?  -Y0jc")B &F = XH uE D aO A ;1G $.!9:+z {%K*_2U ,d> ,@ tb./Q W I`#J'eM 0S +C g__CBM____C64__mouse/mouse_geterrormsg.sca65 V2.18 - Git cab4910a&/home/pzp/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<3W  ? +mouse_info mouse_ioctlL1msgtaboffsL2msg0msg1msg2msg3msg4msg5msg6CODERODATABSSDATAZEROPAGENULLUzna` ixj @ד]]<3W  ? ?))   -`XYZ[\M;B?A 1]</-? YjcB F = XH uE D aO A ;G 9:+z {K_2U ,d> @ tb.Q W I`JeM 0S C ]__CBM____C64__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 +`XYZ[\M;B?A 1]</-? YjcB F = XH uE D aO A ;G 9:+z {K_2U ,d> @ tb.Q W I`JeM 0S C ]__CBM____C64__mouse/mouse_hide.sca65 V2.18 - Git cab4910a&/home/pzp/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<*W ? ?L( -(XYZ[\U(0?I&]</-? YjcB F = XH uE D aO A ;G  9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C ]__CBM____C64__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_ioctl@L1CODERODATABSSDATAZEROPAGENULLUzna` ixa @ד]]<*W ? ?L( +(XYZ[\U(0?I&]</-? YjcB F = XH uE D aO A ;G  9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C ]__CBM____C64__mouse/mouse_info.sca65 V2.18 - Git cab4910aptr1&/home/pzp/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<4X +mouse_info mouse_ioctlCODERODATABSSDATAZEROPAGENULLUzna` ixk @ד]]<4X     L YZ[\]WC 4K @_</-?  YjcB F = XH uE D aO A ;G 9:+z -{K_2U ,d> @ tb.Q W I`JeM 0S C ^__CBM____C64__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 +{K_2U ,d> @ tb.Q W I`JeM 0S C ^__CBM____C64__mouse/mouse_ioctl.sca65 V2.18 - Git cab4910apopaptr1&/home/pzp/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  @ŴfaXfaXP:kOQ<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 __CBM____C64__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 +y  X  ~ u.t:ysSrw?q4/p^i^3B]vJ6?_G>P:kOQ<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 __CBM____C64__mouse/mouse_load.sca65 V2.18 - Git cab4910a&/home/pzp/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<X  +mouse_info mouse_ioctl!/home/pzp/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/pzp/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCLpushaxpusha0incsp2_open_read_closectrl@L1@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` ixQ @ד]]<X  L -YZ[\]S(G]</-? YjcB F = XH uE D aO A ;G  9:+z {K_2U ,d> @ tb.Q W I`JeM 0S C ^__CBM____C64__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 +YZ[\]S(G]</-? YjcB F = XH uE D aO A ;G  9:+z {K_2U ,d> @ tb.Q W I`JeM 0S C ^__CBM____C64__mouse/mouse_move.sca65 V2.18 - Git cab4910aincsp2ptr1&/home/pzp/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<*W ? ?L( -(XYZ[\TV(0?H&]</-? YjcB F = XH uE D aO A ;G  9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C ]__CBM____C64__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_ioctlCODERODATABSSDATAZEROPAGENULLUzna` ixa @ד]]<*W ? ?L( +(XYZ[\TV(0?H&]</-? YjcB F = XH uE D aO A ;G  9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C ]__CBM____C64__mouse/mouse_pos.sca65 V2.18 - Git cab4910aptr1&/home/pzp/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 @@ -25272,70 +28790,85 @@ mouse_hide mouse_show mouse_setbox mouse_getbox mouse_move mouse_buttons mouse_pos mouse_info mouse_ioctlCODERODATABSSDATAZEROPAGENULLUzna` ix= -@ŴfaXfaX<VWXYZ[OKCKW</-? YjcB F = XH uE D aO A ;G 9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C \__CBM____C64__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 +@ד]]<VWXYZ[OKCKW</-? YjcB F = XH uE D aO A ;G 9:+z{K_2U ,d> @ tb.Q W I`JeM 0S C \__CBM____C64__mouse/mouse_setbox.sca65 V2.18 - Git cab4910a&/home/pzp/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<=W ' +mouse_info mouse_ioctlCODERODATABSSDATAZEROPAGENULLUzna` ixt @ד]]<=W ' '11 @@L) )`XYZ[\N,);C'B4^</-? YjcB F = XH uE D aO A ;G  9:+z  -{K_2U ,d> @ tb.Q W I`JeM 0S C ]__CBM____C64__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 +{K_2U ,d> @ tb.Q W I`JeM 0S C ]__CBM____C64__mouse/mouse_show.sca65 V2.18 - Git cab4910a&/home/pzp/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` iq= ab@ŴfaX  +mouse_info mouse_ioctl@L1CODERODATABSSDATAZEROPAGENULLUzna` iq= bc@ד]      - __CBM____C64__c64/mouse_stat_stddrv.sca65 V2.17 - Git 6c320f7_mouse_static_stddrv _c64_1351_mouCODERODATABSSDATAZEROPAGENULLUzna` iqV uab@ŴfaX C64-1351.MOU  -      __CBM____C64__c64/mouse_stddrv.sca65 V2.17 - Git 6c320f7 _mouse_stddrv.sizeCODERODATABSSDATAZEROPAGENULLUzna` i<W be{d@ŴfaXfaX 2<@ tb.Q W I` #0JeM 0S JC m__CBM____C64__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 +<ah6`chijkle <^$?AG:I8 =Rw</-? G Yj3c"B HF = 4XH uKIB1E D aO A ;/G !9:+z{KF_2U ,d> 2<@ tb.Q W I` #0JeM 0S JC m__CBM____C64__mouse/mouse_unload.sca65 V2.18 - Git cab4910a&/home/pzp/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` iqC~gh@ŴfaX  -    __CBM____C64__c64/mouseref.sca65 V2.17 - Git 6c320f7 mouse_libref _pen_adjuster.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq6PgjLi@Ŵ([rE@  .    +mouse_info mouse_ioctl!/home/pzp/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` iqChi@ד]  +    __CBM____C64__c64/mouseref.sca65 V2.18 - Git cab4910a mouse_libref _pen_adjuster.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq6PgjLi@ד]rE@  .    )& &' F( (f  e! ! * *e$ $ #f% %jf f' '  `L   " " + +  ,L   ('  &!*"+ $%   --0?")& 9CE31A4$.!5 -F%@*(,/ 'BD__CBM____C64__ runtime/mul.sca65 V2.17 - Git 6c320f7 tosumulaxtosmulaxmul8x16mul8x16apopptr1tmp1ptr1ptr4.size@L3@L4@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iqz 9DG)F@Ŵ([ C:8    +F%@*(,/ 'BD__CBM____C64__ runtime/mul.sca65 V2.18 - Git cab4910a tosumulaxtosmulaxmul8x16mul8x16apopptr1tmp1ptr1ptr4.size@L3@L4@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iq< H TWyPVQ@ד] +  +  +  + +e      +&  +&  `   +  -")&$!*,/ '__CBM____C64__common/mul20.sca65 V2.18 - Git cab4910atmp4_mul20mul4.sizemul5mul10CODERODATABSSDATAZEROPAGENULLUzna` iqK X dgjfk@ד] + !    + +e    + &  +&  +&  `    ! +-0")&$!*,2/ '__CBM____C64__common/mul40.sca65 V2.18 - Git cab4910atmp4_mul40mul4.sizemul5mul10CODERODATABSSDATAZEROPAGENULLUzna` iqz 9DG)F@ד] C:8      ))& &F  *e% % e' ' f( (j"f !,,# `F  e j f  $+ `  &'(   %   --?")> 98634;$.!=5 -%7*(,: #'<+__CBM____C64__runtime/mul8.sca65 V2.17 - Git 6c320f7 tosumula0tosmula0mul8x16mul8x16apopptr1ptr1ptr4.sizemul8x8@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iqCR ^aosC`D@ŴfaX    +%7*(,: #'<+__CBM____C64__runtime/mul8.sca65 V2.18 - Git cab4910a tosumula0tosmula0mul8x16mul8x16apopptr1ptr1ptr4.sizemul8x8@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iqCR ^aotD`E@ד]    &    & e    e  * `  -          __CBM____C64__runtime/mulax10.sca65 V2.17 - Git 6c320f7mulax10ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  ,/[q.@Ŵ([m    +          __CBM____C64__runtime/mulax10.sca65 V2.18 - Git cab4910amulax10ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  ,/[r.@ד]m    &  e He   h`  -          __CBM____C64__runtime/mulax3.sca65 V2.17 - Git 6c320f7mulax3ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq* 6 BEeqD@Ŵ([    +          __CBM____C64__runtime/mulax3.sca65 V2.18 - Git cab4910amulax3ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq* 6 BEerD@ד]    &    & e H  e h`  -       __CBM____C64__runtime/mulax5.sca65 V2.17 - Git 6c320f7mulax5ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq.< HKeq!J"@ŴfaX    +       __CBM____C64__runtime/mulax5.sca65 V2.18 - Git cab4910amulax5ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq.< HKer"J#@ד]    &   e  e    * `  -        __CBM____C64__runtime/mulax6.sca65 V2.17 - Git 6c320f7mulax6ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqE R ^atqF`G@Ŵ([    +        __CBM____C64__runtime/mulax6.sca65 V2.18 - Git cab4910amulax6ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqE R ^atrG`H@ד]    &   @@ -25343,131 +28876,132 @@ CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_R &  8  HIe h`         "   - __CBM____C64__runtime/mulax7.sca65 V2.17 - Git 6c320f7mulax7ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq? L X[oq;Z<@Ŵ([   + __CBM____C64__runtime/mulax7.sca65 V2.18 - Git cab4910amulax7ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq? L X[or<Z=@ד]    &  &  &   e He h`         ! -__CBM____C64__runtime/mulax9.sca65 V2.17 - Git 6c320f7mulax9ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ŴfaX& +__CBM____C64__runtime/mulax9.sca65 V2.18 - Git cab4910amulax9ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ד]&    L          -__CBM____C64__ runtime/ne.sca65 V2.17 - Git 6c320f7tosne00tosnea0tosneaxtosicmpboolne.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQfs@Ŵ([L      Ii +__CBM____C64__ runtime/ne.sca65 V2.18 - Git cab4910atosne00tosnea0tosneaxtosicmpboolne.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQft@ד]L      Ii HIih`           -__CBM____C64__runtime/negabs.sca65 V2.17 - Git 6c320f7negax_abs.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` in @}x y @Ŵ(['faX 5faX@faX7\N -N HH ] -]h!pp`I'AVV  -   -( (  -  -OE*E a -a//   l l)&&_!_^^LQ -QHK 9i  -F - -F  - h0L8 -8RT " -"||; ;)   - )@W=  -L -}A * -*qq@ @ S -S mi55s - -s - } < -< X -X  i - -i k - kRR) - -) 6 - 6hh- -D D -t - -tP -Pv$J -J`]^_`aC>aB?PABN M8MQJL(l;@DL-u],,Fsi)tW6WWkCSCC"* C C  - +__CBM____C64__runtime/negabs.sca65 V2.18 - Git cab4910anegax_abs.sizeL1CODERODATABSSDATAZEROPAGENULLUzna` i$ 5   @ד]'] 2]=]K]M` +` %HY v + vh(`[0Pll ' +'  +2 2 ! +!  +bU*U { +{;;   + )..x!xwwLd +dH^ +Ei  +W + W & +&h<LD +DRi * +*I I)   + )@WL # +#L +}A 5 +5O O h +h$ +$iAA +  +  K +K n +n   +   +ee4 + 4 B +B8 +8T T + + c +c,\ +\`eudnbK@M{?Nc>R`_D_d\2IOT$87vmmW4SBS&S  +h  +#  +*5  -  ZZXZ<$UYGhmj  P0lHG "o>&yW9COp tk ; Jn$.i -Idx= 5 -"%_[N  V,cz :#' BZ{Q<YX+b__CBM____C64__ -cbm/open.sca65 V2.17 - Git 6c320f7_open closeallfilesSETLFSOPENCLOSEaddysppopaxscratchfnparse fnaddmode -fncompletefnsetopencmdchannelclosecmdchannel readdiskerrorfnunitfnisfile_closesptmp2tmp3*/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_EXCLcbm/filedes.incfdtabunittabfreefdMAX_FDSLFN_OFFS +  +p!p'$koXhmj  P+.'06lHG "o>&yW 9C0>Op5 tk&3 ; J<n$).(i +Id4-x?= 5 +"F$%_["N   +#= V2,/Ec,z :1#!*' BZ{%Q< YX+__CBM____C64__ +cbm/open.sca65 V2.18 - Git cab4910a_open closeallfilesaddysppopaxscratchfnparse fnaddmode +fncompletefnsetopencmdchannelclosecmdchannel readdiskerrorfnunitfnisfile_closesptmp2tmp3/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX/home/pzp/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCLcbm/filedes.incfdtabunittabfreefdMAX_FDSLFN_OFFS LFN_CLOSEDLFN_READ LFN_WRITELFN_OPENLFN_EOF LFN_STDIN LFN_STDOUT -LFN_STDERRloop.sizenextparmokoserrorseterrnodoreaddowrite closeandexitcommonnotruncappend appendcreatenofileCODERODATABSSDATAZEROPAGENULLUzna` kzn  GR  - @ŴE*[faX.  - hb = +LFN_STDERR cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM +CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN +MAX_DRIVES FIRST_DRIVEloop.sizenextparmokoserrorseterrnodoreaddowrite closeandexitcommonnotruncappend appendcreatenofileCODERODATABSSDATAZEROPAGENULLUzna` kzt Vg  @ד]]/ d + d;J  -=  -  d -d: J -J$eQ Q P PrrU U  - .;^ ^ 3 3VV15 5LG -`G' '0K""1__6o o:DN N44g g j j)I L -`AL8 -8[$  - O & -&  - -  -n Z -Zi 2 -2  -T0Lq qp p k - kM  -  - < L - LfR5R.Y B -B7  -* > //  -9  - ( - (@S  -L- --`\X - XC - C ] -]Hl# #a a 0 0m mhL, -,/0123-,,]+('Z&&% Jd= -k(!L?XCW2%EB H -PU3'oNgamH -Q5jqp#0c+shm\j|U -P0M]lHG?")o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 -F%7_[@N*(arV,2wcRKvz/:u~ #'`BSDZ{Q<YX+4__CBM____C64__../libwrk/c64/opendir.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_malloc_memcpy_open__errno_opendir __dirreadpushaxregswap2decsp2push0subyspL005AL005B.sizeL0058L0053L0057L0059staxyspleaa0sppusha0stax0spL0046L003FpushwyspldaxyspaddyspCODERODATABSSDATAZEROPAGENULLUzna` ix476@Ŵ([ -faXS    L + e + e R +R Q +Q$tV  < <_ _4 4W +W.26 6G( (KK#  L` +``7 70qDD1O5 5:h!!l* *II A A9\% %L +`PL' +' p [ +[j 3 +3  +  U  +s r +r m +mN0L = = M + Mg S +S / + /Z B + B85+ > +> 0 +0 : ))@ T +T . +. a + a]Y C +CL +^n + $ + $b  + H1o  - F FhLk +k 0i1234.fk-f ,fT)fm(f'f3S.&f[0fQfRfeffd M/a"B?$Xr&CE> H +<_4(75*FH + A%=c,uhm\j|U -P0M]lHG?)o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^iqIdx= 5 +F%7_[@N*(arV,2wcRKvz/:u~#'`BSDZ{Q<YX+5__CBM____C64__../libwrk/c64/opendir.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_malloc_memcpy_open__errno_opendir __dirreadL002C.sizepushaxregswap2decsp2push0subyspL005CL005DL005AL0055L0059L005Bstaxyspleaa0sppusha0stax0spL0047L0040pushwyspldaxyspaddyspCODERODATABSSDATAZEROPAGENULLUzna` ix47v6w@ד] +]S    L  !"#  %   - $__CBM____C64__ 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 + $__CBM____C64__ runtime/or.sca65 V2.18 - Git cab4910atosora0tosoraxaddysp1sptmp1/home/pzp/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 v w  - i -j@ŴfaXa bKK1OO MANYK\D OPEN FIK\DLESK\DK\1ILE IS \NOPEN\N\661ILE NOT6\ OPEN6\6\SS1ILE NOTS\ FOUNDS\S\ + j +k@ד]a bKK1OO MANYK\D OPEN FIK\DLESK\DK\1ILE IS \NOPEN\N\661ILE NOT6\ OPEN6\6\SS1ILE NOTS\ FOUNDS\S\  1EVICE N \0OT PRESE \0NT \0 -\..1ILE NOT.\W INPUT.\W.\LL1ILE NOTL\ OUTPUTL\L\,,1ILENAME,\ MISSING,\,\3 31LLEGAL 3\7DEVICE3\73\ <<1EAD ERR<\OR (O S<\ECTOR HE<\ADER)<\<\&&1EAD ERR&\FOR (O S&\FYNC MARK&\F)&\F&\@@1EAD ERR@\ OR (O S@\ ECTOR DA@\ TA)@\ @\!!!1EAD ERR!\dOR (AD !\dDATA CHE!\dCKSUM)!\d!\ 1EAD ERR\+OR (ECO\+DING PRO\+BLEM)\+\UU1RITE ERU\ROR (ERU\IFY FAILU\ED)U\U\441RITE PR4\MOTECTED4\M4\#``1EAD ERR`\OR (AD `\HEADER C`\HECKSUM)`\`\;;1RITE ER;\QROR (OVE;\QRRUN);\Q;\1ISK \MISMATCH\\(1YNTAX E\ERROR (O\EMMAND NO\ET RECOGN\EIZED)\E\)BB1YNTAX EB\RROR (OB\MMAND NOB\T IMPLEMB\ENTED)B\B\"2 21YNTAX E2\RROR (O2\MMAND TO2\O LONG)2\2\(Y!Y1YNTAX EY\?RROR (NY\?VALID WRY\?ITE FILEY\?NAME)Y\?Y\"1YNTAX E\aRROR (O\a FILE GI\aVEN)\a\['[1YSTEM F[\VILE NOT [\VFOUND[\V[\'1'1NVALID '\JFORMAT'\J'\=2=1ECORD N=\OT PRESE=\NT=\=\31VERFLOW\  IN RECO\ RD\ \ 4 1ILE TOO \: LARGE \: \8<81RITE FI8\XLE OPEN8\X8\5=51ILE NOT5\H OPEN5\H5\P>P1ILE NOTP\( FOUNDP\(P\#?#1ILE EXI#\TSTS#\T#\ @ 1ILE TYP \/E MISMAT \/CH \/ \ CAC1O BLOCKC\"C\%B%1LLEGAL %\TRACK OR%\ SECTOR%\%\!C1LLEGAL \GSYSTEM T\GRACK OR \GSECTOR\G\ _F_1O CHANN_\$EL_\$_\ OGO1 ERROO\*RO\*O\ ZHZ1ISK FULZ\LZ\Z\-I-1 VERS-\>ION MISM-\>ATCH-\>-\J1RIVE NO\RT READY\R\IKI1ORMAT EI\RRORI\I\M1LLEGAL \PARTITIO\N\\cNc1AD SYSTc\9EM AREAc\9c\b]b^NKNOWN b AERRORb Ab cdefe)f2!S U: -< PO 7 0MG H@ 3!GV ?/!F .!>5 WW A 9C> #8N LQ O6EK R 9 3T1M 0!A4;J.4!IX H =5FT B 7Y @N,!? 6 P J VE ,2; -!RK= U /L :D 1!I BSD!"Q<C YX8 +g__CBM____C64__cbm/oserrlist.sca65 V2.17 - Git 6c320f7__sys_oserrlist.sizeLOCAL-MACRO_SYMBOL-0001LOCAL-MACRO_SYMBOL-0000LOCAL-MACRO_SYMBOL-0003LOCAL-MACRO_SYMBOL-0002LOCAL-MACRO_SYMBOL-0005LOCAL-MACRO_SYMBOL-0004LOCAL-MACRO_SYMBOL-0007LOCAL-MACRO_SYMBOL-0006LOCAL-MACRO_SYMBOL-0009LOCAL-MACRO_SYMBOL-0008LOCAL-MACRO_SYMBOL-000BLOCAL-MACRO_SYMBOL-000ALOCAL-MACRO_SYMBOL-000DLOCAL-MACRO_SYMBOL-000CLOCAL-MACRO_SYMBOL-000FLOCAL-MACRO_SYMBOL-000ELOCAL-MACRO_SYMBOL-0011LOCAL-MACRO_SYMBOL-0010LOCAL-MACRO_SYMBOL-0013LOCAL-MACRO_SYMBOL-0012LOCAL-MACRO_SYMBOL-0015LOCAL-MACRO_SYMBOL-0014LOCAL-MACRO_SYMBOL-0017LOCAL-MACRO_SYMBOL-0016LOCAL-MACRO_SYMBOL-0019LOCAL-MACRO_SYMBOL-0018LOCAL-MACRO_SYMBOL-001BLOCAL-MACRO_SYMBOL-001ALOCAL-MACRO_SYMBOL-001DLOCAL-MACRO_SYMBOL-001CLOCAL-MACRO_SYMBOL-001FLOCAL-MACRO_SYMBOL-001ELOCAL-MACRO_SYMBOL-0021LOCAL-MACRO_SYMBOL-0020LOCAL-MACRO_SYMBOL-0023LOCAL-MACRO_SYMBOL-0022LOCAL-MACRO_SYMBOL-0025LOCAL-MACRO_SYMBOL-0024LOCAL-MACRO_SYMBOL-0027LOCAL-MACRO_SYMBOL-0026LOCAL-MACRO_SYMBOL-0029LOCAL-MACRO_SYMBOL-0028LOCAL-MACRO_SYMBOL-002BLOCAL-MACRO_SYMBOL-002ALOCAL-MACRO_SYMBOL-002DLOCAL-MACRO_SYMBOL-002CLOCAL-MACRO_SYMBOL-002FLOCAL-MACRO_SYMBOL-002ELOCAL-MACRO_SYMBOL-0031LOCAL-MACRO_SYMBOL-0030LOCAL-MACRO_SYMBOL-0033LOCAL-MACRO_SYMBOL-0032LOCAL-MACRO_SYMBOL-0035LOCAL-MACRO_SYMBOL-0034LOCAL-MACRO_SYMBOL-0037LOCAL-MACRO_SYMBOL-0036LOCAL-MACRO_SYMBOL-0039LOCAL-MACRO_SYMBOL-0038LOCAL-MACRO_SYMBOL-003BLOCAL-MACRO_SYMBOL-003ALOCAL-MACRO_SYMBOL-003DLOCAL-MACRO_SYMBOL-003CLOCAL-MACRO_SYMBOL-003FLOCAL-MACRO_SYMBOL-003ELOCAL-MACRO_SYMBOL-0041LOCAL-MACRO_SYMBOL-0040LOCAL-MACRO_SYMBOL-0043LOCAL-MACRO_SYMBOL-0042LOCAL-MACRO_SYMBOL-0045LOCAL-MACRO_SYMBOL-0044LOCAL-MACRO_SYMBOL-0047LOCAL-MACRO_SYMBOL-0046LOCAL-MACRO_SYMBOL-0049LOCAL-MACRO_SYMBOL-0048LOCAL-MACRO_SYMBOL-004BLOCAL-MACRO_SYMBOL-004ALOCAL-MACRO_SYMBOL-004DLOCAL-MACRO_SYMBOL-004CLOCAL-MACRO_SYMBOL-004FLOCAL-MACRO_SYMBOL-004ELOCAL-MACRO_SYMBOL-0051LOCAL-MACRO_SYMBOL-0050LOCAL-MACRO_SYMBOL-0053LOCAL-MACRO_SYMBOL-0052LOCAL-MACRO_SYMBOL-0055LOCAL-MACRO_SYMBOL-0054LOCAL-MACRO_SYMBOL-0057LOCAL-MACRO_SYMBOL-0056LOCAL-MACRO_SYMBOL-0059LOCAL-MACRO_SYMBOL-0058CODERODATABSSDATAZEROPAGENULLUzna` ixc q@ŴfaXfaX j%Z@ +\..1ILE NOT.\W INPUT.\W.\LL1ILE NOTL\ OUTPUTL\L\,,1ILENAME,\ MISSING,\,\3 31LLEGAL 3\7DEVICE3\73\ <<1EAD ERR<\OR (O S<\ECTOR HE<\ADER)<\<\&&1EAD ERR&\FOR (O S&\FYNC MARK&\F)&\F&\@@1EAD ERR@\ OR (O S@\ ECTOR DA@\ TA)@\ @\!!!1EAD ERR!\dOR (AD !\dDATA CHE!\dCKSUM)!\d!\ 1EAD ERR\+OR (ECO\+DING PRO\+BLEM)\+\UU1RITE ERU\ROR (ERU\IFY FAILU\ED)U\U\441RITE PR4\MOTECTED4\M4\#``1EAD ERR`\OR (AD `\HEADER C`\HECKSUM)`\`\;;1RITE ER;\QROR (OVE;\QRRUN);\Q;\1ISK \MISMATCH\\(1YNTAX E\ERROR (O\EMMAND NO\ET RECOGN\EIZED)\E\)BB1YNTAX EB\RROR (OB\MMAND NOB\T IMPLEMB\ENTED)B\B\"2 21YNTAX E2\RROR (O2\MMAND TO2\O LONG)2\2\(Y!Y1YNTAX EY\?RROR (NY\?VALID WRY\?ITE FILEY\?NAME)Y\?Y\"1YNTAX E\aRROR (O\a FILE GI\aVEN)\a\['[1YSTEM F[\VILE NOT [\VFOUND[\V[\'1'1NVALID '\JFORMAT'\J'\=2=1ECORD N=\OT PRESE=\NT=\=\31VERFLOW\  IN RECO\ RD\ \ 4 1ILE TOO \: LARGE \: \8<81RITE FI8\XLE OPEN8\X8\5=51ILE NOT5\H OPEN5\H5\P>P1ILE NOTP\( FOUNDP\(P\#?#1ILE EXI#\TSTS#\T#\ @ 1ILE TYP \/E MISMAT \/CH \/ \ CAC1O BLOCKC\"C\%B%1LLEGAL %\TRACK OR%\ SECTOR%\%\!C1LLEGAL \GSYSTEM T\GRACK OR \GSECTOR\G\ _F_1O CHANN_\$EL_\$_\ OGO1 ERROO\*RO\*O\ ZHZ1ISK FULZ\LZ\Z\-I-1 VERS-\>ION MISM-\>ATCH-\>-\J1RIVE NO\RT READY\R\IKI1ORMAT EI\RRORI\I\M1LLEGAL \PARTITIO\N\\cNc1AD SYSTc\9EM AREAc\9c\b]b^NKNOWN b AERRORb Ab cdefe)f2!S U: -< PO 7 0MG H@ 3!GV ?/!F .!>5 WW A 9C> #8N LQ O6EK R 9 3T1M 0!A4;J.4!IX H =5FT B 7Y @N,!? 6 P J VE ,2; -!RK= U /L :D 1!I BSD!"Q<C YX8 +g__CBM____C64__cbm/oserrlist.sca65 V2.18 - Git cab4910a__sys_oserrlist.sizeLOCAL-MACRO_SYMBOL-0001LOCAL-MACRO_SYMBOL-0000LOCAL-MACRO_SYMBOL-0003LOCAL-MACRO_SYMBOL-0002LOCAL-MACRO_SYMBOL-0005LOCAL-MACRO_SYMBOL-0004LOCAL-MACRO_SYMBOL-0007LOCAL-MACRO_SYMBOL-0006LOCAL-MACRO_SYMBOL-0009LOCAL-MACRO_SYMBOL-0008LOCAL-MACRO_SYMBOL-000BLOCAL-MACRO_SYMBOL-000ALOCAL-MACRO_SYMBOL-000DLOCAL-MACRO_SYMBOL-000CLOCAL-MACRO_SYMBOL-000FLOCAL-MACRO_SYMBOL-000ELOCAL-MACRO_SYMBOL-0011LOCAL-MACRO_SYMBOL-0010LOCAL-MACRO_SYMBOL-0013LOCAL-MACRO_SYMBOL-0012LOCAL-MACRO_SYMBOL-0015LOCAL-MACRO_SYMBOL-0014LOCAL-MACRO_SYMBOL-0017LOCAL-MACRO_SYMBOL-0016LOCAL-MACRO_SYMBOL-0019LOCAL-MACRO_SYMBOL-0018LOCAL-MACRO_SYMBOL-001BLOCAL-MACRO_SYMBOL-001ALOCAL-MACRO_SYMBOL-001DLOCAL-MACRO_SYMBOL-001CLOCAL-MACRO_SYMBOL-001FLOCAL-MACRO_SYMBOL-001ELOCAL-MACRO_SYMBOL-0021LOCAL-MACRO_SYMBOL-0020LOCAL-MACRO_SYMBOL-0023LOCAL-MACRO_SYMBOL-0022LOCAL-MACRO_SYMBOL-0025LOCAL-MACRO_SYMBOL-0024LOCAL-MACRO_SYMBOL-0027LOCAL-MACRO_SYMBOL-0026LOCAL-MACRO_SYMBOL-0029LOCAL-MACRO_SYMBOL-0028LOCAL-MACRO_SYMBOL-002BLOCAL-MACRO_SYMBOL-002ALOCAL-MACRO_SYMBOL-002DLOCAL-MACRO_SYMBOL-002CLOCAL-MACRO_SYMBOL-002FLOCAL-MACRO_SYMBOL-002ELOCAL-MACRO_SYMBOL-0031LOCAL-MACRO_SYMBOL-0030LOCAL-MACRO_SYMBOL-0033LOCAL-MACRO_SYMBOL-0032LOCAL-MACRO_SYMBOL-0035LOCAL-MACRO_SYMBOL-0034LOCAL-MACRO_SYMBOL-0037LOCAL-MACRO_SYMBOL-0036LOCAL-MACRO_SYMBOL-0039LOCAL-MACRO_SYMBOL-0038LOCAL-MACRO_SYMBOL-003BLOCAL-MACRO_SYMBOL-003ALOCAL-MACRO_SYMBOL-003DLOCAL-MACRO_SYMBOL-003CLOCAL-MACRO_SYMBOL-003FLOCAL-MACRO_SYMBOL-003ELOCAL-MACRO_SYMBOL-0041LOCAL-MACRO_SYMBOL-0040LOCAL-MACRO_SYMBOL-0043LOCAL-MACRO_SYMBOL-0042LOCAL-MACRO_SYMBOL-0045LOCAL-MACRO_SYMBOL-0044LOCAL-MACRO_SYMBOL-0047LOCAL-MACRO_SYMBOL-0046LOCAL-MACRO_SYMBOL-0049LOCAL-MACRO_SYMBOL-0048LOCAL-MACRO_SYMBOL-004BLOCAL-MACRO_SYMBOL-004ALOCAL-MACRO_SYMBOL-004DLOCAL-MACRO_SYMBOL-004CLOCAL-MACRO_SYMBOL-004FLOCAL-MACRO_SYMBOL-004ELOCAL-MACRO_SYMBOL-0051LOCAL-MACRO_SYMBOL-0050LOCAL-MACRO_SYMBOL-0053LOCAL-MACRO_SYMBOL-0052LOCAL-MACRO_SYMBOL-0055LOCAL-MACRO_SYMBOL-0054LOCAL-MACRO_SYMBOL-0057LOCAL-MACRO_SYMBOL-0056LOCAL-MACRO_SYMBOL-0059LOCAL-MACRO_SYMBOL-0058CODERODATABSSDATAZEROPAGENULLUzna` ixc g@ד]] j%Z@ @' '3M`) )`O&ZZ%%11LL::77TT ==&&E E      > >" "- -22  !GG"##'RR1++23444<!!=NN>?P P@A..B  C   F**G$ $HBBIJ  K5 5MN '()*,U-P0MHG?)>&9C8LO6E31A4;J$. -I= 5F"%7@N *(,2RK/ :#'BD<++__CBM____C64__ cbm/oserror.sca65 V2.17 - Git 6c320f7*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +I= 5F"%7@N *(,2RK/ :#'BD<++__CBM____C64__ cbm/oserror.sca65 V2.18 - Git cab4910a/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.size -ErrTabSize@L1ErrTab@L2CODERODATABSSDATAZEROPAGENULLUzna` iqkl y|8{{|@ŴfaX  +ErrTabSize@L1ErrTab@L2CODERODATABSSDATAZEROPAGENULLUzna` iqkl y|8|{}@ד]        @@ -25479,7 +29013,7 @@ ErrTabSize@L1ErrTab@L2CODERODATABSSDATAZEROPAGENULLUzna` i      -  /#'+__CBM____C64__cbm/overlayaddr.sca65 V2.17 - Git 6c320f7__OVERLAYADDR__.sizeCODERODATABSSDATAZEROPAGENULLOVL1ADDROVL2ADDROVL3ADDROVL4ADDROVL5ADDROVL6ADDROVL7ADDROVL8ADDROVL9ADDRUzna` kzN {*+@ŴE*[faX+r * +  /#'+__CBM____C64__cbm/overlayaddr.sca65 V2.18 - Git cab4910a__OVERLAYADDR__.sizeCODERODATABSSDATAZEROPAGENULLOVL1ADDROVL2ADDROVL3ADDROVL4ADDROVL5ADDROVL6ADDROVL7ADDROVL8ADDROVL9ADDRUzna` kzN {!"@ד]]+r * *6 I= =  < <Q Q@ @+ +FF  @@ -25518,7 +29052,7 @@ ErrTabSize@L1ErrTab@L2CODERODATABSSDATAZEROPAGENULLUzna` i   L/ /,-JJ./0*/(1!' -%8$?D";0NM!&< *7%G.)B3,Q@+5=9HRhm\jU -P0M]l)o&sfW98LO6pEgtbk3T14;eJn$.^iqId= 5 -%7_[N*(aV,2cRK/: '`SZQYX+1__CBM____C64__../libwrk/c64/penadjust.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_open_close_write_read _pen_adjuster_pen_calibrate _pen_adjust_name.sizepushaxL001Dldax0sp _adjusterL002Aincsp2pusha0L0005ldaxyspstax0spL0015pushw0sppushwyspL002Eincsp4CODERODATABSSDATAZEROPAGENULLUzna` kz.3 B E C :D @ŴE*[faX9  +%7_[N*(aV,2cRK/: '`SZQYX+1__CBM____C64__../libwrk/c64/penadjust.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_open_close_write_read _pen_adjuster_pen_calibrate _pen_adjust_name.sizepushaxL001Dldax0sp _adjusterL002Aincsp2pusha0L0005ldaxyspstax0spL0015pushw0sppushwyspL002Eincsp4CODERODATABSSDATAZEROPAGENULLUzna` kz.3 B E C 1D @ד]]9   W W  R Z @@ -25586,8 +29120,9 @@ ErrTabSize@L1ErrTab@L2CODERODATABSSDATAZEROPAGENULLUzna` i ) q qL" "F:88INISH BY CLICKING OFF BAR.$D$J$U$S$T$ $B$Y$ $C$L$I$C$K$I$NG ON LINE.;<=> 8"765]4P320S .+'*+)d(~'&X&% z;NEM$ ?617\!K08FW)hZ-b><wq_l{j2nfiQ #`cI hm\j|U P0M]lHG?"o>ysfW9C8}LO6pEgtbk3T1A4;eJn^!iqIdx= 5 -F7_[@NarV2wcRKvz/:u~ #`BSDZ{Q<YX+?__CBM____C64__../libwrk/c64/pencalib.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_clrscr_cputsxy_revers -_textcolor_bgcolor _cvlinexy _cclearxy _screensize _mouse_hide _mouse_show _mouse_move_mouse_buttons _mouse_info_pen_calibrateL0031.sizeL002Apushaxpushasubyspleaa0sppusha0 tosumula0decaxyshlax3L003EL0040ldaxyspL003CpushwyspL0063tosicmpincax4tossubaxshrax1tosaddaxstaspidxaddyspCODERODATABSSDATAZEROPAGENULLUzna` kz8=u pO@ŴE*[ faX_ T; ) +F7_[@NarV2wcRKvz/:u~ #`BSDZ{Q<YX+?__CBM____C64__../libwrk/c64/pencalib.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_clrscr_cputsxy_revers +_textcolor_bgcolor _cvlinexy _cclearxy _screensize _mouse_hide _mouse_show _mouse_move_mouse_buttons _mouse_info_pen_calibrateL0031.sizeL002Apushaxpushasubyspleaa0sppusha0 tosumula0decaxyshlax3L003EL0040ldaxyspL003CpushwyspL0063tosicmpincax4tossubaxshrax1tosaddaxstaspidxaddyspCODERODATABSSDATAZEROPAGENULLUzna` kz8=u pF@ד] +]_ T; ) )    @@ -25609,7 +29144,7 @@ _textcolor_bgcolor _cvlinexy _cclearxy _screensize _mouse_hide _mouse_show _mou ! + +L  .!%S: %S "#$%  !)*'% +(.T,&/ -0?)>&9C86E31A4;$.= 5 -F%7@*(,2/:#'B<+&__CBM____C64__../libwrk/c64/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    @ŴE*["faX -  +F%7@*(,2/:#'B<+&__CBM____C64__../libwrk/c64/perror.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_stderr_fprintf_perror _strerror__errnoL0008.sizeL000FpushaxL0004pushwyspL0012incsp4CODERODATABSSDATAZEROPAGENULLUzna` kzR 0    @ד]"] -           3 @@ -25666,16 +29201,17 @@ _textcolor_bgcolor _cvlinexy _cclearxy _screensize _mouse_hide _mouse_show _mou UnBBhJL ./012,#)#'#s&#;%#A$#:##"#V##yL##)vCkH##3dYDwr"[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+3__CBM____C64__../libwrk/c64/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{  }. -/@ŴfaXfaXD    +F%7_[@N*(arV,2wcRKvz/:u~ #'`BSDZ{Q<YX+3__CBM____C64__../libwrk/c64/pmemalign.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_malloc_free_posix_memalignpushaxdecsp6L0002ldaxyspL0001.sizeL0009pushwyspsubeqysptosandaxL0008L0014complax staxspidxdecax4ldaxidxstaxysptossubaxL002Bincax4L003AL004FaddyspCODERODATABSSDATAZEROPAGENULLUzna` ix{  s$ +%@ד]]D      ` ` ! - !   "__CBM____C64__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  HI@Ŵ([ faXI       L -  !"       #__CBM____C64__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 #&a%b@ŴfaX faXSH     hL - !"#    #__CBM____C64__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*- ST@ŴfaX faX3) + !   "__CBM____C64__runtime/popa.sca65 V2.18 - Git cab4910apopasp/home/pzp/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` iq BW~@ד]I +        L +     +    __CBM____C64__runtime/popptr1.sca65 V2.18 - Git cab4910apopptr1incsp2spptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix #&W%X@ד] ]SH     hL + !"#    #__CBM____C64__runtime/popsreg.sca65 V2.18 - Git cab4910apopsregincsp2spsreg/home/pzp/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*- IJ@ד] ]3)     @@ -25686,56 +29222,56 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODAT L       - !0) 98L31A4;J.=F*(2K/:B<__CBM____C64__common/printf.sca65 V2.17 - Git 6c320f7_printf_stdoutpushaxaddysp _vfprintfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqM )qno@ŴfaXL + !0) 98L31A4;J.=F*(2K/:B<__CBM____C64__common/printf.sca65 V2.18 - Git cab4910a_printf_stdoutpushaxaddysp _vfprintfspptr1!/home/pzp/cc65/asminc/generic.mac ParamSize.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqM )rop@ד]L   -    __CBM____C64__runtime/push1.sca65 V2.17 - Git 6c320f7push1pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )qno@ŴfaXL +    __CBM____C64__runtime/push1.sca65 V2.18 - Git cab4910apush1pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )rop@ד]L   -    __CBM____C64__runtime/push2.sca65 V2.17 - Git 6c320f7push2pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )qno@ŴfaXL +    __CBM____C64__runtime/push2.sca65 V2.18 - Git cab4910apush2pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )rop@ד]L   -    __CBM____C64__runtime/push3.sca65 V2.17 - Git 6c320f7push3pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )qno@ŴfaXL +    __CBM____C64__runtime/push3.sca65 V2.18 - Git cab4910apush3pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )rop@ד]L   -    __CBM____C64__runtime/push4.sca65 V2.17 - Git 6c320f7push4pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )qno@ŴfaXL +    __CBM____C64__runtime/push4.sca65 V2.18 - Git cab4910apush4pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )rop@ד]L   -    __CBM____C64__runtime/push5.sca65 V2.17 - Git 6c320f7push5pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )qno@ŴfaXL +    __CBM____C64__runtime/push5.sca65 V2.18 - Git cab4910apush5pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )rop@ד]L   -    __CBM____C64__runtime/push6.sca65 V2.17 - Git 6c320f7push6pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )qno@ŴfaXL +    __CBM____C64__runtime/push6.sca65 V2.18 - Git cab4910apush6pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )rop@ד]L   -    __CBM____C64__runtime/push7.sca65 V2.17 - Git 6c320f7push7pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix! ..\_^@ŴfaX faXr    +    __CBM____C64__runtime/push7.sca65 V2.18 - Git cab4910apush7pusha0.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix! ..\_^@ד] ]r      `   ` !"# - $  $__CBM____C64__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 )urs@ŴfaXL + $  $__CBM____C64__runtime/pusha.sca65 V2.18 - Git cab4910apusha0sppushaysppushasp/home/pzp/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 )vst@ד]L   -    __CBM____C64__runtime/pushaff.sca65 V2.17 - Git 6c320f7pushaFFpushax.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq& 1._bjLaM@ŴfaX~  H 8    h ` +    __CBM____C64__runtime/pushaff.sca65 V2.18 - Git cab4910apushaFFpushax.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq& 1._bjMaN@ד]~  H 8    h `          ! - #__CBM____C64__runtime/pushax.sca65 V2.17 - Git 6c320f7push0pusha0pushaxsp.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix 1ORQ@ŴfaX faXq e     L - !"#  &    $__CBM____C64__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(@ŴfaX + #__CBM____C64__runtime/pushax.sca65 V2.18 - Git cab4910apush0pusha0pushaxsp.size@L1CODERODATABSSDATAZEROPAGENULLUzna` ix 1ORQ@ד] ]q e     L + !"#  &    $__CBM____C64__runtime/pushb.sca65 V2.18 - Git cab4910apushbpushbidxpushaxptr1/home/pzp/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(@ד]  L       -   __CBM____C64__runtime/pushbsp.sca65 V2.17 - Git 6c320f7pushbsppushbysppusha0sp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )rop@ŴfaXL +   __CBM____C64__runtime/pushbsp.sca65 V2.18 - Git cab4910apushbsppushbysppusha0sp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )spq@ד]L   -    __CBM____C64__runtime/pushc0.sca65 V2.17 - Git 6c320f7pushc0pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )rop@ŴfaXL +    __CBM____C64__runtime/pushc0.sca65 V2.18 - Git cab4910apushc0pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )spq@ד]L   -    __CBM____C64__runtime/pushc1.sca65 V2.17 - Git 6c320f7pushc1pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )rop@ŴfaXL +    __CBM____C64__runtime/pushc1.sca65 V2.18 - Git cab4910apushc1pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )spq@ד]L   -    __CBM____C64__runtime/pushc2.sca65 V2.17 - Git 6c320f7pushc2pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq4 @Cj-B.@ŴfaXu +    __CBM____C64__runtime/pushc2.sca65 V2.18 - Git cab4910apushc2pusha.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq4 @Cj.B/@ד]u         L          -__CBM____C64__runtime/pushlysp.sca65 V2.17 - Git 6c320f7pushlysppusheaxsregsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq.47L6@ŴfaXN       L +__CBM____C64__runtime/pushlysp.sca65 V2.18 - Git cab4910apushlysppusheaxsregsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq.47L6@ד]N       L           -   __CBM____C64__runtime/pushw.sca65 V2.17 - Git 6c320f7pushwpushwidx pushptr1idxpushaxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix= Jgji@ŴfaXfaX  8 -         `    __CBM____C64__runtime/pushwsp.sca65 V2.17 - Git 6c320f7pushwysppushw0spsp,/home/hugg/compilers/cc65/asminc/generic.mac.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqk 87@ŴfaX4 +   __CBM____C64__runtime/pushw.sca65 V2.18 - Git cab4910apushwpushwidx pushptr1idxpushaxptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix= Jgji@ד]]  8 +         `    __CBM____C64__runtime/pushwsp.sca65 V2.18 - Git cab4910apushwysppushw0spsp!/home/pzp/cc65/asminc/generic.mac.size@L1CODERODATABSSDATAZEROPAGENULLUzna` iqk 87@ד]4     L         -__CBM____C64__common/putchar.sca65 V2.17 - Git 6c320f7_putcharpushax_stdout_fputc.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix<e &)(@ŴfaX#faX : c +__CBM____C64__common/putchar.sca65 V2.18 - Git cab4910a_putcharpushax_stdout_fputc.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix<e &)(@ד]#] : c cZ Z  4d d22CCL =iLLS S3 3 = @@ -25767,11 +29303,11 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeL1CODERO TOP`9;<X8=>? ITS#; * Gktu$nZd3. <1 0!" 0?(D 05 =>r>pEyh\j -PHG?"o&y f9OpgtkT;e $.!i Ix 5 -F"%[@ (a,wRvz :u#'`SZ{QYX@__CBM____C64__common/putenv.sca65 V2.17 - Git 6c320f7_putenv_malloc_free searchenv +F"%[@ (a,wRvz :u#'`SZ{QYX@__CBM____C64__common/putenv.sca65 V2.18 - Git cab4910a_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 B$%@ŴE*[ -faXiL  +__envcount __envsizereturn0ptr1ptr2ptr3tmp1/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXname@L0.size@L1erroraddentry addnewentry@L2nomemnewsize@L3@L5@L4CODERODATABSSDATAZEROPAGENULLUzna` kzlI 9@ד] +]iL    @@ -25793,7 +29329,7 @@ __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEB  ! "  #$ 5,*+(1".#  2'3-6&i49 -P0MHG?")>&9C8LO6E31A4;J$.!I= 5 -F%7@*(,2K/:#'BD<+%__CBM____C64__../libwrk/c64/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$uP@ŴE*[)faX <  +F%7@*(,2K/:#'BD<+%__CBM____C64__../libwrk/c64/puts.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_stdout_puts_strlen_writeL0003.sizepushaxpusha0pushwyspldaxyspL0013incsp2CODERODATABSSDATAZEROPAGENULLUzna` kz0 @NQ$u|P}@ד])] <   & & +  = =  @@ -25905,8 +29441,8 @@ __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEB T   j  8 8    |L =>?@A;74.0.q-yEZ,i:K) -O4'$#?x]t r l9M ASW}B= &>c 2R{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+B__CBM____C64__../libwrk/c64/qsort.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_qsort__swappushaxldaxyspL0048pushwysppush0decax1 tosumulax -_QuickSortincsp8.sizeregswap2decsp4L003EL0002staxyspstax0spL0022L000EaddeqyspL0010tosicmpL0055L001Atosaddaxjmpvecincsp2L0018subeq0spL0056L0053L0057ldax0spL005AL002Cshlax1L0032L0054L0058addyspCODERODATABSSDATAZEROPAGENULLUzna` ixu ` kl@ŴfaX faX+  &  " H% +F%_ [@N*(arV,wcRKvz/u&~* #'`BSDZ{QYX+B__CBM____C64__../libwrk/c64/qsort.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_qsort__swappushaxldaxyspL0048pushwysppush0decax1 tosumulax +_QuickSortincsp8.sizeregswap2decsp4L003EL0002staxyspstax0spL0022L000EaddeqyspL0010tosicmpL0055L001Atosaddaxjmpvecincsp2L0018subeq0spL0056L0053L0057ldax0spL005AL002Cshlax1L0032L0054L0058addyspCODERODATABSSDATAZEROPAGENULLUzna` ixu `ab@ד] ]+  &  " H% #! !  @@ -25914,37 +29450,31 @@ _QuickSortincsp8.sizeregswap2decsp4L003EL0002staxyspstax0spL0022L000E  H  I$ $h&  - `!$'--)&7(%6314$6+4%5*,1,2.'+__CBM____C64__common/raise.sca65 V2.17 - Git 6c320f7jmpvec+/home/hugg/compilers/cc65/asminc/signal.incSIG_ERRSIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERMSIGCOUNTsigtable __sig_ign __sig_dfl_signal_raise.size -invalidsigCODERODATABSSDATAZEROPAGENULLUzna` iq#$ADtcCd@Ŵ([ s J1 -m - -m - -m! -! - -i' - - iY -  -iA - - -)  -i1 -`  - - - -` -   ;"-0?)>&9C86E31A4;.!5%7@*(,2/:'B<+__CBM____C64__ common/rand.sca65 V2.17 - Git 6c320f7_rand_srandrand.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixZ xf g @ŴfaX([4tEL1 -1U1, y-Yl[jNB !FPX Hu%EDaOA;LG  : -gn4xo -"i5K q_rU,&dT]\@tb. Q^I`sJeMVRS$C3__CBM____C64__c64/randomize.sca65 V2.17 - Git 6c320f7 __randomize_srand(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG + `!$'--)&7(%6314$6+4%5*,1,2.'+__CBM____C64__common/raise.sca65 V2.18 - Git cab4910ajmpvec /home/pzp/cc65/asminc/signal.incSIG_ERRSIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERMSIGCOUNTsigtable __sig_ign __sig_dfl_signal_raise.size +invalidsigCODERODATABSSDATAZEROPAGENULLUzna` iq;yFu@ד] 1! + +i  + m + +m + +) + m + +` + +  + +` +   " +-G>9C86E31A4;=57@2:'BD<__CBM____C64__ common/rand.sca65 V2.18 - Git cab4910a_rand_srandrand.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixZ zb/ 0 @ד]]2wGL0 +0U0(<y-?YlpjNB !FP=X Hk%EDaA};L8ZG  9: +g+xz +"i{~fmK q_2U,&dT]|>w\@b QWIJMVS$C3__CBM____C64__c64/randomize.sca65 V2.18 - Git cab4910a __randomize_srand/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -25967,108 +29497,108 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeCODERODATABSSDATAZEROPAGENULLUzna` i$<~im  @Ŵ([faX faX 8faXCfaX<]~i ^ - ^ t i::_6 -6=)PP*i*k0>W> -U -U u -u-5-LQ -Q A -Af f& -& V((  -  e - er r)9 -9 -w wT -T -C  -C3 3ddK K )@E -B B+  +JJY -Yi i``L -L - % -%z - 1 1`  LR -R||LS -S^ -_ "`ab4c  IIq l -lLD -DE,D86L#xQ"xRSh'r'i'fw'3K1'B+'TC@^  e    % - A  u D l a~WNh \j U -P M] ?oy  7}LO6pEAb38T14; Jn^!i9: qdx 5F[@N*r,2w@cRKv: # SDZ - "Yd__CBM____C64__ -cbm/read.sca65 V2.17 - Git 6c320f7_read initstdinSETLFSOPENCHKINBASINCLRCHBSOUTREADSTrwcommonpopaxptr1ptr2ptr3tmp1tmp2tmp3 cbm/cbm.inc +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.sizeCODERODATABSSDATAZEROPAGENULLUzna` i$c  kwE   @ד]]B] ]]h]Y~i  +ztziN{ +{J)RReie00W' +'! +! 2 +25L= += _ +_V V +55 jj 9 +9  +  )M9M  i i q qEE ? ?)@Y +Y WW% %;;] +] } +}a +a  + + +H +   `DL + ""L +  39  \\  + +L + j<'iK{}aH=G D6r94_3 +1p2(I&+%d? d dV dq  +d% di )~$c<h m\ /|-?  0M] ?")o)> !F=  9CL(%OpEgEb#3T1'4  Jn6i  +q+I4x 5"5[N*2,a1&>,2wcRKv. :u  SD0Z +Q "YX$+3__CBM____C64__ +cbm/read.sca65 V2.18 - Git cab4910a_read initstdinrwcommonpopaxptr1ptr2ptr3tmp1tmp2tmp3 cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN -MAX_DRIVES FIRST_DRIVE*/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_EXCLcbm/filedes.incfdtabunittabfreefdMAX_FDSLFN_OFFS +MAX_DRIVES FIRST_DRIVE/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX/home/pzp/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCLcbm/filedes.incfdtabunittabfreefdMAX_FDSLFN_OFFS LFN_CLOSEDLFN_READ LFN_WRITELFN_OPENLFN_EOF LFN_STDIN LFN_STDOUT -LFN_STDERR.size invalidfdeofunit@L3@L0@L0_1 devnotpresent@L1@L2@L4doneCODERODATABSSDATAZEROPAGENULLONCEUzna` kze    @ŴE*[faX -7 4 -4 0 -0      -   t -t    -@e  -`i  i -P  H -HB  B   k -k  - 2 -2+  -gL -C  C   R -R H( I( & -& p -pLLLL -L   O O       @d%  @  @  -      - !!L! -!w  w   \  \  Lm -lm=T  Tz   ] ]%  % q  q 1 -1Qe H8e[  [h  7  I IBL -_  " -" -Z Z   $  $L -  -cpc,L -zL -  "3L +LFN_STDERR.size invalidfdeofunit@L3@L0@L0_1 devnotpresent@L1@L2@L4doneCODERODATABSSDATAZEROPAGENULLONCEUzna` kzu   ? + @ד] ] +; h +hc l +l  Q  Q  +I  I B +B   n +n@  +2+  + +j  C +C  S  S  +( & +&  +s  +M  L  +   P  P  + H I  +g  +??L? +?       !  !{  {@%  _  _  +  p  p < +<VL +~  ~ `  `% %   uu1  1LR +lR  7^     6  6  +e HJe  bh"  ]  $  BL +   +f +f, ,     L3 +3 +HH;FpFEkkLk +zkL +  ".L - -G< -<L -E  E"Dh-h -. -. -V -V - -bo -oL - -a Ha IL - -FWFW HW IAm -Nn n      -LY -Y   :8: u - u -^  ^DlS -L{ -{> H> IL -  EXXIL - -; H;5 I5L -6  6  -  -    vvL~ -~  + +X +L +  "e-er +r + +d +d + +GGY +L@ +@ +O HOq IqL + +W[ H[ Im9 +9yy a  ao  o T +TL +   =8  +  +Z  ZD +L + H: I:L4 +4  E5I--L + + H IL) +)    >>  m    zzL + K -) +#  -)H? ?Ej   J# #hyFrLs -s89///////////////////////:;<6*s$*1 ***t*0*4k2R&U|pMu)]%[n -?# *iBC@w\T q$E^6-OIZhm\j|U -P0M]lHG?")o>&ys>fW9C8}9LO6pEgtbk3T1A4;eJn.?^!i@qIdx= 5 -F7_ [@N*(arV<,2 wcRKvz/:u~ '`BSDZ{Q<YX+=__CBM____C64__../libwrk/c64/readdir.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac__errno__cbm_filetype_readdir __dirread -__dirread1L0009.sizeL000AL000Cpushaxregswap2pushasubyspleaa0spL0008L001BL001Cincax4L008DL008CL0087L0043L0049L0064L0071L008BL0089L0088L0060L006AL0074L008AL0086L0081L0085addyspCODERODATABSSDATAZEROPAGENULLUzna` kz#ky|&  { @ŴE*[faX2  +#}Hwx xE* *\  \UAAD DhtFL +</v=0>?@:($&#"Bn!l hW<N#a +xD *QI+SP!{_p~` 16oZ\ ,*hm\j|U -PM]lHG?")o>ys>fW9C8}9LO6pEgtbk3T1A4;eJn$?^!i@qIdx= 5 +F7_ [@N*(arV<,2 wcRKvz:u~ #`BSDZ{Q<YX+A__CBM____C64__../libwrk/c64/readdir.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac__errno__cbm_filetype_readdir __dirread +__dirread1L0015.sizeL001CL002DL0036L0009L000AL000Cpushaxregswap2pushasubyspleaa0spL0008L001DL001Eincax4L0092L0091L008CL0047L004DL0068L0075L0090L008EL008DL0064L006EL0078L008FL008BL0085L008AaddyspCODERODATABSSDATAZEROPAGENULLUzna` kz#ky|&  { @ד]]2   W W   T @@ -26110,32 +29640,32 @@ __dirread1L0009.sizeL000AL000Cpushaxregswap2pushasubyspleaa0spL0008L0 &345671}&/}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+8__CBM____C64__../libwrk/c64/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[1@ŴfaXe     H   h  `        +F%7_[@N*(arV,2wcRKvz/:u~ #'`BSDZ{Q<YX+8__CBM____C64__../libwrk/c64/realloc.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_malloc_realloc_free_memcpy __heapptr __heapendpushaxregswap2decsp6L0002L0001.sizeL0006ldaxyspL000EL0011L000Fdecax4ldaxidxstaxyspL0021stax0spL003Eldax0spL003FL002BsubeqyspL0031pushwyspL003CaddyspCODERODATABSSDATAZEROPAGENULLUzna` iq # /2[1@ד]e     H   h  `          -__CBM____C64__runtime/regswap.sca65 V2.17 - Git 6c320f7regswapspregbanktmp1@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqt BE{@ŴfaX=   H +__CBM____C64__runtime/regswap.sca65 V2.18 - Git cab4910aregswapspregbanktmp1@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqt BE|@ד]=   H    h `             -__CBM____C64__runtime/regswap1.sca65 V2.17 - Git 6c320f7regswap1spregbank.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq(; GJe{*I+@ŴfaX  H   h   H  h +__CBM____C64__runtime/regswap1.sca65 V2.18 - Git cab4910aregswap1spregbank.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq(; GJe|+I,@ד]  H   h   H  h  `         ! -#__CBM____C64__runtime/regswap2.sca65 V2.17 - Git 6c320f7regswap2spregbank.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ . @ŴfaX   +#__CBM____C64__runtime/regswap2.sca65 V2.18 - Git cab4910aregswap2spregbank.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ . @ד]   L       -__CBM____C64__common/remove.sca65 V2.17 - Git 6c320f7_remove __sysremove __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ . @ŴfaX   +__CBM____C64__common/remove.sca65 V2.18 - Git cab4910a_remove __sysremove __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqQ . @ד]   L       -__CBM____C64__common/rename.sca65 V2.17 - Git 6c320f7_rename __sysrename __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )nef@ŴfaX`  -       __CBM____C64__runtime/return0.sca65 V2.17 - Git 6c320f7return0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqN )nfg@ŴfaX`  -       __CBM____C64__runtime/return1.sca65 V2.17 - Git 6c320f7return1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix    @ŴfaX([4\X.zzJ3++%%7?b` Ey- Yl[jNB!FPX Hu%EDaOA;LG  : -gn4xo "i5K q_rU,&dT]\@tb. Q^I`sJeMVRS$C3__CBM____C64__ c64/revers.sca65 V2.17 - Git 6c320f7_revers(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +__CBM____C64__common/rename.sca65 V2.18 - Git cab4910a_rename __sysrename __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqM )ofg@ד]`  +       __CBM____C64__runtime/return0.sca65 V2.18 - Git cab4910areturn0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqN )ogh@ד]`  +       __CBM____C64__runtime/return1.sca65 V2.18 - Git cab4910areturn1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix    @ד]]2\X*}}L2((""6Af` G<y-? YlpjNB!FP=X Hk%EDaA};L8ZG  9: +g+xz "i{~fmK q_2U,&dT]|>w\@b QWIJMVS$C3__CBM____C64__ c64/revers.sca65 V2.18 - Git cab4910a_revers/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -26158,7 +29688,7 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYL1.sizeL2CODERODATABSSDATAZEROPAGENULLUzna` kz +4 @C[4B@ŴE*[faXX  +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYL1.sizeL2CODERODATABSSDATAZEROPAGENULLUzna` kz +4 @C[+B@ד]]X        @@ -26166,33 +29696,33 @@ CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_Fas   L  !    "&!  -% #"__CBM____C64__../libwrk/c64/rewind.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac _clearerr_fseek_rewindpushaxpushw0sppushl0ldax0spincsp2.sizeCODERODATABSSDATAZEROPAGENULLUzna` iw - c@ŴfaXfaXfaX@$ +% #"__CBM____C64__../libwrk/c64/rewind.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac _clearerr_fseek_rewindpushaxpushw0sppushl0ldax0spincsp2.sizeCODERODATABSSDATAZEROPAGENULLUzna` iw + Y @ד]]]@$        L -%&'()#       *__CBM____C64__cbm/rewinddir.sca65 V2.17 - Git 6c320f7 cbm/dir.incDIRfd.sizeoffname_opendir _closedir_readdir_seekdir_telldir +%&'()#       *__CBM____C64__cbm/rewinddir.sca65 V2.18 - Git cab4910a cbm/dir.incDIRfd.sizeoffname_opendir _closedir_readdir_seekdir_telldir _rewinddir __dirread -__dirread1-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespacepushaxCODERODATABSSDATAZEROPAGENULLUzna` iqQ )@ŴfaX   +__dirread1"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespacepushaxCODERODATABSSDATAZEROPAGENULLUzna` iqQ )@ד]   L       -__CBM____C64__common/rmdir.sca65 V2.17 - Git 6c320f7_rmdir -__sysrmdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix9<;@Ŵ([ -faXX8  "   L +__CBM____C64__common/rmdir.sca65 V2.18 - Git cab4910a_rmdir +__sysrmdir __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix9<;@ד] +]X8  "   L   !"#     &"  ! -%  #$__CBM____C64__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` i>!_ kn# m@Ŵ([ faX 'faX7I7 /I(   +%  #$__CBM____C64__runtime/rsub.sca65 V2.18 - Git cab4910a tosrsuba0 tosrsubaxaddysp1sptmp1/home/pzp/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` i>!_ kn#m@ד] ] ']7I7 /I(   . .  0 0  5 5`!89:;< 5 .   0: & $!  -"% *( ,  #' =__CBM____C64__cbm/rwcommon.sca65 V2.17 - Git 6c320f7rwcommonpopaxpopptr1ptr1ptr2ptr3tmp2*/home/hugg/compilers/cc65/asminc/errno.inc__errno __oserror __osmaperrno +"% *( ,  #' =__CBM____C64__cbm/rwcommon.sca65 V2.18 - Git cab4910arwcommonpopaxpopptr1ptr1ptr2ptr3tmp2/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXcbm/filedes.incfdtabunittabfreefdMAX_FDSLFN_OFFS LFN_CLOSEDLFN_READ LFN_WRITELFN_OPENLFN_EOF LFN_STDIN LFN_STDOUT -LFN_STDERR@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix*- RS@ŴfaX faX3) +LFN_STDERR@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix*- HI@ד] ]3)     @@ -26207,32 +29737,33 @@ LFN_STDERR@L9.sizeCODERODATABSSDATAZEROPAGENULLUzna` i   !     " 0H)&9831A4J!I= -%*(2/ 'B+__CBM____C64__common/scanf.sca65 V2.17 - Git 6c320f7_scanf_stdinpushaxaddysp_vfscanfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac.sizeArgSize@L1CODERODATABSSDATAZEROPAGENULLUzna` ix 0 <?y>@ŴfaX faX a -  - S -  -H -  -h` -   "& 7A8$9:@ __CBM____C64__ cbm/scratch.sca65 V2.17 - Git 6c320f7scratchopencmdchannelclosecmdchannelwritefndiskcmdfnunitfncmd cbm/cbm.inc +%*(2/ 'B+__CBM____C64__common/scanf.sca65 V2.18 - Git cab4910a_scanf_stdinpushaxaddysp_vfscanfspptr1!/home/pzp/cc65/asminc/generic.mac.sizeArgSize@L1CODERODATABSSDATAZEROPAGENULLUzna` ix 0 <?U>@ד] ]a@ +  +**S; +; 5 +5H# + > +>h:` ABCDE +; &5&>&D</-?")& !F= (%E#' $6 ++4"5*2,1&>.  0$3F__CBM____C64__ cbm/scratch.sca65 V2.18 - Git cab4910ascratchopencmdchannelclosecmdchannelwritefndiskcmdfnunitfncmd cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN -MAX_DRIVES FIRST_DRIVEdone.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix ' 365@Ŵ([ -faX]    +MAX_DRIVES FIRST_DRIVEdone.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix ' 365@ד] +]]        " "` !"# "  &   $! - #$__CBM____C64__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=&_`@ŴfaX4.  + #$__CBM____C64__conio/scrsize.sca65 V2.18 - Git cab4910a _screensizepopptr1 +screensizeptr1ptr2/home/pzp/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=&`a@ד]4.  )  "0 !  $ $        =#`     `  - $ )  )%PM)& CLO63T1A4;J=5%7N*(,2R '<+__CBM____C64__common/searchenv.sca65 V2.17 - Git 6c320f7 searchenv + $ )  )%PM)& CLO63T1A4;J=5%7N*(,2R '<+__CBM____C64__common/searchenv.sca65 V2.18 - Git cab4910a searchenv copyenvptr __environ -__envcountptr1ptr2ptr3@L0.size@L9@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kzf  /: -@ŴE*[faX, > +__envcountptr1ptr2ptr3@L0.size@L9@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kzf  /: +@ד]], > >e ` `;  @@ -26263,7 +29794,7 @@ __envcountptr1ptr2ptr3@L0.size@L9@L1@L2CODERODATABSSDATAZEROPAGENU 7' ' ? ?Q +^ ^ZV VBB[ [i i" "_ _ L. .-./01+.*(J$X#M"g !L C]#-78`>*?U\ $IDd F /&!4kG6Y<i_FONF,A'^V["=ohm\j|U -P0M]lHG?")o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 -F%7_[@N*(arV,2wcRKvz/:u~ #'`BSDZ{Q<YX+2__CBM____C64__../libwrk/c64/seekdir.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_open_close__errno_seekdir __dirreadpusheaxregswap2subyspldeaxyspL0005L0015.sizepushaxincax4pusha0 staxspidxldaxyspstaxyspL0026L0014L0018subeqyspL0021leaa0spaddyspCODERODATABSSDATAZEROPAGENULLUzna` in$A%  @ŴfaX faX4^faXs]F +F%7_[@N*(arV,2wcRKvz/:u~ #'`BSDZ{Q<YX+2__CBM____C64__../libwrk/c64/seekdir.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_open_close__errno_seekdir __dirreadpusheaxregswap2subyspldeaxyspL0005L0015.sizepushaxincax4pusha0 staxspidxldaxyspstaxyspL0026L0014L0018subeqyspL0021leaa0spaddyspCODERODATABSSDATAZEROPAGENULLUzna` in$A%  @ד] ]4^]s]F  ? ?w w1_ _, ,)+)BBd HdA A* I* RE ~ @@ -26288,8 +29819,9 @@ __envcountptr1ptr2ptr3@L0.size@L9@L1@L2CODERODATABSSDATAZEROPAGENU L L `LLLwxYw_ApGd*G{ O ]S#VKUIRQPO ON  M{LFK J&?\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 y__CBM____C64__serial/ser-kernel.sca65 V2.17 - Git 6c320f7return0 -ser_librefptr1ser_irq//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +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 y__CBM____C64__serial/ser-kernel.sca65 V2.18 - Git cab4910areturn0 +ser_librefptr1ser_irq$/home/pzp/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 @@ -26299,10 +29831,11 @@ SER_STOP_1 SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put ser_status ser_ioctl_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status -_ser_ioctl_ser_clear_ptr./home/hugg/compilers/cc65/asminc/ser-error.inc +_ser_ioctl_ser_clear_ptr#/home/pzp/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= -P@ŴfaXfaX4[\]^_`J,U,W<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x -i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 a__CBM____C64__serial/ser_close.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +j@ד]]4[\]^_`J,U,W<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x +i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 a__CBM____C64__serial/ser_close.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 @@ -26312,9 +29845,10 @@ SER_STOP_1 SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status -_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ixa S01@ŴfaXfaX4*\  L +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ixa mJK@ד]]4*\  L ]^_`aLS1WE]<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x -i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 b__CBM____C64__serial/ser_get.sca65 V2.17 - Git 6c320f7ptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 b__CBM____C64__serial/ser_get.sca65 V2.18 - Git cab4910aptr1$/home/pzp/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 @@ -26324,11 +29858,12 @@ SER_STOP_1 SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status -_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ixk ZQR@ŴfaXfaX44] +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ixk tkl@ד]]44] + +   L ^_`abP>+2[ -_<y/ - Yhlp[NcB) FPX(EDaO}ZG6g+4 xi~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 c__CBM____C64__serial/ser_ioctl.sca65 V2.17 - Git 6c320f7popaptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +_<y/ - Yhlp[NcB) FPX(EDaO}ZG6g+4 xi~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 c__CBM____C64__serial/ser_ioctl.sca65 V2.18 - Git cab4910apopaptr1$/home/pzp/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 @@ -26338,7 +29873,7 @@ 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 {q r @ŴfaXfaX4[faXifaXxfaXZE +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` i$ J {j k @ד]]4[]i]x]ZE    RR I : @@ -26360,7 +29895,8 @@ _ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` i hP`!((E`    [   -0 >Y63c:qHp2Z^RaUF WPZ%<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 __CBM____C64__serial/ser_load.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +0 >Y63c:qHp2Z^RaUF WPZ%<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 __CBM____C64__serial/ser_load.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 @@ -26370,10 +29906,11 @@ SER_STOP_1 SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status -_ser_ioctl_ser_clear_ptr./home/hugg/compilers/cc65/asminc/ser-error.inc -SER_ERR_OKSER_ERR_NO_DRIVERSER_ERR_CANNOT_LOADSER_ERR_INV_DRIVERSER_ERR_NO_DEVICESER_ERR_BAUD_UNAVAILSER_ERR_NO_DATASER_ERR_OVERFLOWSER_ERR_INIT_FAILEDSER_ERR_INV_IOCTLSER_ERR_INSTALLEDSER_ERR_NOT_OPEN SER_ERR_COUNT,/home/hugg/compilers/cc65/asminc/modload.incMOD_CTRLREAD -CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_READ MLOAD_ERR_HDR MLOAD_ERR_OS MLOAD_ERR_FMT MLOAD_ERR_MEM*/home/hugg/compilers/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCLpushaxpusha0incsp2_open_read_closectrl@L0@L1@L4@L3@L2CODERODATABSSDATAZEROPAGENULLUzna` ixa T12@ŴfaXfaX4*\  L -]^_`aJQUD]<y/ - Yhlp[NcB) FPX(EDaO}ZG6g+4 xi~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 b__CBM____C64__serial/ser_open.sca65 V2.17 - Git 6c320f7ptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +_ser_ioctl_ser_clear_ptr#/home/pzp/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/pzp/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/pzp/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 nKL@ד]]4*\  L +]^_`aJQUD]<y/ - Yhlp[NcB) FPX(EDaO}ZG6g+4 xi~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 b__CBM____C64__serial/ser_open.sca65 V2.18 - Git cab4910aptr1$/home/pzp/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 @@ -26384,7 +29921,8 @@ SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_ ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status _ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ix= -N@ŴfaXfaX4[\]^_`LH+W+W<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 a__CBM____C64__serial/ser_put.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +h@ד]]4[\]^_`LH+W+W<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 a__CBM____C64__serial/ser_put.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 @@ -26394,8 +29932,9 @@ SER_STOP_1 SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status -_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ixa V34@ŴfaXfaX4*\E E( (L -]^_`aN"/E(Y0]<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 b__CBM____C64__serial/ser_status.sca65 V2.17 - Git 6c320f7ptr1//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` ixa pMN@ד]]4*\E E( (L +]^_`aN"/E(Y0]<y/ - Yhlp[NcB)FPX(EDaO}ZG6g+4 x i~f5m*q_2 rU, 1 T]|w\tb. Q^W`sMV0 RSC3 b__CBM____C64__serial/ser_status.sca65 V2.18 - Git cab4910aptr1$/home/pzp/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 @@ -26405,16 +29944,17 @@ SER_STOP_1 SER_STOP_2 SER_PAR_NONE SER_PAR_ODD SER_PAR_EVEN SER_PAR_MARK SER_PAR_SPACE SER_HS_NONE SER_HS_HW SER_HS_SW SER_STATUS_PE SER_STATUS_FE SER_STATUS_OESER_STATUS_DCDSER_STATUS_DSR_ser_drv ser_install ser_uninstallser_open ser_closeser_getser_put ser_status ser_ioctlser_irq_ser_load_driver _ser_unload _ser_install_ser_uninstall _ser_open _ser_close_ser_get_ser_put _ser_status -_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` iD_ jmJh -li -@ŴfaXfaX4[faXifaX{! +_ser_ioctl_ser_clear_ptrCODERODATABSSDATAZEROPAGENULLUzna` iD_ jmNl +lm +@ד]]4[]i]{! !H  //6 6HP  he h@  Ly -yhr:`K|}~yGyq|SF!6Q*<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 __CBM____C64__serial/ser_unload.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +yhr:`K|}~yGyq|SF!6Q*<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 __CBM____C64__serial/ser_unload.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 @@ -26424,15 +29964,66 @@ 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` iqj *}@ŴfaX +_ser_ioctl_ser_clear_ptr#/home/pzp/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/pzp/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` iqj *~@ד] %#           hh H H L        -")&.! -*(,2 '+__CBM____C64__common/setjmp.sca65 V2.17 - Git 6c320f7__setjmpreturn0spptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq>.l x{`{z|@Ŵ([     +*(,2 '+__CBM____C64__common/setjmp.sca65 V2.18 - Git cab4910a__setjmpreturn0spptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` i\  @ד]]]2iM W +W  + +    ~ +~u +u " +Z"pp) +)#  q +q  +Z +f +f  +Z] ]  +E  + 8 +8 4 +4  +ii  +L( +(0o +o>iA` 4~uqfm(mm8WZ V/-SGk -PC0MHz~3")B)>&;HA]9_+x8K|&ILB(O6q% -DAa3D98p\Ti1M;: UJ$.jQ!Td9:g+I8}= {5 +FX%7b?f@N*m*(F ,1Y>,,22<E@RK.L$/l:@y#WP 'N Z0= +wQ"!J+C__CBM____C64__ c64/settime.sca65 V2.18 - Git cab4910a/home/pzp/cc65/asminc/time.inctmtm_sec.sizetm_mintm_hourtm_mdaytm_montm_yeartm_wdaytm_ydaytm_isdsttimespectv_sectv_nsec _clock_getres_clock_gettime_clock_settime +_localtime_mktime/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +CURS_BLINK CURS_CHAR +CURS_STATE +SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC +VIC_SPR0_X +VIC_SPR0_Y +VIC_SPR1_X +VIC_SPR1_Y +VIC_SPR2_X +VIC_SPR2_Y +VIC_SPR3_X +VIC_SPR3_Y +VIC_SPR4_X +VIC_SPR4_Y +VIC_SPR5_X +VIC_SPR5_Y +VIC_SPR6_X +VIC_SPR6_Y +VIC_SPR7_X +VIC_SPR7_Y VIC_SPR_HI_X VIC_SPR_ENA VIC_SPR_EXP_Y VIC_SPR_EXP_XVIC_SPR_MCOLORVIC_SPR_BG_PRIOVIC_SPR_MCOLOR0VIC_SPR_MCOLOR1VIC_SPR0_COLORVIC_SPR1_COLORVIC_SPR2_COLORVIC_SPR3_COLORVIC_SPR4_COLORVIC_SPR5_COLORVIC_SPR6_COLORVIC_SPR7_COLOR VIC_CTRL1 VIC_CTRL2 VIC_HLINE +VIC_LPEN_X +VIC_LPEN_Y VIC_VIDEO_ADRVIC_IRRVIC_IMRVIC_BORDERCOLOR VIC_BG_COLOR0 VIC_BG_COLOR1 VIC_BG_COLOR2 VIC_BG_COLOR3 VIC_KBD_128 VIC_CLK_128SIDSID_S1LoSID_S1Hi SID_PB1Lo SID_PB1HiSID_Ctl1SID_AD1SID_SUR1SID_S2LoSID_S2Hi SID_PB2Lo SID_PB2HiSID_Ctl2SID_AD2SID_SUR2SID_S3LoSID_S3Hi SID_PB3Lo SID_PB3HiSID_Ctl3SID_AD3SID_SUR3 SID_FltLo SID_FltHi +SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DATACIA1CIA1_PRACIA1_PRB CIA1_DDRA CIA1_DDRBCIA1_TACIA1_TB +CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN +CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB +CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYsregptr1pushaxpusheaxldax0spldeaxidx tosdiveaxincsp3return0TM +load_tenthAssertion failed@L1dec2BCD@L2@L3@L9CODERODATABSSDATAZEROPAGENULLUzna` iq>.l x{`|z}@ד]               L @@ -26442,44 +30033,44 @@ CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_R          -__CBM____C64__runtime/shelp.sca65 V2.17 - Git 6c320f7popsargsudiv16negaxpopaxudiv16tmp1tmp2ptr1ptr4.sizeL1L2CODERODATABSSDATAZEROPAGENULLUzna` ix'9A-@ŴfaX faX%3.  ) +__CBM____C64__runtime/shelp.sca65 V2.18 - Git cab4910apopsargsudiv16negaxpopaxudiv16tmp1tmp2ptr1ptr4.sizeL1L2CODERODATABSSDATAZEROPAGENULLUzna` ix'9A-@ד] ]%3.  ) )9 9H:)6  8 7 ((h, .4`h%`h *`i& h # # &1 1> >`0&'()* -!9#1> /)"@-0MHG?")> L61AJ$.!I=5F%@ *,RK/: #SQ+__CBM____C64__ 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.   +!9#1> /)"@-0MHG?")> L61AJ$.!I=5F%@ *,RK/: #SQ+__CBM____C64__ runtime/shl.sca65 V2.18 - Git cab4910atosaslaxtosshlaxaslaxyshlaxypopaxtmp1/home/pzp/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(*+@ד]4.     H$!)8'##h -%J))`h`h` i h F j& (( `  *-H?)>&9C861A!I=%7@*,2K 'BD+__CBM____C64__ runtime/shr.sca65 V2.17 - Git 6c320f7tosshraxshraxypopaxtmp1.sizeL2L3L4L1L5CODERODATABSSDATAZEROPAGENULLUzna` iqe .q@ŴfaX. F j `  +%J))`h`h` i h F j& (( `  *-H?)>&9C861A!I=%7@*,2K 'BD+__CBM____C64__ runtime/shr.sca65 V2.18 - Git cab4910atosshraxshraxypopaxtmp1.sizeL2L3L4L1L5CODERODATABSSDATAZEROPAGENULLUzna` iqe .r@ד]. F j `         -__CBM____C64__runtime/shrax1.sca65 V2.17 - Git 6c320f7shrax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqt - 86q@ŴfaX=    F jF j +__CBM____C64__runtime/shrax1.sca65 V2.18 - Git cab4910ashrax1tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqt + 86r@ד]=    F jF j  `            -__CBM____C64__runtime/shrax2.sca65 V2.17 - Git 6c320f7shrax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq BPq @ŴfaXL  F jF +__CBM____C64__runtime/shrax2.sca65 V2.18 - Git cab4910ashrax2tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq BPr @ד]L  F jF  jF  j `            -__CBM____C64__runtime/shrax3.sca65 V2.17 - Git 6c320f7shrax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  Ljq@ŴfaX[  F jF  jF j +__CBM____C64__runtime/shrax3.sca65 V2.18 - Git cab4910ashrax3tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  Ljr@ד][  F jF  jF j F j `              -__CBM____C64__runtime/shrax4.sca65 V2.17 - Git 6c320f7shrax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq =Lx@ŴfaXH   F f  f j  ` +__CBM____C64__runtime/shrax4.sca65 V2.18 - Git cab4910ashrax4tmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq =Ly@ד]H   F f  f j  `          -__CBM____C64__runtime/shreax1.sca65 V2.17 - Git 6c320f7shreax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq, 8;Qx:@ŴfaXq  F  f  f jF  f f j ` +__CBM____C64__runtime/shreax1.sca65 V2.18 - Git cab4910ashreax1sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq, 8;Qy:@ד]q  F  f  f jF  f f j `            -__CBM____C64__runtime/shreax2.sca65 V2.17 - Git 6c320f7shreax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqBX dgexDfE@ŴfaX  F +__CBM____C64__runtime/shreax2.sca65 V2.18 - Git cab4910ashreax2sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqBX dgeyEfF@ד]  F  f f jF  f f jF f f  j `              -__CBM____C64__runtime/shreax3.sca65 V2.17 - Git 6c320f7shreax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq !$Lp|#@ŴfaX] +__CBM____C64__runtime/shreax3.sca65 V2.18 - Git cab4910ashreax3sregtmp1.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq !$Lp}#@ד]]  F  f f j  `           -__CBM____C64__runtime/shreax4.sca65 V2.17 - Git 6c320f7shreax4sregtmp1.size@L1CODERODATABSSDATAZEROPAGENULLUzna` i+iPUV@ŴfaX faXfaX 20' : :  +__CBM____C64__runtime/shreax4.sca65 V2.18 - Git cab4910ashreax4sregtmp1.size@L1CODERODATABSSDATAZEROPAGENULLUzna` i+iP@A@ד] ]] 20' : :  @@9$$ =x - -HG1 1 @@ -26487,9 +30078,9 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeL2L3L4L "H7   X2h)h`8  + + `34567+/-"(:1 !>/?(H --0?))>&9C78(%61A.6!+475@**,1,2./:  'BD -"+8__CBM____C64__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 +"+8__CBM____C64__common/signal.sca65 V2.18 - Git cab4910apopaxptr1 /home/pzp/cc65/asminc/signal.incSIG_ERRSIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERMSIGCOUNTsigtable __sig_ign __sig_dfl_signal_raise/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.size -invalidsigCODERODATABSSDATAZEROPAGENULLUzna` ix[ o]YZ@ŴfaXfaX$  +invalidsigCODERODATABSSDATAZEROPAGENULLUzna` ix[ o]OP@ד]]$     @@ -26497,7 +30088,9 @@ invalidsigCODERODATABSSDATAZEROPAGENULLUzna` ix[     -  -)7(%6+45*,.__CBM____C64__common/sigtable.sca65 V2.17 - Git 6c320f7sigtable+/home/hugg/compilers/cc65/asminc/signal.incSIG_ERRSIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERMSIGCOUNT __sig_ign __sig_dfl_signal_raise.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz*O _  @ŴE*[faX!C-  +  -)7(%6+45*,.__CBM____C64__common/sigtable.sca65 V2.18 - Git cab4910asigtable /home/pzp/cc65/asminc/signal.incSIG_ERRSIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERMSIGCOUNT __sig_ign __sig_dfl_signal_raise.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq1@@ד]GS< iZ))"h//h:!! %ɴ99Z&&Ii-W`0 +0`.88Z1I#i6$W<*`; 5Y + i'+`WW,, , ,,,,,$,(,,15:>BGKOSX\`dhlptx|77777777772222222222          4444444/(=hm|UP0?"o>s98Otb31Jn!i=7NV,2cv:u~ #{Q<__CBM____C64__common/sincos.sca65 V2.18 - Git cab4910a__cos__sin_sintab.size@L1@L2@L3L3L4L1L2L5L6L7CODERODATABSSDATAZEROPAGENULLUzna` kz*O V@ד]]!C-      @@ -26526,8 +30119,8 @@ invalidsigCODERODATABSSDATAZEROPAGENULLUzna` ix[   C  " -0")&631$.! 5 -%*(,2/ #'+'__CBM____C64__../libwrk/c64/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+$ +%*(,2/ #'+'__CBM____C64__../libwrk/c64/sleep.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_clock_sleeppushaxpusheaxldaxyspaxulong +tosumul0ax tosaddeaxL0006ldeax0sp.size tossubeaxtosgeeaxincsp6CODERODATABSSDATAZEROPAGENULLUzna` ix % N@ד] ]+$    e         @@ -26537,23 +30130,25 @@ tosumul0ax tosaddeaxL0006ldeax0sp.size tossubeaxtosgeeaxincsp6CODERODATA L       -  -?) C6E34;$.5*(,2:D+__CBM____C64__common/snprintf.sca65 V2.17 - Git 6c320f7 _snprintfpushaxaddyspdecsp6 -_vsnprintfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` i%8 DGI!F"@ŴfaX -([4faX MN7: 8O \ -\  - ` -**`xH4f Z -=ZW -W|]C -C<8hyX)`%~~! !p`b A -A`YY a!}W}AJ/ y- -PYl0M[jHN?B>& !FPX 9H8u&%O6'% EDaOA;3LT14G  J$. : -gnI4xo=5 -F"i%75KN *q(_rU,&dT],\@Ktb#.$ :Q^I` s J'eMDVZ -RQ<"!SY$+C3__CBM____C64__c64/soft80_cgetc.sca65 V2.17 - Git 6c320f7 soft80_cgetcsoft80_internal_cellcolorsoft80_internal_cursorxlsbcursortmp1(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +  -?) C6E34;$.5*(,2:D+__CBM____C64__common/snprintf.sca65 V2.18 - Git cab4910a _snprintfpushaxaddyspdecsp6 +_vsnprintfspptr1!/home/pzp/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` i,(T `c# +b@ד] +]:]2] _N7? ?8  +  + `3 +3`xH4  += +W] +KEh2X*`(( `S S +` S3H;< yV/-S?UG'k - PCzNG?~3c)B>&;HA] !FP=X9_7+x8K|&ILBO6qE% E-DaOA};a#DL98p\ i1'M4;: UJ.j6Q!Td9:g I&84xz}={5 +"X{%75b?Kf[@N#m$(F_ + U,!YdT>,]|>,22<E\@"RKtb.L$%/l :Q@^Wy WP J'N MZVZ= +wRQ"!J+C__CBM____C64__c64/soft80_cgetc.sca65 V2.18 - Git cab4910a soft80_cgetcsoft80_internal_cellcolorsoft80_internal_cursorxlsbcursortmp1$/home/pzp/cc65/asminc/cbm_kernal.incCINTIOINITRAMTASRESTORVECTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSECHKINCKOUTCHKOUTCLRCHCLRCHNBASINCHRINBSOUTCHROUTLOADSAVESETTIMRDTIMSTOPGETINCLALLUDTIMSCREENPLOTIOBASECLRSCRKBDREADNMIEXIT +UPDCRAMPTR/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -26578,7 +30173,7 @@ CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.size@L3 invertcursor@L1@invertsetcolor@lp1nibble@set soft80_init -conio_initCODERODATABSSDATAZEROPAGENULLUzna` iqa }$%@ŴfaX<  +conio_initCODERODATABSSDATAZEROPAGENULLUzna` iqa ~%&@ד]<      999 99 999` `` `````5555 5 555< <<< << < < MMMMMMM M , , , ,,, ,, P PPP PPP P ''''''''""""""""mmmmmmmm=== === ==} }} }}}} }JJ JJJJJ J     ::::::::t tt tt ttt# ## #####xxxx x xxx. ... ... . N NN NNNN N   EEEE EE EE@ @ @@@@@@hhhh hhhh))) )) ) ) ) V V VVVVVV++++ ++++           @@ -26602,35 +30197,34 @@ conio_initCODERODATABSSDATAZEROPAGENULLUzna` iqa    -qqqqqqq q66666666aaaaaaaaYYYYYYYY\\\\\\\\GGGGGGGG&&&&&&&&1 1111111XXXXXXXX!!!!!!!![[[[[[[[eeeeeeee*** * * ***l_hm\j|UP0M]lHG?o>yfW9C8}LO6pEgtk3T1A4;eJn^iqIdx=5F7_[NarV,2wcRKvz/:u~`BSDZ{<YX__CBM____C64__c64/soft80_charset.sca65 V2.17 - Git 6c320f7soft80_charset.sizeCODERODATABSSDATAZEROPAGENULLONCEUzna` i{M  - @ŴfaX!([4faX wex - - - +qqqqqqq q66666666aaaaaaaaYYYYYYYY\\\\\\\\GGGGGGGG&&&&&&&&1 1111111XXXXXXXX!!!!!!!![[[[[[[[eeeeeeee*** * * ***l_hm\j|UP0M]lHG?o>yfW9C8}LO6pEgtk3T1A4;eJn^iqIdx=5F7_[NarV,2wcRKvz/:u~`BSDZ{<YX__CBM____C64__c64/soft80_charset.sca65 V2.18 - Git cab4910asoft80_charset.sizeCODERODATABSSDATAZEROPAGENULLONCEUzna` i|M  @ד]!]2] wdz + + + " -   -3`9 -9  -  -HHuq w -wxXHP4J7/'v~)& VVt -t  - F -F)j H -  k -kh+ H4Y -Y  -h<< - pi'g*hsX1hh8N C -C `M2   k -wC }t Y9FDh ym\j|-U -YlM[jlN?"oB>&s!FPWX 9CH8u}&%O6p'E% EDaOAbk;3LT1A4G  J.i : -gnqId4xxo  -"i%75K[@N *q(_rU,ar&dTV],2w\@cKtvzb#.$/ :uQ^I` #s J'eMBSVZ -{R"!SY$C3__CBM____C64__c64/soft80_color.sca65 V2.17 - Git 6c320f7soft80_textcolorsoft80_bgcolorsoft80_internal_cellcolorsoft80_internal_bgcolorsoft80_internal_cursorxlsb soft80_kplotsoft80_checkchartmp1tmp2(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +   +3`8 +8  +  +HHvq y +yxVHM4G6/'x)& TTu +u  + D +D)i H +  j +jh+ H4W +W  +h;; + pi'f*  htX0hh7K @ +@ `J2   j +y@ u W8DA<h ym\j|-?U -YlpMjlN?"oB>&s!FP=WX 9CH8}&k%O6p'E% EDaA}bk;3L8T1ZA4G  J.i 9: +gq+Idxxz  +"i{~%f7mK[@N *q(_2U,ar&dTV]|>,2ww\@cKvzb#$/ :uQWI # J'MBSVZ +{"!SY$C3__CBM____C64__c64/soft80_color.sca65 V2.18 - Git cab4910asoft80_textcolorsoft80_bgcolorsoft80_internal_cellcolorsoft80_internal_bgcolorsoft80_internal_cursorxlsb soft80_kplotsoft80_checkchartmp1tmp2/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -26655,35 +30249,34 @@ CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.size mkcharcolorlpylpx@sk1@sk2@sk3@sk4 soft80_init -conio_initCODERODATABSSDATAZEROPAGENULLUzna` iY - -1 - R\ _ ? U^ V@ŴfaX([4faX A!C -Cdd v -v")!)4 +conio_initCODERODATABSSDATAZEROPAGENULLUzna` i[ + +1 S_ b ) !a "@ד]]2] A!@ +@cc x +x")!)4 4 - - - -8  -;h&sLp -pNL[I  x71H4t - H0 I0, , |R R' 'V  E E  - - - + + + +7  +;h&tLp +pKL[F ! x61H4v + H0 I0, , ~N N' 'T  C C  + + +  -( (  i i -Q@ j -Q\Qj+K+~~hXX`;  ((0088@@HHPPXX``hhppxx  ((0088PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP(Px@h0X Hpfffffff@@@@@@ZZZZZZZZZZZZZZZZZZZZZZZZZ  L uS(i SR' S,E0p J{ -B 4&9h ym\j|-U -PYl0M][jlHNG?"B>&s!FPWX 9H8u~&L%Op'% EDaOAbk;3LT1AG  Jn$.^!i : -gnqId4xxo5 -F"i%75K_[@N *q(_rU,ar&dTV],\@cKtvb#.$/ Q^I` #s J'e`MBSDVZ -{RQz<"!SYX$+C3__CBM____C64__c64/soft80_conio.sca65 V2.17 - Git 6c320f7 soft80_initsoft80_shutdownsoft80_kclrscrsoft80_charsetsoft80_internal_bgcolorsoft80_internal_cellcolorsoft80_internal_cursorxlsbptr1ptr2ptr3(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +( (  h h +Q@ i +Q\Qi+K+hVX`:  ((0088@@HHPPXX``hhppxx  ((0088LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL(Px@h0X Hpeeeeeee                         @@@@@@XXXXXXXXXXXXXXXXXXXXXXXXX  I wO(h ON' O,C0p G} +? 4&9<h ym\j|-?U -PYlp0M]jlHNG?"B>&s!FP=WX 9H8~&Lk%Op'% EDaA}bk;3L8T1ZAG  Jn$.^!i 9: +gq+Idxxz5 +F"i{~%f7mK_[@N *q(_2U,ar&dTV]|>,w\@cKvb#$/ QWI # J'`MBSDVZ +{Qz<"!SYX$+C3__CBM____C64__c64/soft80_conio.sca65 V2.18 - Git cab4910a soft80_initsoft80_shutdownsoft80_kclrscrsoft80_charsetsoft80_internal_bgcolorsoft80_internal_cellcolorsoft80_internal_cursorxlsbptr1ptr2ptr3/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -26707,18 +30300,18 @@ CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline -screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.sizesoft80_first_init@skp firstinit@l2@l1@l3soft80_tables_data_startsoft80_tables_data_endsoft80_bitmapxlo_datasoft80_bitmapxhi_datasoft80_vramlo_datasoft80_vramhi_datasoft80_bitmapylo_datasoft80_bitmapyhi_dataCODERODATABSSDATAZEROPAGENULLONCEINITUzna` i  < ? W=> >@Ŵ([([4faX faXY Y - Y @^^i`x4/)L -0)O)݀E);)݀1)')݀))݀ 6JGXn`,mmR+")I]")I݀Q")IE")I݀9")I-")I݀!")I")I݀ 6XB`#z6bXt?`V'vC)]7jIjsC)]7j?jsC)]7j5jsC)]7j+jsC)]7j!jsC)]7jjsC)]7j jsC)]7jjL -mh${)I]W {)I]K {)I]? {)I]3 {)I]' {)I] {)I] {)I]L -.L4 -4 wY~w ym\|-U1 YlJ][jlNG?")B>yr!FfPWpX 9H8u&%'Et%g EDaOAbk;LsTA;G uen^ : -gnd4xx0No=5F"i%75K_@ *q_2rU,a&dTV/3]w\@KcRtzb#P.$ :MQ^IL` #sO JeMVZ. -{qR<"!SYX$+C3__CBM____C64__c64/soft80_cpeekc.sca65 V2.17 - Git 6c320f7 soft80_cpeekcsoft80_cpeekchar(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.sizesoft80_first_init@skp firstinit@l2@l1@l3soft80_tables_data_startsoft80_tables_data_endsoft80_bitmapxlo_datasoft80_bitmapxhi_datasoft80_vramlo_datasoft80_vramhi_datasoft80_bitmapylo_datasoft80_bitmapyhi_dataCODERODATABSSDATAZEROPAGENULLONCEINITUzna` i  = @ B? @ד]]2] ]Y X + X =]]i`x4/)L +0)O)݀E);)݀1)')݀))݀ 6GDXp`,ooP+")I]")I݀Q")IE")I݀9")I-")I݀!")I")I݀ 6X@`#|6aXv<`T'xA)]6kIkuA)]6k?kuA)]6k5kuA)]6k+kuA)]6k!kuA)]6kkuA)]6k kuA)]6kkL +m  h$})I]W })I]K })I]? })I]3 })I]' })I] })I] })I]L +-L3 +3 yXy< ym\|-?U1 YlpJ]jlNG?")B>yr!FfP=WpX 9H8&k%'Et%g EDaA}bk;L8sTZA;G uen^ 9: +g+dxxz0N=5F"i{~%f7mK_@ *q_22U,a&dTV/3]|>ww\@KcRzb#P$ :MQWIL #O JMVZ. +{q<"!SYX$+C3__CBM____C64__c64/soft80_cpeekc.sca65 V2.18 - Git cab4910a soft80_cpeekcsoft80_cpeekchar/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -26742,13 +30335,13 @@ CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline -screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER//home/hugg/compilers/cc65/asminc/longbranch.mac.size@sk@l1a@l2aa@l2b@backok@l2aa2@l2b2 @backokrevers@backerr@l1aa@l2bb@l1aa2@l2bb2CODERODATABSSDATAZEROPAGENULLUzna` ia S[ \ @Ŵ([([4faX % Q):,`0L y-Yl[jNB!FPX Hu&%'% EDaOA;LG  : -gn4xo"i5K q_rU,&dT]\@tb#.$ Q^I`s JeMV -R"!S$C3__CBM____C64__c64/soft80_cpeekcolor.sca65 V2.17 - Git 6c320f7soft80_cpeekcolor(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER$/home/pzp/cc65/asminc/longbranch.mac.size@sk@l1a@l2aa@l2b@backok@l2aa2@l2b2 @backokrevers@backerr@l1aa@l2bb@l1aa2@l2bb2CODERODATABSSDATAZEROPAGENULLUzna` ia 2$ % @ד]]2] % S)9)`,N< y-?YlpjNB!FP=X H&k%'% EDaA};L8ZG  9: +g+xz"i{~fmK q_2U,&dT]|>w\@b#$ QWI JMV +"!S$C3__CBM____C64__c64/soft80_cpeekcolor.sca65 V2.18 - Git cab4910asoft80_cpeekcolor/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -26772,20 +30365,20 @@ CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline -screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqW )@Ŵ([   +screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqW )@ד]   `  -      __CBM____C64__c64/soft80_cpeekrevers.sca65 V2.17 - Git 6c320f7soft80_cpeekcharsoft80_cpeekrevers.sizeCODERODATABSSDATAZEROPAGENULLUzna` i&*P ]`I_@Ŵ([ ([4faX jM<Ig gII8  N -NZ Z HHm d -d" 'P#b X -XV VYYz z ::5 5w&  h6hD{L - -,g5 ,ZVz `N`X`d= y--Yl0[jNG?")B>& !FPX 9CH8u&%6'E% EDaOA;3L14G .! : -gn4xo=5F"i75K *q(_rU,&dT],\@tb#.$/ :Q^I` #s J'eMBDV -R"!S$+C3__CBM____C64__c64/soft80_cpeeks.sca65 V2.17 - Git 6c320f7 soft80_cpeeks soft80_cpeekc soft80_kplotpopaxptr1ptr2(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +      __CBM____C64__c64/soft80_cpeekrevers.sca65 V2.18 - Git cab4910asoft80_cpeekcharsoft80_cpeekrevers.sizeCODERODATABSSDATAZEROPAGENULLUzna` i(+S `c6bb@ד] ]2] lM<Ii iHI5  M +M\ \ HHo f +f" &P#d Y +YV V[[z z 772 2w%  h3hB{L + +)i2 )\Vz bMbYbf9< y-?-Ylp0jNG?")B>& !FP=X 9CH8&k%6'E% EDaA};3L81Z4G .! 9: +g+xz=5F"i{~f7mK *q(_2U,&dT]|>,w\@b#$/ :QWI # J'MBDV +"!S$+C3__CBM____C64__c64/soft80_cpeeks.sca65 V2.18 - Git cab4910a soft80_cpeeks soft80_cpeekc soft80_kplotpopaxptr1ptr2/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -26809,54 +30402,54 @@ CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline -screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.size@lp@sk2@skCODERODATABSSDATAZEROPAGENULLUzna` i{SPS2 - e'Rf'@ŴfaXi([4faX H 4 -4h -L UL) -) 979 @SIi ) ? -g?P{::-) -ig;;`L - i@> NiZi(`)%)%)%)%)%)%)%)%LK -*K b -b -[)t[)t[)t[)t[)t[)t[)t[)tL -*i iiiXi iiiXi iiiXi iiiXi iiiXi iiiXi iiiXi iiL -*  - -        L -*  x 4F f!! 3 -3 HL -o -opRp))))))))L -*e)eeAeee)eeAeee)eeAeee)eeAeee)eeAeee)eeAeee)eeAeee)eeAe X` ] ] ] ] ] ] ] ]L -* - ] ] ] ] ] ] ] ]L5 -*5) -4E) -  -)+ +h# -#`  -\ Q)  -`) -G4G1) -  -RR -`  -\ - -`~ -0`| -|Mx)xx x@xxx)xx x7xxx)xx x.xxx)xx x%xxx)xx xxxx)xx xxxx)xx x -xxx)xx xx``d)lm)lm)lm)lm)lm)lm)lm)l` + - o|rr# ) 4 \ - M P9g'?#D'h ym\j-U -PYl0M][jlHNG?")oB>&ys!FPWX Hu&L%O6p'% EDaOtAbk;LAG e ^! : -gnqd4xxo 5 -"i%5K_[@ *q_rU,a&dTV],w\@cRKtvzb#.$/ uQ^I`#s Je`MBSVZ -{RQ"!SYX$+C3__CBM____C64__c64/soft80_cputc.sca65 V2.17 - Git 6c320f7soft80_cputcxy soft80_cputcsoft80_cputdirectsoft80_putcharsoft80_newline soft80_plotsoft80_checkchargotoxy soft80_kplotsoft80_internal_bgcolorsoft80_internal_cellcolorsoft80_internal_cursorxlsbtmp4tmp3(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.size@lp@sk2@skCODERODATABSSDATAZEROPAGENULLUzna` itSIL +h ''K('@ד]i]2] H 4 +4h +L TL( +( 979 @RIi ) ? +g?Pw::,) +ie;;`L + i@> NiYi(`)$)$)$)$)$)$)$)$LJ +*J _ +_ +Z)qZ)qZ)qZ)qZ)qZ)qZ)qZ)qL +*g gggWg gggWg gggWg gggWg gggWg gggWg gggWg ggL +*  + +        L +* x 4F d   3 +3 HL +l +lmRm))))))))L +*c)ccAccc)ccAccc)ccAccc)ccAccc)ccAccc)ccAccc)ccAccc)ccAc X` ]~ ]~ ]~ ]~ ]~ ]~ ]~ ]L +* + ] ] ] ] ] ] ] ]L5 +*5) +4E) +  +)* *f" +"`  +\ P)  +`) +G4G1) +  +QQ +`  +\ + +`{ +0`x +xMt)t|t t@ttt)t|t t7ttt)t|t t.ttt)t|t t%ttt)t|t tttt)t|t tttt)t|t t +ttt)t|t tt``a)ij)ij)ij)ij)ij)ij)ij)i`* + lxoo" ( 4 \ + M P9g&?#D&<h ym\j-?U -PYlp0M]jlHNG?")oB>&ys!FP=WX H&Lk%O6p'% EDatA}bk;L8ZAG e ^! 9: +gq+dxxz 5 +"i{~%fmK_[@ *q_2U,a&dTV]|>,ww\@cRKvzb#$/ uQWI# J`MBSVZ +{Q"!SYX$+C3__CBM____C64__c64/soft80_cputc.sca65 V2.18 - Git cab4910asoft80_cputcxy soft80_cputcsoft80_cputdirectsoft80_putcharsoft80_newline soft80_plotsoft80_checkchargotoxy soft80_kplotsoft80_internal_bgcolorsoft80_internal_cellcolorsoft80_internal_cursorxlsbtmp4tmp3/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -26882,21 +30475,21 @@ CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.sizeL1@L10@L3@L5@L4draw_spaceinvers_odd draw_backdraw_spaceinverssoft80_putcolordraw_space_odd draw_spaceremcolor@skpdraw_charinversdraw_char_evendraw_charinvers_odd@sk1@sk2@sk3@l2s@l1a@ischarCODERODATABSSDATAZEROPAGENULLUzna` i - * 7:-9@ŴfaX -([4faX NQ5J9 91 1\ p hh@' -  -Axf4XV -V)Z  - B -AB;X6[|L& -&E!rr`a 91,V,{&c y-Yl0[jHNG)B>& !FPX 9CH8u&L%6'E% EDaOA;3L1A4;G J$.! : -gnI4xo=5 -F"i%5K *q_rU,&dT]\@tb#.$/ Q^I` s J'eMDV -R<"!S$+C3__CBM____C64__c64/soft80_kclrscr.sca65 V2.17 - Git 6c320f7soft80_kclrscr soft80_kplotsoft80_internal_bgcolorsoft80_internal_cellcolorptr1(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG + * 7:9@ד] +]2] NQ5I6 6. .^ r jj@& +  +Axh4YV +V)\  + @ +A@8X3]|L% +%C!tt`c 6.)V){%e< y-?Ylp0jHNG)B>& !FP=X 9CH8&Lk%6'E% EDaA};3L81ZA4;G J$.! 9: +g+Ixz=5 +F"i{~%fmK *q_2U,&dT]|>w\@b#$/ QWI  J'MDV +<"!S$+C3__CBM____C64__c64/soft80_kclrscr.sca65 V2.18 - Git cab4910asoft80_kclrscr soft80_kplotsoft80_internal_bgcolorsoft80_internal_cellcolorptr1/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -26920,15 +30513,15 @@ CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline -screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.size@lp2@lp1@lp3clearCODERODATABSSDATAZEROPAGENULLUzna` i b@ŴfaX -([4faX ="6E5x.JHU4}y@g2y_)\w -wJ!}]}hRXTx7`3$)w:q y--Yl0[jN?)B> !FPX 9H8u&%6'% EDaOA;3L4G $.! : -gn4xo"i%75K q(_rU,&dT],2\@tb#.$/ Q^I` #s JeMV -R"!S$+C3__CBM____C64__c64/soft80_kplot.sca65 V2.17 - Git 6c320f7 soft80_kplotsoft80_internal_cursorxlsb(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.size@lp2@lp1@lp3clearCODERODATABSSDATAZEROPAGENULLUzna` i Mb@ד] +]2] ="6D2x+IHW4y@i2ya)^y +yJ!}_}hRXV{4`0#&y6q< y-?-Ylp0jN?)B> !FP=X 9H8&k%6'% EDaA};3L8Z4G $.! 9: +g+xz"i{~%f7mK q(_2U,&dT]|>,2w\@b#$/ QWI # JMV +"!S$+C3__CBM____C64__c64/soft80_kplot.sca65 V2.18 - Git cab4910a soft80_kplotsoft80_internal_cursorxlsb/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -26953,22 +30546,24 @@ CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.size@getpos soft80_init -conio_initCODERODATABSSDATAZEROPAGENULLUzna` ixN |UV@ŴfaXfaX # P`$%&'( ! !%#'   - " & $)__CBM____C64__c64/soft80_scrsize.sca65 V2.17 - Git 6c320f7soft80_screensizec64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline -screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.sizeCODERODATABSSDATAZEROPAGENULLUzna` i$ |}@ŴfaX ([4faX 8&/ -/ U -U  - f`] -]xx`%x"H4 -]O -OSs=yyh4XT`R Z]Ot6* y- -Yl0[jN)B& !FPX 9Hu&%6'% EDaOA;3L1A4;G  $ : -gn4xo 5 -"i%75K *q_rU,&dT],2\@tb#.$/ :Q^I`#s J'eMBV -R<"!S$+C3__CBM____C64__c64/soft80mono_cgetc.sca65 V2.17 - Git 6c320f7soft80mono_cgetcsoft80mono_internal_cellcolorsoft80mono_internal_cursorxlsbsoft80mono_internal_nibblecursortmp1(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +conio_initCODERODATABSSDATAZEROPAGENULLUzna` ixN |VW@ד]] # P`$%&'( ! !%#'   + " & $)__CBM____C64__c64/soft80_scrsize.sca65 V2.18 - Git cab4910asoft80_screensizec64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline +screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.sizeCODERODATABSSDATAZEROPAGENULLUzna` i, & +@ד] ];]2] 8&;e +e  +  + ` +//`xH4#y +yo]~ +~PFFhX`B ~y7< yV/-S?G'k - C0zN~3cB&;HA] !FP=X_C7+x8K|&IB6q% E-DaOA};a#3DL98p\ i1'M4;: U$.j6QTd9:g &84xz}= {5 +"X{%75b?Kf#m*$(F_ + U,!YdT>,]|>,22<E\@"tb.L$%l :Q@^Wy WP J'N MBZV= +wR<"!J+C__CBM____C64__c64/soft80mono_cgetc.sca65 V2.18 - Git cab4910asoft80mono_cgetcsoft80mono_internal_cellcolorsoft80mono_internal_cursorxlsbsoft80mono_internal_nibblecursortmp1$/home/pzp/cc65/asminc/cbm_kernal.incCINTIOINITRAMTASRESTORVECTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSECHKINCKOUTCHKOUTCLRCHCLRCHNBASINCHRINBSOUTCHROUTLOADSAVESETTIMRDTIMSTOPGETINCLALLUDTIMSCREENPLOTIOBASECLRSCRKBDREADNMIEXIT +UPDCRAMPTR/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -26993,25 +30588,25 @@ CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.size@L3 invertcursor@L1@invert@lp1soft80mono_init -conio_initCODERODATABSSDATAZEROPAGENULLUzna` i. xy@ŴfaX -([4faX A(/ /I - - - - - g -x_4#x -x$]]XSQ Q`Uy -y8 84 -4LV -VT q/Q8y4x6>t6t y- -Yl0[jN")B!FPX 9H8u&%6'% EDaOA;3L1A4;G .! : -gn4xo  -"i%75K@ *q(_rU,&dT],\@tb#.$ Q^I` #s J'eMV -R"!S$+C3__CBM____C64__c64/soft80mono_color.sca65 V2.17 - Git 6c320f7soft80mono_textcolorsoft80mono_bgcolorsoft80mono_internal_cellcolorsoft80mono_internal_bgcolortmp1(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +conio_initCODERODATABSSDATAZEROPAGENULLUzna` i.!BC@ד] +]2] A(, ,H + + + + + i +xa4#z +z$__XTQ Q`W| +|5 51 +1LX +XV q,Q5|1z6<t3t< y-? -Ylp0jN")B!FP=X 9H8&k%6'% EDaA};3L81ZA4;G .! 9: +g+xz  +"i{~%f7mK@ *q(_2U,&dT]|>,w\@b#$ QWI # J'MV +"!S$+C3__CBM____C64__c64/soft80mono_color.sca65 V2.18 - Git cab4910asoft80mono_textcolorsoft80mono_bgcolorsoft80mono_internal_cellcolorsoft80mono_internal_bgcolortmp1/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -27036,34 +30631,34 @@ CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.size mkcharcolor@lp1soft80mono_init -conio_initCODERODATABSSDATAZEROPAGENULLUzna` i/ - -4 -^A D m C @ŴfaX!([4faX I%d -dww  -)!)1 - - - -6 - 2 -2;h#sLu -uLGv`~~ xHH4Z+ -+ I P HP$ $S S  r C    +conio_initCODERODATABSSDATAZEROPAGENULLUzna` i3 + +5 +^F I W qH r@ד]!]2] I%c +cyy  +)!)1 + + + +5 + 2 +2;h#tLw +wIDx` xEH4X+ ++ I L HL$ $Q Q  s A    % - - - j | |@ @] -Q@3 -Q\Q3VKVhhX`NNNNNNNN N N(N(N0N0N8N8N@N@NHNHNPNPNXNXN`N`NhNhNpNpNxNxNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN N N(N(N0N0N8N8N)()P)x)))))@)h)))))0)X))))) )H)p)))       X@XXXX@XXXX@XXXX@XXXX@XXXX@XXXX((((((((((((((((((((((((( t  @S | $Pu q 0} -I2 &9UAh ym\|-U -PYl0M][jlHN")oB&!FfPWX 9CH8u~&L%O6p'E%g EDaOtAb;LT14;G e Jn$.^! : -gnqd4xo=  -F"i%75K_[@N q(_rU,ar&dT],2w\@cRKtvzb#.$/ :uQ^I`#s J'e`MBSDVZ -RQ<"!SYX$+C3__CBM____C64__c64/soft80mono_conio.sca65 V2.17 - Git 6c320f7soft80mono_initsoft80mono_shutdownsoft80mono_kclrscrsoft80_charsetsoft80mono_internal_bgcolorsoft80mono_internal_cellcolorsoft80mono_internal_cursorxlsbsoft80mono_internal_nibbleptr1ptr2ptr3(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG + + + i ~ ~= =[ +Q@3 +Q\Q3TKThfX`JJJJJJJJ J J(J(J0J0J8J8J@J@JHJHJPJPJXJXJ`J`JhJhJpJpJxJxJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ J J(J(J0J0J8J8J)()P)x)))))@)h)))))0)X))))) )H)p)))       V@VVVV@VVVV@VVVV@VVVV@VVVV@VVVV((((((((((((((((((((((((( v  =Q ~ $Lw r 0 +F2 &9S><h ym\|-?U -PYlp0M]jlHN")oB&!FfP=WX 9CH8~&Lk%O6p'E%g EDatA}b;L8T1Z4;G e Jn$.^! 9: +gq+dxz=  +F"i{~%f7mK_[@N q(_2U,ar&dT]|>,2ww\@cRKvzb#$/ :uQWI# J'`MBSDVZ +Q<"!SYX$+C3__CBM____C64__c64/soft80mono_conio.sca65 V2.18 - Git cab4910asoft80mono_initsoft80mono_shutdownsoft80mono_kclrscrsoft80_charsetsoft80mono_internal_bgcolorsoft80mono_internal_cellcolorsoft80mono_internal_cursorxlsbsoft80mono_internal_nibbleptr1ptr2ptr3/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -27087,13 +30682,13 @@ CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline -screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.sizesoft80mono_first_init@skp firstinit@l2@l1@l3soft80_tables_data_startsoft80_tables_data_endsoft80_bitmapxlo_datasoft80_bitmapxhi_datasoft80_vramlo_datasoft80_vramhi_datasoft80_bitmapylo_datasoft80_bitmapyhi_dataCODERODATABSSDATAZEROPAGENULLONCEINITUzna` iU  [M N @Ŵ([([4faX O`8.J y-Yl[jNB!FPX Hu&%'% EDaOA;LG  : -gn4xo"i5K q_rU,&dT]\@tb#.$ Q^I`s JeMV -R"!S$C3__CBM____C64__c64/soft80mono_cpeekcolor.sca65 V2.17 - Git 6c320f7soft80mono_cpeekcolor(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.sizesoft80mono_first_init@skp firstinit@l2@l1@l3soft80_tables_data_startsoft80_tables_data_endsoft80_bitmapxlo_datasoft80_bitmapxhi_datasoft80_vramlo_datasoft80_vramhi_datasoft80_bitmapylo_datasoft80_bitmapyhi_dataCODERODATABSSDATAZEROPAGENULLONCEINITUzna` iV :  @ד]]2] Q`7*L< y-?YlpjNB!FP=X H&k%'% EDaA};L8ZG  9: +g+xz"i{~fmK q_2U,&dT]|>w\@b#$ QWI JMV +"!S$C3__CBM____C64__c64/soft80mono_cpeekcolor.sca65 V2.18 - Git cab4910asoft80mono_cpeekcolor/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -27117,28 +30712,28 @@ CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline -screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.sizeCODERODATABSSDATAZEROPAGENULLUzna` iHCn bc@ŴfaX&([4faX jH  -h# -5 56L - 1~ @:i 2) 1 -Z1PXX]) - {iJ`(L - Fi@d ir-`7 xVH4 w)o -o -e, ,  -i z$z - S%E E QO Oi} 4 4h$$hyX` - K Q Z i m m>L -)aHG -O4mG,ERRo  Y -  JZ;1#h y\j|-U PYl][jlNG?")oB>y!FfPWX Hu}&L%O'%g EDaOAk;LTA4G e Jn$.^! : -gn4xo=5 -F"i%5K_[@N *q(_rU,&dTV],\@cRKtzb#.$/ Q~^I` s Je`MVZ -RQ"!SYX$+C3__CBM____C64__c64/soft80mono_cputc.sca65 V2.17 - Git 6c320f7soft80mono_cputcxysoft80mono_cputcsoft80mono_cputdirectsoft80mono_putcharsoft80mono_newlinesoft80mono_plotgotoxysoft80mono_kplotsoft80mono_internal_bgcolorsoft80mono_internal_cellcolorsoft80mono_internal_cursorxlsbsoft80mono_internal_nibbletmp4tmp3ptr2(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.sizeCODERODATABSSDATAZEROPAGENULLUzna` iICn y ,-@ד]&]2] kH  +h# +5 56L + 1 @9i 2) 1 +Z1PTT[) + |iH`(L + Ci@b iq-`7 xRH4 w)n +n +e, ,   +i {${ + P%B B NL Li 4 4g$$hzX` + I Q V i l l=L +)_ED + L4lD,BOOn  U +  JZ:1#<h y\j|-?U PYlp]jlNG?")oB>y!FfP=WX H}&Lk%O'%g EDaA}k;L8TZA4G e Jn$.^! 9: +g+xz=5 +F"i{~%fmK_[@N *q(_2U,&dTV]|>,w\@cRKzb#$/ Q~WI  J`MVZ +Q"!SYX$+C3__CBM____C64__c64/soft80mono_cputc.sca65 V2.18 - Git cab4910asoft80mono_cputcxysoft80mono_cputcsoft80mono_cputdirectsoft80mono_putcharsoft80mono_newlinesoft80mono_plotgotoxysoft80mono_kplotsoft80mono_internal_bgcolorsoft80mono_internal_cellcolorsoft80mono_internal_cursorxlsbsoft80mono_internal_nibbletmp4tmp3ptr2/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -27162,18 +30757,18 @@ CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline -screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.sizeL1@L10@L3@L4 chardatal chardatahdraw_charinversnibble@lp1@sk1 draw_backCODERODATABSSDATAZEROPAGENULLUzna` iH no@ŴfaX +screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.sizeL1@L10@L3@L4 chardatal chardatahdraw_charinversnibble@lp1@sk1 draw_backCODERODATABSSDATAZEROPAGENULLUzna` iH 78@ד] -([4faX  B+D6 6/ /T g __@z%x!4] -]PSu={{4Xr$L - v6/*]qZ y-Yl[jN?)B>& !FPX 9Hu&%6'% EDaOA;3L14G $.! : -gn4xo=5 -"i%75K *q_rU,&dT],2\@tb#.$ :Q^I` s J'eMV -R<"!S$+C3__CBM____C64__c64/soft80mono_kclrscr.sca65 V2.17 - Git 6c320f7soft80mono_kclrscrsoft80mono_kplotsoft80mono_internal_bgcolorsoft80mono_internal_cellcolorptr1(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +]2]  B+C3 3, ,V i aa@|$x!4_ +_PUu;~~1Xr#L + v3,'_q\< y-?YlpjN?)B>& !FP=X 9H&k%6'% EDaA};3L81Z4G $.! 9: +g+xz=5 +"i{~%f7mK *q_2U,&dT]|>,2w\@b#$ :QWI  J'MV +<"!S$+C3__CBM____C64__c64/soft80mono_kclrscr.sca65 V2.18 - Git cab4910asoft80mono_kclrscrsoft80mono_kplotsoft80mono_internal_bgcolorsoft80mono_internal_cellcolorptr1/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -27197,14 +30792,14 @@ CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline -screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.size@lp2@lp1@lp3@lp4CODERODATABSSDATAZEROPAGENULLUzna` iao {~}@ŴfaX([4faX .'?1x+DHO4vy@a2yY)Vq -qh{X`WLN&q5k y--Yl[jN)B !FPX Hu&%'% EDaOA;3L4G $.! : -gn4xo"i%5K q(_rU,&dT],\@tb#.$ Q^I` #s J'eMV -R"!S$+C3__CBM____C64__c64/soft80mono_kplot.sca65 V2.17 - Git 6c320f7soft80mono_kplotsoft80mono_internal_cursorxlsb(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.size@lp2@lp1@lp3@lp4CODERODATABSSDATAZEROPAGENULLUzna` iao {~trd}e@ד]]2] .'>.x(CHQ4zy@c2y[)Xs +shX`YLP#s1k< y-?-YlpjN)B !FP=X H&k%'% EDaA};3L8Z4G $.! 9: +g+xz"i{~%fmK q(_2U,&dT]|>,w\@b#$ QWI # J'MV +"!S$+C3__CBM____C64__c64/soft80mono_kplot.sca65 V2.18 - Git cab4910asoft80mono_kplotsoft80mono_internal_cursorxlsb/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -27229,7 +30824,7 @@ CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLYc64/soft80.incsoft80_lo_charsetsoft80_hi_charset soft80_vram soft80_colramsoft80_spriteblocksoft80_bitmapxlosoft80_bitmapxhi soft80_vramlo soft80_vramhisoft80_bitmapylosoft80_bitmapyhi soft80_bitmap charsperline screenrowsCH_ESCCH_HLINECH_CROSSCH_VLINECH_PICH_LTEE CH_URCORNER CH_LLCORNER CH_ULCORNERCH_BTEECH_TTEECH_RTEE CH_LRCORNER.size@getpossoft80mono_init -conio_initCODERODATABSSDATAZEROPAGENULLUzna` ix % N"#@ŴfaX faX+$ +conio_initCODERODATABSSDATAZEROPAGENULLUzna` ix % N@ד] ]+$    e         @@ -27239,7 +30834,7 @@ conio_initCODERODATABSSDATAZEROPAGENULLUzna` ix  L       -  -?) C6E34;$.5*(,2:D+__CBM____C64__common/sprintf.sca65 V2.17 - Git 6c320f7_sprintfpushaxaddyspdecsp4 _vsprintfspptr1,/home/hugg/compilers/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` ix % N@ŴfaX faX+$ +  -?) C6E34;$.5*(,2:D+__CBM____C64__common/sprintf.sca65 V2.18 - Git cab4910a_sprintfpushaxaddyspdecsp4 _vsprintfspptr1!/home/pzp/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` ix % N@ד] ]+$    e          @@ -27249,26 +30844,26 @@ conio_initCODERODATABSSDATAZEROPAGENULLUzna` ix  L     -   PHG? 9C8L61A;57@(R:'BQ__CBM____C64__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 +   PHG? 9C8L61A;57@(R:'BQ__CBM____C64__common/sscanf.sca65 V2.18 - Git cab4910a_sscanfaddyspdecsp4_vsscanfspptr1!/home/pzp/cc65/asminc/generic.mac ParamSize.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` iq6 BE`*D+@ד]q H        h  L -          __CBM____C64__runtime/staspidx.sca65 V2.17 - Git 6c320f7staspidxincsp2sptmp1ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ip=  ^'(@ŴfaX\  -  __CBM____C64__ c64/status.sca65 V2.17 - Git 6c320f7STCODERODATABSSDATAZEROPAGENULLUzna` iqp GPx@ŴfaX9  +          __CBM____C64__runtime/staspidx.sca65 V2.18 - Git cab4910astaspidxincsp2sptmp1ptr1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ip=  _()@ד]\  +  __CBM____C64__ c64/status.sca65 V2.18 - Git cab4910aSTCODERODATABSSDATAZEROPAGENULLUzna` iqp GPy@ד]9    H   h`           -__CBM____C64__runtime/staxsp.sca65 V2.17 - Git 6c320f7staxyspstax0spsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix9W cf>e@Ŵ([ -faX H   &   ' '"h  L# +__CBM____C64__runtime/staxsp.sca65 V2.18 - Git cab4910astaxyspstax0spsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix9W cf>e@ד] +] H   &   ' '"h  L# # !"#  '  #+"  ! -%  #'$__CBM____C64__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*GJe/I0@ŴfaXq +%  #'$__CBM____C64__runtime/staxspi.sca65 V2.18 - Git cab4910a staxspidxincsp2sptmp1ptr1/home/pzp/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*GJe0I1@ד]q  H       h`             -__CBM____C64__runtime/steaxsp.sca65 V2.17 - Git 6c320f7steaxyspsteax0spspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqY- @Ŵ([ "!      +__CBM____C64__runtime/steaxsp.sca65 V2.18 - Git cab4910asteaxyspsteax0spspsreg.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqY- @ד] "!                   `      " ! -% #__CBM____C64__runtime/steaxspi.sca65 V2.17 - Git 6c320f7 -steaxspidxpopptr1sregptr1tmp1tmp2tmp3.sizeCODERODATABSSDATAZEROPAGENULLUzna` i0I)rudt@ŴfaX faX faX()!8 BB`' +% #__CBM____C64__runtime/steaxspi.sca65 V2.18 - Git cab4910a +steaxspidxpopptr1sregptr1tmp1tmp2tmp3.sizeCODERODATABSSDATAZEROPAGENULLUzna` i0I)rudt@ד] ] ]()!8 BB`'  % %  `5 A A44`>D D@ @* @@ -27279,37 +30874,37 @@ steaxspidxpopptr1sregptr1tmp1tmp2tmp3.sizeCODERODATABSSDATAZEROPAGE , I i7 7` /   %A@9; -3)#?$8$G \-P0lH)o&Ob;J$!I=%[*(ar,2cRK/:#' SDZQ<YX0__CBM____C64__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. ( (  +3)#?$8$G \-P0lH)o&Ob;J$!I=%[*(ar,2cRK/:#' SDZQ<YX0__CBM____C64__runtime/stkchk.sca65 V2.18 - Git cab4910astkchkcstkchk +initstkchk __STACKSIZE__pusha0_exitsp!/home/pzp/cc65/asminc/generic.mac/home/pzp/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# @ד] +] "1. ( (   ! !  11- -  % %  # #5&&  ,,' '`#$%&' '!- (% 6-)  3$.! -% *(,2/ #'+(__CBM____C64__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} BC@Ŵ([ faX!'$  & +% *(,2/ #'+(__CBM____C64__common/strcat.sca65 V2.18 - Git cab4910a_strcatpopaxptr1ptr2tmp3/home/pzp/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} 89@ד] ]!'$  & &   + +' ' - -**    1 1$`%`"#$%&' -1 &2-&  314$ -% *,2 +'__CBM____C64__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 {~t~}@Ŵ([!     +% *,2 +'__CBM____C64__common/strchr.sca65 V2.18 - Git cab4910a_strchrpopaxptr1tmp1/home/pzp/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 {~t}@ד]!               ``  -    !  __CBM____C64__common/strcmp.sca65 V2.17 - Git 6c320f7_strcmppopptr1ptr1ptr2.sizeloopL1L3L2CODERODATABSSDATAZEROPAGENULLUzna` iq= pHI@ŴfaX  +    !  __CBM____C64__common/strcmp.sca65 V2.18 - Git cab4910a_strcmppopptr1ptr1ptr2.sizeloopL1L3L2CODERODATABSSDATAZEROPAGENULLUzna` iq= qIJ@ד]      - __CBM____C64__common/strcoll.sca65 V2.17 - Git 6c320f7_strcoll_strcmpCODERODATABSSDATAZEROPAGENULLUzna` iqXr ~ors@ŴfaX      + __CBM____C64__common/strcoll.sca65 V2.18 - Git cab4910a_strcoll_strcmpCODERODATABSSDATAZEROPAGENULLUzna` iqXr ~ost@ד]              -    `       __CBM____C64__common/strcpy.sca65 V2.17 - Git 6c320f7_strcpypopaxptr1ptr2.sizeL1L9CODERODATABSSDATAZEROPAGENULLUzna` iq* b*+@Ŵ([ -)  +    `       __CBM____C64__common/strcpy.sca65 V2.18 - Git cab4910a_strcpypopaxptr1ptr2.sizeL1L9CODERODATABSSDATAZEROPAGENULLUzna` iq* b+,@ד] -)             `            !-0")& 314 .!  -%*(,2 #'__CBM____C64__common/strcspn.sca65 V2.17 - Git 6c320f7_strcspnpopptr1_strlenptr1ptr2tmp1tmp2.sizeloadCharleaveadvancecheck checkNextendOfTestCharsCODERODATABSSDATAZEROPAGENULLUzna` i48 -'@ŴfaXfaX"faX&6.H& 4 +%*(,2 #'__CBM____C64__common/strcspn.sca65 V2.18 - Git cab4910a_strcspnpopptr1_strlenptr1ptr2tmp1tmp2.sizeloadCharleaveadvancecheck checkNextendOfTestCharsCODERODATABSSDATAZEROPAGENULLUzna` i48 -'@ד]]"]&6.H& 4 4! h51    i(  /    :" "  '  $$, , L @@ -27319,8 +30914,8 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeLoopEOSF 6'()*+     #6 #4,"<U -M?")>  8LE3A4 $.= -F@ RK/ #SQ<,__CBM____C64__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 ?B{A@ŴfaXfaX u% +F@ RK/ #SQ<,__CBM____C64__common/strdup.sca65 V2.18 - Git cab4910asptmp1ptr4pushaxdecsp4incsp4_strlen_malloc_memcpy_strdup/home/pzp/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/pzp/cc65/asminc/generic.mac.size@L1 OutOfMemoryCODERODATABSSDATAZEROPAGENULLUzna` ix$3 ?BqA@ד]] u%     @@ -27329,8 +30924,8 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510,/home/hugg/compi ' '! !`&'()*$ &'!* ! - "   #+__CBM____C64__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` kz_**T--<-?-^?lC>-mC@ŴE*[gfaX"    + "   #+__CBM____C64__common/strerror.sca65 V2.18 - Git cab4910a _strerror __sys_errlist/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX.size@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` kz_**T--<-?-^?cC>-dC@ד]g]"       @@ -27683,33 +31278,33 @@ __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEB r$ //nn""""""""""""""""""""""""""""""""""""""""4466}6{6z6Xy6x6_fxt6s6r6iRq6p6}o6)>*.n6P6aO6 #/N6(?Z![r :M6J6;<;Bye cU@ |O m\j|U -P0M]lHG?")o>&ysW9C8}LO6pEtk3T1A4;eJn$.!i5qI1x= 5 -F%7 [@N*(r3V,2 4wRKvz/:u #'BSDZ{Q<YX.+__CBM____C64__../libwrk/c64/strftime.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_strlen_memcpy_sprintf__tz _strftimeL00DA.sizeL006BL0111L0062L00B2L000DL0027L0019L0013L002BL000FL002DL0017L0029L000BL0025L0011L0007L0009L001BL001DL007BL0083L011AL0021L0096L009DL00A5L00F7L00F0L00CAL00D2L0074L00E9L0023L001FL00BBL0103L010AL008FL008CL0100L0006L0016L002FL0030L0031L0033L0034pushaxL0037L003Bincsp8ldaxyspincax1staxyspL0133L0045L0135L00C7L00CFL00D7L00E6L00EDL00F4L00FBL0107L010EL0117L0055L005AL005FL0068L0071L0078L0080L0087L0093L009AL00A2L00AFL00B8L00BFL0136L004Bldax0spldaxidxaslax1ldaxipushwidxtosmoda0incaxyL008BL008DL0090pushwincax7tossubaxtosdiva0L00AAdecax1L00ACL00C2L00C4L00FFL0101L0104pushwyspaddeqyspCODERODATABSSDATAZEROPAGENULLUzna` ixc%3\@Ŵ([ faX,!?6    +F%7 [@N*(r3V,2 4wRKvz/:u #'BSDZ{Q<YX.+__CBM____C64__../libwrk/c64/strftime.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_strlen_memcpy_sprintf__tz _strftimeL00DA.sizeL006BL0111L0062L00B2L000DL0027L0019L0013L002BL000FL002DL0017L0029L000BL0025L0011L0007L0009L001BL001DL007BL0083L011AL0021L0096L009DL00A5L00F7L00F0L00CAL00D2L0074L00E9L0023L001FL00BBL0103L010AL008FL008CL0100L0006L0016L002FL0030L0031L0033L0034pushaxL0037L003Bincsp8ldaxyspincax1staxyspL0133L0045L0135L00C7L00CFL00D7L00E6L00EDL00F4L00FBL0107L010EL0117L0055L005AL005FL0068L0071L0078L0080L0087L0093L009AL00A2L00AFL00B8L00BFL0136L004Bldax0spldaxidxaslax1ldaxipushwidxtosmoda0incaxyL008BL008DL0090pushwincax7tossubaxtosdiva0L00AAdecax1L00ACL00C2L00C4L00FFL0101L0104pushwyspaddeqyspCODERODATABSSDATAZEROPAGENULLUzna` ixc%3R@ד] ],!?6     $3 3)00+i4 4  1 1)"" 2i% 7 7( (.   ) )  `#`/"#$%& 47 ) !31*8 -0")& 9631$.! 5 -%7(,2/:#'+'__CBM____C64__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  -* 69Vw8@Ŵ([x +%7(,2/:#'+'__CBM____C64__common/stricmp.sca65 V2.18 - Git cab4910a_stricmp _strcasecmppopptr1__ctypeptr1ptr2tmp1/home/pzp/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  +* 69Vx8@ד]x         `     -   __CBM____C64__common/strlen.sca65 V2.17 - Git 6c320f7_strlenptr2.sizeL1L9CODERODATABSSDATAZEROPAGENULLUzna` ix J@ŴfaX faX($     &# # +   __CBM____C64__common/strlen.sca65 V2.18 - Git cab4910a_strlenptr2.sizeL1L9CODERODATABSSDATAZEROPAGENULLUzna` ix @@ד] ]($     &# # )''"8 $ $  %%* * ` !" -*  #$ + -0"& $!  %, #'+#__CBM____C64__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 qtAmsn@Ŵ([ - faX~(JCI1 1 I   +*  #$ + -0"& $!  %, #'+#__CBM____C64__common/strlower.sca65 V2.18 - Git cab4910a _strlower_strlwrpopax__ctypeptr1ptr2/home/pzp/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 qtAcsd@ד] + ]~(JCI1 1 I     + +9 9 6: : )) 88. .  / /0 0%% **  5 5>># #  ; ; ' '`)*+,- & &10 &+9' &:./ ;&#$"@G?)>&  9C86E14;$= 5 -F%7 (,2:'D<.__CBM____C64__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& st@Ŵ([#92I  I" "  +F%7 (,2:'D<.__CBM____C64__common/strncat.sca65 V2.18 - Git cab4910a_strncatpopaxpopptr1ptr1ptr2ptr3tmp1tmp2/home/pzp/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& tu@ד]#92I  I" "     $ $! !       % %#` ` ` -"!% $&-0MHG C8LO6A4 J.I=57(,/'B<__CBM____C64__common/strncmp.sca65 V2.17 - Git 6c320f7_strncmppopaxpopptr1ptr1ptr2ptr3.sizeLoopIncHiCompNotEqualEqual1EqualL1CODERODATABSSDATAZEROPAGENULLUzna` iq6: FI!H@Ŵ([ \D?I #I   +"!% $&-0MHG C8LO6A4 J.I=57(,/'B<__CBM____C64__common/strncmp.sca65 V2.18 - Git cab4910a_strncmppopaxpopptr1ptr1ptr2ptr3.sizeLoopIncHiCompNotEqualEqual1EqualL1CODERODATABSSDATAZEROPAGENULLUzna` iq6: FI!H@ד] \D?I #I         $ $) )&& ' '  ( (! ! % %" " * * `     ) - $  '!%"* ( D+ -0")>& C831$.= %7@(2/ #'<__CBM____C64__common/strncpy.sca65 V2.17 - Git 6c320f7_strncpypopaxpopptr1ptr1ptr2tmp1tmp2tmp3L1.sizeL2L9L5L3L6L4CODERODATABSSDATAZEROPAGENULLUzna` ixN4Z{|@Ŵ([faX&WJI< :I6  9 + $  '!%"* ( D+ -0")>& C831$.= %7@(2/ #'<__CBM____C64__common/strncpy.sca65 V2.18 - Git cab4910a_strncpypopaxpopptr1ptr1ptr2tmp1tmp2tmp3L1.sizeL2L9L5L3L6L4CODERODATABSSDATAZEROPAGENULLUzna` ixN4Z{qr@ד]]&WJI< :I6  9 9# #  ; ;D D303 4 4)  (8+ ! !A' @@ -27717,76 +31312,75 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeL1L2L3L    / /  B@`-==1`&`"'()*+  D # !/ )4');)9%5EU P0MHG?"> 9C8LO6Eb3T1A4;e! d=5 -F7_[@Na,2 #`BZ<Y+,__CBM____C64__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= Z[@ŴfaX faX 0.  H  I      +F7_[@Na,2 #`BZ<Y+,__CBM____C64__common/strnicmp.sca65 V2.18 - Git cab4910a _strnicmp _strncasecmppopaxpopptr1__ctypeptr1ptr2ptr3tmp1/home/pzp/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= PQ@ד] ] 0.  H  I         # q      i   `   !$-0"& 9861;$.!= -%7,2/: '+__CBM____C64__common/stroserr.sca65 V2.17 - Git 6c320f7 __stroserror__sys_oserrlistptr1tmp1,/home/hugg/compilers/cc65/asminc/generic.mac.size@L1DoneCODERODATABSSDATAZEROPAGENULLUzna` iqB( '(@Ŵ([  2/     +%7,2/: '+__CBM____C64__common/stroserr.sca65 V2.18 - Git cab4910a __stroserror__sys_oserrlistptr1tmp1!/home/pzp/cc65/asminc/generic.mac.size@L1DoneCODERODATABSSDATAZEROPAGENULLUzna` iqB( ()@ד]  2/                      ``    ! -)&3.! 5 -%(/ '__CBM____C64__common/strpbrk.sca65 V2.17 - Git 6c320f7_strpbrkpopaxptr1ptr2tmp2tmp3.sizeL1L9L3L4L6CODERODATABSSDATAZEROPAGENULLUzna` kzYS& 36n1 -52 -@ŴE*[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/0*&u"&jS&b&Z-H@ - DQi K8:,9mU k -"1d4p0IMtKh*xhm\j|U -P0M]lHG?o>&ysfW9C8}LO6pEgtbk3T1A4;eJn.^!iqIdx= 5 -F%7_[@N(arV,2wcRKvz/:u~ '`BSDZ{Q<YX1__CBM____C64__../libwrk/c64/strqtok.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_strchr_strqtokL003E.sizeL0004L0005L0002L0003pushaxregswap2L0011L004CL000FL0016L0001pushw0spL001DL0022L0020L004BL0036L002EL004Eincsp4CODERODATABSSDATAZEROPAGENULLUzna` iqk  '@Ŵ([$"   +%(/ '__CBM____C64__common/strpbrk.sca65 V2.18 - Git cab4910a_strpbrkpopaxptr1ptr2tmp2tmp3.sizeL1L9L3L4L6CODERODATABSSDATAZEROPAGENULLUzna` kzqS> KN +M +@ؓ]]/ R +R+% h +h? ?y yK#K + W +W= =p +p"&ssL1 +1O +OLG +GA Aee- -  +X/ / + x d +dq q; ; + +] +]"$~7~} }t +tV V +L +bC CTTo o[6 6c +c"H@@ " +"2 +2 E +E 7 7 +B<BL +0 0FF\ \ 5 +5i if +fb bJ +J g g u +u", j +j  8 8v4 +4 IM +M HL +r S Sn nPP: : z +zU U| +| +w +wH*!a a{ {(' '> >hILl +l#0 ZY_1<992 +D34.3l&3" 3h3RuLdEj + q;7 N?y=A-/}VCo60\ibg 8Sn:U{>Na'.hm\j|U P0M]lHG?)o>&ysfW9C8}LOpEgtbk3T1A;eJn^!iqIdx=  +F%7_[@N*(arV,2wcRKvz:u~ '`BSDZ{Q<YX+5__CBM____C64__../libwrk/c64/strqtok.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_strchr_strqtokL0044.sizeL0004L0005L001FL000FL0033L0031L0002L0003pushaxregswap2L0012L0054L0010L0017L0001pushw0spL001EL0024L0022L0053L003CL0030L0056incsp4CODERODATABSSDATAZEROPAGENULLUzna` iqk  '@ؓ]$"                `   ")  !  -( #'__CBM____C64__common/strrchr.sca65 V2.17 - Git 6c320f7_strrchrpopaxptr1tmp1tmp2.sizetestCharfinishednextChar charFoundCODERODATABSSDATAZEROPAGENULLUzna` iq* b'(@Ŵ([ -)  +( #'__CBM____C64__common/strrchr.sca65 V2.18 - Git cab4910a_strrchrpopaxptr1tmp1tmp2.sizetestCharfinishednextChar charFoundCODERODATABSSDATAZEROPAGENULLUzna` iq* b()@ؓ] -)                 `         !-0")& 34 .!  -%*(,2/ #'__CBM____C64__common/strspn.sca65 V2.17 - Git 6c320f7_strspnpopptr1_strlenptr1ptr2tmp1tmp2.sizeloadCharleaveadvancecheck checkNext foundTestCharCODERODATABSSDATAZEROPAGENULLUzna` iqs6 jk@Ŵ([RN      +%*(,2/ #'__CBM____C64__common/strspn.sca65 V2.18 - Git cab4910a_strspnpopptr1_strlenptr1ptr2tmp1tmp2.sizeloadCharleaveadvancecheck checkNext foundTestCharCODERODATABSSDATAZEROPAGENULLUzna` iqs6 kl@ؓ]RN       <& & ; ..* ++,#e " "22$ $ % %    ) )1 1  ! ! --( (  `'/`  &   )  1!  -"$%( 3 MG?")> L63T1A4; != 5F_@*(,2RK: #'BSQ<+__CBM____C64__common/strstr.sca65 V2.17 - Git 6c320f7_strstrpopptr1ptr1ptr2ptr3ptr4tmp1.size@Found@L1 @NotFound@L2@L3@L4@L5CODERODATABSSDATAZEROPAGENULLUzna` iq= tGH@ŴfaX  -   __CBM____C64__common/strtoimax.sca65 V2.17 - Git 6c320f7_strtol -_strtoimaxCODERODATABSSDATAZEROPAGENULLUzna` kzYa4 AD MC@ŴE*[faX, ^ +"$%( 3 MG?")> L63T1A4; != 5F_@*(,2RK: #'BSQ<+__CBM____C64__common/strstr.sca65 V2.18 - Git cab4910a_strstrpopptr1ptr1ptr2ptr3ptr4tmp1.size@Found@L1 @NotFound@L2@L3@L4@L5CODERODATABSSDATAZEROPAGENULLUzna` iq= uHI@ؓ]  +   __CBM____C64__common/strtoimax.sca65 V2.18 - Git cab4910a_strtol +_strtoimaxCODERODATABSSDATAZEROPAGENULLUzna` kzYa4 AD MC@ؓ]], ^ ^Y6   Z Z3  3A  A @@ -27827,7 +31421,7 @@ _strtoimaxCODERODATABSSDATAZEROPAGENULLUzna` kzY 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+2__CBM____C64__../libwrk/c64/strtok.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_strchr_strtok_Last.sizepushaxregswap2decsp3L0003L0039L0002L000BL0017L003FpushwyspL0018stax0spL0021L001FL0040L0037L002CL0030incax1ldax0spincsp7CODERODATABSSDATAZEROPAGENULLUzna` kz/ 6DGF@ŴE*[(faX N  +F%7_[@N*(arV,2wcRKvz/:u~ #'`BSDZ{Q<YX+2__CBM____C64__../libwrk/c64/strtok.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_strchr_strtok_Last.sizepushaxregswap2decsp3L0003L0039L0002L000BL0017L003FpushwyspL0018stax0spL0021L001FL0040L0037L002CL0030incax1ldax0spincsp7CODERODATABSSDATAZEROPAGENULLUzna` kz/ 6DGF@ؓ](] N       9     ? @@ -27903,11 +31497,11 @@ _strtoimaxCODERODATABSSDATAZEROPAGENULLUzna` kzY OPQRSMLDCBA3><;b5>43261 |0Z#+:?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+T__CBM____C64__../libwrk/c64/strtol.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_isdigit_islower_isspace_isupper +F%7_ [@N*(arV,2 wcRKvz/:u~ #'`BSDZ{Q<YX+T__CBM____C64__../libwrk/c64/strtol.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_isdigit_islower_isspace_isupper __seterrno_strtolpushaxldaxysppushl0pushapush0decsp6L000AL0008.sizeL0017L0011L0091L0090L0020L008EL008FL0025L00A2staxyspL002FL0096L003BL00AAsteaxyspldeaxysppusheaxaxlong tosumodeax tosudiveaxL0047L004BL00A8L0051L0048decaxy tosugteaxL0062toseqeaxL0061L0069 -tosumuleaxaxulong tosaddeaxaddeqyspL0078L0073L00A5L0083L007FL0088L0085negeaxaddyspCODERODATABSSDATAZEROPAGENULLUzna` kzm mT b e :%d &@ŴE*[%faX6 K  +tosumuleaxaxulong tosaddeaxaddeqyspL0078L0073L00A5L0083L007FL0088L0085negeaxaddyspCODERODATABSSDATAZEROPAGENULLUzna` kzm mT b e :}d @ؓ]%]6 K       6     < @@ -27979,16 +31573,16 @@ tosumuleaxaxulong tosaddeaxaddeqyspL0078L0073L00A5L0083L007FL0088L0085 LMNOPJfIfBfAf@f?f><f:f9f^b8f2f1f0f/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+Q__CBM____C64__../libwrk/c64/strtoul.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_isdigit_islower_isspace_isupper +F%7_ [@N*(arV,2 wcRKvz/:u~ #'`BSDZ{Q<YX+Q__CBM____C64__../libwrk/c64/strtoul.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_isdigit_islower_isspace_isupper __seterrno_strtoulpushaxldaxysppushl0pushapush0decsp6L000AL0008.sizeL0017L0011L0083L0082L0020L0080L0081L0025L0094staxyspL002FL0088pusheaxaxlong tosumodeax tosudiveaxsteaxyspL003FL0043L0099L0049L0040decaxyldeaxysp tosugteaxL005AtoseqeaxL0059L0061 -tosumuleaxaxulong tosaddeaxaddeqyspL0070L006BL0096L0073L007BL0078negeaxaddyspCODERODATABSSDATAZEROPAGENULLUzna` iq= uHI@ŴfaX  -   __CBM____C64__common/strtoumax.sca65 V2.17 - Git 6c320f7_strtoul -_strtoumaxCODERODATABSSDATAZEROPAGENULLUzna` ix J@ŴfaX faX($     &# # +tosumuleaxaxulong tosaddeaxaddeqyspL0070L006BL0096L0073L007BL0078negeaxaddyspCODERODATABSSDATAZEROPAGENULLUzna` iq= vIJ@ؓ]  +   __CBM____C64__common/strtoumax.sca65 V2.18 - Git cab4910a_strtoul +_strtoumaxCODERODATABSSDATAZEROPAGENULLUzna` ix @@ؓ] ]($     &# # )''"i $ $  %%* * ` !" -*  #$ + -0"& $!  %, #'+#__CBM____C64__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@ŴE*[faXn   +*  #$ + -0"& $!  %, #'+#__CBM____C64__common/strupper.sca65 V2.18 - Git cab4910a _strupper_struprpopax__ctypeptr1ptr2/home/pzp/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@ؓ]]n      @@ -28000,18 +31594,18 @@ _strtoumaxCODERODATABSSDATAZEROPAGENULLUzna` ix   L        ")&$!  -%( #!__CBM____C64__../libwrk/c64/strxfrm.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_strlen_strncpy_strxfrmpushaxpushwyspldaxyspincsp6.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix 476@ŴfaX faXZ8I#q  HIq$ $hL -  !" $ ("  !  ##__CBM____C64__ 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 +%( #!__CBM____C64__../libwrk/c64/strxfrm.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_strlen_strncpy_strxfrmpushaxpushwyspldaxyspincsp6.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix 476@ؓ] ]Z8I#q  HIq$ $hL +  !" $ ("  !  ##__CBM____C64__ runtime/sub.sca65 V2.18 - Git cab4910atossuba0tossubaxaddysp1sp/home/pzp/cc65/asminc/cpu.mac CPU_ISET_NONE CPU_ISET_6502CPU_ISET_6502XCPU_ISET_65SC02CPU_ISET_65C02CPU_ISET_65816CPU_ISET_SWEET16CPU_ISET_HUC6280 CPU_ISET_4510CPU_NONECPU_6502 CPU_6502X CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  -25e{4@ŴfaXc 8Iq   HIq   h` +25e|4@ؓ]c 8Iq   HIq   h`              -__CBM____C64__runtime/subeqsp.sca65 V2.17 - Git 6c320f7subeq0spsubeqyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPs@ŴfaXI   I8 e    ` +__CBM____C64__runtime/subeqsp.sca65 V2.18 - Git cab4910asubeq0spsubeqyspsp.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq  GPt@ؓ]I   I8 e    `       -  __CBM____C64__runtime/subysp.sca65 V2.17 - Git 6c320f7subyspsp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix0C ORQ@Ŵ([faX        H" " h`  ! +  __CBM____C64__runtime/subysp.sca65 V2.18 - Git cab4910asubyspsp@L1.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix0C ORwQ@ؓ]]        H" " h`  ! " - &  !   #"__CBM____C64__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` iq1+ 7:+9@ŴfaXRH>   ) &1& " + &  !   #"__CBM____C64__runtime/swap.sca65 V2.18 - Git cab4910aswapstkspptr4/home/pzp/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` iq1+ 7:+9@ؓ]RH>   ) &1& " >",  ''  >!  ( (/   @@ -28024,13 +31618,13 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODAT  `#808.`- ,` (        + >!0U-M]?">& W98E34J$.! -F%[@V,K/:#'SDZYX+__CBM____C64__cbm/syschdir.sca65 V2.17 - Git 6c320f7 -__syschdirdiskinitfnunitcurunitinitcwdptr1tmp1tmp2errgetdigitinit.sizedone@L0CODERODATABSSDATAZEROPAGENULLUzna` iq` 3 @ŴfaX) +F%[@V,K/:#'SDZYX+__CBM____C64__cbm/syschdir.sca65 V2.18 - Git cab4910a +__syschdirdiskinitfnunitcurunitinitcwdptr1tmp1tmp2errgetdigitinit.sizedone@L0CODERODATABSSDATAZEROPAGENULLUzna` iq` 3 @ؓ])   L `     -__CBM____C64__cbm/sysremove.sca65 V2.17 - Git 6c320f7 __sysremovefnparsescratcherr.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqK8 $  -@Ŵ([ +  +__CBM____C64__cbm/sysremove.sca65 V2.18 - Git cab4910a __sysremovefnparsescratcherr.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqK8 $ + @ؓ] +  %=      @@ -28042,55 +31636,16 @@ __syschdirdiskinitfnunitcurunitinitcwdptr1tmp1tmp2errgetdigitinit.siz   h`      +   -0"& 64 $. -(2/ #'__CBM____C64__cbm/sysrename.sca65 V2.17 - Git 6c320f7 __sysrenamefnparsefnadd fnparsenameopencmdchannelclosecmdchannelwritefndiskcmd readdiskerrorpopptr1fncmdfnunitptr1done.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz# /2[1@ŴE*[faX]  +(2/ #'__CBM____C64__cbm/sysrename.sca65 V2.18 - Git cab4910a __sysrenamefnparsefnadd fnparsenameopencmdchannelclosecmdchannelwritefndiskcmd readdiskerrorpopptr1fncmdfnunitptr1done.sizeCODERODATABSSDATAZEROPAGENULLUzna` kz# /2[1@ؓ]]]      L L     "&!  -% #__CBM____C64__../libwrk/c64/system.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac_systempushaxL0002incsp2.sizeCODERODATABSSDATAZEROPAGENULLUzna` i=*   @ŴfaXfaX([4faXG@1 )i } -.}( -( - w -.w -- -  -. -)) H IL -)m m)gJp JPJeC Ce= =`C F|z$$ " -"uu  -CI M`A_C_m=A"i@ \V/-SG[POCe0M]^HG 3"))&;HA]49_7x8K`&ILtB(O6q%o -a3D8\i1M4R:UJr$jQ.^!Tdg +Iu5FXn%7b_[N**s(F ,a1Y,,2EK.L$/l:@y #5P 'N `SD0Z -Q<"!JY+__CBM____C64__ c64/systime.sca65 V2.17 - Git 6c320f7)/home/hugg/compilers/cc65/asminc/time.inctmtm_sec.sizetm_mintm_hourtm_mdaytm_montm_yeartm_wdaytm_ydaytm_isdst __systime_mktime(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG -CURS_BLINK CURS_CHAR -CURS_STATE -SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC -VIC_SPR0_X -VIC_SPR0_Y -VIC_SPR1_X -VIC_SPR1_Y -VIC_SPR2_X -VIC_SPR2_Y -VIC_SPR3_X -VIC_SPR3_Y -VIC_SPR4_X -VIC_SPR4_Y -VIC_SPR5_X -VIC_SPR5_Y -VIC_SPR6_X -VIC_SPR6_Y -VIC_SPR7_X -VIC_SPR7_Y VIC_SPR_HI_X VIC_SPR_ENA VIC_SPR_EXP_Y VIC_SPR_EXP_XVIC_SPR_MCOLORVIC_SPR_BG_PRIOVIC_SPR_MCOLOR0VIC_SPR_MCOLOR1VIC_SPR0_COLORVIC_SPR1_COLORVIC_SPR2_COLORVIC_SPR3_COLORVIC_SPR4_COLORVIC_SPR5_COLORVIC_SPR6_COLORVIC_SPR7_COLOR VIC_CTRL1 VIC_CTRL2 VIC_HLINE -VIC_LPEN_X -VIC_LPEN_Y VIC_VIDEO_ADRVIC_IRRVIC_IMRVIC_BORDERCOLOR VIC_BG_COLOR0 VIC_BG_COLOR1 VIC_BG_COLOR2 VIC_BG_COLOR3 VIC_KBD_128 VIC_CLK_128SIDSID_S1LoSID_S1Hi SID_PB1Lo SID_PB1HiSID_Ctl1SID_AD1SID_SUR1SID_S2LoSID_S2Hi SID_PB2Lo SID_PB2HiSID_Ctl2SID_AD2SID_SUR2SID_S3LoSID_S3Hi SID_PB3Lo SID_PB3HiSID_Ctl3SID_AD3SID_SUR3 SID_FltLo SID_FltHi -SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DATACIA1CIA1_PRACIA1_PRB CIA1_DDRA CIA1_DDRBCIA1_TACIA1_TB -CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN -CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB -CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY+/home/hugg/compilers/cc65/asminc/get_tv.incTVNTSCPALOTHER_get_tv initsystimetmp1tmp2 _get_ostypeAMBCD2decTM@60HzCODERODATABSSDATAZEROPAGENULLONCEUzna` iqLc~@ŴfaX O - CC65 -3 . 1 0 OMMODORE 64     $! '__CBM____C64__c64/sysuname.sca65 V2.17 - Git 6c320f7 -__sysunameutsdatautscopy.sizeCODERODATABSSDATAZEROPAGENULLUzna` i0 ;>ZC=D@ŴfaXfaXfaXi#        `$%&'(   ""     # )__CBM____C64__ cbm/telldir.sca65 V2.17 - Git 6c320f7 cbm/dir.incDIRfd.sizeoffname_opendir _closedir_readdir_seekdir_telldir +% #__CBM____C64__../libwrk/c64/system.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_systempushaxL0002incsp2.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqLc@ؓ] O + CC65 3. 2 0 OMMODORE 64     $!% __CBM____C64__c64/sysuname.sca65 V2.18 - Git cab4910a +__sysunameutsdatautscopy.sizeCODERODATABSSDATAZEROPAGENULLUzna` i0 ;>P9=:@ؓ]]]i#        `$%&'(   ""     # )__CBM____C64__ cbm/telldir.sca65 V2.18 - Git cab4910a cbm/dir.incDIRfd.sizeoffname_opendir _closedir_readdir_seekdir_telldir _rewinddir __dirread -__dirread1-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespaceCODERODATABSSDATAZEROPAGENULLUzna` iK'r  : @Ŵ([0([QfaXw` +__dirread1"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespaceCODERODATABSSDATAZEROPAGENULLUzna` iK'r  % @ؓ]0]Q]w`  c c S   I d""M H 3_ I_ 2  @@ -28111,8 +31666,8 @@ __dirread1-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1pt  Z Z`tgiy(  r          ,  }    o  j q  L  C9LLpLL;LLQLL&L#LLyLLHLLLKLLLus |_0mipbIk\ jVlesd6c3b0a-K`*_'^$H]!\y[Z#Y&XWQV U ;TSpRR]M'CL%K$LJ#I"qH!jGFEDoCB,A@ ? > -= <;:98r@Z7cw< 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 __CBM____C64__tgi/tgi-kernel.sca65 V2.17 - Git 6c320f7 -tgi_librefptr1//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES += <;:98r@Z7cw< 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 __CBM____C64__tgi/tgi-kernel.sca65 V2.18 - Git cab4910a +tgi_librefptr1$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28124,10 +31679,10 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 / -0 -@ŴE*[faX:+ O +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload#/home/pzp/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  + +@ؓ]]:+ O O  ~ ~x L @@ -28185,8 +31740,8 @@ TGI_ERR_OKTGI_ERR_NO_DRIVERTGI_ERR_CANNOT_LOADTGI_ERR_INV_DRIVERTGI_ERR_INV_ , y6R5 {,L,~,O8YPNp0mgwU  zX$d>"}c^;M%2hm\j|U -P0M]lHG?")o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 -F%7_ [@N*(arV,2 wcRKvz/:u~ #'`BSDZ{Q<YX+1__CBM____C64__../libwrk/c64/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_cospushaxsubysppushaldaxyspL000AL001E.sizeL003CL003EL003Fpushwysppusha0tosaddaxstaxysptossubaxL001DaddeqyspL0022addyspCODERODATABSSDATAZEROPAGENULLUzna` ix6M Y\L -2~[@Ŵ([([Qj jE E  +F%7_ [@N*(arV,2 wcRKvz/:u~ #'`BSDZ{Q<YX+1__CBM____C64__../libwrk/c64/tgi_arc.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac _tgi_line_tgi_arc_tgi_imulround__sin__cospushaxsubysppushaldaxyspL000AL001E.sizeL003CL003EL003Fpushwysppusha0tosaddaxstaxysptossubaxL001DaddeqyspL0022addyspCODERODATABSSDATAZEROPAGENULLUzna` ix6M Y\L +(t[u@ؓ]]Qj jE E  1 1I I        f f% %b b * *  & &    W W UUY Y ? ? 9 95 5 Z Z" " 0XYX$B B! s s^ ^ > @@ -28205,7 +31760,7 @@ y6    z z+ +L; ;`  jEWY9Z"Kz+ 1IfbCga ?5 %*&Bs}|``m;CO,B> p<< 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 __CBM____C64__ tgi/tgi_bar.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +F{~%f75m_[@N**(_2 , a1 rdV|> 2ww\@ vcRtv. /:u^I #sJ'e`V0 ZQYX+C 3 __CBM____C64__ tgi/tgi_bar.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28217,9 +31772,9 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 mXM N @ŴfaX([Q % +_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 mXC D @ؓ]]Q % %L -%tmqC< 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 __CBM____C64__tgi/tgi_circle.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +%tmqC< 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 __CBM____C64__tgi/tgi_circle.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28232,7 +31787,7 @@ tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_pop 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([QVr< 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 __CBM____C64__tgi/tgi_clear.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +Y(  @ؓ]]QVr< 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 __CBM____C64__tgi/tgi_clear.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28246,7 +31801,7 @@ 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 +      @ؓ]L]Q]]  A A ` H  @@ -28366,7 +31921,7 @@ _tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _t  L #     ) z`8Q^nAbR sxQ ZjUP m;9O Yr H -G6:M1T>Wg< 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 __CBM____C64__tgi/tgi_clippedline.sca65 V2.17 - Git 6c320f7 umul16x16r32 udiv32by16r16negax//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +G6:M1T>Wg< 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 __CBM____C64__tgi/tgi_clippedline.sca65 V2.18 - Git cab4910a umul16x16r32 udiv32by16r16negax$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28378,10 +31933,10 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace$/home/pzp/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( ) @Ŵ([([Q4PP3::< 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 __CBM____C64__common/tgi_colors.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +HaveDeltasL10L3L4L5L6L7L8L11L12L13L14L15L16CODERODATABSSDATAZEROPAGENULLUzna` ixC^6  @ؓ]]Q4PP3::< 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 __CBM____C64__common/tgi_colors.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28393,11 +31948,11 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 +_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 @ؓ]]QtA AY Y* *y y/ /' ' -" "`3'"Yy9z/8}A*e< 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 __CBM____C64__tgi/tgi_curtoxy.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +" "`3'"Yy9z/8}A*e< 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 __CBM____C64__tgi/tgi_curtoxy.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28409,12 +31964,12 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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; +_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   @ؓ]]Q]; B B\\ * *K K`0SY*7'BKsa< 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 __CBM____C64__tgi/tgi_done.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +{~f5m**_2 , 1 d,|> 2w\@ vt. ^Is0JeV0 C 3 __CBM____C64__tgi/tgi_done.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28426,11 +31981,11 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload#/home/pzp/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  |z  { @ؓ]]Q4  8 8 b bhL -SbS8ot !< 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 __CBM____C64__tgi/tgi_ellipse.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +SbS8ot !< 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 __CBM____C64__tgi/tgi_ellipse.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28442,11 +31997,11 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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= VW@ŴfaX  +_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= WX@ؓ]      - __CBM____C64__tgi/tgi_free_vectorfont.sca65 V2.17 - Git 6c320f7_free_tgi_free_vectorfontCODERODATABSSDATAZEROPAGENULLUzna` ixb m^U V @ŴfaX([Q&& + __CBM____C64__tgi/tgi_free_vectorfont.sca65 V2.18 - Git cab4910a_free_tgi_free_vectorfontCODERODATABSSDATAZEROPAGENULLUzna` ixb m^K L @ؓ]]Q&& &r -r`BJ&ru:< 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 __CBM____C64__tgi/tgi_getaspectratio.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +r`BJ&ru:< 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 __CBM____C64__tgi/tgi_getaspectratio.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28458,9 +32013,9 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 mRC D @ŴfaX([Q9 +_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 mR9 : @ؓ]]Q9 9R`%:N9vW< 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 __CBM____C64__tgi/tgi_getcolor.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 __CBM____C64__tgi/tgi_getcolor.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28472,8 +32027,8 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 mRH I @ŴfaX([Q - :`RF^ 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 __CBM____C64__tgi/tgi_getcolorcount.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +_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> ? @ؓ]]Q + :`RF^ 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 __CBM____C64__tgi/tgi_getcolorcount.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28486,7 +32041,7 @@ tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_pop 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\H8x8< 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 __CBM____C64__tgi/tgi_getdefpalette.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +Y(  @ؓ]]Q\H8x8< 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 __CBM____C64__tgi/tgi_getdefpalette.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28498,12 +32053,12 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 +_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; : @ؓ]]QcX X ) )xx G G.& &!2 -2`<TG6&25X)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 __CBM____C64__tgi/tgi_geterror.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +2`<TG6&25X)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 __CBM____C64__tgi/tgi_geterror.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28515,8 +32070,8 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 IOK @ŴfaX ([QfaXt2 2\ \9+ I + H %y> ->MM~`5 T0u? \vO ERRORO DRIVER AVAILABLEANNOT LJOAD DRIVJERJJNVALID DRIVERODE NOTG SUPPORTGED BY DRGIVERGGNVALID KFUNCTIONK ARGUMENKTKKUNCTIONq NOT SUPqPORTEDqqNVALID 4FONT FIL4E44UT OF RwESOURCESwwNKNOWN .ERROR.. DRIVER( IS ALRE(ADY INST(ALLED((zQ< 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 __CBM____C64__tgi/tgi_geterrormsg.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +_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 IO6 @ؓ] ]Q]t2 2\ \9+ I + H %y> +>MM~`5 T0u? \vO ERRORO DRIVER AVAILABLEANNOT LJOAD DRIVJERJJNVALID DRIVERODE NOTG SUPPORTGED BY DRGIVERGGNVALID KFUNCTIONK ARGUMENKTKKUNCTIONq NOT SUPqPORTEDqqNVALID 4FONT FIL4E44UT OF RwESOURCESwwNKNOWN .ERROR.. DRIVER( IS ALRE(ADY INST(ALLED((zQ< 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 __CBM____C64__tgi/tgi_geterrormsg.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28528,9 +32083,9 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 wfZ [ @ŴfaX([Q&' -'tD,`$F`'{<< 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 __CBM____C64__tgi/tgi_getmaxcolor.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload#/home/pzp/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 wfP Q @ؓ]]Q&' +'tD,`$F`'{<< 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 __CBM____C64__tgi/tgi_getmaxcolor.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28542,9 +32097,9 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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]M N @ŴfaX([Q&& +_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]C D @ؓ]]Q&& &r -r`BD&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 __CBM____C64__tgi/tgi_getmaxx.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +r`BD&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 __CBM____C64__tgi/tgi_getmaxx.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28556,9 +32111,9 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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]M N @ŴfaX([Q&R +_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]C D @ؓ]]Q&R R& -&`rE: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 __CBM____C64__tgi/tgi_getmaxy.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +&`rE: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 __CBM____C64__tgi/tgi_getmaxy.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28570,9 +32125,9 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 mSH I @ŴfaX([Q9 +_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> ? @ؓ]]Q9 9R`%G9~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 __CBM____C64__tgi/tgi_getpagecount.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 __CBM____C64__tgi/tgi_getpagecount.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28585,7 +32140,7 @@ tgi_getset tgi_imulround tgi_inv_arg tgi_inv_drv tgi_linepop tgi_outcode tgi_pop 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[S88< 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 __CBM____C64__tgi/tgi_getpalette.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +Y(  @ؓ]]Q[S88< 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 __CBM____C64__tgi/tgi_getpalette.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28597,11 +32152,11 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 |  @ŴfaX([Q/  ' +_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 |u v @ؓ]]Q/  ' 'uuLD DL, ,Y,f'^ 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 __CBM____C64__tgi/tgi_getpixel.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 __CBM____C64__tgi/tgi_getpixel.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28613,14 +32168,13 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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) @C D @ŴfaX([Q J -J%4 40>>  -P -P -  -D Dd -d` 4DlJCdBmPf,< 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 __CBM____C64__tgi/tgi_getset.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadreturn0@L9CODERODATABSSDATAZEROPAGENULLUzna` ix]( F? @ @ؓ]]Q - +-1; ;8h0 M +M + +B B` +`  +`m?B?;l-C`BkMf|< y/ - ?  h[B )&F = H 7 u(E D OA }; 8 G  $6 9 : gn+4xz{~%f5m**(_2 , 1 d|> w\@ vt. ^I sJ'eV0 C 3 __CBM____C64__tgi/tgi_getset.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28632,8 +32186,8 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 :V uv@ŴfaX -([QfaXfaX.#) +_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 :6 UV@ؓ] +]Q]].#) )== `  T @@ -28641,7 +32195,7 @@ _tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _t p# #} }z z Q Q L -O#}zg\A?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 __CBM____C64__tgi/tgi_gettextheight.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +O#}zg\A?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 __CBM____C64__tgi/tgi_gettextheight.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28653,8 +32207,8 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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  @A@ŴfaX([QfaXfaXWJ# +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload(/home/pzp/cc65/asminc/tgi-vectorfont.incTGI_VF_VERSIONTGI_VF_FIRSTCHARTGI_VF_LASTCHAR TGI_VF_CCOUNT +TGI_VF_HDRMAGICSIZETGI_VECTORFONTTOPBOTTOMHEIGHTWIDTHSCHARSOPS_tgi_vectorchar"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace@L2@L1CODERODATABSSDATAZEROPAGENULLUzna` iV n !@ؓ]]Q]]WJ# #    @@ -28667,7 +32221,7 @@ TGI_VF_HDRMAGICSIZETGI_VECTORFONTTOPBOTTOMHEIGHTWIDTHSCHARSOPS_tgi_vec  L ` ~[~6Dc$gi@>=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 __CBM____C64__tgi/tgi_gettextwidth.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +{~f75m_[*N**(_2 , a1 d>|> 22<w\@ vRKt. :^I #sJ'eBSV0 Z=Q<YC 3 __CBM____C64__tgi/tgi_gettextwidth.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28679,11 +32233,11 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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^N O @ŴfaX([Q&9 +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload(/home/pzp/cc65/asminc/tgi-vectorfont.incTGI_VF_VERSIONTGI_VF_FIRSTCHARTGI_VF_LASTCHAR TGI_VF_CCOUNT +TGI_VF_HDRMAGICSIZETGI_VECTORFONTTOPBOTTOMHEIGHTWIDTHSCHARSOPS_tgi_vectorchar"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace_strlen_toascii umul8x16r16WidthWTabText@L1@L9@L2@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` ixb m^D E @ؓ]]Q&9 9R R`%Bc9RW< 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 __CBM____C64__tgi/tgi_getxres.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 __CBM____C64__tgi/tgi_getxres.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28695,10 +32249,10 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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^N O @ŴfaX([Q&9 +_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^D E @ؓ]]Q&9 9R R`%C 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 __CBM____C64__tgi/tgi_getyres.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 __CBM____C64__tgi/tgi_getyres.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28710,13 +32264,13 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 ' +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` ix # " @ؓ]]QJ ' 'w w F F, ,$ $`[F9x'w8{,$>< 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 __CBM____C64__tgi/tgi_gotoxy.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 __CBM____C64__tgi/tgi_gotoxy.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28728,11 +32282,11 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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*rs@ŴfaX faX%    +_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 hi@ؓ] ]%       ɀ" 0 i i`   !`    -    #-0?"& 98314;  = 57*,2/:<+!__CBM____C64__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= ' +    #-0?"& 98314;  = 57*,2/:<+!__CBM____C64__tgi/tgi_imulround.sca65 V2.18 - Git cab4910a_tgi_imulround tgi_imulroundpopax imul16x16r32"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L1CODERODATABSSDATAZEROPAGENULLUzna` i I @ؓ]]Q]cX= ' ' = = L L} @@ -28756,7 +32310,7 @@ _tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _t I   * *L -`PFJu*IRK/Ts'\eZ7qXVWoTL4R[=EO"DZ706}4cX-< 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 __CBM____C64__tgi/tgi_init.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +`PFJu*IRK/Ts'\eZ7qXVWoTL4R[=EO"DZ706}4cX-< 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 __CBM____C64__tgi/tgi_init.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28768,10 +32322,10 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 rc^ _ @ŴfaX([Q& +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload#/home/pzp/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 rcT U @ؓ]]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 __CBM____C64__tgi/tgi_install_vectorfont.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES + `/=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 __CBM____C64__tgi/tgi_install_vectorfont.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28783,11 +32337,11 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadCODERODATABSSDATAZEROPAGENULLUzna` ixq }  ~ @ؓ]]Q5     0 0L: :' U0U: -,< 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 __CBM____C64__tgi/tgi_ioctl.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +,< 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 __CBM____C64__tgi/tgi_ioctl.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28799,7 +32353,7 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 ) +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadpopaptr1CODERODATABSSDATAZEROPAGENULLUzna` ix&= IL K @ؓ]]Qc ) ) y yG G. @@ -28808,7 +32362,7 @@ _tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _t ! !L2 2\y&j)d2MG.L!?< 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 __CBM____C64__tgi/tgi_line.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 __CBM____C64__tgi/tgi_line.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28820,7 +32374,7 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 +_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 @ؓ]]QW W) )x xF @@ -28829,7 +32383,7 @@ _tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _t !1 1; ;f -f`&OjW)N9!19yxF8};fj < 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 __CBM____C64__tgi/tgi_linepop.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +f`&OjW)N9!19yxF8};fj < 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 __CBM____C64__tgi/tgi_linepop.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28841,11 +32395,11 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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. +_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 ), + @ؓ]]QNHyG. .' '""h2 < <Lg -gj <dgL'8}.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 __CBM____C64__tgi/tgi_lineto.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +gj <dgL'8}.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 __CBM____C64__tgi/tgi_lineto.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28857,8 +32411,8 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 z -}~@ŴfaX([QfaXfaXfaXXC +_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 O +RS@ؓ]]Q]]]XC   @@ -28886,7 +32440,7 @@ _tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _t $LD D  -  s   7Km@;C$9coD6I5dX)< 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 __CBM____C64__tgi/tgi_load.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +  s   7Km@;C$9coD6I5dX)< 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 __CBM____C64__tgi/tgi_load.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28898,68 +32452,68 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 { -c d @ŴE*[faXK3 s - s ! - ! r +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload#/home/pzp/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/pzp/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/pzp/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` kzE   +   @ؓ]]`8  +  I + I Q -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  +Q l + l;r + r5 . +. R +R h +h#  +wOOLO_ +,O_ / +/  = += n + n a +aVL +,7L +,y : +:  +  H I  + M   +,L +,L +, v  +  +[ t +t| |EcS + SL* +,*>  +]  +F    -LS -,S" : -: [ -[ w&Aq Haq% %h 4 -4D D_D  @ -@b e -e   + W" "<<`' 'D D  +  +Lg +,g&  +  + 6q HHq  - -kiHe Hme $h 2 - 2 ' -'  / . -.Me` `He| |>h  -pqG GLQ -Qd - d   -LF -?F v -vz0^^1 ? -? u -u+yL7 -74TWC HT567827/.',e& B:@.v?%O;#f 4"J!,V r!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.+9__CBM____C64__#../libwrk/c64/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_errorL0010.sizepushaxdecsp8push0decsp3pushwysppusha0staxyspL001Eleaa0spldaxyspL0031L005AL0036L0057L0059incaxyL0058ldaxi staxspidxL000EL0050addyspCODERODATABSSDATAZEROPAGENULLUzna` i5I~0DE@ŴfaX([QfaXNA7 J +Ch k  +  _sDo L +Lb  +u u $  +4))e1 1H0Pef fh  +  @ +@    +xeK KHUje  hJ ~ +~dq3 3LA +A} + }-  +L +?9 T +T0b p +p B +B(LZ +Z:9 T\C HX%{zY:;<=7GZ4G~3G@1G+G LTp*G=:(Gt'GR&G./%Gl$GQ#GI"Gn+rS}2a?B^h8iu1fK m"' + 3hm\j|U -PM]lHG?")o>&ysfW9C8}LO6pEgtbk3TA4;eJn$.^!i5qId1x= 5 +F%7_[@N*(ar3V,2 4wcRKvz:u~ #'`BSDZ{Q<YX.+>__CBM____C64__#../libwrk/c64/tgi_load_vectorfont.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac_malloc_free_memcmp_open_close_read_tgi_load_vectorfont +_tgi_errorL0010.sizeL001FL0028L0030L0039L0041pushaxdecsp8push0decsp3pushwysppusha0staxyspL001Eleaa0spldaxyspL0034L0060L003AL005DL005FincaxyL005Eldaxi staxspidxL000EL0056addyspCODERODATABSSDATAZEROPAGENULLUzna` i5I~0~/0@ؓ]]Q]NA7 J J0oou u2 2- @@ -28967,7 +32521,7 @@ _tgi_errorL0010.sizepushaxdecsp8push0decsp3pushwysppusha0staxyspL001E 80pp a aO -OpI40 `+ +` `U X < 0 :|+C2-B~aOkAON0M<JuLX8< 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 __CBM____C64__tgi/tgi_outcode.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +OpI40 `+ +` `U X < 0 :|+C2-B~aOkAON0M<JuLX8< 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 __CBM____C64__tgi/tgi_outcode.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -28979,8 +32533,8 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespaceL2L1L4L3L7L5L6CODERODATABSSDATAZEROPAGENULLUzna` ihp~ +w xy@ؓ]]Q]],z },}t t, ,HoH    hh  @@ -29002,7 +32556,7 @@ _tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _t     G -G  TTh h hb bh* `jn;S&t,&5Jg|eb >=ki<;82d< 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 __CBM____C64__tgi/tgi_outtext.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +G  TTh h hb bh* `jn;S&t,&5Jg|eb >=ki<;82d< 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 __CBM____C64__tgi/tgi_outtext.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -29014,17 +32568,17 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload(/home/pzp/cc65/asminc/tgi-vectorfont.incTGI_VF_VERSIONTGI_VF_FIRSTCHARTGI_VF_LASTCHAR TGI_VF_CCOUNT +TGI_VF_HDRMAGICSIZETGI_VECTORFONTTOPBOTTOMHEIGHTWIDTHSCHARSOPS_tgi_vectorchar"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace_toasciipopaxnegaxtextfontwidths VectorFont -MoveCursor@L1Done EndOfTextCODERODATABSSDATAZEROPAGENULLUzna` ixS, KH I @ŴfaX([Q!H*% %4 +MoveCursor@L1Done EndOfTextCODERODATABSSDATAZEROPAGENULLUzna` ixS, K> ? @ؓ]]Q!H*% %4 4>l l   O O h  L %lO`Y9~48![< 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 __CBM____C64__tgi/tgi_outtextxy.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +{~%f5m*_2 , 1 d|> w\@ vt. ^I sJeV0 C 3 __CBM____C64__tgi/tgi_outtextxy.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -29036,7 +32590,7 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 9}@ƴF*[faXg"u  +_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 9l@ؓ]]g"u   I C C )    E& & 1 @@ -29083,9 +32637,9 @@ _tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _t 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+(__CBM____C64__../libwrk/c64/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 |yy z @ƴ([([Q+( (u uLD -DY(uDl<< 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 __CBM____C64__tgi/tgi_popxy.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +F%7_[@N*(aV,2cRK/: #'`BSDZQ<YX+(__CBM____C64__../libwrk/c64/tgi_pieslice.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac _tgi_line_tgi_arc _tgi_pieslice_tgi_imulround__sin__cospushaxpushwysppushaldaxysppusha0tosaddaxtossubaxaddysp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixg wte f @ؓ]]Q+t tB BL+ ++tBX+lS< 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 __CBM____C64__tgi/tgi_popxy.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -29097,9 +32651,9 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unloadpopptr1ptr2CODERODATABSSDATAZEROPAGENULLUzna` ix !$ # @ؓ]]QJ  ( (x x F F- -% %`[(x[-%Fm >< 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 __CBM____C64__tgi/tgi_popxy2.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 __CBM____C64__tgi/tgi_popxy2.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -29111,9 +32665,9 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 rd[ \ @ƴfaX([Q&' +_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 rdQ R @ؓ]]Q&' 's -s`CJ'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 __CBM____C64__tgi/tgi_setaspectratio.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +s`CJ'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 __CBM____C64__tgi/tgi_setaspectratio.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -29125,13 +32679,13 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 +_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 |} ~ @ؓ]]Q9 ; ;TT' 'Lu uLC Ch3CYuFa;:P'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 __CBM____C64__tgi/tgi_setcolor.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 __CBM____C64__tgi/tgi_setcolor.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -29143,11 +32697,11 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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~v w @ƴfaX([Q/ ; +_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~l m @ؓ]]Q/ ; ;SSL& &Lt th3tX&G; 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 __CBM____C64__tgi/tgi_setdrawpage.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 __CBM____C64__tgi/tgi_setdrawpage.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -29159,8 +32713,8 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 wtl m @ƴfaX([Q+E E, ,L$ -$=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 __CBM____C64__tgi/tgi_setpalette.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +_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 wtb c @ؓ]]Q+E E, ,L$ +$=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 __CBM____C64__tgi/tgi_setpalette.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -29172,10 +32726,10 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 wrg h @ƴfaX([Q*  ; +_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] ^ @ؓ]]Q*  ; ;SSL& &`tf;]& 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 __CBM____C64__tgi/tgi_setpixel.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +{~f5m*_2 , 1 d|> w\@ vt. ^IsJeV0 C 3 __CBM____C64__tgi/tgi_setpixel.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -29187,8 +32741,8 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 mM@ A @ƴ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 __CBM____C64__tgi/tgi_settextdir.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +_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 mM6 7 @ؓ]]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 __CBM____C64__tgi/tgi_settextdir.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -29200,7 +32754,7 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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 +_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@ؓ]]]Q]6D3      @@ -29218,7 +32772,7 @@ _tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _t   H] hn`4 3[YYBpXLNDL#K v m  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__CBM____C64__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 +Fn7? _f[*Nm*sF a> , 2 < E cK/h@ y 50 `Z= 7 wJY__CBM____C64__tgi/tgi_settextstyle.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -29230,11 +32784,11 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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}u v @ƴfaX([Q/ T +_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/pzp/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}k l @ؓ]]Q/ T T((Lt tLC -Ch4CWWtGT < 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 __CBM____C64__tgi/tgi_setviewpage.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +Ch4CWWtGT < 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 __CBM____C64__tgi/tgi_setviewpage.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -29246,17 +32800,17 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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= [\@ƴfaX  +_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= \]@ؓ]      - __CBM____C64__c64/tgi_stat_stddrv.sca65 V2.17 - Git 6c320f7_tgi_static_stddrv _c64_hi_tgiCODERODATABSSDATAZEROPAGENULLUzna` iqT qVW@ƴfaX C64-HI.TGI  -     __CBM____C64__c64/tgi_stddrv.sca65 V2.17 - Git 6c320f7 _tgi_stddrv.sizeCODERODATABSSDATAZEROPAGENULLUzna` iL#o {~+ ]}^@ƴfaX([QfaXfaX + __CBM____C64__c64/tgi_stat_stddrv.sca65 V2.18 - Git cab4910a_tgi_static_stddrv _c64_hi_tgiCODERODATABSSDATAZEROPAGENULLUzna` iqT rWX@ؓ] C64-HI.TGI  +     __CBM____C64__c64/tgi_stddrv.sca65 V2.18 - Git cab4910a _tgi_stddrv.sizeCODERODATABSSDATAZEROPAGENULLUzna` iL#o {~+ =}>@ؓ]]Q]]  T T66 H$; ;HG  hhLZ ZQ -Q`Zy6Q5T;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 __CBM____C64__tgi/tgi_unload.sca65 V2.17 - Git 6c320f7//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +Q`Zy6Q5T;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 __CBM____C64__tgi/tgi_unload.sca65 V2.18 - Git cab4910a$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -29268,10 +32822,9 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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  +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload#/home/pzp/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/pzp/cc65/asminc/modload.incMOD_CTRLREAD +CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_READ MLOAD_ERR_HDR MLOAD_ERR_OS MLOAD_ERR_FMT MLOAD_ERR_MEM no_driverCODERODATABSSDATAZEROPAGENULLUzna` i'W {|@ؓ]/ ]Q]]] 2 2  "ft tɀojvT` X X Q Q  @@ -29310,7 +32863,7 @@ CALLERDATAMODULE MODULE_SIZE MODULE_ID _mod_load _mod_freeMLOAD_OKMLOAD_ERR_R  ll$< <Phk khB hF `     bx-Qksh*PCfXBAH1@_<$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 __CBM____C64__tgi/tgi_vectorchar.sca65 V2.17 - Git 6c320f7 imul16x16r32 umul16x16r32negaxnegeax//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES +{~f5m_***(_2 , a1 d>|> 22<ww\@ vcKtvz. :u~^I#sJ'e`DV0 Z={<+C 3 __CBM____C64__tgi/tgi_vectorchar.sca65 V2.18 - Git cab4910a imul16x16r32 umul16x16r32negaxnegeax$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -29322,149 +32875,184 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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) -~@ƴfaX -faX  -(2/HH # -# h h82 2  - - 6 6) ) & &; ;, 0      - ` )*+,-%   6& 2);#2<-0")>& 9861.! -=5 -"@ *(,/  'B+.__CBM____C64__ 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| =C?@@ƴF*[faXE  +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload(/home/pzp/cc65/asminc/tgi-vectorfont.incTGI_VF_VERSIONTGI_VF_FIRSTCHARTGI_VF_LASTCHAR TGI_VF_CCOUNT +TGI_VF_HDRMAGICSIZETGI_VECTORFONTTOPBOTTOMHEIGHTWIDTHSCHARSOPS_tgi_vectorchar"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace$/home/pzp/cc65/asminc/longbranch.macOpsFlagX1Y1X2Y2GetOpGetProcessedYCoordGetProcessedCoord AddBaseCoord SubBaseCoordLoop @Vertical @DrawMove@MoveCODERODATABSSDATAZEROPAGENULLUzna` ix7L X[Ah +Z@ؓ] ]b$C?HH  +7 H70 I0  +$ $ H: I: ! +! +  +h8 8h,  + +>>4  /  ') ) 5 5   9 9 `; `&% +& ='() ($ +( + (9(8 +)5!C @/-0H?")B)>& 9C8(6DA381A4!9:+I5 +7**(,12@K./: 'BD0Q+C*__CBM____C64__ common/time.sca65 V2.18 - Git cab4910a_timedecsp1ldeaxiptr1sregtmp1tmp2/home/pzp/cc65/asminc/time.inctmtm_sec.sizetm_mintm_hourtm_mdaytm_montm_yeartm_wdaytm_ydaytm_isdsttimespectv_sectv_nsec _clock_getres_clock_gettime_clock_settime +_localtime_mktimetimeAssertion failed@L1@L2CODERODATABSSDATAZEROPAGENULL!6Uzna` kz| =C67@ؓ]]E      -__CBM____C64__../libwrk/c64/timezone.sca65 V2.17 - Git 6c320f7cc65 v 2.17 - Git 6c320f7spsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4//home/hugg/compilers/cc65/asminc/longbranch.mac__tz.sizeCODERODATABSSDATAZEROPAGENULLUzna` ix &)`)(*@ƴfaXfaXj +__CBM____C64__../libwrk/c64/timezone.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac__tz.sizeCODERODATABSSDATAZEROPAGENULLUzna` i3&'; < @ؓ] ]2]B  Mu  `? Ld#FvK/y||!! x +x  +CU I`F2e2x$R *iLi<y-?-Ylp0jN?)B>&!FP=X CHk% EDaA};3L81ZA;G  . 9: +g+xz= 5 +"i{~fmK@ *q(_2 U,&dT]|>,2w\@b/ QWIJMBV<S$+C3__CBM____C64__c64/tmcommon.sca65 V2.18 - Git cab4910a/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +CURS_BLINK CURS_CHAR +CURS_STATE +SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC +VIC_SPR0_X +VIC_SPR0_Y +VIC_SPR1_X +VIC_SPR1_Y +VIC_SPR2_X +VIC_SPR2_Y +VIC_SPR3_X +VIC_SPR3_Y +VIC_SPR4_X +VIC_SPR4_Y +VIC_SPR5_X +VIC_SPR5_Y +VIC_SPR6_X +VIC_SPR6_Y +VIC_SPR7_X +VIC_SPR7_Y VIC_SPR_HI_X VIC_SPR_ENA VIC_SPR_EXP_Y VIC_SPR_EXP_XVIC_SPR_MCOLORVIC_SPR_BG_PRIOVIC_SPR_MCOLOR0VIC_SPR_MCOLOR1VIC_SPR0_COLORVIC_SPR1_COLORVIC_SPR2_COLORVIC_SPR3_COLORVIC_SPR4_COLORVIC_SPR5_COLORVIC_SPR6_COLORVIC_SPR7_COLOR VIC_CTRL1 VIC_CTRL2 VIC_HLINE +VIC_LPEN_X +VIC_LPEN_Y VIC_VIDEO_ADRVIC_IRRVIC_IMRVIC_BORDERCOLOR VIC_BG_COLOR0 VIC_BG_COLOR1 VIC_BG_COLOR2 VIC_BG_COLOR3 VIC_KBD_128 VIC_CLK_128SIDSID_S1LoSID_S1Hi SID_PB1Lo SID_PB1HiSID_Ctl1SID_AD1SID_SUR1SID_S2LoSID_S2Hi SID_PB2Lo SID_PB2HiSID_Ctl2SID_AD2SID_SUR2SID_S3LoSID_S3Hi SID_PB3Lo SID_PB3HiSID_Ctl3SID_AD3SID_SUR3 SID_FltLo SID_FltHi +SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DATACIA1CIA1_PRACIA1_PRB CIA1_DDRA CIA1_DDRBCIA1_TACIA1_TB +CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN +CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB +CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY /home/pzp/cc65/asminc/get_tv.incTVNTSCPALOTHER_get_tvTM +load_tenthinittimesreg _get_ostype.size@60HzCODERODATABSSDATAZEROPAGENULLONCEUzna` ix &)`( @ؓ]]j A  [   `    )`    -" !*( #'__CBM____C64__ cbm/toascii.sca65 V2.17 - Git 6c320f7_toascii,/home/hugg/compilers/cc65/asminc/generic.mac@L1.size@L9CODERODATABSSDATAZEROPAGENULLUzna` iq LSy@ƴfaXI     +" !*( #'__CBM____C64__ cbm/toascii.sca65 V2.18 - Git cab4910a_toascii!/home/pzp/cc65/asminc/generic.mac@L1.size@L9CODERODATABSSDATAZEROPAGENULLUzna` iq LSz@ؓ]I     JJ `           -__CBM____C64__common/tolower.sca65 V2.17 - Git 6c320f7_tolower__ctype.sizeL9CODERODATABSSDATAZEROPAGENULLUzna` ix $'e&f@ƴfaXfaXYH     hL! +__CBM____C64__common/tolower.sca65 V2.18 - Git cab4910a_tolower__ctype.sizeL9CODERODATABSSDATAZEROPAGENULLUzna` ix $'z[&\@ؓ]]YH     hL! ! ! -!%  ! "__CBM____C64__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!  +!%  ! "__CBM____C64__runtime/tosint.sca65 V2.18 - Git cab4910atosintincsp2sp/home/pzp/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@ؓ] + ]8,H!   6 2 7 71 3 3% %h `5H) < <+ ,  && 0 !"#$ -73%#< -=-")&  986314;$.!%7 *,2: #'<+%__CBM____C64__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 LSy@ƴfaXI     +73%#< -=-")&  986314;$.!%7 *,2: #'<+%__CBM____C64__runtime/toslong.sca65 V2.18 - Git cab4910atosulongtoslongdecsp2sp/home/pzp/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 LSz@ؓ]I     J i`           -__CBM____C64__common/toupper.sca65 V2.17 - Git 6c320f7_toupper__ctype.sizeL9CODERODATABSSDATAZEROPAGENULLUzna` iqe,/z{@ƴ([ OJ    +__CBM____C64__common/toupper.sca65 V2.18 - Git cab4910a_toupper__ctype.sizeL9CODERODATABSSDATAZEROPAGENULLUzna` iqe,/{|@ؓ] OJ       , ,' '`- !  .. &# #*3&$ $* *  %%  "  +22 ` &  * ))   1 1`(  *  ,'#   $1  -&4P0MHG)>& 8LO6E14;J$.= 5 -F%7*,2RK/:#'SDQ<+__CBM____C64__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/ #'+ __CBM____C64__runtime/udiv32by16r16.sca65 V2.17 - Git 6c320f7 udiv32by16r16udiv32by16r16m-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeL0L1CODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ƴfaX& +F%7*,2RK/:#'SDQ<+__CBM____C64__runtime/udiv.sca65 V2.18 - Git cab4910a tosudiva0 tosudivaxudiv16popptr1sregptr1ptr4.size +udiv16by8aL0L1@L0@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` ix`&@ؓ]])1/ % %"   && &&! !& *&# # $ $ ' '         ` % ! &    +#$'(-")& 86314 .! 5%7(,2/ #'+ __CBM____C64__runtime/udiv32by16r16.sca65 V2.18 - Git cab4910a udiv32by16r16udiv32by16r16m"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeL0L1CODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ؓ]&   L     -    __CBM____C64__ runtime/uge.sca65 V2.17 - Git 6c320f7tosuge00tosugea0tosugeaxtosicmpbooluge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ƴfaX& +    __CBM____C64__ runtime/uge.sca65 V2.18 - Git cab4910atosuge00tosugea0tosugeaxtosicmpbooluge.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ؓ]&   L     -    __CBM____C64__ runtime/ugt.sca65 V2.17 - Git 6c320f7tosugt00tosugta0tosugtaxtosicmpboolugt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ƴfaX& +    __CBM____C64__ runtime/ugt.sca65 V2.18 - Git cab4910atosugt00tosugta0tosugtaxtosicmpboolugt.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq] .  8D @ؓ]&    L          -__CBM____C64__ runtime/ule.sca65 V2.17 - Git 6c320f7tosule00tosulea0tosuleaxtosicmpboolule.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqW'38@ƴfaX   +__CBM____C64__ runtime/ule.sca65 V2.18 - Git cab4910atosule00tosulea0tosuleaxtosicmpboolule.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqW'38@ؓ]   L      -  __CBM____C64__ runtime/ult.sca65 V2.17 - Git 6c320f7tosult00tosulta0tosultaxtosicmpboolultreturn0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq9<L;@ƴ([Y      +  __CBM____C64__ runtime/ult.sca65 V2.18 - Git cab4910atosult00tosulta0tosultaxtosicmpboolultreturn0.sizeCODERODATABSSDATAZEROPAGENULLUzna` iq9<L;@ؓ]Y           `       -      __CBM____C64__runtime/umod.sca65 V2.17 - Git 6c320f7 tosumoda0 tosumodaxpopptr1udiv16sregptr4.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixG97@ƴfaX faX,* % %# F$ $f  'e H e! ! hf  jf f    " " & &` !% $ &  -! "(-0?") 86314; $.! =5%7(,/:#'<+"__CBM____C64__runtime/umul16x16r32.sca65 V2.17 - Git 6c320f7 umul16x16r32 umul16x16r32m umul16x16r16 umul16x16r16m-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` ixE92@ƴfaX faX.,   % % & &j)He " " e  hf f  j    ( (` ! &" (  -%# '$*-0?")& 98631; .! =5%7(,2/ #'<+"__CBM____C64__runtime/umul8x16r24.sca65 V2.17 - Git 6c320f7 umul8x16r24 umul8x16r24m umul8x16r16 umul8x16r16m-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iq):WZeQYR@ƴfaX   F e jf   +      __CBM____C64__runtime/umod.sca65 V2.18 - Git cab4910a tosumoda0 tosumodaxpopptr1udiv16sregptr4.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixG9-@ؓ] ],* % %# F$ $f  'e  e! ! f  jf f    " " & &` !% $ &  +! "(-0?") 86314; $.! =5%7(,/:#'<+"__CBM____C64__runtime/umul16x16r32.sca65 V2.18 - Git cab4910a umul16x16r32 umul16x16r32m umul16x16r16 umul16x16r16m"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.size@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iE97V+@ؓ] ]]/.,# #  +7 7+ +=. . j44H/e ( ( e* * h f f; ;j&  : :`01234#. 7(;:  +*!%%50> -?">& 9C86E31A4; .! =5%7(,2/ ' B<+5__CBM____C64__runtime/umul8x16r24.sca65 V2.18 - Git cab4910a umul8x16r24 umul8x16r24m umul8x16r16 umul8x16r16m"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace/home/pzp/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@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iq):WZeRYS@ؓ]   F e jf     `    -  "! #__CBM____C64__runtime/umul8x8r16.sca65 V2.17 - Git 6c320f7 -umul8x8r16 umul8x8r16mptr1ptr3.size@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iqQ . @ƴfaX   +  "! #__CBM____C64__runtime/umul8x8r16.sca65 V2.18 - Git cab4910a +umul8x8r16 umul8x8r16mptr1ptr3.size@L0@L1CODERODATABSSDATAZEROPAGENULLUzna` iqQ . @ؓ]   L       -__CBM____C64__common/uname.sca65 V2.17 - Git 6c320f7_uname -__sysuname __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` kzV cfK  e @ƴF*[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/  +__CBM____C64__common/uname.sca65 V2.18 - Git cab4910a_uname +__sysuname __mappederrno.sizeCODERODATABSSDATAZEROPAGENULLUzna` kza nqV  p + @ؓ]], l +l  +K  +}vqI IHwFqX X"hy b +b  + a +a  f +f  G Gr )>g;;L; +$; A T +T2 2Y Y-( () sBBLB +$B  Q +Q   _@ @|)  + 4 V +V  MD D o + o / +/ ` + `1 1 L +$n ~ + ~=  +  e ' +'  -` 1 - 1   -n -~q= =H e'q h ^ -^  - - H +  + ^ + ^  + H H [ [ { -{ c +{ c c8 m - m N C -C & -& 5 -5J J  + m N C +C & +& 5 +5J J  9  - E E3 3 L + E E3 3 L LdSd $ $7 t tp k -kP P# #q   +kP P# #q   .:. u -u  : +u  : :  -  6 6S S  +  6 6S S      -  +   Z Zz W -W< < ] ]  +W< < ] ]  !!,L% -'%h+L* -*,-./0*x*'x$u&xL%xt:Z$x5#xc"x[!xH x^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+1__CBM____C64__../libwrk/c64/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 1.(6 6   +(%h+L* +*-./01+x*(x$u'xL&xt:Z%x5$xc#x["xH!x x^xx~ mx`xoxaxbx fTQV'CkWxxl/j{&R  G2Y( @DE3P# 6S<] + 1U +UIXJ\0hm\j|U -P0M]lHG?")o>&ysfW9C8}LO6pEgtbk3T1A4;eJn$.^!iqIdx= 5 +F%7_[@N*(arV,2 wcRKvz/:u~ #'`BSDZ{Q<YX+2__CBM____C64__../libwrk/c64/uncompress.sca65 V2.18 - Git cab4910acc65 v 2.18 - Git cab4910aspsregregsaveregbanktmp1tmp2tmp3tmp4ptr1ptr2ptr3ptr4$/home/pzp/cc65/asminc/longbranch.mac _inflatemem _uncompress_adler32pushaxdecsp2ldaxyspdecax4decsp4L0022tosora0 tosumoda0pushwyspincax2staxysp staxspidxpushl0push0pusheaxsteax0sppusha0tosicmp0ldeax0spL0001.sizeaddyspCODERODATABSSDATAZEROPAGENULLUzna` i F@ؓ] + ]] 1.(6 6     225) ))  ((  11)   " & &`=''  7`9234566)&#.!A  0G")C61A; . 5 F7@*(/# 'BD -<"7__CBM____C64__common/ungetc.sca65 V2.17 - Git 6c320f7_ungetcpopaxptr1tmp1*/home/hugg/compilers/cc65/asminc/_file.inc_FILEf_fd.sizef_flags +<"7__CBM____C64__common/ungetc.sca65 V2.18 - Git cab4910a_ungetcpopaxptr1tmp1/home/pzp/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= nFG@ƴfaX  -    __CBM____C64__common/unlink.sca65 V2.17 - Git 6c320f7_unlink_removeCODERODATABSSDATAZEROPAGENULLUzna` ixr \]^@ƴfaX faX$& &         +_FPUSHBACK __filetab/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAXerrorCODERODATABSSDATAZEROPAGENULLUzna` iq= oGH@ؓ]  +    __CBM____C64__common/unlink.sca65 V2.18 - Git cab4910a_unlink_removeCODERODATABSSDATAZEROPAGENULLUzna` ixr \ST@ؓ] ]$& &           - !%%`$#", &$'))>9C8(6E31'A4;.!+= 5@*&,2/: #<+__CBM____C64__common/utscopy.sca65 V2.17 - Git 6c320f7utscopyutsdataptr1tmp1,/home/hugg/compilers/cc65/asminc/utsname.incutsnamesysname.sizenodenamereleaseversionmachine fieldoffs -fieldcountnextdoneloopCODERODATABSSDATAZEROPAGENULLUzna` ix Ppu@ƴ([faXZze  + !%%`$#", &$'))>9C8(6E31'A4;.!+= 5@*&,2/: #<+__CBM____C64__common/utscopy.sca65 V2.18 - Git cab4910autscopyutsdataptr1tmp1!/home/pzp/cc65/asminc/utsname.incutsnamesysname.sizenodenamereleaseversionmachine fieldoffs +fieldcountnextdoneloopCODERODATABSSDATAZEROPAGENULLUzna` ix Ppu@ؓ]]Zze   " "I5 $- -I1 1  @@ -29485,7 +33073,7 @@ fieldcountnextdoneloopCODERODATABSSDATAZEROPAGENULLUzna` i ;: .<!.D+) ."-?  .='0  .7,>  ** %*9J(Hm|UP0MHGoys 9C}O6Et3T1A4;nI=5 -F7NV2Rzu~BSDZ{Q<YX__CBM____C64__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<- +F7NV2Rzu~BSDZ{Q<YX__CBM____C64__conio/vcprintf.sca65 V2.18 - Git cab4910a _vcprintfpushaxpopaxpopptr1__printf_cputcspptr1ptr2ptr3tmp1!/home/pzp/cc65/asminc/generic.macoutdesc.sizeout@L1@L4@L2@L3CODERODATABSSDATAZEROPAGENULLUzna` ixI%@ؓ] ]<-  ,,'  `"  @@ -29503,7 +33091,7 @@ fieldcountnextdoneloopCODERODATABSSDATAZEROPAGENULLUzna` i      $$-j0HGo>y  }6p1; Jni qIx= - *r2wcKv/:~<+__CBM____C64__conio/vcscanf.sca65 V2.17 - Git 6c320f7_vcscanf_cgetc_cputcpopaxpushaxswapstkconio/../common/_scanf.inc SCANFDATAGET.sizeUNGETDATA__scanfpushedbackgetL1ungetdCODERODATABSSZEROPAGENULLUzna` ix23@ƴfaX faXaI&  + *r2wcKv/:~<+__CBM____C64__conio/vcscanf.sca65 V2.18 - Git cab4910a_vcscanf_cgetc_cputcpopaxpushaxswapstkconio/../common/_scanf.inc SCANFDATAGET.sizeUNGETDATA__scanfpushedbackgetL1ungetdCODERODATABSSZEROPAGENULLUzna` ix23@ؓ] ]aI&   ) )  / @@ -29527,7 +33115,7 @@ fieldcountnextdoneloopCODERODATABSSDATAZEROPAGENULLUzna` i ` " * 2  %38 7 '5 '9)8$;|U MHGo> W9C8}L6ptT;I=5 -7VRv:u~BS{Q<__CBM____C64__common/vfprintf.sca65 V2.17 - Git 6c320f7 _vfprintfpush1pushwyspincsp6_fwrite__printfspptr1,/home/hugg/compilers/cc65/asminc/generic.macoutdesc.sizeccountoutptr@Ok@DoneCODERODATABSSDATAZEROPAGENULLUzna` iZ( PgXY@ƴfaX faXfaX ([33+H( ( +7VRv:u~BS{Q<__CBM____C64__common/vfprintf.sca65 V2.18 - Git cab4910a _vfprintfpush1pushwyspincsp6_fwrite__printfspptr1!/home/pzp/cc65/asminc/generic.macoutdesc.sizeccountoutptr@Ok@DoneCODERODATABSSDATAZEROPAGENULLUzna` iZ( PgCD@ؓ] ]] ]33+H( ( ; H; % %   I @@ -29539,12 +33127,12 @@ fieldcountnextdoneloopCODERODATABSSDATAZEROPAGENULLUzna` i 9 767-)  (%!.94#C EU('PM>H7G?; W CC2OE5bTA;  I0+F_[@N aV*D:8:94 `B,)Z. -YX8__CBM____C64__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 orq@ƴfaX $H  +YX8__CBM____C64__common/vfscanf.sca65 V2.18 - Git cab4910a_vfscanf_fgetc_ungetc_ferror"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespacecommon/_scanf.inc SCANFDATAGET.sizeUNGETDATA__scanf/home/pzp/cc65/asminc/stdio.inc_IOFBF_IOLBF_IONBFBUFSIZEOF FILENAME_MAXL_tmpnamSEEK_CURSEEK_ENDSEEK_SETTMP_MAX FOPEN_MAX_stdin_stdout_stderrcountdL1CODERODATABSSZEROPAGENULLUzna` iqDc orq@ؓ] $H            hL     $ "& 31$ -%/ #'+__CBM____C64__common/vprintf.sca65 V2.17 - Git 6c320f7_vprintf _vfprintf_stdoutdecsp2sp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixKj vy+x,@ƴfaX faX$H  +%/ #'+__CBM____C64__common/vprintf.sca65 V2.18 - Git cab4910a_vprintf _vfprintf_stdoutdecsp2sp.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixKj vy!x"@ؓ] ]$H           hL @@ -29553,8 +33141,10 @@ fieldcountnextdoneloopCODERODATABSSDATAZEROPAGENULLUzna` i      -0"&  61 $.! 5 -%7(,/#' __CBM____C64__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 +%7(,/#' __CBM____C64__common/vscanf.sca65 V2.18 - Git cab4910a_vscanf_vfscanf_stdindecsp2"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` i L + + +@ؓ](] *]=HaHx 8 8$z z: :N HN Z9 90a% %* I*S S? ?r r&&\( ( @@ -29597,14 +33187,14 @@ fieldcountnextdoneloopCODERODATABSSDATAZEROPAGENULLUzna` i z9SpF R< R     n AMMm\j|U P0M]l)o>&s W9CLOpEtbkT1A;eJn.^ qdx=5 -F"[@N (rVwcKvz/ :u'B{C__CBM____C64__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 +F"[@N (rVwcKvz/ :u'B{C__CBM____C64__common/vsnprintf.sca65 V2.18 - Git cab4910a +_vsnprintf vsnprintfldaxysppopaxincsp2incsp6_memcpy__printfspptr1/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX!/home/pzp/cc65/asminc/generic.macoutdesc.sizeccountfuncoutbufptrbufsizeL9L1L5L0L4L2L3@L9@L0@L1@L2CODERODATABSSDATAZEROPAGENULLUzna` iq| L[@ؓ]E  HH      L -         $%__CBM____C64__common/vsprintf.sca65 V2.17 - Git 6c320f7 _vsprintfpushw0spstaxysp vsnprintf.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixj2&)(@ƴfaX! faXm[S SA A'B B% %+5 58 q8 8 P3 3 +         $%__CBM____C64__common/vsprintf.sca65 V2.18 - Git cab4910a _vsprintfpushw0spstaxysp vsnprintf.sizeCODERODATABSSDATAZEROPAGENULLUzna` ixj2&)(@ؓ]! ]m[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 @@ -29618,14 +33208,15 @@ __seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEB *   -% - -#1IESAB583:F-4&<DNK" T PMl?)>s WC8}LO6pEtk314 Jiq=5F7NrV,2wRKvuDZ{Q<X+__CBM____C64__common/vsscanf.sca65 V2.17 - Git 6c320f7_vsscanfpopax__scanfspptr1ptr2,/home/hugg/compilers/cc65/asminc/generic.mac -SSCANFDATASTR.sizeINDEXgetL1ungetsddCODERODATABSSDATAZEROPAGENULLUzna` ixj z { @ƴ([([4. ,U,,,G011`) By- Yl[jNB!FPX Hu%EDaOA;LG   : -gn4xo "i5K q_rU,&dT]\@tb. Q^I`sJeMVRS$C3__CBM____C64__c64/waitvsync.sca65 V2.17 - Git 6c320f7 -_waitvsync(/home/hugg/compilers/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG + -#1IESAB583:F-4&<DNK" T PMl?)>s WC8}LO6pEtk314 Jiq=5F7NrV,2wRKvuDZ{Q<X+__CBM____C64__common/vsscanf.sca65 V2.18 - Git cab4910a_vsscanfpopax__scanfspptr1ptr2!/home/pzp/cc65/asminc/generic.mac +SSCANFDATASTR.sizeINDEXgetL1ungetsddCODERODATABSSDATAZEROPAGENULLUzna` ixj vC D @ؓ]]2. ,U((,I000`& +D<y-? YlpjNB!FP=X Hk%EDaA};L8ZG   9: +g+xz "i{~fmK q_2U,&dT]|>w\@b QWIJMVS$C3__CBM____C64__c64/waitvsync.sca65 V2.18 - Git cab4910a +_waitvsync/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -29648,46 +33239,52 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.size@l1@l2CODERODATABSSDATAZEROPAGENULLUzna` iqR .pwx@ƴfaX `  -      __CBM____C64__ cbm/wherex.sca65 V2.17 - Git 6c320f7_wherexCURS_X.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqR .pwx@ƴfaX `  -      __CBM____C64__ cbm/wherey.sca65 V2.17 - Git 6c320f7_whereyCURS_Y.sizeCODERODATABSSDATAZEROPAGENULLUzna` i$\6QV@ƴ([faX faX 4faX?faXVTH O -O J i//P, -,)33E@E  - [ [L4 -4G G2 2aa  e - -eH A - AJ8VVh j jUUc c oon ngg ; -;(T -TB B6 6`h)L9 -9L& -&WXYZ[N\ QQ  - @@b \ - \L< - <@.,h4h9&XT7jcB67n7G2 O F; FA -Fe FF<F\DTH:q mj  - MlH ?sfW 9C7LtAbk381A4;e Jn^!9: Id5 -@*r,2@cRKv: # BSDZ -Q "YX]__CBM____C64__ cbm/write.sca65 V2.17 - Git 6c320f7_write -initstdoutSETLFSOPENCKOUTBSOUTREADSTCLRCHrwcommonspptr1ptr2ptr3 cbm/cbm.inc +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY.size@l1@l2CODERODATABSSDATAZEROPAGENULLUzna` iqR .qxy@ؓ] `  +      __CBM____C64__ cbm/wherex.sca65 V2.18 - Git cab4910a_wherexCURS_X.sizeCODERODATABSSDATAZEROPAGENULLUzna` iqR .qxy@ؓ] `  +      __CBM____C64__ cbm/wherey.sca65 V2.18 - Git cab4910a_whereyCURS_Y.sizeCODERODATABSSDATAZEROPAGENULLUzna` i$*c36D4x +5y +@ؓ] ]?] Z]e]|TH  + pJpiCq +q)AAH@H / +/, ,L +" ^ ^GG   . +.H  + JULLhw11 +v  +vj j))    +e< +<u +uV  +V`KhL +ggL$ +$}~U  s +sRR  +L +fBqED$Ay<3f.0|//%@#&"~  vuV + j  ^ZYT M< mj /-? P 0]lHG ?"))>s!F=W  9C8L(%Ebk#31'A4 eJ6i  +q+Id4 +"5@*2,a1r&V>,2cRK. :u  B0 +Q "YX$+3__CBM____C64__ cbm/write.sca65 V2.18 - Git cab4910a_write +initstdoutrwcommonspptr1ptr2ptr3 cbm/cbm.incC64MODESWAPPERSETBNKCINTIOINITRAMTASVECTORRESTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSELOADSAVESETTIMRDTIMSCREENPLOTIOBASECHKINCKOUTCLRCHBASINCHRINBSOUTCHROUTSTOPGETINCLALLUDTIM CBMDEV_KBDCBMDEV_DATASETTE CBMDEV_RS232 CBMDEV_SCREEN -MAX_DRIVES FIRST_DRIVE*/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_EXCLcbm/filedes.incfdtabunittabfreefdMAX_FDSLFN_OFFS +MAX_DRIVES FIRST_DRIVE/home/pzp/cc65/asminc/errno.inc__errno __oserror __osmaperrno +__seterrno __directerrno __mappederrnoEOKENOENTENOMEMEACCESENODEVEMFILEEBUSYEINVALENOSPCEEXISTEAGAINEIOEINTRENOSYSESPIPEERANGEEBADFENOEXECEUNKNOWNEMAX/home/pzp/cc65/asminc/fcntl.inc STDIN_FILENO STDOUT_FILENO STDERR_FILENOO_RDONLYO_WRONLYO_RDWRO_CREATO_TRUNCO_APPENDO_EXCLcbm/filedes.incfdtabunittabfreefdMAX_FDSLFN_OFFS LFN_CLOSEDLFN_READ LFN_WRITELFN_OPENLFN_EOF LFN_STDIN LFN_STDOUT -LFN_STDERR@L1.size invalidfd@L2@error@L0devnotpresent2@L3 devnotpresentCODERODATABSSDATAZEROPAGENULLONCEUzna` ix476@ƴ([ -faXSQ  Q  L +LFN_STDERR@L1.size invalidfd@L2@error@L0devnotpresent2@L3 devnotpresentCODERODATABSSDATAZEROPAGENULLONCEUzna` ix47y6z@ؓ] +]SQ  Q  L  !"#  %   - $__CBM____C64__ 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   + $__CBM____C64__ runtime/xor.sca65 V2.18 - Git cab4910atosxora0tosxoraxaddysp1sptmp1/home/pzp/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 ~@ؓ]#" H   I   I    H   `  -  & $%#'+__CBM____C64__common/zerobss.sca65 V2.17 - Git 6c320f7zerobss __BSS_RUN__ __BSS_SIZE__ptr1.sizeL1L3L2L4CODERODATABSSDATAZEROPAGENULLUzna` ixme @ĴfaXfaX6           +  & $%#'+__CBM____C64__common/zerobss.sca65 V2.18 - Git cab4910azerobss __BSS_RUN__ __BSS_SIZE__ptr1.sizeL1L3L2L4CODERODATABSSDATAZEROPAGENULLUzna` ixme @֓]]6                     -      __CBM____C64__runtime/zeropage.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` i+' V c f e @ƴfaX\faXfaX&@faXHfaXIfaX g n) 79)))h 0T e +      __CBM____C64__runtime/zeropage.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace.sizeCODERODATABSSDATAZEROPAGENULLUzna` i+' V c f ~fe g@ؓ]\]]&@]H]I] g n) 79)))h 0T e e X& G G0``g`x  @@ -29741,14 +33338,14 @@ CPU_65SC02 CPU_65C02 CPU_65816 CPU_SWEET16 CPU_HUC6280CPU_4510.sizeCODERODAT  N `coww')@ Z@ 6`kl\5|=    />[vy # -S_@zJh\jV|SU( '-[POCe]H?3 "(>&A4W 9C+8`)}LB1 OE- -baDT/ iAR;: UJn$.Q. ^!Tdi gI&=+%cb_f@*N, V,*2 ERKz/:h@~ #50 P'`BS){Q<JYXm__CBM____C64__DYN_DRVc64/emd/c64-c256k.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace./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 +S_@zJh\jV|SU( '-[POCe]H?3 "(>&A4W 9C+8`)}LB1 OE- -baDT/ iAR;: UJn$.Q. ^!Tdi gI&=+%cb_f@*N, V,*2 ERKz/:h@~ #50 P'`BS){Q<JYXm__CBM____C64__DYN_DRVc64/emd/c64-c256k.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace#/home/pzp/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/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac_c64_c256k_emdCOMMITBASEPAGES TARGETLOCPIAcopytemplateentrystashop operationaddresscheckdonecurpagecurbankwindowbackupbackup_and_setup_check_routine restore_data@presentadjust_page_and_bankbackup_and_setup_copy_routine@L1restore_copy_routinesetup@L3@L2@L4CODERODATABSSDATAZEROPAGENULLUzna` i+zD: +_em_copyto"/home/pzp/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/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac_c64_c256k_emdCOMMITBASEPAGES TARGETLOCPIAcopytemplateentrystashop operationaddresscheckdonecurpagecurbankwindowbackupbackup_and_setup_check_routine restore_data@presentadjust_page_and_bankbackup_and_setup_copy_routine@L1restore_copy_routinesetup@L3@L2@L4CODERODATABSSDATAZEROPAGENULLUzna` i+zD: -*45@ƴfaX8faXfaX&@faXHfaXIfaX7[F{ D rbA4DW%W2gQ +  @ؓ]8]]&@]H]I]7[F{ D rbA4DW%W2gQ v v`-`IR`P @@ -29770,15 +33367,15 @@ _em_copyto-/home/hugg/compilers/cc65/asminc/em-error.inc EM_ERR_OKEM_ERR_NO_DRI b% c _`kSG"k]N _|@,> _:3s} -_ ';6Jh\jV|SU( '[POCe0MG3 )(&Asf4W 9+`)}LB1 OEg- -tbkaDT/ i1R: eUJ$Q. ^Tdi gId&+F%cb_f[*N*(a, V2*2 EcRKh@~ 50 P'`SD)Z{QJYX+a__CBM____C64__DYN_DRVc64/emd/c64-ramcart.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace./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 +_ ';6Jh\jV|SU( '[POCe0MG3 )(&Asf4W 9+`)}LB1 OEg- -tbkaDT/ i1R: eUJ$Q. ^Tdi gId&+F%cb_f[*N*(a, V2*2 EcRKh@~ 50 P'`SD)Z{QJYX+a__CBM____C64__DYN_DRVc64/emd/c64-ramcart.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace#/home/pzp/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/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac_c64_ramcart_emdCOMMIT RAMC_WINDOW RAMC_PAGE_LO RAMC_PAGE_HI pagecount @notpresent@cont @readonly@rc64@setsizesetup@L5@L1@L2@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` i+ e  +_em_copyto"/home/pzp/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/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac_c64_ramcart_emdCOMMIT RAMC_WINDOW RAMC_PAGE_LO RAMC_PAGE_HI pagecount @notpresent@cont @readonly@rc64@setsizesetup@L5@L1@L2@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` i+ e   -X] -@ƴfaXNfaXfaX&@faXHfaXIfaXfx 6 +X]e +@ؓ]N]]&@]H]I]fx 6 86 X6 < L<UUF``@`x ip p  D @@ -29816,12 +33413,12 @@ _em_copyto-/home/hugg/compilers/cc65/asminc/em-error.inc EM_ERR_OKEM_ERR_NO_DRI T |= WHP7;;4RRhh0 0-h\`(  *7y`7z,8c`Bjkf I )  Cv -p1+reJhm\jV|S( '-[POCeM]lHG?3 "o(>&Asf4W 9C+8`)LB1 O6pE- -tbkaDT/ iA4R;: eUn$.Q. ^!Tdi gqId&=+5F%7cb_f[@*ar, ,*2 EcRKv/:h@ #50 P'`BD)Z{Q<JYXl__CBM____C64__DYN_DRVc64/emd/c64-dqbb.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace./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 +p1+reJhm\jV|S( '-[POCeM]lHG?3 "o(>&Asf4W 9C+8`)LB1 O6pE- -tbkaDT/ iA4R;: eUn$.Q. ^!Tdi gqId&=+5F%7cb_f[@*ar, ,*2 EcRKv/:h@ #50 P'`BD)Z{Q<JYXl__CBM____C64__DYN_DRVc64/emd/c64-dqbb.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace#/home/pzp/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/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac _c64_dqbb_emdCOMMITBASEPAGES TARGETLOCCONTROLchecktemplateentrypresentdonecopyfetchaddressstashcurpagewindowbackupbackup_and_setup_check_routine restore_data@presentbackup_and_setup_copy_routine@L1restore_copy_routinesetup@L3@L2@L4CODERODATABSSDATAZEROPAGENULLUzna` i+@   @ƴfaX1faXfaX&@faXHfaXIfaXiW|*#TT8Do\@@C`Q +_em_copyto"/home/pzp/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/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac _c64_dqbb_emdCOMMITBASEPAGES TARGETLOCCONTROLchecktemplateentrypresentdonecopyfetchaddressstashcurpagewindowbackupbackup_and_setup_check_routine restore_data@presentbackup_and_setup_copy_routine@L1restore_copy_routinesetup@L3@L2@L4CODERODATABSSDATAZEROPAGENULLUzna` i+@   @ؓ]1]]&@]H]I]iW|*#TT8Do\@@C`Q `dY2`Ey.`  L1 ^1;: :Uxx F F PPZ Z}}` = =H H6 6L @@ -29837,17 +33434,43 @@ _em_copyto-/home/hugg/compilers/cc65/asminc/em-error.inc EM_ERR_OKEM_ERR_NO_DRI ? @+ j[\i=6!5iHL XZwk X:q -Xf"]^IJVSU( '-[POCe]HG?3 "(>&yAf4 C+`)LB1 OEg- -aDT/ iAR: eUJn$.Q. ^!Td gId&x=+F%cbf@*N, ,*2 wEKvzh@ #50 P'BSD)Q<J]__CBM____C64__DYN_DRVc64/emd/c64-isepic.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace./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 +Xf"]^IJVSU( '-[POCe]HG?3 "(>&yAf4 C+`)LB1 OEg- -aDT/ iAR: eUJn$.Q. ^!Td gId&x=+F%cbf@*N, ,*2 wEKvzh@ #50 P'BSD)Q<J]__CBM____C64__DYN_DRVc64/emd/c64-isepic.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace#/home/pzp/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/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac_c64_isepic_emdCOMMIT IP_WINDOW IP_CTRL_BASEPAGES @notpresent@setoksetup@L5@L1@L2@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` i+ U +_em_copyto"/home/pzp/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/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac_c64_isepic_emdCOMMIT IP_WINDOW IP_CTRL_BASEPAGES @notpresent@setoksetup@L5@L1@L2@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` i+z =% & @ؓ]6]]&@]I]J]YtK? @1@{{`EU, +,@`)` + D +Do Ho I  +X H w Iw`y +y +& H& I`86 +60OO H# I#n n J = =   +F_ -l ldhB k@~(i i" sc ci)?e  qq @0  +;b  [J355`WZ [ R\emd +X +$r +%' +* +< +G$ +X} +P +4?]^ +T n=licKxxh\VSU( '[POCe03 )(&yAf4W C+`)B1 Eg- -ba3DT/ i14R;: eU$Q. Td gqd&x +%cbf[**(ar, V*2 Ezh@ 50 P'`BD)Z{JYX+___CBM____C64__DYN_DRVc64/emd/dtv-himem.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace#/home/pzp/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/pzp/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 _get_ostype!/home/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac_dtv_himem_emdCOMMIT OP_COPYFROM OP_COPYTO +START_BANKPAGESwindow +dma_paramscurpage@presentdonetransferWAIT@L1CODERODATABSSDATAZEROPAGENULLUzna` i+ U    -h -i@ƴfaXOfaXfaX&@faXHfaXIfaX i],0 GG` +{2 +3@ؓ]O]]&@]H]I] i],0 GG`     v    @@ -29894,41 +33517,15 @@ _em_copyto-/home/hugg/compilers/cc65/asminc/em-error.inc EM_ERR_OKEM_ERR_NO_DRI   B@81mni (0~  s 4OXx - u/fm{Jm\jV|SU( '[POCel?3 )(>&yAf4W C+`)}B1 O6pg- -tbkaDT/ i14R: eUnQ. ^!Tdi gq&x+5%7cb_f[*N*(ar, V,2*2 wEcRvhu@~50 P'`)Z{QJYX+o__CBM____C64__DYN_DRVc64/emd/c64-vdc.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace./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 + u/fm{Jm\jV|SU( '[POCel?3 )(>&yAf4W C+`)}B1 O6pg- -tbkaDT/ i14R: eUnQ. ^!Tdi gq&x+5%7cb_f[*N*(ar, V,2*2 wEcRvhu@~50 P'`)Z{QJYX+o__CBM____C64__DYN_DRVc64/emd/c64-vdc.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace#/home/pzp/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/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac _c64_vdc_emdCOMMIT VDC_ADDR_REG VDC_DATA_REG VDC_DATA_HI VDC_DATA_LOVDC_CSETVDC_DATA pagecountcurpagewindow@L0@present vdcgetreg vdcputreg settestadr1 +_em_copyto"/home/pzp/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/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac _c64_vdc_emdCOMMIT VDC_ADDR_REG VDC_DATA_REG VDC_DATA_HI VDC_DATA_LOVDC_CSETVDC_DATA pagecountcurpagewindow@L0@present vdcgetreg vdcputreg settestadr1 vdcgetbytetest64k vdcputbyte@have64k@endok settestadr2 vdcsetsrcaddr -transferindone transferoutsetup@L2@L1@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` i+z =[ \ @ƴfaX6faXfaX&@faXIfaXJfaXYtK? @1@{{`EU, -,@`)` - D -Do Ho I  -X H w Iw`y -y -& H& I`86 -60OO H# I#n n J = =   -F_ -l ldhB k@~(i i" sc ci)?e  qq @0  -;b  [J355`WZ [ R\emd -X -$r -%' -* -< -G$ -X} -P -4?]^ -T n=licKxxh\VSU( '[POCe03 )(&yAf4W C+`)B1 Eg- -ba3DT/ i14R;: eU$Q. Td gqd&x +%cbf[**(ar, V*2 Ezh@ 50 P'`BD)Z{JYX+___CBM____C64__DYN_DRVc64/emd/dtv-himem.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace./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 _get_ostype,/home/hugg/compilers/cc65/asminc/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac_dtv_himem_emdCOMMIT OP_COPYFROM OP_COPYTO -START_BANKPAGESwindow -dma_paramscurpage@presentdonetransferWAIT@L1CODERODATABSSDATAZEROPAGENULLUzna` i+L` m p aa2o 3@ƴ([PfaXfaX&@faXHfaXIfaX^x4iSeKe-F)^( +transferindone transferoutsetup@L2@L1@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` i+L` m p a+o @ؓ]P]]&@]H]I]^x4iSeKe-F)^( (HbHL*Hv k wwH9hDuX  @@ -29948,8 +33545,8 @@ dma_paramscurpage@presentdonetransferWAIT@L1CODERODATABSSDATAZEROPAGE 7` [ [xG GR c:   m HH"   O  y y   d d  7`3xHZXj j -LP  -LP~0 0 0 T(fHg8zhXM`q_`  '   |xa emd +PP  +PP~0 0 0 T(fHg8zhXM`q_`  '   |xa emd 7 Z [ @@ -29958,13 +33555,13 @@ L   8bcpdJj ]T[Gy  i  l#0 - oNh;Jsshm\jV|SU( '[POCe0M]lH?3 ")o(>&yAs4W C+`)}LB1 OEg- -tbka3D/ i1AR: eUJn$Q. ^Tdi gq&x+F%cbf[@*N(, 2*2 wEcRKvz/hu@~#50 P'`BSD)Z{QJYXd__CBM____C64__DYN_DRVc64/emd/c64-65816.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace./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 + oNh;Jsshm\jV|SU( '[POCe0M]lH?3 ")o(>&yAs4W C+`)}LB1 OEg- -tbka3D/ i1AR: eUJn$Q. ^Tdi gq&x+F%cbf[@*N(, 2*2 wEcRKvz/hu@~#50 P'`BSD)Z{QJYXd__CBM____C64__DYN_DRVc64/emd/c64-65816.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace#/home/pzp/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/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac_c64_65816_emdCOMMIT isnotscpucurpagecurbank bankcountwindow @not_present @fillloop @compareloop @found_pages @noextradex@notscputransfer @notascpu@nodex -@notscpu64@nodex2 @notascpu64@moveCODERODATABSSDATAZEROPAGENULLUzna` i+g  %A 23@ƴ([5faXfaX&@faXHfaXIfaX`X; +_em_copyto"/home/pzp/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/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac_c64_65816_emdCOMMIT isnotscpucurpagecurbank bankcountwindow @not_present @fillloop @compareloop @found_pages @noextradex@notscputransfer @notascpu@nodex +@notscpu64@nodex2 @notascpu64@moveCODERODATABSSDATAZEROPAGENULLUzna` i+g  %A @ؓ]4]]&@]H]I]`X; ;E`/7` Nir r^2 2 Hi i IO O ' G'/ H/M IM` @@ -29981,13 +33578,13 @@ _em_copyto-/home/hugg/compilers/cc65/asminc/em-error.inc EM_ERR_OKEM_ERR_NO_DRI 1 } &\]j3 ]8_qcPn ]iO![v6l -]r2T JKKhjV|SU( '[OCeM3 ")o(&Asf4W C+`)}B1 6E- -tbkaD/ iAR: eU$.Q. Tdi gd&+5%cbf*N(, V*2 Ecz/hu@#50 P'`BD){JX^__CBM____C64__DYN_DRVc64/emd/c64-ram.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace./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 +]r2T JKKhjV|SU( '[OCeM3 ")o(&Asf4W C+`)}B1 6E- -tbkaD/ iAR: eU$.Q. Tdi gd&+5%cbf*N(, V*2 Ecz/hu@#50 P'`BD){JX^__CBM____C64__DYN_DRVc64/emd/c64-ram.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace#/home/pzp/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/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac _c64_ram_emdCOMMITBASEPAGEScurpagewindowtransferdoneloopcommon@L2@L1@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` i+ Z -)*@ƴ([=faXfaX&@faXHfaXIfaX5gU +_em_copyto"/home/pzp/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/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac _c64_ram_emdCOMMITBASEPAGEScurpagewindowtransferdoneloopcommon@L2@L1@L4@L3CODERODATABSSDATAZEROPAGENULLUzna` i+ Z +@ؓ]=]]&@]H]I]5gU c  !uZxmR @@ -30016,15 +33613,15 @@ _em_copyto-/home/hugg/compilers/cc65/asminc/em-error.inc EM_ERR_OKEM_ERR_NO_DRI   ,kly( -l>AJUUhm\jV|S( '[OCe0]lHG3 ")o(&yAsf4W C+8`)}LB1 pEg- -tka3D/ i14R;: eUJn$.Q. ^Tdi gqId&x+5%7cb_f[*(r, 2*2 wEcKvz/:hu@~#50 P'`B)Z{JYXm__CBM____C64__DYN_DRVc64/emd/c64-reu.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace./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 +l>AJUUhm\jV|S( '[OCe0]lHG3 ")o(&yAsf4W C+8`)}LB1 pEg- -tka3D/ i14R;: eUJn$.Q. ^Tdi gqId&x+5%7cb_f[*(r, 2*2 wEcKvz/:hu@~#50 P'`B)Z{JYXm__CBM____C64__DYN_DRVc64/emd/c64-reu.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace#/home/pzp/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/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac _c64_reu_emdCOMMIT +_em_copyto"/home/pzp/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/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac _c64_reu_emdCOMMIT REU_STATUS REU_COMMAND REU_C64ADDR REU_REUADDR REU_COUNT REU_IRQMASK REU_CONTROL REU_TRIGGER OP_COPYFROM OP_COPYTOOP_COPYFROM_ALOADOP_COPYTO_ALOAD pagecountcurpagewindow reu_paramsnodeviceloopreu_size_check_common size_loop -size_found pagecount_okcommondone transfer1@L1transferCODERODATABSSDATAZEROPAGENULLUzna` i+LUa K_`@ƴfaXAfaXfaX&@faXHfaXIfaX`'%`%{X  +size_found pagecount_okcommondone transfer1@L1transferCODERODATABSSDATAZEROPAGENULLUzna` i+LUa )*@ؓ]A]]&@]H]I]`'%`%{X  zP6  zn0n  z<*   @@ -30051,28 +33648,28 @@ size_found pagecount_okcommondone transfer1@L1transferCODERODATABSSDATA    de^WQ > =x@A uLrS u9z+ -u Z(TdwJhm\jV|SU( '[POCeM]lHG3 )o(&yAsf4W +`)}B1 OpE- -tbka3DT/ i1R: eUJnQ. ^!Tdi gqId&x+F%cb_f[*N*(ar, V,2*2 wEcRKv:hu@~50 P'`S)Z{QJYX+f__CBM____C64__DYN_DRVc64/emd/c64-georam.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace./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 +u Z(TdwJhm\jV|SU( '[POCeM]lHG3 )o(&yAsf4W +`)}B1 OpE- -tbka3DT/ i1R: eUJnQ. ^!Tdi gqId&x+F%cb_f[*N*(ar, V,2*2 wEcRKv:hu@~50 P'`S)Z{QJYX+f__CBM____C64__DYN_DRVc64/emd/c64-georam.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace#/home/pzp/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/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac_c64_georam_emdCOMMIT GR_WINDOW +_em_copyto"/home/pzp/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/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac_c64_georam_emdCOMMIT GR_WINDOW GR_PAGE_LO -GR_PAGE_HI pagecount @notpresentcheck@has64k@has128k@has256k@has512k @has1024k @has2048k@setoksetup@L5@L1@L2@L4@L3@L6CODERODATABSSDATAZEROPAGENULLUzna` i40 qr@ƴ([faX([/faX5([4faXfaX2f`?`00x  sX)I`S.Hxu -T!X)kI(`BJ joy -' - +GR_PAGE_HI pagecount @notpresentcheck@has64k@has128k@has256k@has512k @has1024k @has2048k@setoksetup@L5@L1@L2@L4@L3@L6CODERODATABSSDATAZEROPAGENULLUzna` i40= @ؓ]]]/]5]2]]2f`@`11x sX)I`T/Ixu +U!X)kI*`CJ joy +) + l  -P3Phm\jSB(G'P O.MsM]la3"o]f4WG   +XHO@1 OpE5gl-IQdbky&SD39J/ M;e n$[Qg.^ i &r4-b`FjF$%C?_[q"N xY* -F;Kar>,VoTD2 \EEP,L%U:uN_#ti!0 APN`)L^%< Rn:V__CBM____C64__DYN_DRVc64/joy/c64-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 +P4Phm\j|SB(G'P+ OMM]lWa3"o]f4WG   +XH@>1 OpzEgl-IQdbky&SD39J/ M; <n$Qg.9^ i &-b?~FjF$%Cm?_[q"N xY* +F;K=}ar>,V28TfDp2 \EEP,L%U:Nk_#i!0 APwN`{)L%< Z:V__CBM____C64__DYN_DRVc64/joy/c64-stdjoy.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace$/home/pzp/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/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +_joy_count _joy_read_joy_clear_ptr#/home/pzp/cc65/asminc/joy-error.inc +JOY_ERR_OKJOY_ERR_NO_DRIVERJOY_ERR_CANNOT_LOADJOY_ERR_INV_DRIVERJOY_ERR_NO_DEVICE/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -30095,21 +33692,21 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY,/home/hugg/compilers/cc65/asminc/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac_c64_stdjoy_joy JOY_COUNTjoy2joy1CODERODATABSSDATAZEROPAGENULLUzna` i4{  @ƴ([faX([/faX5([4faXfaX_a7A`js`x7X)I `"ZZqx5O|X -)[I%`3 0) IC`#)$ $) J I*`J joy -- - +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY!/home/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac_c64_stdjoy_joy JOY_COUNTjoy2joy1CODERODATABSSDATAZEROPAGENULLUzna` i4{ lG HI@ؓ]]]/]5]2]]_a7B`jr`x8X)I `![[px6P|X +)\I%`4 1) ID`")$ $) J I,`J joy +/ + t  -}$W:Whm\j|SB(G' O.Ms]lHa3"y]sf4WG   +X8H}O@1 65gl-IQdbky&SD39J/ MAe eJ$[Qg. i qId&r4-xb`jF$%7C?[@q" xY* -F;Kar>,VoTD2 \EEPR,KvL%UuuN~_#ti!0 APN)ZL{^%Q RnYX:V__CBM____C64__DYN_DRVc64/joy/c64-ptvjoy.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 +}$W;Whm\j||SB(G'+ OM]lHWa3"y]sf4WG   +X8H}@>1 6zgl-IQdbky&SD39J/ MA eJ<$Qg.9 i qId&-xb?~jF$%7Cm?[@q" xY* +F;K=}ar>,V28TfDp2 \EEPR,KvL%UuN~k_#i!0 APwN{)ZL{%Q ZYX:V__CBM____C64__DYN_DRVc64/joy/c64-ptvjoy.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace$/home/pzp/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/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +_joy_count _joy_read_joy_clear_ptr#/home/pzp/cc65/asminc/joy-error.inc +JOY_ERR_OKJOY_ERR_NO_DRIVERJOY_ERR_CANNOT_LOADJOY_ERR_INV_DRIVERJOY_ERR_NO_DEVICE/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -30132,21 +33729,21 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY,/home/hugg/compilers/cc65/asminc/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac_c64_ptvjoy_joy JOY_COUNTjoy2joy1joy3joy4CODERODATABSSDATAZEROPAGENULLUzna` i4w @ƴ(["faX([/faX5([4faXfaX:!T0^"`F` !x/ )0I0JJj/)M/X.)>I>DJ4 -`A  -' o?O% -# xH L  k7N joy - +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY!/home/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac_c64_ptvjoy_joy JOY_COUNTjoy2joy1joy3joy4CODERODATABSSDATAZEROPAGENULLUzna` i4aC @ؓ]"]]/]5]2]]:!U0_"`G` !x/ )0I0JJj/+M/X/)>I>EJ5 +`B  .( oAQ& +# wHM  k8N joy +  y - -/s:shjSBU(G'P O.MsMlHGa?3>&]f4WG   9C+XH}OL@1 OE5gl-IQdky&SD39JT/ MAe J$[Qg. i I&r4-b`=FjF$%C?[@q"N xY -F;K>,VoTD2 \EEPR,KvL%UuuN~_#ti!0 APNBSD)ZL^%Q< RnYX:V+__CBM____C64__DYN_DRVc64/joy/c64-numpad.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 + +0s;shj|SBU(G'P+ OMMlHWGa?3>&]f4WG   9C+XH}L@>1 OzEgl-IQdky&SD39JT/ MA J<$Qg.9 i I&-b?=~FjF$%Cm?[@q"N xY +F;K=}>,V28TfDp2 \EEPR,KvL%UuN~k_#i!0 APwN{BSD)ZL%Q< ZYX:V+__CBM____C64__DYN_DRVc64/joy/c64-numpad.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace$/home/pzp/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/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +_joy_count _joy_read_joy_clear_ptr#/home/pzp/cc65/asminc/joy-error.inc +JOY_ERR_OKJOY_ERR_NO_DRIVERJOY_ERR_CANNOT_LOADJOY_ERR_INV_DRIVERJOY_ERR_NO_DEVICE/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -30169,33 +33766,32 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY,/home/hugg/compilers/cc65/asminc/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac_c64_numpad_joy JOY_COUNT masktable@C128CODERODATABSSDATAZEROPAGENULLUzna` i4_ - @ƴ([(faX([/faX5([4faXfaX{`4-`R`x -'h=Q) -) ) +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY!/home/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac_c64_numpad_joy JOY_COUNT masktable@C128CODERODATABSSDATAZEROPAGENULLUzna` i4I d bc@ؓ](]]/]5]2]]{`5.`S`x +&i>Q) +) ) p - ( -( -J)J JJ -v / 5< -<  -A[X`H  + ' +' +J)J JJ +v 1 6= +=  +A\ X`H   -h]xBX)OI`c  xk~XU)I`>bb -I`6 -6I7`yK joy -2 - +h^xCX)OI`c  xl~XW)I`?bb +I`7 +7I8`yK joy +4 +  -leDem\|SB(G'P O.Ms]Ha?3">]f4WG   +XHO@1 O5l-IQdby&SD39J/ 1Me en$[Qg.  I&r4-b`=jF$%C?_q" xY* -F;Ka>,oT2D2 \wEEPc,vzL%UuuN~_#ti!0 APN`)L{^%Q RnY:V__CBM____C64__DYN_DRVc64/joy/c64-hitjoy.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 +leEem\||SB(G'P+ OM]HWa?3">]f4WG   +XH@>1 Ozl-IQdby&SD39J/ 1M e<n$Qg.9  I&-b?=~jF$%Cm?_q" xY* +F;K=}a>,28T2fDp2 \wEEPc,vzL%UuN~k_#i!0 APwN`{)L{%Q ZY:V__CBM____C64__DYN_DRVc64/joy/c64-hitjoy.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace$/home/pzp/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/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +_joy_count _joy_read_joy_clear_ptr#/home/pzp/cc65/asminc/joy-error.inc +JOY_ERR_OKJOY_ERR_NO_DRIVERJOY_ERR_CANNOT_LOADJOY_ERR_INV_DRIVERJOY_ERR_NO_DEVICE/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -30218,98 +33814,97 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY,/home/hugg/compilers/cc65/asminc/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac_c64_hitjoy_joy JOY_COUNTtemp3temp4 readadapterfirejoy2joy1joy3joy4CODERODATABSSDATAZEROPAGENULLUzna` i-0 (   -r -s  - @ƴfaXffaXfaXLLLLLLBLV -M\u 2{#\\E NS eG   PtO KC e0MlzgR ?_")o&;yH A ;uW`i [C9_+A8KJ`}ItB QOl6]-nG-5bPaD 9sU /TM O4: U q$XjQ .^!d  ob&xruLj{5X%7@cb? _[@N*M$(F  -a!Yd> ,,I2<E "RD:5%H@ ~4#W 0'yS3,VBZ.= aSQFYJYX^+__CBM____C64__DYN_DRVc64/mou/c64-inkwell.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace1/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 +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY!/home/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac_c64_hitjoy_joy JOY_COUNTtemp3temp4 readadapterfirejoy2joy1joy3joy4CODERODATABSSDATAZEROPAGENULLUzna` i-2 )  + +\ +` -  +. @ؓ]f]]lzg ?_")o&;yH A ;}Wi C9_2+<A8KJ`}ItB QOl6p]-G-bPaD 9U /TM =4: U q$XjQ f.^!d  wb&xuLj+{5X{%7@cb? _[@N*M$(F  +a!Yd> ,,I2<|E "RD:58%H@ 9~#W 0Z'yS3,mVBZ= aSQFYkJYX+__CBM____C64__DYN_DRVc64/mou/c64-inkwell.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace&/home/pzp/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/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +mouse_info mouse_ioctl/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -30332,117 +33927,117 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY,/home/hugg/compilers/cc65/asminc/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac_c64_inkwell_mouHEADER SCREEN_WIDTH SCREEN_HEIGHTDefVarsVarsXMinYMinXMaxYMaxButtonsXPosYPosOldPenXOldPenYXOffset Calibrate@L0@L1MoveYMoveX@SkipY@L3@L4@SkipX@L2CODERODATABSSDATAZEROPAGENULLUzna` i- - - - - - - ! -!@ƴfaXpfaXfaX -w>  -o `%I`  -%NI) +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY!/home/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac_c64_inkwell_mouHEADER SCREEN_WIDTH SCREEN_HEIGHTDefVarsVarsXMinYMinXMaxYMaxButtonsXPosYPosOldPenXOldPenYXOffset Calibrate@L0@L1MoveYMoveX@SkipY@L3@L4@SkipX@L2CODERODATABSSDATAZEROPAGENULLUzna` i- + + + + + + U! +V!@ؓ]p]]&;yH A ;sfu`i [C9_+A8KJ`ILtB Ql6]g-nG-5tbPaD 9sUT /1TM O;: eU JqXjQ .^di  qIobd&xruxL=j{5X7@cb? _@M$(F  -ar!Yd> ,,I2<wE "cKD:vz%H:u@ 4W 0yS3,DVB.= aS<FYJ^__CBM____C64__DYN_DRVc64/mou/c64-1351.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace1/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 +& +& +, +2} +C +R +o +w +^ +S +LGLLLLL@ + a]m{`'`?\jE NS WG  - ~O KC eMz]>Hzg ?_>&;yH A ;sf}i C9_2+<A8KJ`ILtB Ql6p]g-G-tbPaD 9UT /1TM =;: eU JqXjQ f.^di  qIwbd&xuxL=j+{5X{7@cb? _@M$(F  +ar!Yd> ,,I2<|wE "cKD:vz8%H:u@ 9W 0ZyS3,DmVB= aS<FYkJ__CBM____C64__DYN_DRVc64/mou/c64-1351.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace&/home/pzp/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/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +mouse_info mouse_ioctl/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -30465,101 +34060,100 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY,/home/hugg/compilers/cc65/asminc/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac _c64_1351_mouHEADER SCREEN_HEIGHT SCREEN_WIDTHVarsOldPotXOldPotYXPosYPosXMinYMinXMaxYMaxButtonsOldValueNewValueDefVars@L1@L0 MoveCheck@SkipX@L2@SkipY@L3@L4CODERODATABSSDATAZEROPAGENULLUzna` i-b "   [ -  @ƴfaXWfaXfaX-    j    1mou - -& -& -,U -2 -C -TP -q -w - -) -LLLLvLL - _uqd!d\hmjE |NS UeG  - tO KC elHzgGR _)&;H A ;fuW`i [C9_+A8KJ`}ItB Ql6E]g-nG-5kPaD 9sUT /TM OA;: eU q$X.jQ .^di  Iob&xruLj{FX%7@cb? *M$(F  -!Yd> ,V,2I2<E "D:vz%H:@ ~4#W 0'yBS3,VBZ.= {aSFYJYX^+__CBM____C64__DYN_DRVc64/mou/c64-pot.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace1/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 + +q +q  +.   +(`3 de?C-    m    1mou + +& +& +,Y +2 +C +TS +q +w + +, +LLLLwLL + cvsf$f?\hmjE |NS WUG  - ~O KC ez>lHzgG _)&;H A ;f}Wi C9_2+<A8KJ`}ItB Ql6Ep]g-G-kPaD 9UT /TM =A;: eU q$X.jQ f.^di  Iwb&xuLj+{FX{%7@cb? *M$(F  +!Yd> ,V,2I2<|E "D:vz8%H:@ 9~#W 0Z'yBS3,mVBZ= {aSFYkJYX+__CBM____C64__DYN_DRVc64/mou/c64-pot.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace&/home/pzp/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/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +mouse_info mouse_ioctl/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -30582,97 +34176,97 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY,/home/hugg/compilers/cc65/asminc/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac _c64_pot_mouHEADER SCREEN_HEIGHT SCREEN_WIDTHJOYUPDOWNLEFTRIGHTFIREVarsYPosXPosXMinYMinXMaxYMaxButtonsTempDefVars@L1@AddX@L2@AddY@Down@L3@L4CODERODATABSSDATAZEROPAGENULLUzna` i- "   m -#$ G  H @ƴfaXjfaXfaX;yH A ;fuW`i [C9_C+A8KJ`}ILtB Ql6]g-nG-5kPaD 9sU /TM O4;: eU JqXjQ .di  Iobd&xruxL=j{5X%7@cb? M$F  -!Yd> ,V,I2<wE "RKD:vz%H:@ ~4W 0'yS3,VBZ.= {aS<FYJYX^+__CBM____C64__DYN_DRVc64/mou/c64-joy.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace1/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 +& +, +2 +Cv +R +o +u + +V +LyLEL?LLLL + Gasu"?\hjE |NS WG   ~O KC e0z>HzgG ?_o>;yH A ;f}Wi C9_C2+<A8KJ`}ILtB Ql6p]g-G-kPaD 9U /TM =4;: eU JqXjQ f.di  Iwbd&xuxL=j+{5X{%7@cb? M$F  +!Yd> ,V,I2<|wE "RKD:vz8%H:@ 9~W 0Z'yS3,mVBZ= {aS<FYkJYX+__CBM____C64__DYN_DRVc64/mou/c64-joy.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace&/home/pzp/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/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +mouse_info mouse_ioctl/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -30695,50 +34289,50 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY,/home/hugg/compilers/cc65/asminc/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac _c64_joy_mouHEADER SCREEN_HEIGHT SCREEN_WIDTHJOYUPDOWNLEFTRIGHTFIREVarsYPosXPosXMinYMinXMaxYMaxButtonsTempDefVars@L1@Save@L0@SkipX@Right@AddX@L2@SkipY@Down@AddY@L3@L4CODERODATABSSDATAZEROPAGENULLUzna` i,$Q  !!@ƴfaXifaXfaX4lfaXz([4faXd -W~| -| - H IO` - - -L - @  -T  -08  cY -Y Z ZM M  -  j  - . -. `ty`'`x -D h -Th`dd u -,u>` -? f -1 -1 #Eo -o `H * -,*h` -  -,` ` `!Hq)(H H -!L -G -GL$hL - CCSS - )$ 0` -rrL -. -RX`8e -A   - P ``@\ (? `    kser -< - -- - - - - -L Z -M"hmjVSB(G [ O.MCs0M^la?~3 o(>y]s]f4 WG  _2+Xx8`)H}|OL@tB1 O6pq65gl- IQd-5tbky&aS3D3p\J/ i1MA4Re eUJrn[Qg.  Ti gqdr4-0xb`}=+5XjF$7Ccbf[@q"*N xmYs -(1F;KarY, VoT,2D*2 <\wEEPcR,KzlU/huuN~y_#tiW5!0 AP'NS3Z,)Z.L{^%w Rn:V__CBM____C64__DYN_DRVc64/ser/c64-swlink.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace//home/hugg/compilers/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTABINSTALL UNINSTALLOPENCLOSEGETPUTSTATUSIOCTLIRQSER_API_VERSION +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY!/home/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac _c64_joy_mouHEADER SCREEN_HEIGHT SCREEN_WIDTHJOYUPDOWNLEFTRIGHTFIREVarsYPosXPosXMinYMinXMaxYMaxButtonsTempDefVars@L1@Save@L0@SkipX@Right@AddX@L2@SkipY@Down@AddY@L3@L4CODERODATABSSDATAZEROPAGENULLUzna` i4# TD$E$@ؓ]j]]4l]z]]2]y + + + Hf If` + + +L + @  +T  +08 } }o +p p e  +  1  + ? + Q`]`";` +W'  +T`~  +,` +? C4 +4Y +Y  + `H=  +,h` +  +,` ` `H) (HH+ +!L + +L>hL +  + )$ 0` +L +. +nI&`[S   +i  x`r@ <* `(R    serh7 + + +- + + + + +L p +}Jh>mB\jGV||mSF=:B(kG-[TPO.MC'M6^lWDga?~3  )o(>}y]S?sz] fVY4 W j 9_2+Xx8Z`)|OL@tB>1 qOQ6pzqA"6P5g]H- M@{Qd-5tbk<yaa3DW p\JT/ i1MAy4R%b e!U<rnK $QU. 9Ti Xgqid4I-_0xb}?+5XF7Cxcbf[@"*N xms(,c1F8;K#=}r$Y, 8~TC-2D2 /*2 <\wEEE +Pc,Kvz9NlU/huN~y_tW\5!0 APN{BSf3+&Z,)7L;.lL{^wRdX3|:Vp__CBM____C64__DYN_DRVc64/ser/c64-swlink.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace$/home/pzp/cc65/asminc/ser-kernel.incSER_HDRID.sizeVERSIONLIBREFJUMPTAB SER_INSTALL SER_UNINSTALLSER_OPEN SER_CLOSESER_GETSER_PUT +SER_STATUS SER_IOCTLSER_IRQSER_API_VERSION SER_PARAMSBAUDRATEDATABITSSTOPBITSPARITY HANDSHAKE SER_BAUD_45_5 SER_BAUD_50 SER_BAUD_75 SER_BAUD_110SER_BAUD_134_5 SER_BAUD_150 SER_BAUD_300 SER_BAUD_600 SER_BAUD_1200 SER_BAUD_1800 SER_BAUD_2400 SER_BAUD_3600 SER_BAUD_4800 SER_BAUD_7200 SER_BAUD_9600SER_BAUD_19200SER_BAUD_38400SER_BAUD_57600SER_BAUD_115200SER_BAUD_230400SER_BAUD_31250SER_BAUD_62500SER_BAUD_56_875 SER_BITS_5 SER_BITS_6 @@ -30748,12 +34342,13 @@ 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/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG +_ser_ioctl_ser_clear_ptr#/home/pzp/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/pzp/cc65/asminc/cbm_kernal.incCINTIOINITRAMTASRESTORVECTORSETMSGSECONDTKSAMEMTOPMEMBOTSCNKEYSETTMOACPTRCIOUTUNTLKUNLSNLISTENTALKREADSTSETLFSSETNAMOPENCLOSECHKINCKOUTCHKOUTCLRCHCLRCHNBASINCHRINBSOUTCHROUTLOADSAVESETTIMRDTIMSTOPGETINCLALLUDTIMSCREENPLOTIOBASECLRSCRKBDREADNMIEXIT +UPDCRAMPTR/home/pzp/cc65/asminc/c64.incVARTABMEMSIZETXTPTRTIMEFNAM_LENSECADRDEVNUMFNAM KEY_COUNTRVS CURS_FLAG CURS_BLINK CURS_CHAR CURS_STATE SCREEN_PTRCURS_XCURS_YCRAM_PTRFREKZP BASIC_BUF BASIC_BUF_LEN CHARCOLOR -CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYCLRSCRKBDREADNMIEXITIRQVecBRKVecNMIVecXSIZEYSIZEVIC +CURS_COLORPALFLAG KBDREPEAT KBDREPEATRATEKBDREPEATDELAYIRQVecBRKVecNMIVecXSIZEYSIZEVIC VIC_SPR0_X VIC_SPR0_Y VIC_SPR1_X @@ -30776,109 +34371,109 @@ SID_FltCtlSID_Amp SID_ADConv1 SID_ADConv2 SID_Noise SID_Read3 VDC_INDEXVDC_DAT CIA1_TOD10 CIA1_TODSEC CIA1_TODMIN CIA1_TODHRCIA1_SDRCIA1_ICRCIA1_CRACIA1_CRBCIA2CIA2_PRACIA2_PRB CIA2_DDRA CIA2_DDRBCIA2_TACIA2_TB CIA2_TOD10 CIA2_TODSEC CIA2_TODMIN -CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY+/home/hugg/compilers/cc65/asminc/module.mac_c64_swlink_serACIA ACIA_DATA ACIA_STATUSACIA_CMD ACIA_CTRLRecvHeadRecvTail RecvFreeCntSendHeadSendTail SendFreeCntStoppedRtsOffRecvBufSendBuf NmiContinueNmiSave BaudTableBitTable StopTable ParityTable -NmiHandlerSetNMIInvParam InitBuffersInvBaud@L1 TryToSend@L2@L3@L9@L0@L4CODERODATABSSDATAZEROPAGENULLUzna` i/{E%\ 00@ƴ([׮faX([QfaXfaXfaX` - ) -H  -`   -)`  - -` -`Sx"Hq&@``YY7s -s` )6 - - - - +CIA2_TODHRCIA2_SDRCIA2_ICRCIA2_CRACIA2_CRBSCPU_VIC_Bank1 SCPU_Slow SCPU_FastSCPU_EnableRegsSCPU_DisableRegs SCPU_DetectLORAMHIRAMIOENCASSDATACASSPLAYCASSMOTTP_FASTRAMONLY /home/pzp/cc65/asminc/module.mac_c64_swlink_serACIA ACIA_DATA ACIA_STATUSACIA_CMD ACIA_CTRLRecvHeadRecvTail RecvFreeCntSendHeadSendTail SendFreeCntStoppedRtsOffRecvBufSendBuf NmiContinueNmiSave BaudTableBitTable StopTable ParityTable +NmiHandlerSetNMIInvParam InitBuffersInvBaud@L1 TryToSend@L2@L3@L9@L0@L4CODERODATABSSDATAZEROPAGENULLUzna` i/qE%! 00@ؓ]]]Q]]]` + ) +H  +`   +)` + +` +`SyFr#@``YY4t +t` )3 + +  + +  -  -LxH)hX) -` H I`3 H I`  -NxH4 M -= -Q * *hX`  -NxH4k = -hX` 8   N N"        _ _% %  v v   ! -! - 8   || 8  - - -} B -NB +  +KxH)hX' +` H I`0 H I`  +Mx H4 M += +Q ( (hX`  +MxH4m = +hX` 8  N N"        _ _" "  w w    + + 8   }} 8  + + +| @ +M@  -C C x@4 - -b -]] ] JlE  RJp  M -% Q  E  -\ \8 - M -% Q  6X`Vm -F f   i U U$ $DD - - -ɀj  -jF  -. -jjF   -6X`   -   ir   L -1K Km - c -cig g  -   u   -I IL -6 M( -( % E Q  ` - i@  i ` 8@: :  `t t -  -  -   - y y -   -   -   - 4 4f fJ J   -L -  -P - P -) -  -  -   -   - ? ? -   -   -  L -`o -oG -G -`= 0  -&  -&  -&  `  ). .Jf Jf Jf   ɀjf ɀjf e i  )e   e  )`s@ ?K +            -7 tgiT@  - - - -/< -N -W +A A x>4 + +a + \ ] ] JnE  R!J  M +% Q  CC  + 8\ + M +% Q  6X`m +F f   i  V V! + + +ɀj  +jF  +. +Fl l  +6X`   +   i s s L +0 mI +I  +ie e i +i& &  vv   + L +5 M + %% %E Q  `MHH i@  i `J 8@  7 `  +u u +  +   +  b + bz z +   +   +   1 1h h G +LG +  + +  +P)P + ;; +  +   +   +   + = = +   +  L +` + +q +q`E 0::  +&  +&  +&  `  ) Jf, ,Jf Jf T T ɀjf ɀjf e i  )e   e  )`s@ ?K )            -7 tgiU@ + + + + +/9 +N +W ]a - - + +  - -  - - + +  + + / L - -, -6 n h  - 5hjVU(G  '-[OC e0^HzG~3 "(; H A s4 9_2+x8)|ILtB 1 O6pE6 - -tb3D 9 \v/ 14;:  eJ$.. ^!di gqd&8 u0x}+{5Fn%7? _f[*Nm*sF > , V,2*2 < wE cKv//:h@ y #50 ,D).= 7 w<JX+__CBM____C64__DYN_DRVc64/tgi/c64-hi.sca65 V2.17 - Git 6c320f7-/home/hugg/compilers/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace//home/hugg/compilers/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES + ++ +5 p j  + 2hjVU(G  '-[OC e0^HzG~3 "(; H A s4 9_2+x8)|ILtB 1 O6pE6 - -tb3D 9 \v/ 14;:  eJ$.. ^!di gqd&8 u0x}+{5Fn%7? _f[*Nm*sF > , V,2*2 < wE cKv//:h@ y #50 ,D).= 7 w<JX+__CBM____C64__DYN_DRVc64/tgi/c64-hi.sca65 V2.18 - Git cab4910a"/home/pzp/cc65/asminc/zeropage.incspsregregsaveptr1ptr2ptr3ptr4tmp1tmp2tmp3tmp4regbank regbanksizezpspace zpsavespace$/home/pzp/cc65/asminc/tgi-kernel.incTGI_HDRID.sizeVERSIONLIBREFVARSXRESYRES COLORCOUNT PAGECOUNT FONTWIDTH FONTHEIGHT ASPECTRATIOFLAGSJUMPTABINSTALL UNINSTALLINITDONEGETERRORCONTROLCLEAR SETVIEWPAGE SETDRAWPAGESETCOLOR SETPALETTE @@ -30890,156 +34485,166 @@ _tgi_flags tgi_clip_x1 tgi_clip_y1 tgi_clip_x2 tgi_clip_y2 tgi_install tgi_unins 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/generic.mac+/home/hugg/compilers/cc65/asminc/module.mac _c64_hi_tgiX1Y1X2Y2TEXTTEMPTEMP2POINTCHUNKOLDCHUNKERRORPALETTEBITMASKOLDD018DXDYX1SAVEY1SAVEX2SAVEY2SAVETEXTMAGXTEXTMAGYTEXTDIR -DEFPALETTE PALETTESIZEBITTABBITCHUNKCHARROMCBASEVBASEDONE1@L1@L2CALC@L9@CHECK@CONT@DYPOSYINCDECXINCDECSTEPINXSTEPINYYLOOPFIXYYFIXXYCONTYCONT2COUNTHIXLOOPXFIXCXCONT1XFIXYXCONT2LINEPLOTEXIT@DECPTR@INCPTR@L4@L3CODERODATABSSDATAZEROPAGENULL -_afailed.oD*[  _cursor.oD*[D_cwd.oD*[9_directerrno.oD*[j -_environ.oD*[ _fdesc.oD*[V_file.oD*[k_fopen.oD*[@0_heap.oD*[p -_heapadd.oD*[9#_heapblocksize.oD*[&_heapmaxavail.oD*[,`_heapmemavail.oD*[2B _hextab.oD*[T7 _longminstr.oD*[90_mappederrno.oD*[ < -_oserror.oD*[@N _poserror.oD*[/B _printf.oD*[F&_scanf.oD*[m;K -_scrsize.oD*[I _seterrno.oD*[1_swap.oD*[ _sys.oD*[(abort.oD*[acc_c128_speed.oD*[Eacc_c64dtv_speed.oD*[acc_c65_speed.oD*[acc_chameleon_speed.oD*[acc_detect_c128.oD*[Aacc_detect_c64dtv.oD*[*acc_detect_c65.oD*[ yacc_detect_chameleon.oD*[acc_detect_scpu.oD*[|acc_detect_turbomaster.oD*[2acc_scpu_speed.oD*[G0acc_turbomaster_speed.oD*[w'add.oD*[ addeqsp.oD*[m -addysp.oD*[n  adler32.oD*[Z,along.oD*[and.oD*[Ht asctime.oD*['aslax1.oD*[aslax2.oD*[aslax3.oD*[I aslax4.oD*[#" asleax1.oD*[$ asleax2.oD*[% asleax3.oD*[(^ asleax4.oD*[q*asmtab.oD*[w,asr.oD*[R3easrax1.oD*[6asrax2.oD*[Q8asrax3.oD*[:asrax4.oD*[;  asreax1.oD*[= asreax2.oD*[?2 asreax3.oD*[B} asreax4.oD*[Datexit.oD*[FFatoi.oD*[Laxlong.oD*[Tbneg.oD*[TV bordercolor.oD*['X_ -bpushbsp.oD*[cbreak.oD*[3e bsearch.oD*[tG c_acptr.oD*[C}t c_basin.oD*[~t c_bsout.oD*[+I c_chkin.oD*[t c_ciout.oD*[D c_ckout.oD*[[ c_clall.oD*[D c_close.oD*[=n c_clrch.oD*[I c_getin.oD*[t -c_iobase.oD*[h -c_listen.oD*[Gc_load.oD*[Mtc_open.oD*[ -c_readst.oD*[Rwc_save.oD*[ɓ( -c_scnkey.oD*[G -c_second.oD*[8L -c_setlfs.oD*[ -c_setnam.oD*[Sc_talk.oD*[YAc_tksa.oD*[F c_udtim.oD*[D c_unlsn.oD*[$D c_untlk.oD*[hIcall.oD*[ callirq.oD*[] -callmain.oD*[w>calloc.oD*[i -callptr4.oD*[ cbm_close.oD*[P cbm_dir.oD*[;cbm_filetype.oD*[: -cbm_load.oD*[ -cbm_open.oD*[37 -cbm_read.oD*[j -cbm_save.oD*[} cbm_write.oD*[qcc65_idiv32by16r16.oD*[ cc65_imul16x16r32.oD*[cc65_imul8x8r16.oD*[ cc65_sincos.oD*[3cc65_udiv32by16r16.oD*[!cc65_umul16x16r32.oD*[ cc65_umul16x8r32.oD*[cc65_umul8x8r16.oD*[cclear.oD*[!cgetc.oD*[T chdir.oD*[;chline.oD*[6 clinechars.oD*[ Qclock.oD*[S -close.oD*[  -closedir.oD*[clrscr.oD*[ color.oD*[  compl.oD*[N,condes.oD*[-zconio.oD*[Q3 -copydata.oD*[n>=cpeekc.oD*[A cpeekcolor.oD*[Ms cpeekrevers.oD*["Y cpeeks.oD*[d cprintf.oD*[s"cputc.oD*[v cputhex.oD*[Wcputs.oD*[crc32.oD*[creat.oD*[crt0.oD*[NUcscanf.oD*[ctime.oD*[pctype.oD*[_ curdevice.oD*[Vcursor.oD*[ظcvline.oD*[mPdbg.oD*[ dbgdasm.oD*[Kx| dbgdump.oD*[LJ -dbgisram.oD*[ތ dbgsupp.oD*[׏g decax1.oD*[>decax2.oD*[decax3.oD*[ždecax4.oD*[decax5.oD*[Fdecax6.oD*[decax7.oD*[ʥdecax8.oD*[decaxy.oD*[Ndecsp1.oD*[:decsp2.oD*[decsp3.oD*[decsp4.oD*[jdecsp5.oD*[/decsp6.oD*[decsp7.oD*[decsp8.oD*[~ devicedir.oD*[Cdevnum.oD*[ dir.oD*[-A diskcmd.oE*[nY +_tgi_ioctl _tgi_line _tgi_lineto_tgi_load_driver _tgi_outtext_tgi_outtextxy _tgi_pieslice_tgi_setaspectratio _tgi_setcolor_tgi_setdrawpage_tgi_setpalette _tgi_setpixel_tgi_settextdir_tgi_settextscale_tgi_settextstyle_tgi_setviewpage_tgi_uninstall _tgi_unload#/home/pzp/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/pzp/cc65/asminc/generic.mac /home/pzp/cc65/asminc/module.mac _c64_hi_tgiX1Y1X2Y2TEXTTEMPTEMP2POINTCHUNKOLDCHUNKERRORPALETTEBITMASKOLDD018DXDYX1SAVEY1SAVEX2SAVEY2SAVETEXTMAGXTEXTMAGYTEXTDIR +DEFPALETTE PALETTESIZEBITTABBITCHUNKCHARROMCBASEVBASEDONE1@L1@L2CALC@L9@CHECK@CONT@DYPOSYINCDECXINCDECSTEPINXSTEPINYYCONT2YLOOPFIXYYFIXXYCONTCOUNTHIXLOOPXFIXCXCONT1XFIXYXCONT2LINEPLOT@DECPTR@INCPTR@L4@L3CODERODATABSSDATAZEROPAGENULL +_afailed.o]  _cursor.o]"E_cwd.o]g_directerrno.o]?U +_environ.o] _fdesc.o]f_file.o]f_fopen.o]_heap.o]+ +_heapadd.o]"_heapblocksize.o]&_heapmaxavail.o].,K_heapmemavail.o]y1- _hextab.o]6~_idiv32by16r16.o]$9_imul16x16r32.o]<n _imul8x8r16.o]> _longminstr.o],@'_mappederrno.o]SB +_oserror.o] GO _poserror.o]XH _printf.o]M&_scanf.o]s}K +_scrsize.o]5J _seterrno.o]_swap.o]d _sys.o]m_udiv32by16r16.o]_umul16x16r32.o]n_umul16x8r32.o]q{ _umul8x8r16.o]abort.o]acc_c128_speed.o]acc_c64dtv_speed.o]acc_c65_speed.o]qacc_chameleon_speed.o]Tacc_detect_c128.o]acc_detect_c64dtv.o] acc_detect_c65.o]oacc_detect_chameleon.o]acc_detect_scpu.o]acc_detect_turbomaster.o] acc_scpu_speed.o] &acc_turbomaster_speed.o]add.o] addeqsp.o]addysp.o] adler32.o]7along.o]"and.o]$j asctime.o](aslax1.o]4,aslax2.o]-aslax3.o]/aslax4.o]w1 asleax1.o]l3 asleax2.o]K5 asleax3.o]j7_ asleax4.o]9asmtab.o];asr.o]Bfasrax1.o]Fasrax2.o]Gasrax3.o]mIasrax4.o]RK + asreax1.o]\M asreax2.o]DO3 asreax3.o]wQ~ asreax4.o]Satexit.o]V1atoi.o]6\axlong.o]cbneg.o]e bordercolor.o]mg( +bpushbsp.o]rbreak.o]Ct bsearch.o]؃> c_acptr.o] c_basin.o] c_bsout.o]Γ c_chkin.o]  c_ciout.o] c_ckout.o]6 c_clall.o]< c_close.o] c_clrch.o] c_getin.o]j +c_iobase.o]F +c_listen.o]Kc_load.o]c_open.o]Ѿ +c_readst.o]c_save.o] +c_scnkey.o]: +c_second.o] +c_setlfs.o]1 +c_setnam.o]hc_talk.o]4c_tksa.o] c_udtim.o] c_unlsn.o]9 c_untlk.o]call.o] callirq.o]C +callmain.o]^?calloc.o]j +callptr4.o] cbm_close.o]Q cbm_dir.o]cbm_filetype.o] +cbm_load.o] +cbm_open.o]8 +cbm_read.o] +cbm_save.o]# cbm_write.o]'bcclear.o]."cgetc.o]60chdir.o]?chline.o]A7 clinechars.o]CRclock.o]Eclose.o]I +closedir.o]Pclrscr.o]Tcolor.o]GXg compl.o]ccondes.o]8epconio.o]j -diskinit.oE*[div.oE*[Ddivt.oE*[ doesclrscr.oE*[Y em-kernel.oE*[MK em_commit.oE*[ em_copyfrom.oE*[E em_copyto.oE*[ em_load.oE*[ em_map.oE*['em_pagecount.oE*[ em_unload.oE*[Oem_use.oE*[ enter.oE*[zeq.oE*[8errno.oE*[ -errormsg.oE*[ exec.oE*[! +copydata.o]u>cpeekc.o]x cpeekcolor.o]< cpeekrevers.o]֏\ cpeeks.o]2 cprintf.o]Щcputc.o] cputhex.o]Xcputs.o]crc32.o]creat.o]crt0.o]@ cscanf.o]Mctime.o]ctype.o]U curdevice.o]cursor.o]ecvline.o]Qdbg.o]L dbgdasm.o]ѭ} dbgdump.o]N +dbgisram.o]f dbgsupp.o]`] decax1.o]decax2.o]udecax3.o]-decax4.o]decax5.o]decax6.o]Udecax7.o] decax8.o]decaxy.o]}decsp1.o]_decsp2.o]decsp3.o]decsp4.o]decsp5.o]Xdecsp6.o]decsp7.o]decsp8.o] devicedir.o]pdevnum.o]7 +dir.o], diskcmd.o]EO +diskinit.o]div.o]mEdivt.o] doesclrscr.o]Z em-kernel.o](6 em_commit.o]^! em_copyfrom.o]% em_copyto.o]( em_load.o]I,[ em_map.o]5em_pagecount.o]D9 em_unload.o]</em_use.o]Center.o]Feq.o]xHerrno.o]OJ +errormsg.o]L +exec.o]W -execvars.oE*[, exehdr.oE*[N8pfclose.oE*[:fdopen.oE*[H?Ffgetc.oE*[Cp fgetpos.oE*[Ifgets.oE*[M filedes.oE*[UV -filename.oE*[X2 -filetype.oE*[bM -filevars.oE*[dcfmisc.oE*[Vefopen.oE*[ok fprintf.oE*[nfputc.oE*[rfputs.oE*[vJfread.oE*["{ -free.oE*[c freopen.oE*[kBfscanf.oE*[fseek.oE*[ǡ\ fsetpos.oE*[#ftell.oE*[{fwrite.oE*[.ge.oE*[ get_ostype.oE*[zget_tv.oE*[t getchar.oE*[Dgetcpu.oE*[[]getcwd.oE*[[ getdevice.oE*[getenv.oE*[`getopt.oE*[LBgets.oE*[gmtime.oE*[J)gotox.oE*[swgotoxy.oE*[gotoy.oE*[wgt.oE*[Bicmp.oE*[idiv32by16r16.oE*[imul16x16r32.oE*[ imul8x8r16.oE*[m \incax1.oE*[ ;incax2.oE*[incax3.oE*[rincax5.oE*[8rincax6.oE*[rincax7.oE*[rincax8.oE*[rincaxy.oE*[incsp1.oE*[incsp2.oE*[incsp3.oE*[G!rincsp4.oE*["rincsp5.oE*[+$rincsp6.oE*[%rincsp7.oE*['rincsp8.oE*[(r inflatemem.oE*[) initcwd.oE*[GB interrupt.oE*[Kirq.oE*[P isalnum.oE*[] isalpha.oE*[;` isblank.oE*[b iscntrl.oE*[e isdigit.oE*[ch isgraph.oE*[k islower.oE*[m isprint.oE*[p ispunct.oE*[os isspace.oE*[Hv isupper.oE*[y -isxdigit.oE*[{itoa.oE*[r~|jmpvec.oE*[H joy-kernel.oE*[6 joy_count.oE*[ -joy_load.oE*[k -joy_read.oE*[$joy_stat_stddrv.oE*[a joy_stddrv.oE*[Xa joy_unload.oE*[kbhit.oE*[Um -kbrepeat.oE*[®_ kernal.oE*[!Hkplot.oE*[ivlabs.oE*[ladd.oE*[Bladdeq.oE*[ -laddeqsp.oE*[kland.oE*[Blasr.oE*[[`lbneg.oE*[lcmp.oE*[Rlcompl.oE*[ldai.oE*[ ldau0sp.oE*[sldaui.oE*[ ldauisp.oE*[ldaxi.oE*[ldaxsp.oE*[ldeaxi.oE*[S= -ldeaxysp.oE*[ldec.oE*[ ldiv.oE*[le.oE*[F leaaxsp.oE*[leave.oE*[=leq.oE*[,~lge.oE*[~lgt.oE*[(~libref.oE*[linc.oE*[Klle.oE*[>~llt.oE*[ylmod.oE*[5=lmul.oE*[rlne.oE*[~lneg.oE*[) -loadaddr.oE*[dlocale.oE*[ localtime.oE*[ longjmp.oE*[ lor.oE*[#?lpop.oE*['lpush.oE*[X+4lrsub.oE*[/Olsave.oE*[3zlshelp.oE*[U6lshl.oE*[i:Ylshr.oE*[<?lsub.oE*[?Llsubeq.oE*[MC -lsubeqsp.oE*[Glt.oE*[Jltest.oE*[Lltoa.oE*[tNludiv.oE*[Vluge.oE*[0^lugt.oE*[_lule.oE*[2alult.oE*[b|lumod.oE*[/dlxor.oE*[hBlz4.oE*[`l -mainargs.oE*[z -makebool.oE*[malloc.oE*[: mcbdefault.oE*[mcbpointercolor.oE*[kmcbpointershape.oE*[mcbspritedata.oE*[bmemchr.oE*[i;memcmp.oE*[hmemcpy.oE*[  memmove.oE*[@memset.oE*[- mkdir.oE*[:mktime.oE*[*mod.oE*[L modfree.oE*[fI modload.oE*[mouse-kernel.oE*[vmouse_buttons.oE*[%mouse_getbox.oE*[+mouse_geterrormsg.oE*[N2 mouse_hide.oE*[; mouse_info.oE*[B mouse_ioctl.oE*[I mouse_load.oE*[P mouse_move.oE*[[ mouse_pos.oE*[bmouse_setbox.oE*[i mouse_show.oE*[Fpmouse_stat_stddrv.oE*[Mwcmouse_stddrv.oE*[xcmouse_unload.oE*[z -mouseref.oE*[ʂimul.oE*[3mul8.oE*[. mulax10.oE*[Emulax3.oE*[Fmulax5.oE*[Cmulax6.oE*[`#mulax7.oE*[Hmulax9.oE*[˖=ne.oE*[negabs.oE*[֚open.oE*[z opendir.oE*[+ or.oE*[1 oserrlist.oE*[k oserror.oE*[ overlayaddr.oE*[%} penadjust.oE*[, -pencalib.oE*[perror.oE*[ pmemalign.oE*[Spopa.oE*[0 popptr1.oE*[LJ popsreg.oE*[ cprintf.oE*[ Upush1.oE*[Nppush2.oE*[ppush3.oE*[.ppush4.oE*[ppush5.oE*[ppush6.oE*[~ppush7.oE*[ppusha.oE*[^ pushaff.oE*[tpushax.oE*[yNpushb.oE*[! pushbsp.oE*[j%pushc0.oE*['qpushc1.oE*[(qpushc2.oE*[)q -pushlysp.oE*[h+/pushw.oE*[- pushwsp.oE*[/ putchar.oE*[B2putenv.oE*[3puts.oE*[<&qsort.oE*[Araise.oE*[[Zmrand.oE*[]e randomize.oE*[-ah read.oE*[l readdir.oE*[mv realloc.oE*[ regswap.oE*[ - -regswap1.oE*[ -regswap2.oE*[ݛ,remove.oE*[ rename.oE*[ return0.oE*[1g return1.oE*[hrevers.oE*[ rewind.oE*[ů rewinddir.oE*[rmdir.oE*[rsub.oE*[9 -rwcommon.oE*[˺scanf.oE*[jT scratch.oE*[ scrsize.oE*[| searchenv.oE*[a seekdir.oE*[o ser-kernel.oE*[U ser_close.oE*[$ ser_get.oE*[ 2 ser_ioctl.oE*[;S -ser_load.oE*[s -ser_open.oE*[ 3 ser_put.oE*[4  ser_status.oE*[ 5 ser_unload.oE*[L j -setjmp.oE*[$ shelp.oE*[_' }shl.oE*[) shr.oE*[. +shrax1.oE*[1 shrax2.oE*[r3 shrax3.oE*[5 shrax4.oE*[6  shreax1.oE*[8  shreax2.oE*[:  shreax3.oE*[< F shreax4.oE*[> signal.oE*[@ W -sigtable.oE*[F [sleep.oE*[mH  -snprintf.oE*[{L 'soft80_cgetc.oE*[O #soft80_charset.oE*[_ &soft80_color.oE*[w soft80_conio.oE*[ Wsoft80_cpeekc.oE*[\ ?soft80_cpeekcolor.oE*[ ] soft80_cpeekrevers.oE*[ soft80_cpeeks.oE*[ soft80_cputc.oE*[` g'soft80_kclrscr.oE*[ -soft80_kplot.oE*[ -soft80_scrsize.oE*[# -Wsoft80mono_cgetc.oE*[& -~soft80mono_color.oE*[X6 -zsoft80mono_conio.oE*[E -soft80mono_cpeekcolor.oE*[wa -O soft80mono_cputc.oE*[n -dsoft80mono_kclrscr.oE*[* -psoft80mono_kplot.oE*[ - sprintf.oE*[7 -$sscanf.oE*[[ - -staspidx.oE*[u -+status.oE*[ -)staxsp.oE*[ɫ - staxspi.oE*[ - steaxsp.oE*[e -1 -steaxspi.oE*[ -stkchk.oE*[C -strcat.oE*[4 -strchr.oE*[ -Dstrcmp.oE*[0 - strcoll.oE*[ -Jstrcpy.oE*[ -t strcspn.oE*[n -,strdup.oE*[ - -strerror.oE*[ - -strftime.oE*[F -nC stricmp.oE*[ strlen.oE*[E  -strlower.oE*[M!  strncat.oE*[)% o strncmp.oE*[* u strncpy.oE*[ .  -strnicmp.oE*[1 } -stroserr.oE*[W7 \ strpbrk.oE*[: ) strqtok.oE*[= 3 - strrchr.oE*[H strspn.oE*[J )strstr.oE*[ N l strtoimax.oE*[uR Istrtok.oE*[S strtol.oE*[\  strtoul.oE*[5t ' strtoumax.oE*[\ J -strupper.oE*[  strxfrm.oE*[ sub.oE*[r  subeqsp.oE*[ subysp.oE*[ swap.oE*[ݙ  -syschdir.oE*[q  sysremove.oE*[V  sysrename.oE*[ system.oE*[  systime.oE*[  -sysuname.oE*[x  telldir.oE*[[ E tgi-kernel.oE*[  tgi_arc.oE*[u 1 - tgi_bar.oE*[  tgi_circle.oE*[& O tgi_clear.oE*[u  tgi_clippedline.oE*[  tgi_colors.oE*[A( * tgi_curtoxy.oE*[k4 -tgi_done.oE*[LA tgi_ellipse.oE*[N tgi_free_vectorfont.oE*[[ Xtgi_getaspectratio.oE*[\ W tgi_getcolor.oE*[4i E tgi_getcolorcount.oE*[yu J tgi_getdefpalette.oE*[Á tgi_geterror.oE*[ tgi_geterrormsg.oE*[ tgi_getmaxcolor.oE*[a \ tgi_getmaxx.oE*[ O tgi_getmaxy.oE*[ O tgi_getpagecount.oE*[[ J tgi_getpalette.oE*[  tgi_getpixel.oE*[ tgi_getset.oE*[C E tgi_gettextheight.oE*[ wtgi_gettextwidth.oE*[ B tgi_getxres.oE*[A# P tgi_getyres.oE*[/ P tgi_gotoxy.oE*[; tgi_imulround.oE*[H t -tgi_init.oE*[K tgi_install_vectorfont.oE*[\ ` tgi_ioctl.oE*[fh -tgi_line.oE*[t tgi_linepop.oE*[ tgi_lineto.oE*[ -tgi_load.oE*[s tgi_load_vectorfont.oE*[ e tgi_outcode.oE*[W F tgi_outtext.oE*[ tgi_outtextxy.oE*[7 J tgi_pieslice.oF*[  tgi_popxy.oF*[9 { tgi_popxy2.oF*[ tgi_setaspectratio.oF*[d -] tgi_setcolor.oF*[ tgi_setdrawpage.oF*[J#x tgi_setpalette.oF*[/n tgi_setpixel.oF*[0<i tgi_settextdir.oF*[HB tgi_settextstyle.oF*[Ttgi_setviewpage.oF*[ew tgi_stat_stddrv.oF*[+r] tgi_stddrv.oF*[sX tgi_unload.oF*[t_tgi_vectorchar.oF*[?time.oF*[ -timezone.oF*[A toascii.oF*[ơ+ tolower.oF*[tosint.oF*[g toslong.oF*[& toupper.oF*[ͭudiv.oF*[|udiv32by16r16.oF*[uge.oF*[ugt.oF*[ule.oF*[ûult.oF*[umod.oF*[eumul16x16r32.oF*[ umul8x16r24.oF*[ umul8x8r16.oF*[Suname.oF*[  uncompress.oF*[ ungetc.oF*[unlink.oF*[H utscopy.oF*[_ -vcprintf.oF*[> vcscanf.oF*[. -vfprintf.oF*[ vfscanf.oF*[Z vprintf.oF*[;vscanf.oF*[- vsnprintf.oF*[ -vsprintf.oF*[ vsscanf.oF*[ waitvsync.oF*[| wherex.oF*[ywherey.oF*[ywrite.oF*[xor.oF*[% zerobss.oF*[=) -zeropage.oD*[+c64-c256k-emd.oF*[.c64-ramcart-emd.oF*[H6c64-dqbb-emd.oF*[Vc64-isepic-emd.oF*[l c64-vdc-emd.oF*[yjdtv-himem-emd.oF*[] c64-65816-emd.oF*[|4 c64-ram-emd.oF*[4 c64-reu-emd.oF*[+c64-georam-emd.oF*[ac64-stdjoy-joy.oF*[psc64-ptvjoy-joy.oF*[c64-numpad-joy.oF*[c64-hitjoy-joy.oF*[c64-inkwell-mou.oF*[( c64-1351-mou.oF*[I! c64-pot-mou.oF*[j c64-joy-mou.oF*[I c64-swlink-ser.oF*[! c64-hi-tgi.oF*[0o65 c64-hi.tgild65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018tgi@778f@EJfcm` ݭ)ݭЍHЭ Щ` ݭ ݭЭ)ߍ```@Н```) +execvars.o]b exehdr.o] +ldeaxysp.o]=ldec.o]%? +ldiv.o]/Ale.o]C leaaxsp.o]Eleave.o]jG3leq.o]Klge.o]Mlgt.o]Nlibref.o]Plinc.o]Qlle.o]Sllt.o]3Uzlmod.o]V3lmul.o]Zlne.o]walneg.o]b* +loadaddr.o] eelocale.o]f localtime.o] l# longjmp.o]/plor.o]s5lpop.o];wzlpush.o]z*lrsub.o]~Elsave.o]${lshelp.o]lshl.o]Zlshr.o]@lsub.o]NBlsubeq.o] +lsubeqsp.o])lt.o]ltest.o]ltoa.o]ludiv.o]luge.o]Xlugt.o]ڮlule.o]\lult.o]ޱ}lumod.o][lxor.o]@8lz4.o]x +mainargs.o]!l +makebool.o]malloc.o] mcbdefault.o]hmcbpointercolor.o]lmcbpointershape.o]{mcbspritedata.o]cmemchr.o]<memcmp.o] imemcpy.o] memmove.o]k +memset.o]mkdir.o]mktime.o]1+mod.o]C modfree.o]FJ modload.o]\Gmouse-kernel.o]flmouse_buttons.o]tmouse_getbox.o]{mouse_geterrormsg.o] mouse_hide.o]s mouse_info.o]a mouse_ioctl.o]G mouse_load.o]M mouse_move.o] mouse_pos.o]Ʊmouse_setbox.o] mouse_show.o]Dmouse_stat_stddrv.o]Admouse_stddrv.o]dmouse_unload.o]  +mouseref.o]jmul.o]mul20.o]Rmul40.o]clmul8.o] mulax10.o]Fmulax3.o]mulax5.o]mulax6.o]$mulax7.o])Imulax9.o]r>ne.o]negabs.o]open.o][ opendir.o]@ or.o]Xx oserrlist.o] +l oserror.o]<  overlayaddr.o]9&~ penadjust.o](# +pencalib.o]/perror.o]? pmemalign.o]MDpopa.o] Y& popptr1.o]3\ popsreg.o] +^Yprintf.o]caKpush1.o]dqpush2.o]fqpush3.o]gqpush4.o]iqpush5.o]rjqpush6.o]kqpush7.o]Tmqpusha.o]n pushaff.o]brupushax.o]sOpushb.o]&v pushbsp.o]ypushc0.o]k{rpushc1.o]|rpushc2.o]O~r +pushlysp.o]0pushw.o] pushwsp.o] putchar.o]putenv.o]Qputs.o]qsort.o]~raise.o]crand.o] randomize.o]1 read.o] readdir.o] realloc.o] regswap.o] +regswap1.o] +regswap2.o]g-remove.o]rename.o]) return0.o]h return1.o]&irevers.o] rewind.o]  rewinddir.o] +rmdir.o] + rsub.o]  +rwcommon.o] scanf.o] J scratch.o]  scrsize.o]  searchenv.o] b seekdir.o]#  ser-kernel.o]_, ser_close.o]=9  ser_get.o]<@ L ser_ioctl.o]G m +ser_load.o]N l +ser_open.o]a\ M ser_put.o]c  ser_status.o]j O ser_unload.o]q n +setjmp.o]h|  settime.o] shelp.o] ~shl.o]_ shr.o]1 ,shrax1.o]] shrax2.o] shrax3.o] shrax4.o][  shreax1.o]9  shreax2.o]  shreax3.o] G shreax4.o]N signal.o]= B +sigtable.o] Qsincos.o]Я sleep.o]p  +snprintf.o]u soft80_cgetc.o] soft80_charset.o]& 'soft80_color.o]M soft80_conio.o]1 #soft80_cpeekc.o]T +soft80_cpeekcolor.o]R- +& soft80_cpeekrevers.o]x: +soft80_cpeeks.o]< +soft80_cputc.o]K +)'soft80_kclrscr.o]r +soft80_kplot.o]t +soft80_scrsize.o]% +Xsoft80mono_cgetc.o]} +soft80mono_color.o]b +Dsoft80mono_conio.o] +ssoft80mono_cpeekcolor.o] + soft80mono_cputc.o]2 +.soft80mono_kclrscr.o]` +9soft80mono_kplot.o] f sprintf.o] sscanf.o]  +staspidx.o]) ,status.o]U *staxsp.o]  staxspi.o]J  steaxsp.o] 2 +steaxspi.o]D" stkchk.o]$ strcat.o]* strchr.o]|/ :strcmp.o]3  strcoll.o]76 Kstrcpy.o]7 u strcspn.o]9 -strdup.o]$=  +strerror.o])B  +strftime.o]E eC stricmp.o] strlen.o]  +strlower.o]  strncat.o]x e strncmp.o]ݘ v strncpy.o]S  +strnicmp.o]! s +stroserr.o] R strpbrk.o] * strqtok.o] + strrchr.o] strspn.o]p *strstr.o] m strtoimax.o] Jstrtok.o]Q strtol.o].  strtoul.o]  strtoumax.o] K +strupper.o]  strxfrm.o] sub.o]  subeqsp.o]] subysp.o]u swap.o];  +syschdir.o]  sysremove.o]  sysrename.o]R system.o]^  +sysuname.o]  telldir.o] ; tgi-kernel.o]  tgi_arc.o]2 + tgi_bar.o]< v tgi_circle.o]jO E tgi_clear.o][  tgi_clippedline.o]g  tgi_colors.o]Q tgi_curtoxy.o]q +tgi_done.o]H tgi_ellipse.o] | tgi_free_vectorfont.o]b Ytgi_getaspectratio.o] M tgi_getcolor.o] ; tgi_getcolorcount.o]C @ tgi_getdefpalette.o]  tgi_geterror.o] tgi_geterrormsg.o]U tgi_getmaxcolor.o] R tgi_getmaxx.o]J E tgi_getmaxy.o]! E tgi_getpagecount.o]- @ tgi_getpalette.o]:  tgi_getpixel.o]'F w tgi_getset.o]R A tgi_gettextheight.o]_ Wtgi_gettextwidth.o]6o " tgi_getxres.o]X F tgi_getyres.o] F tgi_gotoxy.o] tgi_imulround.o]z j +tgi_init.o] tgi_install_vectorfont.o] V tgi_ioctl.o]6  +tgi_line.o] tgi_linepop.o]| tgi_lineto.o]i +tgi_load.o] Ttgi_load_vectorfont.o]o + tgi_outcode.o]M1 tgi_outtext.o]~&ztgi_outtextxy.o]9@ tgi_pieslice.o]8G tgi_popxy.o]Mg tgi_popxy2.o]FZ tgi_setaspectratio.o]fS tgi_setcolor.o]?s tgi_setdrawpage.o]n tgi_setpalette.o],d tgi_setpixel.o]_ tgi_settextdir.o]8 tgi_settextstyle.o]'tgi_setviewpage.o]m tgi_stat_stddrv.o]M^ tgi_stddrv.o]Y tgi_unload.o]?tgi_vectorchar.o]C}time.o] +timezone.o]8 +tmcommon.o]= toascii.o]D ! tolower.o]e tosint.o]4] toslong.o] toupper.o].udiv.o]}udiv32by16r16.o]zuge.o]v!ugt.o]J#ule.o]%ult.o]&umod.o](umul16x16r32.o]* umul8x16r24.o]. umul8x8r16.o]r4Tuname.o]6 uncompress.o]X8 ungetc.o]cCunlink.o]EHI utscopy.o]IU +vcprintf.o]L vcscanf.o]R +vfprintf.o]V vfscanf.o]s[E vprintf.o]`vscanf.o]:c# vsnprintf.o]]f + +vsprintf.o]Tq vsscanf.o]=s waitvsync.o]xE wherex.o]<zwherey.o]zwrite.o]0z +xor.o]{ zerobss.o]% +zeropage.o]җc64-c256k-emd.o]Țhc64-ramcart-emd.o]0c64-dqbb-emd.o]0c64-isepic-emd.o] dtv-himem-emd.o]' c64-vdc-emd.o]4c64-65816-emd.o] c64-ram-emd.o] c64-reu-emd.o]*c64-georam-emd.o]9+c64-stdjoy-joy.o]3Jc64-ptvjoy-joy.o]8ZJc64-numpad-joy.o]kc64-hitjoy-joy.o](}dc64-inkwell-mou.o]/ c64-1351-mou.o]W! c64-pot-mou.o] c64-joy-mou.o]c64-swlink-ser.o]F$ c64-hi-tgi.o]50o65c64-swlink.serld65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019ser7E  +ޭ` +ޭL-@ l08 ޠ  ީ``` + l` D`?  ަ`H Dh` D`ޢ` `H)(؊HHޤ!LލLhL )$0`LFʆ` + `@ `L"B%%%%%%%% %  + % %% % +o65c64-hitjoy.joyld65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019joyz``x݌݌Ȍ݌ܩݩQܭ))ݭ) + + JJJJ ܮ  AܩX`H hxܭX)I`xܭ܌X)I`I`I`/ + 0o65hhhc64-numpad.joyld65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019joy!0``x/Э)0I0JJ/MȌ/X)>I>JH`  +  9o65oooc64-ptvjoy.joyld65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019joy``xܭX)I`xܭ܌X)I` ݭ)I`ݭ)) JI`U%%o65@@@c64-stdjoy.joyld65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019joy``xܭX)I`xܭ܌X)I`o65 c64-hi.tgild65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019tgi@778f@EJfbl` ݭ)ݭЍHЭ Щ` ݭ ݭЭ)ߍ```@Н```) - xH)ЙљҙhX`֢`â` xH4M=QhX` xH4=hX` 8 " + xH)ЙљҙhX`բ`¢` xH4M=QhX` xH4=hX` 8 " -   ҍȥ8 +   ҍȥ8   -8  x4b] JE JM% Q 8M% Q6X`mF f iеӮɀj -jF .F 6X`  iLh -mi -   LmM % E Q`i@i`8@`   -   -  ) -    L`` 0 +8  x4a\ JE !JM% Q 8M% Q6X`mF f iеӮɀj +jF .F 6X`  iLg +mi +   LlM % E Q`i@i`8@`   +   +  ) +    L`` 0 & & &` -) JfJfJfɀjfɀjfei)e e)`@ ?q%$$D"B %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o65c64-inkwell.mould65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018mou1@LLLLLLЬЎ  x d  X`x X`x "X` xX` `x  X` -*I)`xȑȑXȑ` `` %܌ܭI܌ܭ͸.82̬ LḬ0 ͷ18 -*̪ L̮0  (`L.L+?L %%%%#C %%%%%%%%%%%%% - o65c64-pot.mould65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018mou1WW]ctLLLLLL x  + .X`x X`x "X` xX` xX`x . +X``xȑȑXȑ` `` %ܭ) I -JJJ) @ܠԎԎmm̘ L;̜0 +mm̚ Lx̞0 . (`d? %%%%%%%% %%%%%  o65c64-joy.mould65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018mou1WW]ctLLLLLL x  + .X`x X`x "X` xX` `x . +X``xȑȑXȑ` `` %܌ܭI܌܍)) A)mm̠ L9̤0 +)@Jmm̢ L̦0 . (`d? %%%%%%%% %%%%% o65c64-1351.mould65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018mou1WW]ctLLLLLLx  + .X`x X`x "X` xX` `x . +X`)`xȑȑXȑ` `` %܌ܭI܌ܭԬ 7mm L*0 +Ԭ B8 Lw0 . (`8)@J8` 8jʬ8``c? %%%%%%%% %%%%% o658c64-dqbb.emdld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018emdu-H7ޭ h`ޠަ7`ަ7`x  X6 ``@`xi   +) JfJfJfɀjfɀjfei)e e)`@ ?q%$$D"B %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o65c64-vdc.emdld65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019emd1X,0 `    U ~ + ~    + + Ly`   H  h `,BL`` ׅ + ע` ,֑ +ȭ֑ +`ע`0 ׅ +  , +`     +`     + `,ʘ֍`,`,`   +ȱ  `@%%%%%%%%%%%%%%%% +%%$%D%$D%%%%$D%%$%D%%%% %%%%%%%%%%%%%%%%7%%%%%%%%%%%%o65dtv-himem.emdld65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019emd:;@R]nf?Ю@@Щ```ʢ nѢ`Ѣ`0ʢ  ӌӌ ӱȌӌӱө@ȱȱȱi)?  @ȱ +ȱ ӎӭJ`" #C$D$D#C%%%%% % %%%%%o65 c64-reu.emdld65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019emdUc +Zx e߈ e(ʈ`ߢߢߢߎߎߎ +``` ``0ߠߠߍߎߌߠ, ߈ߤ)xX` $D$D$D%$D%%%%%o65c64-isepic.emdld65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019emdGHMMUVޮߍʍ```ީ` Ltߑ + `ަLi L + `ަL  +ȱ I ȱI `C%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o658c64-dqbb.emdld65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019emdu-H7ޭ h`ޠަ7`ަ7`x  X6 ``@`xi     ̢X`̢`xi    X`xHH hh i L    X`LxHH hh iLW    X`LW i ȱ I ȱI `'M`6`'`c %%% %%$D$D%%%%% % -%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%% o65c64-isepic.emdld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018emdGHMMUVޮߍʍ```ީ` Ltߑ - `ަLi L - `ަL  -ȱ I ȱI `C%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o65bbdc64-georam.emdld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018emd`X 6 0 * $@  @  `bc`ߎ߬ȍߌޢ`bc`**ߥJJߩ` )Lޑ - `$PߥL )L - `$PߥL   -& -&JJ -ȱ I ȱI ` - - - - -+ %%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o6528*c64-c256k.emdld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018emdjkp/ ߪ ߨ܍ߩߊ)ߘ)ߩߍߊ) 0ߌ  X& ```x89 :i@  : ; ;X`89;`x89 :i@  ;:  X`x { L   +%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%% o65uuuc64-65816.emdld65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019emdpqwxiKF)uHHH ʩHhXuʎx`X`x`vw +u y M`vwy`v y + wȮuȄ M`: u  +  M`: u   + M`xHZgh0 + T(H8zhX`3%%%%%%$%Dy%$Dy%%$%Dy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o6528*c64-c256k.emdld65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019emdjkp/ ߪ ߨ܍ߩߊ)ߘ)ߩߍߊ) 0ߌ  X& ```x89 :i@  : ; ;X`89;`x89 :i@  ;:  X`x { L     X`ɀ@iL x { LX    X`ɀ@iLX  i@ ȱ I ȱI ` @@ -31053,10 +34658,7 @@ zeropage.oD )?`߱܎`ߥ)@ @Ȇ܎`> %%%%%$D;$D;%%% %%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%% %%o65c64-ramcart.emdld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018emdfgnnxyDލޮ4%ތ߈ `` `ގީ` Lߑ - `ޥL L - `ޥL  -ȱ I ȱI `D %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o65c64-ram.emdld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018emd#?G`/`iЅ  +%%%%% %%o65c64-ram.emdld65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019emd#?G`/`iЅ   ]``0FiЅ  )x ȱ @@ -31070,34 +34672,21 @@ zeropage.oD ȱ   ]  H)x hX`   iЅ ȱ L %%$%D%$D$D%%$%D% -%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%% %%%%%%%%%%o65uuuc64-65816.emdld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018emdpqwxiKF)uHHH ʩHhXuʎx`X`x`vw -u y M`vwy`v y - wȮuȄ M`: u  -  M`: u   - M`xHZgh0 - T(H8zhX`3%%%%%%$%Dy%$Dy%%$%Dy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o65 c64-reu.emdld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018emdUc -Zx e߈ e(ʈ`ߢߢߢߎߎߎ -``` ``0ߠߠߍߎߌߠ, ߈ߤ)xX` $D$D$D%$D%%%%%o65c64-vdc.emdld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018emd1X,0 `    U ~ - ~    - - Ly`   H  h `,BL`` ׅ - ע` ,֑ -ȭ֑ -`ע`0 ׅ -  , -`     -`     - `,ʘ֍`,`,`   -ȱ  `@%%%%%%%%%%%%%%%% -%%$%D%$D%%%%$D%%$%D%%%% %%%%%%%%%%%%%%%%7%%%%%%%%%%%%o65dtv-himem.emdld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018emd:;@R]nf?Ю@@Щ```ʢ nѢ`Ѣ`0ʢ  ӌӌ ӱȌӌӱө@ȱȱȱi)?  @ȱ -ȱ ӎӭJ`" #C$D$D#C%%%%% % %%%%%o65oooc64-ptvjoy.joyld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018joy``xܭX)I`xܭ܌X)I` ݭ)I`ݭ)) JI`U%%o65hhhc64-numpad.joyld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018joy!0``x/Э)0I0JJ/MȌ/X)>I>JH`  -  9o65@@@c64-stdjoy.joyld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018joy``xܭX)I`xܭ܌X)I`o65c64-hitjoy.joyld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018joyz``x݌݌Ȍ݌ܩݩQܭ))ݭ) - - JJJJ ܮ  AܩX`H hxܭX)I`xܭ܌X)I`I`I`/ - 0o65c64-swlink.serld65 V2.17 - Git 6c320f7Wed Jun 20 14:17:40 2018ser7E  -ޭ` -ޭL-@ l08 ޠ  ީ``` - l` D`?  ަ`H Dh` D`ޢ` `H)(؊HHޤ!LލLhL )$0`LFʆ` - `@ `L"B%%%%%%%% %  - % %% % - \ No newline at end of file +%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%% %%%%%%%%%%o65c64-ramcart.emdld65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019emdfgnnxyDލޮ4%ތ߈ `` `ގީ` Lߑ + `ޥL L + `ޥL  +ȱ I ȱI `D %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o65bbdc64-georam.emdld65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019emd`X 6 0 * $@  @  `bc`ߎ߬ȍߌޢ`bc`**ߥJJߩ` )Lޑ + `$PߥL )L + `$PߥL   +& +&JJ +ȱ I ȱI ` + + + + ++ %%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o65c64-inkwell.mould65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019mou1@LLLLLLЬЎ  x d  X`x X`x "X` xX` `x  X` +*I)`xȑȑXȑ` `` %܌ܭI܌ܭ͸.82̬ LḬ0 ͷ18 +*̪ L̮0  (`L.L+?L %%%%#C %%%%%%%%%%%%% + o65c64-1351.mould65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019mou1WW]ctLLLLLLx  + .X`x X`x "X` xX` `x . +X`)`xȑȑXȑ` `` %܌ܭI܌ܭԬ 7mm L*0 +Ԭ B8 Lw0 . (`8)@J8` 8jʬ8``c? %%%%%%%% %%%%% o65c64-joy.mould65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019mou1WW]ctLLLLLL x  + .X`x X`x "X` xX` `x . +X``xȑȑXȑ` `` %܌ܭI܌܍)) A)mm̠ L9̤0 +)@Jmm̢ L̦0 . (`d? %%%%%%%% %%%%% o65c64-pot.mould65 V2.18 - Git cab4910aThu Dec 19 00:52:38 2019mou1WW]ctLLLLLL x  + .X`x X`x "X` xX` xX`x . +X``xȑȑXȑ` `` %ܭ) I +JJJ) @ܠԎԎmm̘ L;̜0 +mm̚ Lx̞0 . (`d? %%%%%%%% %%%%%   \ No newline at end of file diff --git a/src/worker/fs/fs65-c64.js b/src/worker/fs/fs65-c64.js index 79a6ecfd..764ee711 100644 --- a/src/worker/fs/fs65-c64.js +++ b/src/worker/fs/fs65-c64.js @@ -22,11 +22,9 @@ Module.expectedDataFileDownloads++; var REMOTE_PACKAGE_BASE = 'fs65-c64.data'; if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) { Module['locateFile'] = Module['locateFilePackage']; - Module.printErr('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)'); + err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)'); } - var REMOTE_PACKAGE_NAME = typeof Module['locateFile'] === 'function' ? - Module['locateFile'](REMOTE_PACKAGE_BASE) : - ((Module['filePackagePrefixURL'] || '') + REMOTE_PACKAGE_BASE); + var REMOTE_PACKAGE_NAME = Module['locateFile'] ? Module['locateFile'](REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE; var REMOTE_PACKAGE_SIZE = metadata.remote_package_size; var PACKAGE_UUID = metadata.package_uuid; @@ -102,27 +100,26 @@ Module.expectedDataFileDownloads++; } Module['FS_createPath']('/', 'include', true, true); Module['FS_createPath']('/include', 'em', true, true); -Module['FS_createPath']('/include', 'mouse', true, true); -Module['FS_createPath']('/include', 'tgi', true, true); Module['FS_createPath']('/include', 'geos', true, true); -Module['FS_createPath']('/include', 'sys', true, true); +Module['FS_createPath']('/include', 'tgi', true, true); +Module['FS_createPath']('/include', 'mouse', true, true); Module['FS_createPath']('/include', 'joystick', true, true); +Module['FS_createPath']('/include', 'sys', true, true); Module['FS_createPath']('/', 'asminc', true, true); Module['FS_createPath']('/', 'cfg', true, true); Module['FS_createPath']('/', 'lib', true, true); Module['FS_createPath']('/', 'target', true, true); Module['FS_createPath']('/target', 'c64', true, true); Module['FS_createPath']('/target/c64', 'drv', true, true); -Module['FS_createPath']('/target/c64/drv', 'tgi', true, true); -Module['FS_createPath']('/target/c64/drv', 'mou', true, true); -Module['FS_createPath']('/target/c64/drv', 'emd', true, true); -Module['FS_createPath']('/target/c64/drv', 'joy', true, true); Module['FS_createPath']('/target/c64/drv', 'ser', true, true); +Module['FS_createPath']('/target/c64/drv', 'joy', true, true); +Module['FS_createPath']('/target/c64/drv', 'tgi', true, true); +Module['FS_createPath']('/target/c64/drv', 'emd', true, true); +Module['FS_createPath']('/target/c64/drv', 'mou', true, true); - function DataRequest(start, end, crunched, audio) { + function DataRequest(start, end, audio) { this.start = start; this.end = end; - this.crunched = crunched; this.audio = audio; } DataRequest.prototype = { @@ -135,9 +132,7 @@ Module['FS_createPath']('/target/c64/drv', 'ser', true, true); send: function() {}, onload: function() { var byteArray = this.byteArray.subarray(this.start, this.end); - - this.finish(byteArray); - + this.finish(byteArray); }, finish: function(byteArray) { var that = this; @@ -151,7 +146,7 @@ Module['FS_createPath']('/target/c64/drv', 'ser', true, true); var files = metadata.files; for (var i = 0; i < files.length; ++i) { - new DataRequest(files[i].start, files[i].end, files[i].crunched, files[i].audio).open('GET', files[i].filename); + new DataRequest(files[i].start, files[i].end, files[i].audio).open('GET', files[i].filename); } @@ -164,7 +159,6 @@ Module['FS_createPath']('/target/c64/drv', 'ser', true, true); // copy the entire loaded file into a spot in the heap. Files will refer to slices in that. They cannot be freed though // (we may be allocating before malloc is ready, during startup). - if (Module['SPLIT_MEMORY']) Module.printErr('warning: you should run the file packager with --no-heap-copy when SPLIT_MEMORY is used, otherwise copying into the heap may fail due to the splitting'); var ptr = Module['getMemory'](byteArray.length); Module['HEAPU8'].set(byteArray, ptr); DataRequest.prototype.byteArray = Module['HEAPU8'].subarray(ptr, ptr+byteArray.length); @@ -199,22 +193,25 @@ Module['FS_createPath']('/target/c64/drv', 'ser', true, true); Module['removeRunDependency']('fs65-c64.js.metadata'); } - var REMOTE_METADATA_NAME = typeof Module['locateFile'] === 'function' ? - Module['locateFile']('fs65-c64.js.metadata') : - ((Module['filePackagePrefixURL'] || '') + 'fs65-c64.js.metadata'); - var xhr = new XMLHttpRequest(); - xhr.onreadystatechange = function() { - if (xhr.readyState === 4 && xhr.status === 200) { - loadPackage(JSON.parse(xhr.responseText)); - } - } - xhr.open('GET', REMOTE_METADATA_NAME, true); - xhr.overrideMimeType('application/json'); - xhr.send(null); - - if (!Module['preRun']) Module['preRun'] = []; - Module["preRun"].push(function() { + function runMetaWithFS() { Module['addRunDependency']('fs65-c64.js.metadata'); - }); + var REMOTE_METADATA_NAME = Module['locateFile'] ? Module['locateFile']('fs65-c64.js.metadata', '') : 'fs65-c64.js.metadata'; + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function() { + if (xhr.readyState === 4 && xhr.status === 200) { + loadPackage(JSON.parse(xhr.responseText)); + } + } + xhr.open('GET', REMOTE_METADATA_NAME, true); + xhr.overrideMimeType('application/json'); + xhr.send(null); + } + + if (Module['calledRun']) { + runMetaWithFS(); + } else { + if (!Module['preRun']) Module['preRun'] = []; + Module["preRun"].push(runMetaWithFS); + } })(); diff --git a/src/worker/fs/fs65-c64.js.metadata b/src/worker/fs/fs65-c64.js.metadata index 90590997..e1e31502 100644 --- a/src/worker/fs/fs65-c64.js.metadata +++ b/src/worker/fs/fs65-c64.js.metadata @@ -1 +1 @@ -{"files":[{"audio":0,"start":0,"crunched":0,"end":11354,"filename":"/include/cbm.h"},{"audio":0,"start":11354,"crunched":0,"end":14764,"filename":"/include/_6525.h"},{"audio":0,"start":14764,"crunched":0,"end":17425,"filename":"/include/_pia.h"},{"audio":0,"start":17425,"crunched":0,"end":20571,"filename":"/include/limits.h"},{"audio":0,"start":20571,"crunched":0,"end":23639,"filename":"/include/plus4.h"},{"audio":0,"start":23639,"crunched":0,"end":31538,"filename":"/include/serial.h"},{"audio":0,"start":31538,"crunched":0,"end":34681,"filename":"/include/_pbi.h"},{"audio":0,"start":34681,"crunched":0,"end":38643,"filename":"/include/_6526.h"},{"audio":0,"start":38643,"crunched":0,"end":43588,"filename":"/include/apple2enh.h"},{"audio":0,"start":43588,"crunched":0,"end":47138,"filename":"/include/fcntl.h"},{"audio":0,"start":47138,"crunched":0,"end":58146,"filename":"/include/accelerator.h"},{"audio":0,"start":58146,"crunched":0,"end":59264,"filename":"/include/_heap.h"},{"audio":0,"start":59264,"crunched":0,"end":65453,"filename":"/include/stdio.h"},{"audio":0,"start":65453,"crunched":0,"end":68316,"filename":"/include/iso646.h"},{"audio":0,"start":68316,"crunched":0,"end":71273,"filename":"/include/_6551.h"},{"audio":0,"start":71273,"crunched":0,"end":77764,"filename":"/include/c128.h"},{"audio":0,"start":77764,"crunched":0,"end":86705,"filename":"/include/conio.h"},{"audio":0,"start":86705,"crunched":0,"end":92149,"filename":"/include/6502.h"},{"audio":0,"start":92149,"crunched":0,"end":109247,"filename":"/include/apple2_filetype.h"},{"audio":0,"start":109247,"crunched":0,"end":118053,"filename":"/include/mouse.h"},{"audio":0,"start":118053,"crunched":0,"end":126614,"filename":"/include/lynx.h"},{"audio":0,"start":126614,"crunched":0,"end":140690,"filename":"/include/atari.h"},{"audio":0,"start":140690,"crunched":0,"end":150664,"filename":"/include/atari_screen_charmap.h"},{"audio":0,"start":150664,"crunched":0,"end":156412,"filename":"/include/stdlib.h"},{"audio":0,"start":156412,"crunched":0,"end":160112,"filename":"/include/pen.h"},{"audio":0,"start":160112,"crunched":0,"end":162618,"filename":"/include/stdbool.h"},{"audio":0,"start":162618,"crunched":0,"end":167518,"filename":"/include/cc65.h"},{"audio":0,"start":167518,"crunched":0,"end":170859,"filename":"/include/signal.h"},{"audio":0,"start":170859,"crunched":0,"end":174485,"filename":"/include/_sid.h"},{"audio":0,"start":174485,"crunched":0,"end":185320,"filename":"/include/_vic2.h"},{"audio":0,"start":185320,"crunched":0,"end":189629,"filename":"/include/unistd.h"},{"audio":0,"start":189629,"crunched":0,"end":198096,"filename":"/include/ctype.h"},{"audio":0,"start":198096,"crunched":0,"end":209254,"filename":"/include/_suzy.h"},{"audio":0,"start":209254,"crunched":0,"end":216208,"filename":"/include/zlib.h"},{"audio":0,"start":216208,"crunched":0,"end":221983,"filename":"/include/dbg.h"},{"audio":0,"start":221983,"crunched":0,"end":228177,"filename":"/include/_gtia.h"},{"audio":0,"start":228177,"crunched":0,"end":231169,"filename":"/include/target.h"},{"audio":0,"start":231169,"crunched":0,"end":236252,"filename":"/include/errno.h"},{"audio":0,"start":236252,"crunched":0,"end":241270,"filename":"/include/_ted.h"},{"audio":0,"start":241270,"crunched":0,"end":246405,"filename":"/include/joystick.h"},{"audio":0,"start":246405,"crunched":0,"end":252693,"filename":"/include/em.h"},{"audio":0,"start":252693,"crunched":0,"end":255905,"filename":"/include/device.h"},{"audio":0,"start":255905,"crunched":0,"end":258732,"filename":"/include/_vdc.h"},{"audio":0,"start":258732,"crunched":0,"end":261565,"filename":"/include/assert.h"},{"audio":0,"start":261565,"crunched":0,"end":264411,"filename":"/include/setjmp.h"},{"audio":0,"start":264411,"crunched":0,"end":270607,"filename":"/include/stdint.h"},{"audio":0,"start":270607,"crunched":0,"end":276886,"filename":"/include/cbm264.h"},{"audio":0,"start":276886,"crunched":0,"end":281280,"filename":"/include/vic20.h"},{"audio":0,"start":281280,"crunched":0,"end":286633,"filename":"/include/_mikey.h"},{"audio":0,"start":286633,"crunched":0,"end":290290,"filename":"/include/locale.h"},{"audio":0,"start":290290,"crunched":0,"end":292725,"filename":"/include/_tia.h"},{"audio":0,"start":292725,"crunched":0,"end":296506,"filename":"/include/_6522.h"},{"audio":0,"start":296506,"crunched":0,"end":299338,"filename":"/include/_6545.h"},{"audio":0,"start":299338,"crunched":0,"end":301979,"filename":"/include/lz4.h"},{"audio":0,"start":301979,"crunched":0,"end":306928,"filename":"/include/cbm_filetype.h"},{"audio":0,"start":306928,"crunched":0,"end":313728,"filename":"/include/nes.h"},{"audio":0,"start":313728,"crunched":0,"end":316939,"filename":"/include/geos.h"},{"audio":0,"start":316939,"crunched":0,"end":322409,"filename":"/include/dio.h"},{"audio":0,"start":322409,"crunched":0,"end":330409,"filename":"/include/o65.h"},{"audio":0,"start":330409,"crunched":0,"end":333322,"filename":"/include/stdarg.h"},{"audio":0,"start":333322,"crunched":0,"end":336379,"filename":"/include/stddef.h"},{"audio":0,"start":336379,"crunched":0,"end":341703,"filename":"/include/dirent.h"},{"audio":0,"start":341703,"crunched":0,"end":342751,"filename":"/include/_riot.h"},{"audio":0,"start":342751,"crunched":0,"end":346997,"filename":"/include/_pokey.h"},{"audio":0,"start":346997,"crunched":0,"end":352166,"filename":"/include/supervision.h"},{"audio":0,"start":352166,"crunched":0,"end":357968,"filename":"/include/atmos.h"},{"audio":0,"start":357968,"crunched":0,"end":361076,"filename":"/include/peekpoke.h"},{"audio":0,"start":361076,"crunched":0,"end":368851,"filename":"/include/apple2.h"},{"audio":0,"start":368851,"crunched":0,"end":376661,"filename":"/include/inttypes.h"},{"audio":0,"start":376661,"crunched":0,"end":382333,"filename":"/include/time.h"},{"audio":0,"start":382333,"crunched":0,"end":387315,"filename":"/include/modload.h"},{"audio":0,"start":387315,"crunched":0,"end":392419,"filename":"/include/string.h"},{"audio":0,"start":392419,"crunched":0,"end":397224,"filename":"/include/pce.h"},{"audio":0,"start":397224,"crunched":0,"end":398273,"filename":"/include/atari2600.h"},{"audio":0,"start":398273,"crunched":0,"end":401072,"filename":"/include/osic1p.h"},{"audio":0,"start":401072,"crunched":0,"end":407098,"filename":"/include/cbm610.h"},{"audio":0,"start":407098,"crunched":0,"end":410814,"filename":"/include/_vic.h"},{"audio":0,"start":410814,"crunched":0,"end":415461,"filename":"/include/pet.h"},{"audio":0,"start":415461,"crunched":0,"end":419676,"filename":"/include/telestrat.h"},{"audio":0,"start":419676,"crunched":0,"end":427330,"filename":"/include/gamate.h"},{"audio":0,"start":427330,"crunched":0,"end":430868,"filename":"/include/creativision.h"},{"audio":0,"start":430868,"crunched":0,"end":436693,"filename":"/include/_antic.h"},{"audio":0,"start":436693,"crunched":0,"end":441577,"filename":"/include/atari5200.h"},{"audio":0,"start":441577,"crunched":0,"end":444542,"filename":"/include/c16.h"},{"audio":0,"start":444542,"crunched":0,"end":451482,"filename":"/include/c64.h"},{"audio":0,"start":451482,"crunched":0,"end":462305,"filename":"/include/tgi.h"},{"audio":0,"start":462305,"crunched":0,"end":468901,"filename":"/include/cbm510.h"},{"audio":0,"start":468901,"crunched":0,"end":478737,"filename":"/include/atari_atascii_charmap.h"},{"audio":0,"start":478737,"crunched":0,"end":482633,"filename":"/include/em/em-kernel.h"},{"audio":0,"start":482633,"crunched":0,"end":485933,"filename":"/include/mouse/mouse-kernel.h"},{"audio":0,"start":485933,"crunched":0,"end":490352,"filename":"/include/tgi/tgi-vectorfont.h"},{"audio":0,"start":490352,"crunched":0,"end":494639,"filename":"/include/tgi/tgi-kernel.h"},{"audio":0,"start":494639,"crunched":0,"end":498207,"filename":"/include/tgi/tgi-error.h"},{"audio":0,"start":498207,"crunched":0,"end":500560,"filename":"/include/geos/gsprite.h"},{"audio":0,"start":500560,"crunched":0,"end":502026,"filename":"/include/geos/gconst.h"},{"audio":0,"start":502026,"crunched":0,"end":507432,"filename":"/include/geos/ggraph.h"},{"audio":0,"start":507432,"crunched":0,"end":508653,"filename":"/include/geos/gmenu.h"},{"audio":0,"start":508653,"crunched":0,"end":509753,"filename":"/include/geos/gmemory.h"},{"audio":0,"start":509753,"crunched":0,"end":510310,"filename":"/include/geos/gprocess.h"},{"audio":0,"start":510310,"crunched":0,"end":513800,"filename":"/include/geos/gdlgbox.h"},{"audio":0,"start":513800,"crunched":0,"end":526604,"filename":"/include/geos/gsym.h"},{"audio":0,"start":526604,"crunched":0,"end":528722,"filename":"/include/geos/gfile.h"},{"audio":0,"start":528722,"crunched":0,"end":531009,"filename":"/include/geos/gdisk.h"},{"audio":0,"start":531009,"crunched":0,"end":536207,"filename":"/include/geos/gstruct.h"},{"audio":0,"start":536207,"crunched":0,"end":537507,"filename":"/include/geos/gsys.h"},{"audio":0,"start":537507,"crunched":0,"end":541578,"filename":"/include/sys/utsname.h"},{"audio":0,"start":541578,"crunched":0,"end":544809,"filename":"/include/sys/types.h"},{"audio":0,"start":544809,"crunched":0,"end":548759,"filename":"/include/joystick/joy-kernel.h"},{"audio":0,"start":548759,"crunched":0,"end":551902,"filename":"/asminc/time.inc"},{"audio":0,"start":551902,"crunched":0,"end":596152,"filename":"/asminc/atari.inc"},{"audio":0,"start":596152,"crunched":0,"end":599262,"filename":"/asminc/pet.inc"},{"audio":0,"start":599262,"crunched":0,"end":600142,"filename":"/asminc/_heap.inc"},{"audio":0,"start":600142,"crunched":0,"end":603533,"filename":"/asminc/atmos.inc"},{"audio":0,"start":603533,"crunched":0,"end":606379,"filename":"/asminc/pce.inc"},{"audio":0,"start":606379,"crunched":0,"end":609675,"filename":"/asminc/tgi-error.inc"},{"audio":0,"start":609675,"crunched":0,"end":612758,"filename":"/asminc/em-error.inc"},{"audio":0,"start":612758,"crunched":0,"end":614276,"filename":"/asminc/creativision.inc"},{"audio":0,"start":614276,"crunched":0,"end":619238,"filename":"/asminc/em-kernel.inc"},{"audio":0,"start":619238,"crunched":0,"end":619959,"filename":"/asminc/zeropage.inc"},{"audio":0,"start":619959,"crunched":0,"end":625719,"filename":"/asminc/lynx.inc"},{"audio":0,"start":625719,"crunched":0,"end":636202,"filename":"/asminc/tgi-kernel.inc"},{"audio":0,"start":636202,"crunched":0,"end":636427,"filename":"/asminc/get_tv.inc"},{"audio":0,"start":636427,"crunched":0,"end":640447,"filename":"/asminc/modload.inc"},{"audio":0,"start":640447,"crunched":0,"end":641443,"filename":"/asminc/ctype.inc"},{"audio":0,"start":641443,"crunched":0,"end":643143,"filename":"/asminc/accelerator.inc"},{"audio":0,"start":643143,"crunched":0,"end":645775,"filename":"/asminc/longbranch.mac"},{"audio":0,"start":645775,"crunched":0,"end":646243,"filename":"/asminc/_file.inc"},{"audio":0,"start":646243,"crunched":0,"end":649477,"filename":"/asminc/atari_gtia.inc"},{"audio":0,"start":649477,"crunched":0,"end":650433,"filename":"/asminc/generic.mac"},{"audio":0,"start":650433,"crunched":0,"end":653762,"filename":"/asminc/atari_antic.inc"},{"audio":0,"start":653762,"crunched":0,"end":656805,"filename":"/asminc/signal.inc"},{"audio":0,"start":656805,"crunched":0,"end":663940,"filename":"/asminc/c128.inc"},{"audio":0,"start":663940,"crunched":0,"end":666746,"filename":"/asminc/nes.inc"},{"audio":0,"start":666746,"crunched":0,"end":669631,"filename":"/asminc/joy-error.inc"},{"audio":0,"start":669631,"crunched":0,"end":676358,"filename":"/asminc/ser-kernel.inc"},{"audio":0,"start":676358,"crunched":0,"end":683018,"filename":"/asminc/c64.inc"},{"audio":0,"start":683018,"crunched":0,"end":684306,"filename":"/asminc/apple2.mac"},{"audio":0,"start":684306,"crunched":0,"end":685355,"filename":"/asminc/atari2600_tia.inc"},{"audio":0,"start":685355,"crunched":0,"end":687130,"filename":"/asminc/atari.mac"},{"audio":0,"start":687130,"crunched":0,"end":690574,"filename":"/asminc/ser-error.inc"},{"audio":0,"start":690574,"crunched":0,"end":691725,"filename":"/asminc/cbm_filetype.inc"},{"audio":0,"start":691725,"crunched":0,"end":692073,"filename":"/asminc/fcntl.inc"},{"audio":0,"start":692073,"crunched":0,"end":698936,"filename":"/asminc/telestrat.inc"},{"audio":0,"start":698936,"crunched":0,"end":701540,"filename":"/asminc/cbm610.inc"},{"audio":0,"start":701540,"crunched":0,"end":703275,"filename":"/asminc/atari_pokey.inc"},{"audio":0,"start":703275,"crunched":0,"end":703468,"filename":"/asminc/atari2600.inc"},{"audio":0,"start":703468,"crunched":0,"end":704876,"filename":"/asminc/errno.inc"},{"audio":0,"start":704876,"crunched":0,"end":708650,"filename":"/asminc/atari5200.inc"},{"audio":0,"start":708650,"crunched":0,"end":712013,"filename":"/asminc/stdio.inc"},{"audio":0,"start":712013,"crunched":0,"end":716407,"filename":"/asminc/cbm510.inc"},{"audio":0,"start":716407,"crunched":0,"end":717821,"filename":"/asminc/gamate.inc"},{"audio":0,"start":717821,"crunched":0,"end":721744,"filename":"/asminc/tgi-vectorfont.inc"},{"audio":0,"start":721744,"crunched":0,"end":722022,"filename":"/asminc/module.mac"},{"audio":0,"start":722022,"crunched":0,"end":729419,"filename":"/asminc/o65.inc"},{"audio":0,"start":729419,"crunched":0,"end":733422,"filename":"/asminc/joy-kernel.inc"},{"audio":0,"start":733422,"crunched":0,"end":736237,"filename":"/asminc/utsname.inc"},{"audio":0,"start":736237,"crunched":0,"end":744361,"filename":"/asminc/smc.inc"},{"audio":0,"start":744361,"crunched":0,"end":744501,"filename":"/asminc/c16.inc"},{"audio":0,"start":744501,"crunched":0,"end":745344,"filename":"/asminc/cpu.mac"},{"audio":0,"start":745344,"crunched":0,"end":745728,"filename":"/asminc/atari2600_riot.inc"},{"audio":0,"start":745728,"crunched":0,"end":747053,"filename":"/asminc/cbm.mac"},{"audio":0,"start":747053,"crunched":0,"end":758611,"filename":"/asminc/opcodes.inc"},{"audio":0,"start":758611,"crunched":0,"end":763110,"filename":"/asminc/vic20.inc"},{"audio":0,"start":763110,"crunched":0,"end":766042,"filename":"/asminc/plus4.inc"},{"audio":0,"start":766042,"crunched":0,"end":767514,"filename":"/asminc/supervision.inc"},{"audio":0,"start":767514,"crunched":0,"end":775214,"filename":"/asminc/mouse-kernel.inc"},{"audio":0,"start":775214,"crunched":0,"end":777562,"filename":"/asminc/apple2.inc"},{"audio":0,"start":777562,"crunched":0,"end":778261,"filename":"/cfg/c64-asm.cfg"},{"audio":0,"start":778261,"crunched":0,"end":782839,"filename":"/cfg/c64-overlay.cfg"},{"audio":0,"start":782839,"crunched":0,"end":784564,"filename":"/cfg/c64.cfg"},{"audio":0,"start":784564,"crunched":0,"end":786329,"filename":"/lib/c64-soft80.o"},{"audio":0,"start":786329,"crunched":0,"end":788146,"filename":"/lib/c64-soft80mono.o"},{"audio":0,"start":788146,"crunched":0,"end":788519,"filename":"/lib/c64-tgimousedata.o"},{"audio":0,"start":788519,"crunched":0,"end":1918202,"filename":"/lib/c64.lib"},{"audio":0,"start":1918202,"crunched":0,"end":1919737,"filename":"/target/c64/drv/tgi/c64-hi.tgi"},{"audio":0,"start":1919737,"crunched":0,"end":1920455,"filename":"/target/c64/drv/mou/c64-inkwell.mou"},{"audio":0,"start":1920455,"crunched":0,"end":1921138,"filename":"/target/c64/drv/mou/c64-pot.mou"},{"audio":0,"start":1921138,"crunched":0,"end":1921827,"filename":"/target/c64/drv/mou/c64-joy.mou"},{"audio":0,"start":1921827,"crunched":0,"end":1922577,"filename":"/target/c64/drv/mou/c64-1351.mou"},{"audio":0,"start":1922577,"crunched":0,"end":1923308,"filename":"/target/c64/drv/emd/c64-dqbb.emd"},{"audio":0,"start":1923308,"crunched":0,"end":1923718,"filename":"/target/c64/drv/emd/c64-isepic.emd"},{"audio":0,"start":1923718,"crunched":0,"end":1924310,"filename":"/target/c64/drv/emd/c64-georam.emd"},{"audio":0,"start":1924310,"crunched":0,"end":1925209,"filename":"/target/c64/drv/emd/c64-c256k.emd"},{"audio":0,"start":1925209,"crunched":0,"end":1925682,"filename":"/target/c64/drv/emd/c64-ramcart.emd"},{"audio":0,"start":1925682,"crunched":0,"end":1926204,"filename":"/target/c64/drv/emd/c64-ram.emd"},{"audio":0,"start":1926204,"crunched":0,"end":1926867,"filename":"/target/c64/drv/emd/c64-65816.emd"},{"audio":0,"start":1926867,"crunched":0,"end":1927314,"filename":"/target/c64/drv/emd/c64-reu.emd"},{"audio":0,"start":1927314,"crunched":0,"end":1928118,"filename":"/target/c64/drv/emd/c64-vdc.emd"},{"audio":0,"start":1928118,"crunched":0,"end":1928512,"filename":"/target/c64/drv/emd/dtv-himem.emd"},{"audio":0,"start":1928512,"crunched":0,"end":1928745,"filename":"/target/c64/drv/joy/c64-ptvjoy.joy"},{"audio":0,"start":1928745,"crunched":0,"end":1928969,"filename":"/target/c64/drv/joy/c64-numpad.joy"},{"audio":0,"start":1928969,"crunched":0,"end":1929151,"filename":"/target/c64/drv/joy/c64-stdjoy.joy"},{"audio":0,"start":1929151,"crunched":0,"end":1929472,"filename":"/target/c64/drv/joy/c64-hitjoy.joy"},{"audio":0,"start":1929472,"crunched":0,"end":1930102,"filename":"/target/c64/drv/ser/c64-swlink.ser"}],"remote_package_size":1930102,"package_uuid":"8ed5f348-f4f9-414d-af33-b97a78d87f10"} \ No newline at end of file +{"files":[{"start":0,"audio":0,"end":2641,"filename":"/include/lz4.h"},{"start":2641,"audio":0,"end":9610,"filename":"/include/c64.h"},{"start":9610,"audio":0,"end":12753,"filename":"/include/_pbi.h"},{"start":12753,"audio":0,"end":29851,"filename":"/include/apple2_filetype.h"},{"start":29851,"audio":0,"end":36651,"filename":"/include/nes.h"},{"start":36651,"audio":0,"end":39484,"filename":"/include/assert.h"},{"start":39484,"audio":0,"end":42316,"filename":"/include/_6545.h"},{"start":42316,"audio":0,"end":46097,"filename":"/include/_6522.h"},{"start":46097,"audio":0,"end":51079,"filename":"/include/modload.h"},{"start":51079,"audio":0,"end":55388,"filename":"/include/unistd.h"},{"start":55388,"audio":0,"end":61906,"filename":"/include/c128.h"},{"start":61906,"audio":0,"end":69993,"filename":"/include/cx16.h"},{"start":69993,"audio":0,"end":75346,"filename":"/include/_mikey.h"},{"start":75346,"audio":0,"end":78311,"filename":"/include/c16.h"},{"start":78311,"audio":0,"end":81721,"filename":"/include/_6525.h"},{"start":81721,"audio":0,"end":87910,"filename":"/include/stdio.h"},{"start":87910,"audio":0,"end":96471,"filename":"/include/lynx.h"},{"start":96471,"audio":0,"end":101941,"filename":"/include/6502.h"},{"start":101941,"audio":0,"end":107045,"filename":"/include/string.h"},{"start":107045,"audio":0,"end":110934,"filename":"/include/atari5200.h"},{"start":110934,"audio":0,"end":114650,"filename":"/include/_vic.h"},{"start":114650,"audio":0,"end":119599,"filename":"/include/cbm_filetype.h"},{"start":119599,"audio":0,"end":124923,"filename":"/include/dirent.h"},{"start":124923,"audio":0,"end":129317,"filename":"/include/vic20.h"},{"start":129317,"audio":0,"end":139291,"filename":"/include/atari_screen_charmap.h"},{"start":139291,"audio":0,"end":142154,"filename":"/include/iso646.h"},{"start":142154,"audio":0,"end":145811,"filename":"/include/locale.h"},{"start":145811,"audio":0,"end":148868,"filename":"/include/stddef.h"},{"start":148868,"audio":0,"end":155156,"filename":"/include/em.h"},{"start":155156,"audio":0,"end":160297,"filename":"/include/cc65.h"},{"start":160297,"audio":0,"end":162803,"filename":"/include/stdbool.h"},{"start":162803,"audio":0,"end":165602,"filename":"/include/osic1p.h"},{"start":165602,"audio":0,"end":171601,"filename":"/include/stdlib.h"},{"start":171601,"audio":0,"end":193198,"filename":"/include/atari.h"},{"start":193198,"audio":0,"end":194316,"filename":"/include/_heap.h"},{"start":194316,"audio":0,"end":204056,"filename":"/include/cbm_petscii_charmap.h"},{"start":204056,"audio":0,"end":212997,"filename":"/include/conio.h"},{"start":212997,"audio":0,"end":218467,"filename":"/include/dio.h"},{"start":218467,"audio":0,"end":229302,"filename":"/include/_vic2.h"},{"start":229302,"audio":0,"end":235243,"filename":"/include/time.h"},{"start":235243,"audio":0,"end":241839,"filename":"/include/cbm510.h"},{"start":241839,"audio":0,"end":251675,"filename":"/include/atari_atascii_charmap.h"},{"start":251675,"audio":0,"end":256810,"filename":"/include/joystick.h"},{"start":256810,"audio":0,"end":267968,"filename":"/include/_suzy.h"},{"start":267968,"audio":0,"end":278791,"filename":"/include/tgi.h"},{"start":278791,"audio":0,"end":286690,"filename":"/include/serial.h"},{"start":286690,"audio":0,"end":293714,"filename":"/include/zlib.h"},{"start":293714,"audio":0,"end":299910,"filename":"/include/stdint.h"},{"start":299910,"audio":0,"end":305936,"filename":"/include/cbm610.h"},{"start":305936,"audio":0,"end":310583,"filename":"/include/pet.h"},{"start":310583,"audio":0,"end":313214,"filename":"/include/_tia.h"},{"start":313214,"audio":0,"end":321676,"filename":"/include/ctype.h"},{"start":321676,"audio":0,"end":324503,"filename":"/include/_vdc.h"},{"start":324503,"audio":0,"end":328465,"filename":"/include/_6526.h"},{"start":328465,"audio":0,"end":331676,"filename":"/include/geos.h"},{"start":331676,"audio":0,"end":332725,"filename":"/include/atari2600.h"},{"start":332725,"audio":0,"end":335937,"filename":"/include/device.h"},{"start":335937,"audio":0,"end":340744,"filename":"/include/pce.h"},{"start":340744,"audio":0,"end":345417,"filename":"/include/apple2enh.h"},{"start":345417,"audio":0,"end":351696,"filename":"/include/cbm264.h"},{"start":351696,"audio":0,"end":354764,"filename":"/include/plus4.h"},{"start":354764,"audio":0,"end":355812,"filename":"/include/_riot.h"},{"start":355812,"audio":0,"end":363622,"filename":"/include/inttypes.h"},{"start":363622,"audio":0,"end":366730,"filename":"/include/peekpoke.h"},{"start":366730,"audio":0,"end":369576,"filename":"/include/setjmp.h"},{"start":369576,"audio":0,"end":375351,"filename":"/include/dbg.h"},{"start":375351,"audio":0,"end":387179,"filename":"/include/_antic.h"},{"start":387179,"audio":0,"end":390171,"filename":"/include/target.h"},{"start":390171,"audio":0,"end":404010,"filename":"/include/_gtia.h"},{"start":404010,"audio":0,"end":406923,"filename":"/include/stdarg.h"},{"start":406923,"audio":0,"end":414577,"filename":"/include/gamate.h"},{"start":414577,"audio":0,"end":418127,"filename":"/include/fcntl.h"},{"start":418127,"audio":0,"end":421729,"filename":"/include/creativision.h"},{"start":421729,"audio":0,"end":425944,"filename":"/include/telestrat.h"},{"start":425944,"audio":0,"end":431746,"filename":"/include/atmos.h"},{"start":431746,"audio":0,"end":472866,"filename":"/include/_atarios.h"},{"start":472866,"audio":0,"end":484341,"filename":"/include/cbm.h"},{"start":484341,"audio":0,"end":487682,"filename":"/include/signal.h"},{"start":487682,"audio":0,"end":491308,"filename":"/include/_sid.h"},{"start":491308,"audio":0,"end":495008,"filename":"/include/pen.h"},{"start":495008,"audio":0,"end":502989,"filename":"/include/apple2.h"},{"start":502989,"audio":0,"end":513997,"filename":"/include/accelerator.h"},{"start":513997,"audio":0,"end":519080,"filename":"/include/errno.h"},{"start":519080,"audio":0,"end":522226,"filename":"/include/limits.h"},{"start":522226,"audio":0,"end":533613,"filename":"/include/_pokey.h"},{"start":533613,"audio":0,"end":536657,"filename":"/include/_pia.h"},{"start":536657,"audio":0,"end":545463,"filename":"/include/mouse.h"},{"start":545463,"audio":0,"end":555249,"filename":"/include/ascii_charmap.h"},{"start":555249,"audio":0,"end":560418,"filename":"/include/supervision.h"},{"start":560418,"audio":0,"end":565436,"filename":"/include/_ted.h"},{"start":565436,"audio":0,"end":573436,"filename":"/include/o65.h"},{"start":573436,"audio":0,"end":576393,"filename":"/include/_6551.h"},{"start":576393,"audio":0,"end":585639,"filename":"/include/cbm_screen_charmap.h"},{"start":585639,"audio":0,"end":589535,"filename":"/include/em/em-kernel.h"},{"start":589535,"audio":0,"end":602339,"filename":"/include/geos/gsym.h"},{"start":602339,"audio":0,"end":607537,"filename":"/include/geos/gstruct.h"},{"start":607537,"audio":0,"end":609890,"filename":"/include/geos/gsprite.h"},{"start":609890,"audio":0,"end":612177,"filename":"/include/geos/gdisk.h"},{"start":612177,"audio":0,"end":613477,"filename":"/include/geos/gsys.h"},{"start":613477,"audio":0,"end":614698,"filename":"/include/geos/gmenu.h"},{"start":614698,"audio":0,"end":616164,"filename":"/include/geos/gconst.h"},{"start":616164,"audio":0,"end":617264,"filename":"/include/geos/gmemory.h"},{"start":617264,"audio":0,"end":620754,"filename":"/include/geos/gdlgbox.h"},{"start":620754,"audio":0,"end":622872,"filename":"/include/geos/gfile.h"},{"start":622872,"audio":0,"end":628329,"filename":"/include/geos/ggraph.h"},{"start":628329,"audio":0,"end":628886,"filename":"/include/geos/gprocess.h"},{"start":628886,"audio":0,"end":632454,"filename":"/include/tgi/tgi-error.h"},{"start":632454,"audio":0,"end":636741,"filename":"/include/tgi/tgi-kernel.h"},{"start":636741,"audio":0,"end":641160,"filename":"/include/tgi/tgi-vectorfont.h"},{"start":641160,"audio":0,"end":644460,"filename":"/include/mouse/mouse-kernel.h"},{"start":644460,"audio":0,"end":648410,"filename":"/include/joystick/joy-kernel.h"},{"start":648410,"audio":0,"end":651641,"filename":"/include/sys/types.h"},{"start":651641,"audio":0,"end":655712,"filename":"/include/sys/utsname.h"},{"start":655712,"audio":0,"end":658870,"filename":"/include/sys/stat.h"},{"start":658870,"audio":0,"end":662314,"filename":"/asminc/ser-error.inc"},{"start":662314,"audio":0,"end":669317,"filename":"/asminc/c128.inc"},{"start":669317,"audio":0,"end":670366,"filename":"/asminc/atari2600_tia.inc"},{"start":670366,"audio":0,"end":671246,"filename":"/asminc/_heap.inc"},{"start":671246,"audio":0,"end":674356,"filename":"/asminc/pet.inc"},{"start":674356,"audio":0,"end":685914,"filename":"/asminc/opcodes.inc"},{"start":685914,"audio":0,"end":689277,"filename":"/asminc/stdio.inc"},{"start":689277,"audio":0,"end":693200,"filename":"/asminc/tgi-vectorfont.inc"},{"start":693200,"audio":0,"end":696006,"filename":"/asminc/nes.inc"},{"start":696006,"audio":0,"end":700339,"filename":"/asminc/atari5200.inc"},{"start":700339,"audio":0,"end":703382,"filename":"/asminc/signal.inc"},{"start":703382,"audio":0,"end":705082,"filename":"/asminc/accelerator.inc"},{"start":705082,"audio":0,"end":706078,"filename":"/asminc/ctype.inc"},{"start":706078,"audio":0,"end":716561,"filename":"/asminc/tgi-kernel.inc"},{"start":716561,"audio":0,"end":726544,"filename":"/asminc/cx16.inc"},{"start":726544,"audio":0,"end":742403,"filename":"/asminc/telestrat.inc"},{"start":742403,"audio":0,"end":744137,"filename":"/asminc/atari_pokey.inc"},{"start":744137,"audio":0,"end":744415,"filename":"/asminc/module.mac"},{"start":744415,"audio":0,"end":752115,"filename":"/asminc/mouse-kernel.inc"},{"start":752115,"audio":0,"end":799805,"filename":"/asminc/atari.inc"},{"start":799805,"audio":0,"end":803101,"filename":"/asminc/tgi-error.inc"},{"start":803101,"audio":0,"end":807104,"filename":"/asminc/joy-kernel.inc"},{"start":807104,"audio":0,"end":807947,"filename":"/asminc/cpu.mac"},{"start":807947,"audio":0,"end":811405,"filename":"/asminc/time.inc"},{"start":811405,"audio":0,"end":815233,"filename":"/asminc/cbm_kernal.inc"},{"start":815233,"audio":0,"end":816521,"filename":"/asminc/apple2.mac"},{"start":816521,"audio":0,"end":819286,"filename":"/asminc/plus4.inc"},{"start":819286,"audio":0,"end":821061,"filename":"/asminc/atari.mac"},{"start":821061,"audio":0,"end":821201,"filename":"/asminc/c16.inc"},{"start":821201,"audio":0,"end":821426,"filename":"/asminc/get_tv.inc"},{"start":821426,"audio":0,"end":824359,"filename":"/asminc/pce.inc"},{"start":824359,"audio":0,"end":825877,"filename":"/asminc/creativision.inc"},{"start":825877,"audio":0,"end":828481,"filename":"/asminc/cbm610.inc"},{"start":828481,"audio":0,"end":830829,"filename":"/asminc/apple2.inc"},{"start":830829,"audio":0,"end":831980,"filename":"/asminc/cbm_filetype.inc"},{"start":831980,"audio":0,"end":837740,"filename":"/asminc/lynx.inc"},{"start":837740,"audio":0,"end":841069,"filename":"/asminc/atari_antic.inc"},{"start":841069,"audio":0,"end":842483,"filename":"/asminc/gamate.inc"},{"start":842483,"audio":0,"end":847445,"filename":"/asminc/em-kernel.inc"},{"start":847445,"audio":0,"end":850528,"filename":"/asminc/em-error.inc"},{"start":850528,"audio":0,"end":857308,"filename":"/asminc/ser-kernel.inc"},{"start":857308,"audio":0,"end":860123,"filename":"/asminc/utsname.inc"},{"start":860123,"audio":0,"end":866593,"filename":"/asminc/c64.inc"},{"start":866593,"audio":0,"end":866941,"filename":"/asminc/fcntl.inc"},{"start":866941,"audio":0,"end":871335,"filename":"/asminc/cbm510.inc"},{"start":871335,"audio":0,"end":874726,"filename":"/asminc/atmos.inc"},{"start":874726,"audio":0,"end":874919,"filename":"/asminc/atari2600.inc"},{"start":874919,"audio":0,"end":876327,"filename":"/asminc/errno.inc"},{"start":876327,"audio":0,"end":877763,"filename":"/asminc/cbm.mac"},{"start":877763,"audio":0,"end":878484,"filename":"/asminc/zeropage.inc"},{"start":878484,"audio":0,"end":882906,"filename":"/asminc/atari_gtia.inc"},{"start":882906,"audio":0,"end":884378,"filename":"/asminc/supervision.inc"},{"start":884378,"audio":0,"end":887263,"filename":"/asminc/joy-error.inc"},{"start":887263,"audio":0,"end":887731,"filename":"/asminc/_file.inc"},{"start":887731,"audio":0,"end":895128,"filename":"/asminc/o65.inc"},{"start":895128,"audio":0,"end":896084,"filename":"/asminc/generic.mac"},{"start":896084,"audio":0,"end":900104,"filename":"/asminc/modload.inc"},{"start":900104,"audio":0,"end":900488,"filename":"/asminc/atari2600_riot.inc"},{"start":900488,"audio":0,"end":903120,"filename":"/asminc/longbranch.mac"},{"start":903120,"audio":0,"end":911321,"filename":"/asminc/smc.inc"},{"start":911321,"audio":0,"end":916071,"filename":"/asminc/vic20.inc"},{"start":916071,"audio":0,"end":916770,"filename":"/cfg/c64-asm.cfg"},{"start":916770,"audio":0,"end":921348,"filename":"/cfg/c64-overlay.cfg"},{"start":921348,"audio":0,"end":923073,"filename":"/cfg/c64.cfg"},{"start":923073,"audio":0,"end":924839,"filename":"/lib/c64-soft80.o"},{"start":924839,"audio":0,"end":926657,"filename":"/lib/c64-soft80mono.o"},{"start":926657,"audio":0,"end":927031,"filename":"/lib/c64-tgimousedata.o"},{"start":927031,"audio":0,"end":2083597,"filename":"/lib/c64.lib"},{"start":2083597,"audio":0,"end":2084228,"filename":"/target/c64/drv/ser/c64-swlink.ser"},{"start":2084228,"audio":0,"end":2084550,"filename":"/target/c64/drv/joy/c64-hitjoy.joy"},{"start":2084550,"audio":0,"end":2084775,"filename":"/target/c64/drv/joy/c64-numpad.joy"},{"start":2084775,"audio":0,"end":2085009,"filename":"/target/c64/drv/joy/c64-ptvjoy.joy"},{"start":2085009,"audio":0,"end":2085192,"filename":"/target/c64/drv/joy/c64-stdjoy.joy"},{"start":2085192,"audio":0,"end":2086727,"filename":"/target/c64/drv/tgi/c64-hi.tgi"},{"start":2086727,"audio":0,"end":2087532,"filename":"/target/c64/drv/emd/c64-vdc.emd"},{"start":2087532,"audio":0,"end":2087927,"filename":"/target/c64/drv/emd/dtv-himem.emd"},{"start":2087927,"audio":0,"end":2088375,"filename":"/target/c64/drv/emd/c64-reu.emd"},{"start":2088375,"audio":0,"end":2088786,"filename":"/target/c64/drv/emd/c64-isepic.emd"},{"start":2088786,"audio":0,"end":2089518,"filename":"/target/c64/drv/emd/c64-dqbb.emd"},{"start":2089518,"audio":0,"end":2090182,"filename":"/target/c64/drv/emd/c64-65816.emd"},{"start":2090182,"audio":0,"end":2091082,"filename":"/target/c64/drv/emd/c64-c256k.emd"},{"start":2091082,"audio":0,"end":2091605,"filename":"/target/c64/drv/emd/c64-ram.emd"},{"start":2091605,"audio":0,"end":2092079,"filename":"/target/c64/drv/emd/c64-ramcart.emd"},{"start":2092079,"audio":0,"end":2092672,"filename":"/target/c64/drv/emd/c64-georam.emd"},{"start":2092672,"audio":0,"end":2093391,"filename":"/target/c64/drv/mou/c64-inkwell.mou"},{"start":2093391,"audio":0,"end":2094142,"filename":"/target/c64/drv/mou/c64-1351.mou"},{"start":2094142,"audio":0,"end":2094832,"filename":"/target/c64/drv/mou/c64-joy.mou"},{"start":2094832,"audio":0,"end":2095516,"filename":"/target/c64/drv/mou/c64-pot.mou"}],"remote_package_size":2095516,"package_uuid":"cf942151-822b-49b8-85f3-cfb9be02c077"} \ No newline at end of file diff --git a/test/cli/testworker.js b/test/cli/testworker.js index 3542bad8..dec2fea6 100644 --- a/test/cli/testworker.js +++ b/test/cli/testworker.js @@ -313,5 +313,11 @@ describe('Worker', function() { it('should assemble CA65', function(done) { compile('ca65', ';#define LIBARGS ,\n\t.segment "HEADER"\n\t.segment "STARTUP"\n\t.segment "CHARS"\n\t.segment "VECTORS"\n\t.segment "SAMPLES"\n\t.segment "CODE"\n\tlda #0\n\tsta $1\n', 'nes', done, 131088, 2); }); + /* TODO + it('should compile C64 cc65 skeleton', function(done) { + var csource = ab2str(fs.readFileSync('presets/c64/skeleton.cc65')); + compile('cc65', csource, 'c64.wasm', done, 49152, 80, 0); + }); + */ }); diff --git a/wasm/c64.wasm b/wasm/c64.wasm index 32c5245e6a8c50fa3906fc012d1a8c3078e1f6cd..a0d04fe4496e14e7d050d31c25ba7c42ba7d75a5 100755 GIT binary patch delta 1389 zcmZXTO>EOh6vyAp*p3som01CbTFRPIs#Jg|0tF5r#Yk+Ij|&G*d+<8Rv~@o0U^`8} zR7c{B1mutt65NqiyBvC2Z4Z^W^stAOkPwF+df~xtrXLYWgc3A-R`uwRr9)T2#%ggZQizgZr7oaS&C54cR~)$lWAJqA+$qo z1{XmM z?G2AIAULl?%ZXd~UK@JZ z=wc3Wo1Gf0{Vy1FVEsheO=LRpW2m+`Y-oeex${w>>Ue==`@X%-r17Ies&8HFZCY)@1`q@U9r2m???j4vG!)gQ`oD8tRyV2UW(5M8R@N$UB$U$VW;#!>LX3 F`adXVYd!z~ delta 721 zcmYk4%WKq76vofFH}82=#SyU;q)MqEx+`v!4uX%WOII##Gs&Hq%;aSrcE*8;;>L|& znML-l1rZnBxv`)^LH~s5!oR_df_a$Wg?kU*@4MeQ3Ca6E;+J3In+=sDbDZx2Ci~a6 zHseSmRF<(=q*!fH%oNSeY%3W;O2qxwmlH{n2%$80kq9!SR2B$DB1s@fITW(Xf`~q< zsz?!tw5=uBT^@;z1gdh_%*Br*C|OaSE2Y4^l%n9+kiWM>$>EL{Ov%Sv_)xsjbaZ2A zxtv+96@k&JWWYlnfmz#;WsKobE%}5Sz!%5TIqWZfORLG?Y?U1Fh=sc2+ngC*>_#v= zQCZn!7I57J>*W7vFR&sGqcasNIz)QJS!g}uFg{foq5d>uxdV0$ZBIAZ&5}Cxs4<^1 z)7x{wZCB|W#XflTogx`{4)}`~%IT|5>XwEdv*ICq2s%|fhgO)6@7Wx}#b@P8()#zJ zy|~}!0Tr5znW4vqx@+2;idrW1NN3zNsnlX@V0%5?W<5RRRL*qyB}%Pi*`jqRRke-K z#fEbG&fR-E_aF4MuS+qafQ=4x51SYAWAo)qJ(#I@-EDo!{;=dCbhk(Acqx4~!N=*^ r1Xr}~^25exoo*2!J)U4E-I<`4u1@i7`fZA92j^$_li+Sj=lJd~op;sb