mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-09-29 18:54:55 +00:00
Renamed #pragma emulator. Added headers for Plus/4. Closes #436
This commit is contained in:
parent
c3a9ced0f5
commit
ab670df01f
@ -2,6 +2,7 @@
|
|||||||
<dictionary name="jespergravgaard">
|
<dictionary name="jespergravgaard">
|
||||||
<words>
|
<words>
|
||||||
<w>unversioned</w>
|
<w>unversioned</w>
|
||||||
|
<w>xplus</w>
|
||||||
</words>
|
</words>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
</component>
|
</component>
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -26,29 +26,29 @@ public class KickCParser extends Parser {
|
|||||||
SHIFT_LEFT=27, SHIFT_RIGHT=28, EQUAL=29, NOT_EQUAL=30, LESS_THAN=31, LESS_THAN_EQUAL=32,
|
SHIFT_LEFT=27, SHIFT_RIGHT=28, EQUAL=29, NOT_EQUAL=30, LESS_THAN=31, LESS_THAN_EQUAL=32,
|
||||||
GREATER_THAN_EQUAL=33, GREATER_THAN=34, LOGIC_AND=35, LOGIC_OR=36, ASSIGN=37,
|
GREATER_THAN_EQUAL=33, GREATER_THAN=34, LOGIC_AND=35, LOGIC_OR=36, ASSIGN=37,
|
||||||
ASSIGN_COMPOUND=38, TYPEDEF=39, RESERVE=40, PC=41, TARGET=42, LINK=43,
|
ASSIGN_COMPOUND=38, TYPEDEF=39, RESERVE=40, PC=41, TARGET=42, LINK=43,
|
||||||
CPU=44, CODESEG=45, DATASEG=46, ENCODING=47, CONST=48, EXTERN=49, EXPORT=50,
|
EMULATOR=44, CPU=45, CODESEG=46, DATASEG=47, ENCODING=48, CONST=49, EXTERN=50,
|
||||||
ALIGN=51, INLINE=52, VOLATILE=53, STATIC=54, INTERRUPT=55, REGISTER=56,
|
EXPORT=51, ALIGN=52, INLINE=53, VOLATILE=54, STATIC=55, INTERRUPT=56,
|
||||||
ADDRESS=57, ADDRESS_ZEROPAGE=58, ADDRESS_MAINMEM=59, FORM_SSA=60, FORM_MA=61,
|
REGISTER=57, ADDRESS=58, ADDRESS_ZEROPAGE=59, ADDRESS_MAINMEM=60, FORM_SSA=61,
|
||||||
INTRINSIC=62, CALLING=63, CALLINGCONVENTION=64, VARMODEL=65, IF=66, ELSE=67,
|
FORM_MA=62, INTRINSIC=63, CALLING=64, CALLINGCONVENTION=65, VARMODEL=66,
|
||||||
WHILE=68, DO=69, FOR=70, SWITCH=71, RETURN=72, BREAK=73, CONTINUE=74,
|
IF=67, ELSE=68, WHILE=69, DO=70, FOR=71, SWITCH=72, RETURN=73, BREAK=74,
|
||||||
ASM=75, DEFAULT=76, CASE=77, STRUCT=78, ENUM=79, SIZEOF=80, TYPEID=81,
|
CONTINUE=75, ASM=76, DEFAULT=77, CASE=78, STRUCT=79, ENUM=80, SIZEOF=81,
|
||||||
DEFINED=82, KICKASM=83, RESOURCE=84, USES=85, CLOBBERS=86, BYTES=87, CYCLES=88,
|
TYPEID=82, DEFINED=83, KICKASM=84, RESOURCE=85, USES=86, CLOBBERS=87,
|
||||||
LOGIC_NOT=89, SIGNEDNESS=90, SIMPLETYPE=91, BOOLEAN=92, KICKASM_BODY=93,
|
BYTES=88, CYCLES=89, LOGIC_NOT=90, SIGNEDNESS=91, SIMPLETYPE=92, BOOLEAN=93,
|
||||||
IMPORT=94, INCLUDE=95, PRAGMA=96, DEFINE=97, DEFINE_CONTINUE=98, UNDEF=99,
|
KICKASM_BODY=94, IMPORT=95, INCLUDE=96, PRAGMA=97, DEFINE=98, DEFINE_CONTINUE=99,
|
||||||
IFDEF=100, IFNDEF=101, IFIF=102, ELIF=103, IFELSE=104, ENDIF=105, NUMBER=106,
|
UNDEF=100, IFDEF=101, IFNDEF=102, IFIF=103, ELIF=104, IFELSE=105, ENDIF=106,
|
||||||
NUMFLOAT=107, BINFLOAT=108, DECFLOAT=109, HEXFLOAT=110, NUMINT=111, BININTEGER=112,
|
NUMBER=107, NUMFLOAT=108, BINFLOAT=109, DECFLOAT=110, HEXFLOAT=111, NUMINT=112,
|
||||||
DECINTEGER=113, HEXINTEGER=114, NAME=115, STRING=116, CHAR=117, WS=118,
|
BININTEGER=113, DECINTEGER=114, HEXINTEGER=115, NAME=116, STRING=117,
|
||||||
COMMENT_LINE=119, COMMENT_BLOCK=120, ASM_BYTE=121, ASM_MNEMONIC=122, ASM_IMM=123,
|
CHAR=118, WS=119, COMMENT_LINE=120, COMMENT_BLOCK=121, ASM_BYTE=122, ASM_MNEMONIC=123,
|
||||||
ASM_COLON=124, ASM_COMMA=125, ASM_PAR_BEGIN=126, ASM_PAR_END=127, ASM_BRACKET_BEGIN=128,
|
ASM_IMM=124, ASM_COLON=125, ASM_COMMA=126, ASM_PAR_BEGIN=127, ASM_PAR_END=128,
|
||||||
ASM_BRACKET_END=129, ASM_DOT=130, ASM_SHIFT_LEFT=131, ASM_SHIFT_RIGHT=132,
|
ASM_BRACKET_BEGIN=129, ASM_BRACKET_END=130, ASM_DOT=131, ASM_SHIFT_LEFT=132,
|
||||||
ASM_PLUS=133, ASM_MINUS=134, ASM_LESS_THAN=135, ASM_GREATER_THAN=136,
|
ASM_SHIFT_RIGHT=133, ASM_PLUS=134, ASM_MINUS=135, ASM_LESS_THAN=136, ASM_GREATER_THAN=137,
|
||||||
ASM_MULTIPLY=137, ASM_DIVIDE=138, ASM_CURLY_BEGIN=139, ASM_CURLY_END=140,
|
ASM_MULTIPLY=138, ASM_DIVIDE=139, ASM_CURLY_BEGIN=140, ASM_CURLY_END=141,
|
||||||
ASM_NUMBER=141, ASM_NUMFLOAT=142, ASM_BINFLOAT=143, ASM_DECFLOAT=144,
|
ASM_NUMBER=142, ASM_NUMFLOAT=143, ASM_BINFLOAT=144, ASM_DECFLOAT=145,
|
||||||
ASM_HEXFLOAT=145, ASM_NUMINT=146, ASM_BININTEGER=147, ASM_DECINTEGER=148,
|
ASM_HEXFLOAT=146, ASM_NUMINT=147, ASM_BININTEGER=148, ASM_DECINTEGER=149,
|
||||||
ASM_HEXINTEGER=149, ASM_CHAR=150, ASM_MULTI_REL=151, ASM_MULTI_NAME=152,
|
ASM_HEXINTEGER=150, ASM_CHAR=151, ASM_MULTI_REL=152, ASM_MULTI_NAME=153,
|
||||||
ASM_NAME=153, ASM_WS=154, ASM_COMMENT_LINE=155, ASM_COMMENT_BLOCK=156,
|
ASM_NAME=154, ASM_WS=155, ASM_COMMENT_LINE=156, ASM_COMMENT_BLOCK=157,
|
||||||
IMPORT_SYSTEMFILE=157, IMPORT_LOCALFILE=158, IMPORT_WS=159, IMPORT_COMMENT_LINE=160,
|
IMPORT_SYSTEMFILE=158, IMPORT_LOCALFILE=159, IMPORT_WS=160, IMPORT_COMMENT_LINE=161,
|
||||||
IMPORT_COMMENT_BLOCK=161, EMULATOR=162;
|
IMPORT_COMMENT_BLOCK=162;
|
||||||
public static final int
|
public static final int
|
||||||
RULE_file = 0, RULE_asmFile = 1, RULE_declSeq = 2, RULE_declOrImport = 3,
|
RULE_file = 0, RULE_asmFile = 1, RULE_declSeq = 2, RULE_declOrImport = 3,
|
||||||
RULE_importDecl = 4, RULE_decl = 5, RULE_declVariables = 6, RULE_declVariableList = 7,
|
RULE_importDecl = 4, RULE_decl = 5, RULE_declVariables = 6, RULE_declVariableList = 7,
|
||||||
@ -84,18 +84,18 @@ public class KickCParser extends Parser {
|
|||||||
"'...'", "'?'", null, "'->'", null, null, null, null, "'%'", "'++'",
|
"'...'", "'?'", null, "'->'", null, null, null, null, "'%'", "'++'",
|
||||||
"'--'", "'&'", "'~'", "'^'", "'|'", null, null, "'=='", "'!='", null,
|
"'--'", "'&'", "'~'", "'^'", "'|'", null, null, "'=='", "'!='", null,
|
||||||
"'<='", "'>='", null, "'&&'", "'||'", "'='", null, "'typedef'", "'reserve'",
|
"'<='", "'>='", null, "'&&'", "'||'", "'='", null, "'typedef'", "'reserve'",
|
||||||
"'pc'", "'target'", "'link'", "'cpu'", "'code_seg'", "'data_seg'", "'encoding'",
|
"'pc'", "'target'", "'link'", "'emulator'", "'cpu'", "'code_seg'", "'data_seg'",
|
||||||
"'const'", "'extern'", "'export'", "'align'", "'inline'", "'volatile'",
|
"'encoding'", "'const'", "'extern'", "'export'", "'align'", "'inline'",
|
||||||
"'static'", "'interrupt'", "'register'", "'__address'", "'__zp'", "'__mem'",
|
"'volatile'", "'static'", "'interrupt'", "'register'", "'__address'",
|
||||||
"'__ssa'", "'__ma'", "'__intrinsic'", "'calling'", null, "'var_model'",
|
"'__zp'", "'__mem'", "'__ssa'", "'__ma'", "'__intrinsic'", "'calling'",
|
||||||
"'if'", "'else'", "'while'", "'do'", "'for'", "'switch'", "'return'",
|
null, "'var_model'", "'if'", "'else'", "'while'", "'do'", "'for'", "'switch'",
|
||||||
"'break'", "'continue'", "'asm'", "'default'", "'case'", "'struct'",
|
"'return'", "'break'", "'continue'", "'asm'", "'default'", "'case'",
|
||||||
"'enum'", "'sizeof'", "'typeid'", "'defined'", "'kickasm'", "'resource'",
|
"'struct'", "'enum'", "'sizeof'", "'typeid'", "'defined'", "'kickasm'",
|
||||||
"'uses'", "'clobbers'", "'bytes'", "'cycles'", "'!'", null, null, null,
|
"'resource'", "'uses'", "'clobbers'", "'bytes'", "'cycles'", "'!'", null,
|
||||||
null, "'#import'", "'#include'", "'#pragma'", "'#define'", null, "'#undef'",
|
null, null, null, "'#import'", "'#include'", "'#pragma'", "'#define'",
|
||||||
"'#ifdef'", "'#ifndef'", "'#if'", "'#elif'", "'#else'", "'#endif'", null,
|
null, "'#undef'", "'#ifdef'", "'#ifndef'", "'#if'", "'#elif'", "'#else'",
|
||||||
null, null, null, null, null, null, null, null, null, null, null, null,
|
"'#endif'", null, null, null, null, null, null, null, null, null, null,
|
||||||
null, null, "'.byte'", null, "'#'"
|
null, null, null, null, null, "'.byte'", null, "'#'"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
||||||
@ -107,18 +107,18 @@ public class KickCParser extends Parser {
|
|||||||
"INC", "DEC", "AND", "BIT_NOT", "BIT_XOR", "BIT_OR", "SHIFT_LEFT", "SHIFT_RIGHT",
|
"INC", "DEC", "AND", "BIT_NOT", "BIT_XOR", "BIT_OR", "SHIFT_LEFT", "SHIFT_RIGHT",
|
||||||
"EQUAL", "NOT_EQUAL", "LESS_THAN", "LESS_THAN_EQUAL", "GREATER_THAN_EQUAL",
|
"EQUAL", "NOT_EQUAL", "LESS_THAN", "LESS_THAN_EQUAL", "GREATER_THAN_EQUAL",
|
||||||
"GREATER_THAN", "LOGIC_AND", "LOGIC_OR", "ASSIGN", "ASSIGN_COMPOUND",
|
"GREATER_THAN", "LOGIC_AND", "LOGIC_OR", "ASSIGN", "ASSIGN_COMPOUND",
|
||||||
"TYPEDEF", "RESERVE", "PC", "TARGET", "LINK", "CPU", "CODESEG", "DATASEG",
|
"TYPEDEF", "RESERVE", "PC", "TARGET", "LINK", "EMULATOR", "CPU", "CODESEG",
|
||||||
"ENCODING", "CONST", "EXTERN", "EXPORT", "ALIGN", "INLINE", "VOLATILE",
|
"DATASEG", "ENCODING", "CONST", "EXTERN", "EXPORT", "ALIGN", "INLINE",
|
||||||
"STATIC", "INTERRUPT", "REGISTER", "ADDRESS", "ADDRESS_ZEROPAGE", "ADDRESS_MAINMEM",
|
"VOLATILE", "STATIC", "INTERRUPT", "REGISTER", "ADDRESS", "ADDRESS_ZEROPAGE",
|
||||||
"FORM_SSA", "FORM_MA", "INTRINSIC", "CALLING", "CALLINGCONVENTION", "VARMODEL",
|
"ADDRESS_MAINMEM", "FORM_SSA", "FORM_MA", "INTRINSIC", "CALLING", "CALLINGCONVENTION",
|
||||||
"IF", "ELSE", "WHILE", "DO", "FOR", "SWITCH", "RETURN", "BREAK", "CONTINUE",
|
"VARMODEL", "IF", "ELSE", "WHILE", "DO", "FOR", "SWITCH", "RETURN", "BREAK",
|
||||||
"ASM", "DEFAULT", "CASE", "STRUCT", "ENUM", "SIZEOF", "TYPEID", "DEFINED",
|
"CONTINUE", "ASM", "DEFAULT", "CASE", "STRUCT", "ENUM", "SIZEOF", "TYPEID",
|
||||||
"KICKASM", "RESOURCE", "USES", "CLOBBERS", "BYTES", "CYCLES", "LOGIC_NOT",
|
"DEFINED", "KICKASM", "RESOURCE", "USES", "CLOBBERS", "BYTES", "CYCLES",
|
||||||
"SIGNEDNESS", "SIMPLETYPE", "BOOLEAN", "KICKASM_BODY", "IMPORT", "INCLUDE",
|
"LOGIC_NOT", "SIGNEDNESS", "SIMPLETYPE", "BOOLEAN", "KICKASM_BODY", "IMPORT",
|
||||||
"PRAGMA", "DEFINE", "DEFINE_CONTINUE", "UNDEF", "IFDEF", "IFNDEF", "IFIF",
|
"INCLUDE", "PRAGMA", "DEFINE", "DEFINE_CONTINUE", "UNDEF", "IFDEF", "IFNDEF",
|
||||||
"ELIF", "IFELSE", "ENDIF", "NUMBER", "NUMFLOAT", "BINFLOAT", "DECFLOAT",
|
"IFIF", "ELIF", "IFELSE", "ENDIF", "NUMBER", "NUMFLOAT", "BINFLOAT",
|
||||||
"HEXFLOAT", "NUMINT", "BININTEGER", "DECINTEGER", "HEXINTEGER", "NAME",
|
"DECFLOAT", "HEXFLOAT", "NUMINT", "BININTEGER", "DECINTEGER", "HEXINTEGER",
|
||||||
"STRING", "CHAR", "WS", "COMMENT_LINE", "COMMENT_BLOCK", "ASM_BYTE",
|
"NAME", "STRING", "CHAR", "WS", "COMMENT_LINE", "COMMENT_BLOCK", "ASM_BYTE",
|
||||||
"ASM_MNEMONIC", "ASM_IMM", "ASM_COLON", "ASM_COMMA", "ASM_PAR_BEGIN",
|
"ASM_MNEMONIC", "ASM_IMM", "ASM_COLON", "ASM_COMMA", "ASM_PAR_BEGIN",
|
||||||
"ASM_PAR_END", "ASM_BRACKET_BEGIN", "ASM_BRACKET_END", "ASM_DOT", "ASM_SHIFT_LEFT",
|
"ASM_PAR_END", "ASM_BRACKET_BEGIN", "ASM_BRACKET_END", "ASM_DOT", "ASM_SHIFT_LEFT",
|
||||||
"ASM_SHIFT_RIGHT", "ASM_PLUS", "ASM_MINUS", "ASM_LESS_THAN", "ASM_GREATER_THAN",
|
"ASM_SHIFT_RIGHT", "ASM_PLUS", "ASM_MINUS", "ASM_LESS_THAN", "ASM_GREATER_THAN",
|
||||||
@ -127,7 +127,7 @@ public class KickCParser extends Parser {
|
|||||||
"ASM_BININTEGER", "ASM_DECINTEGER", "ASM_HEXINTEGER", "ASM_CHAR", "ASM_MULTI_REL",
|
"ASM_BININTEGER", "ASM_DECINTEGER", "ASM_HEXINTEGER", "ASM_CHAR", "ASM_MULTI_REL",
|
||||||
"ASM_MULTI_NAME", "ASM_NAME", "ASM_WS", "ASM_COMMENT_LINE", "ASM_COMMENT_BLOCK",
|
"ASM_MULTI_NAME", "ASM_NAME", "ASM_WS", "ASM_COMMENT_LINE", "ASM_COMMENT_BLOCK",
|
||||||
"IMPORT_SYSTEMFILE", "IMPORT_LOCALFILE", "IMPORT_WS", "IMPORT_COMMENT_LINE",
|
"IMPORT_SYSTEMFILE", "IMPORT_LOCALFILE", "IMPORT_WS", "IMPORT_COMMENT_LINE",
|
||||||
"IMPORT_COMMENT_BLOCK", "EMULATOR"
|
"IMPORT_COMMENT_BLOCK"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
||||||
@ -320,7 +320,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(103);
|
setState(103);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << TYPEDEF) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALLINGCONVENTION - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (KICKASM - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (IMPORT - 64)) | (1L << (INCLUDE - 64)) | (1L << (PRAGMA - 64)))) != 0)) {
|
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << TYPEDEF) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (CALLINGCONVENTION - 65)) | (1L << (STRUCT - 65)) | (1L << (ENUM - 65)) | (1L << (KICKASM - 65)) | (1L << (SIGNEDNESS - 65)) | (1L << (SIMPLETYPE - 65)) | (1L << (IMPORT - 65)) | (1L << (INCLUDE - 65)) | (1L << (PRAGMA - 65)))) != 0)) {
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
setState(100);
|
setState(100);
|
||||||
@ -1257,7 +1257,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(222);
|
setState(222);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (SIZEOF - 80)) | (1L << (TYPEID - 80)) | (1L << (DEFINED - 80)) | (1L << (LOGIC_NOT - 80)) | (1L << (BOOLEAN - 80)) | (1L << (NUMBER - 80)) | (1L << (NAME - 80)) | (1L << (STRING - 80)) | (1L << (CHAR - 80)))) != 0)) {
|
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (SIZEOF - 81)) | (1L << (TYPEID - 81)) | (1L << (DEFINED - 81)) | (1L << (LOGIC_NOT - 81)) | (1L << (BOOLEAN - 81)) | (1L << (NUMBER - 81)) | (1L << (NAME - 81)) | (1L << (STRING - 81)) | (1L << (CHAR - 81)))) != 0)) {
|
||||||
{
|
{
|
||||||
setState(221);
|
setState(221);
|
||||||
expr(0);
|
expr(0);
|
||||||
@ -1411,7 +1411,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(234);
|
setState(234);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (SIZEOF - 80)) | (1L << (TYPEID - 80)) | (1L << (DEFINED - 80)) | (1L << (LOGIC_NOT - 80)) | (1L << (BOOLEAN - 80)) | (1L << (NUMBER - 80)) | (1L << (NAME - 80)) | (1L << (STRING - 80)) | (1L << (CHAR - 80)))) != 0)) {
|
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (SIZEOF - 81)) | (1L << (TYPEID - 81)) | (1L << (DEFINED - 81)) | (1L << (LOGIC_NOT - 81)) | (1L << (BOOLEAN - 81)) | (1L << (NUMBER - 81)) | (1L << (NAME - 81)) | (1L << (STRING - 81)) | (1L << (CHAR - 81)))) != 0)) {
|
||||||
{
|
{
|
||||||
setState(233);
|
setState(233);
|
||||||
expr(0);
|
expr(0);
|
||||||
@ -1778,7 +1778,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(262);
|
setState(262);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (SIZEOF - 80)) | (1L << (TYPEID - 80)) | (1L << (DEFINED - 80)) | (1L << (LOGIC_NOT - 80)) | (1L << (BOOLEAN - 80)) | (1L << (NUMBER - 80)) | (1L << (NAME - 80)) | (1L << (STRING - 80)) | (1L << (CHAR - 80)))) != 0)) {
|
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (SIZEOF - 81)) | (1L << (TYPEID - 81)) | (1L << (DEFINED - 81)) | (1L << (LOGIC_NOT - 81)) | (1L << (BOOLEAN - 81)) | (1L << (NUMBER - 81)) | (1L << (NAME - 81)) | (1L << (STRING - 81)) | (1L << (CHAR - 81)))) != 0)) {
|
||||||
{
|
{
|
||||||
setState(261);
|
setState(261);
|
||||||
expr(0);
|
expr(0);
|
||||||
@ -1930,7 +1930,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(284);
|
setState(284);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALLINGCONVENTION - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)))) != 0) );
|
} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (CALLINGCONVENTION - 65)) | (1L << (STRUCT - 65)) | (1L << (ENUM - 65)) | (1L << (SIGNEDNESS - 65)) | (1L << (SIMPLETYPE - 65)))) != 0) );
|
||||||
setState(286);
|
setState(286);
|
||||||
match(CURLY_END);
|
match(CURLY_END);
|
||||||
}
|
}
|
||||||
@ -2314,7 +2314,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(328);
|
setState(328);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << PARAM_LIST) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALLINGCONVENTION - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)))) != 0)) {
|
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << PARAM_LIST) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (CALLINGCONVENTION - 65)) | (1L << (STRUCT - 65)) | (1L << (ENUM - 65)) | (1L << (SIGNEDNESS - 65)) | (1L << (SIMPLETYPE - 65)))) != 0)) {
|
||||||
{
|
{
|
||||||
setState(327);
|
setState(327);
|
||||||
parameterListDecl();
|
parameterListDecl();
|
||||||
@ -2391,7 +2391,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(337);
|
setState(337);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALLINGCONVENTION - 64)) | (1L << (IF - 64)) | (1L << (WHILE - 64)) | (1L << (DO - 64)) | (1L << (FOR - 64)) | (1L << (SWITCH - 64)) | (1L << (RETURN - 64)) | (1L << (BREAK - 64)) | (1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (DEFINED - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)))) != 0)) {
|
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (CALLINGCONVENTION - 65)) | (1L << (IF - 65)) | (1L << (WHILE - 65)) | (1L << (DO - 65)) | (1L << (FOR - 65)) | (1L << (SWITCH - 65)) | (1L << (RETURN - 65)) | (1L << (BREAK - 65)) | (1L << (CONTINUE - 65)) | (1L << (ASM - 65)) | (1L << (STRUCT - 65)) | (1L << (ENUM - 65)) | (1L << (SIZEOF - 65)) | (1L << (TYPEID - 65)) | (1L << (DEFINED - 65)) | (1L << (KICKASM - 65)) | (1L << (LOGIC_NOT - 65)) | (1L << (SIGNEDNESS - 65)) | (1L << (SIMPLETYPE - 65)) | (1L << (BOOLEAN - 65)) | (1L << (NUMBER - 65)) | (1L << (NAME - 65)) | (1L << (STRING - 65)) | (1L << (CHAR - 65)))) != 0)) {
|
||||||
{
|
{
|
||||||
setState(336);
|
setState(336);
|
||||||
stmtSeq();
|
stmtSeq();
|
||||||
@ -3716,7 +3716,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(492);
|
setState(492);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALLINGCONVENTION - 64)) | (1L << (IF - 64)) | (1L << (WHILE - 64)) | (1L << (DO - 64)) | (1L << (FOR - 64)) | (1L << (SWITCH - 64)) | (1L << (RETURN - 64)) | (1L << (BREAK - 64)) | (1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (DEFINED - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)))) != 0) );
|
} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (CALLINGCONVENTION - 65)) | (1L << (IF - 65)) | (1L << (WHILE - 65)) | (1L << (DO - 65)) | (1L << (FOR - 65)) | (1L << (SWITCH - 65)) | (1L << (RETURN - 65)) | (1L << (BREAK - 65)) | (1L << (CONTINUE - 65)) | (1L << (ASM - 65)) | (1L << (STRUCT - 65)) | (1L << (ENUM - 65)) | (1L << (SIZEOF - 65)) | (1L << (TYPEID - 65)) | (1L << (DEFINED - 65)) | (1L << (KICKASM - 65)) | (1L << (LOGIC_NOT - 65)) | (1L << (SIGNEDNESS - 65)) | (1L << (SIMPLETYPE - 65)) | (1L << (BOOLEAN - 65)) | (1L << (NUMBER - 65)) | (1L << (NAME - 65)) | (1L << (STRING - 65)) | (1L << (CHAR - 65)))) != 0) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (RecognitionException re) {
|
catch (RecognitionException re) {
|
||||||
@ -4082,7 +4082,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(499);
|
setState(499);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALLINGCONVENTION - 64)) | (1L << (IF - 64)) | (1L << (WHILE - 64)) | (1L << (DO - 64)) | (1L << (FOR - 64)) | (1L << (SWITCH - 64)) | (1L << (RETURN - 64)) | (1L << (BREAK - 64)) | (1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (DEFINED - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)))) != 0)) {
|
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (CALLINGCONVENTION - 65)) | (1L << (IF - 65)) | (1L << (WHILE - 65)) | (1L << (DO - 65)) | (1L << (FOR - 65)) | (1L << (SWITCH - 65)) | (1L << (RETURN - 65)) | (1L << (BREAK - 65)) | (1L << (CONTINUE - 65)) | (1L << (ASM - 65)) | (1L << (STRUCT - 65)) | (1L << (ENUM - 65)) | (1L << (SIZEOF - 65)) | (1L << (TYPEID - 65)) | (1L << (DEFINED - 65)) | (1L << (KICKASM - 65)) | (1L << (LOGIC_NOT - 65)) | (1L << (SIGNEDNESS - 65)) | (1L << (SIMPLETYPE - 65)) | (1L << (BOOLEAN - 65)) | (1L << (NUMBER - 65)) | (1L << (NAME - 65)) | (1L << (STRING - 65)) | (1L << (CHAR - 65)))) != 0)) {
|
||||||
{
|
{
|
||||||
setState(498);
|
setState(498);
|
||||||
stmtSeq();
|
stmtSeq();
|
||||||
@ -4254,7 +4254,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(562);
|
setState(562);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (SIZEOF - 80)) | (1L << (TYPEID - 80)) | (1L << (DEFINED - 80)) | (1L << (LOGIC_NOT - 80)) | (1L << (BOOLEAN - 80)) | (1L << (NUMBER - 80)) | (1L << (NAME - 80)) | (1L << (STRING - 80)) | (1L << (CHAR - 80)))) != 0)) {
|
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (SIZEOF - 81)) | (1L << (TYPEID - 81)) | (1L << (DEFINED - 81)) | (1L << (LOGIC_NOT - 81)) | (1L << (BOOLEAN - 81)) | (1L << (NUMBER - 81)) | (1L << (NAME - 81)) | (1L << (STRING - 81)) | (1L << (CHAR - 81)))) != 0)) {
|
||||||
{
|
{
|
||||||
setState(561);
|
setState(561);
|
||||||
commaExpr(0);
|
commaExpr(0);
|
||||||
@ -4394,7 +4394,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(588);
|
setState(588);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALLINGCONVENTION - 64)) | (1L << (IF - 64)) | (1L << (WHILE - 64)) | (1L << (DO - 64)) | (1L << (FOR - 64)) | (1L << (SWITCH - 64)) | (1L << (RETURN - 64)) | (1L << (BREAK - 64)) | (1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (DEFINED - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)))) != 0)) {
|
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (CALLINGCONVENTION - 65)) | (1L << (IF - 65)) | (1L << (WHILE - 65)) | (1L << (DO - 65)) | (1L << (FOR - 65)) | (1L << (SWITCH - 65)) | (1L << (RETURN - 65)) | (1L << (BREAK - 65)) | (1L << (CONTINUE - 65)) | (1L << (ASM - 65)) | (1L << (STRUCT - 65)) | (1L << (ENUM - 65)) | (1L << (SIZEOF - 65)) | (1L << (TYPEID - 65)) | (1L << (DEFINED - 65)) | (1L << (KICKASM - 65)) | (1L << (LOGIC_NOT - 65)) | (1L << (SIGNEDNESS - 65)) | (1L << (SIMPLETYPE - 65)) | (1L << (BOOLEAN - 65)) | (1L << (NUMBER - 65)) | (1L << (NAME - 65)) | (1L << (STRING - 65)) | (1L << (CHAR - 65)))) != 0)) {
|
||||||
{
|
{
|
||||||
setState(587);
|
setState(587);
|
||||||
stmtSeq();
|
stmtSeq();
|
||||||
@ -4461,7 +4461,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(596);
|
setState(596);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALLINGCONVENTION - 64)) | (1L << (IF - 64)) | (1L << (WHILE - 64)) | (1L << (DO - 64)) | (1L << (FOR - 64)) | (1L << (SWITCH - 64)) | (1L << (RETURN - 64)) | (1L << (BREAK - 64)) | (1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (DEFINED - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)))) != 0)) {
|
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (CALLINGCONVENTION - 65)) | (1L << (IF - 65)) | (1L << (WHILE - 65)) | (1L << (DO - 65)) | (1L << (FOR - 65)) | (1L << (SWITCH - 65)) | (1L << (RETURN - 65)) | (1L << (BREAK - 65)) | (1L << (CONTINUE - 65)) | (1L << (ASM - 65)) | (1L << (STRUCT - 65)) | (1L << (ENUM - 65)) | (1L << (SIZEOF - 65)) | (1L << (TYPEID - 65)) | (1L << (DEFINED - 65)) | (1L << (KICKASM - 65)) | (1L << (LOGIC_NOT - 65)) | (1L << (SIGNEDNESS - 65)) | (1L << (SIMPLETYPE - 65)) | (1L << (BOOLEAN - 65)) | (1L << (NUMBER - 65)) | (1L << (NAME - 65)) | (1L << (STRING - 65)) | (1L << (CHAR - 65)))) != 0)) {
|
||||||
{
|
{
|
||||||
setState(595);
|
setState(595);
|
||||||
stmtSeq();
|
stmtSeq();
|
||||||
@ -4579,7 +4579,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(603);
|
setState(603);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (SIZEOF - 80)) | (1L << (TYPEID - 80)) | (1L << (DEFINED - 80)) | (1L << (LOGIC_NOT - 80)) | (1L << (BOOLEAN - 80)) | (1L << (NUMBER - 80)) | (1L << (NAME - 80)) | (1L << (STRING - 80)) | (1L << (CHAR - 80)))) != 0)) {
|
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (SIZEOF - 81)) | (1L << (TYPEID - 81)) | (1L << (DEFINED - 81)) | (1L << (LOGIC_NOT - 81)) | (1L << (BOOLEAN - 81)) | (1L << (NUMBER - 81)) | (1L << (NAME - 81)) | (1L << (STRING - 81)) | (1L << (CHAR - 81)))) != 0)) {
|
||||||
{
|
{
|
||||||
setState(602);
|
setState(602);
|
||||||
commaExpr(0);
|
commaExpr(0);
|
||||||
@ -4595,7 +4595,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(612);
|
setState(612);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALLINGCONVENTION - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)))) != 0)) {
|
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (CALLINGCONVENTION - 65)) | (1L << (STRUCT - 65)) | (1L << (ENUM - 65)) | (1L << (SIGNEDNESS - 65)) | (1L << (SIMPLETYPE - 65)))) != 0)) {
|
||||||
{
|
{
|
||||||
setState(605);
|
setState(605);
|
||||||
declType();
|
declType();
|
||||||
@ -4706,7 +4706,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(623);
|
setState(623);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALLINGCONVENTION - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)))) != 0)) {
|
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << INLINE) | (1L << VOLATILE) | (1L << STATIC) | (1L << INTERRUPT) | (1L << REGISTER) | (1L << ADDRESS) | (1L << ADDRESS_ZEROPAGE) | (1L << ADDRESS_MAINMEM) | (1L << FORM_SSA) | (1L << FORM_MA) | (1L << INTRINSIC))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (CALLINGCONVENTION - 65)) | (1L << (STRUCT - 65)) | (1L << (ENUM - 65)) | (1L << (SIGNEDNESS - 65)) | (1L << (SIMPLETYPE - 65)))) != 0)) {
|
||||||
{
|
{
|
||||||
setState(622);
|
setState(622);
|
||||||
declVariables();
|
declVariables();
|
||||||
@ -5917,7 +5917,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(751);
|
setState(751);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (SIZEOF - 80)) | (1L << (TYPEID - 80)) | (1L << (DEFINED - 80)) | (1L << (LOGIC_NOT - 80)) | (1L << (BOOLEAN - 80)) | (1L << (NUMBER - 80)) | (1L << (NAME - 80)) | (1L << (STRING - 80)) | (1L << (CHAR - 80)))) != 0)) {
|
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (SIZEOF - 81)) | (1L << (TYPEID - 81)) | (1L << (DEFINED - 81)) | (1L << (LOGIC_NOT - 81)) | (1L << (BOOLEAN - 81)) | (1L << (NUMBER - 81)) | (1L << (NAME - 81)) | (1L << (STRING - 81)) | (1L << (CHAR - 81)))) != 0)) {
|
||||||
{
|
{
|
||||||
setState(750);
|
setState(750);
|
||||||
parameterList();
|
parameterList();
|
||||||
@ -6461,7 +6461,7 @@ public class KickCParser extends Parser {
|
|||||||
setState(811);
|
setState(811);
|
||||||
_errHandler.sync(this);
|
_errHandler.sync(this);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
while (((((_la - 121)) & ~0x3f) == 0 && ((1L << (_la - 121)) & ((1L << (ASM_BYTE - 121)) | (1L << (ASM_MNEMONIC - 121)) | (1L << (ASM_MULTI_NAME - 121)) | (1L << (ASM_NAME - 121)))) != 0)) {
|
while (((((_la - 122)) & ~0x3f) == 0 && ((1L << (_la - 122)) & ((1L << (ASM_BYTE - 122)) | (1L << (ASM_MNEMONIC - 122)) | (1L << (ASM_MULTI_NAME - 122)) | (1L << (ASM_NAME - 122)))) != 0)) {
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
setState(808);
|
setState(808);
|
||||||
@ -7222,7 +7222,7 @@ public class KickCParser extends Parser {
|
|||||||
_prevctx = _localctx;
|
_prevctx = _localctx;
|
||||||
setState(868);
|
setState(868);
|
||||||
_la = _input.LA(1);
|
_la = _input.LA(1);
|
||||||
if ( !(((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (ASM_PLUS - 133)) | (1L << (ASM_MINUS - 133)) | (1L << (ASM_LESS_THAN - 133)) | (1L << (ASM_GREATER_THAN - 133)))) != 0)) ) {
|
if ( !(((((_la - 134)) & ~0x3f) == 0 && ((1L << (_la - 134)) & ((1L << (ASM_PLUS - 134)) | (1L << (ASM_MINUS - 134)) | (1L << (ASM_LESS_THAN - 134)) | (1L << (ASM_GREATER_THAN - 134)))) != 0)) ) {
|
||||||
_errHandler.recoverInline(this);
|
_errHandler.recoverInline(this);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -7571,9 +7571,9 @@ public class KickCParser extends Parser {
|
|||||||
"\u0370\n\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60"+
|
"\u0370\n\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60"+
|
||||||
"\7\60\u037e\n\60\f\60\16\60\u0381\13\60\3\60\2\t\20\34\36*FH^\61\2\4\6"+
|
"\7\60\u037e\n\60\f\60\16\60\u0381\13\60\3\60\2\t\20\34\36*FH^\61\2\4\6"+
|
||||||
"\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRT"+
|
"\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRT"+
|
||||||
"VXZ\\^\2\r\3\2\27\30\5\2\22\23\31\32[[\4\2!!$$\3\2\35\36\3\2\24\26\3\2"+
|
"VXZ\\^\2\r\3\2\27\30\5\2\22\23\31\32\\\\\4\2!!$$\3\2\35\36\3\2\24\26\3"+
|
||||||
"\22\23\3\2\37$\3\2\u0087\u008a\3\2\u0085\u0086\3\2\u008b\u008c\3\2\u0087"+
|
"\2\22\23\3\2\37$\3\2\u0088\u008b\3\2\u0086\u0087\3\2\u008c\u008d\3\2\u0088"+
|
||||||
"\u0088\2\u0407\2`\3\2\2\2\4c\3\2\2\2\6i\3\2\2\2\bn\3\2\2\2\nv\3\2\2\2"+
|
"\u0089\2\u0407\2`\3\2\2\2\4c\3\2\2\2\6i\3\2\2\2\bn\3\2\2\2\nv\3\2\2\2"+
|
||||||
"\f\u0087\3\2\2\2\16\u0089\3\2\2\2\20\u008c\3\2\2\2\22\u00a3\3\2\2\2\24"+
|
"\f\u0087\3\2\2\2\16\u0089\3\2\2\2\20\u008c\3\2\2\2\22\u00a3\3\2\2\2\24"+
|
||||||
"\u00c8\3\2\2\2\26\u00cd\3\2\2\2\30\u00d7\3\2\2\2\32\u00de\3\2\2\2\34\u00e4"+
|
"\u00c8\3\2\2\2\26\u00cd\3\2\2\2\30\u00d7\3\2\2\2\32\u00de\3\2\2\2\34\u00e4"+
|
||||||
"\3\2\2\2\36\u0103\3\2\2\2 \u0113\3\2\2\2\"\u0116\3\2\2\2$\u0122\3\2\2"+
|
"\3\2\2\2\36\u0103\3\2\2\2 \u0113\3\2\2\2\"\u0116\3\2\2\2$\u0122\3\2\2"+
|
||||||
@ -7586,7 +7586,7 @@ public class KickCParser extends Parser {
|
|||||||
"\3\2\2\2^\u036f\3\2\2\2`a\5\6\4\2ab\7\2\2\3b\3\3\2\2\2cd\5R*\2de\7\2\2"+
|
"\3\2\2\2^\u036f\3\2\2\2`a\5\6\4\2ab\7\2\2\3b\3\3\2\2\2cd\5R*\2de\7\2\2"+
|
||||||
"\3e\5\3\2\2\2fh\5\b\5\2gf\3\2\2\2hk\3\2\2\2ig\3\2\2\2ij\3\2\2\2j\7\3\2"+
|
"\3e\5\3\2\2\2fh\5\b\5\2gf\3\2\2\2hk\3\2\2\2ig\3\2\2\2ij\3\2\2\2j\7\3\2"+
|
||||||
"\2\2ki\3\2\2\2lo\5\f\7\2mo\5\n\6\2nl\3\2\2\2nm\3\2\2\2o\t\3\2\2\2pq\7"+
|
"\2\2ki\3\2\2\2lo\5\f\7\2mo\5\n\6\2nl\3\2\2\2nm\3\2\2\2o\t\3\2\2\2pq\7"+
|
||||||
"`\2\2qw\7\u00a0\2\2rs\7a\2\2sw\7\u00a0\2\2tu\7a\2\2uw\7\u009f\2\2vp\3"+
|
"a\2\2qw\7\u00a1\2\2rs\7b\2\2sw\7\u00a1\2\2tu\7b\2\2uw\7\u00a0\2\2vp\3"+
|
||||||
"\2\2\2vr\3\2\2\2vt\3\2\2\2w\13\3\2\2\2xy\5\16\b\2yz\7\n\2\2z\u0088\3\2"+
|
"\2\2\2vr\3\2\2\2vt\3\2\2\2w\13\3\2\2\2xy\5\16\b\2yz\7\n\2\2z\u0088\3\2"+
|
||||||
"\2\2{|\5\"\22\2|}\7\n\2\2}\u0088\3\2\2\2~\177\5(\25\2\177\u0080\7\n\2"+
|
"\2\2{|\5\"\22\2|}\7\n\2\2}\u0088\3\2\2\2~\177\5(\25\2\177\u0080\7\n\2"+
|
||||||
"\2\u0080\u0088\3\2\2\2\u0081\u0088\5.\30\2\u0082\u0088\5L\'\2\u0083\u0088"+
|
"\2\u0080\u0088\3\2\2\2\u0081\u0088\5.\30\2\u0082\u0088\5L\'\2\u0083\u0088"+
|
||||||
@ -7603,14 +7603,14 @@ public class KickCParser extends Parser {
|
|||||||
"\2\2\2\u00a0\u009e\3\2\2\2\u00a0\u00a1\3\2\2\2\u00a1\21\3\2\2\2\u00a2"+
|
"\2\2\2\u00a0\u009e\3\2\2\2\u00a0\u00a1\3\2\2\2\u00a1\21\3\2\2\2\u00a2"+
|
||||||
"\u00a0\3\2\2\2\u00a3\u00a4\7)\2\2\u00a4\u00a8\5\26\f\2\u00a5\u00a7\5\30"+
|
"\u00a0\3\2\2\2\u00a3\u00a4\7)\2\2\u00a4\u00a8\5\26\f\2\u00a5\u00a7\5\30"+
|
||||||
"\r\2\u00a6\u00a5\3\2\2\2\u00a7\u00aa\3\2\2\2\u00a8\u00a6\3\2\2\2\u00a8"+
|
"\r\2\u00a6\u00a5\3\2\2\2\u00a7\u00aa\3\2\2\2\u00a8\u00a6\3\2\2\2\u00a8"+
|
||||||
"\u00a9\3\2\2\2\u00a9\u00ab\3\2\2\2\u00aa\u00a8\3\2\2\2\u00ab\u00af\7u"+
|
"\u00a9\3\2\2\2\u00a9\u00ab\3\2\2\2\u00aa\u00a8\3\2\2\2\u00ab\u00af\7v"+
|
||||||
"\2\2\u00ac\u00ae\5\32\16\2\u00ad\u00ac\3\2\2\2\u00ae\u00b1\3\2\2\2\u00af"+
|
"\2\2\u00ac\u00ae\5\32\16\2\u00ad\u00ac\3\2\2\2\u00ae\u00b1\3\2\2\2\u00af"+
|
||||||
"\u00ad\3\2\2\2\u00af\u00b0\3\2\2\2\u00b0\u00b2\3\2\2\2\u00b1\u00af\3\2"+
|
"\u00ad\3\2\2\2\u00af\u00b0\3\2\2\2\u00b0\u00b2\3\2\2\2\u00b1\u00af\3\2"+
|
||||||
"\2\2\u00b2\u00b3\b\n\1\2\u00b3\23\3\2\2\2\u00b4\u00b8\7u\2\2\u00b5\u00b7"+
|
"\2\2\u00b2\u00b3\b\n\1\2\u00b3\23\3\2\2\2\u00b4\u00b8\7v\2\2\u00b5\u00b7"+
|
||||||
"\5\32\16\2\u00b6\u00b5\3\2\2\2\u00b7\u00ba\3\2\2\2\u00b8\u00b6\3\2\2\2"+
|
"\5\32\16\2\u00b6\u00b5\3\2\2\2\u00b7\u00ba\3\2\2\2\u00b8\u00b6\3\2\2\2"+
|
||||||
"\u00b8\u00b9\3\2\2\2\u00b9\u00bd\3\2\2\2\u00ba\u00b8\3\2\2\2\u00bb\u00bc"+
|
"\u00b8\u00b9\3\2\2\2\u00b9\u00bd\3\2\2\2\u00ba\u00b8\3\2\2\2\u00bb\u00bc"+
|
||||||
"\7\'\2\2\u00bc\u00be\5H%\2\u00bd\u00bb\3\2\2\2\u00bd\u00be\3\2\2\2\u00be"+
|
"\7\'\2\2\u00bc\u00be\5H%\2\u00bd\u00bb\3\2\2\2\u00bd\u00be\3\2\2\2\u00be"+
|
||||||
"\u00c9\3\2\2\2\u00bf\u00c3\7u\2\2\u00c0\u00c2\5\32\16\2\u00c1\u00c0\3"+
|
"\u00c9\3\2\2\2\u00bf\u00c3\7v\2\2\u00c0\u00c2\5\32\16\2\u00c1\u00c0\3"+
|
||||||
"\2\2\2\u00c2\u00c5\3\2\2\2\u00c3\u00c1\3\2\2\2\u00c3\u00c4\3\2\2\2\u00c4"+
|
"\2\2\2\u00c2\u00c5\3\2\2\2\u00c3\u00c1\3\2\2\2\u00c3\u00c4\3\2\2\2\u00c4"+
|
||||||
"\u00c6\3\2\2\2\u00c5\u00c3\3\2\2\2\u00c6\u00c7\7\'\2\2\u00c7\u00c9\5L"+
|
"\u00c6\3\2\2\2\u00c5\u00c3\3\2\2\2\u00c6\u00c7\7\'\2\2\u00c7\u00c9\5L"+
|
||||||
"\'\2\u00c8\u00b4\3\2\2\2\u00c8\u00bf\3\2\2\2\u00c9\25\3\2\2\2\u00ca\u00cc"+
|
"\'\2\u00c8\u00b4\3\2\2\2\u00c8\u00bf\3\2\2\2\u00c9\25\3\2\2\2\u00ca\u00cc"+
|
||||||
@ -7629,7 +7629,7 @@ public class KickCParser extends Parser {
|
|||||||
"\3\2\2\2\u00f0\u00f3\3\2\2\2\u00f1\u00ef\3\2\2\2\u00f1\u00f2\3\2\2\2\u00f2"+
|
"\3\2\2\2\u00f0\u00f3\3\2\2\2\u00f1\u00ef\3\2\2\2\u00f1\u00f2\3\2\2\2\u00f2"+
|
||||||
"\35\3\2\2\2\u00f3\u00f1\3\2\2\2\u00f4\u00f5\b\20\1\2\u00f5\u00f6\7\b\2"+
|
"\35\3\2\2\2\u00f3\u00f1\3\2\2\2\u00f4\u00f5\b\20\1\2\u00f5\u00f6\7\b\2"+
|
||||||
"\2\u00f6\u00f7\5\36\20\2\u00f7\u00f8\7\t\2\2\u00f8\u0104\3\2\2\2\u00f9"+
|
"\2\u00f6\u00f7\5\36\20\2\u00f7\u00f8\7\t\2\2\u00f8\u0104\3\2\2\2\u00f9"+
|
||||||
"\u0104\7]\2\2\u00fa\u00fc\7\\\2\2\u00fb\u00fd\7]\2\2\u00fc\u00fb\3\2\2"+
|
"\u0104\7^\2\2\u00fa\u00fc\7]\2\2\u00fb\u00fd\7^\2\2\u00fc\u00fb\3\2\2"+
|
||||||
"\2\u00fc\u00fd\3\2\2\2\u00fd\u0104\3\2\2\2\u00fe\u0104\5\"\22\2\u00ff"+
|
"\2\u00fc\u00fd\3\2\2\2\u00fd\u0104\3\2\2\2\u00fe\u0104\5\"\22\2\u00ff"+
|
||||||
"\u0104\5 \21\2\u0100\u0104\5(\25\2\u0101\u0104\5&\24\2\u0102\u0104\7\3"+
|
"\u0104\5 \21\2\u0100\u0104\5(\25\2\u0101\u0104\5&\24\2\u0102\u0104\7\3"+
|
||||||
"\2\2\u0103\u00f4\3\2\2\2\u0103\u00f9\3\2\2\2\u0103\u00fa\3\2\2\2\u0103"+
|
"\2\2\u0103\u00f4\3\2\2\2\u0103\u00f9\3\2\2\2\u0103\u00fa\3\2\2\2\u0103"+
|
||||||
@ -7639,23 +7639,23 @@ public class KickCParser extends Parser {
|
|||||||
"\2\u0109\u010a\3\2\2\2\u010a\u010f\7\7\2\2\u010b\u010c\f\b\2\2\u010c\u010d"+
|
"\2\u0109\u010a\3\2\2\2\u010a\u010f\7\7\2\2\u010b\u010c\f\b\2\2\u010c\u010d"+
|
||||||
"\7\b\2\2\u010d\u010f\7\t\2\2\u010e\u0105\3\2\2\2\u010e\u010b\3\2\2\2\u010f"+
|
"\7\b\2\2\u010d\u010f\7\t\2\2\u010e\u0105\3\2\2\2\u010e\u010b\3\2\2\2\u010f"+
|
||||||
"\u0112\3\2\2\2\u0110\u010e\3\2\2\2\u0110\u0111\3\2\2\2\u0111\37\3\2\2"+
|
"\u0112\3\2\2\2\u0110\u010e\3\2\2\2\u0110\u0111\3\2\2\2\u0111\37\3\2\2"+
|
||||||
"\2\u0112\u0110\3\2\2\2\u0113\u0114\7P\2\2\u0114\u0115\7u\2\2\u0115!\3"+
|
"\2\u0112\u0110\3\2\2\2\u0113\u0114\7Q\2\2\u0114\u0115\7v\2\2\u0115!\3"+
|
||||||
"\2\2\2\u0116\u0118\7P\2\2\u0117\u0119\7u\2\2\u0118\u0117\3\2\2\2\u0118"+
|
"\2\2\2\u0116\u0118\7Q\2\2\u0117\u0119\7v\2\2\u0118\u0117\3\2\2\2\u0118"+
|
||||||
"\u0119\3\2\2\2\u0119\u011a\3\2\2\2\u011a\u011c\7\4\2\2\u011b\u011d\5$"+
|
"\u0119\3\2\2\2\u0119\u011a\3\2\2\2\u011a\u011c\7\4\2\2\u011b\u011d\5$"+
|
||||||
"\23\2\u011c\u011b\3\2\2\2\u011d\u011e\3\2\2\2\u011e\u011c\3\2\2\2\u011e"+
|
"\23\2\u011c\u011b\3\2\2\2\u011d\u011e\3\2\2\2\u011e\u011c\3\2\2\2\u011e"+
|
||||||
"\u011f\3\2\2\2\u011f\u0120\3\2\2\2\u0120\u0121\7\5\2\2\u0121#\3\2\2\2"+
|
"\u011f\3\2\2\2\u011f\u0120\3\2\2\2\u0120\u0121\7\5\2\2\u0121#\3\2\2\2"+
|
||||||
"\u0122\u0123\5\16\b\2\u0123\u0124\7\n\2\2\u0124%\3\2\2\2\u0125\u0126\7"+
|
"\u0122\u0123\5\16\b\2\u0123\u0124\7\n\2\2\u0124%\3\2\2\2\u0125\u0126\7"+
|
||||||
"Q\2\2\u0126\u0127\7u\2\2\u0127\'\3\2\2\2\u0128\u012a\7Q\2\2\u0129\u012b"+
|
"R\2\2\u0126\u0127\7v\2\2\u0127\'\3\2\2\2\u0128\u012a\7R\2\2\u0129\u012b"+
|
||||||
"\7u\2\2\u012a\u0129\3\2\2\2\u012a\u012b\3\2\2\2\u012b\u012c\3\2\2\2\u012c"+
|
"\7v\2\2\u012a\u0129\3\2\2\2\u012a\u012b\3\2\2\2\u012b\u012c\3\2\2\2\u012c"+
|
||||||
"\u012d\7\4\2\2\u012d\u012e\5*\26\2\u012e\u012f\7\5\2\2\u012f)\3\2\2\2"+
|
"\u012d\7\4\2\2\u012d\u012e\5*\26\2\u012e\u012f\7\5\2\2\u012f)\3\2\2\2"+
|
||||||
"\u0130\u0131\b\26\1\2\u0131\u0132\5,\27\2\u0132\u0138\3\2\2\2\u0133\u0134"+
|
"\u0130\u0131\b\26\1\2\u0131\u0132\5,\27\2\u0132\u0138\3\2\2\2\u0133\u0134"+
|
||||||
"\f\3\2\2\u0134\u0135\7\f\2\2\u0135\u0137\5,\27\2\u0136\u0133\3\2\2\2\u0137"+
|
"\f\3\2\2\u0134\u0135\7\f\2\2\u0135\u0137\5,\27\2\u0136\u0133\3\2\2\2\u0137"+
|
||||||
"\u013a\3\2\2\2\u0138\u0136\3\2\2\2\u0138\u0139\3\2\2\2\u0139+\3\2\2\2"+
|
"\u013a\3\2\2\2\u0138\u0136\3\2\2\2\u0138\u0139\3\2\2\2\u0139+\3\2\2\2"+
|
||||||
"\u013a\u0138\3\2\2\2\u013b\u013e\7u\2\2\u013c\u013d\7\'\2\2\u013d\u013f"+
|
"\u013a\u0138\3\2\2\2\u013b\u013e\7v\2\2\u013c\u013d\7\'\2\2\u013d\u013f"+
|
||||||
"\5H%\2\u013e\u013c\3\2\2\2\u013e\u013f\3\2\2\2\u013f-\3\2\2\2\u0140\u0144"+
|
"\5H%\2\u013e\u013c\3\2\2\2\u013e\u013f\3\2\2\2\u013f-\3\2\2\2\u0140\u0144"+
|
||||||
"\5\26\f\2\u0141\u0143\5\30\r\2\u0142\u0141\3\2\2\2\u0143\u0146\3\2\2\2"+
|
"\5\26\f\2\u0141\u0143\5\30\r\2\u0142\u0141\3\2\2\2\u0143\u0146\3\2\2\2"+
|
||||||
"\u0144\u0142\3\2\2\2\u0144\u0145\3\2\2\2\u0145\u0147\3\2\2\2\u0146\u0144"+
|
"\u0144\u0142\3\2\2\2\u0144\u0145\3\2\2\2\u0145\u0147\3\2\2\2\u0146\u0144"+
|
||||||
"\3\2\2\2\u0147\u0148\7u\2\2\u0148\u014a\7\b\2\2\u0149\u014b\5\62\32\2"+
|
"\3\2\2\2\u0147\u0148\7v\2\2\u0148\u014a\7\b\2\2\u0149\u014b\5\62\32\2"+
|
||||||
"\u014a\u0149\3\2\2\2\u014a\u014b\3\2\2\2\u014b\u014c\3\2\2\2\u014c\u014f"+
|
"\u014a\u0149\3\2\2\2\u014a\u014b\3\2\2\2\u014b\u014c\3\2\2\2\u014c\u014f"+
|
||||||
"\7\t\2\2\u014d\u0150\5\60\31\2\u014e\u0150\7\n\2\2\u014f\u014d\3\2\2\2"+
|
"\7\t\2\2\u014d\u0150\5\60\31\2\u014e\u0150\7\n\2\2\u014f\u014d\3\2\2\2"+
|
||||||
"\u014f\u014e\3\2\2\2\u0150/\3\2\2\2\u0151\u0153\7\4\2\2\u0152\u0154\5"+
|
"\u014f\u014e\3\2\2\2\u0150/\3\2\2\2\u0151\u0153\7\4\2\2\u0152\u0154\5"+
|
||||||
@ -7665,48 +7665,48 @@ public class KickCParser extends Parser {
|
|||||||
"\u015a\3\2\2\2\u015c\u015d\3\2\2\2\u015d\63\3\2\2\2\u015e\u015c\3\2\2"+
|
"\u015a\3\2\2\2\u015c\u015d\3\2\2\2\u015d\63\3\2\2\2\u015e\u015c\3\2\2"+
|
||||||
"\2\u015f\u0163\5\26\f\2\u0160\u0162\5\30\r\2\u0161\u0160\3\2\2\2\u0162"+
|
"\2\u015f\u0163\5\26\f\2\u0160\u0162\5\30\r\2\u0161\u0160\3\2\2\2\u0162"+
|
||||||
"\u0165\3\2\2\2\u0163\u0161\3\2\2\2\u0163\u0164\3\2\2\2\u0164\u0166\3\2"+
|
"\u0165\3\2\2\2\u0163\u0161\3\2\2\2\u0163\u0164\3\2\2\2\u0164\u0166\3\2"+
|
||||||
"\2\2\u0165\u0163\3\2\2\2\u0166\u0167\7u\2\2\u0167\u016b\3\2\2\2\u0168"+
|
"\2\2\u0165\u0163\3\2\2\2\u0166\u0167\7v\2\2\u0167\u016b\3\2\2\2\u0168"+
|
||||||
"\u016b\7]\2\2\u0169\u016b\7\16\2\2\u016a\u015f\3\2\2\2\u016a\u0168\3\2"+
|
"\u016b\7^\2\2\u0169\u016b\7\16\2\2\u016a\u015f\3\2\2\2\u016a\u0168\3\2"+
|
||||||
"\2\2\u016a\u0169\3\2\2\2\u016b\65\3\2\2\2\u016c\u016d\7b\2\2\u016d\u016e"+
|
"\2\2\u016a\u0169\3\2\2\2\u016b\65\3\2\2\2\u016c\u016d\7c\2\2\u016d\u016e"+
|
||||||
"\7*\2\2\u016e\u016f\3\2\2\2\u016f\u0170\7\b\2\2\u0170\u0175\7l\2\2\u0171"+
|
"\7*\2\2\u016e\u016f\3\2\2\2\u016f\u0170\7\b\2\2\u0170\u0175\7m\2\2\u0171"+
|
||||||
"\u0172\7\f\2\2\u0172\u0174\7l\2\2\u0173\u0171\3\2\2\2\u0174\u0177\3\2"+
|
"\u0172\7\f\2\2\u0172\u0174\7m\2\2\u0173\u0171\3\2\2\2\u0174\u0177\3\2"+
|
||||||
"\2\2\u0175\u0173\3\2\2\2\u0175\u0176\3\2\2\2\u0176\u0178\3\2\2\2\u0177"+
|
"\2\2\u0175\u0173\3\2\2\2\u0175\u0176\3\2\2\2\u0176\u0178\3\2\2\2\u0177"+
|
||||||
"\u0175\3\2\2\2\u0178\u01bd\7\t\2\2\u0179\u017a\7b\2\2\u017a\u017b\7+\2"+
|
"\u0175\3\2\2\2\u0178\u01bd\7\t\2\2\u0179\u017a\7c\2\2\u017a\u017b\7+\2"+
|
||||||
"\2\u017b\u017c\3\2\2\2\u017c\u017d\7\b\2\2\u017d\u017e\7l\2\2\u017e\u01bd"+
|
"\2\u017b\u017c\3\2\2\2\u017c\u017d\7\b\2\2\u017d\u017e\7m\2\2\u017e\u01bd"+
|
||||||
"\7\t\2\2\u017f\u0180\7b\2\2\u0180\u0181\7,\2\2\u0181\u0182\3\2\2\2\u0182"+
|
"\7\t\2\2\u017f\u0180\7c\2\2\u0180\u0181\7,\2\2\u0181\u0182\3\2\2\2\u0182"+
|
||||||
"\u0183\7\b\2\2\u0183\u0184\7u\2\2\u0184\u01bd\7\t\2\2\u0185\u0186\7b\2"+
|
"\u0183\7\b\2\2\u0183\u0184\7v\2\2\u0184\u01bd\7\t\2\2\u0185\u0186\7c\2"+
|
||||||
"\2\u0186\u0187\7.\2\2\u0187\u0188\3\2\2\2\u0188\u0189\7\b\2\2\u0189\u018a"+
|
"\2\u0186\u0187\7/\2\2\u0187\u0188\3\2\2\2\u0188\u0189\7\b\2\2\u0189\u018a"+
|
||||||
"\7u\2\2\u018a\u01bd\7\t\2\2\u018b\u018c\7b\2\2\u018c\u018d\7-\2\2\u018d"+
|
"\7v\2\2\u018a\u01bd\7\t\2\2\u018b\u018c\7c\2\2\u018c\u018d\7-\2\2\u018d"+
|
||||||
"\u018e\3\2\2\2\u018e\u018f\7\b\2\2\u018f\u0190\7v\2\2\u0190\u01bd\7\t"+
|
"\u018e\3\2\2\2\u018e\u018f\7\b\2\2\u018f\u0190\7w\2\2\u0190\u01bd\7\t"+
|
||||||
"\2\2\u0191\u0192\7b\2\2\u0192\u0193\7\u00a4\2\2\u0193\u0194\3\2\2\2\u0194"+
|
"\2\2\u0191\u0192\7c\2\2\u0192\u0193\7.\2\2\u0193\u0194\3\2\2\2\u0194\u0195"+
|
||||||
"\u0195\7\b\2\2\u0195\u0196\7v\2\2\u0196\u01bd\7\t\2\2\u0197\u0198\7b\2"+
|
"\7\b\2\2\u0195\u0196\7w\2\2\u0196\u01bd\7\t\2\2\u0197\u0198\7c\2\2\u0198"+
|
||||||
"\2\u0198\u0199\7/\2\2\u0199\u019a\3\2\2\2\u019a\u019b\7\b\2\2\u019b\u019c"+
|
"\u0199\7\60\2\2\u0199\u019a\3\2\2\2\u019a\u019b\7\b\2\2\u019b\u019c\7"+
|
||||||
"\7u\2\2\u019c\u01bd\7\t\2\2\u019d\u019e\7b\2\2\u019e\u019f\7\60\2\2\u019f"+
|
"v\2\2\u019c\u01bd\7\t\2\2\u019d\u019e\7c\2\2\u019e\u019f\7\61\2\2\u019f"+
|
||||||
"\u01a0\3\2\2\2\u01a0\u01a1\7\b\2\2\u01a1\u01a2\7u\2\2\u01a2\u01bd\7\t"+
|
"\u01a0\3\2\2\2\u01a0\u01a1\7\b\2\2\u01a1\u01a2\7v\2\2\u01a2\u01bd\7\t"+
|
||||||
"\2\2\u01a3\u01a4\7b\2\2\u01a4\u01a5\7\61\2\2\u01a5\u01a6\3\2\2\2\u01a6"+
|
"\2\2\u01a3\u01a4\7c\2\2\u01a4\u01a5\7\62\2\2\u01a5\u01a6\3\2\2\2\u01a6"+
|
||||||
"\u01a7\7\b\2\2\u01a7\u01a8\7u\2\2\u01a8\u01bd\7\t\2\2\u01a9\u01aa\7b\2"+
|
"\u01a7\7\b\2\2\u01a7\u01a8\7v\2\2\u01a8\u01bd\7\t\2\2\u01a9\u01aa\7c\2"+
|
||||||
"\2\u01aa\u01ab\7A\2\2\u01ab\u01ac\3\2\2\2\u01ac\u01ad\7\b\2\2\u01ad\u01ae"+
|
"\2\u01aa\u01ab\7B\2\2\u01ab\u01ac\3\2\2\2\u01ac\u01ad\7\b\2\2\u01ad\u01ae"+
|
||||||
"\7B\2\2\u01ae\u01bd\7\t\2\2\u01af\u01b0\7b\2\2\u01b0\u01b1\7C\2\2\u01b1"+
|
"\7C\2\2\u01ae\u01bd\7\t\2\2\u01af\u01b0\7c\2\2\u01b0\u01b1\7D\2\2\u01b1"+
|
||||||
"\u01b2\3\2\2\2\u01b2\u01b3\7\b\2\2\u01b3\u01b8\7u\2\2\u01b4\u01b5\7\f"+
|
"\u01b2\3\2\2\2\u01b2\u01b3\7\b\2\2\u01b3\u01b8\7v\2\2\u01b4\u01b5\7\f"+
|
||||||
"\2\2\u01b5\u01b7\7u\2\2\u01b6\u01b4\3\2\2\2\u01b7\u01ba\3\2\2\2\u01b8"+
|
"\2\2\u01b5\u01b7\7v\2\2\u01b6\u01b4\3\2\2\2\u01b7\u01ba\3\2\2\2\u01b8"+
|
||||||
"\u01b6\3\2\2\2\u01b8\u01b9\3\2\2\2\u01b9\u01bb\3\2\2\2\u01ba\u01b8\3\2"+
|
"\u01b6\3\2\2\2\u01b8\u01b9\3\2\2\2\u01b9\u01bb\3\2\2\2\u01ba\u01b8\3\2"+
|
||||||
"\2\2\u01bb\u01bd\7\t\2\2\u01bc\u016c\3\2\2\2\u01bc\u0179\3\2\2\2\u01bc"+
|
"\2\2\u01bb\u01bd\7\t\2\2\u01bc\u016c\3\2\2\2\u01bc\u0179\3\2\2\2\u01bc"+
|
||||||
"\u017f\3\2\2\2\u01bc\u0185\3\2\2\2\u01bc\u018b\3\2\2\2\u01bc\u0191\3\2"+
|
"\u017f\3\2\2\2\u01bc\u0185\3\2\2\2\u01bc\u018b\3\2\2\2\u01bc\u0191\3\2"+
|
||||||
"\2\2\u01bc\u0197\3\2\2\2\u01bc\u019d\3\2\2\2\u01bc\u01a3\3\2\2\2\u01bc"+
|
"\2\2\u01bc\u0197\3\2\2\2\u01bc\u019d\3\2\2\2\u01bc\u01a3\3\2\2\2\u01bc"+
|
||||||
"\u01a9\3\2\2\2\u01bc\u01af\3\2\2\2\u01bd\67\3\2\2\2\u01be\u01ea\7\62\2"+
|
"\u01a9\3\2\2\2\u01bc\u01af\3\2\2\2\u01bd\67\3\2\2\2\u01be\u01ea\7\63\2"+
|
||||||
"\2\u01bf\u01c0\7\65\2\2\u01c0\u01c1\7\b\2\2\u01c1\u01c2\7l\2\2\u01c2\u01ea"+
|
"\2\u01bf\u01c0\7\66\2\2\u01c0\u01c1\7\b\2\2\u01c1\u01c2\7m\2\2\u01c2\u01ea"+
|
||||||
"\7\t\2\2\u01c3\u01c7\7:\2\2\u01c4\u01c5\7\b\2\2\u01c5\u01c6\7u\2\2\u01c6"+
|
"\7\t\2\2\u01c3\u01c7\7;\2\2\u01c4\u01c5\7\b\2\2\u01c5\u01c6\7v\2\2\u01c6"+
|
||||||
"\u01c8\7\t\2\2\u01c7\u01c4\3\2\2\2\u01c7\u01c8\3\2\2\2\u01c8\u01ea\3\2"+
|
"\u01c8\7\t\2\2\u01c7\u01c4\3\2\2\2\u01c7\u01c8\3\2\2\2\u01c8\u01ea\3\2"+
|
||||||
"\2\2\u01c9\u01ea\7<\2\2\u01ca\u01ea\7=\2\2\u01cb\u01cc\7;\2\2\u01cc\u01cd"+
|
"\2\2\u01c9\u01ea\7=\2\2\u01ca\u01ea\7>\2\2\u01cb\u01cc\7<\2\2\u01cc\u01cd"+
|
||||||
"\7\b\2\2\u01cd\u01ce\7l\2\2\u01ce\u01ea\7\t\2\2\u01cf\u01ea\7\67\2\2\u01d0"+
|
"\7\b\2\2\u01cd\u01ce\7m\2\2\u01ce\u01ea\7\t\2\2\u01cf\u01ea\78\2\2\u01d0"+
|
||||||
"\u01ea\78\2\2\u01d1\u01ea\7>\2\2\u01d2\u01ea\7?\2\2\u01d3\u01ea\7\63\2"+
|
"\u01ea\79\2\2\u01d1\u01ea\7?\2\2\u01d2\u01ea\7@\2\2\u01d3\u01ea\7\64\2"+
|
||||||
"\2\u01d4\u01ea\7\64\2\2\u01d5\u01ea\7\66\2\2\u01d6\u01ea\7@\2\2\u01d7"+
|
"\2\u01d4\u01ea\7\65\2\2\u01d5\u01ea\7\67\2\2\u01d6\u01ea\7A\2\2\u01d7"+
|
||||||
"\u01db\79\2\2\u01d8\u01d9\7\b\2\2\u01d9\u01da\7u\2\2\u01da\u01dc\7\t\2"+
|
"\u01db\7:\2\2\u01d8\u01d9\7\b\2\2\u01d9\u01da\7v\2\2\u01da\u01dc\7\t\2"+
|
||||||
"\2\u01db\u01d8\3\2\2\2\u01db\u01dc\3\2\2\2\u01dc\u01ea\3\2\2\2\u01dd\u01de"+
|
"\2\u01db\u01d8\3\2\2\2\u01db\u01dc\3\2\2\2\u01dc\u01ea\3\2\2\2\u01dd\u01de"+
|
||||||
"\7*\2\2\u01de\u01df\7\b\2\2\u01df\u01e4\7l\2\2\u01e0\u01e1\7\f\2\2\u01e1"+
|
"\7*\2\2\u01de\u01df\7\b\2\2\u01df\u01e4\7m\2\2\u01e0\u01e1\7\f\2\2\u01e1"+
|
||||||
"\u01e3\7l\2\2\u01e2\u01e0\3\2\2\2\u01e3\u01e6\3\2\2\2\u01e4\u01e2\3\2"+
|
"\u01e3\7m\2\2\u01e2\u01e0\3\2\2\2\u01e3\u01e6\3\2\2\2\u01e4\u01e2\3\2"+
|
||||||
"\2\2\u01e4\u01e5\3\2\2\2\u01e5\u01e7\3\2\2\2\u01e6\u01e4\3\2\2\2\u01e7"+
|
"\2\2\u01e4\u01e5\3\2\2\2\u01e5\u01e7\3\2\2\2\u01e6\u01e4\3\2\2\2\u01e7"+
|
||||||
"\u01ea\7\t\2\2\u01e8\u01ea\7B\2\2\u01e9\u01be\3\2\2\2\u01e9\u01bf\3\2"+
|
"\u01ea\7\t\2\2\u01e8\u01ea\7C\2\2\u01e9\u01be\3\2\2\2\u01e9\u01bf\3\2"+
|
||||||
"\2\2\u01e9\u01c3\3\2\2\2\u01e9\u01c9\3\2\2\2\u01e9\u01ca\3\2\2\2\u01e9"+
|
"\2\2\u01e9\u01c3\3\2\2\2\u01e9\u01c9\3\2\2\2\u01e9\u01ca\3\2\2\2\u01e9"+
|
||||||
"\u01cb\3\2\2\2\u01e9\u01cf\3\2\2\2\u01e9\u01d0\3\2\2\2\u01e9\u01d1\3\2"+
|
"\u01cb\3\2\2\2\u01e9\u01cf\3\2\2\2\u01e9\u01d0\3\2\2\2\u01e9\u01d1\3\2"+
|
||||||
"\2\2\u01e9\u01d2\3\2\2\2\u01e9\u01d3\3\2\2\2\u01e9\u01d4\3\2\2\2\u01e9"+
|
"\2\2\u01e9\u01d2\3\2\2\2\u01e9\u01d3\3\2\2\2\u01e9\u01d4\3\2\2\2\u01e9"+
|
||||||
@ -7716,44 +7716,44 @@ public class KickCParser extends Parser {
|
|||||||
";\3\2\2\2\u01f0\u01f1\5\16\b\2\u01f1\u01f2\7\n\2\2\u01f2\u0245\3\2\2\2"+
|
";\3\2\2\2\u01f0\u01f1\5\16\b\2\u01f1\u01f2\7\n\2\2\u01f2\u0245\3\2\2\2"+
|
||||||
"\u01f3\u01f5\7\4\2\2\u01f4\u01f6\5:\36\2\u01f5\u01f4\3\2\2\2\u01f5\u01f6"+
|
"\u01f3\u01f5\7\4\2\2\u01f4\u01f6\5:\36\2\u01f5\u01f4\3\2\2\2\u01f5\u01f6"+
|
||||||
"\3\2\2\2\u01f6\u01f7\3\2\2\2\u01f7\u0245\7\5\2\2\u01f8\u01f9\5F$\2\u01f9"+
|
"\3\2\2\2\u01f6\u01f7\3\2\2\2\u01f7\u0245\7\5\2\2\u01f8\u01f9\5F$\2\u01f9"+
|
||||||
"\u01fa\7\n\2\2\u01fa\u0245\3\2\2\2\u01fb\u01fc\7D\2\2\u01fc\u01fd\7\b"+
|
"\u01fa\7\n\2\2\u01fa\u0245\3\2\2\2\u01fb\u01fc\7E\2\2\u01fc\u01fd\7\b"+
|
||||||
"\2\2\u01fd\u01fe\5F$\2\u01fe\u01ff\7\t\2\2\u01ff\u0202\5<\37\2\u0200\u0201"+
|
"\2\2\u01fd\u01fe\5F$\2\u01fe\u01ff\7\t\2\2\u01ff\u0202\5<\37\2\u0200\u0201"+
|
||||||
"\7E\2\2\u0201\u0203\5<\37\2\u0202\u0200\3\2\2\2\u0202\u0203\3\2\2\2\u0203"+
|
"\7F\2\2\u0201\u0203\5<\37\2\u0202\u0200\3\2\2\2\u0202\u0203\3\2\2\2\u0203"+
|
||||||
"\u0245\3\2\2\2\u0204\u0206\58\35\2\u0205\u0204\3\2\2\2\u0206\u0209\3\2"+
|
"\u0245\3\2\2\2\u0204\u0206\58\35\2\u0205\u0204\3\2\2\2\u0206\u0209\3\2"+
|
||||||
"\2\2\u0207\u0205\3\2\2\2\u0207\u0208\3\2\2\2\u0208\u020a\3\2\2\2\u0209"+
|
"\2\2\u0207\u0205\3\2\2\2\u0207\u0208\3\2\2\2\u0208\u020a\3\2\2\2\u0209"+
|
||||||
"\u0207\3\2\2\2\u020a\u020b\7F\2\2\u020b\u020c\7\b\2\2\u020c\u020d\5F$"+
|
"\u0207\3\2\2\2\u020a\u020b\7G\2\2\u020b\u020c\7\b\2\2\u020c\u020d\5F$"+
|
||||||
"\2\u020d\u020e\7\t\2\2\u020e\u020f\5<\37\2\u020f\u0245\3\2\2\2\u0210\u0212"+
|
"\2\u020d\u020e\7\t\2\2\u020e\u020f\5<\37\2\u020f\u0245\3\2\2\2\u0210\u0212"+
|
||||||
"\58\35\2\u0211\u0210\3\2\2\2\u0212\u0215\3\2\2\2\u0213\u0211\3\2\2\2\u0213"+
|
"\58\35\2\u0211\u0210\3\2\2\2\u0212\u0215\3\2\2\2\u0213\u0211\3\2\2\2\u0213"+
|
||||||
"\u0214\3\2\2\2\u0214\u0216\3\2\2\2\u0215\u0213\3\2\2\2\u0216\u0217\7G"+
|
"\u0214\3\2\2\2\u0214\u0216\3\2\2\2\u0215\u0213\3\2\2\2\u0216\u0217\7H"+
|
||||||
"\2\2\u0217\u0218\5<\37\2\u0218\u0219\7F\2\2\u0219\u021a\7\b\2\2\u021a"+
|
"\2\2\u0217\u0218\5<\37\2\u0218\u0219\7G\2\2\u0219\u021a\7\b\2\2\u021a"+
|
||||||
"\u021b\5F$\2\u021b\u021c\7\t\2\2\u021c\u021d\7\n\2\2\u021d\u0245\3\2\2"+
|
"\u021b\5F$\2\u021b\u021c\7\t\2\2\u021c\u021d\7\n\2\2\u021d\u0245\3\2\2"+
|
||||||
"\2\u021e\u0220\58\35\2\u021f\u021e\3\2\2\2\u0220\u0223\3\2\2\2\u0221\u021f"+
|
"\2\u021e\u0220\58\35\2\u021f\u021e\3\2\2\2\u0220\u0223\3\2\2\2\u0221\u021f"+
|
||||||
"\3\2\2\2\u0221\u0222\3\2\2\2\u0222\u0224\3\2\2\2\u0223\u0221\3\2\2\2\u0224"+
|
"\3\2\2\2\u0221\u0222\3\2\2\2\u0222\u0224\3\2\2\2\u0223\u0221\3\2\2\2\u0224"+
|
||||||
"\u0225\7H\2\2\u0225\u0226\7\b\2\2\u0226\u0227\5B\"\2\u0227\u0228\7\t\2"+
|
"\u0225\7I\2\2\u0225\u0226\7\b\2\2\u0226\u0227\5B\"\2\u0227\u0228\7\t\2"+
|
||||||
"\2\u0228\u0229\5<\37\2\u0229\u0245\3\2\2\2\u022a\u022b\7I\2\2\u022b\u022c"+
|
"\2\u0228\u0229\5<\37\2\u0229\u0245\3\2\2\2\u022a\u022b\7J\2\2\u022b\u022c"+
|
||||||
"\7\b\2\2\u022c\u022d\5F$\2\u022d\u022e\7\t\2\2\u022e\u022f\7\4\2\2\u022f"+
|
"\7\b\2\2\u022c\u022d\5F$\2\u022d\u022e\7\t\2\2\u022e\u022f\7\4\2\2\u022f"+
|
||||||
"\u0230\5> \2\u0230\u0231\7\5\2\2\u0231\u0245\3\2\2\2\u0232\u0234\7J\2"+
|
"\u0230\5> \2\u0230\u0231\7\5\2\2\u0231\u0245\3\2\2\2\u0232\u0234\7K\2"+
|
||||||
"\2\u0233\u0235\5F$\2\u0234\u0233\3\2\2\2\u0234\u0235\3\2\2\2\u0235\u0236"+
|
"\2\u0233\u0235\5F$\2\u0234\u0233\3\2\2\2\u0234\u0235\3\2\2\2\u0235\u0236"+
|
||||||
"\3\2\2\2\u0236\u0245\7\n\2\2\u0237\u0238\7K\2\2\u0238\u0245\7\n\2\2\u0239"+
|
"\3\2\2\2\u0236\u0245\7\n\2\2\u0237\u0238\7L\2\2\u0238\u0245\7\n\2\2\u0239"+
|
||||||
"\u023a\7L\2\2\u023a\u0245\7\n\2\2\u023b\u023d\7M\2\2\u023c\u023e\5N(\2"+
|
"\u023a\7M\2\2\u023a\u0245\7\n\2\2\u023b\u023d\7N\2\2\u023c\u023e\5N(\2"+
|
||||||
"\u023d\u023c\3\2\2\2\u023d\u023e\3\2\2\2\u023e\u023f\3\2\2\2\u023f\u0240"+
|
"\u023d\u023c\3\2\2\2\u023d\u023e\3\2\2\2\u023e\u023f\3\2\2\2\u023f\u0240"+
|
||||||
"\7\4\2\2\u0240\u0241\5R*\2\u0241\u0242\7\u008e\2\2\u0242\u0245\3\2\2\2"+
|
"\7\4\2\2\u0240\u0241\5R*\2\u0241\u0242\7\u008f\2\2\u0242\u0245\3\2\2\2"+
|
||||||
"\u0243\u0245\5L\'\2\u0244\u01f0\3\2\2\2\u0244\u01f3\3\2\2\2\u0244\u01f8"+
|
"\u0243\u0245\5L\'\2\u0244\u01f0\3\2\2\2\u0244\u01f3\3\2\2\2\u0244\u01f8"+
|
||||||
"\3\2\2\2\u0244\u01fb\3\2\2\2\u0244\u0207\3\2\2\2\u0244\u0213\3\2\2\2\u0244"+
|
"\3\2\2\2\u0244\u01fb\3\2\2\2\u0244\u0207\3\2\2\2\u0244\u0213\3\2\2\2\u0244"+
|
||||||
"\u0221\3\2\2\2\u0244\u022a\3\2\2\2\u0244\u0232\3\2\2\2\u0244\u0237\3\2"+
|
"\u0221\3\2\2\2\u0244\u022a\3\2\2\2\u0244\u0232\3\2\2\2\u0244\u0237\3\2"+
|
||||||
"\2\2\u0244\u0239\3\2\2\2\u0244\u023b\3\2\2\2\u0244\u0243\3\2\2\2\u0245"+
|
"\2\2\u0244\u0239\3\2\2\2\u0244\u023b\3\2\2\2\u0244\u0243\3\2\2\2\u0245"+
|
||||||
"=\3\2\2\2\u0246\u0248\5@!\2\u0247\u0246\3\2\2\2\u0248\u0249\3\2\2\2\u0249"+
|
"=\3\2\2\2\u0246\u0248\5@!\2\u0247\u0246\3\2\2\2\u0248\u0249\3\2\2\2\u0249"+
|
||||||
"\u0247\3\2\2\2\u0249\u024a\3\2\2\2\u024a\u0250\3\2\2\2\u024b\u024c\7N"+
|
"\u0247\3\2\2\2\u0249\u024a\3\2\2\2\u024a\u0250\3\2\2\2\u024b\u024c\7O"+
|
||||||
"\2\2\u024c\u024e\7\13\2\2\u024d\u024f\5:\36\2\u024e\u024d\3\2\2\2\u024e"+
|
"\2\2\u024c\u024e\7\13\2\2\u024d\u024f\5:\36\2\u024e\u024d\3\2\2\2\u024e"+
|
||||||
"\u024f\3\2\2\2\u024f\u0251\3\2\2\2\u0250\u024b\3\2\2\2\u0250\u0251\3\2"+
|
"\u024f\3\2\2\2\u024f\u0251\3\2\2\2\u0250\u024b\3\2\2\2\u0250\u0251\3\2"+
|
||||||
"\2\2\u0251?\3\2\2\2\u0252\u0253\7O\2\2\u0253\u0254\5H%\2\u0254\u0256\7"+
|
"\2\2\u0251?\3\2\2\2\u0252\u0253\7P\2\2\u0253\u0254\5H%\2\u0254\u0256\7"+
|
||||||
"\13\2\2\u0255\u0257\5:\36\2\u0256\u0255\3\2\2\2\u0256\u0257\3\2\2\2\u0257"+
|
"\13\2\2\u0255\u0257\5:\36\2\u0256\u0255\3\2\2\2\u0256\u0257\3\2\2\2\u0257"+
|
||||||
"A\3\2\2\2\u0258\u0259\5D#\2\u0259\u025a\7\n\2\2\u025a\u025b\5F$\2\u025b"+
|
"A\3\2\2\2\u0258\u0259\5D#\2\u0259\u025a\7\n\2\2\u025a\u025b\5F$\2\u025b"+
|
||||||
"\u025d\7\n\2\2\u025c\u025e\5F$\2\u025d\u025c\3\2\2\2\u025d\u025e\3\2\2"+
|
"\u025d\7\n\2\2\u025c\u025e\5F$\2\u025d\u025c\3\2\2\2\u025d\u025e\3\2\2"+
|
||||||
"\2\u025e\u026f\3\2\2\2\u025f\u0263\5\26\f\2\u0260\u0262\5\30\r\2\u0261"+
|
"\2\u025e\u026f\3\2\2\2\u025f\u0263\5\26\f\2\u0260\u0262\5\30\r\2\u0261"+
|
||||||
"\u0260\3\2\2\2\u0262\u0265\3\2\2\2\u0263\u0261\3\2\2\2\u0263\u0264\3\2"+
|
"\u0260\3\2\2\2\u0262\u0265\3\2\2\2\u0263\u0261\3\2\2\2\u0263\u0264\3\2"+
|
||||||
"\2\2\u0264\u0267\3\2\2\2\u0265\u0263\3\2\2\2\u0266\u025f\3\2\2\2\u0266"+
|
"\2\2\u0264\u0267\3\2\2\2\u0265\u0263\3\2\2\2\u0266\u025f\3\2\2\2\u0266"+
|
||||||
"\u0267\3\2\2\2\u0267\u0268\3\2\2\2\u0268\u0269\7u\2\2\u0269\u026a\7\13"+
|
"\u0267\3\2\2\2\u0267\u0268\3\2\2\2\u0268\u0269\7v\2\2\u0269\u026a\7\13"+
|
||||||
"\2\2\u026a\u026b\5H%\2\u026b\u026c\7\r\2\2\u026c\u026d\5H%\2\u026d\u026f"+
|
"\2\2\u026a\u026b\5H%\2\u026b\u026c\7\r\2\2\u026c\u026d\5H%\2\u026d\u026f"+
|
||||||
"\3\2\2\2\u026e\u0258\3\2\2\2\u026e\u0266\3\2\2\2\u026fC\3\2\2\2\u0270"+
|
"\3\2\2\2\u026e\u0258\3\2\2\2\u026e\u0266\3\2\2\2\u026fC\3\2\2\2\u0270"+
|
||||||
"\u0272\5\16\b\2\u0271\u0270\3\2\2\2\u0271\u0272\3\2\2\2\u0272\u0275\3"+
|
"\u0272\5\16\b\2\u0271\u0270\3\2\2\2\u0271\u0272\3\2\2\2\u0272\u0275\3"+
|
||||||
@ -7762,14 +7762,14 @@ public class KickCParser extends Parser {
|
|||||||
"\u027a\f\3\2\2\u027a\u027b\7\f\2\2\u027b\u027d\5H%\2\u027c\u0279\3\2\2"+
|
"\u027a\f\3\2\2\u027a\u027b\7\f\2\2\u027b\u027d\5H%\2\u027c\u0279\3\2\2"+
|
||||||
"\2\u027d\u0280\3\2\2\2\u027e\u027c\3\2\2\2\u027e\u027f\3\2\2\2\u027fG"+
|
"\2\u027d\u0280\3\2\2\2\u027e\u027c\3\2\2\2\u027e\u027f\3\2\2\2\u027fG"+
|
||||||
"\3\2\2\2\u0280\u027e\3\2\2\2\u0281\u0282\b%\1\2\u0282\u0283\7\b\2\2\u0283"+
|
"\3\2\2\2\u0280\u027e\3\2\2\2\u0281\u0282\b%\1\2\u0282\u0283\7\b\2\2\u0283"+
|
||||||
"\u0284\5F$\2\u0284\u0285\7\t\2\2\u0285\u02c0\3\2\2\2\u0286\u0287\7R\2"+
|
"\u0284\5F$\2\u0284\u0285\7\t\2\2\u0285\u02c0\3\2\2\2\u0286\u0287\7S\2"+
|
||||||
"\2\u0287\u028a\7\b\2\2\u0288\u028b\5H%\2\u0289\u028b\5\34\17\2\u028a\u0288"+
|
"\2\u0287\u028a\7\b\2\2\u0288\u028b\5H%\2\u0289\u028b\5\34\17\2\u028a\u0288"+
|
||||||
"\3\2\2\2\u028a\u0289\3\2\2\2\u028b\u028c\3\2\2\2\u028c\u028d\7\t\2\2\u028d"+
|
"\3\2\2\2\u028a\u0289\3\2\2\2\u028b\u028c\3\2\2\2\u028c\u028d\7\t\2\2\u028d"+
|
||||||
"\u02c0\3\2\2\2\u028e\u028f\7S\2\2\u028f\u0292\7\b\2\2\u0290\u0293\5H%"+
|
"\u02c0\3\2\2\2\u028e\u028f\7T\2\2\u028f\u0292\7\b\2\2\u0290\u0293\5H%"+
|
||||||
"\2\u0291\u0293\5\34\17\2\u0292\u0290\3\2\2\2\u0292\u0291\3\2\2\2\u0293"+
|
"\2\u0291\u0293\5\34\17\2\u0292\u0290\3\2\2\2\u0292\u0291\3\2\2\2\u0293"+
|
||||||
"\u0294\3\2\2\2\u0294\u0295\7\t\2\2\u0295\u02c0\3\2\2\2\u0296\u0298\7T"+
|
"\u0294\3\2\2\2\u0294\u0295\7\t\2\2\u0295\u02c0\3\2\2\2\u0296\u0298\7U"+
|
||||||
"\2\2\u0297\u0299\7\b\2\2\u0298\u0297\3\2\2\2\u0298\u0299\3\2\2\2\u0299"+
|
"\2\2\u0297\u0299\7\b\2\2\u0298\u0297\3\2\2\2\u0298\u0299\3\2\2\2\u0299"+
|
||||||
"\u029a\3\2\2\2\u029a\u029c\7u\2\2\u029b\u029d\7\t\2\2\u029c\u029b\3\2"+
|
"\u029a\3\2\2\2\u029a\u029c\7v\2\2\u029b\u029d\7\t\2\2\u029c\u029b\3\2"+
|
||||||
"\2\2\u029c\u029d\3\2\2\2\u029d\u02c0\3\2\2\2\u029e\u029f\7\b\2\2\u029f"+
|
"\2\2\u029c\u029d\3\2\2\2\u029d\u02c0\3\2\2\2\u029e\u029f\7\b\2\2\u029f"+
|
||||||
"\u02a0\5\34\17\2\u02a0\u02a1\7\t\2\2\u02a1\u02a2\5H%\32\u02a2\u02c0\3"+
|
"\u02a0\5\34\17\2\u02a0\u02a1\7\t\2\2\u02a1\u02a2\5H%\32\u02a2\u02c0\3"+
|
||||||
"\2\2\2\u02a3\u02a4\t\2\2\2\u02a4\u02c0\5H%\31\u02a5\u02a6\7\24\2\2\u02a6"+
|
"\2\2\2\u02a3\u02a4\t\2\2\2\u02a4\u02c0\5H%\31\u02a5\u02a6\7\24\2\2\u02a6"+
|
||||||
@ -7777,10 +7777,10 @@ public class KickCParser extends Parser {
|
|||||||
"\2\u02aa\u02c0\5H%\22\u02ab\u02ac\7\4\2\2\u02ac\u02b1\5H%\2\u02ad\u02ae"+
|
"\2\u02aa\u02c0\5H%\22\u02ab\u02ac\7\4\2\2\u02ac\u02b1\5H%\2\u02ad\u02ae"+
|
||||||
"\7\f\2\2\u02ae\u02b0\5H%\2\u02af\u02ad\3\2\2\2\u02b0\u02b3\3\2\2\2\u02b1"+
|
"\7\f\2\2\u02ae\u02b0\5H%\2\u02af\u02ad\3\2\2\2\u02b0\u02b3\3\2\2\2\u02b1"+
|
||||||
"\u02af\3\2\2\2\u02b1\u02b2\3\2\2\2\u02b2\u02b4\3\2\2\2\u02b3\u02b1\3\2"+
|
"\u02af\3\2\2\2\u02b1\u02b2\3\2\2\2\u02b2\u02b4\3\2\2\2\u02b3\u02b1\3\2"+
|
||||||
"\2\2\u02b4\u02b5\7\5\2\2\u02b5\u02c0\3\2\2\2\u02b6\u02c0\7u\2\2\u02b7"+
|
"\2\2\u02b4\u02b5\7\5\2\2\u02b5\u02c0\3\2\2\2\u02b6\u02c0\7v\2\2\u02b7"+
|
||||||
"\u02c0\7l\2\2\u02b8\u02ba\7v\2\2\u02b9\u02b8\3\2\2\2\u02ba\u02bb\3\2\2"+
|
"\u02c0\7m\2\2\u02b8\u02ba\7w\2\2\u02b9\u02b8\3\2\2\2\u02ba\u02bb\3\2\2"+
|
||||||
"\2\u02bb\u02b9\3\2\2\2\u02bb\u02bc\3\2\2\2\u02bc\u02c0\3\2\2\2\u02bd\u02c0"+
|
"\2\u02bb\u02b9\3\2\2\2\u02bb\u02bc\3\2\2\2\u02bc\u02c0\3\2\2\2\u02bd\u02c0"+
|
||||||
"\7w\2\2\u02be\u02c0\7^\2\2\u02bf\u0281\3\2\2\2\u02bf\u0286\3\2\2\2\u02bf"+
|
"\7x\2\2\u02be\u02c0\7_\2\2\u02bf\u0281\3\2\2\2\u02bf\u0286\3\2\2\2\u02bf"+
|
||||||
"\u028e\3\2\2\2\u02bf\u0296\3\2\2\2\u02bf\u029e\3\2\2\2\u02bf\u02a3\3\2"+
|
"\u028e\3\2\2\2\u02bf\u0296\3\2\2\2\u02bf\u029e\3\2\2\2\u02bf\u02a3\3\2"+
|
||||||
"\2\2\u02bf\u02a5\3\2\2\2\u02bf\u02a7\3\2\2\2\u02bf\u02a9\3\2\2\2\u02bf"+
|
"\2\2\u02bf\u02a5\3\2\2\2\u02bf\u02a7\3\2\2\2\u02bf\u02a9\3\2\2\2\u02bf"+
|
||||||
"\u02ab\3\2\2\2\u02bf\u02b6\3\2\2\2\u02bf\u02b7\3\2\2\2\u02bf\u02b9\3\2"+
|
"\u02ab\3\2\2\2\u02bf\u02b6\3\2\2\2\u02bf\u02b7\3\2\2\2\u02bf\u02b9\3\2"+
|
||||||
@ -7796,8 +7796,8 @@ public class KickCParser extends Parser {
|
|||||||
"\7\17\2\2\u02de\u02df\5H%\2\u02df\u02e0\7\13\2\2\u02e0\u02e1\5H%\f\u02e1"+
|
"\7\17\2\2\u02de\u02df\5H%\2\u02df\u02e0\7\13\2\2\u02e0\u02e1\5H%\f\u02e1"+
|
||||||
"\u02fc\3\2\2\2\u02e2\u02e3\f\n\2\2\u02e3\u02e4\7\'\2\2\u02e4\u02fc\5H"+
|
"\u02fc\3\2\2\2\u02e2\u02e3\f\n\2\2\u02e3\u02e4\7\'\2\2\u02e4\u02fc\5H"+
|
||||||
"%\n\u02e5\u02e6\f\t\2\2\u02e6\u02e7\7(\2\2\u02e7\u02fc\5H%\t\u02e8\u02e9"+
|
"%\n\u02e5\u02e6\f\t\2\2\u02e6\u02e7\7(\2\2\u02e7\u02fc\5H%\t\u02e8\u02e9"+
|
||||||
"\f!\2\2\u02e9\u02ea\7\20\2\2\u02ea\u02fc\7u\2\2\u02eb\u02ec\f \2\2\u02ec"+
|
"\f!\2\2\u02e9\u02ea\7\20\2\2\u02ea\u02fc\7v\2\2\u02eb\u02ec\f \2\2\u02ec"+
|
||||||
"\u02ed\7\21\2\2\u02ed\u02fc\7u\2\2\u02ee\u02ef\f\37\2\2\u02ef\u02f1\7"+
|
"\u02ed\7\21\2\2\u02ed\u02fc\7v\2\2\u02ee\u02ef\f\37\2\2\u02ef\u02f1\7"+
|
||||||
"\b\2\2\u02f0\u02f2\5J&\2\u02f1\u02f0\3\2\2\2\u02f1\u02f2\3\2\2\2\u02f2"+
|
"\b\2\2\u02f0\u02f2\5J&\2\u02f1\u02f0\3\2\2\2\u02f1\u02f2\3\2\2\2\u02f2"+
|
||||||
"\u02f3\3\2\2\2\u02f3\u02fc\7\t\2\2\u02f4\u02f5\f\33\2\2\u02f5\u02f6\7"+
|
"\u02f3\3\2\2\2\u02f3\u02fc\7\t\2\2\u02f4\u02f5\f\33\2\2\u02f5\u02f6\7"+
|
||||||
"\6\2\2\u02f6\u02f7\5F$\2\u02f7\u02f8\7\7\2\2\u02f8\u02fc\3\2\2\2\u02f9"+
|
"\6\2\2\u02f6\u02f7\5F$\2\u02f7\u02f8\7\7\2\2\u02f8\u02fc\3\2\2\2\u02f9"+
|
||||||
@ -7810,56 +7810,56 @@ public class KickCParser extends Parser {
|
|||||||
"\u02fe\3\2\2\2\u02feI\3\2\2\2\u02ff\u02fd\3\2\2\2\u0300\u0305\5H%\2\u0301"+
|
"\u02fe\3\2\2\2\u02feI\3\2\2\2\u02ff\u02fd\3\2\2\2\u0300\u0305\5H%\2\u0301"+
|
||||||
"\u0302\7\f\2\2\u0302\u0304\5H%\2\u0303\u0301\3\2\2\2\u0304\u0307\3\2\2"+
|
"\u0302\7\f\2\2\u0302\u0304\5H%\2\u0303\u0301\3\2\2\2\u0304\u0307\3\2\2"+
|
||||||
"\2\u0305\u0303\3\2\2\2\u0305\u0306\3\2\2\2\u0306K\3\2\2\2\u0307\u0305"+
|
"\2\u0305\u0303\3\2\2\2\u0305\u0306\3\2\2\2\u0306K\3\2\2\2\u0307\u0305"+
|
||||||
"\3\2\2\2\u0308\u030a\7U\2\2\u0309\u030b\5N(\2\u030a\u0309\3\2\2\2\u030a"+
|
"\3\2\2\2\u0308\u030a\7V\2\2\u0309\u030b\5N(\2\u030a\u0309\3\2\2\2\u030a"+
|
||||||
"\u030b\3\2\2\2\u030b\u030c\3\2\2\2\u030c\u030d\7_\2\2\u030dM\3\2\2\2\u030e"+
|
"\u030b\3\2\2\2\u030b\u030c\3\2\2\2\u030c\u030d\7`\2\2\u030dM\3\2\2\2\u030e"+
|
||||||
"\u030f\7\b\2\2\u030f\u0314\5P)\2\u0310\u0311\7\f\2\2\u0311\u0313\5P)\2"+
|
"\u030f\7\b\2\2\u030f\u0314\5P)\2\u0310\u0311\7\f\2\2\u0311\u0313\5P)\2"+
|
||||||
"\u0312\u0310\3\2\2\2\u0313\u0316\3\2\2\2\u0314\u0312\3\2\2\2\u0314\u0315"+
|
"\u0312\u0310\3\2\2\2\u0313\u0316\3\2\2\2\u0314\u0312\3\2\2\2\u0314\u0315"+
|
||||||
"\3\2\2\2\u0315\u0317\3\2\2\2\u0316\u0314\3\2\2\2\u0317\u0318\7\t\2\2\u0318"+
|
"\3\2\2\2\u0315\u0317\3\2\2\2\u0316\u0314\3\2\2\2\u0317\u0318\7\t\2\2\u0318"+
|
||||||
"O\3\2\2\2\u0319\u031a\7V\2\2\u031a\u0329\7v\2\2\u031b\u031c\7W\2\2\u031c"+
|
"O\3\2\2\2\u0319\u031a\7W\2\2\u031a\u0329\7w\2\2\u031b\u031c\7X\2\2\u031c"+
|
||||||
"\u0329\7u\2\2\u031d\u031e\7X\2\2\u031e\u0329\7v\2\2\u031f\u0320\7Y\2\2"+
|
"\u0329\7v\2\2\u031d\u031e\7Y\2\2\u031e\u0329\7w\2\2\u031f\u0320\7Z\2\2"+
|
||||||
"\u0320\u0329\5H%\2\u0321\u0322\7Z\2\2\u0322\u0329\5H%\2\u0323\u0326\7"+
|
"\u0320\u0329\5H%\2\u0321\u0322\7[\2\2\u0322\u0329\5H%\2\u0323\u0326\7"+
|
||||||
"+\2\2\u0324\u0327\7\66\2\2\u0325\u0327\5H%\2\u0326\u0324\3\2\2\2\u0326"+
|
"+\2\2\u0324\u0327\7\67\2\2\u0325\u0327\5H%\2\u0326\u0324\3\2\2\2\u0326"+
|
||||||
"\u0325\3\2\2\2\u0327\u0329\3\2\2\2\u0328\u0319\3\2\2\2\u0328\u031b\3\2"+
|
"\u0325\3\2\2\2\u0327\u0329\3\2\2\2\u0328\u0319\3\2\2\2\u0328\u031b\3\2"+
|
||||||
"\2\2\u0328\u031d\3\2\2\2\u0328\u031f\3\2\2\2\u0328\u0321\3\2\2\2\u0328"+
|
"\2\2\u0328\u031d\3\2\2\2\u0328\u031f\3\2\2\2\u0328\u0321\3\2\2\2\u0328"+
|
||||||
"\u0323\3\2\2\2\u0329Q\3\2\2\2\u032a\u032c\5T+\2\u032b\u032a\3\2\2\2\u032c"+
|
"\u0323\3\2\2\2\u0329Q\3\2\2\2\u032a\u032c\5T+\2\u032b\u032a\3\2\2\2\u032c"+
|
||||||
"\u032f\3\2\2\2\u032d\u032b\3\2\2\2\u032d\u032e\3\2\2\2\u032eS\3\2\2\2"+
|
"\u032f\3\2\2\2\u032d\u032b\3\2\2\2\u032d\u032e\3\2\2\2\u032eS\3\2\2\2"+
|
||||||
"\u032f\u032d\3\2\2\2\u0330\u0334\5V,\2\u0331\u0334\5X-\2\u0332\u0334\5"+
|
"\u032f\u032d\3\2\2\2\u0330\u0334\5V,\2\u0331\u0334\5X-\2\u0332\u0334\5"+
|
||||||
"Z.\2\u0333\u0330\3\2\2\2\u0333\u0331\3\2\2\2\u0333\u0332\3\2\2\2\u0334"+
|
"Z.\2\u0333\u0330\3\2\2\2\u0333\u0331\3\2\2\2\u0333\u0332\3\2\2\2\u0334"+
|
||||||
"U\3\2\2\2\u0335\u0336\7\u009b\2\2\u0336\u033a\7~\2\2\u0337\u0338\7\u009a"+
|
"U\3\2\2\2\u0335\u0336\7\u009c\2\2\u0336\u033a\7\177\2\2\u0337\u0338\7"+
|
||||||
"\2\2\u0338\u033a\7~\2\2\u0339\u0335\3\2\2\2\u0339\u0337\3\2\2\2\u033a"+
|
"\u009b\2\2\u0338\u033a\7\177\2\2\u0339\u0335\3\2\2\2\u0339\u0337\3\2\2"+
|
||||||
"W\3\2\2\2\u033b\u033d\7|\2\2\u033c\u033e\5\\/\2\u033d\u033c\3\2\2\2\u033d"+
|
"\2\u033aW\3\2\2\2\u033b\u033d\7}\2\2\u033c\u033e\5\\/\2\u033d\u033c\3"+
|
||||||
"\u033e\3\2\2\2\u033eY\3\2\2\2\u033f\u0340\7{\2\2\u0340\u0345\5^\60\2\u0341"+
|
"\2\2\2\u033d\u033e\3\2\2\2\u033eY\3\2\2\2\u033f\u0340\7|\2\2\u0340\u0345"+
|
||||||
"\u0342\7\177\2\2\u0342\u0344\5^\60\2\u0343\u0341\3\2\2\2\u0344\u0347\3"+
|
"\5^\60\2\u0341\u0342\7\u0080\2\2\u0342\u0344\5^\60\2\u0343\u0341\3\2\2"+
|
||||||
"\2\2\2\u0345\u0343\3\2\2\2\u0345\u0346\3\2\2\2\u0346[\3\2\2\2\u0347\u0345"+
|
"\2\u0344\u0347\3\2\2\2\u0345\u0343\3\2\2\2\u0345\u0346\3\2\2\2\u0346["+
|
||||||
"\3\2\2\2\u0348\u0360\5^\60\2\u0349\u034a\7}\2\2\u034a\u0360\5^\60\2\u034b"+
|
"\3\2\2\2\u0347\u0345\3\2\2\2\u0348\u0360\5^\60\2\u0349\u034a\7~\2\2\u034a"+
|
||||||
"\u034c\5^\60\2\u034c\u034d\7\177\2\2\u034d\u034e\7\u009b\2\2\u034e\u0360"+
|
"\u0360\5^\60\2\u034b\u034c\5^\60\2\u034c\u034d\7\u0080\2\2\u034d\u034e"+
|
||||||
"\3\2\2\2\u034f\u0350\7\u0080\2\2\u0350\u0351\5^\60\2\u0351\u0352\7\u0081"+
|
"\7\u009c\2\2\u034e\u0360\3\2\2\2\u034f\u0350\7\u0081\2\2\u0350\u0351\5"+
|
||||||
"\2\2\u0352\u0353\7\177\2\2\u0353\u0354\7\u009b\2\2\u0354\u0360\3\2\2\2"+
|
"^\60\2\u0351\u0352\7\u0082\2\2\u0352\u0353\7\u0080\2\2\u0353\u0354\7\u009c"+
|
||||||
"\u0355\u0356\7\u0080\2\2\u0356\u0357\5^\60\2\u0357\u0358\7\177\2\2\u0358"+
|
"\2\2\u0354\u0360\3\2\2\2\u0355\u0356\7\u0081\2\2\u0356\u0357\5^\60\2\u0357"+
|
||||||
"\u0359\7\u009b\2\2\u0359\u035a\7\u0081\2\2\u035a\u0360\3\2\2\2\u035b\u035c"+
|
"\u0358\7\u0080\2\2\u0358\u0359\7\u009c\2\2\u0359\u035a\7\u0082\2\2\u035a"+
|
||||||
"\7\u0080\2\2\u035c\u035d\5^\60\2\u035d\u035e\7\u0081\2\2\u035e\u0360\3"+
|
"\u0360\3\2\2\2\u035b\u035c\7\u0081\2\2\u035c\u035d\5^\60\2\u035d\u035e"+
|
||||||
"\2\2\2\u035f\u0348\3\2\2\2\u035f\u0349\3\2\2\2\u035f\u034b\3\2\2\2\u035f"+
|
"\7\u0082\2\2\u035e\u0360\3\2\2\2\u035f\u0348\3\2\2\2\u035f\u0349\3\2\2"+
|
||||||
"\u034f\3\2\2\2\u035f\u0355\3\2\2\2\u035f\u035b\3\2\2\2\u0360]\3\2\2\2"+
|
"\2\u035f\u034b\3\2\2\2\u035f\u034f\3\2\2\2\u035f\u0355\3\2\2\2\u035f\u035b"+
|
||||||
"\u0361\u0362\b\60\1\2\u0362\u0363\7\u0082\2\2\u0363\u0364\5^\60\2\u0364"+
|
"\3\2\2\2\u0360]\3\2\2\2\u0361\u0362\b\60\1\2\u0362\u0363\7\u0083\2\2\u0363"+
|
||||||
"\u0365\7\u0083\2\2\u0365\u0370\3\2\2\2\u0366\u0367\t\t\2\2\u0367\u0370"+
|
"\u0364\5^\60\2\u0364\u0365\7\u0084\2\2\u0365\u0370\3\2\2\2\u0366\u0367"+
|
||||||
"\5^\60\n\u0368\u0370\7\u009b\2\2\u0369\u0370\7\u0099\2\2\u036a\u036b\7"+
|
"\t\t\2\2\u0367\u0370\5^\60\n\u0368\u0370\7\u009c\2\2\u0369\u0370\7\u009a"+
|
||||||
"\u008d\2\2\u036b\u036c\7\u009b\2\2\u036c\u0370\7\u008e\2\2\u036d\u0370"+
|
"\2\2\u036a\u036b\7\u008e\2\2\u036b\u036c\7\u009c\2\2\u036c\u0370\7\u008f"+
|
||||||
"\7\u008f\2\2\u036e\u0370\7\u0098\2\2\u036f\u0361\3\2\2\2\u036f\u0366\3"+
|
"\2\2\u036d\u0370\7\u0090\2\2\u036e\u0370\7\u0099\2\2\u036f\u0361\3\2\2"+
|
||||||
"\2\2\2\u036f\u0368\3\2\2\2\u036f\u0369\3\2\2\2\u036f\u036a\3\2\2\2\u036f"+
|
"\2\u036f\u0366\3\2\2\2\u036f\u0368\3\2\2\2\u036f\u0369\3\2\2\2\u036f\u036a"+
|
||||||
"\u036d\3\2\2\2\u036f\u036e\3\2\2\2\u0370\u037f\3\2\2\2\u0371\u0372\f\f"+
|
"\3\2\2\2\u036f\u036d\3\2\2\2\u036f\u036e\3\2\2\2\u0370\u037f\3\2\2\2\u0371"+
|
||||||
"\2\2\u0372\u0373\7\u0084\2\2\u0373\u037e\5^\60\r\u0374\u0375\f\13\2\2"+
|
"\u0372\f\f\2\2\u0372\u0373\7\u0085\2\2\u0373\u037e\5^\60\r\u0374\u0375"+
|
||||||
"\u0375\u0376\t\n\2\2\u0376\u037e\5^\60\f\u0377\u0378\f\t\2\2\u0378\u0379"+
|
"\f\13\2\2\u0375\u0376\t\n\2\2\u0376\u037e\5^\60\f\u0377\u0378\f\t\2\2"+
|
||||||
"\t\13\2\2\u0379\u037e\5^\60\n\u037a\u037b\f\b\2\2\u037b\u037c\t\f\2\2"+
|
"\u0378\u0379\t\13\2\2\u0379\u037e\5^\60\n\u037a\u037b\f\b\2\2\u037b\u037c"+
|
||||||
"\u037c\u037e\5^\60\t\u037d\u0371\3\2\2\2\u037d\u0374\3\2\2\2\u037d\u0377"+
|
"\t\f\2\2\u037c\u037e\5^\60\t\u037d\u0371\3\2\2\2\u037d\u0374\3\2\2\2\u037d"+
|
||||||
"\3\2\2\2\u037d\u037a\3\2\2\2\u037e\u0381\3\2\2\2\u037f\u037d\3\2\2\2\u037f"+
|
"\u0377\3\2\2\2\u037d\u037a\3\2\2\2\u037e\u0381\3\2\2\2\u037f\u037d\3\2"+
|
||||||
"\u0380\3\2\2\2\u0380_\3\2\2\2\u0381\u037f\3\2\2\2Zinv\u0087\u0090\u009a"+
|
"\2\2\u037f\u0380\3\2\2\2\u0380_\3\2\2\2\u0381\u037f\3\2\2\2Zinv\u0087"+
|
||||||
"\u00a0\u00a8\u00af\u00b8\u00bd\u00c3\u00c8\u00cd\u00d4\u00db\u00e0\u00ec"+
|
"\u0090\u009a\u00a0\u00a8\u00af\u00b8\u00bd\u00c3\u00c8\u00cd\u00d4\u00db"+
|
||||||
"\u00ef\u00f1\u00fc\u0103\u0108\u010e\u0110\u0118\u011e\u012a\u0138\u013e"+
|
"\u00e0\u00ec\u00ef\u00f1\u00fc\u0103\u0108\u010e\u0110\u0118\u011e\u012a"+
|
||||||
"\u0144\u014a\u014f\u0153\u015c\u0163\u016a\u0175\u01b8\u01bc\u01c7\u01db"+
|
"\u0138\u013e\u0144\u014a\u014f\u0153\u015c\u0163\u016a\u0175\u01b8\u01bc"+
|
||||||
"\u01e4\u01e9\u01ee\u01f5\u0202\u0207\u0213\u0221\u0234\u023d\u0244\u0249"+
|
"\u01c7\u01db\u01e4\u01e9\u01ee\u01f5\u0202\u0207\u0213\u0221\u0234\u023d"+
|
||||||
"\u024e\u0250\u0256\u025d\u0263\u0266\u026e\u0271\u0274\u027e\u028a\u0292"+
|
"\u0244\u0249\u024e\u0250\u0256\u025d\u0263\u0266\u026e\u0271\u0274\u027e"+
|
||||||
"\u0298\u029c\u02b1\u02bb\u02bf\u02f1\u02fb\u02fd\u0305\u030a\u0314\u0326"+
|
"\u028a\u0292\u0298\u029c\u02b1\u02bb\u02bf\u02f1\u02fb\u02fd\u0305\u030a"+
|
||||||
"\u0328\u032d\u0333\u0339\u033d\u0345\u035f\u036f\u037d\u037f";
|
"\u0314\u0326\u0328\u032d\u0333\u0339\u033d\u0345\u035f\u036f\u037d\u037f";
|
||||||
public static final ATN _ATN =
|
public static final ATN _ATN =
|
||||||
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
||||||
static {
|
static {
|
||||||
|
@ -41,125 +41,125 @@ RESERVE=40
|
|||||||
PC=41
|
PC=41
|
||||||
TARGET=42
|
TARGET=42
|
||||||
LINK=43
|
LINK=43
|
||||||
CPU=44
|
EMULATOR=44
|
||||||
CODESEG=45
|
CPU=45
|
||||||
DATASEG=46
|
CODESEG=46
|
||||||
ENCODING=47
|
DATASEG=47
|
||||||
CONST=48
|
ENCODING=48
|
||||||
EXTERN=49
|
CONST=49
|
||||||
EXPORT=50
|
EXTERN=50
|
||||||
ALIGN=51
|
EXPORT=51
|
||||||
INLINE=52
|
ALIGN=52
|
||||||
VOLATILE=53
|
INLINE=53
|
||||||
STATIC=54
|
VOLATILE=54
|
||||||
INTERRUPT=55
|
STATIC=55
|
||||||
REGISTER=56
|
INTERRUPT=56
|
||||||
ADDRESS=57
|
REGISTER=57
|
||||||
ADDRESS_ZEROPAGE=58
|
ADDRESS=58
|
||||||
ADDRESS_MAINMEM=59
|
ADDRESS_ZEROPAGE=59
|
||||||
FORM_SSA=60
|
ADDRESS_MAINMEM=60
|
||||||
FORM_MA=61
|
FORM_SSA=61
|
||||||
INTRINSIC=62
|
FORM_MA=62
|
||||||
CALLING=63
|
INTRINSIC=63
|
||||||
CALLINGCONVENTION=64
|
CALLING=64
|
||||||
VARMODEL=65
|
CALLINGCONVENTION=65
|
||||||
IF=66
|
VARMODEL=66
|
||||||
ELSE=67
|
IF=67
|
||||||
WHILE=68
|
ELSE=68
|
||||||
DO=69
|
WHILE=69
|
||||||
FOR=70
|
DO=70
|
||||||
SWITCH=71
|
FOR=71
|
||||||
RETURN=72
|
SWITCH=72
|
||||||
BREAK=73
|
RETURN=73
|
||||||
CONTINUE=74
|
BREAK=74
|
||||||
ASM=75
|
CONTINUE=75
|
||||||
DEFAULT=76
|
ASM=76
|
||||||
CASE=77
|
DEFAULT=77
|
||||||
STRUCT=78
|
CASE=78
|
||||||
ENUM=79
|
STRUCT=79
|
||||||
SIZEOF=80
|
ENUM=80
|
||||||
TYPEID=81
|
SIZEOF=81
|
||||||
DEFINED=82
|
TYPEID=82
|
||||||
KICKASM=83
|
DEFINED=83
|
||||||
RESOURCE=84
|
KICKASM=84
|
||||||
USES=85
|
RESOURCE=85
|
||||||
CLOBBERS=86
|
USES=86
|
||||||
BYTES=87
|
CLOBBERS=87
|
||||||
CYCLES=88
|
BYTES=88
|
||||||
LOGIC_NOT=89
|
CYCLES=89
|
||||||
SIGNEDNESS=90
|
LOGIC_NOT=90
|
||||||
SIMPLETYPE=91
|
SIGNEDNESS=91
|
||||||
BOOLEAN=92
|
SIMPLETYPE=92
|
||||||
KICKASM_BODY=93
|
BOOLEAN=93
|
||||||
IMPORT=94
|
KICKASM_BODY=94
|
||||||
INCLUDE=95
|
IMPORT=95
|
||||||
PRAGMA=96
|
INCLUDE=96
|
||||||
DEFINE=97
|
PRAGMA=97
|
||||||
DEFINE_CONTINUE=98
|
DEFINE=98
|
||||||
UNDEF=99
|
DEFINE_CONTINUE=99
|
||||||
IFDEF=100
|
UNDEF=100
|
||||||
IFNDEF=101
|
IFDEF=101
|
||||||
IFIF=102
|
IFNDEF=102
|
||||||
ELIF=103
|
IFIF=103
|
||||||
IFELSE=104
|
ELIF=104
|
||||||
ENDIF=105
|
IFELSE=105
|
||||||
NUMBER=106
|
ENDIF=106
|
||||||
NUMFLOAT=107
|
NUMBER=107
|
||||||
BINFLOAT=108
|
NUMFLOAT=108
|
||||||
DECFLOAT=109
|
BINFLOAT=109
|
||||||
HEXFLOAT=110
|
DECFLOAT=110
|
||||||
NUMINT=111
|
HEXFLOAT=111
|
||||||
BININTEGER=112
|
NUMINT=112
|
||||||
DECINTEGER=113
|
BININTEGER=113
|
||||||
HEXINTEGER=114
|
DECINTEGER=114
|
||||||
NAME=115
|
HEXINTEGER=115
|
||||||
STRING=116
|
NAME=116
|
||||||
CHAR=117
|
STRING=117
|
||||||
WS=118
|
CHAR=118
|
||||||
COMMENT_LINE=119
|
WS=119
|
||||||
COMMENT_BLOCK=120
|
COMMENT_LINE=120
|
||||||
ASM_BYTE=121
|
COMMENT_BLOCK=121
|
||||||
ASM_MNEMONIC=122
|
ASM_BYTE=122
|
||||||
ASM_IMM=123
|
ASM_MNEMONIC=123
|
||||||
ASM_COLON=124
|
ASM_IMM=124
|
||||||
ASM_COMMA=125
|
ASM_COLON=125
|
||||||
ASM_PAR_BEGIN=126
|
ASM_COMMA=126
|
||||||
ASM_PAR_END=127
|
ASM_PAR_BEGIN=127
|
||||||
ASM_BRACKET_BEGIN=128
|
ASM_PAR_END=128
|
||||||
ASM_BRACKET_END=129
|
ASM_BRACKET_BEGIN=129
|
||||||
ASM_DOT=130
|
ASM_BRACKET_END=130
|
||||||
ASM_SHIFT_LEFT=131
|
ASM_DOT=131
|
||||||
ASM_SHIFT_RIGHT=132
|
ASM_SHIFT_LEFT=132
|
||||||
ASM_PLUS=133
|
ASM_SHIFT_RIGHT=133
|
||||||
ASM_MINUS=134
|
ASM_PLUS=134
|
||||||
ASM_LESS_THAN=135
|
ASM_MINUS=135
|
||||||
ASM_GREATER_THAN=136
|
ASM_LESS_THAN=136
|
||||||
ASM_MULTIPLY=137
|
ASM_GREATER_THAN=137
|
||||||
ASM_DIVIDE=138
|
ASM_MULTIPLY=138
|
||||||
ASM_CURLY_BEGIN=139
|
ASM_DIVIDE=139
|
||||||
ASM_CURLY_END=140
|
ASM_CURLY_BEGIN=140
|
||||||
ASM_NUMBER=141
|
ASM_CURLY_END=141
|
||||||
ASM_NUMFLOAT=142
|
ASM_NUMBER=142
|
||||||
ASM_BINFLOAT=143
|
ASM_NUMFLOAT=143
|
||||||
ASM_DECFLOAT=144
|
ASM_BINFLOAT=144
|
||||||
ASM_HEXFLOAT=145
|
ASM_DECFLOAT=145
|
||||||
ASM_NUMINT=146
|
ASM_HEXFLOAT=146
|
||||||
ASM_BININTEGER=147
|
ASM_NUMINT=147
|
||||||
ASM_DECINTEGER=148
|
ASM_BININTEGER=148
|
||||||
ASM_HEXINTEGER=149
|
ASM_DECINTEGER=149
|
||||||
ASM_CHAR=150
|
ASM_HEXINTEGER=150
|
||||||
ASM_MULTI_REL=151
|
ASM_CHAR=151
|
||||||
ASM_MULTI_NAME=152
|
ASM_MULTI_REL=152
|
||||||
ASM_NAME=153
|
ASM_MULTI_NAME=153
|
||||||
ASM_WS=154
|
ASM_NAME=154
|
||||||
ASM_COMMENT_LINE=155
|
ASM_WS=155
|
||||||
ASM_COMMENT_BLOCK=156
|
ASM_COMMENT_LINE=156
|
||||||
IMPORT_SYSTEMFILE=157
|
ASM_COMMENT_BLOCK=157
|
||||||
IMPORT_LOCALFILE=158
|
IMPORT_SYSTEMFILE=158
|
||||||
IMPORT_WS=159
|
IMPORT_LOCALFILE=159
|
||||||
IMPORT_COMMENT_LINE=160
|
IMPORT_WS=160
|
||||||
IMPORT_COMMENT_BLOCK=161
|
IMPORT_COMMENT_LINE=161
|
||||||
EMULATOR=162
|
IMPORT_COMMENT_BLOCK=162
|
||||||
';'=8
|
';'=8
|
||||||
'..'=11
|
'..'=11
|
||||||
'...'=12
|
'...'=12
|
||||||
@ -184,61 +184,62 @@ EMULATOR=162
|
|||||||
'pc'=41
|
'pc'=41
|
||||||
'target'=42
|
'target'=42
|
||||||
'link'=43
|
'link'=43
|
||||||
'cpu'=44
|
'emulator'=44
|
||||||
'code_seg'=45
|
'cpu'=45
|
||||||
'data_seg'=46
|
'code_seg'=46
|
||||||
'encoding'=47
|
'data_seg'=47
|
||||||
'const'=48
|
'encoding'=48
|
||||||
'extern'=49
|
'const'=49
|
||||||
'export'=50
|
'extern'=50
|
||||||
'align'=51
|
'export'=51
|
||||||
'inline'=52
|
'align'=52
|
||||||
'volatile'=53
|
'inline'=53
|
||||||
'static'=54
|
'volatile'=54
|
||||||
'interrupt'=55
|
'static'=55
|
||||||
'register'=56
|
'interrupt'=56
|
||||||
'__address'=57
|
'register'=57
|
||||||
'__zp'=58
|
'__address'=58
|
||||||
'__mem'=59
|
'__zp'=59
|
||||||
'__ssa'=60
|
'__mem'=60
|
||||||
'__ma'=61
|
'__ssa'=61
|
||||||
'__intrinsic'=62
|
'__ma'=62
|
||||||
'calling'=63
|
'__intrinsic'=63
|
||||||
'var_model'=65
|
'calling'=64
|
||||||
'if'=66
|
'var_model'=66
|
||||||
'else'=67
|
'if'=67
|
||||||
'while'=68
|
'else'=68
|
||||||
'do'=69
|
'while'=69
|
||||||
'for'=70
|
'do'=70
|
||||||
'switch'=71
|
'for'=71
|
||||||
'return'=72
|
'switch'=72
|
||||||
'break'=73
|
'return'=73
|
||||||
'continue'=74
|
'break'=74
|
||||||
'asm'=75
|
'continue'=75
|
||||||
'default'=76
|
'asm'=76
|
||||||
'case'=77
|
'default'=77
|
||||||
'struct'=78
|
'case'=78
|
||||||
'enum'=79
|
'struct'=79
|
||||||
'sizeof'=80
|
'enum'=80
|
||||||
'typeid'=81
|
'sizeof'=81
|
||||||
'defined'=82
|
'typeid'=82
|
||||||
'kickasm'=83
|
'defined'=83
|
||||||
'resource'=84
|
'kickasm'=84
|
||||||
'uses'=85
|
'resource'=85
|
||||||
'clobbers'=86
|
'uses'=86
|
||||||
'bytes'=87
|
'clobbers'=87
|
||||||
'cycles'=88
|
'bytes'=88
|
||||||
'!'=89
|
'cycles'=89
|
||||||
'#import'=94
|
'!'=90
|
||||||
'#include'=95
|
'#import'=95
|
||||||
'#pragma'=96
|
'#include'=96
|
||||||
'#define'=97
|
'#pragma'=97
|
||||||
'#undef'=99
|
'#define'=98
|
||||||
'#ifdef'=100
|
'#undef'=100
|
||||||
'#ifndef'=101
|
'#ifdef'=101
|
||||||
'#if'=102
|
'#ifndef'=102
|
||||||
'#elif'=103
|
'#if'=103
|
||||||
'#else'=104
|
'#elif'=104
|
||||||
'#endif'=105
|
'#else'=105
|
||||||
'.byte'=121
|
'#endif'=106
|
||||||
'#'=123
|
'.byte'=122
|
||||||
|
'#'=124
|
||||||
|
138
src/main/kc/include/mos7360.h
Normal file
138
src/main/kc/include/mos7360.h
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
// The MOS 7360/8360 TED chip used for graphics and sound in Plus/4 and Commodore 16
|
||||||
|
// https://www.karlstechnology.com/commodore/TED7360-datasheet.pdf
|
||||||
|
// http://mclauchlan.site.net.au/scott/C=Hacking/C-Hacking12/gfx.html
|
||||||
|
|
||||||
|
struct MOS7360_TED {
|
||||||
|
// Counter #01. It always starts to decrement from the last written value into it.
|
||||||
|
unsigned int COUNTER1;
|
||||||
|
// Counter #02. It runs freely from $ffff.
|
||||||
|
unsigned int COUNTER2;
|
||||||
|
// Counter #03. Same as above.
|
||||||
|
unsigned int COUNTER3;
|
||||||
|
// Mostly the same as VIC's $d011.
|
||||||
|
// Bit 0,1,2 : Vertical smooth-scrolling
|
||||||
|
// Bit 3 : 24/25 rows screen
|
||||||
|
// Bit 4 : Blank screen
|
||||||
|
// Bit 5 : Bitplane mode
|
||||||
|
// Bit 6 : Enhanced color mode
|
||||||
|
// Bit 7 : TED's internal test, it should be 0.
|
||||||
|
unsigned char CONTROL1;
|
||||||
|
// Most similar VIC-reg is $d016.
|
||||||
|
// Bit 0,1,2 : Horizontal smooth-scrolling
|
||||||
|
// Bit 3 : 40/38 columns screen
|
||||||
|
// Bit 4 : Multicolor mode
|
||||||
|
// Bit 5 : TED stop. If set, the TED stops it's counters and screen-generating, only single clock and refresh
|
||||||
|
// cycles remain.
|
||||||
|
// Bit 6 : PAL/NTSC. 0:PAL, 1:NTSC
|
||||||
|
// Bit 7 : Disable reverse mode. If 0, we got 128 characters and higmost bit tells if the character should
|
||||||
|
// appear in inverse. If set, no inverse mode but 256 characters.
|
||||||
|
unsigned char CONTROL2;
|
||||||
|
// Keyboard input latch. Giving a strobe - writing to the register, the latch stores the values of the input-lines.
|
||||||
|
// Then, we can read them from this register.
|
||||||
|
unsigned char KEYBOARD_INPUT;
|
||||||
|
// Interrupt request register. When a counter sends want to send an IRQ, it's bit will appear as a 0; then, if the
|
||||||
|
// IRQ was caused then highmost bit is set.
|
||||||
|
// Bit 0 : Unused
|
||||||
|
// Bit 1 : Raster-counter
|
||||||
|
// Bit 2 : Lightpen. Not implemented.
|
||||||
|
// Bit 3 : Counter #1
|
||||||
|
// Bit 4 : Counter #2
|
||||||
|
// Bit 5 : Unused
|
||||||
|
// Bit 6 : Counter #3
|
||||||
|
// Bit 7 : Interrupt occured. This bit is set when an IRQ was enabled and therefore, the IRQ was sent to the
|
||||||
|
// processor. Physically, this is the negated level of the TED's IRQ output. The IRQ should be
|
||||||
|
// deleted with writing the register-value back after accepting an interrupt.
|
||||||
|
unsigned char IRQ_REQUEST;
|
||||||
|
// Interrupt mask register. These bits could be used to disable and enable interrupt-sources. When a place is set to
|
||||||
|
// 1, that will be able to cause an interrupt to the processor. If not, the sign of the interrupt request will only
|
||||||
|
// be appear in the above register.
|
||||||
|
// Bit 0 : 9th bit of RASTER_IRQ (see there)
|
||||||
|
// Bit 1 : Raster-counter
|
||||||
|
// Bit 2 : Lightpen. Not implemented.
|
||||||
|
// Bit 3 : Counter #1
|
||||||
|
// Bit 4 : Counter #2
|
||||||
|
// Bit 5 : Unused
|
||||||
|
// Bit 6 : Counter #3
|
||||||
|
// Bit 7 : Unused
|
||||||
|
unsigned char IRQ_MASK;
|
||||||
|
// Raster interrupt register. Same as $d012 when writing; it stores the position of occuring raster interrupt.
|
||||||
|
// Higmost bit is in IRQ_REQUEST's 0. bit.
|
||||||
|
unsigned char RASTER_IRQ;
|
||||||
|
// Hardware-cursor position (10 bits). Lower bits: CURSOR_LO, higher 2 bits in CURSOR_HI's 0. and 1. places.
|
||||||
|
// Beyond 1000 the cursor is not seeable.
|
||||||
|
unsigned char CURSOR_HI;
|
||||||
|
unsigned char CURSOR_LO;
|
||||||
|
// First sound-source's frq-value's lowmost 8 bit. More 2 bits are in $ff10's 0. and 1. places.
|
||||||
|
unsigned char CH1_FREQ_LO;
|
||||||
|
// Second sound-source, lowmost 8 bits. More 2 bits in $ff12, 0. and 1. places.
|
||||||
|
// The sound register-value can be calculated as
|
||||||
|
// reg=1024-(111860.781/frq[Hz]) (NTSC)
|
||||||
|
// reg=1024-(111840.45 /frq[Hz]) (PAL)
|
||||||
|
unsigned char CH2_FREQ_LO;
|
||||||
|
// First sound-source, higmost 2 bits. 2-7 bits are unused.
|
||||||
|
unsigned char CH1_FREQ_HI;
|
||||||
|
// Sound control register.
|
||||||
|
// Bit 0-3 : Volume. Maximum value is 8.
|
||||||
|
// Bit 4 : Sound #1 on/off. (implicit squarewave)
|
||||||
|
// Bit 5 : Sound #2 squarewave on/off.
|
||||||
|
// Bit 6 : Sound #2 noise on/off. If You set both, the square will sound.
|
||||||
|
// Bit 7 : D/A mode. See above for more.
|
||||||
|
unsigned char SOUND_CONTROL;
|
||||||
|
// Bitmap Address and Miscellaneous Control
|
||||||
|
// Bit 0,1 : 2nd sound-source, highmost bits.
|
||||||
|
// Bit 2 : Character generator in ROM or RAM. When set, TED will enable ROM when trying to get data from the
|
||||||
|
// charactergenerator to build screen. Else, it will give out control-signals to the DRAM's.
|
||||||
|
// Bit 3,4,5 : These bits tell, where to find bitplane in the memory when using bitplane-mode. TED assumes them
|
||||||
|
// as A15,A14 and A13 bits. So, the bitplanes can be switched as 8K pages, anywhere in the 64K.
|
||||||
|
// Bit 6-7 : Unused.
|
||||||
|
unsigned char MEMORY1;
|
||||||
|
// Character Description Map Address and Miscellaneous Control
|
||||||
|
// Bit 0 : A sign to having control about memory paging. This bit always sets to 1 when ROM is active over
|
||||||
|
// $8000. Else, it will be 0. READ ONLY.
|
||||||
|
// Bit 1 : Force single clock mode. Then, TED will disable to generate twice clock.
|
||||||
|
// Bit 2-7 : Charactergenerator. Bit 7 corresponds to A15, 6 to A14 and so on. This value shows and sets the
|
||||||
|
// start of the charactergenerator. It can be paged as $400 bytes. Use with addition of CONTROL3-2.bit.
|
||||||
|
unsigned char MEMORY2;
|
||||||
|
// Screen Matrix address
|
||||||
|
// Bit 0-2 : Unused
|
||||||
|
// Bit 3-7 : Start of the video-ram. Bit 7 also corresponds to the A15 line as above. So, video-ram is mappable
|
||||||
|
// as $800 bytes - 2K. The above $ff12-2.bit doesn't affect this, but the actual RAM/ROM mapping
|
||||||
|
// (see at $ff3e/$ff3f and $ff13/0) does.
|
||||||
|
unsigned char MEMORY3;
|
||||||
|
// Background Color. Lower bits contain color-code, higher 3 luminance and highmost is ignored.
|
||||||
|
unsigned char BG_COLOR;
|
||||||
|
// Color register 1. Used in ECM and MCM modes.
|
||||||
|
unsigned char BG_COLOR1;
|
||||||
|
// Color register 2. Used in ECM and MCM modes.
|
||||||
|
unsigned char BG_COLOR2;
|
||||||
|
// Color register 3. Used in ECM and MCM modes.
|
||||||
|
unsigned char BG_COLOR3;
|
||||||
|
// Border Color. Lower bits contain color-code, higher 3 luminance and higmost is ignored.
|
||||||
|
unsigned char BORDER_COLOR;
|
||||||
|
// Actual character-position. TED counts the characters that it had fetched and put out to the screen.
|
||||||
|
// Lower bits: CHARPOS_LO, higher 2 bits in CHARPOS_HI's 0. and 1. places.
|
||||||
|
// The number is increasing by 40 after every characterline (8 rasterline).
|
||||||
|
unsigned char CHARPOS_HI;
|
||||||
|
unsigned char CHARPOS_LO;
|
||||||
|
// Actual position of vertical scanning. Higmost bit is in $ff1c. Read/Writeable!
|
||||||
|
unsigned char RASTER_HI;
|
||||||
|
unsigned char RASTER_LO;
|
||||||
|
// Actual position of horizontal scanning. R/W!. Lowmost bit is unused. It contains the TED's internal counter's
|
||||||
|
// highmost 8 bits. So, it increases 4 with every character. When writing, it seems to put the value to a
|
||||||
|
// functionally different register (writing back a reading value in right time affects the screen).
|
||||||
|
unsigned char HSCAN_POS;
|
||||||
|
// Bit 0,1,2 : Actual vertical scanning-line in a character-row. R/W!.
|
||||||
|
// Bit 3-6 : Flashing counter. It's value increases with every frame, and TED fits it's flashing feature to this
|
||||||
|
// register's reaching to 15.
|
||||||
|
// Bit 7 : Unused
|
||||||
|
unsigned char VSCAN_POS;
|
||||||
|
// Unused address space
|
||||||
|
unsigned char UNUSED[0x1d];
|
||||||
|
// Switching to ROM. A writing statement to this address will cause to turn on the ROM between $8000-$ffff. It's an
|
||||||
|
// other matter, which one; this time, only sure thing that it'll give CS signals instead of RAS', CAS' and MUX.
|
||||||
|
// See $ff13/0 and $ff14
|
||||||
|
unsigned char ROM_SWITCH;
|
||||||
|
// Switching to RAM. The opposite of ROM_SWITCH.
|
||||||
|
unsigned char RAM_SWITCH;
|
||||||
|
};
|
||||||
|
|
12
src/main/kc/include/plus4.h
Normal file
12
src/main/kc/include/plus4.h
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// Plus/4 / Commodore 16 registers and memory layout
|
||||||
|
#include <mos7360.h>
|
||||||
|
|
||||||
|
// The TED chip controlling video and sound on the Plus/4 and Commodore 16
|
||||||
|
struct MOS7360_TED * const TED = 0xff00;
|
||||||
|
|
||||||
|
// Default address of screen luminance/color matrix
|
||||||
|
char * const DEFAULT_COLORRAM = 0x0800;
|
||||||
|
|
||||||
|
// Default address of screen character matrix
|
||||||
|
char * const DEFAULT_SCREEN = 0x0c00;
|
||||||
|
|
@ -2,30 +2,27 @@
|
|||||||
#pragma link("plus4.ld")
|
#pragma link("plus4.ld")
|
||||||
#pragma emulator("xplus4")
|
#pragma emulator("xplus4")
|
||||||
|
|
||||||
|
#include <plus4.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
char * const SCREEN = 0x0c00;
|
// Colors to fade up/down when visiting a char multiple times
|
||||||
char * const COLORRAM = 0x0800;
|
|
||||||
|
|
||||||
char * const BGCOLOR = 0xff19;
|
|
||||||
char * const BORDERCOLOR = 0xff15;
|
|
||||||
char * const RASTER = 0xff1d;
|
|
||||||
|
|
||||||
char FADE[16] = { 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72, 0x76, 0x66, 0x56, 0x46, 0x36, 0x26, 0x16, 0x06 };
|
char FADE[16] = { 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72, 0x76, 0x66, 0x56, 0x46, 0x36, 0x26, 0x16, 0x06 };
|
||||||
char COUNT[1000];
|
|
||||||
|
// The number of times each character has been visited
|
||||||
|
char VISITS[1000];
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
memset(SCREEN, 0xa0, 1000);
|
memset(DEFAULT_SCREEN, 0xa0, 1000);
|
||||||
memset(COLORRAM, 0, 1000);
|
memset(DEFAULT_COLORRAM, 0, 1000);
|
||||||
memset(COUNT, 0, 1000);
|
memset(VISITS, 0, 1000);
|
||||||
*BORDERCOLOR = 0;
|
TED->BG_COLOR = 0;
|
||||||
*BGCOLOR = 0;
|
TED->BORDER_COLOR = 0;
|
||||||
char x=20, y=12;
|
char x=20, y=12;
|
||||||
while(1) {
|
while(1) {
|
||||||
unsigned int offset = (unsigned int)y*40+x;
|
unsigned int offset = (unsigned int)y*40+x;
|
||||||
char cnt = ++*(COUNT+offset);
|
char cnt = ++*(VISITS+offset);
|
||||||
*(COLORRAM+offset) = FADE[cnt&0xf];
|
*(DEFAULT_COLORRAM+offset) = FADE[cnt&0xf];
|
||||||
char rnd = >rand();
|
char rnd = >rand();
|
||||||
if(rnd & 0x80) {
|
if(rnd & 0x80) {
|
||||||
if(rnd& 0x40) {
|
if(rnd& 0x40) {
|
||||||
@ -44,6 +41,7 @@ void main() {
|
|||||||
if(y==0xff) y=0;
|
if(y==0xff) y=0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while(*RASTER!=0xff) {}
|
while(TED->RASTER_LO!=0xff) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -9,11 +9,15 @@
|
|||||||
.segment Code
|
.segment Code
|
||||||
|
|
||||||
|
|
||||||
.label SCREEN = $c00
|
.const OFFSET_STRUCT_MOS7360_TED_BG_COLOR = $15
|
||||||
.label COLORRAM = $800
|
.const OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR = $19
|
||||||
.label BGCOLOR = $ff19
|
.const OFFSET_STRUCT_MOS7360_TED_RASTER_LO = $1d
|
||||||
.label BORDERCOLOR = $ff15
|
// The TED chip controlling video and sound on the Plus/4 and Commodore 16
|
||||||
.label RASTER = $ff1d
|
.label TED = $ff00
|
||||||
|
// Default address of screen luminance/color matrix
|
||||||
|
.label DEFAULT_COLORRAM = $800
|
||||||
|
// Default address of screen character matrix
|
||||||
|
.label DEFAULT_SCREEN = $c00
|
||||||
// The random state variable
|
// The random state variable
|
||||||
.label rand_state = 3
|
.label rand_state = 3
|
||||||
__bbegin:
|
__bbegin:
|
||||||
@ -29,32 +33,32 @@ main: {
|
|||||||
.label y = 2
|
.label y = 2
|
||||||
.label __29 = 7
|
.label __29 = 7
|
||||||
.label __30 = 5
|
.label __30 = 5
|
||||||
// memset(SCREEN, 0xa0, 1000)
|
// memset(DEFAULT_SCREEN, 0xa0, 1000)
|
||||||
ldx #$a0
|
ldx #$a0
|
||||||
lda #<SCREEN
|
lda #<DEFAULT_SCREEN
|
||||||
sta.z memset.str
|
sta.z memset.str
|
||||||
lda #>SCREEN
|
lda #>DEFAULT_SCREEN
|
||||||
sta.z memset.str+1
|
sta.z memset.str+1
|
||||||
jsr memset
|
jsr memset
|
||||||
// memset(COLORRAM, 0, 1000)
|
// memset(DEFAULT_COLORRAM, 0, 1000)
|
||||||
ldx #0
|
ldx #0
|
||||||
lda #<COLORRAM
|
lda #<DEFAULT_COLORRAM
|
||||||
sta.z memset.str
|
sta.z memset.str
|
||||||
lda #>COLORRAM
|
lda #>DEFAULT_COLORRAM
|
||||||
sta.z memset.str+1
|
sta.z memset.str+1
|
||||||
jsr memset
|
jsr memset
|
||||||
// memset(COUNT, 0, 1000)
|
// memset(VISITS, 0, 1000)
|
||||||
ldx #0
|
ldx #0
|
||||||
lda #<COUNT
|
lda #<VISITS
|
||||||
sta.z memset.str
|
sta.z memset.str
|
||||||
lda #>COUNT
|
lda #>VISITS
|
||||||
sta.z memset.str+1
|
sta.z memset.str+1
|
||||||
jsr memset
|
jsr memset
|
||||||
// *BORDERCOLOR = 0
|
// TED->BG_COLOR = 0
|
||||||
lda #0
|
lda #0
|
||||||
sta BORDERCOLOR
|
sta TED+OFFSET_STRUCT_MOS7360_TED_BG_COLOR
|
||||||
// *BGCOLOR = 0
|
// TED->BORDER_COLOR = 0
|
||||||
sta BGCOLOR
|
sta TED+OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR
|
||||||
lda #<1
|
lda #<1
|
||||||
sta.z rand_state
|
sta.z rand_state
|
||||||
lda #>1
|
lda #>1
|
||||||
@ -97,43 +101,43 @@ main: {
|
|||||||
bcc !+
|
bcc !+
|
||||||
inc.z offset+1
|
inc.z offset+1
|
||||||
!:
|
!:
|
||||||
// COUNT+offset
|
// VISITS+offset
|
||||||
lda.z offset
|
lda.z offset
|
||||||
clc
|
clc
|
||||||
adc #<COUNT
|
adc #<VISITS
|
||||||
sta.z __5
|
sta.z __5
|
||||||
lda.z offset+1
|
lda.z offset+1
|
||||||
adc #>COUNT
|
adc #>VISITS
|
||||||
sta.z __5+1
|
sta.z __5+1
|
||||||
// cnt = ++*(COUNT+offset)
|
// cnt = ++*(VISITS+offset)
|
||||||
ldy #0
|
ldy #0
|
||||||
lda (__5),y
|
lda (__5),y
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
sta (__5),y
|
sta (__5),y
|
||||||
// COUNT+offset
|
// VISITS+offset
|
||||||
lda.z offset
|
lda.z offset
|
||||||
clc
|
clc
|
||||||
adc #<COUNT
|
adc #<VISITS
|
||||||
sta.z __6
|
sta.z __6
|
||||||
lda.z offset+1
|
lda.z offset+1
|
||||||
adc #>COUNT
|
adc #>VISITS
|
||||||
sta.z __6+1
|
sta.z __6+1
|
||||||
// cnt = ++*(COUNT+offset)
|
// cnt = ++*(VISITS+offset)
|
||||||
lda (__6),y
|
lda (__6),y
|
||||||
tay
|
tay
|
||||||
// COLORRAM+offset
|
// DEFAULT_COLORRAM+offset
|
||||||
clc
|
clc
|
||||||
lda.z __8
|
lda.z __8
|
||||||
adc #<COLORRAM
|
adc #<DEFAULT_COLORRAM
|
||||||
sta.z __8
|
sta.z __8
|
||||||
lda.z __8+1
|
lda.z __8+1
|
||||||
adc #>COLORRAM
|
adc #>DEFAULT_COLORRAM
|
||||||
sta.z __8+1
|
sta.z __8+1
|
||||||
// cnt&0xf
|
// cnt&0xf
|
||||||
tya
|
tya
|
||||||
and #$f
|
and #$f
|
||||||
// *(COLORRAM+offset) = FADE[cnt&0xf]
|
// *(DEFAULT_COLORRAM+offset) = FADE[cnt&0xf]
|
||||||
tay
|
tay
|
||||||
lda FADE,y
|
lda FADE,y
|
||||||
ldy #0
|
ldy #0
|
||||||
@ -163,9 +167,9 @@ main: {
|
|||||||
lda #0
|
lda #0
|
||||||
sta.z y
|
sta.z y
|
||||||
__b6:
|
__b6:
|
||||||
// while(*RASTER!=0xff)
|
// while(TED->RASTER_LO!=0xff)
|
||||||
lda #$ff
|
lda #$ff
|
||||||
cmp RASTER
|
cmp TED+OFFSET_STRUCT_MOS7360_TED_RASTER_LO
|
||||||
bne __b6
|
bne __b6
|
||||||
jmp __b2
|
jmp __b2
|
||||||
__b4:
|
__b4:
|
||||||
@ -295,5 +299,7 @@ memset: {
|
|||||||
jmp __b2
|
jmp __b2
|
||||||
}
|
}
|
||||||
.segment Data
|
.segment Data
|
||||||
|
// Colors to fade up/down when visiting a char multiple times
|
||||||
FADE: .byte 2, $12, $22, $32, $42, $52, $62, $72, $76, $66, $56, $46, $36, $26, $16, 6
|
FADE: .byte 2, $12, $22, $32, $42, $52, $62, $72, $76, $66, $56, $46, $36, $26, $16, 6
|
||||||
COUNT: .fill $3e8, 0
|
// The number of times each character has been visited
|
||||||
|
VISITS: .fill $3e8, 0
|
||||||
|
@ -22,8 +22,8 @@ main::@11: scope:[main] from main::@10
|
|||||||
[9] call memset
|
[9] call memset
|
||||||
to:main::@12
|
to:main::@12
|
||||||
main::@12: scope:[main] from main::@11
|
main::@12: scope:[main] from main::@11
|
||||||
[10] *((const nomodify byte*) BORDERCOLOR) ← (byte) 0
|
[10] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR) ← (byte) 0
|
||||||
[11] *((const nomodify byte*) BGCOLOR) ← (byte) 0
|
[11] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR) ← (byte) 0
|
||||||
to:main::@1
|
to:main::@1
|
||||||
main::@1: scope:[main] from main::@12 main::@6
|
main::@1: scope:[main] from main::@12 main::@6
|
||||||
[12] (word) rand_state#11 ← phi( main::@12/(word) 1 main::@6/(word) rand_state#3 )
|
[12] (word) rand_state#11 ← phi( main::@12/(word) 1 main::@6/(word) rand_state#3 )
|
||||||
@ -36,11 +36,11 @@ main::@2: scope:[main] from main::@1
|
|||||||
[15] (word~) main::$30 ← (word~) main::$29 + (word~) main::$24
|
[15] (word~) main::$30 ← (word~) main::$29 + (word~) main::$24
|
||||||
[16] (word~) main::$3 ← (word~) main::$30 << (byte) 3
|
[16] (word~) main::$3 ← (word~) main::$30 << (byte) 3
|
||||||
[17] (word) main::offset#0 ← (word~) main::$3 + (byte) main::x#11
|
[17] (word) main::offset#0 ← (word~) main::$3 + (byte) main::x#11
|
||||||
[18] (byte*~) main::$5 ← (const byte*) COUNT + (word) main::offset#0
|
[18] (byte*~) main::$5 ← (const byte*) VISITS + (word) main::offset#0
|
||||||
[19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5)
|
[19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5)
|
||||||
[20] (byte*~) main::$6 ← (const byte*) COUNT + (word) main::offset#0
|
[20] (byte*~) main::$6 ← (const byte*) VISITS + (word) main::offset#0
|
||||||
[21] (byte) main::cnt#0 ← *((byte*~) main::$6)
|
[21] (byte) main::cnt#0 ← *((byte*~) main::$6)
|
||||||
[22] (byte*~) main::$8 ← (const nomodify byte*) COLORRAM + (word) main::offset#0
|
[22] (byte*~) main::$8 ← (const nomodify byte*) DEFAULT_COLORRAM + (word) main::offset#0
|
||||||
[23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f
|
[23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f
|
||||||
[24] *((byte*~) main::$8) ← *((const byte*) FADE + (byte~) main::$9)
|
[24] *((byte*~) main::$8) ← *((const byte*) FADE + (byte~) main::$9)
|
||||||
[25] call rand
|
[25] call rand
|
||||||
@ -66,7 +66,7 @@ main::@14: scope:[main] from main::@8
|
|||||||
main::@6: scope:[main] from main::@14 main::@15 main::@16 main::@17 main::@4 main::@5 main::@6 main::@8 main::@9
|
main::@6: scope:[main] from main::@14 main::@15 main::@16 main::@17 main::@4 main::@5 main::@6 main::@8 main::@9
|
||||||
[36] (byte) main::x#10 ← phi( main::@14/(byte) main::x#11 main::@8/(byte) main::x#11 main::@15/(byte) main::x#2 main::@9/(byte) 0 main::@16/(byte) main::x#11 main::@4/(byte) main::x#11 main::@17/(byte) main::x#1 main::@5/(byte) $27 main::@6/(byte) main::x#10 )
|
[36] (byte) main::x#10 ← phi( main::@14/(byte) main::x#11 main::@8/(byte) main::x#11 main::@15/(byte) main::x#2 main::@9/(byte) 0 main::@16/(byte) main::x#11 main::@4/(byte) main::x#11 main::@17/(byte) main::x#1 main::@5/(byte) $27 main::@6/(byte) main::x#10 )
|
||||||
[36] (byte) main::y#10 ← phi( main::@14/(byte) main::y#2 main::@8/(byte) 0 main::@15/(byte) main::y#11 main::@9/(byte) main::y#11 main::@16/(byte) main::y#1 main::@4/(byte) $18 main::@17/(byte) main::y#11 main::@5/(byte) main::y#11 main::@6/(byte) main::y#10 )
|
[36] (byte) main::y#10 ← phi( main::@14/(byte) main::y#2 main::@8/(byte) 0 main::@15/(byte) main::y#11 main::@9/(byte) main::y#11 main::@16/(byte) main::y#1 main::@4/(byte) $18 main::@17/(byte) main::y#11 main::@5/(byte) main::y#11 main::@6/(byte) main::y#10 )
|
||||||
[37] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto main::@6
|
[37] if(*((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_RASTER_LO)!=(byte) $ff) goto main::@6
|
||||||
to:main::@1
|
to:main::@1
|
||||||
main::@4: scope:[main] from main::@7
|
main::@4: scope:[main] from main::@7
|
||||||
[38] (byte) main::y#1 ← ++ (byte) main::y#11
|
[38] (byte) main::y#1 ← ++ (byte) main::y#11
|
||||||
@ -111,7 +111,7 @@ rand::@return: scope:[rand] from rand
|
|||||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||||
memset: scope:[memset] from main main::@10 main::@11
|
memset: scope:[memset] from main main::@10 main::@11
|
||||||
[57] (byte) memset::c#5 ← phi( main/(byte) $a0 main::@10/(byte) 0 main::@11/(byte) 0 )
|
[57] (byte) memset::c#5 ← phi( main/(byte) $a0 main::@10/(byte) 0 main::@11/(byte) 0 )
|
||||||
[57] (void*) memset::str#4 ← phi( main/(void*)(const nomodify byte*) SCREEN main::@10/(void*)(const nomodify byte*) COLORRAM main::@11/(void*)(const byte*) COUNT )
|
[57] (void*) memset::str#4 ← phi( main/(void*)(const nomodify byte*) DEFAULT_SCREEN main::@10/(void*)(const nomodify byte*) DEFAULT_COLORRAM main::@11/(void*)(const byte*) VISITS )
|
||||||
to:memset::@1
|
to:memset::@1
|
||||||
memset::@1: scope:[memset] from memset
|
memset::@1: scope:[memset] from memset
|
||||||
[58] (byte*) memset::end#0 ← (byte*)(void*) memset::str#4 + (word) $3e8
|
[58] (byte*) memset::end#0 ← (byte*)(void*) memset::str#4 + (word) $3e8
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
Loading link script "plus4.ld"
|
Loading link script "plus4.ld"
|
||||||
|
Fixing struct type size struct MOS7360_TED to 63
|
||||||
|
Fixing struct type SIZE_OF struct MOS7360_TED to 63
|
||||||
|
Fixing struct type SIZE_OF struct MOS7360_TED to 63
|
||||||
|
|
||||||
CONTROL FLOW GRAPH SSA
|
CONTROL FLOW GRAPH SSA
|
||||||
@begin: scope:[] from
|
@begin: scope:[] from
|
||||||
@ -73,7 +76,7 @@ rand::@return: scope:[rand] from rand
|
|||||||
(void()) main()
|
(void()) main()
|
||||||
main: scope:[main] from @2
|
main: scope:[main] from @2
|
||||||
(word) rand_state#30 ← phi( @2/(word) rand_state#15 )
|
(word) rand_state#30 ← phi( @2/(word) rand_state#15 )
|
||||||
(void*) memset::str#0 ← (void*)(const nomodify byte*) SCREEN
|
(void*) memset::str#0 ← (void*)(const nomodify byte*) DEFAULT_SCREEN
|
||||||
(byte) memset::c#0 ← (number) $a0
|
(byte) memset::c#0 ← (number) $a0
|
||||||
(word) memset::num#0 ← (number) $3e8
|
(word) memset::num#0 ← (number) $3e8
|
||||||
call memset
|
call memset
|
||||||
@ -81,7 +84,7 @@ main: scope:[main] from @2
|
|||||||
to:main::@14
|
to:main::@14
|
||||||
main::@14: scope:[main] from main
|
main::@14: scope:[main] from main
|
||||||
(word) rand_state#27 ← phi( main/(word) rand_state#30 )
|
(word) rand_state#27 ← phi( main/(word) rand_state#30 )
|
||||||
(void*) memset::str#1 ← (void*)(const nomodify byte*) COLORRAM
|
(void*) memset::str#1 ← (void*)(const nomodify byte*) DEFAULT_COLORRAM
|
||||||
(byte) memset::c#1 ← (number) 0
|
(byte) memset::c#1 ← (number) 0
|
||||||
(word) memset::num#1 ← (number) $3e8
|
(word) memset::num#1 ← (number) $3e8
|
||||||
call memset
|
call memset
|
||||||
@ -89,7 +92,7 @@ main::@14: scope:[main] from main
|
|||||||
to:main::@15
|
to:main::@15
|
||||||
main::@15: scope:[main] from main::@14
|
main::@15: scope:[main] from main::@14
|
||||||
(word) rand_state#18 ← phi( main::@14/(word) rand_state#27 )
|
(word) rand_state#18 ← phi( main::@14/(word) rand_state#27 )
|
||||||
(void*) memset::str#2 ← (void*)(const byte*) COUNT
|
(void*) memset::str#2 ← (void*)(const byte*) VISITS
|
||||||
(byte) memset::c#2 ← (number) 0
|
(byte) memset::c#2 ← (number) 0
|
||||||
(word) memset::num#2 ← (number) $3e8
|
(word) memset::num#2 ← (number) $3e8
|
||||||
call memset
|
call memset
|
||||||
@ -97,8 +100,8 @@ main::@15: scope:[main] from main::@14
|
|||||||
to:main::@16
|
to:main::@16
|
||||||
main::@16: scope:[main] from main::@15
|
main::@16: scope:[main] from main::@15
|
||||||
(word) rand_state#16 ← phi( main::@15/(word) rand_state#18 )
|
(word) rand_state#16 ← phi( main::@15/(word) rand_state#18 )
|
||||||
*((const nomodify byte*) BORDERCOLOR) ← (number) 0
|
*((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR) ← (number) 0
|
||||||
*((const nomodify byte*) BGCOLOR) ← (number) 0
|
*((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR) ← (number) 0
|
||||||
(byte) main::x#0 ← (byte) $14
|
(byte) main::x#0 ← (byte) $14
|
||||||
(byte) main::y#0 ← (byte) $c
|
(byte) main::y#0 ← (byte) $c
|
||||||
to:main::@1
|
to:main::@1
|
||||||
@ -117,11 +120,11 @@ main::@2: scope:[main] from main::@1
|
|||||||
(number~) main::$3 ← (word~) main::$24 * (number) $28
|
(number~) main::$3 ← (word~) main::$24 * (number) $28
|
||||||
(number~) main::$4 ← (number~) main::$3 + (byte) main::x#5
|
(number~) main::$4 ← (number~) main::$3 + (byte) main::x#5
|
||||||
(word) main::offset#0 ← (number~) main::$4
|
(word) main::offset#0 ← (number~) main::$4
|
||||||
(byte*~) main::$5 ← (const byte*) COUNT + (word) main::offset#0
|
(byte*~) main::$5 ← (const byte*) VISITS + (word) main::offset#0
|
||||||
*((byte*~) main::$5) ← ++ *((byte*~) main::$5)
|
*((byte*~) main::$5) ← ++ *((byte*~) main::$5)
|
||||||
(byte*~) main::$6 ← (const byte*) COUNT + (word) main::offset#0
|
(byte*~) main::$6 ← (const byte*) VISITS + (word) main::offset#0
|
||||||
(byte) main::cnt#0 ← *((byte*~) main::$6)
|
(byte) main::cnt#0 ← *((byte*~) main::$6)
|
||||||
(byte*~) main::$8 ← (const nomodify byte*) COLORRAM + (word) main::offset#0
|
(byte*~) main::$8 ← (const nomodify byte*) DEFAULT_COLORRAM + (word) main::offset#0
|
||||||
(number~) main::$9 ← (byte) main::cnt#0 & (number) $f
|
(number~) main::$9 ← (byte) main::cnt#0 & (number) $f
|
||||||
*((byte*~) main::$8) ← *((const byte*) FADE + (number~) main::$9)
|
*((byte*~) main::$8) ← *((const byte*) FADE + (number~) main::$9)
|
||||||
call rand
|
call rand
|
||||||
@ -218,7 +221,7 @@ main::@8: scope:[main] from main::@10 main::@11 main::@12 main::@13 main::@4 ma
|
|||||||
(word) rand_state#17 ← phi( main::@10/(word) rand_state#19 main::@11/(word) rand_state#20 main::@12/(word) rand_state#21 main::@13/(word) rand_state#22 main::@4/(word) rand_state#23 main::@5/(word) rand_state#24 main::@6/(word) rand_state#25 main::@7/(word) rand_state#26 main::@8/(word) rand_state#17 )
|
(word) rand_state#17 ← phi( main::@10/(word) rand_state#19 main::@11/(word) rand_state#20 main::@12/(word) rand_state#21 main::@13/(word) rand_state#22 main::@4/(word) rand_state#23 main::@5/(word) rand_state#24 main::@6/(word) rand_state#25 main::@7/(word) rand_state#26 main::@8/(word) rand_state#17 )
|
||||||
(byte) main::x#10 ← phi( main::@10/(byte) main::x#12 main::@11/(byte) main::x#13 main::@12/(byte) main::x#2 main::@13/(byte) main::x#3 main::@4/(byte) main::x#14 main::@5/(byte) main::x#15 main::@6/(byte) main::x#1 main::@7/(byte) main::x#4 main::@8/(byte) main::x#10 )
|
(byte) main::x#10 ← phi( main::@10/(byte) main::x#12 main::@11/(byte) main::x#13 main::@12/(byte) main::x#2 main::@13/(byte) main::x#3 main::@4/(byte) main::x#14 main::@5/(byte) main::x#15 main::@6/(byte) main::x#1 main::@7/(byte) main::x#4 main::@8/(byte) main::x#10 )
|
||||||
(byte) main::y#10 ← phi( main::@10/(byte) main::y#2 main::@11/(byte) main::y#3 main::@12/(byte) main::y#12 main::@13/(byte) main::y#13 main::@4/(byte) main::y#1 main::@5/(byte) main::y#4 main::@6/(byte) main::y#14 main::@7/(byte) main::y#15 main::@8/(byte) main::y#10 )
|
(byte) main::y#10 ← phi( main::@10/(byte) main::y#2 main::@11/(byte) main::y#3 main::@12/(byte) main::y#12 main::@13/(byte) main::y#13 main::@4/(byte) main::y#1 main::@5/(byte) main::y#4 main::@6/(byte) main::y#14 main::@7/(byte) main::y#15 main::@8/(byte) main::y#10 )
|
||||||
(bool~) main::$23 ← *((const nomodify byte*) RASTER) != (number) $ff
|
(bool~) main::$23 ← *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_RASTER_LO) != (number) $ff
|
||||||
if((bool~) main::$23) goto main::@8
|
if((bool~) main::$23) goto main::@8
|
||||||
to:main::@1
|
to:main::@1
|
||||||
main::@return: scope:[main] from main::@1
|
main::@return: scope:[main] from main::@1
|
||||||
@ -242,17 +245,50 @@ SYMBOL TABLE SSA
|
|||||||
(label) @3
|
(label) @3
|
||||||
(label) @begin
|
(label) @begin
|
||||||
(label) @end
|
(label) @end
|
||||||
(const nomodify byte*) BGCOLOR = (byte*)(number) $ff19
|
(const nomodify byte*) DEFAULT_COLORRAM = (byte*)(number) $800
|
||||||
(const nomodify byte*) BORDERCOLOR = (byte*)(number) $ff15
|
(const nomodify byte*) DEFAULT_SCREEN = (byte*)(number) $c00
|
||||||
(const nomodify byte*) COLORRAM = (byte*)(number) $800
|
|
||||||
(const byte*) COUNT[(number) $3e8] = { fill( $3e8, 0) }
|
|
||||||
(const byte*) FADE[(number) $10] = { (byte) 2, (byte) $12, (byte) $22, (byte) $32, (byte) $42, (byte) $52, (byte) $62, (byte) $72, (byte) $76, (byte) $66, (byte) $56, (byte) $46, (byte) $36, (byte) $26, (byte) $16, (byte) 6 }
|
(const byte*) FADE[(number) $10] = { (byte) 2, (byte) $12, (byte) $22, (byte) $32, (byte) $42, (byte) $52, (byte) $62, (byte) $72, (byte) $76, (byte) $66, (byte) $56, (byte) $46, (byte) $36, (byte) $26, (byte) $16, (byte) 6 }
|
||||||
|
(byte) MOS7360_TED::BG_COLOR
|
||||||
|
(byte) MOS7360_TED::BG_COLOR1
|
||||||
|
(byte) MOS7360_TED::BG_COLOR2
|
||||||
|
(byte) MOS7360_TED::BG_COLOR3
|
||||||
|
(byte) MOS7360_TED::BORDER_COLOR
|
||||||
|
(byte) MOS7360_TED::CH1_FREQ_HI
|
||||||
|
(byte) MOS7360_TED::CH1_FREQ_LO
|
||||||
|
(byte) MOS7360_TED::CH2_FREQ_LO
|
||||||
|
(byte) MOS7360_TED::CHARPOS_HI
|
||||||
|
(byte) MOS7360_TED::CHARPOS_LO
|
||||||
|
(byte) MOS7360_TED::CONTROL1
|
||||||
|
(byte) MOS7360_TED::CONTROL2
|
||||||
|
(byte) MOS7360_TED::CONTROL5
|
||||||
|
(word) MOS7360_TED::COUNTER_1
|
||||||
|
(word) MOS7360_TED::COUNTER_2
|
||||||
|
(word) MOS7360_TED::COUNTER_3
|
||||||
|
(byte) MOS7360_TED::CURSOR_HI
|
||||||
|
(byte) MOS7360_TED::CURSOR_LO
|
||||||
|
(byte) MOS7360_TED::HSCAN_POS
|
||||||
|
(byte) MOS7360_TED::IRQ_MASK
|
||||||
|
(byte) MOS7360_TED::IRQ_REQUEST
|
||||||
|
(byte) MOS7360_TED::KEYBOARD_INPUT
|
||||||
|
(byte) MOS7360_TED::MEMORY1
|
||||||
|
(byte) MOS7360_TED::MEMORY2
|
||||||
|
(byte) MOS7360_TED::MEMORY3
|
||||||
|
(byte) MOS7360_TED::RAM_SWITCH
|
||||||
|
(byte) MOS7360_TED::RASTER_HI
|
||||||
|
(byte) MOS7360_TED::RASTER_IRQ
|
||||||
|
(byte) MOS7360_TED::RASTER_LO
|
||||||
|
(byte) MOS7360_TED::ROM_SWITCH
|
||||||
|
(byte) MOS7360_TED::SOUND_CONTROL
|
||||||
|
(const byte*) MOS7360_TED::UNUSED[(number) $1d] = { fill( $1d, 0) }
|
||||||
|
(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR = (byte) $15
|
||||||
|
(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR = (byte) $19
|
||||||
|
(const byte) OFFSET_STRUCT_MOS7360_TED_RASTER_LO = (byte) $1d
|
||||||
(const byte) RADIX::BINARY = (number) 2
|
(const byte) RADIX::BINARY = (number) 2
|
||||||
(const byte) RADIX::DECIMAL = (number) $a
|
(const byte) RADIX::DECIMAL = (number) $a
|
||||||
(const byte) RADIX::HEXADECIMAL = (number) $10
|
(const byte) RADIX::HEXADECIMAL = (number) $10
|
||||||
(const byte) RADIX::OCTAL = (number) 8
|
(const byte) RADIX::OCTAL = (number) 8
|
||||||
(const nomodify byte*) RASTER = (byte*)(number) $ff1d
|
(const nomodify struct MOS7360_TED*) TED = (struct MOS7360_TED*)(number) $ff00
|
||||||
(const nomodify byte*) SCREEN = (byte*)(number) $c00
|
(const byte*) VISITS[(number) $3e8] = { fill( $3e8, 0) }
|
||||||
(void()) main()
|
(void()) main()
|
||||||
(word~) main::$10
|
(word~) main::$10
|
||||||
(byte~) main::$11
|
(byte~) main::$11
|
||||||
@ -445,8 +481,8 @@ Adding number conversion cast (unumber) 0 in (byte) memset::c#1 ← (number) 0
|
|||||||
Adding number conversion cast (unumber) $3e8 in (word) memset::num#1 ← (number) $3e8
|
Adding number conversion cast (unumber) $3e8 in (word) memset::num#1 ← (number) $3e8
|
||||||
Adding number conversion cast (unumber) 0 in (byte) memset::c#2 ← (number) 0
|
Adding number conversion cast (unumber) 0 in (byte) memset::c#2 ← (number) 0
|
||||||
Adding number conversion cast (unumber) $3e8 in (word) memset::num#2 ← (number) $3e8
|
Adding number conversion cast (unumber) $3e8 in (word) memset::num#2 ← (number) $3e8
|
||||||
Adding number conversion cast (unumber) 0 in *((const nomodify byte*) BORDERCOLOR) ← (number) 0
|
Adding number conversion cast (unumber) 0 in *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR) ← (number) 0
|
||||||
Adding number conversion cast (unumber) 0 in *((const nomodify byte*) BGCOLOR) ← (number) 0
|
Adding number conversion cast (unumber) 0 in *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR) ← (number) 0
|
||||||
Adding number conversion cast (unumber) $28 in (number~) main::$3 ← (word~) main::$24 * (number) $28
|
Adding number conversion cast (unumber) $28 in (number~) main::$3 ← (word~) main::$24 * (number) $28
|
||||||
Adding number conversion cast (unumber) main::$3 in (number~) main::$3 ← (word~) main::$24 * (unumber)(number) $28
|
Adding number conversion cast (unumber) main::$3 in (number~) main::$3 ← (word~) main::$24 * (unumber)(number) $28
|
||||||
Adding number conversion cast (unumber) main::$4 in (number~) main::$4 ← (unumber~) main::$3 + (byte) main::x#5
|
Adding number conversion cast (unumber) main::$4 in (number~) main::$4 ← (unumber~) main::$3 + (byte) main::x#5
|
||||||
@ -469,7 +505,7 @@ Adding number conversion cast (unumber) $28 in (bool~) main::$21 ← (byte) main
|
|||||||
Adding number conversion cast (unumber) $ff in (bool~) main::$19 ← (byte) main::x#2 == (number) $ff
|
Adding number conversion cast (unumber) $ff in (bool~) main::$19 ← (byte) main::x#2 == (number) $ff
|
||||||
Adding number conversion cast (unumber) 0 in (byte) main::x#3 ← (number) 0
|
Adding number conversion cast (unumber) 0 in (byte) main::x#3 ← (number) 0
|
||||||
Adding number conversion cast (unumber) $27 in (byte) main::x#4 ← (number) $27
|
Adding number conversion cast (unumber) $27 in (byte) main::x#4 ← (number) $27
|
||||||
Adding number conversion cast (unumber) $ff in (bool~) main::$23 ← *((const nomodify byte*) RASTER) != (number) $ff
|
Adding number conversion cast (unumber) $ff in (bool~) main::$23 ← *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_RASTER_LO) != (number) $ff
|
||||||
Successful SSA optimization PassNAddNumberTypeConversions
|
Successful SSA optimization PassNAddNumberTypeConversions
|
||||||
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#4
|
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#4
|
||||||
Inlining cast (byte) memset::c#0 ← (unumber)(number) $a0
|
Inlining cast (byte) memset::c#0 ← (unumber)(number) $a0
|
||||||
@ -478,18 +514,16 @@ Inlining cast (byte) memset::c#1 ← (unumber)(number) 0
|
|||||||
Inlining cast (word) memset::num#1 ← (unumber)(number) $3e8
|
Inlining cast (word) memset::num#1 ← (unumber)(number) $3e8
|
||||||
Inlining cast (byte) memset::c#2 ← (unumber)(number) 0
|
Inlining cast (byte) memset::c#2 ← (unumber)(number) 0
|
||||||
Inlining cast (word) memset::num#2 ← (unumber)(number) $3e8
|
Inlining cast (word) memset::num#2 ← (unumber)(number) $3e8
|
||||||
Inlining cast *((const nomodify byte*) BORDERCOLOR) ← (unumber)(number) 0
|
Inlining cast *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR) ← (unumber)(number) 0
|
||||||
Inlining cast *((const nomodify byte*) BGCOLOR) ← (unumber)(number) 0
|
Inlining cast *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR) ← (unumber)(number) 0
|
||||||
Inlining cast (byte) main::y#3 ← (unumber)(number) 0
|
Inlining cast (byte) main::y#3 ← (unumber)(number) 0
|
||||||
Inlining cast (byte) main::y#4 ← (unumber)(number) $18
|
Inlining cast (byte) main::y#4 ← (unumber)(number) $18
|
||||||
Inlining cast (byte) main::x#3 ← (unumber)(number) 0
|
Inlining cast (byte) main::x#3 ← (unumber)(number) 0
|
||||||
Inlining cast (byte) main::x#4 ← (unumber)(number) $27
|
Inlining cast (byte) main::x#4 ← (unumber)(number) $27
|
||||||
Successful SSA optimization Pass2InlineCast
|
Successful SSA optimization Pass2InlineCast
|
||||||
Simplifying constant pointer cast (byte*) 3072
|
Simplifying constant pointer cast (struct MOS7360_TED*) 65280
|
||||||
Simplifying constant pointer cast (byte*) 2048
|
Simplifying constant pointer cast (byte*) 2048
|
||||||
Simplifying constant pointer cast (byte*) 65305
|
Simplifying constant pointer cast (byte*) 3072
|
||||||
Simplifying constant pointer cast (byte*) 65301
|
|
||||||
Simplifying constant pointer cast (byte*) 65309
|
|
||||||
Simplifying constant integer cast 0
|
Simplifying constant integer cast 0
|
||||||
Simplifying constant integer cast 7
|
Simplifying constant integer cast 7
|
||||||
Simplifying constant integer cast 9
|
Simplifying constant integer cast 9
|
||||||
@ -605,16 +639,16 @@ Simple Condition (bool~) main::$17 [72] if((byte) main::y#1!=(byte) $19) goto ma
|
|||||||
Simple Condition (bool~) main::$15 [75] if((byte) main::y#2!=(byte) $ff) goto main::@8
|
Simple Condition (bool~) main::$15 [75] if((byte) main::y#2!=(byte) $ff) goto main::@8
|
||||||
Simple Condition (bool~) main::$22 [80] if((byte) main::x#1!=(byte) $28) goto main::@8
|
Simple Condition (bool~) main::$22 [80] if((byte) main::x#1!=(byte) $28) goto main::@8
|
||||||
Simple Condition (bool~) main::$20 [83] if((byte) main::x#2!=(byte) $ff) goto main::@8
|
Simple Condition (bool~) main::$20 [83] if((byte) main::x#2!=(byte) $ff) goto main::@8
|
||||||
Simple Condition (bool~) main::$23 [88] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto main::@8
|
Simple Condition (bool~) main::$23 [88] if(*((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_RASTER_LO)!=(byte) $ff) goto main::@8
|
||||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||||
Constant (const word) rand_state#0 = 1
|
Constant (const word) rand_state#0 = 1
|
||||||
Constant (const void*) memset::str#0 = (void*)SCREEN
|
Constant (const void*) memset::str#0 = (void*)DEFAULT_SCREEN
|
||||||
Constant (const byte) memset::c#0 = $a0
|
Constant (const byte) memset::c#0 = $a0
|
||||||
Constant (const word) memset::num#0 = $3e8
|
Constant (const word) memset::num#0 = $3e8
|
||||||
Constant (const void*) memset::str#1 = (void*)COLORRAM
|
Constant (const void*) memset::str#1 = (void*)DEFAULT_COLORRAM
|
||||||
Constant (const byte) memset::c#1 = 0
|
Constant (const byte) memset::c#1 = 0
|
||||||
Constant (const word) memset::num#1 = $3e8
|
Constant (const word) memset::num#1 = $3e8
|
||||||
Constant (const void*) memset::str#2 = (void*)COUNT
|
Constant (const void*) memset::str#2 = (void*)VISITS
|
||||||
Constant (const byte) memset::c#2 = 0
|
Constant (const byte) memset::c#2 = 0
|
||||||
Constant (const word) memset::num#2 = $3e8
|
Constant (const word) memset::num#2 = $3e8
|
||||||
Constant (const byte) main::x#0 = $14
|
Constant (const byte) main::x#0 = $14
|
||||||
@ -652,9 +686,9 @@ Inlining constant with var siblings (const byte) main::y#4
|
|||||||
Inlining constant with var siblings (const byte) main::x#3
|
Inlining constant with var siblings (const byte) main::x#3
|
||||||
Inlining constant with var siblings (const byte) main::x#4
|
Inlining constant with var siblings (const byte) main::x#4
|
||||||
Inlining constant with var siblings (const word) rand_state#0
|
Inlining constant with var siblings (const word) rand_state#0
|
||||||
Constant inlined memset::str#2 = (void*)(const byte*) COUNT
|
Constant inlined memset::str#2 = (void*)(const byte*) VISITS
|
||||||
Constant inlined memset::str#1 = (void*)(const nomodify byte*) COLORRAM
|
Constant inlined memset::str#1 = (void*)(const nomodify byte*) DEFAULT_COLORRAM
|
||||||
Constant inlined memset::str#0 = (void*)(const nomodify byte*) SCREEN
|
Constant inlined memset::str#0 = (void*)(const nomodify byte*) DEFAULT_SCREEN
|
||||||
Constant inlined memset::num#2 = (word) $3e8
|
Constant inlined memset::num#2 = (word) $3e8
|
||||||
Constant inlined main::x#3 = (byte) 0
|
Constant inlined main::x#3 = (byte) 0
|
||||||
Constant inlined memset::num#1 = (word) $3e8
|
Constant inlined memset::num#1 = (word) $3e8
|
||||||
@ -776,8 +810,8 @@ main::@11: scope:[main] from main::@10
|
|||||||
[9] call memset
|
[9] call memset
|
||||||
to:main::@12
|
to:main::@12
|
||||||
main::@12: scope:[main] from main::@11
|
main::@12: scope:[main] from main::@11
|
||||||
[10] *((const nomodify byte*) BORDERCOLOR) ← (byte) 0
|
[10] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR) ← (byte) 0
|
||||||
[11] *((const nomodify byte*) BGCOLOR) ← (byte) 0
|
[11] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR) ← (byte) 0
|
||||||
to:main::@1
|
to:main::@1
|
||||||
main::@1: scope:[main] from main::@12 main::@6
|
main::@1: scope:[main] from main::@12 main::@6
|
||||||
[12] (word) rand_state#11 ← phi( main::@12/(word) 1 main::@6/(word) rand_state#3 )
|
[12] (word) rand_state#11 ← phi( main::@12/(word) 1 main::@6/(word) rand_state#3 )
|
||||||
@ -790,11 +824,11 @@ main::@2: scope:[main] from main::@1
|
|||||||
[15] (word~) main::$30 ← (word~) main::$29 + (word~) main::$24
|
[15] (word~) main::$30 ← (word~) main::$29 + (word~) main::$24
|
||||||
[16] (word~) main::$3 ← (word~) main::$30 << (byte) 3
|
[16] (word~) main::$3 ← (word~) main::$30 << (byte) 3
|
||||||
[17] (word) main::offset#0 ← (word~) main::$3 + (byte) main::x#11
|
[17] (word) main::offset#0 ← (word~) main::$3 + (byte) main::x#11
|
||||||
[18] (byte*~) main::$5 ← (const byte*) COUNT + (word) main::offset#0
|
[18] (byte*~) main::$5 ← (const byte*) VISITS + (word) main::offset#0
|
||||||
[19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5)
|
[19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5)
|
||||||
[20] (byte*~) main::$6 ← (const byte*) COUNT + (word) main::offset#0
|
[20] (byte*~) main::$6 ← (const byte*) VISITS + (word) main::offset#0
|
||||||
[21] (byte) main::cnt#0 ← *((byte*~) main::$6)
|
[21] (byte) main::cnt#0 ← *((byte*~) main::$6)
|
||||||
[22] (byte*~) main::$8 ← (const nomodify byte*) COLORRAM + (word) main::offset#0
|
[22] (byte*~) main::$8 ← (const nomodify byte*) DEFAULT_COLORRAM + (word) main::offset#0
|
||||||
[23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f
|
[23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f
|
||||||
[24] *((byte*~) main::$8) ← *((const byte*) FADE + (byte~) main::$9)
|
[24] *((byte*~) main::$8) ← *((const byte*) FADE + (byte~) main::$9)
|
||||||
[25] call rand
|
[25] call rand
|
||||||
@ -820,7 +854,7 @@ main::@14: scope:[main] from main::@8
|
|||||||
main::@6: scope:[main] from main::@14 main::@15 main::@16 main::@17 main::@4 main::@5 main::@6 main::@8 main::@9
|
main::@6: scope:[main] from main::@14 main::@15 main::@16 main::@17 main::@4 main::@5 main::@6 main::@8 main::@9
|
||||||
[36] (byte) main::x#10 ← phi( main::@14/(byte) main::x#11 main::@8/(byte) main::x#11 main::@15/(byte) main::x#2 main::@9/(byte) 0 main::@16/(byte) main::x#11 main::@4/(byte) main::x#11 main::@17/(byte) main::x#1 main::@5/(byte) $27 main::@6/(byte) main::x#10 )
|
[36] (byte) main::x#10 ← phi( main::@14/(byte) main::x#11 main::@8/(byte) main::x#11 main::@15/(byte) main::x#2 main::@9/(byte) 0 main::@16/(byte) main::x#11 main::@4/(byte) main::x#11 main::@17/(byte) main::x#1 main::@5/(byte) $27 main::@6/(byte) main::x#10 )
|
||||||
[36] (byte) main::y#10 ← phi( main::@14/(byte) main::y#2 main::@8/(byte) 0 main::@15/(byte) main::y#11 main::@9/(byte) main::y#11 main::@16/(byte) main::y#1 main::@4/(byte) $18 main::@17/(byte) main::y#11 main::@5/(byte) main::y#11 main::@6/(byte) main::y#10 )
|
[36] (byte) main::y#10 ← phi( main::@14/(byte) main::y#2 main::@8/(byte) 0 main::@15/(byte) main::y#11 main::@9/(byte) main::y#11 main::@16/(byte) main::y#1 main::@4/(byte) $18 main::@17/(byte) main::y#11 main::@5/(byte) main::y#11 main::@6/(byte) main::y#10 )
|
||||||
[37] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto main::@6
|
[37] if(*((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_RASTER_LO)!=(byte) $ff) goto main::@6
|
||||||
to:main::@1
|
to:main::@1
|
||||||
main::@4: scope:[main] from main::@7
|
main::@4: scope:[main] from main::@7
|
||||||
[38] (byte) main::y#1 ← ++ (byte) main::y#11
|
[38] (byte) main::y#1 ← ++ (byte) main::y#11
|
||||||
@ -865,7 +899,7 @@ rand::@return: scope:[rand] from rand
|
|||||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||||
memset: scope:[memset] from main main::@10 main::@11
|
memset: scope:[memset] from main main::@10 main::@11
|
||||||
[57] (byte) memset::c#5 ← phi( main/(byte) $a0 main::@10/(byte) 0 main::@11/(byte) 0 )
|
[57] (byte) memset::c#5 ← phi( main/(byte) $a0 main::@10/(byte) 0 main::@11/(byte) 0 )
|
||||||
[57] (void*) memset::str#4 ← phi( main/(void*)(const nomodify byte*) SCREEN main::@10/(void*)(const nomodify byte*) COLORRAM main::@11/(void*)(const byte*) COUNT )
|
[57] (void*) memset::str#4 ← phi( main/(void*)(const nomodify byte*) DEFAULT_SCREEN main::@10/(void*)(const nomodify byte*) DEFAULT_COLORRAM main::@11/(void*)(const byte*) VISITS )
|
||||||
to:memset::@1
|
to:memset::@1
|
||||||
memset::@1: scope:[memset] from memset
|
memset::@1: scope:[memset] from memset
|
||||||
[58] (byte*) memset::end#0 ← (byte*)(void*) memset::str#4 + (word) $3e8
|
[58] (byte*) memset::end#0 ← (byte*)(void*) memset::str#4 + (word) $3e8
|
||||||
@ -885,6 +919,37 @@ memset::@3: scope:[memset] from memset::@2
|
|||||||
|
|
||||||
|
|
||||||
VARIABLE REGISTER WEIGHTS
|
VARIABLE REGISTER WEIGHTS
|
||||||
|
(byte) MOS7360_TED::BG_COLOR
|
||||||
|
(byte) MOS7360_TED::BG_COLOR1
|
||||||
|
(byte) MOS7360_TED::BG_COLOR2
|
||||||
|
(byte) MOS7360_TED::BG_COLOR3
|
||||||
|
(byte) MOS7360_TED::BORDER_COLOR
|
||||||
|
(byte) MOS7360_TED::CH1_FREQ_HI
|
||||||
|
(byte) MOS7360_TED::CH1_FREQ_LO
|
||||||
|
(byte) MOS7360_TED::CH2_FREQ_LO
|
||||||
|
(byte) MOS7360_TED::CHARPOS_HI
|
||||||
|
(byte) MOS7360_TED::CHARPOS_LO
|
||||||
|
(byte) MOS7360_TED::CONTROL1
|
||||||
|
(byte) MOS7360_TED::CONTROL2
|
||||||
|
(byte) MOS7360_TED::CONTROL5
|
||||||
|
(word) MOS7360_TED::COUNTER_1
|
||||||
|
(word) MOS7360_TED::COUNTER_2
|
||||||
|
(word) MOS7360_TED::COUNTER_3
|
||||||
|
(byte) MOS7360_TED::CURSOR_HI
|
||||||
|
(byte) MOS7360_TED::CURSOR_LO
|
||||||
|
(byte) MOS7360_TED::HSCAN_POS
|
||||||
|
(byte) MOS7360_TED::IRQ_MASK
|
||||||
|
(byte) MOS7360_TED::IRQ_REQUEST
|
||||||
|
(byte) MOS7360_TED::KEYBOARD_INPUT
|
||||||
|
(byte) MOS7360_TED::MEMORY1
|
||||||
|
(byte) MOS7360_TED::MEMORY2
|
||||||
|
(byte) MOS7360_TED::MEMORY3
|
||||||
|
(byte) MOS7360_TED::RAM_SWITCH
|
||||||
|
(byte) MOS7360_TED::RASTER_HI
|
||||||
|
(byte) MOS7360_TED::RASTER_IRQ
|
||||||
|
(byte) MOS7360_TED::RASTER_LO
|
||||||
|
(byte) MOS7360_TED::ROM_SWITCH
|
||||||
|
(byte) MOS7360_TED::SOUND_CONTROL
|
||||||
(void()) main()
|
(void()) main()
|
||||||
(word~) main::$10 202.0
|
(word~) main::$10 202.0
|
||||||
(byte~) main::$12 202.0
|
(byte~) main::$12 202.0
|
||||||
@ -1046,11 +1111,15 @@ Target platform is custom / MOS6502X
|
|||||||
|
|
||||||
|
|
||||||
// Global Constants & labels
|
// Global Constants & labels
|
||||||
.label SCREEN = $c00
|
.const OFFSET_STRUCT_MOS7360_TED_BG_COLOR = $15
|
||||||
.label COLORRAM = $800
|
.const OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR = $19
|
||||||
.label BGCOLOR = $ff19
|
.const OFFSET_STRUCT_MOS7360_TED_RASTER_LO = $1d
|
||||||
.label BORDERCOLOR = $ff15
|
// The TED chip controlling video and sound on the Plus/4 and Commodore 16
|
||||||
.label RASTER = $ff1d
|
.label TED = $ff00
|
||||||
|
// Default address of screen luminance/color matrix
|
||||||
|
.label DEFAULT_COLORRAM = $800
|
||||||
|
// Default address of screen character matrix
|
||||||
|
.label DEFAULT_SCREEN = $c00
|
||||||
// The random state variable
|
// The random state variable
|
||||||
.label rand_state = $27
|
.label rand_state = $27
|
||||||
// The random state variable
|
// The random state variable
|
||||||
@ -1099,10 +1168,10 @@ main: {
|
|||||||
// [57] phi (byte) memset::c#5 = (byte) $a0 [phi:main->memset#0] -- vbuz1=vbuc1
|
// [57] phi (byte) memset::c#5 = (byte) $a0 [phi:main->memset#0] -- vbuz1=vbuc1
|
||||||
lda #$a0
|
lda #$a0
|
||||||
sta.z memset.c
|
sta.z memset.c
|
||||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) SCREEN [phi:main->memset#1] -- pvoz1=pvoc1
|
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) DEFAULT_SCREEN [phi:main->memset#1] -- pvoz1=pvoc1
|
||||||
lda #<SCREEN
|
lda #<DEFAULT_SCREEN
|
||||||
sta.z memset.str
|
sta.z memset.str
|
||||||
lda #>SCREEN
|
lda #>DEFAULT_SCREEN
|
||||||
sta.z memset.str+1
|
sta.z memset.str+1
|
||||||
jsr memset
|
jsr memset
|
||||||
// [6] phi from main to main::@10 [phi:main->main::@10]
|
// [6] phi from main to main::@10 [phi:main->main::@10]
|
||||||
@ -1116,10 +1185,10 @@ main: {
|
|||||||
// [57] phi (byte) memset::c#5 = (byte) 0 [phi:main::@10->memset#0] -- vbuz1=vbuc1
|
// [57] phi (byte) memset::c#5 = (byte) 0 [phi:main::@10->memset#0] -- vbuz1=vbuc1
|
||||||
lda #0
|
lda #0
|
||||||
sta.z memset.c
|
sta.z memset.c
|
||||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) COLORRAM [phi:main::@10->memset#1] -- pvoz1=pvoc1
|
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) DEFAULT_COLORRAM [phi:main::@10->memset#1] -- pvoz1=pvoc1
|
||||||
lda #<COLORRAM
|
lda #<DEFAULT_COLORRAM
|
||||||
sta.z memset.str
|
sta.z memset.str
|
||||||
lda #>COLORRAM
|
lda #>DEFAULT_COLORRAM
|
||||||
sta.z memset.str+1
|
sta.z memset.str+1
|
||||||
jsr memset
|
jsr memset
|
||||||
// [8] phi from main::@10 to main::@11 [phi:main::@10->main::@11]
|
// [8] phi from main::@10 to main::@11 [phi:main::@10->main::@11]
|
||||||
@ -1133,21 +1202,21 @@ main: {
|
|||||||
// [57] phi (byte) memset::c#5 = (byte) 0 [phi:main::@11->memset#0] -- vbuz1=vbuc1
|
// [57] phi (byte) memset::c#5 = (byte) 0 [phi:main::@11->memset#0] -- vbuz1=vbuc1
|
||||||
lda #0
|
lda #0
|
||||||
sta.z memset.c
|
sta.z memset.c
|
||||||
// [57] phi (void*) memset::str#4 = (void*)(const byte*) COUNT [phi:main::@11->memset#1] -- pvoz1=pvoc1
|
// [57] phi (void*) memset::str#4 = (void*)(const byte*) VISITS [phi:main::@11->memset#1] -- pvoz1=pvoc1
|
||||||
lda #<COUNT
|
lda #<VISITS
|
||||||
sta.z memset.str
|
sta.z memset.str
|
||||||
lda #>COUNT
|
lda #>VISITS
|
||||||
sta.z memset.str+1
|
sta.z memset.str+1
|
||||||
jsr memset
|
jsr memset
|
||||||
jmp __b12
|
jmp __b12
|
||||||
// main::@12
|
// main::@12
|
||||||
__b12:
|
__b12:
|
||||||
// [10] *((const nomodify byte*) BORDERCOLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
// [10] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta BORDERCOLOR
|
sta TED+OFFSET_STRUCT_MOS7360_TED_BG_COLOR
|
||||||
// [11] *((const nomodify byte*) BGCOLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
// [11] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta BGCOLOR
|
sta TED+OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR
|
||||||
// [12] phi from main::@12 to main::@1 [phi:main::@12->main::@1]
|
// [12] phi from main::@12 to main::@1 [phi:main::@12->main::@1]
|
||||||
__b1_from___b12:
|
__b1_from___b12:
|
||||||
// [12] phi (word) rand_state#11 = (word) 1 [phi:main::@12->main::@1#0] -- vwuz1=vwuc1
|
// [12] phi (word) rand_state#11 = (word) 1 [phi:main::@12->main::@1#0] -- vwuz1=vwuc1
|
||||||
@ -1208,13 +1277,13 @@ main: {
|
|||||||
lda #0
|
lda #0
|
||||||
adc.z __3+1
|
adc.z __3+1
|
||||||
sta.z offset+1
|
sta.z offset+1
|
||||||
// [18] (byte*~) main::$5 ← (const byte*) COUNT + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
// [18] (byte*~) main::$5 ← (const byte*) VISITS + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
||||||
lda.z offset
|
lda.z offset
|
||||||
clc
|
clc
|
||||||
adc #<COUNT
|
adc #<VISITS
|
||||||
sta.z __5
|
sta.z __5
|
||||||
lda.z offset+1
|
lda.z offset+1
|
||||||
adc #>COUNT
|
adc #>VISITS
|
||||||
sta.z __5+1
|
sta.z __5+1
|
||||||
// [19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5) -- _deref_pbuz1=_inc__deref_pbuz1
|
// [19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5) -- _deref_pbuz1=_inc__deref_pbuz1
|
||||||
ldy #0
|
ldy #0
|
||||||
@ -1223,25 +1292,25 @@ main: {
|
|||||||
adc #1
|
adc #1
|
||||||
ldy #0
|
ldy #0
|
||||||
sta (__5),y
|
sta (__5),y
|
||||||
// [20] (byte*~) main::$6 ← (const byte*) COUNT + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
// [20] (byte*~) main::$6 ← (const byte*) VISITS + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
||||||
lda.z offset
|
lda.z offset
|
||||||
clc
|
clc
|
||||||
adc #<COUNT
|
adc #<VISITS
|
||||||
sta.z __6
|
sta.z __6
|
||||||
lda.z offset+1
|
lda.z offset+1
|
||||||
adc #>COUNT
|
adc #>VISITS
|
||||||
sta.z __6+1
|
sta.z __6+1
|
||||||
// [21] (byte) main::cnt#0 ← *((byte*~) main::$6) -- vbuz1=_deref_pbuz2
|
// [21] (byte) main::cnt#0 ← *((byte*~) main::$6) -- vbuz1=_deref_pbuz2
|
||||||
ldy #0
|
ldy #0
|
||||||
lda (__6),y
|
lda (__6),y
|
||||||
sta.z cnt
|
sta.z cnt
|
||||||
// [22] (byte*~) main::$8 ← (const nomodify byte*) COLORRAM + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
// [22] (byte*~) main::$8 ← (const nomodify byte*) DEFAULT_COLORRAM + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
||||||
lda.z offset
|
lda.z offset
|
||||||
clc
|
clc
|
||||||
adc #<COLORRAM
|
adc #<DEFAULT_COLORRAM
|
||||||
sta.z __8
|
sta.z __8
|
||||||
lda.z offset+1
|
lda.z offset+1
|
||||||
adc #>COLORRAM
|
adc #>DEFAULT_COLORRAM
|
||||||
sta.z __8+1
|
sta.z __8+1
|
||||||
// [23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f -- vbuz1=vbuz2_band_vbuc1
|
// [23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f -- vbuz1=vbuz2_band_vbuc1
|
||||||
lda #$f
|
lda #$f
|
||||||
@ -1321,9 +1390,9 @@ main: {
|
|||||||
jmp __b6
|
jmp __b6
|
||||||
// main::@6
|
// main::@6
|
||||||
__b6:
|
__b6:
|
||||||
// [37] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto main::@6 -- _deref_pbuc1_neq_vbuc2_then_la1
|
// [37] if(*((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_RASTER_LO)!=(byte) $ff) goto main::@6 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||||
lda #$ff
|
lda #$ff
|
||||||
cmp RASTER
|
cmp TED+OFFSET_STRUCT_MOS7360_TED_RASTER_LO
|
||||||
bne __b6_from___b6
|
bne __b6_from___b6
|
||||||
// [12] phi from main::@6 to main::@1 [phi:main::@6->main::@1]
|
// [12] phi from main::@6 to main::@1 [phi:main::@6->main::@1]
|
||||||
__b1_from___b6:
|
__b1_from___b6:
|
||||||
@ -1527,12 +1596,14 @@ memset: {
|
|||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
.segment Data
|
.segment Data
|
||||||
|
// Colors to fade up/down when visiting a char multiple times
|
||||||
FADE: .byte 2, $12, $22, $32, $42, $52, $62, $72, $76, $66, $56, $46, $36, $26, $16, 6
|
FADE: .byte 2, $12, $22, $32, $42, $52, $62, $72, $76, $66, $56, $46, $36, $26, $16, 6
|
||||||
COUNT: .fill $3e8, 0
|
// The number of times each character has been visited
|
||||||
|
VISITS: .fill $3e8, 0
|
||||||
|
|
||||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||||
Statement [10] *((const nomodify byte*) BORDERCOLOR) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a
|
Statement [10] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [11] *((const nomodify byte*) BGCOLOR) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a
|
Statement [11] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [13] (word~) main::$24 ← (word)(byte) main::y#11 [ main::y#11 main::x#11 rand_state#11 main::$24 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$24 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [13] (word~) main::$24 ← (word)(byte) main::y#11 [ main::y#11 main::x#11 rand_state#11 main::$24 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$24 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::y#11 main::y#10 main::y#2 main::y#1 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::y#11 main::y#10 main::y#2 main::y#1 ]
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::x#11 main::x#10 main::x#2 main::x#1 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::x#11 main::x#10 main::x#2 main::x#1 ]
|
||||||
@ -1540,19 +1611,19 @@ Statement [14] (word~) main::$29 ← (word~) main::$24 << (byte) 2 [ main::y#11
|
|||||||
Statement [15] (word~) main::$30 ← (word~) main::$29 + (word~) main::$24 [ main::y#11 main::x#11 rand_state#11 main::$30 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$30 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [15] (word~) main::$30 ← (word~) main::$29 + (word~) main::$24 [ main::y#11 main::x#11 rand_state#11 main::$30 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$30 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [16] (word~) main::$3 ← (word~) main::$30 << (byte) 3 [ main::y#11 main::x#11 rand_state#11 main::$3 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$3 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [16] (word~) main::$3 ← (word~) main::$30 << (byte) 3 [ main::y#11 main::x#11 rand_state#11 main::$3 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$3 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [17] (word) main::offset#0 ← (word~) main::$3 + (byte) main::x#11 [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [17] (word) main::offset#0 ← (word~) main::$3 + (byte) main::x#11 [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [18] (byte*~) main::$5 ← (const byte*) COUNT + (word) main::offset#0 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$5 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$5 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [18] (byte*~) main::$5 ← (const byte*) VISITS + (word) main::offset#0 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$5 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$5 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5) [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a reg byte y
|
Statement [19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5) [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a reg byte y
|
||||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::y#11 main::y#10 main::y#2 main::y#1 ]
|
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::y#11 main::y#10 main::y#2 main::y#1 ]
|
||||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::x#11 main::x#10 main::x#2 main::x#1 ]
|
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::x#11 main::x#10 main::x#2 main::x#1 ]
|
||||||
Statement [20] (byte*~) main::$6 ← (const byte*) COUNT + (word) main::offset#0 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$6 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$6 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [20] (byte*~) main::$6 ← (const byte*) VISITS + (word) main::offset#0 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$6 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$6 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [21] (byte) main::cnt#0 ← *((byte*~) main::$6) [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::cnt#0 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::cnt#0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a reg byte y
|
Statement [21] (byte) main::cnt#0 ← *((byte*~) main::$6) [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::cnt#0 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::cnt#0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a reg byte y
|
||||||
Statement [22] (byte*~) main::$8 ← (const nomodify byte*) COLORRAM + (word) main::offset#0 [ main::y#11 main::x#11 rand_state#11 main::cnt#0 main::$8 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::cnt#0 main::$8 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [22] (byte*~) main::$8 ← (const nomodify byte*) DEFAULT_COLORRAM + (word) main::offset#0 [ main::y#11 main::x#11 rand_state#11 main::cnt#0 main::$8 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::cnt#0 main::$8 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:25 [ main::cnt#0 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:25 [ main::cnt#0 ]
|
||||||
Statement [23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f [ main::y#11 main::x#11 rand_state#11 main::$8 main::$9 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$8 main::$9 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f [ main::y#11 main::x#11 rand_state#11 main::$8 main::$9 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$8 main::$9 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [24] *((byte*~) main::$8) ← *((const byte*) FADE + (byte~) main::$9) [ main::y#11 main::x#11 rand_state#11 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a reg byte y
|
Statement [24] *((byte*~) main::$8) ← *((const byte*) FADE + (byte~) main::$9) [ main::y#11 main::x#11 rand_state#11 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a reg byte y
|
||||||
Statement [26] (word) rand::return#2 ← (word) rand::return#0 [ main::y#11 main::x#11 rand_state#3 rand::return#2 ] ( main:2 [ main::y#11 main::x#11 rand_state#3 rand::return#2 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [26] (word) rand::return#2 ← (word) rand::return#0 [ main::y#11 main::x#11 rand_state#3 rand::return#2 ] ( main:2 [ main::y#11 main::x#11 rand_state#3 rand::return#2 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [27] (word~) main::$10 ← (word) rand::return#2 [ main::y#11 main::x#11 rand_state#3 main::$10 ] ( main:2 [ main::y#11 main::x#11 rand_state#3 main::$10 ] { } ) always clobbers reg byte a
|
Statement [27] (word~) main::$10 ← (word) rand::return#2 [ main::y#11 main::x#11 rand_state#3 main::$10 ] ( main:2 [ main::y#11 main::x#11 rand_state#3 main::$10 ] { } ) always clobbers reg byte a
|
||||||
Statement [37] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto main::@6 [ main::y#10 main::x#10 rand_state#3 ] ( main:2 [ main::y#10 main::x#10 rand_state#3 ] { } ) always clobbers reg byte a
|
Statement [37] if(*((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_RASTER_LO)!=(byte) $ff) goto main::@6 [ main::y#10 main::x#10 rand_state#3 ] ( main:2 [ main::y#10 main::x#10 rand_state#3 ] { } ) always clobbers reg byte a
|
||||||
Statement [49] (word~) rand::$0 ← (word) rand_state#11 << (byte) 7 [ rand_state#11 rand::$0 ] ( main:2::rand:25 [ main::y#11 main::x#11 rand_state#11 rand::$0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [49] (word~) rand::$0 ← (word) rand_state#11 << (byte) 7 [ rand_state#11 rand::$0 ] ( main:2::rand:25 [ main::y#11 main::x#11 rand_state#11 rand::$0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [50] (word) rand_state#1 ← (word) rand_state#11 ^ (word~) rand::$0 [ rand_state#1 ] ( main:2::rand:25 [ main::y#11 main::x#11 rand_state#1 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [50] (word) rand_state#1 ← (word) rand_state#11 ^ (word~) rand::$0 [ rand_state#1 ] ( main:2::rand:25 [ main::y#11 main::x#11 rand_state#1 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [51] (word~) rand::$1 ← (word) rand_state#1 >> (byte) 9 [ rand_state#1 rand::$1 ] ( main:2::rand:25 [ main::y#11 main::x#11 rand_state#1 rand::$1 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [51] (word~) rand::$1 ← (word) rand_state#1 >> (byte) 9 [ rand_state#1 rand::$1 ] ( main:2::rand:25 [ main::y#11 main::x#11 rand_state#1 rand::$1 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
@ -1566,23 +1637,23 @@ Statement [59] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#4 [ memset::
|
|||||||
Statement [61] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#5 memset::end#0 memset::dst#2 ] ( main:2::memset:5 [ memset::c#5 memset::end#0 memset::dst#2 ] { } main:2::memset:7 [ memset::c#5 memset::end#0 memset::dst#2 ] { } main:2::memset:9 [ memset::c#5 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a
|
Statement [61] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#5 memset::end#0 memset::dst#2 ] ( main:2::memset:5 [ memset::c#5 memset::end#0 memset::dst#2 ] { } main:2::memset:7 [ memset::c#5 memset::end#0 memset::dst#2 ] { } main:2::memset:9 [ memset::c#5 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a
|
||||||
Statement [63] *((byte*) memset::dst#2) ← (byte) memset::c#5 [ memset::c#5 memset::end#0 memset::dst#2 ] ( main:2::memset:5 [ memset::c#5 memset::end#0 memset::dst#2 ] { } main:2::memset:7 [ memset::c#5 memset::end#0 memset::dst#2 ] { } main:2::memset:9 [ memset::c#5 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y
|
Statement [63] *((byte*) memset::dst#2) ← (byte) memset::c#5 [ memset::c#5 memset::end#0 memset::dst#2 ] ( main:2::memset:5 [ memset::c#5 memset::end#0 memset::dst#2 ] { } main:2::memset:7 [ memset::c#5 memset::end#0 memset::dst#2 ] { } main:2::memset:9 [ memset::c#5 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y
|
||||||
Removing always clobbered register reg byte y as potential for zp[1]:8 [ memset::c#5 ]
|
Removing always clobbered register reg byte y as potential for zp[1]:8 [ memset::c#5 ]
|
||||||
Statement [10] *((const nomodify byte*) BORDERCOLOR) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a
|
Statement [10] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [11] *((const nomodify byte*) BGCOLOR) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a
|
Statement [11] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [13] (word~) main::$24 ← (word)(byte) main::y#11 [ main::y#11 main::x#11 rand_state#11 main::$24 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$24 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [13] (word~) main::$24 ← (word)(byte) main::y#11 [ main::y#11 main::x#11 rand_state#11 main::$24 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$24 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [14] (word~) main::$29 ← (word~) main::$24 << (byte) 2 [ main::y#11 main::x#11 rand_state#11 main::$24 main::$29 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$24 main::$29 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [14] (word~) main::$29 ← (word~) main::$24 << (byte) 2 [ main::y#11 main::x#11 rand_state#11 main::$24 main::$29 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$24 main::$29 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [15] (word~) main::$30 ← (word~) main::$29 + (word~) main::$24 [ main::y#11 main::x#11 rand_state#11 main::$30 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$30 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [15] (word~) main::$30 ← (word~) main::$29 + (word~) main::$24 [ main::y#11 main::x#11 rand_state#11 main::$30 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$30 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [16] (word~) main::$3 ← (word~) main::$30 << (byte) 3 [ main::y#11 main::x#11 rand_state#11 main::$3 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$3 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [16] (word~) main::$3 ← (word~) main::$30 << (byte) 3 [ main::y#11 main::x#11 rand_state#11 main::$3 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$3 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [17] (word) main::offset#0 ← (word~) main::$3 + (byte) main::x#11 [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [17] (word) main::offset#0 ← (word~) main::$3 + (byte) main::x#11 [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [18] (byte*~) main::$5 ← (const byte*) COUNT + (word) main::offset#0 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$5 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$5 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [18] (byte*~) main::$5 ← (const byte*) VISITS + (word) main::offset#0 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$5 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$5 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5) [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a reg byte y
|
Statement [19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5) [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a reg byte y
|
||||||
Statement [20] (byte*~) main::$6 ← (const byte*) COUNT + (word) main::offset#0 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$6 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$6 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [20] (byte*~) main::$6 ← (const byte*) VISITS + (word) main::offset#0 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$6 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::$6 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [21] (byte) main::cnt#0 ← *((byte*~) main::$6) [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::cnt#0 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::cnt#0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a reg byte y
|
Statement [21] (byte) main::cnt#0 ← *((byte*~) main::$6) [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::cnt#0 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::offset#0 main::cnt#0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a reg byte y
|
||||||
Statement [22] (byte*~) main::$8 ← (const nomodify byte*) COLORRAM + (word) main::offset#0 [ main::y#11 main::x#11 rand_state#11 main::cnt#0 main::$8 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::cnt#0 main::$8 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [22] (byte*~) main::$8 ← (const nomodify byte*) DEFAULT_COLORRAM + (word) main::offset#0 [ main::y#11 main::x#11 rand_state#11 main::cnt#0 main::$8 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::cnt#0 main::$8 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f [ main::y#11 main::x#11 rand_state#11 main::$8 main::$9 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$8 main::$9 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f [ main::y#11 main::x#11 rand_state#11 main::$8 main::$9 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 main::$8 main::$9 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [24] *((byte*~) main::$8) ← *((const byte*) FADE + (byte~) main::$9) [ main::y#11 main::x#11 rand_state#11 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a reg byte y
|
Statement [24] *((byte*~) main::$8) ← *((const byte*) FADE + (byte~) main::$9) [ main::y#11 main::x#11 rand_state#11 ] ( main:2 [ main::y#11 main::x#11 rand_state#11 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a reg byte y
|
||||||
Statement [26] (word) rand::return#2 ← (word) rand::return#0 [ main::y#11 main::x#11 rand_state#3 rand::return#2 ] ( main:2 [ main::y#11 main::x#11 rand_state#3 rand::return#2 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [26] (word) rand::return#2 ← (word) rand::return#0 [ main::y#11 main::x#11 rand_state#3 rand::return#2 ] ( main:2 [ main::y#11 main::x#11 rand_state#3 rand::return#2 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [27] (word~) main::$10 ← (word) rand::return#2 [ main::y#11 main::x#11 rand_state#3 main::$10 ] ( main:2 [ main::y#11 main::x#11 rand_state#3 main::$10 ] { } ) always clobbers reg byte a
|
Statement [27] (word~) main::$10 ← (word) rand::return#2 [ main::y#11 main::x#11 rand_state#3 main::$10 ] ( main:2 [ main::y#11 main::x#11 rand_state#3 main::$10 ] { } ) always clobbers reg byte a
|
||||||
Statement [37] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto main::@6 [ main::y#10 main::x#10 rand_state#3 ] ( main:2 [ main::y#10 main::x#10 rand_state#3 ] { } ) always clobbers reg byte a
|
Statement [37] if(*((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_RASTER_LO)!=(byte) $ff) goto main::@6 [ main::y#10 main::x#10 rand_state#3 ] ( main:2 [ main::y#10 main::x#10 rand_state#3 ] { } ) always clobbers reg byte a
|
||||||
Statement [49] (word~) rand::$0 ← (word) rand_state#11 << (byte) 7 [ rand_state#11 rand::$0 ] ( main:2::rand:25 [ main::y#11 main::x#11 rand_state#11 rand::$0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [49] (word~) rand::$0 ← (word) rand_state#11 << (byte) 7 [ rand_state#11 rand::$0 ] ( main:2::rand:25 [ main::y#11 main::x#11 rand_state#11 rand::$0 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [50] (word) rand_state#1 ← (word) rand_state#11 ^ (word~) rand::$0 [ rand_state#1 ] ( main:2::rand:25 [ main::y#11 main::x#11 rand_state#1 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [50] (word) rand_state#1 ← (word) rand_state#11 ^ (word~) rand::$0 [ rand_state#1 ] ( main:2::rand:25 [ main::y#11 main::x#11 rand_state#1 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [51] (word~) rand::$1 ← (word) rand_state#1 >> (byte) 9 [ rand_state#1 rand::$1 ] ( main:2::rand:25 [ main::y#11 main::x#11 rand_state#1 rand::$1 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
Statement [51] (word~) rand::$1 ← (word) rand_state#1 >> (byte) 9 [ rand_state#1 rand::$1 ] ( main:2::rand:25 [ main::y#11 main::x#11 rand_state#1 rand::$1 ] { { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a
|
||||||
@ -1629,6 +1700,7 @@ Uplift Scope [main] 2,065.4: zp[1]:3 [ main::x#11 main::x#10 main::x#2 main::x#1
|
|||||||
Uplift Scope [rand] 2,002: zp[2]:37 [ rand::$0 ] 2,002: zp[2]:41 [ rand::$1 ] 2,002: zp[2]:45 [ rand::$2 ] 367.33: zp[2]:47 [ rand::return#0 ] 202: zp[2]:29 [ rand::return#2 ]
|
Uplift Scope [rand] 2,002: zp[2]:37 [ rand::$0 ] 2,002: zp[2]:41 [ rand::$1 ] 2,002: zp[2]:45 [ rand::$2 ] 367.33: zp[2]:47 [ rand::return#0 ] 202: zp[2]:29 [ rand::return#2 ]
|
||||||
Uplift Scope [memset] 3,572.33: zp[2]:9 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 183.67: zp[2]:49 [ memset::end#0 ] 143: zp[1]:8 [ memset::c#5 ] 0: zp[2]:6 [ memset::str#4 ]
|
Uplift Scope [memset] 3,572.33: zp[2]:9 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 183.67: zp[2]:49 [ memset::end#0 ] 143: zp[1]:8 [ memset::c#5 ] 0: zp[2]:6 [ memset::str#4 ]
|
||||||
Uplift Scope [] 1,501.5: zp[2]:39 [ rand_state#1 ] 1,501.5: zp[2]:43 [ rand_state#2 ] 325.72: zp[2]:4 [ rand_state#11 rand_state#3 ]
|
Uplift Scope [] 1,501.5: zp[2]:39 [ rand_state#1 ] 1,501.5: zp[2]:43 [ rand_state#2 ] 325.72: zp[2]:4 [ rand_state#11 rand_state#3 ]
|
||||||
|
Uplift Scope [MOS7360_TED]
|
||||||
Uplift Scope [RADIX]
|
Uplift Scope [RADIX]
|
||||||
|
|
||||||
Uplifting [main] best 8346 combination reg byte x [ main::x#11 main::x#10 main::x#2 main::x#1 ] zp[1]:2 [ main::y#11 main::y#10 main::y#2 main::y#1 ] zp[2]:21 [ main::$5 ] zp[2]:13 [ main::$29 ] zp[2]:15 [ main::$30 ] zp[2]:17 [ main::$3 ] zp[2]:23 [ main::$6 ] reg byte a [ main::$9 ] zp[2]:31 [ main::$10 ] reg byte a [ main::$12 ] reg byte a [ main::$13 ] zp[1]:36 [ main::$18 ] zp[2]:11 [ main::$24 ] zp[1]:33 [ main::rnd#0 ] zp[1]:25 [ main::cnt#0 ] zp[2]:26 [ main::$8 ] zp[2]:19 [ main::offset#0 ]
|
Uplifting [main] best 8346 combination reg byte x [ main::x#11 main::x#10 main::x#2 main::x#1 ] zp[1]:2 [ main::y#11 main::y#10 main::y#2 main::y#1 ] zp[2]:21 [ main::$5 ] zp[2]:13 [ main::$29 ] zp[2]:15 [ main::$30 ] zp[2]:17 [ main::$3 ] zp[2]:23 [ main::$6 ] reg byte a [ main::$9 ] zp[2]:31 [ main::$10 ] reg byte a [ main::$12 ] reg byte a [ main::$13 ] zp[1]:36 [ main::$18 ] zp[2]:11 [ main::$24 ] zp[1]:33 [ main::rnd#0 ] zp[1]:25 [ main::cnt#0 ] zp[2]:26 [ main::$8 ] zp[2]:19 [ main::offset#0 ]
|
||||||
@ -1636,6 +1708,7 @@ Limited combination testing to 100 combinations of 12288 possible.
|
|||||||
Uplifting [rand] best 8346 combination zp[2]:37 [ rand::$0 ] zp[2]:41 [ rand::$1 ] zp[2]:45 [ rand::$2 ] zp[2]:47 [ rand::return#0 ] zp[2]:29 [ rand::return#2 ]
|
Uplifting [rand] best 8346 combination zp[2]:37 [ rand::$0 ] zp[2]:41 [ rand::$1 ] zp[2]:45 [ rand::$2 ] zp[2]:47 [ rand::return#0 ] zp[2]:29 [ rand::return#2 ]
|
||||||
Uplifting [memset] best 8327 combination zp[2]:9 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:49 [ memset::end#0 ] reg byte x [ memset::c#5 ] zp[2]:6 [ memset::str#4 ]
|
Uplifting [memset] best 8327 combination zp[2]:9 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:49 [ memset::end#0 ] reg byte x [ memset::c#5 ] zp[2]:6 [ memset::str#4 ]
|
||||||
Uplifting [] best 8327 combination zp[2]:39 [ rand_state#1 ] zp[2]:43 [ rand_state#2 ] zp[2]:4 [ rand_state#11 rand_state#3 ]
|
Uplifting [] best 8327 combination zp[2]:39 [ rand_state#1 ] zp[2]:43 [ rand_state#2 ] zp[2]:4 [ rand_state#11 rand_state#3 ]
|
||||||
|
Uplifting [MOS7360_TED] best 8327 combination
|
||||||
Uplifting [RADIX] best 8327 combination
|
Uplifting [RADIX] best 8327 combination
|
||||||
Attempting to uplift remaining variables inzp[1]:2 [ main::y#11 main::y#10 main::y#2 main::y#1 ]
|
Attempting to uplift remaining variables inzp[1]:2 [ main::y#11 main::y#10 main::y#2 main::y#1 ]
|
||||||
Uplifting [main] best 8327 combination zp[1]:2 [ main::y#11 main::y#10 main::y#2 main::y#1 ]
|
Uplifting [main] best 8327 combination zp[1]:2 [ main::y#11 main::y#10 main::y#2 main::y#1 ]
|
||||||
@ -1681,11 +1754,15 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||||||
|
|
||||||
|
|
||||||
// Global Constants & labels
|
// Global Constants & labels
|
||||||
.label SCREEN = $c00
|
.const OFFSET_STRUCT_MOS7360_TED_BG_COLOR = $15
|
||||||
.label COLORRAM = $800
|
.const OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR = $19
|
||||||
.label BGCOLOR = $ff19
|
.const OFFSET_STRUCT_MOS7360_TED_RASTER_LO = $1d
|
||||||
.label BORDERCOLOR = $ff15
|
// The TED chip controlling video and sound on the Plus/4 and Commodore 16
|
||||||
.label RASTER = $ff1d
|
.label TED = $ff00
|
||||||
|
// Default address of screen luminance/color matrix
|
||||||
|
.label DEFAULT_COLORRAM = $800
|
||||||
|
// Default address of screen character matrix
|
||||||
|
.label DEFAULT_SCREEN = $c00
|
||||||
// The random state variable
|
// The random state variable
|
||||||
.label rand_state = 3
|
.label rand_state = 3
|
||||||
// @begin
|
// @begin
|
||||||
@ -1722,10 +1799,10 @@ main: {
|
|||||||
memset_from_main:
|
memset_from_main:
|
||||||
// [57] phi (byte) memset::c#5 = (byte) $a0 [phi:main->memset#0] -- vbuxx=vbuc1
|
// [57] phi (byte) memset::c#5 = (byte) $a0 [phi:main->memset#0] -- vbuxx=vbuc1
|
||||||
ldx #$a0
|
ldx #$a0
|
||||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) SCREEN [phi:main->memset#1] -- pvoz1=pvoc1
|
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) DEFAULT_SCREEN [phi:main->memset#1] -- pvoz1=pvoc1
|
||||||
lda #<SCREEN
|
lda #<DEFAULT_SCREEN
|
||||||
sta.z memset.str
|
sta.z memset.str
|
||||||
lda #>SCREEN
|
lda #>DEFAULT_SCREEN
|
||||||
sta.z memset.str+1
|
sta.z memset.str+1
|
||||||
jsr memset
|
jsr memset
|
||||||
// [6] phi from main to main::@10 [phi:main->main::@10]
|
// [6] phi from main to main::@10 [phi:main->main::@10]
|
||||||
@ -1738,10 +1815,10 @@ main: {
|
|||||||
memset_from___b10:
|
memset_from___b10:
|
||||||
// [57] phi (byte) memset::c#5 = (byte) 0 [phi:main::@10->memset#0] -- vbuxx=vbuc1
|
// [57] phi (byte) memset::c#5 = (byte) 0 [phi:main::@10->memset#0] -- vbuxx=vbuc1
|
||||||
ldx #0
|
ldx #0
|
||||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) COLORRAM [phi:main::@10->memset#1] -- pvoz1=pvoc1
|
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) DEFAULT_COLORRAM [phi:main::@10->memset#1] -- pvoz1=pvoc1
|
||||||
lda #<COLORRAM
|
lda #<DEFAULT_COLORRAM
|
||||||
sta.z memset.str
|
sta.z memset.str
|
||||||
lda #>COLORRAM
|
lda #>DEFAULT_COLORRAM
|
||||||
sta.z memset.str+1
|
sta.z memset.str+1
|
||||||
jsr memset
|
jsr memset
|
||||||
// [8] phi from main::@10 to main::@11 [phi:main::@10->main::@11]
|
// [8] phi from main::@10 to main::@11 [phi:main::@10->main::@11]
|
||||||
@ -1754,21 +1831,21 @@ main: {
|
|||||||
memset_from___b11:
|
memset_from___b11:
|
||||||
// [57] phi (byte) memset::c#5 = (byte) 0 [phi:main::@11->memset#0] -- vbuxx=vbuc1
|
// [57] phi (byte) memset::c#5 = (byte) 0 [phi:main::@11->memset#0] -- vbuxx=vbuc1
|
||||||
ldx #0
|
ldx #0
|
||||||
// [57] phi (void*) memset::str#4 = (void*)(const byte*) COUNT [phi:main::@11->memset#1] -- pvoz1=pvoc1
|
// [57] phi (void*) memset::str#4 = (void*)(const byte*) VISITS [phi:main::@11->memset#1] -- pvoz1=pvoc1
|
||||||
lda #<COUNT
|
lda #<VISITS
|
||||||
sta.z memset.str
|
sta.z memset.str
|
||||||
lda #>COUNT
|
lda #>VISITS
|
||||||
sta.z memset.str+1
|
sta.z memset.str+1
|
||||||
jsr memset
|
jsr memset
|
||||||
jmp __b12
|
jmp __b12
|
||||||
// main::@12
|
// main::@12
|
||||||
__b12:
|
__b12:
|
||||||
// [10] *((const nomodify byte*) BORDERCOLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
// [10] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta BORDERCOLOR
|
sta TED+OFFSET_STRUCT_MOS7360_TED_BG_COLOR
|
||||||
// [11] *((const nomodify byte*) BGCOLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
// [11] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta BGCOLOR
|
sta TED+OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR
|
||||||
// [12] phi from main::@12 to main::@1 [phi:main::@12->main::@1]
|
// [12] phi from main::@12 to main::@1 [phi:main::@12->main::@1]
|
||||||
__b1_from___b12:
|
__b1_from___b12:
|
||||||
// [12] phi (word) rand_state#11 = (word) 1 [phi:main::@12->main::@1#0] -- vwuz1=vwuc1
|
// [12] phi (word) rand_state#11 = (word) 1 [phi:main::@12->main::@1#0] -- vwuz1=vwuc1
|
||||||
@ -1824,13 +1901,13 @@ main: {
|
|||||||
bcc !+
|
bcc !+
|
||||||
inc.z offset+1
|
inc.z offset+1
|
||||||
!:
|
!:
|
||||||
// [18] (byte*~) main::$5 ← (const byte*) COUNT + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
// [18] (byte*~) main::$5 ← (const byte*) VISITS + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
||||||
lda.z offset
|
lda.z offset
|
||||||
clc
|
clc
|
||||||
adc #<COUNT
|
adc #<VISITS
|
||||||
sta.z __5
|
sta.z __5
|
||||||
lda.z offset+1
|
lda.z offset+1
|
||||||
adc #>COUNT
|
adc #>VISITS
|
||||||
sta.z __5+1
|
sta.z __5+1
|
||||||
// [19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5) -- _deref_pbuz1=_inc__deref_pbuz1
|
// [19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5) -- _deref_pbuz1=_inc__deref_pbuz1
|
||||||
ldy #0
|
ldy #0
|
||||||
@ -1839,25 +1916,25 @@ main: {
|
|||||||
adc #1
|
adc #1
|
||||||
ldy #0
|
ldy #0
|
||||||
sta (__5),y
|
sta (__5),y
|
||||||
// [20] (byte*~) main::$6 ← (const byte*) COUNT + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
// [20] (byte*~) main::$6 ← (const byte*) VISITS + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
||||||
lda.z offset
|
lda.z offset
|
||||||
clc
|
clc
|
||||||
adc #<COUNT
|
adc #<VISITS
|
||||||
sta.z __6
|
sta.z __6
|
||||||
lda.z offset+1
|
lda.z offset+1
|
||||||
adc #>COUNT
|
adc #>VISITS
|
||||||
sta.z __6+1
|
sta.z __6+1
|
||||||
// [21] (byte) main::cnt#0 ← *((byte*~) main::$6) -- vbuyy=_deref_pbuz1
|
// [21] (byte) main::cnt#0 ← *((byte*~) main::$6) -- vbuyy=_deref_pbuz1
|
||||||
ldy #0
|
ldy #0
|
||||||
lda (__6),y
|
lda (__6),y
|
||||||
tay
|
tay
|
||||||
// [22] (byte*~) main::$8 ← (const nomodify byte*) COLORRAM + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz1
|
// [22] (byte*~) main::$8 ← (const nomodify byte*) DEFAULT_COLORRAM + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz1
|
||||||
clc
|
clc
|
||||||
lda.z __8
|
lda.z __8
|
||||||
adc #<COLORRAM
|
adc #<DEFAULT_COLORRAM
|
||||||
sta.z __8
|
sta.z __8
|
||||||
lda.z __8+1
|
lda.z __8+1
|
||||||
adc #>COLORRAM
|
adc #>DEFAULT_COLORRAM
|
||||||
sta.z __8+1
|
sta.z __8+1
|
||||||
// [23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f -- vbuaa=vbuyy_band_vbuc1
|
// [23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f -- vbuaa=vbuyy_band_vbuc1
|
||||||
tya
|
tya
|
||||||
@ -1923,9 +2000,9 @@ main: {
|
|||||||
jmp __b6
|
jmp __b6
|
||||||
// main::@6
|
// main::@6
|
||||||
__b6:
|
__b6:
|
||||||
// [37] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto main::@6 -- _deref_pbuc1_neq_vbuc2_then_la1
|
// [37] if(*((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_RASTER_LO)!=(byte) $ff) goto main::@6 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||||
lda #$ff
|
lda #$ff
|
||||||
cmp RASTER
|
cmp TED+OFFSET_STRUCT_MOS7360_TED_RASTER_LO
|
||||||
bne __b6_from___b6
|
bne __b6_from___b6
|
||||||
// [12] phi from main::@6 to main::@1 [phi:main::@6->main::@1]
|
// [12] phi from main::@6 to main::@1 [phi:main::@6->main::@1]
|
||||||
__b1_from___b6:
|
__b1_from___b6:
|
||||||
@ -2117,8 +2194,10 @@ memset: {
|
|||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
.segment Data
|
.segment Data
|
||||||
|
// Colors to fade up/down when visiting a char multiple times
|
||||||
FADE: .byte 2, $12, $22, $32, $42, $52, $62, $72, $76, $66, $56, $46, $36, $26, $16, 6
|
FADE: .byte 2, $12, $22, $32, $42, $52, $62, $72, $76, $66, $56, $46, $36, $26, $16, 6
|
||||||
COUNT: .fill $3e8, 0
|
// The number of times each character has been visited
|
||||||
|
VISITS: .fill $3e8, 0
|
||||||
|
|
||||||
ASSEMBLER OPTIMIZATIONS
|
ASSEMBLER OPTIMIZATIONS
|
||||||
Removing instruction jmp __b1
|
Removing instruction jmp __b1
|
||||||
@ -2219,17 +2298,50 @@ FINAL SYMBOL TABLE
|
|||||||
(label) @1
|
(label) @1
|
||||||
(label) @begin
|
(label) @begin
|
||||||
(label) @end
|
(label) @end
|
||||||
(const nomodify byte*) BGCOLOR = (byte*) 65305
|
(const nomodify byte*) DEFAULT_COLORRAM = (byte*) 2048
|
||||||
(const nomodify byte*) BORDERCOLOR = (byte*) 65301
|
(const nomodify byte*) DEFAULT_SCREEN = (byte*) 3072
|
||||||
(const nomodify byte*) COLORRAM = (byte*) 2048
|
|
||||||
(const byte*) COUNT[(number) $3e8] = { fill( $3e8, 0) }
|
|
||||||
(const byte*) FADE[(number) $10] = { (byte) 2, (byte) $12, (byte) $22, (byte) $32, (byte) $42, (byte) $52, (byte) $62, (byte) $72, (byte) $76, (byte) $66, (byte) $56, (byte) $46, (byte) $36, (byte) $26, (byte) $16, (byte) 6 }
|
(const byte*) FADE[(number) $10] = { (byte) 2, (byte) $12, (byte) $22, (byte) $32, (byte) $42, (byte) $52, (byte) $62, (byte) $72, (byte) $76, (byte) $66, (byte) $56, (byte) $46, (byte) $36, (byte) $26, (byte) $16, (byte) 6 }
|
||||||
|
(byte) MOS7360_TED::BG_COLOR
|
||||||
|
(byte) MOS7360_TED::BG_COLOR1
|
||||||
|
(byte) MOS7360_TED::BG_COLOR2
|
||||||
|
(byte) MOS7360_TED::BG_COLOR3
|
||||||
|
(byte) MOS7360_TED::BORDER_COLOR
|
||||||
|
(byte) MOS7360_TED::CH1_FREQ_HI
|
||||||
|
(byte) MOS7360_TED::CH1_FREQ_LO
|
||||||
|
(byte) MOS7360_TED::CH2_FREQ_LO
|
||||||
|
(byte) MOS7360_TED::CHARPOS_HI
|
||||||
|
(byte) MOS7360_TED::CHARPOS_LO
|
||||||
|
(byte) MOS7360_TED::CONTROL1
|
||||||
|
(byte) MOS7360_TED::CONTROL2
|
||||||
|
(byte) MOS7360_TED::CONTROL5
|
||||||
|
(word) MOS7360_TED::COUNTER_1
|
||||||
|
(word) MOS7360_TED::COUNTER_2
|
||||||
|
(word) MOS7360_TED::COUNTER_3
|
||||||
|
(byte) MOS7360_TED::CURSOR_HI
|
||||||
|
(byte) MOS7360_TED::CURSOR_LO
|
||||||
|
(byte) MOS7360_TED::HSCAN_POS
|
||||||
|
(byte) MOS7360_TED::IRQ_MASK
|
||||||
|
(byte) MOS7360_TED::IRQ_REQUEST
|
||||||
|
(byte) MOS7360_TED::KEYBOARD_INPUT
|
||||||
|
(byte) MOS7360_TED::MEMORY1
|
||||||
|
(byte) MOS7360_TED::MEMORY2
|
||||||
|
(byte) MOS7360_TED::MEMORY3
|
||||||
|
(byte) MOS7360_TED::RAM_SWITCH
|
||||||
|
(byte) MOS7360_TED::RASTER_HI
|
||||||
|
(byte) MOS7360_TED::RASTER_IRQ
|
||||||
|
(byte) MOS7360_TED::RASTER_LO
|
||||||
|
(byte) MOS7360_TED::ROM_SWITCH
|
||||||
|
(byte) MOS7360_TED::SOUND_CONTROL
|
||||||
|
(const byte*) MOS7360_TED::UNUSED[(number) $1d] = { fill( $1d, 0) }
|
||||||
|
(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR = (byte) $15
|
||||||
|
(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR = (byte) $19
|
||||||
|
(const byte) OFFSET_STRUCT_MOS7360_TED_RASTER_LO = (byte) $1d
|
||||||
(const byte) RADIX::BINARY = (number) 2
|
(const byte) RADIX::BINARY = (number) 2
|
||||||
(const byte) RADIX::DECIMAL = (number) $a
|
(const byte) RADIX::DECIMAL = (number) $a
|
||||||
(const byte) RADIX::HEXADECIMAL = (number) $10
|
(const byte) RADIX::HEXADECIMAL = (number) $10
|
||||||
(const byte) RADIX::OCTAL = (number) 8
|
(const byte) RADIX::OCTAL = (number) 8
|
||||||
(const nomodify byte*) RASTER = (byte*) 65309
|
(const nomodify struct MOS7360_TED*) TED = (struct MOS7360_TED*) 65280
|
||||||
(const nomodify byte*) SCREEN = (byte*) 3072
|
(const byte*) VISITS[(number) $3e8] = { fill( $3e8, 0) }
|
||||||
(void()) main()
|
(void()) main()
|
||||||
(word~) main::$10 zp[2]:13 202.0
|
(word~) main::$10 zp[2]:13 202.0
|
||||||
(byte~) main::$12 reg byte a 202.0
|
(byte~) main::$12 reg byte a 202.0
|
||||||
@ -2344,11 +2456,15 @@ Score: 6721
|
|||||||
|
|
||||||
|
|
||||||
// Global Constants & labels
|
// Global Constants & labels
|
||||||
.label SCREEN = $c00
|
.const OFFSET_STRUCT_MOS7360_TED_BG_COLOR = $15
|
||||||
.label COLORRAM = $800
|
.const OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR = $19
|
||||||
.label BGCOLOR = $ff19
|
.const OFFSET_STRUCT_MOS7360_TED_RASTER_LO = $1d
|
||||||
.label BORDERCOLOR = $ff15
|
// The TED chip controlling video and sound on the Plus/4 and Commodore 16
|
||||||
.label RASTER = $ff1d
|
.label TED = $ff00
|
||||||
|
// Default address of screen luminance/color matrix
|
||||||
|
.label DEFAULT_COLORRAM = $800
|
||||||
|
// Default address of screen character matrix
|
||||||
|
.label DEFAULT_SCREEN = $c00
|
||||||
// The random state variable
|
// The random state variable
|
||||||
.label rand_state = 3
|
.label rand_state = 3
|
||||||
// @begin
|
// @begin
|
||||||
@ -2372,51 +2488,51 @@ main: {
|
|||||||
.label y = 2
|
.label y = 2
|
||||||
.label __29 = 7
|
.label __29 = 7
|
||||||
.label __30 = 5
|
.label __30 = 5
|
||||||
// memset(SCREEN, 0xa0, 1000)
|
// memset(DEFAULT_SCREEN, 0xa0, 1000)
|
||||||
// [5] call memset
|
// [5] call memset
|
||||||
// [57] phi from main to memset [phi:main->memset]
|
// [57] phi from main to memset [phi:main->memset]
|
||||||
// [57] phi (byte) memset::c#5 = (byte) $a0 [phi:main->memset#0] -- vbuxx=vbuc1
|
// [57] phi (byte) memset::c#5 = (byte) $a0 [phi:main->memset#0] -- vbuxx=vbuc1
|
||||||
ldx #$a0
|
ldx #$a0
|
||||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) SCREEN [phi:main->memset#1] -- pvoz1=pvoc1
|
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) DEFAULT_SCREEN [phi:main->memset#1] -- pvoz1=pvoc1
|
||||||
lda #<SCREEN
|
lda #<DEFAULT_SCREEN
|
||||||
sta.z memset.str
|
sta.z memset.str
|
||||||
lda #>SCREEN
|
lda #>DEFAULT_SCREEN
|
||||||
sta.z memset.str+1
|
sta.z memset.str+1
|
||||||
jsr memset
|
jsr memset
|
||||||
// [6] phi from main to main::@10 [phi:main->main::@10]
|
// [6] phi from main to main::@10 [phi:main->main::@10]
|
||||||
// main::@10
|
// main::@10
|
||||||
// memset(COLORRAM, 0, 1000)
|
// memset(DEFAULT_COLORRAM, 0, 1000)
|
||||||
// [7] call memset
|
// [7] call memset
|
||||||
// [57] phi from main::@10 to memset [phi:main::@10->memset]
|
// [57] phi from main::@10 to memset [phi:main::@10->memset]
|
||||||
// [57] phi (byte) memset::c#5 = (byte) 0 [phi:main::@10->memset#0] -- vbuxx=vbuc1
|
// [57] phi (byte) memset::c#5 = (byte) 0 [phi:main::@10->memset#0] -- vbuxx=vbuc1
|
||||||
ldx #0
|
ldx #0
|
||||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) COLORRAM [phi:main::@10->memset#1] -- pvoz1=pvoc1
|
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) DEFAULT_COLORRAM [phi:main::@10->memset#1] -- pvoz1=pvoc1
|
||||||
lda #<COLORRAM
|
lda #<DEFAULT_COLORRAM
|
||||||
sta.z memset.str
|
sta.z memset.str
|
||||||
lda #>COLORRAM
|
lda #>DEFAULT_COLORRAM
|
||||||
sta.z memset.str+1
|
sta.z memset.str+1
|
||||||
jsr memset
|
jsr memset
|
||||||
// [8] phi from main::@10 to main::@11 [phi:main::@10->main::@11]
|
// [8] phi from main::@10 to main::@11 [phi:main::@10->main::@11]
|
||||||
// main::@11
|
// main::@11
|
||||||
// memset(COUNT, 0, 1000)
|
// memset(VISITS, 0, 1000)
|
||||||
// [9] call memset
|
// [9] call memset
|
||||||
// [57] phi from main::@11 to memset [phi:main::@11->memset]
|
// [57] phi from main::@11 to memset [phi:main::@11->memset]
|
||||||
// [57] phi (byte) memset::c#5 = (byte) 0 [phi:main::@11->memset#0] -- vbuxx=vbuc1
|
// [57] phi (byte) memset::c#5 = (byte) 0 [phi:main::@11->memset#0] -- vbuxx=vbuc1
|
||||||
ldx #0
|
ldx #0
|
||||||
// [57] phi (void*) memset::str#4 = (void*)(const byte*) COUNT [phi:main::@11->memset#1] -- pvoz1=pvoc1
|
// [57] phi (void*) memset::str#4 = (void*)(const byte*) VISITS [phi:main::@11->memset#1] -- pvoz1=pvoc1
|
||||||
lda #<COUNT
|
lda #<VISITS
|
||||||
sta.z memset.str
|
sta.z memset.str
|
||||||
lda #>COUNT
|
lda #>VISITS
|
||||||
sta.z memset.str+1
|
sta.z memset.str+1
|
||||||
jsr memset
|
jsr memset
|
||||||
// main::@12
|
// main::@12
|
||||||
// *BORDERCOLOR = 0
|
// TED->BG_COLOR = 0
|
||||||
// [10] *((const nomodify byte*) BORDERCOLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
// [10] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta BORDERCOLOR
|
sta TED+OFFSET_STRUCT_MOS7360_TED_BG_COLOR
|
||||||
// *BGCOLOR = 0
|
// TED->BORDER_COLOR = 0
|
||||||
// [11] *((const nomodify byte*) BGCOLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
// [11] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||||
sta BGCOLOR
|
sta TED+OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR
|
||||||
// [12] phi from main::@12 to main::@1 [phi:main::@12->main::@1]
|
// [12] phi from main::@12 to main::@1 [phi:main::@12->main::@1]
|
||||||
// [12] phi (word) rand_state#11 = (word) 1 [phi:main::@12->main::@1#0] -- vwuz1=vwuc1
|
// [12] phi (word) rand_state#11 = (word) 1 [phi:main::@12->main::@1#0] -- vwuz1=vwuc1
|
||||||
lda #<1
|
lda #<1
|
||||||
@ -2470,49 +2586,49 @@ main: {
|
|||||||
bcc !+
|
bcc !+
|
||||||
inc.z offset+1
|
inc.z offset+1
|
||||||
!:
|
!:
|
||||||
// COUNT+offset
|
// VISITS+offset
|
||||||
// [18] (byte*~) main::$5 ← (const byte*) COUNT + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
// [18] (byte*~) main::$5 ← (const byte*) VISITS + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
||||||
lda.z offset
|
lda.z offset
|
||||||
clc
|
clc
|
||||||
adc #<COUNT
|
adc #<VISITS
|
||||||
sta.z __5
|
sta.z __5
|
||||||
lda.z offset+1
|
lda.z offset+1
|
||||||
adc #>COUNT
|
adc #>VISITS
|
||||||
sta.z __5+1
|
sta.z __5+1
|
||||||
// cnt = ++*(COUNT+offset)
|
// cnt = ++*(VISITS+offset)
|
||||||
// [19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5) -- _deref_pbuz1=_inc__deref_pbuz1
|
// [19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5) -- _deref_pbuz1=_inc__deref_pbuz1
|
||||||
ldy #0
|
ldy #0
|
||||||
lda (__5),y
|
lda (__5),y
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
sta (__5),y
|
sta (__5),y
|
||||||
// COUNT+offset
|
// VISITS+offset
|
||||||
// [20] (byte*~) main::$6 ← (const byte*) COUNT + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
// [20] (byte*~) main::$6 ← (const byte*) VISITS + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
||||||
lda.z offset
|
lda.z offset
|
||||||
clc
|
clc
|
||||||
adc #<COUNT
|
adc #<VISITS
|
||||||
sta.z __6
|
sta.z __6
|
||||||
lda.z offset+1
|
lda.z offset+1
|
||||||
adc #>COUNT
|
adc #>VISITS
|
||||||
sta.z __6+1
|
sta.z __6+1
|
||||||
// cnt = ++*(COUNT+offset)
|
// cnt = ++*(VISITS+offset)
|
||||||
// [21] (byte) main::cnt#0 ← *((byte*~) main::$6) -- vbuyy=_deref_pbuz1
|
// [21] (byte) main::cnt#0 ← *((byte*~) main::$6) -- vbuyy=_deref_pbuz1
|
||||||
lda (__6),y
|
lda (__6),y
|
||||||
tay
|
tay
|
||||||
// COLORRAM+offset
|
// DEFAULT_COLORRAM+offset
|
||||||
// [22] (byte*~) main::$8 ← (const nomodify byte*) COLORRAM + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz1
|
// [22] (byte*~) main::$8 ← (const nomodify byte*) DEFAULT_COLORRAM + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz1
|
||||||
clc
|
clc
|
||||||
lda.z __8
|
lda.z __8
|
||||||
adc #<COLORRAM
|
adc #<DEFAULT_COLORRAM
|
||||||
sta.z __8
|
sta.z __8
|
||||||
lda.z __8+1
|
lda.z __8+1
|
||||||
adc #>COLORRAM
|
adc #>DEFAULT_COLORRAM
|
||||||
sta.z __8+1
|
sta.z __8+1
|
||||||
// cnt&0xf
|
// cnt&0xf
|
||||||
// [23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f -- vbuaa=vbuyy_band_vbuc1
|
// [23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f -- vbuaa=vbuyy_band_vbuc1
|
||||||
tya
|
tya
|
||||||
and #$f
|
and #$f
|
||||||
// *(COLORRAM+offset) = FADE[cnt&0xf]
|
// *(DEFAULT_COLORRAM+offset) = FADE[cnt&0xf]
|
||||||
// [24] *((byte*~) main::$8) ← *((const byte*) FADE + (byte~) main::$9) -- _deref_pbuz1=pbuc1_derefidx_vbuaa
|
// [24] *((byte*~) main::$8) ← *((const byte*) FADE + (byte~) main::$9) -- _deref_pbuz1=pbuc1_derefidx_vbuaa
|
||||||
tay
|
tay
|
||||||
lda FADE,y
|
lda FADE,y
|
||||||
@ -2565,10 +2681,10 @@ main: {
|
|||||||
// [36] phi (byte) main::y#10 = (byte) main::y#2 [phi:main::@14/main::@15/main::@16/main::@17/main::@6->main::@6#1] -- register_copy
|
// [36] phi (byte) main::y#10 = (byte) main::y#2 [phi:main::@14/main::@15/main::@16/main::@17/main::@6->main::@6#1] -- register_copy
|
||||||
// main::@6
|
// main::@6
|
||||||
__b6:
|
__b6:
|
||||||
// while(*RASTER!=0xff)
|
// while(TED->RASTER_LO!=0xff)
|
||||||
// [37] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto main::@6 -- _deref_pbuc1_neq_vbuc2_then_la1
|
// [37] if(*((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_RASTER_LO)!=(byte) $ff) goto main::@6 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||||
lda #$ff
|
lda #$ff
|
||||||
cmp RASTER
|
cmp TED+OFFSET_STRUCT_MOS7360_TED_RASTER_LO
|
||||||
bne __b6
|
bne __b6
|
||||||
// [12] phi from main::@6 to main::@1 [phi:main::@6->main::@1]
|
// [12] phi from main::@6 to main::@1 [phi:main::@6->main::@1]
|
||||||
// [12] phi (word) rand_state#11 = (word) rand_state#3 [phi:main::@6->main::@1#0] -- register_copy
|
// [12] phi (word) rand_state#11 = (word) rand_state#3 [phi:main::@6->main::@1#0] -- register_copy
|
||||||
@ -2753,6 +2869,8 @@ memset: {
|
|||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
.segment Data
|
.segment Data
|
||||||
|
// Colors to fade up/down when visiting a char multiple times
|
||||||
FADE: .byte 2, $12, $22, $32, $42, $52, $62, $72, $76, $66, $56, $46, $36, $26, $16, 6
|
FADE: .byte 2, $12, $22, $32, $42, $52, $62, $72, $76, $66, $56, $46, $36, $26, $16, 6
|
||||||
COUNT: .fill $3e8, 0
|
// The number of times each character has been visited
|
||||||
|
VISITS: .fill $3e8, 0
|
||||||
|
|
||||||
|
@ -1,17 +1,50 @@
|
|||||||
(label) @1
|
(label) @1
|
||||||
(label) @begin
|
(label) @begin
|
||||||
(label) @end
|
(label) @end
|
||||||
(const nomodify byte*) BGCOLOR = (byte*) 65305
|
(const nomodify byte*) DEFAULT_COLORRAM = (byte*) 2048
|
||||||
(const nomodify byte*) BORDERCOLOR = (byte*) 65301
|
(const nomodify byte*) DEFAULT_SCREEN = (byte*) 3072
|
||||||
(const nomodify byte*) COLORRAM = (byte*) 2048
|
|
||||||
(const byte*) COUNT[(number) $3e8] = { fill( $3e8, 0) }
|
|
||||||
(const byte*) FADE[(number) $10] = { (byte) 2, (byte) $12, (byte) $22, (byte) $32, (byte) $42, (byte) $52, (byte) $62, (byte) $72, (byte) $76, (byte) $66, (byte) $56, (byte) $46, (byte) $36, (byte) $26, (byte) $16, (byte) 6 }
|
(const byte*) FADE[(number) $10] = { (byte) 2, (byte) $12, (byte) $22, (byte) $32, (byte) $42, (byte) $52, (byte) $62, (byte) $72, (byte) $76, (byte) $66, (byte) $56, (byte) $46, (byte) $36, (byte) $26, (byte) $16, (byte) 6 }
|
||||||
|
(byte) MOS7360_TED::BG_COLOR
|
||||||
|
(byte) MOS7360_TED::BG_COLOR1
|
||||||
|
(byte) MOS7360_TED::BG_COLOR2
|
||||||
|
(byte) MOS7360_TED::BG_COLOR3
|
||||||
|
(byte) MOS7360_TED::BORDER_COLOR
|
||||||
|
(byte) MOS7360_TED::CH1_FREQ_HI
|
||||||
|
(byte) MOS7360_TED::CH1_FREQ_LO
|
||||||
|
(byte) MOS7360_TED::CH2_FREQ_LO
|
||||||
|
(byte) MOS7360_TED::CHARPOS_HI
|
||||||
|
(byte) MOS7360_TED::CHARPOS_LO
|
||||||
|
(byte) MOS7360_TED::CONTROL1
|
||||||
|
(byte) MOS7360_TED::CONTROL2
|
||||||
|
(byte) MOS7360_TED::CONTROL5
|
||||||
|
(word) MOS7360_TED::COUNTER_1
|
||||||
|
(word) MOS7360_TED::COUNTER_2
|
||||||
|
(word) MOS7360_TED::COUNTER_3
|
||||||
|
(byte) MOS7360_TED::CURSOR_HI
|
||||||
|
(byte) MOS7360_TED::CURSOR_LO
|
||||||
|
(byte) MOS7360_TED::HSCAN_POS
|
||||||
|
(byte) MOS7360_TED::IRQ_MASK
|
||||||
|
(byte) MOS7360_TED::IRQ_REQUEST
|
||||||
|
(byte) MOS7360_TED::KEYBOARD_INPUT
|
||||||
|
(byte) MOS7360_TED::MEMORY1
|
||||||
|
(byte) MOS7360_TED::MEMORY2
|
||||||
|
(byte) MOS7360_TED::MEMORY3
|
||||||
|
(byte) MOS7360_TED::RAM_SWITCH
|
||||||
|
(byte) MOS7360_TED::RASTER_HI
|
||||||
|
(byte) MOS7360_TED::RASTER_IRQ
|
||||||
|
(byte) MOS7360_TED::RASTER_LO
|
||||||
|
(byte) MOS7360_TED::ROM_SWITCH
|
||||||
|
(byte) MOS7360_TED::SOUND_CONTROL
|
||||||
|
(const byte*) MOS7360_TED::UNUSED[(number) $1d] = { fill( $1d, 0) }
|
||||||
|
(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR = (byte) $15
|
||||||
|
(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR = (byte) $19
|
||||||
|
(const byte) OFFSET_STRUCT_MOS7360_TED_RASTER_LO = (byte) $1d
|
||||||
(const byte) RADIX::BINARY = (number) 2
|
(const byte) RADIX::BINARY = (number) 2
|
||||||
(const byte) RADIX::DECIMAL = (number) $a
|
(const byte) RADIX::DECIMAL = (number) $a
|
||||||
(const byte) RADIX::HEXADECIMAL = (number) $10
|
(const byte) RADIX::HEXADECIMAL = (number) $10
|
||||||
(const byte) RADIX::OCTAL = (number) 8
|
(const byte) RADIX::OCTAL = (number) 8
|
||||||
(const nomodify byte*) RASTER = (byte*) 65309
|
(const nomodify struct MOS7360_TED*) TED = (struct MOS7360_TED*) 65280
|
||||||
(const nomodify byte*) SCREEN = (byte*) 3072
|
(const byte*) VISITS[(number) $3e8] = { fill( $3e8, 0) }
|
||||||
(void()) main()
|
(void()) main()
|
||||||
(word~) main::$10 zp[2]:13 202.0
|
(word~) main::$10 zp[2]:13 202.0
|
||||||
(byte~) main::$12 reg byte a 202.0
|
(byte~) main::$12 reg byte a 202.0
|
||||||
|
Loading…
Reference in New Issue
Block a user