mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-01-11 20:30:08 +00:00
Renamed #pragma emulator. Added headers for Plus/4. Closes #436
This commit is contained in:
parent
c3a9ced0f5
commit
ab670df01f
.idea/dictionaries
src
main
java/dk/camelot64/kickc/parser
kc/include
test
kc/examples/plus4walk
ref/examples/plus4walk
1
.idea/dictionaries/jespergravgaard.xml
generated
1
.idea/dictionaries/jespergravgaard.xml
generated
@ -2,6 +2,7 @@
|
||||
<dictionary name="jespergravgaard">
|
||||
<words>
|
||||
<w>unversioned</w>
|
||||
<w>xplus</w>
|
||||
</words>
|
||||
</dictionary>
|
||||
</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,
|
||||
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,
|
||||
CPU=44, CODESEG=45, DATASEG=46, ENCODING=47, CONST=48, EXTERN=49, EXPORT=50,
|
||||
ALIGN=51, INLINE=52, VOLATILE=53, STATIC=54, INTERRUPT=55, REGISTER=56,
|
||||
ADDRESS=57, ADDRESS_ZEROPAGE=58, ADDRESS_MAINMEM=59, FORM_SSA=60, FORM_MA=61,
|
||||
INTRINSIC=62, CALLING=63, CALLINGCONVENTION=64, VARMODEL=65, IF=66, ELSE=67,
|
||||
WHILE=68, DO=69, FOR=70, SWITCH=71, RETURN=72, BREAK=73, CONTINUE=74,
|
||||
ASM=75, DEFAULT=76, CASE=77, STRUCT=78, ENUM=79, SIZEOF=80, TYPEID=81,
|
||||
DEFINED=82, KICKASM=83, RESOURCE=84, USES=85, CLOBBERS=86, BYTES=87, CYCLES=88,
|
||||
LOGIC_NOT=89, SIGNEDNESS=90, SIMPLETYPE=91, BOOLEAN=92, KICKASM_BODY=93,
|
||||
IMPORT=94, INCLUDE=95, PRAGMA=96, DEFINE=97, DEFINE_CONTINUE=98, UNDEF=99,
|
||||
IFDEF=100, IFNDEF=101, IFIF=102, ELIF=103, IFELSE=104, ENDIF=105, NUMBER=106,
|
||||
NUMFLOAT=107, BINFLOAT=108, DECFLOAT=109, HEXFLOAT=110, NUMINT=111, BININTEGER=112,
|
||||
DECINTEGER=113, HEXINTEGER=114, NAME=115, STRING=116, CHAR=117, WS=118,
|
||||
COMMENT_LINE=119, COMMENT_BLOCK=120, ASM_BYTE=121, ASM_MNEMONIC=122, ASM_IMM=123,
|
||||
ASM_COLON=124, ASM_COMMA=125, ASM_PAR_BEGIN=126, ASM_PAR_END=127, ASM_BRACKET_BEGIN=128,
|
||||
ASM_BRACKET_END=129, ASM_DOT=130, ASM_SHIFT_LEFT=131, ASM_SHIFT_RIGHT=132,
|
||||
ASM_PLUS=133, ASM_MINUS=134, ASM_LESS_THAN=135, ASM_GREATER_THAN=136,
|
||||
ASM_MULTIPLY=137, ASM_DIVIDE=138, ASM_CURLY_BEGIN=139, ASM_CURLY_END=140,
|
||||
ASM_NUMBER=141, ASM_NUMFLOAT=142, ASM_BINFLOAT=143, ASM_DECFLOAT=144,
|
||||
ASM_HEXFLOAT=145, ASM_NUMINT=146, ASM_BININTEGER=147, ASM_DECINTEGER=148,
|
||||
ASM_HEXINTEGER=149, ASM_CHAR=150, ASM_MULTI_REL=151, ASM_MULTI_NAME=152,
|
||||
ASM_NAME=153, ASM_WS=154, ASM_COMMENT_LINE=155, ASM_COMMENT_BLOCK=156,
|
||||
IMPORT_SYSTEMFILE=157, IMPORT_LOCALFILE=158, IMPORT_WS=159, IMPORT_COMMENT_LINE=160,
|
||||
IMPORT_COMMENT_BLOCK=161, EMULATOR=162;
|
||||
EMULATOR=44, CPU=45, CODESEG=46, DATASEG=47, ENCODING=48, CONST=49, EXTERN=50,
|
||||
EXPORT=51, ALIGN=52, INLINE=53, VOLATILE=54, STATIC=55, INTERRUPT=56,
|
||||
REGISTER=57, ADDRESS=58, ADDRESS_ZEROPAGE=59, ADDRESS_MAINMEM=60, FORM_SSA=61,
|
||||
FORM_MA=62, INTRINSIC=63, CALLING=64, CALLINGCONVENTION=65, VARMODEL=66,
|
||||
IF=67, ELSE=68, WHILE=69, DO=70, FOR=71, SWITCH=72, RETURN=73, BREAK=74,
|
||||
CONTINUE=75, ASM=76, DEFAULT=77, CASE=78, STRUCT=79, ENUM=80, SIZEOF=81,
|
||||
TYPEID=82, DEFINED=83, KICKASM=84, RESOURCE=85, USES=86, CLOBBERS=87,
|
||||
BYTES=88, CYCLES=89, LOGIC_NOT=90, SIGNEDNESS=91, SIMPLETYPE=92, BOOLEAN=93,
|
||||
KICKASM_BODY=94, IMPORT=95, INCLUDE=96, PRAGMA=97, DEFINE=98, DEFINE_CONTINUE=99,
|
||||
UNDEF=100, IFDEF=101, IFNDEF=102, IFIF=103, ELIF=104, IFELSE=105, ENDIF=106,
|
||||
NUMBER=107, NUMFLOAT=108, BINFLOAT=109, DECFLOAT=110, HEXFLOAT=111, NUMINT=112,
|
||||
BININTEGER=113, DECINTEGER=114, HEXINTEGER=115, NAME=116, STRING=117,
|
||||
CHAR=118, WS=119, COMMENT_LINE=120, COMMENT_BLOCK=121, ASM_BYTE=122, ASM_MNEMONIC=123,
|
||||
ASM_IMM=124, ASM_COLON=125, ASM_COMMA=126, ASM_PAR_BEGIN=127, ASM_PAR_END=128,
|
||||
ASM_BRACKET_BEGIN=129, ASM_BRACKET_END=130, ASM_DOT=131, ASM_SHIFT_LEFT=132,
|
||||
ASM_SHIFT_RIGHT=133, ASM_PLUS=134, ASM_MINUS=135, ASM_LESS_THAN=136, ASM_GREATER_THAN=137,
|
||||
ASM_MULTIPLY=138, ASM_DIVIDE=139, ASM_CURLY_BEGIN=140, ASM_CURLY_END=141,
|
||||
ASM_NUMBER=142, ASM_NUMFLOAT=143, ASM_BINFLOAT=144, ASM_DECFLOAT=145,
|
||||
ASM_HEXFLOAT=146, ASM_NUMINT=147, ASM_BININTEGER=148, ASM_DECINTEGER=149,
|
||||
ASM_HEXINTEGER=150, ASM_CHAR=151, ASM_MULTI_REL=152, ASM_MULTI_NAME=153,
|
||||
ASM_NAME=154, ASM_WS=155, ASM_COMMENT_LINE=156, ASM_COMMENT_BLOCK=157,
|
||||
IMPORT_SYSTEMFILE=158, IMPORT_LOCALFILE=159, IMPORT_WS=160, IMPORT_COMMENT_LINE=161,
|
||||
IMPORT_COMMENT_BLOCK=162;
|
||||
public static final int
|
||||
RULE_file = 0, RULE_asmFile = 1, RULE_declSeq = 2, RULE_declOrImport = 3,
|
||||
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, "'typedef'", "'reserve'",
|
||||
"'pc'", "'target'", "'link'", "'cpu'", "'code_seg'", "'data_seg'", "'encoding'",
|
||||
"'const'", "'extern'", "'export'", "'align'", "'inline'", "'volatile'",
|
||||
"'static'", "'interrupt'", "'register'", "'__address'", "'__zp'", "'__mem'",
|
||||
"'__ssa'", "'__ma'", "'__intrinsic'", "'calling'", null, "'var_model'",
|
||||
"'if'", "'else'", "'while'", "'do'", "'for'", "'switch'", "'return'",
|
||||
"'break'", "'continue'", "'asm'", "'default'", "'case'", "'struct'",
|
||||
"'enum'", "'sizeof'", "'typeid'", "'defined'", "'kickasm'", "'resource'",
|
||||
"'uses'", "'clobbers'", "'bytes'", "'cycles'", "'!'", null, null, null,
|
||||
null, "'#import'", "'#include'", "'#pragma'", "'#define'", null, "'#undef'",
|
||||
"'#ifdef'", "'#ifndef'", "'#if'", "'#elif'", "'#else'", "'#endif'", null,
|
||||
null, null, null, null, null, null, null, null, null, null, null, null,
|
||||
null, null, "'.byte'", null, "'#'"
|
||||
"'pc'", "'target'", "'link'", "'emulator'", "'cpu'", "'code_seg'", "'data_seg'",
|
||||
"'encoding'", "'const'", "'extern'", "'export'", "'align'", "'inline'",
|
||||
"'volatile'", "'static'", "'interrupt'", "'register'", "'__address'",
|
||||
"'__zp'", "'__mem'", "'__ssa'", "'__ma'", "'__intrinsic'", "'calling'",
|
||||
null, "'var_model'", "'if'", "'else'", "'while'", "'do'", "'for'", "'switch'",
|
||||
"'return'", "'break'", "'continue'", "'asm'", "'default'", "'case'",
|
||||
"'struct'", "'enum'", "'sizeof'", "'typeid'", "'defined'", "'kickasm'",
|
||||
"'resource'", "'uses'", "'clobbers'", "'bytes'", "'cycles'", "'!'", null,
|
||||
null, null, null, "'#import'", "'#include'", "'#pragma'", "'#define'",
|
||||
null, "'#undef'", "'#ifdef'", "'#ifndef'", "'#if'", "'#elif'", "'#else'",
|
||||
"'#endif'", null, null, null, null, null, null, null, null, null, null,
|
||||
null, null, null, null, null, "'.byte'", null, "'#'"
|
||||
};
|
||||
}
|
||||
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",
|
||||
"EQUAL", "NOT_EQUAL", "LESS_THAN", "LESS_THAN_EQUAL", "GREATER_THAN_EQUAL",
|
||||
"GREATER_THAN", "LOGIC_AND", "LOGIC_OR", "ASSIGN", "ASSIGN_COMPOUND",
|
||||
"TYPEDEF", "RESERVE", "PC", "TARGET", "LINK", "CPU", "CODESEG", "DATASEG",
|
||||
"ENCODING", "CONST", "EXTERN", "EXPORT", "ALIGN", "INLINE", "VOLATILE",
|
||||
"STATIC", "INTERRUPT", "REGISTER", "ADDRESS", "ADDRESS_ZEROPAGE", "ADDRESS_MAINMEM",
|
||||
"FORM_SSA", "FORM_MA", "INTRINSIC", "CALLING", "CALLINGCONVENTION", "VARMODEL",
|
||||
"IF", "ELSE", "WHILE", "DO", "FOR", "SWITCH", "RETURN", "BREAK", "CONTINUE",
|
||||
"ASM", "DEFAULT", "CASE", "STRUCT", "ENUM", "SIZEOF", "TYPEID", "DEFINED",
|
||||
"KICKASM", "RESOURCE", "USES", "CLOBBERS", "BYTES", "CYCLES", "LOGIC_NOT",
|
||||
"SIGNEDNESS", "SIMPLETYPE", "BOOLEAN", "KICKASM_BODY", "IMPORT", "INCLUDE",
|
||||
"PRAGMA", "DEFINE", "DEFINE_CONTINUE", "UNDEF", "IFDEF", "IFNDEF", "IFIF",
|
||||
"ELIF", "IFELSE", "ENDIF", "NUMBER", "NUMFLOAT", "BINFLOAT", "DECFLOAT",
|
||||
"HEXFLOAT", "NUMINT", "BININTEGER", "DECINTEGER", "HEXINTEGER", "NAME",
|
||||
"STRING", "CHAR", "WS", "COMMENT_LINE", "COMMENT_BLOCK", "ASM_BYTE",
|
||||
"TYPEDEF", "RESERVE", "PC", "TARGET", "LINK", "EMULATOR", "CPU", "CODESEG",
|
||||
"DATASEG", "ENCODING", "CONST", "EXTERN", "EXPORT", "ALIGN", "INLINE",
|
||||
"VOLATILE", "STATIC", "INTERRUPT", "REGISTER", "ADDRESS", "ADDRESS_ZEROPAGE",
|
||||
"ADDRESS_MAINMEM", "FORM_SSA", "FORM_MA", "INTRINSIC", "CALLING", "CALLINGCONVENTION",
|
||||
"VARMODEL", "IF", "ELSE", "WHILE", "DO", "FOR", "SWITCH", "RETURN", "BREAK",
|
||||
"CONTINUE", "ASM", "DEFAULT", "CASE", "STRUCT", "ENUM", "SIZEOF", "TYPEID",
|
||||
"DEFINED", "KICKASM", "RESOURCE", "USES", "CLOBBERS", "BYTES", "CYCLES",
|
||||
"LOGIC_NOT", "SIGNEDNESS", "SIMPLETYPE", "BOOLEAN", "KICKASM_BODY", "IMPORT",
|
||||
"INCLUDE", "PRAGMA", "DEFINE", "DEFINE_CONTINUE", "UNDEF", "IFDEF", "IFNDEF",
|
||||
"IFIF", "ELIF", "IFELSE", "ENDIF", "NUMBER", "NUMFLOAT", "BINFLOAT",
|
||||
"DECFLOAT", "HEXFLOAT", "NUMINT", "BININTEGER", "DECINTEGER", "HEXINTEGER",
|
||||
"NAME", "STRING", "CHAR", "WS", "COMMENT_LINE", "COMMENT_BLOCK", "ASM_BYTE",
|
||||
"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_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_MULTI_NAME", "ASM_NAME", "ASM_WS", "ASM_COMMENT_LINE", "ASM_COMMENT_BLOCK",
|
||||
"IMPORT_SYSTEMFILE", "IMPORT_LOCALFILE", "IMPORT_WS", "IMPORT_COMMENT_LINE",
|
||||
"IMPORT_COMMENT_BLOCK", "EMULATOR"
|
||||
"IMPORT_COMMENT_BLOCK"
|
||||
};
|
||||
}
|
||||
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
||||
@ -320,7 +320,7 @@ public class KickCParser extends Parser {
|
||||
setState(103);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
@ -1257,7 +1257,7 @@ public class KickCParser extends Parser {
|
||||
setState(222);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
expr(0);
|
||||
@ -1411,7 +1411,7 @@ public class KickCParser extends Parser {
|
||||
setState(234);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
expr(0);
|
||||
@ -1778,7 +1778,7 @@ public class KickCParser extends Parser {
|
||||
setState(262);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
expr(0);
|
||||
@ -1930,7 +1930,7 @@ public class KickCParser extends Parser {
|
||||
setState(284);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
match(CURLY_END);
|
||||
}
|
||||
@ -2314,7 +2314,7 @@ public class KickCParser extends Parser {
|
||||
setState(328);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
parameterListDecl();
|
||||
@ -2391,7 +2391,7 @@ public class KickCParser extends Parser {
|
||||
setState(337);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
stmtSeq();
|
||||
@ -3716,7 +3716,7 @@ public class KickCParser extends Parser {
|
||||
setState(492);
|
||||
_errHandler.sync(this);
|
||||
_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) {
|
||||
@ -4082,7 +4082,7 @@ public class KickCParser extends Parser {
|
||||
setState(499);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
stmtSeq();
|
||||
@ -4254,7 +4254,7 @@ public class KickCParser extends Parser {
|
||||
setState(562);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
commaExpr(0);
|
||||
@ -4394,7 +4394,7 @@ public class KickCParser extends Parser {
|
||||
setState(588);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
stmtSeq();
|
||||
@ -4461,7 +4461,7 @@ public class KickCParser extends Parser {
|
||||
setState(596);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
stmtSeq();
|
||||
@ -4579,7 +4579,7 @@ public class KickCParser extends Parser {
|
||||
setState(603);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
commaExpr(0);
|
||||
@ -4595,7 +4595,7 @@ public class KickCParser extends Parser {
|
||||
setState(612);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
declType();
|
||||
@ -4706,7 +4706,7 @@ public class KickCParser extends Parser {
|
||||
setState(623);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
declVariables();
|
||||
@ -5917,7 +5917,7 @@ public class KickCParser extends Parser {
|
||||
setState(751);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
parameterList();
|
||||
@ -6461,7 +6461,7 @@ public class KickCParser extends Parser {
|
||||
setState(811);
|
||||
_errHandler.sync(this);
|
||||
_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);
|
||||
@ -7222,7 +7222,7 @@ public class KickCParser extends Parser {
|
||||
_prevctx = _localctx;
|
||||
setState(868);
|
||||
_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);
|
||||
}
|
||||
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"+
|
||||
"\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"+
|
||||
"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"+
|
||||
"\22\23\3\2\37$\3\2\u0087\u008a\3\2\u0085\u0086\3\2\u008b\u008c\3\2\u0087"+
|
||||
"\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"+
|
||||
"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\22\23\3\2\37$\3\2\u0088\u008b\3\2\u0086\u0087\3\2\u008c\u008d\3\2\u0088"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
@ -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"+
|
||||
"\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\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{|\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"+
|
||||
@ -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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
@ -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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
@ -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"+
|
||||
"\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"+
|
||||
"\2\u0112\u0110\3\2\2\2\u0113\u0114\7P\2\2\u0114\u0115\7u\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\u0112\u0110\3\2\2\2\u0113\u0114\7Q\2\2\u0114\u0115\7v\2\2\u0115!\3"+
|
||||
"\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$"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\7u\2\2\u012a\u0129\3\2\2\2\u012a\u012b\3\2\2\2\u012b\u012c\3\2\2\2\u012c"+
|
||||
"R\2\2\u0126\u0127\7v\2\2\u0127\'\3\2\2\2\u0128\u012a\7R\2\2\u0129\u012b"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
@ -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"+
|
||||
"\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"+
|
||||
"\2\2\u0165\u0163\3\2\2\2\u0166\u0167\7u\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"+
|
||||
"\2\2\u016a\u0169\3\2\2\2\u016b\65\3\2\2\2\u016c\u016d\7b\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"+
|
||||
"\u0172\7\f\2\2\u0172\u0174\7l\2\2\u0173\u0171\3\2\2\2\u0174\u0177\3\2"+
|
||||
"\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"+
|
||||
"\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\7m\2\2\u0171"+
|
||||
"\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"+
|
||||
"\u0175\3\2\2\2\u0178\u01bd\7\t\2\2\u0179\u017a\7b\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"+
|
||||
"\7\t\2\2\u017f\u0180\7b\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"+
|
||||
"\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"+
|
||||
"\u018e\3\2\2\2\u018e\u018f\7\b\2\2\u018f\u0190\7v\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"+
|
||||
"\u0195\7\b\2\2\u0195\u0196\7v\2\2\u0196\u01bd\7\t\2\2\u0197\u0198\7b\2"+
|
||||
"\2\u0198\u0199\7/\2\2\u0199\u019a\3\2\2\2\u019a\u019b\7\b\2\2\u019b\u019c"+
|
||||
"\7u\2\2\u019c\u01bd\7\t\2\2\u019d\u019e\7b\2\2\u019e\u019f\7\60\2\2\u019f"+
|
||||
"\u01a0\3\2\2\2\u01a0\u01a1\7\b\2\2\u01a1\u01a2\7u\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"+
|
||||
"\u01a7\7\b\2\2\u01a7\u01a8\7u\2\2\u01a8\u01bd\7\t\2\2\u01a9\u01aa\7b\2"+
|
||||
"\2\u01aa\u01ab\7A\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"+
|
||||
"\u01b2\3\2\2\2\u01b2\u01b3\7\b\2\2\u01b3\u01b8\7u\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"+
|
||||
"\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\7m\2\2\u017e\u01bd"+
|
||||
"\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\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"+
|
||||
"\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\7w\2\2\u0190\u01bd\7\t"+
|
||||
"\2\2\u0191\u0192\7c\2\2\u0192\u0193\7.\2\2\u0193\u0194\3\2\2\2\u0194\u0195"+
|
||||
"\7\b\2\2\u0195\u0196\7w\2\2\u0196\u01bd\7\t\2\2\u0197\u0198\7c\2\2\u0198"+
|
||||
"\u0199\7\60\2\2\u0199\u019a\3\2\2\2\u019a\u019b\7\b\2\2\u019b\u019c\7"+
|
||||
"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\7v\2\2\u01a2\u01bd\7\t"+
|
||||
"\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\7v\2\2\u01a8\u01bd\7\t\2\2\u01a9\u01aa\7c\2"+
|
||||
"\2\u01aa\u01ab\7B\2\2\u01ab\u01ac\3\2\2\2\u01ac\u01ad\7\b\2\2\u01ad\u01ae"+
|
||||
"\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\7v\2\2\u01b4\u01b5\7\f"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\2\u01bf\u01c0\7\65\2\2\u01c0\u01c1\7\b\2\2\u01c1\u01c2\7l\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"+
|
||||
"\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\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\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"+
|
||||
"\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"+
|
||||
"\u01ea\78\2\2\u01d1\u01ea\7>\2\2\u01d2\u01ea\7?\2\2\u01d3\u01ea\7\63\2"+
|
||||
"\2\u01d4\u01ea\7\64\2\2\u01d5\u01ea\7\66\2\2\u01d6\u01ea\7@\2\2\u01d7"+
|
||||
"\u01db\79\2\2\u01d8\u01d9\7\b\2\2\u01d9\u01da\7u\2\2\u01da\u01dc\7\t\2"+
|
||||
"\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\7m\2\2\u01ce\u01ea\7\t\2\2\u01cf\u01ea\78\2\2\u01d0"+
|
||||
"\u01ea\79\2\2\u01d1\u01ea\7?\2\2\u01d2\u01ea\7@\2\2\u01d3\u01ea\7\64\2"+
|
||||
"\2\u01d4\u01ea\7\65\2\2\u01d5\u01ea\7\67\2\2\u01d6\u01ea\7A\2\2\u01d7"+
|
||||
"\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"+
|
||||
"\7*\2\2\u01de\u01df\7\b\2\2\u01df\u01e4\7l\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"+
|
||||
"\7*\2\2\u01de\u01df\7\b\2\2\u01df\u01e4\7m\2\2\u01e0\u01e1\7\f\2\2\u01e1"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
@ -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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\2\2\u0217\u0218\5<\37\2\u0218\u0219\7F\2\2\u0219\u021a\7\b\2\2\u021a"+
|
||||
"\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\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"+
|
||||
"\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"+
|
||||
"\u0225\7H\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"+
|
||||
"\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\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"+
|
||||
"\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"+
|
||||
"\3\2\2\2\u0236\u0245\7\n\2\2\u0237\u0238\7K\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"+
|
||||
"\3\2\2\2\u0236\u0245\7\n\2\2\u0237\u0238\7L\2\2\u0238\u0245\7\n\2\2\u0239"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
@ -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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
@ -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"+
|
||||
"\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"+
|
||||
"\2\2\u02b4\u02b5\7\5\2\2\u02b5\u02c0\3\2\2\2\u02b6\u02c0\7u\2\2\u02b7"+
|
||||
"\u02c0\7l\2\2\u02b8\u02ba\7v\2\2\u02b9\u02b8\3\2\2\2\u02ba\u02bb\3\2\2"+
|
||||
"\2\2\u02b4\u02b5\7\5\2\2\u02b5\u02c0\3\2\2\2\u02b6\u02c0\7v\2\2\u02b7"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
@ -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"+
|
||||
"\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"+
|
||||
"\f!\2\2\u02e9\u02ea\7\20\2\2\u02ea\u02fc\7u\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"+
|
||||
"\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\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"+
|
||||
"\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"+
|
||||
@ -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"+
|
||||
"\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"+
|
||||
"\3\2\2\2\u0308\u030a\7U\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"\u0329\7u\2\2\u031d\u031e\7X\2\2\u031e\u0329\7v\2\2\u031f\u0320\7Y\2\2"+
|
||||
"\u0320\u0329\5H%\2\u0321\u0322\7Z\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"+
|
||||
"O\3\2\2\2\u0319\u031a\7W\2\2\u031a\u0329\7w\2\2\u031b\u031c\7X\2\2\u031c"+
|
||||
"\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\7[\2\2\u0322\u0329\5H%\2\u0323\u0326\7"+
|
||||
"+\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"+
|
||||
"\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"+
|
||||
"\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"+
|
||||
"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"+
|
||||
"\2\2\u0338\u033a\7~\2\2\u0339\u0335\3\2\2\2\u0339\u0337\3\2\2\2\u033a"+
|
||||
"W\3\2\2\2\u033b\u033d\7|\2\2\u033c\u033e\5\\/\2\u033d\u033c\3\2\2\2\u033d"+
|
||||
"\u033e\3\2\2\2\u033eY\3\2\2\2\u033f\u0340\7{\2\2\u0340\u0345\5^\60\2\u0341"+
|
||||
"\u0342\7\177\2\2\u0342\u0344\5^\60\2\u0343\u0341\3\2\2\2\u0344\u0347\3"+
|
||||
"\2\2\2\u0345\u0343\3\2\2\2\u0345\u0346\3\2\2\2\u0346[\3\2\2\2\u0347\u0345"+
|
||||
"\3\2\2\2\u0348\u0360\5^\60\2\u0349\u034a\7}\2\2\u034a\u0360\5^\60\2\u034b"+
|
||||
"\u034c\5^\60\2\u034c\u034d\7\177\2\2\u034d\u034e\7\u009b\2\2\u034e\u0360"+
|
||||
"\3\2\2\2\u034f\u0350\7\u0080\2\2\u0350\u0351\5^\60\2\u0351\u0352\7\u0081"+
|
||||
"\2\2\u0352\u0353\7\177\2\2\u0353\u0354\7\u009b\2\2\u0354\u0360\3\2\2\2"+
|
||||
"\u0355\u0356\7\u0080\2\2\u0356\u0357\5^\60\2\u0357\u0358\7\177\2\2\u0358"+
|
||||
"\u0359\7\u009b\2\2\u0359\u035a\7\u0081\2\2\u035a\u0360\3\2\2\2\u035b\u035c"+
|
||||
"\7\u0080\2\2\u035c\u035d\5^\60\2\u035d\u035e\7\u0081\2\2\u035e\u0360\3"+
|
||||
"\2\2\2\u035f\u0348\3\2\2\2\u035f\u0349\3\2\2\2\u035f\u034b\3\2\2\2\u035f"+
|
||||
"\u034f\3\2\2\2\u035f\u0355\3\2\2\2\u035f\u035b\3\2\2\2\u0360]\3\2\2\2"+
|
||||
"\u0361\u0362\b\60\1\2\u0362\u0363\7\u0082\2\2\u0363\u0364\5^\60\2\u0364"+
|
||||
"\u0365\7\u0083\2\2\u0365\u0370\3\2\2\2\u0366\u0367\t\t\2\2\u0367\u0370"+
|
||||
"\5^\60\n\u0368\u0370\7\u009b\2\2\u0369\u0370\7\u0099\2\2\u036a\u036b\7"+
|
||||
"\u008d\2\2\u036b\u036c\7\u009b\2\2\u036c\u0370\7\u008e\2\2\u036d\u0370"+
|
||||
"\7\u008f\2\2\u036e\u0370\7\u0098\2\2\u036f\u0361\3\2\2\2\u036f\u0366\3"+
|
||||
"\2\2\2\u036f\u0368\3\2\2\2\u036f\u0369\3\2\2\2\u036f\u036a\3\2\2\2\u036f"+
|
||||
"\u036d\3\2\2\2\u036f\u036e\3\2\2\2\u0370\u037f\3\2\2\2\u0371\u0372\f\f"+
|
||||
"\2\2\u0372\u0373\7\u0084\2\2\u0373\u037e\5^\60\r\u0374\u0375\f\13\2\2"+
|
||||
"\u0375\u0376\t\n\2\2\u0376\u037e\5^\60\f\u0377\u0378\f\t\2\2\u0378\u0379"+
|
||||
"\t\13\2\2\u0379\u037e\5^\60\n\u037a\u037b\f\b\2\2\u037b\u037c\t\f\2\2"+
|
||||
"\u037c\u037e\5^\60\t\u037d\u0371\3\2\2\2\u037d\u0374\3\2\2\2\u037d\u0377"+
|
||||
"\3\2\2\2\u037d\u037a\3\2\2\2\u037e\u0381\3\2\2\2\u037f\u037d\3\2\2\2\u037f"+
|
||||
"\u0380\3\2\2\2\u0380_\3\2\2\2\u0381\u037f\3\2\2\2Zinv\u0087\u0090\u009a"+
|
||||
"\u00a0\u00a8\u00af\u00b8\u00bd\u00c3\u00c8\u00cd\u00d4\u00db\u00e0\u00ec"+
|
||||
"\u00ef\u00f1\u00fc\u0103\u0108\u010e\u0110\u0118\u011e\u012a\u0138\u013e"+
|
||||
"\u0144\u014a\u014f\u0153\u015c\u0163\u016a\u0175\u01b8\u01bc\u01c7\u01db"+
|
||||
"\u01e4\u01e9\u01ee\u01f5\u0202\u0207\u0213\u0221\u0234\u023d\u0244\u0249"+
|
||||
"\u024e\u0250\u0256\u025d\u0263\u0266\u026e\u0271\u0274\u027e\u028a\u0292"+
|
||||
"\u0298\u029c\u02b1\u02bb\u02bf\u02f1\u02fb\u02fd\u0305\u030a\u0314\u0326"+
|
||||
"\u0328\u032d\u0333\u0339\u033d\u0345\u035f\u036f\u037d\u037f";
|
||||
"U\3\2\2\2\u0335\u0336\7\u009c\2\2\u0336\u033a\7\177\2\2\u0337\u0338\7"+
|
||||
"\u009b\2\2\u0338\u033a\7\177\2\2\u0339\u0335\3\2\2\2\u0339\u0337\3\2\2"+
|
||||
"\2\u033aW\3\2\2\2\u033b\u033d\7}\2\2\u033c\u033e\5\\/\2\u033d\u033c\3"+
|
||||
"\2\2\2\u033d\u033e\3\2\2\2\u033eY\3\2\2\2\u033f\u0340\7|\2\2\u0340\u0345"+
|
||||
"\5^\60\2\u0341\u0342\7\u0080\2\2\u0342\u0344\5^\60\2\u0343\u0341\3\2\2"+
|
||||
"\2\u0344\u0347\3\2\2\2\u0345\u0343\3\2\2\2\u0345\u0346\3\2\2\2\u0346["+
|
||||
"\3\2\2\2\u0347\u0345\3\2\2\2\u0348\u0360\5^\60\2\u0349\u034a\7~\2\2\u034a"+
|
||||
"\u0360\5^\60\2\u034b\u034c\5^\60\2\u034c\u034d\7\u0080\2\2\u034d\u034e"+
|
||||
"\7\u009c\2\2\u034e\u0360\3\2\2\2\u034f\u0350\7\u0081\2\2\u0350\u0351\5"+
|
||||
"^\60\2\u0351\u0352\7\u0082\2\2\u0352\u0353\7\u0080\2\2\u0353\u0354\7\u009c"+
|
||||
"\2\2\u0354\u0360\3\2\2\2\u0355\u0356\7\u0081\2\2\u0356\u0357\5^\60\2\u0357"+
|
||||
"\u0358\7\u0080\2\2\u0358\u0359\7\u009c\2\2\u0359\u035a\7\u0082\2\2\u035a"+
|
||||
"\u0360\3\2\2\2\u035b\u035c\7\u0081\2\2\u035c\u035d\5^\60\2\u035d\u035e"+
|
||||
"\7\u0082\2\2\u035e\u0360\3\2\2\2\u035f\u0348\3\2\2\2\u035f\u0349\3\2\2"+
|
||||
"\2\u035f\u034b\3\2\2\2\u035f\u034f\3\2\2\2\u035f\u0355\3\2\2\2\u035f\u035b"+
|
||||
"\3\2\2\2\u0360]\3\2\2\2\u0361\u0362\b\60\1\2\u0362\u0363\7\u0083\2\2\u0363"+
|
||||
"\u0364\5^\60\2\u0364\u0365\7\u0084\2\2\u0365\u0370\3\2\2\2\u0366\u0367"+
|
||||
"\t\t\2\2\u0367\u0370\5^\60\n\u0368\u0370\7\u009c\2\2\u0369\u0370\7\u009a"+
|
||||
"\2\2\u036a\u036b\7\u008e\2\2\u036b\u036c\7\u009c\2\2\u036c\u0370\7\u008f"+
|
||||
"\2\2\u036d\u0370\7\u0090\2\2\u036e\u0370\7\u0099\2\2\u036f\u0361\3\2\2"+
|
||||
"\2\u036f\u0366\3\2\2\2\u036f\u0368\3\2\2\2\u036f\u0369\3\2\2\2\u036f\u036a"+
|
||||
"\3\2\2\2\u036f\u036d\3\2\2\2\u036f\u036e\3\2\2\2\u0370\u037f\3\2\2\2\u0371"+
|
||||
"\u0372\f\f\2\2\u0372\u0373\7\u0085\2\2\u0373\u037e\5^\60\r\u0374\u0375"+
|
||||
"\f\13\2\2\u0375\u0376\t\n\2\2\u0376\u037e\5^\60\f\u0377\u0378\f\t\2\2"+
|
||||
"\u0378\u0379\t\13\2\2\u0379\u037e\5^\60\n\u037a\u037b\f\b\2\2\u037b\u037c"+
|
||||
"\t\f\2\2\u037c\u037e\5^\60\t\u037d\u0371\3\2\2\2\u037d\u0374\3\2\2\2\u037d"+
|
||||
"\u0377\3\2\2\2\u037d\u037a\3\2\2\2\u037e\u0381\3\2\2\2\u037f\u037d\3\2"+
|
||||
"\2\2\u037f\u0380\3\2\2\2\u0380_\3\2\2\2\u0381\u037f\3\2\2\2Zinv\u0087"+
|
||||
"\u0090\u009a\u00a0\u00a8\u00af\u00b8\u00bd\u00c3\u00c8\u00cd\u00d4\u00db"+
|
||||
"\u00e0\u00ec\u00ef\u00f1\u00fc\u0103\u0108\u010e\u0110\u0118\u011e\u012a"+
|
||||
"\u0138\u013e\u0144\u014a\u014f\u0153\u015c\u0163\u016a\u0175\u01b8\u01bc"+
|
||||
"\u01c7\u01db\u01e4\u01e9\u01ee\u01f5\u0202\u0207\u0213\u0221\u0234\u023d"+
|
||||
"\u0244\u0249\u024e\u0250\u0256\u025d\u0263\u0266\u026e\u0271\u0274\u027e"+
|
||||
"\u028a\u0292\u0298\u029c\u02b1\u02bb\u02bf\u02f1\u02fb\u02fd\u0305\u030a"+
|
||||
"\u0314\u0326\u0328\u032d\u0333\u0339\u033d\u0345\u035f\u036f\u037d\u037f";
|
||||
public static final ATN _ATN =
|
||||
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
||||
static {
|
||||
|
@ -41,125 +41,125 @@ RESERVE=40
|
||||
PC=41
|
||||
TARGET=42
|
||||
LINK=43
|
||||
CPU=44
|
||||
CODESEG=45
|
||||
DATASEG=46
|
||||
ENCODING=47
|
||||
CONST=48
|
||||
EXTERN=49
|
||||
EXPORT=50
|
||||
ALIGN=51
|
||||
INLINE=52
|
||||
VOLATILE=53
|
||||
STATIC=54
|
||||
INTERRUPT=55
|
||||
REGISTER=56
|
||||
ADDRESS=57
|
||||
ADDRESS_ZEROPAGE=58
|
||||
ADDRESS_MAINMEM=59
|
||||
FORM_SSA=60
|
||||
FORM_MA=61
|
||||
INTRINSIC=62
|
||||
CALLING=63
|
||||
CALLINGCONVENTION=64
|
||||
VARMODEL=65
|
||||
IF=66
|
||||
ELSE=67
|
||||
WHILE=68
|
||||
DO=69
|
||||
FOR=70
|
||||
SWITCH=71
|
||||
RETURN=72
|
||||
BREAK=73
|
||||
CONTINUE=74
|
||||
ASM=75
|
||||
DEFAULT=76
|
||||
CASE=77
|
||||
STRUCT=78
|
||||
ENUM=79
|
||||
SIZEOF=80
|
||||
TYPEID=81
|
||||
DEFINED=82
|
||||
KICKASM=83
|
||||
RESOURCE=84
|
||||
USES=85
|
||||
CLOBBERS=86
|
||||
BYTES=87
|
||||
CYCLES=88
|
||||
LOGIC_NOT=89
|
||||
SIGNEDNESS=90
|
||||
SIMPLETYPE=91
|
||||
BOOLEAN=92
|
||||
KICKASM_BODY=93
|
||||
IMPORT=94
|
||||
INCLUDE=95
|
||||
PRAGMA=96
|
||||
DEFINE=97
|
||||
DEFINE_CONTINUE=98
|
||||
UNDEF=99
|
||||
IFDEF=100
|
||||
IFNDEF=101
|
||||
IFIF=102
|
||||
ELIF=103
|
||||
IFELSE=104
|
||||
ENDIF=105
|
||||
NUMBER=106
|
||||
NUMFLOAT=107
|
||||
BINFLOAT=108
|
||||
DECFLOAT=109
|
||||
HEXFLOAT=110
|
||||
NUMINT=111
|
||||
BININTEGER=112
|
||||
DECINTEGER=113
|
||||
HEXINTEGER=114
|
||||
NAME=115
|
||||
STRING=116
|
||||
CHAR=117
|
||||
WS=118
|
||||
COMMENT_LINE=119
|
||||
COMMENT_BLOCK=120
|
||||
ASM_BYTE=121
|
||||
ASM_MNEMONIC=122
|
||||
ASM_IMM=123
|
||||
ASM_COLON=124
|
||||
ASM_COMMA=125
|
||||
ASM_PAR_BEGIN=126
|
||||
ASM_PAR_END=127
|
||||
ASM_BRACKET_BEGIN=128
|
||||
ASM_BRACKET_END=129
|
||||
ASM_DOT=130
|
||||
ASM_SHIFT_LEFT=131
|
||||
ASM_SHIFT_RIGHT=132
|
||||
ASM_PLUS=133
|
||||
ASM_MINUS=134
|
||||
ASM_LESS_THAN=135
|
||||
ASM_GREATER_THAN=136
|
||||
ASM_MULTIPLY=137
|
||||
ASM_DIVIDE=138
|
||||
ASM_CURLY_BEGIN=139
|
||||
ASM_CURLY_END=140
|
||||
ASM_NUMBER=141
|
||||
ASM_NUMFLOAT=142
|
||||
ASM_BINFLOAT=143
|
||||
ASM_DECFLOAT=144
|
||||
ASM_HEXFLOAT=145
|
||||
ASM_NUMINT=146
|
||||
ASM_BININTEGER=147
|
||||
ASM_DECINTEGER=148
|
||||
ASM_HEXINTEGER=149
|
||||
ASM_CHAR=150
|
||||
ASM_MULTI_REL=151
|
||||
ASM_MULTI_NAME=152
|
||||
ASM_NAME=153
|
||||
ASM_WS=154
|
||||
ASM_COMMENT_LINE=155
|
||||
ASM_COMMENT_BLOCK=156
|
||||
IMPORT_SYSTEMFILE=157
|
||||
IMPORT_LOCALFILE=158
|
||||
IMPORT_WS=159
|
||||
IMPORT_COMMENT_LINE=160
|
||||
IMPORT_COMMENT_BLOCK=161
|
||||
EMULATOR=162
|
||||
EMULATOR=44
|
||||
CPU=45
|
||||
CODESEG=46
|
||||
DATASEG=47
|
||||
ENCODING=48
|
||||
CONST=49
|
||||
EXTERN=50
|
||||
EXPORT=51
|
||||
ALIGN=52
|
||||
INLINE=53
|
||||
VOLATILE=54
|
||||
STATIC=55
|
||||
INTERRUPT=56
|
||||
REGISTER=57
|
||||
ADDRESS=58
|
||||
ADDRESS_ZEROPAGE=59
|
||||
ADDRESS_MAINMEM=60
|
||||
FORM_SSA=61
|
||||
FORM_MA=62
|
||||
INTRINSIC=63
|
||||
CALLING=64
|
||||
CALLINGCONVENTION=65
|
||||
VARMODEL=66
|
||||
IF=67
|
||||
ELSE=68
|
||||
WHILE=69
|
||||
DO=70
|
||||
FOR=71
|
||||
SWITCH=72
|
||||
RETURN=73
|
||||
BREAK=74
|
||||
CONTINUE=75
|
||||
ASM=76
|
||||
DEFAULT=77
|
||||
CASE=78
|
||||
STRUCT=79
|
||||
ENUM=80
|
||||
SIZEOF=81
|
||||
TYPEID=82
|
||||
DEFINED=83
|
||||
KICKASM=84
|
||||
RESOURCE=85
|
||||
USES=86
|
||||
CLOBBERS=87
|
||||
BYTES=88
|
||||
CYCLES=89
|
||||
LOGIC_NOT=90
|
||||
SIGNEDNESS=91
|
||||
SIMPLETYPE=92
|
||||
BOOLEAN=93
|
||||
KICKASM_BODY=94
|
||||
IMPORT=95
|
||||
INCLUDE=96
|
||||
PRAGMA=97
|
||||
DEFINE=98
|
||||
DEFINE_CONTINUE=99
|
||||
UNDEF=100
|
||||
IFDEF=101
|
||||
IFNDEF=102
|
||||
IFIF=103
|
||||
ELIF=104
|
||||
IFELSE=105
|
||||
ENDIF=106
|
||||
NUMBER=107
|
||||
NUMFLOAT=108
|
||||
BINFLOAT=109
|
||||
DECFLOAT=110
|
||||
HEXFLOAT=111
|
||||
NUMINT=112
|
||||
BININTEGER=113
|
||||
DECINTEGER=114
|
||||
HEXINTEGER=115
|
||||
NAME=116
|
||||
STRING=117
|
||||
CHAR=118
|
||||
WS=119
|
||||
COMMENT_LINE=120
|
||||
COMMENT_BLOCK=121
|
||||
ASM_BYTE=122
|
||||
ASM_MNEMONIC=123
|
||||
ASM_IMM=124
|
||||
ASM_COLON=125
|
||||
ASM_COMMA=126
|
||||
ASM_PAR_BEGIN=127
|
||||
ASM_PAR_END=128
|
||||
ASM_BRACKET_BEGIN=129
|
||||
ASM_BRACKET_END=130
|
||||
ASM_DOT=131
|
||||
ASM_SHIFT_LEFT=132
|
||||
ASM_SHIFT_RIGHT=133
|
||||
ASM_PLUS=134
|
||||
ASM_MINUS=135
|
||||
ASM_LESS_THAN=136
|
||||
ASM_GREATER_THAN=137
|
||||
ASM_MULTIPLY=138
|
||||
ASM_DIVIDE=139
|
||||
ASM_CURLY_BEGIN=140
|
||||
ASM_CURLY_END=141
|
||||
ASM_NUMBER=142
|
||||
ASM_NUMFLOAT=143
|
||||
ASM_BINFLOAT=144
|
||||
ASM_DECFLOAT=145
|
||||
ASM_HEXFLOAT=146
|
||||
ASM_NUMINT=147
|
||||
ASM_BININTEGER=148
|
||||
ASM_DECINTEGER=149
|
||||
ASM_HEXINTEGER=150
|
||||
ASM_CHAR=151
|
||||
ASM_MULTI_REL=152
|
||||
ASM_MULTI_NAME=153
|
||||
ASM_NAME=154
|
||||
ASM_WS=155
|
||||
ASM_COMMENT_LINE=156
|
||||
ASM_COMMENT_BLOCK=157
|
||||
IMPORT_SYSTEMFILE=158
|
||||
IMPORT_LOCALFILE=159
|
||||
IMPORT_WS=160
|
||||
IMPORT_COMMENT_LINE=161
|
||||
IMPORT_COMMENT_BLOCK=162
|
||||
';'=8
|
||||
'..'=11
|
||||
'...'=12
|
||||
@ -184,61 +184,62 @@ EMULATOR=162
|
||||
'pc'=41
|
||||
'target'=42
|
||||
'link'=43
|
||||
'cpu'=44
|
||||
'code_seg'=45
|
||||
'data_seg'=46
|
||||
'encoding'=47
|
||||
'const'=48
|
||||
'extern'=49
|
||||
'export'=50
|
||||
'align'=51
|
||||
'inline'=52
|
||||
'volatile'=53
|
||||
'static'=54
|
||||
'interrupt'=55
|
||||
'register'=56
|
||||
'__address'=57
|
||||
'__zp'=58
|
||||
'__mem'=59
|
||||
'__ssa'=60
|
||||
'__ma'=61
|
||||
'__intrinsic'=62
|
||||
'calling'=63
|
||||
'var_model'=65
|
||||
'if'=66
|
||||
'else'=67
|
||||
'while'=68
|
||||
'do'=69
|
||||
'for'=70
|
||||
'switch'=71
|
||||
'return'=72
|
||||
'break'=73
|
||||
'continue'=74
|
||||
'asm'=75
|
||||
'default'=76
|
||||
'case'=77
|
||||
'struct'=78
|
||||
'enum'=79
|
||||
'sizeof'=80
|
||||
'typeid'=81
|
||||
'defined'=82
|
||||
'kickasm'=83
|
||||
'resource'=84
|
||||
'uses'=85
|
||||
'clobbers'=86
|
||||
'bytes'=87
|
||||
'cycles'=88
|
||||
'!'=89
|
||||
'#import'=94
|
||||
'#include'=95
|
||||
'#pragma'=96
|
||||
'#define'=97
|
||||
'#undef'=99
|
||||
'#ifdef'=100
|
||||
'#ifndef'=101
|
||||
'#if'=102
|
||||
'#elif'=103
|
||||
'#else'=104
|
||||
'#endif'=105
|
||||
'.byte'=121
|
||||
'#'=123
|
||||
'emulator'=44
|
||||
'cpu'=45
|
||||
'code_seg'=46
|
||||
'data_seg'=47
|
||||
'encoding'=48
|
||||
'const'=49
|
||||
'extern'=50
|
||||
'export'=51
|
||||
'align'=52
|
||||
'inline'=53
|
||||
'volatile'=54
|
||||
'static'=55
|
||||
'interrupt'=56
|
||||
'register'=57
|
||||
'__address'=58
|
||||
'__zp'=59
|
||||
'__mem'=60
|
||||
'__ssa'=61
|
||||
'__ma'=62
|
||||
'__intrinsic'=63
|
||||
'calling'=64
|
||||
'var_model'=66
|
||||
'if'=67
|
||||
'else'=68
|
||||
'while'=69
|
||||
'do'=70
|
||||
'for'=71
|
||||
'switch'=72
|
||||
'return'=73
|
||||
'break'=74
|
||||
'continue'=75
|
||||
'asm'=76
|
||||
'default'=77
|
||||
'case'=78
|
||||
'struct'=79
|
||||
'enum'=80
|
||||
'sizeof'=81
|
||||
'typeid'=82
|
||||
'defined'=83
|
||||
'kickasm'=84
|
||||
'resource'=85
|
||||
'uses'=86
|
||||
'clobbers'=87
|
||||
'bytes'=88
|
||||
'cycles'=89
|
||||
'!'=90
|
||||
'#import'=95
|
||||
'#include'=96
|
||||
'#pragma'=97
|
||||
'#define'=98
|
||||
'#undef'=100
|
||||
'#ifdef'=101
|
||||
'#ifndef'=102
|
||||
'#if'=103
|
||||
'#elif'=104
|
||||
'#else'=105
|
||||
'#endif'=106
|
||||
'.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 emulator("xplus4")
|
||||
|
||||
#include <plus4.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
char * const SCREEN = 0x0c00;
|
||||
char * const COLORRAM = 0x0800;
|
||||
|
||||
char * const BGCOLOR = 0xff19;
|
||||
char * const BORDERCOLOR = 0xff15;
|
||||
char * const RASTER = 0xff1d;
|
||||
|
||||
// Colors to fade up/down when visiting a char multiple times
|
||||
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() {
|
||||
memset(SCREEN, 0xa0, 1000);
|
||||
memset(COLORRAM, 0, 1000);
|
||||
memset(COUNT, 0, 1000);
|
||||
*BORDERCOLOR = 0;
|
||||
*BGCOLOR = 0;
|
||||
memset(DEFAULT_SCREEN, 0xa0, 1000);
|
||||
memset(DEFAULT_COLORRAM, 0, 1000);
|
||||
memset(VISITS, 0, 1000);
|
||||
TED->BG_COLOR = 0;
|
||||
TED->BORDER_COLOR = 0;
|
||||
char x=20, y=12;
|
||||
while(1) {
|
||||
unsigned int offset = (unsigned int)y*40+x;
|
||||
char cnt = ++*(COUNT+offset);
|
||||
*(COLORRAM+offset) = FADE[cnt&0xf];
|
||||
char cnt = ++*(VISITS+offset);
|
||||
*(DEFAULT_COLORRAM+offset) = FADE[cnt&0xf];
|
||||
char rnd = >rand();
|
||||
if(rnd & 0x80) {
|
||||
if(rnd& 0x40) {
|
||||
@ -44,6 +41,7 @@ void main() {
|
||||
if(y==0xff) y=0;
|
||||
}
|
||||
}
|
||||
while(*RASTER!=0xff) {}
|
||||
while(TED->RASTER_LO!=0xff) {}
|
||||
}
|
||||
|
||||
}
|
@ -9,11 +9,15 @@
|
||||
.segment Code
|
||||
|
||||
|
||||
.label SCREEN = $c00
|
||||
.label COLORRAM = $800
|
||||
.label BGCOLOR = $ff19
|
||||
.label BORDERCOLOR = $ff15
|
||||
.label RASTER = $ff1d
|
||||
.const OFFSET_STRUCT_MOS7360_TED_BG_COLOR = $15
|
||||
.const OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR = $19
|
||||
.const OFFSET_STRUCT_MOS7360_TED_RASTER_LO = $1d
|
||||
// The TED chip controlling video and sound on the Plus/4 and Commodore 16
|
||||
.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
|
||||
.label rand_state = 3
|
||||
__bbegin:
|
||||
@ -29,32 +33,32 @@ main: {
|
||||
.label y = 2
|
||||
.label __29 = 7
|
||||
.label __30 = 5
|
||||
// memset(SCREEN, 0xa0, 1000)
|
||||
// memset(DEFAULT_SCREEN, 0xa0, 1000)
|
||||
ldx #$a0
|
||||
lda #<SCREEN
|
||||
lda #<DEFAULT_SCREEN
|
||||
sta.z memset.str
|
||||
lda #>SCREEN
|
||||
lda #>DEFAULT_SCREEN
|
||||
sta.z memset.str+1
|
||||
jsr memset
|
||||
// memset(COLORRAM, 0, 1000)
|
||||
// memset(DEFAULT_COLORRAM, 0, 1000)
|
||||
ldx #0
|
||||
lda #<COLORRAM
|
||||
lda #<DEFAULT_COLORRAM
|
||||
sta.z memset.str
|
||||
lda #>COLORRAM
|
||||
lda #>DEFAULT_COLORRAM
|
||||
sta.z memset.str+1
|
||||
jsr memset
|
||||
// memset(COUNT, 0, 1000)
|
||||
// memset(VISITS, 0, 1000)
|
||||
ldx #0
|
||||
lda #<COUNT
|
||||
lda #<VISITS
|
||||
sta.z memset.str
|
||||
lda #>COUNT
|
||||
lda #>VISITS
|
||||
sta.z memset.str+1
|
||||
jsr memset
|
||||
// *BORDERCOLOR = 0
|
||||
// TED->BG_COLOR = 0
|
||||
lda #0
|
||||
sta BORDERCOLOR
|
||||
// *BGCOLOR = 0
|
||||
sta BGCOLOR
|
||||
sta TED+OFFSET_STRUCT_MOS7360_TED_BG_COLOR
|
||||
// TED->BORDER_COLOR = 0
|
||||
sta TED+OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR
|
||||
lda #<1
|
||||
sta.z rand_state
|
||||
lda #>1
|
||||
@ -97,43 +101,43 @@ main: {
|
||||
bcc !+
|
||||
inc.z offset+1
|
||||
!:
|
||||
// COUNT+offset
|
||||
// VISITS+offset
|
||||
lda.z offset
|
||||
clc
|
||||
adc #<COUNT
|
||||
adc #<VISITS
|
||||
sta.z __5
|
||||
lda.z offset+1
|
||||
adc #>COUNT
|
||||
adc #>VISITS
|
||||
sta.z __5+1
|
||||
// cnt = ++*(COUNT+offset)
|
||||
// cnt = ++*(VISITS+offset)
|
||||
ldy #0
|
||||
lda (__5),y
|
||||
clc
|
||||
adc #1
|
||||
sta (__5),y
|
||||
// COUNT+offset
|
||||
// VISITS+offset
|
||||
lda.z offset
|
||||
clc
|
||||
adc #<COUNT
|
||||
adc #<VISITS
|
||||
sta.z __6
|
||||
lda.z offset+1
|
||||
adc #>COUNT
|
||||
adc #>VISITS
|
||||
sta.z __6+1
|
||||
// cnt = ++*(COUNT+offset)
|
||||
// cnt = ++*(VISITS+offset)
|
||||
lda (__6),y
|
||||
tay
|
||||
// COLORRAM+offset
|
||||
// DEFAULT_COLORRAM+offset
|
||||
clc
|
||||
lda.z __8
|
||||
adc #<COLORRAM
|
||||
adc #<DEFAULT_COLORRAM
|
||||
sta.z __8
|
||||
lda.z __8+1
|
||||
adc #>COLORRAM
|
||||
adc #>DEFAULT_COLORRAM
|
||||
sta.z __8+1
|
||||
// cnt&0xf
|
||||
tya
|
||||
and #$f
|
||||
// *(COLORRAM+offset) = FADE[cnt&0xf]
|
||||
// *(DEFAULT_COLORRAM+offset) = FADE[cnt&0xf]
|
||||
tay
|
||||
lda FADE,y
|
||||
ldy #0
|
||||
@ -163,9 +167,9 @@ main: {
|
||||
lda #0
|
||||
sta.z y
|
||||
__b6:
|
||||
// while(*RASTER!=0xff)
|
||||
// while(TED->RASTER_LO!=0xff)
|
||||
lda #$ff
|
||||
cmp RASTER
|
||||
cmp TED+OFFSET_STRUCT_MOS7360_TED_RASTER_LO
|
||||
bne __b6
|
||||
jmp __b2
|
||||
__b4:
|
||||
@ -295,5 +299,7 @@ memset: {
|
||||
jmp __b2
|
||||
}
|
||||
.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
|
||||
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
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main::@11
|
||||
[10] *((const nomodify byte*) BORDERCOLOR) ← (byte) 0
|
||||
[11] *((const nomodify byte*) BGCOLOR) ← (byte) 0
|
||||
[10] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR) ← (byte) 0
|
||||
[11] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR) ← (byte) 0
|
||||
to:main::@1
|
||||
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 )
|
||||
@ -36,11 +36,11 @@ main::@2: scope:[main] from main::@1
|
||||
[15] (word~) main::$30 ← (word~) main::$29 + (word~) main::$24
|
||||
[16] (word~) main::$3 ← (word~) main::$30 << (byte) 3
|
||||
[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)
|
||||
[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)
|
||||
[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
|
||||
[24] *((byte*~) main::$8) ← *((const byte*) FADE + (byte~) main::$9)
|
||||
[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
|
||||
[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 )
|
||||
[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
|
||||
main::@4: scope:[main] from main::@7
|
||||
[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)
|
||||
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] (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
|
||||
memset::@1: scope:[memset] from memset
|
||||
[58] (byte*) memset::end#0 ← (byte*)(void*) memset::str#4 + (word) $3e8
|
||||
|
@ -1,4 +1,7 @@
|
||||
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
|
||||
@begin: scope:[] from
|
||||
@ -73,7 +76,7 @@ rand::@return: scope:[rand] from rand
|
||||
(void()) main()
|
||||
main: scope:[main] from @2
|
||||
(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
|
||||
(word) memset::num#0 ← (number) $3e8
|
||||
call memset
|
||||
@ -81,7 +84,7 @@ main: scope:[main] from @2
|
||||
to:main::@14
|
||||
main::@14: scope:[main] from main
|
||||
(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
|
||||
(word) memset::num#1 ← (number) $3e8
|
||||
call memset
|
||||
@ -89,7 +92,7 @@ main::@14: scope:[main] from main
|
||||
to:main::@15
|
||||
main::@15: scope:[main] from main::@14
|
||||
(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
|
||||
(word) memset::num#2 ← (number) $3e8
|
||||
call memset
|
||||
@ -97,8 +100,8 @@ main::@15: scope:[main] from main::@14
|
||||
to:main::@16
|
||||
main::@16: scope:[main] from main::@15
|
||||
(word) rand_state#16 ← phi( main::@15/(word) rand_state#18 )
|
||||
*((const nomodify byte*) BORDERCOLOR) ← (number) 0
|
||||
*((const nomodify byte*) BGCOLOR) ← (number) 0
|
||||
*((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR) ← (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::y#0 ← (byte) $c
|
||||
to:main::@1
|
||||
@ -117,11 +120,11 @@ main::@2: scope:[main] from main::@1
|
||||
(number~) main::$3 ← (word~) main::$24 * (number) $28
|
||||
(number~) main::$4 ← (number~) main::$3 + (byte) main::x#5
|
||||
(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::$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::$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
|
||||
*((byte*~) main::$8) ← *((const byte*) FADE + (number~) main::$9)
|
||||
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 )
|
||||
(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 )
|
||||
(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
|
||||
to:main::@1
|
||||
main::@return: scope:[main] from main::@1
|
||||
@ -242,17 +245,50 @@ SYMBOL TABLE SSA
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BGCOLOR = (byte*)(number) $ff19
|
||||
(const nomodify byte*) BORDERCOLOR = (byte*)(number) $ff15
|
||||
(const nomodify byte*) COLORRAM = (byte*)(number) $800
|
||||
(const byte*) COUNT[(number) $3e8] = { fill( $3e8, 0) }
|
||||
(const nomodify byte*) DEFAULT_COLORRAM = (byte*)(number) $800
|
||||
(const nomodify byte*) DEFAULT_SCREEN = (byte*)(number) $c00
|
||||
(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::DECIMAL = (number) $a
|
||||
(const byte) RADIX::HEXADECIMAL = (number) $10
|
||||
(const byte) RADIX::OCTAL = (number) 8
|
||||
(const nomodify byte*) RASTER = (byte*)(number) $ff1d
|
||||
(const nomodify byte*) SCREEN = (byte*)(number) $c00
|
||||
(const nomodify struct MOS7360_TED*) TED = (struct MOS7360_TED*)(number) $ff00
|
||||
(const byte*) VISITS[(number) $3e8] = { fill( $3e8, 0) }
|
||||
(void()) main()
|
||||
(word~) main::$10
|
||||
(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) 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) 0 in *((const nomodify byte*) BORDERCOLOR) ← (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_BG_COLOR) ← (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) 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
|
||||
@ -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) 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) $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
|
||||
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#4
|
||||
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 (byte) memset::c#2 ← (unumber)(number) 0
|
||||
Inlining cast (word) memset::num#2 ← (unumber)(number) $3e8
|
||||
Inlining cast *((const nomodify byte*) BORDERCOLOR) ← (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_BG_COLOR) ← (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#4 ← (unumber)(number) $18
|
||||
Inlining cast (byte) main::x#3 ← (unumber)(number) 0
|
||||
Inlining cast (byte) main::x#4 ← (unumber)(number) $27
|
||||
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*) 65305
|
||||
Simplifying constant pointer cast (byte*) 65301
|
||||
Simplifying constant pointer cast (byte*) 65309
|
||||
Simplifying constant pointer cast (byte*) 3072
|
||||
Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast 7
|
||||
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::$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::$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
|
||||
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 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 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 word) memset::num#2 = $3e8
|
||||
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#4
|
||||
Inlining constant with var siblings (const word) rand_state#0
|
||||
Constant inlined memset::str#2 = (void*)(const byte*) COUNT
|
||||
Constant inlined memset::str#1 = (void*)(const nomodify byte*) COLORRAM
|
||||
Constant inlined memset::str#0 = (void*)(const nomodify byte*) SCREEN
|
||||
Constant inlined memset::str#2 = (void*)(const byte*) VISITS
|
||||
Constant inlined memset::str#1 = (void*)(const nomodify byte*) DEFAULT_COLORRAM
|
||||
Constant inlined memset::str#0 = (void*)(const nomodify byte*) DEFAULT_SCREEN
|
||||
Constant inlined memset::num#2 = (word) $3e8
|
||||
Constant inlined main::x#3 = (byte) 0
|
||||
Constant inlined memset::num#1 = (word) $3e8
|
||||
@ -776,8 +810,8 @@ main::@11: scope:[main] from main::@10
|
||||
[9] call memset
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main::@11
|
||||
[10] *((const nomodify byte*) BORDERCOLOR) ← (byte) 0
|
||||
[11] *((const nomodify byte*) BGCOLOR) ← (byte) 0
|
||||
[10] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR) ← (byte) 0
|
||||
[11] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR) ← (byte) 0
|
||||
to:main::@1
|
||||
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 )
|
||||
@ -790,11 +824,11 @@ main::@2: scope:[main] from main::@1
|
||||
[15] (word~) main::$30 ← (word~) main::$29 + (word~) main::$24
|
||||
[16] (word~) main::$3 ← (word~) main::$30 << (byte) 3
|
||||
[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)
|
||||
[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)
|
||||
[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
|
||||
[24] *((byte*~) main::$8) ← *((const byte*) FADE + (byte~) main::$9)
|
||||
[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
|
||||
[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 )
|
||||
[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
|
||||
main::@4: scope:[main] from main::@7
|
||||
[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)
|
||||
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] (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
|
||||
memset::@1: scope:[memset] from memset
|
||||
[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
|
||||
(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()
|
||||
(word~) main::$10 202.0
|
||||
(byte~) main::$12 202.0
|
||||
@ -1046,11 +1111,15 @@ Target platform is custom / MOS6502X
|
||||
|
||||
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $c00
|
||||
.label COLORRAM = $800
|
||||
.label BGCOLOR = $ff19
|
||||
.label BORDERCOLOR = $ff15
|
||||
.label RASTER = $ff1d
|
||||
.const OFFSET_STRUCT_MOS7360_TED_BG_COLOR = $15
|
||||
.const OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR = $19
|
||||
.const OFFSET_STRUCT_MOS7360_TED_RASTER_LO = $1d
|
||||
// The TED chip controlling video and sound on the Plus/4 and Commodore 16
|
||||
.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
|
||||
.label rand_state = $27
|
||||
// The random state variable
|
||||
@ -1099,10 +1168,10 @@ main: {
|
||||
// [57] phi (byte) memset::c#5 = (byte) $a0 [phi:main->memset#0] -- vbuz1=vbuc1
|
||||
lda #$a0
|
||||
sta.z memset.c
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) SCREEN [phi:main->memset#1] -- pvoz1=pvoc1
|
||||
lda #<SCREEN
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) DEFAULT_SCREEN [phi:main->memset#1] -- pvoz1=pvoc1
|
||||
lda #<DEFAULT_SCREEN
|
||||
sta.z memset.str
|
||||
lda #>SCREEN
|
||||
lda #>DEFAULT_SCREEN
|
||||
sta.z memset.str+1
|
||||
jsr memset
|
||||
// [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
|
||||
lda #0
|
||||
sta.z memset.c
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) COLORRAM [phi:main::@10->memset#1] -- pvoz1=pvoc1
|
||||
lda #<COLORRAM
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) DEFAULT_COLORRAM [phi:main::@10->memset#1] -- pvoz1=pvoc1
|
||||
lda #<DEFAULT_COLORRAM
|
||||
sta.z memset.str
|
||||
lda #>COLORRAM
|
||||
lda #>DEFAULT_COLORRAM
|
||||
sta.z memset.str+1
|
||||
jsr memset
|
||||
// [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
|
||||
lda #0
|
||||
sta.z memset.c
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const byte*) COUNT [phi:main::@11->memset#1] -- pvoz1=pvoc1
|
||||
lda #<COUNT
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const byte*) VISITS [phi:main::@11->memset#1] -- pvoz1=pvoc1
|
||||
lda #<VISITS
|
||||
sta.z memset.str
|
||||
lda #>COUNT
|
||||
lda #>VISITS
|
||||
sta.z memset.str+1
|
||||
jsr memset
|
||||
jmp __b12
|
||||
// main::@12
|
||||
__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
|
||||
sta BORDERCOLOR
|
||||
// [11] *((const nomodify byte*) BGCOLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||
sta TED+OFFSET_STRUCT_MOS7360_TED_BG_COLOR
|
||||
// [11] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||
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]
|
||||
__b1_from___b12:
|
||||
// [12] phi (word) rand_state#11 = (word) 1 [phi:main::@12->main::@1#0] -- vwuz1=vwuc1
|
||||
@ -1208,13 +1277,13 @@ main: {
|
||||
lda #0
|
||||
adc.z __3+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
|
||||
clc
|
||||
adc #<COUNT
|
||||
adc #<VISITS
|
||||
sta.z __5
|
||||
lda.z offset+1
|
||||
adc #>COUNT
|
||||
adc #>VISITS
|
||||
sta.z __5+1
|
||||
// [19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5) -- _deref_pbuz1=_inc__deref_pbuz1
|
||||
ldy #0
|
||||
@ -1223,25 +1292,25 @@ main: {
|
||||
adc #1
|
||||
ldy #0
|
||||
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
|
||||
clc
|
||||
adc #<COUNT
|
||||
adc #<VISITS
|
||||
sta.z __6
|
||||
lda.z offset+1
|
||||
adc #>COUNT
|
||||
adc #>VISITS
|
||||
sta.z __6+1
|
||||
// [21] (byte) main::cnt#0 ← *((byte*~) main::$6) -- vbuz1=_deref_pbuz2
|
||||
ldy #0
|
||||
lda (__6),y
|
||||
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
|
||||
clc
|
||||
adc #<COLORRAM
|
||||
adc #<DEFAULT_COLORRAM
|
||||
sta.z __8
|
||||
lda.z offset+1
|
||||
adc #>COLORRAM
|
||||
adc #>DEFAULT_COLORRAM
|
||||
sta.z __8+1
|
||||
// [23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f -- vbuz1=vbuz2_band_vbuc1
|
||||
lda #$f
|
||||
@ -1321,9 +1390,9 @@ main: {
|
||||
jmp __b6
|
||||
// main::@6
|
||||
__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
|
||||
cmp RASTER
|
||||
cmp TED+OFFSET_STRUCT_MOS7360_TED_RASTER_LO
|
||||
bne __b6_from___b6
|
||||
// [12] phi from main::@6 to main::@1 [phi:main::@6->main::@1]
|
||||
__b1_from___b6:
|
||||
@ -1527,12 +1596,14 @@ memset: {
|
||||
}
|
||||
// File 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
|
||||
COUNT: .fill $3e8, 0
|
||||
// The number of times each character has been visited
|
||||
VISITS: .fill $3e8, 0
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [10] *((const nomodify byte*) BORDERCOLOR) ← (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 [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] *((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
|
||||
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 ]
|
||||
@ -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 [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 [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
|
||||
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 ]
|
||||
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 [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 ]
|
||||
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 [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 [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 [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
|
||||
@ -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 [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 ]
|
||||
Statement [10] *((const nomodify byte*) BORDERCOLOR) ← (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 [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] *((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 [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 [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 [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 [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 [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 [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 [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 [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
|
||||
@ -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 [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 [MOS7360_TED]
|
||||
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 ]
|
||||
@ -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 [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 [MOS7360_TED] 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 ]
|
||||
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
|
||||
.label SCREEN = $c00
|
||||
.label COLORRAM = $800
|
||||
.label BGCOLOR = $ff19
|
||||
.label BORDERCOLOR = $ff15
|
||||
.label RASTER = $ff1d
|
||||
.const OFFSET_STRUCT_MOS7360_TED_BG_COLOR = $15
|
||||
.const OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR = $19
|
||||
.const OFFSET_STRUCT_MOS7360_TED_RASTER_LO = $1d
|
||||
// The TED chip controlling video and sound on the Plus/4 and Commodore 16
|
||||
.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
|
||||
.label rand_state = 3
|
||||
// @begin
|
||||
@ -1722,10 +1799,10 @@ main: {
|
||||
memset_from_main:
|
||||
// [57] phi (byte) memset::c#5 = (byte) $a0 [phi:main->memset#0] -- vbuxx=vbuc1
|
||||
ldx #$a0
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) SCREEN [phi:main->memset#1] -- pvoz1=pvoc1
|
||||
lda #<SCREEN
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) DEFAULT_SCREEN [phi:main->memset#1] -- pvoz1=pvoc1
|
||||
lda #<DEFAULT_SCREEN
|
||||
sta.z memset.str
|
||||
lda #>SCREEN
|
||||
lda #>DEFAULT_SCREEN
|
||||
sta.z memset.str+1
|
||||
jsr memset
|
||||
// [6] phi from main to main::@10 [phi:main->main::@10]
|
||||
@ -1738,10 +1815,10 @@ main: {
|
||||
memset_from___b10:
|
||||
// [57] phi (byte) memset::c#5 = (byte) 0 [phi:main::@10->memset#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) COLORRAM [phi:main::@10->memset#1] -- pvoz1=pvoc1
|
||||
lda #<COLORRAM
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) DEFAULT_COLORRAM [phi:main::@10->memset#1] -- pvoz1=pvoc1
|
||||
lda #<DEFAULT_COLORRAM
|
||||
sta.z memset.str
|
||||
lda #>COLORRAM
|
||||
lda #>DEFAULT_COLORRAM
|
||||
sta.z memset.str+1
|
||||
jsr memset
|
||||
// [8] phi from main::@10 to main::@11 [phi:main::@10->main::@11]
|
||||
@ -1754,21 +1831,21 @@ main: {
|
||||
memset_from___b11:
|
||||
// [57] phi (byte) memset::c#5 = (byte) 0 [phi:main::@11->memset#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const byte*) COUNT [phi:main::@11->memset#1] -- pvoz1=pvoc1
|
||||
lda #<COUNT
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const byte*) VISITS [phi:main::@11->memset#1] -- pvoz1=pvoc1
|
||||
lda #<VISITS
|
||||
sta.z memset.str
|
||||
lda #>COUNT
|
||||
lda #>VISITS
|
||||
sta.z memset.str+1
|
||||
jsr memset
|
||||
jmp __b12
|
||||
// main::@12
|
||||
__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
|
||||
sta BORDERCOLOR
|
||||
// [11] *((const nomodify byte*) BGCOLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||
sta TED+OFFSET_STRUCT_MOS7360_TED_BG_COLOR
|
||||
// [11] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||
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]
|
||||
__b1_from___b12:
|
||||
// [12] phi (word) rand_state#11 = (word) 1 [phi:main::@12->main::@1#0] -- vwuz1=vwuc1
|
||||
@ -1824,13 +1901,13 @@ main: {
|
||||
bcc !+
|
||||
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
|
||||
clc
|
||||
adc #<COUNT
|
||||
adc #<VISITS
|
||||
sta.z __5
|
||||
lda.z offset+1
|
||||
adc #>COUNT
|
||||
adc #>VISITS
|
||||
sta.z __5+1
|
||||
// [19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5) -- _deref_pbuz1=_inc__deref_pbuz1
|
||||
ldy #0
|
||||
@ -1839,25 +1916,25 @@ main: {
|
||||
adc #1
|
||||
ldy #0
|
||||
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
|
||||
clc
|
||||
adc #<COUNT
|
||||
adc #<VISITS
|
||||
sta.z __6
|
||||
lda.z offset+1
|
||||
adc #>COUNT
|
||||
adc #>VISITS
|
||||
sta.z __6+1
|
||||
// [21] (byte) main::cnt#0 ← *((byte*~) main::$6) -- vbuyy=_deref_pbuz1
|
||||
ldy #0
|
||||
lda (__6),y
|
||||
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
|
||||
lda.z __8
|
||||
adc #<COLORRAM
|
||||
adc #<DEFAULT_COLORRAM
|
||||
sta.z __8
|
||||
lda.z __8+1
|
||||
adc #>COLORRAM
|
||||
adc #>DEFAULT_COLORRAM
|
||||
sta.z __8+1
|
||||
// [23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f -- vbuaa=vbuyy_band_vbuc1
|
||||
tya
|
||||
@ -1923,9 +2000,9 @@ main: {
|
||||
jmp __b6
|
||||
// main::@6
|
||||
__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
|
||||
cmp RASTER
|
||||
cmp TED+OFFSET_STRUCT_MOS7360_TED_RASTER_LO
|
||||
bne __b6_from___b6
|
||||
// [12] phi from main::@6 to main::@1 [phi:main::@6->main::@1]
|
||||
__b1_from___b6:
|
||||
@ -2117,8 +2194,10 @@ memset: {
|
||||
}
|
||||
// File 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
|
||||
COUNT: .fill $3e8, 0
|
||||
// The number of times each character has been visited
|
||||
VISITS: .fill $3e8, 0
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp __b1
|
||||
@ -2219,17 +2298,50 @@ FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BGCOLOR = (byte*) 65305
|
||||
(const nomodify byte*) BORDERCOLOR = (byte*) 65301
|
||||
(const nomodify byte*) COLORRAM = (byte*) 2048
|
||||
(const byte*) COUNT[(number) $3e8] = { fill( $3e8, 0) }
|
||||
(const nomodify byte*) DEFAULT_COLORRAM = (byte*) 2048
|
||||
(const nomodify byte*) DEFAULT_SCREEN = (byte*) 3072
|
||||
(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::DECIMAL = (number) $a
|
||||
(const byte) RADIX::HEXADECIMAL = (number) $10
|
||||
(const byte) RADIX::OCTAL = (number) 8
|
||||
(const nomodify byte*) RASTER = (byte*) 65309
|
||||
(const nomodify byte*) SCREEN = (byte*) 3072
|
||||
(const nomodify struct MOS7360_TED*) TED = (struct MOS7360_TED*) 65280
|
||||
(const byte*) VISITS[(number) $3e8] = { fill( $3e8, 0) }
|
||||
(void()) main()
|
||||
(word~) main::$10 zp[2]:13 202.0
|
||||
(byte~) main::$12 reg byte a 202.0
|
||||
@ -2344,11 +2456,15 @@ Score: 6721
|
||||
|
||||
|
||||
// Global Constants & labels
|
||||
.label SCREEN = $c00
|
||||
.label COLORRAM = $800
|
||||
.label BGCOLOR = $ff19
|
||||
.label BORDERCOLOR = $ff15
|
||||
.label RASTER = $ff1d
|
||||
.const OFFSET_STRUCT_MOS7360_TED_BG_COLOR = $15
|
||||
.const OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR = $19
|
||||
.const OFFSET_STRUCT_MOS7360_TED_RASTER_LO = $1d
|
||||
// The TED chip controlling video and sound on the Plus/4 and Commodore 16
|
||||
.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
|
||||
.label rand_state = 3
|
||||
// @begin
|
||||
@ -2372,51 +2488,51 @@ main: {
|
||||
.label y = 2
|
||||
.label __29 = 7
|
||||
.label __30 = 5
|
||||
// memset(SCREEN, 0xa0, 1000)
|
||||
// memset(DEFAULT_SCREEN, 0xa0, 1000)
|
||||
// [5] call memset
|
||||
// [57] phi from main to memset [phi:main->memset]
|
||||
// [57] phi (byte) memset::c#5 = (byte) $a0 [phi:main->memset#0] -- vbuxx=vbuc1
|
||||
ldx #$a0
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) SCREEN [phi:main->memset#1] -- pvoz1=pvoc1
|
||||
lda #<SCREEN
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) DEFAULT_SCREEN [phi:main->memset#1] -- pvoz1=pvoc1
|
||||
lda #<DEFAULT_SCREEN
|
||||
sta.z memset.str
|
||||
lda #>SCREEN
|
||||
lda #>DEFAULT_SCREEN
|
||||
sta.z memset.str+1
|
||||
jsr memset
|
||||
// [6] phi from main to main::@10 [phi:main->main::@10]
|
||||
// main::@10
|
||||
// memset(COLORRAM, 0, 1000)
|
||||
// memset(DEFAULT_COLORRAM, 0, 1000)
|
||||
// [7] call 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
|
||||
ldx #0
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) COLORRAM [phi:main::@10->memset#1] -- pvoz1=pvoc1
|
||||
lda #<COLORRAM
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const nomodify byte*) DEFAULT_COLORRAM [phi:main::@10->memset#1] -- pvoz1=pvoc1
|
||||
lda #<DEFAULT_COLORRAM
|
||||
sta.z memset.str
|
||||
lda #>COLORRAM
|
||||
lda #>DEFAULT_COLORRAM
|
||||
sta.z memset.str+1
|
||||
jsr memset
|
||||
// [8] phi from main::@10 to main::@11 [phi:main::@10->main::@11]
|
||||
// main::@11
|
||||
// memset(COUNT, 0, 1000)
|
||||
// memset(VISITS, 0, 1000)
|
||||
// [9] call 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
|
||||
ldx #0
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const byte*) COUNT [phi:main::@11->memset#1] -- pvoz1=pvoc1
|
||||
lda #<COUNT
|
||||
// [57] phi (void*) memset::str#4 = (void*)(const byte*) VISITS [phi:main::@11->memset#1] -- pvoz1=pvoc1
|
||||
lda #<VISITS
|
||||
sta.z memset.str
|
||||
lda #>COUNT
|
||||
lda #>VISITS
|
||||
sta.z memset.str+1
|
||||
jsr memset
|
||||
// main::@12
|
||||
// *BORDERCOLOR = 0
|
||||
// [10] *((const nomodify byte*) BORDERCOLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||
// TED->BG_COLOR = 0
|
||||
// [10] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BG_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||
lda #0
|
||||
sta BORDERCOLOR
|
||||
// *BGCOLOR = 0
|
||||
// [11] *((const nomodify byte*) BGCOLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||
sta BGCOLOR
|
||||
sta TED+OFFSET_STRUCT_MOS7360_TED_BG_COLOR
|
||||
// TED->BORDER_COLOR = 0
|
||||
// [11] *((byte*)(const nomodify struct MOS7360_TED*) TED+(const byte) OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||
sta TED+OFFSET_STRUCT_MOS7360_TED_BORDER_COLOR
|
||||
// [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
|
||||
lda #<1
|
||||
@ -2470,49 +2586,49 @@ main: {
|
||||
bcc !+
|
||||
inc.z offset+1
|
||||
!:
|
||||
// COUNT+offset
|
||||
// [18] (byte*~) main::$5 ← (const byte*) COUNT + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
||||
// VISITS+offset
|
||||
// [18] (byte*~) main::$5 ← (const byte*) VISITS + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
||||
lda.z offset
|
||||
clc
|
||||
adc #<COUNT
|
||||
adc #<VISITS
|
||||
sta.z __5
|
||||
lda.z offset+1
|
||||
adc #>COUNT
|
||||
adc #>VISITS
|
||||
sta.z __5+1
|
||||
// cnt = ++*(COUNT+offset)
|
||||
// cnt = ++*(VISITS+offset)
|
||||
// [19] *((byte*~) main::$5) ← ++ *((byte*~) main::$5) -- _deref_pbuz1=_inc__deref_pbuz1
|
||||
ldy #0
|
||||
lda (__5),y
|
||||
clc
|
||||
adc #1
|
||||
sta (__5),y
|
||||
// COUNT+offset
|
||||
// [20] (byte*~) main::$6 ← (const byte*) COUNT + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
||||
// VISITS+offset
|
||||
// [20] (byte*~) main::$6 ← (const byte*) VISITS + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz2
|
||||
lda.z offset
|
||||
clc
|
||||
adc #<COUNT
|
||||
adc #<VISITS
|
||||
sta.z __6
|
||||
lda.z offset+1
|
||||
adc #>COUNT
|
||||
adc #>VISITS
|
||||
sta.z __6+1
|
||||
// cnt = ++*(COUNT+offset)
|
||||
// cnt = ++*(VISITS+offset)
|
||||
// [21] (byte) main::cnt#0 ← *((byte*~) main::$6) -- vbuyy=_deref_pbuz1
|
||||
lda (__6),y
|
||||
tay
|
||||
// COLORRAM+offset
|
||||
// [22] (byte*~) main::$8 ← (const nomodify byte*) COLORRAM + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz1
|
||||
// DEFAULT_COLORRAM+offset
|
||||
// [22] (byte*~) main::$8 ← (const nomodify byte*) DEFAULT_COLORRAM + (word) main::offset#0 -- pbuz1=pbuc1_plus_vwuz1
|
||||
clc
|
||||
lda.z __8
|
||||
adc #<COLORRAM
|
||||
adc #<DEFAULT_COLORRAM
|
||||
sta.z __8
|
||||
lda.z __8+1
|
||||
adc #>COLORRAM
|
||||
adc #>DEFAULT_COLORRAM
|
||||
sta.z __8+1
|
||||
// cnt&0xf
|
||||
// [23] (byte~) main::$9 ← (byte) main::cnt#0 & (byte) $f -- vbuaa=vbuyy_band_vbuc1
|
||||
tya
|
||||
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
|
||||
tay
|
||||
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
|
||||
// main::@6
|
||||
__b6:
|
||||
// while(*RASTER!=0xff)
|
||||
// [37] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto main::@6 -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
// while(TED->RASTER_LO!=0xff)
|
||||
// [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
|
||||
cmp RASTER
|
||||
cmp TED+OFFSET_STRUCT_MOS7360_TED_RASTER_LO
|
||||
bne __b6
|
||||
// [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
|
||||
@ -2753,6 +2869,8 @@ memset: {
|
||||
}
|
||||
// File 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
|
||||
COUNT: .fill $3e8, 0
|
||||
// The number of times each character has been visited
|
||||
VISITS: .fill $3e8, 0
|
||||
|
||||
|
@ -1,17 +1,50 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BGCOLOR = (byte*) 65305
|
||||
(const nomodify byte*) BORDERCOLOR = (byte*) 65301
|
||||
(const nomodify byte*) COLORRAM = (byte*) 2048
|
||||
(const byte*) COUNT[(number) $3e8] = { fill( $3e8, 0) }
|
||||
(const nomodify byte*) DEFAULT_COLORRAM = (byte*) 2048
|
||||
(const nomodify byte*) DEFAULT_SCREEN = (byte*) 3072
|
||||
(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::DECIMAL = (number) $a
|
||||
(const byte) RADIX::HEXADECIMAL = (number) $10
|
||||
(const byte) RADIX::OCTAL = (number) 8
|
||||
(const nomodify byte*) RASTER = (byte*) 65309
|
||||
(const nomodify byte*) SCREEN = (byte*) 3072
|
||||
(const nomodify struct MOS7360_TED*) TED = (struct MOS7360_TED*) 65280
|
||||
(const byte*) VISITS[(number) $3e8] = { fill( $3e8, 0) }
|
||||
(void()) main()
|
||||
(word~) main::$10 zp[2]:13 202.0
|
||||
(byte~) main::$12 reg byte a 202.0
|
||||
|
Loading…
x
Reference in New Issue
Block a user