Blame | Last modification | View Log | Download
# file opened: multi_line_initializer.asm1 0000 STRUCT S_SymbOS_icon_header2 0000 ~ type BYTE 23 0000 ~ sizex BYTE 84 0000 ~ sizey BYTE 85 0000 ENDS6 00007 0000 STRUCT S_SymbOS_exe_header8 0000 ~ codelen WORD ;Length of the code area (OS will place this area everywhere)9 0000 ~ datalen WORD ;Length of the data area (screen manager data; OS will place this area inside a 16k block of one 64K bank)10 0000 ~ tranlen WORD ;Length of the transfer area (stack, message buffer, desktop manager data; placed between #c000 and #ffff of a 64K bank)11 0000 ~ datadr:12 0000 ~ origin WORD ;Original origin of the assembler code ; POST address data area13 0000 ~ trnadr:14 0000 ~ relcount WORD ;Number of entries in the relocator table ; POST address transfer area15 0000 ~ prztab:16 0000 ~ stacksize WORD ;Length of the stack in bytes ; POST table processes or timer IDs (4*1)17 0000 ~ BLOCK 2, 0 ;*reserved* (2 bytes)18 0000 ~ bnknum BLOCK 1, 0 ;*reserved* (1 byte) ; POST 64K ram bank (1-8), where the application is located19 0000 ~ name TEXT 25 ;program name (24+1[0] chars)20 0000 ~ flags BYTE ;flags (+1=16colour icon available)21 0000 ~ icon16 WORD ;file offset of 16colour icon22 0000 ~ BLOCK 5, 0 ;*reserved* (5 bytes)23 0000 ~ memtab: ;"SymExe10" SymbOS executable file identification ; POST table reserved memory areas24 0000 ~ identifier TEXT 8, { "SymExe10" }25 0000 ~ codex WORD ;additional memory for code area (will be reserved directly behind the loaded code area)26 0000 ~ datex WORD ;additional memory for data area (see above)27 0000 ~ trnex WORD ;additional memory for transfer area (see above)28 0000 ~ BLOCK 26, 0 ;*reserviert* (26 bytes)29 0000 ~ appId:30 0000 ~ osver WORD ;required OS version (1.0)31 0000 ~ ;Application icon (small version), 8x8 pixel, SymbOS graphic format32 0000 ~ iconsm S_SymbOS_icon_header { 2, 8, 8 }33 0000 ~ icobsmdat TEXT 1634 0000 ~ ;Application icon (big version), 24x24 pixel, SymbOS graphic format35 0000 ~ iconbg S_SymbOS_icon_header { 6, 24, 24 }36 0000 ~ icobbgdat TEXT 14437 0000 ~38 0000 ENDS39 000040 0000 ASSERT 256 == S_SymbOS_exe_header41 0000 ASSERT 6 == S_SymbOS_exe_header.datadr42 0000 ASSERT 8 == S_SymbOS_exe_header.trnadr43 0000 ASSERT 10 == S_SymbOS_exe_header.prztab44 0000 ASSERT 14 == S_SymbOS_exe_header.bnknum45 000046 0000 ;additional memory areas; 8 memory areas can be registered here, each entry consists of 5 bytes47 0000 ;00 1B Ram bank number (1-8; if 0, the entry will be ignored)48 0000 ;01 1W Address49 0000 ;03 1W Length50 0000 ASSERT 48 == S_SymbOS_exe_header.memtab51 000052 0000 ;Application ID53 0000 ASSERT 88 == S_SymbOS_exe_header.appId54 000055 0000 ;Main process ID is at (S_SymbOS_exe_header.appId+1) (offset 89), but it is not easy56 0000 ;to create such label if "osver" is WORD type, that would need "union"-like feature57 0000 ;that's unlikely to happen, it's more reasonable to define osver as two bytes then.58 000059 0000 OUTPUT "multi_line_initializer.bin"60 0000 ORG #100061 100062 1000 exeHeader S_SymbOS_exe_header {63 1000 34 12 #1234 ; implicit delimiter at end (newline) (new line is next value)64 1002 45 23 #2345, ; explicit delimiter (comma) is valid only *AFTER* value65 1004 56 34 #345666 1006 11 10 #101167 1008 03 02 #0203 ; relocate_count68 100A 05 04 #0405 ; stack size69 100C 00 00 00 4D { "MyName" } ; name69 1010 79 4E 61 6D69 1014 65 00 00 0069 1018 00 00 00 0069 101C 00 00 00 0069 1020 00 00 00 0069 1024 00 00 00 0070 1028 AA AB AC #AA, #ACAB, ; flags, 16col icon offset71 102B 00 00 00 00 , ; keep default identifier71 102F 00 53 79 6D71 1033 45 78 65 3171 1037 3072 1038 02 01 04 03 #0102, #0304, #0506 ; code/data/transfer extra memory72 103C 06 0573 103E 00 00 00 00 #0708 ; OS ver73 1042 00 00 00...73 1058 08 0774 105A75 105A ; small icon76 105A 02 , ; type + size sub-structure (default values)77 105B78 105B 08 08 {79 105D80 105D #31,#F5,#23,#3F,#56,#6E,#47,#6E,#8F,#EA,#FF,#AE,#74,#E2,#77,#EE81 105D82 105D 31 F5 23 3F }82 1061 56 6E 47 6E82 1065 8F EA FF AE82 1069 74 E2 77 EE83 106D84 106D ; big icon (144 bytes of data)85 106D 06 18 18 {}, {86 1070 #00,#00,#D0,#B0,#60,#C0,#00,#10,#60,#D0,#B0,#60,#00,#31,#F6,#FD,87 1070 #FB,#F4,#00,#31,#FF,#FF,#FF,#FC,#00,#73,#FF,#FF,#FF,#FA,#00,#73,88 1070 #FF,#FF,#FF,#FA,#00,#F7,#F0,#F0,#F7,#B6,#00,#F7,#FF,#FF,#FF,#F6,89 1070 #10,#FE,#F0,#F0,#FE,#3E,#10,#FF,#FF,#FF,#FE,#3E,#31,#FF,#FF,#FF,90 1070 #FD,#FE,#31,#FF,#FF,#FF,#ED,#3A,#73,#FF,#FF,#FF,#CB,#3A,#73,#FF,91 1070 #FF,#FF,#FB,#FE,#F7,#FF,#FF,#FF,#87,#32,#F7,#FF,#FF,#FF,#87,#32,92 1070 #70,#F0,#F0,#F0,#FF,#FE,#00,#21,#0F,#0F,#0E,#32,#00,#21,#0F,#0F,93 1070 #0E,#32,#00,#31,#FF,#FF,#FF,#FE,#00,#21,#0F,#0F,#0C,#32,#00,#20,#00,#00,#00,#76,#00,#10,#FF,#FF,#FF,#EC,#00,#00,#F0,#F0,#F0,#C094 1070 00 00 D0 B0 }94 1074 60 C0 00 1094 1078 60 D0 B0 6094 107C 00 31 F6 FD94 1080 FB F4 00 3194 1084 FF FF FF FC94 1088 00 73 FF FF94 108C FF FA 00 7394 1090 FF FF FF FA94 1094 00 F7 F0 F094 1098 F7 B6 00 F794 109C FF FF FF F694 10A0 10 FE F0 F094 10A4 FE 3E 10 FF94 10A8 FF FF FE 3E94 10AC 31 FF FF FF94 10B0 FD FE 31 FF94 10B4 FF FF ED 3A94 10B8 73 FF FF FF94 10BC CB 3A 73 FF94 10C0 FF FF FB FE94 10C4 F7 FF FF FF94 10C8 87 32 F7 FF94 10CC FF FF 87 3294 10D0 70 F0 F0 F094 10D4 FF FE 00 2194 10D8 0F 0F 0E 3294 10DC 00 21 0F 0F94 10E0 0E 32 00 3194 10E4 FF FF FF FE94 10E8 00 21 0F 0F94 10EC 0C 32 00 2094 10F0 00 00 00 7694 10F4 00 10 FF FF94 10F8 FF EC 00 0094 10FC F0 F0 F0 C095 110096 110097 110098 1100 ; these empty lines before final "}" are intentional99 1100100 1100 }101 1100 27 daa ; first line after multi-line struct init (make sure it gets into listing!)102 1101103 1101 test2 S_SymbOS_icon_header {104 1101 01 1,105 1102 02 03 2, 3106 1104 }107 1104108 1104 STRUCT S_test3109 1104 ~ b1 byte 'b'110 1104 icon S_SymbOS_icon_header {111 1104 4,112 1104 5, 6113 1104 ~ }114 1104 ~ b2 byte 'e'115 1104 ENDS116 1104117 1104 62 04 05 06 test3a S_test3117 1108 65118 1109119 1109 test3b S_test3 {120 1109 42 'B',121 110A 07 { 7,122 110B 08 09 8, 9 },123 110D 45 'E'124 110E }125 110E126 110E STRUCT S_test4127 110E icon S_SymbOS_icon_header {128 110E 10,129 110E 11, 12130 110E ~ }131 110E ENDS132 110E133 110E 0A 0B 0C test4a S_test4134 1111135 1111 test4b S_test4 {136 1111 0D { 13,137 1112 0E 0F 14, 15 }138 1114 }139 1114140 1114 OUTEND141 1114142 1114 test4err S_SymbOS_icon_header {multi_line_initializer.asm(143): error: closing } missingmulti_line_initializer.asm(143): error: [STRUCT] Syntax error - too many arguments?multi_line_initializer.asm(143): error: Unrecognized instruction: ,143 1114 01 08 08 1,,, ; missing }144 1117# file closed: multi_line_initializer.asmValue Label------ - -----------------------------------------------------------0x1000 X exeHeader0x1058 X exeHeader.appId0x100E X exeHeader.bnknum0x1000 X exeHeader.codelen0x1038 X exeHeader.codex0x1006 X exeHeader.datadr0x1002 X exeHeader.datalen0x103A X exeHeader.datex0x1028 X exeHeader.flags0x1070 X exeHeader.icobbgdat0x105D X exeHeader.icobsmdat0x1029 X exeHeader.icon160x106D X exeHeader.iconbg0x106E X exeHeader.iconbg.sizex0x106F X exeHeader.iconbg.sizey0x106D X exeHeader.iconbg.type0x105A X exeHeader.iconsm0x105B X exeHeader.iconsm.sizex0x105C X exeHeader.iconsm.sizey0x105A X exeHeader.iconsm.type0x1030 X exeHeader.identifier0x1030 X exeHeader.memtab0x100F X exeHeader.name0x1006 X exeHeader.origin0x1058 X exeHeader.osver0x100A X exeHeader.prztab0x1008 X exeHeader.relcount0x100A X exeHeader.stacksize0x1004 X exeHeader.tranlen0x1008 X exeHeader.trnadr0x103C X exeHeader.trnex0x0100 S_SymbOS_exe_header0x0058 S_SymbOS_exe_header.appId0x000E S_SymbOS_exe_header.bnknum0x0000 X S_SymbOS_exe_header.codelen0x0038 X S_SymbOS_exe_header.codex0x0006 S_SymbOS_exe_header.datadr0x0002 X S_SymbOS_exe_header.datalen0x003A X S_SymbOS_exe_header.datex0x0028 X S_SymbOS_exe_header.flags0x0070 X S_SymbOS_exe_header.icobbgdat0x005D X S_SymbOS_exe_header.icobsmdat0x0029 X S_SymbOS_exe_header.icon160x006D X S_SymbOS_exe_header.iconbg0x006E X S_SymbOS_exe_header.iconbg.sizex0x006F X S_SymbOS_exe_header.iconbg.sizey0x006D X S_SymbOS_exe_header.iconbg.type0x005A X S_SymbOS_exe_header.iconsm0x005B X S_SymbOS_exe_header.iconsm.sizex0x005C X S_SymbOS_exe_header.iconsm.sizey0x005A X S_SymbOS_exe_header.iconsm.type0x0030 X S_SymbOS_exe_header.identifier0x0030 S_SymbOS_exe_header.memtab0x000F X S_SymbOS_exe_header.name0x0006 X S_SymbOS_exe_header.origin0x0058 X S_SymbOS_exe_header.osver0x000A S_SymbOS_exe_header.prztab0x0008 X S_SymbOS_exe_header.relcount0x000A X S_SymbOS_exe_header.stacksize0x0004 X S_SymbOS_exe_header.tranlen0x0008 S_SymbOS_exe_header.trnadr0x003C X S_SymbOS_exe_header.trnex0x0003 X S_SymbOS_icon_header0x0001 X S_SymbOS_icon_header.sizex0x0002 X S_SymbOS_icon_header.sizey0x0000 X S_SymbOS_icon_header.type0x0005 X S_test30x0000 X S_test3.b10x0004 X S_test3.b20x0001 X S_test3.icon0x0002 X S_test3.icon.sizex0x0003 X S_test3.icon.sizey0x0001 X S_test3.icon.type0x0003 X S_test40x0000 X S_test4.icon0x0001 X S_test4.icon.sizex0x0002 X S_test4.icon.sizey0x0000 X S_test4.icon.type0x1101 X test20x1102 X test2.sizex0x1103 X test2.sizey0x1101 X test2.type0x1104 X test3a0x1104 X test3a.b10x1108 X test3a.b20x1105 X test3a.icon0x1106 X test3a.icon.sizex0x1107 X test3a.icon.sizey0x1105 X test3a.icon.type0x1109 X test3b0x1109 X test3b.b10x110D X test3b.b20x110A X test3b.icon0x110B X test3b.icon.sizex0x110C X test3b.icon.sizey0x110A X test3b.icon.type0x110E X test4a0x110E X test4a.icon0x110F X test4a.icon.sizex0x1110 X test4a.icon.sizey0x110E X test4a.icon.type0x1111 X test4b0x1111 X test4b.icon0x1112 X test4b.icon.sizex0x1113 X test4b.icon.sizey0x1111 X test4b.icon.type0x1114 X test4err0x1115 X test4err.sizex0x1116 X test4err.sizey0x1114 X test4err.type