Blame | Last modification | View Log | Download
# file opened: multi_line_init2.asm1 0000 ; variation on more complex internal states of sjasmplus (reading multi-line from macro definition/etc)2 00003 0000 OUTPUT "multi_line_init2.bin"4 00005 0000 31 29 20 73 DB "1) single-line classic initializers test:\n"5 0004 69 6E 67 6C5 0008 65 2D 6C 695 000C 6E 65 20 635 0010 6C 61 73 735 0014 69 63 20 695 0018 6E 69 74 695 001C 61 6C 69 7A5 0020 65 72 73 205 0024 74 65 73 745 0028 3A 0A6 002A7 002A STRUCT S_sub18 002A ~ b1 byte $119 002A ~ t1 text 5, { "txt", '_' }10 002A ~ w1 word $332211 002A ENDS12 002A13 002A STRUCT S_main14 002A ~ b2 byte $4415 002A ~ s1 S_sub116 002A ENDS17 002A18 002A ; 2x S_main instance by using dot-repeater -> no label assigned to these19 002A 61 62 63 64 > S_main { 'a', { 'b', { "cdefg" }, "\nh" } }19 002E 65 66 67 68 >19 0032 0A >19 0033 61 62 63 64 > S_main { 'a', { 'b', { "cdefg" }, "\nh" } }19 0037 65 66 67 68 >19 003B 0A >20 003C21 003C ; 2x S_main instance by using DUP+EDUP22 003C dupRep:23 003C DUP 224 003C 69 6A 6B 6C > S_main { 'i', { 'j', { "klmno" }, "\np" } }24 0040 6D 6E 6F 70 >24 0044 0A >24 0045 69 6A 6B 6C > S_main { 'i', { 'j', { "klmno" }, "\np" } }24 0049 6D 6E 6F 70 >24 004D 0A >25 004E EDUP26 004E27 004E ; emit structure inside macro28 004E macDef MACRO b1?, t1?29 004E ~ .macSub S_main { '<', { b1?, { t1? }, "\n>" } }30 004E ENDM31 004E32 004E ; emit 2x structure inside macro with dot repeater (structs have own macro-specific label)33 004E > macDef 'B', < 'C', 'D', "EF" >33 004E 3C 42 43 44 >.macSub S_main { '<', { 'B', { 'C', 'D', "EF" }, "\n>" } }33 0052 45 46 5F 3E >33 0056 0A >33 0057 > macDef 'B', < 'C', 'D', "EF" >33 0057 3C 42 43 44 >.macSub S_main { '<', { 'B', { 'C', 'D', "EF" }, "\n>" } }33 005B 45 46 5F 3E >33 005F 0A >34 006035 0060 DUP 236 0060 > macDef 'b', < 'c', 'd', "ef" >36 0060 3C 62 63 64 >.macSub S_main { '<', { 'b', { 'c', 'd', "ef" }, "\n>" } }36 0064 65 66 5F 3E >36 0068 0A >36 0069 > macDef 'b', < 'c', 'd', "ef" >36 0069 3C 62 63 64 >.macSub S_main { '<', { 'b', { 'c', 'd', "ef" }, "\n>" } }36 006D 65 66 5F 3E >36 0071 0A >37 0072 EDUP38 007239 0072 0A 32 29 20 DB "\n2) same code, but multi-line variants:\n"39 0076 73 61 6D 6539 007A 20 63 6F 6439 007E 65 2C 20 6239 0082 75 74 20 6D39 0086 75 6C 74 6939 008A 2D 6C 69 6E39 008E 65 20 76 6139 0092 72 69 61 6E39 0096 74 73 3A 0A40 009A 28 64 6F 74 DB "(dot-repeater variants are NOT supported)\n"40 009E 2D 72 65 7040 00A2 65 61 74 6540 00A6 72 20 76 6140 00AA 72 69 61 6E40 00AE 74 73 20 6140 00B2 72 65 20 4E40 00B6 4F 54 20 7340 00BA 75 70 70 6F40 00BE 72 74 65 6440 00C2 29 0A41 00C442 00C4 ; 2x S_main instance by using DUP+EDUP43 00C4 mlDupRep:44 00C4 DUP 245 00C4 > S_main {46 00C4 69 > 'i',47 00C5 > {48 00C5 6A > 'j',49 00C6 6B 6C 6D 6E > { "klmno" },49 00CA 6F >50 00CB 70 0A > "\np"51 00CD > }52 00CD > }45 00CD > S_main {46 00CD 69 > 'i',47 00CE > {48 00CE 6A > 'j',49 00CF 6B 6C 6D 6E > { "klmno" },49 00D3 6F >50 00D4 70 0A > "\np"51 00D6 > }52 00D6 > }53 00D6 EDUP54 00D655 00D6 ; emit structure inside macro56 00D6 macDef2 MACRO b1?, t1?57 00D6 ~ .macSub S_main {58 00D6 ~ '<',59 00D6 ~ {60 00D6 ~ b1?,61 00D6 ~ { t1? },62 00D6 ~ "\n>"63 00D6 ~ }64 00D6 ~ }65 00D6 ENDM66 00D667 00D6 ; emit 2x structure inside macro with dot repeater (structs have own macro-specific label)68 00D6 > macDef2 'B', < 'C', 'D', "EF" >68 00D6 >.macSub S_main {68 00D6 3C > '<',68 00D7 > {68 00D7 42 > 'B',68 00D8 43 44 45 46 > { 'C', 'D', "EF" },68 00DC 5F >68 00DD 3E 0A > "\n>"68 00DF > }68 00DF >}68 00DF > macDef2 'B', < 'C', 'D', "EF" >68 00DF >.macSub S_main {68 00DF 3C > '<',68 00E0 > {68 00E0 42 > 'B',68 00E1 43 44 45 46 > { 'C', 'D', "EF" },68 00E5 5F >68 00E6 3E 0A > "\n>"68 00E8 > }68 00E8 >}69 00E870 00E8 DUP 271 00E8 > macDef2 'b', < 'c', 'd', "ef" >71 00E8 >.macSub S_main {71 00E8 3C > '<',71 00E9 > {71 00E9 62 > 'b',71 00EA 63 64 65 66 > { 'c', 'd', "ef" },71 00EE 5F >71 00EF 3E 0A > "\n>"71 00F1 > }71 00F1 >}71 00F1 > macDef2 'b', < 'c', 'd', "ef" >71 00F1 >.macSub S_main {71 00F1 3C > '<',71 00F2 > {71 00F2 62 > 'b',71 00F3 63 64 65 66 > { 'c', 'd', "ef" },71 00F7 5F >71 00F8 3E 0A > "\n>"71 00FA > }71 00FA >}72 00FA EDUP73 00FA74 00FA ; 2x S_main instance by using dot-repeater -> this one is *NOT* supported75 00FA ; it should NOT read more lines outside of the macro scope, and report missing "}"multi_line_init2.asm(76): error: closing } missing76 00FA > S_main {multi_line_init2.asm(76): error: closing } missing76 00FA > S_main {77 00FA 41 ld b,c77 00FB 0A ld a,(bc) ; this should be processed as instructions => 41 0A ("A\n")78 00FC79 00FC ; try dot-repeater inside macro definition as ultimate complexity thing80 00FC ; (ignoring IF type of complexity and recursion, because I want to finish it today)81 00FC ; this is still *NOT* supported and the second instance will miss the "}"82 00FC macDef3 MACRO b1?, t1?83 00FC ~ .2 S_main {84 00FC ~ '{',85 00FC ~ {86 00FC ~ b1?,87 00FC ~ { t1? },88 00FC ~ "\n}"89 00FC ~ }90 00FC ~ }91 00FC ENDM92 00FC93 00FC ; this should fail due to dot-repeater used for multi-line initializer94 00FC macDef3 '1', "2345"94 00FC > S_main {94 00FC 7B > '{',94 00FD > {94 00FD 31 > '1',94 00FE 32 33 34 35 > { "2345" },94 0102 5F >94 0103 7D 0A > "\n}"94 0105 > }94 0105 >}multi_line_init2.asm(90): error: closing } missingmulti_line_init2.asm(94): ^ emitted from here94 0105 > S_main {95 0105 42 ld b,d95 0106 0A ld a,(bc) ; this should be processed as instructions => 42 0A ("B\n")96 010797 0107 OUTEND98 0107# file closed: multi_line_init2.asmValue Label------ - -----------------------------------------------------------0x004E X 0>macSub0x004E X 0>macSub.b20x004F X 0>macSub.s10x004F X 0>macSub.s1.b10x0050 X 0>macSub.s1.t10x0055 X 0>macSub.s1.w10x0057 X 1>macSub0x0057 X 1>macSub.b20x0058 X 1>macSub.s10x0058 X 1>macSub.s1.b10x0059 X 1>macSub.s1.t10x005E X 1>macSub.s1.w10x0060 X 2>macSub0x0060 X 2>macSub.b20x0061 X 2>macSub.s10x0061 X 2>macSub.s1.b10x0062 X 2>macSub.s1.t10x0067 X 2>macSub.s1.w10x0069 X 3>macSub0x0069 X 3>macSub.b20x006A X 3>macSub.s10x006A X 3>macSub.s1.b10x006B X 3>macSub.s1.t10x0070 X 3>macSub.s1.w10x00D6 X 4>macSub0x00D6 X 4>macSub.b20x00D7 X 4>macSub.s10x00D7 X 4>macSub.s1.b10x00D8 X 4>macSub.s1.t10x00DD X 4>macSub.s1.w10x00DF X 5>macSub0x00DF X 5>macSub.b20x00E0 X 5>macSub.s10x00E0 X 5>macSub.s1.b10x00E1 X 5>macSub.s1.t10x00E6 X 5>macSub.s1.w10x00E8 X 6>macSub0x00E8 X 6>macSub.b20x00E9 X 6>macSub.s10x00E9 X 6>macSub.s1.b10x00EA X 6>macSub.s1.t10x00EF X 6>macSub.s1.w10x00F1 X 7>macSub0x00F1 X 7>macSub.b20x00F2 X 7>macSub.s10x00F2 X 7>macSub.s1.b10x00F3 X 7>macSub.s1.t10x00F8 X 7>macSub.s1.w10x002A X dotRep0x003C X dupRep0x00FA X mlDotRep0x00C4 X mlDupRep0x0009 X S_main0x0000 X S_main.b20x0001 X S_main.s10x0001 X S_main.s1.b10x0002 X S_main.s1.t10x0007 X S_main.s1.w10x0008 X S_sub10x0000 X S_sub1.b10x0001 X S_sub1.t10x0006 X S_sub1.w1