Das Wunder

This commit is contained in:
Tristan Krause 2019-04-02 16:19:42 +02:00
parent 9414322a19
commit 4d2ea6013c
8 changed files with 360 additions and 348 deletions

Binary file not shown.

View file

@ -1,296 +1,309 @@
:100000000C9453000C947D000C947D000C947D00A6 :100000000C945F000C9489000C9489000C94890076
:100010000C947D000C947D000C947D000C947D006C :100010000C9489000C9489000C9489000C9489003C
:100020000C947D000C947D000C947D000C947D005C :100020000C9489000C9489000C9489000C9489002C
:100030000C947D000C947D000C947D000C947D004C :100030000C9489000C9489000C9489000C9489001C
:100040000C947D000C947D000C947D000C947D003C :100040000C9489000C9489000C9489000C9489000C
:100050000C9470080C947D000C949A080C947D000C :100050000C9484080C9489000C94AE080C948900CC
:100060000C947D000C947D000C947D000C947D001C :100060000C9489000C9489000C9489000C948900EC
:100070000C947D000C947D000C947D000C947D000C :100070000C9489000C9489000C9489000C948900DC
:100080000C947D000C947D000C947D00B600B900AA :100080000C9489000C9489000C948900FD000001F7
:10009000BC00A200BF00C200C500C800CB00A00089 :100090000301E900060109010C010F011201E7004B
:1000A000B300CE00E00811241FBECFEFD0E4DEBFC6 :1000A000FA00150142093F093C091A0939093609C4
:1000B000CDBF11E0A0E0B1E0E2E3F2E100E00BBF70 :1000B000330930092D0918092A094509480911246D
:1000C00002C007900D92AE32B107D9F722E0AEE23E :1000C0001FBECFEFD0E4DEBFCDBF11E0A0E0B1E0B6
:1000D000B1E001C01D92AF30B207E1F710E0C3E517 :1000D000E2E0F3E100E00BBF02C007900D92AE3208
:1000E000D0E004C02197FE010E940E09C235D1075D :1000E000B107D9F722E0AEE2B1E001C01D92AB3218
:1000F000C9F70E94C4080C9417090C940000CF9310 :1000F000B207E1F710E0CFE5D0E004C02197FE01A0
:100100009EE088E10FB6F894A895809360000FBE3A :100100000E947609CE35D107C9F70E94D8080C9411
:1001100090936000A89581E791E00E94D104C82FD8 :100110007F090C9400008AE292E00E94190160E0DD
:10012000682F86E092E00E9494018C2F90E0FC0101 :1001200087E292E00E945C016FEF87E292E00E941A
:100130003197EC30F10530F4EA5BFF4F0C940E0977 :100130007D0160E084E292E00E945C016FEF84E266
:100140000E94DF0781E791E00E94B6030FB6F894A2 :1001400092E00E947D016FEF81E292E00E947D01CA
:10015000A895809160008861809360001092600093 :100150008AE192E00E9454028FE291E00E944C03F7
:100160000FBECF9108950E94F507ECCF0E9426079D :100160008FE291E00E946C03789484B7877F84BF0C
:10017000E9CF0E943F07E6CF0E946607E3CF0E94C7 :10017000109260000FB6F894A89580916000886195
:100180007B07E0CF0E949107DDCF0E94A707DACF5F :1001800080936000109260000FBE0895CF9398E0B6
:100190000E94B807D7CF0E94C907D4CF0E940B088E :1001900088E10FB6F894A895809360000FBE909305
:1001A000D1CF8CE092E00E940F0160E089E092E004 :1001A0006000A8958FE291E00E94D504C82F682FC7
:1001B0000E9452016FEF89E092E00E94730160E0BB :1001B00084E292E00E949E018C2F90E0FC01319736
:1001C00086E092E00E9452016FEF86E092E00E948A :1001C000EC30F10530F4EA5BFF4F0C9476090E94A5
:1001D00073016FEF83E092E00E9473018CEF91E076 :1001D000E3078FE291E00E946C030FB6F894A895B4
:1001E0000E944A026FE770E081E791E00E944203BB :1001E00080916000886180936000109260000FBE73
:1001F00081E791E00E94B603789484B7877F84BF3B :1001F000CF9108950E94F907ECCF0E942A07E9CF1A
:10020000109260000FB6F894A89580916000886104 :100200000E944307E6CF0E946A07E3CF0E947F0760
:1002100080936000109260000FBE0895089584B12D :10021000E0CF0E949507DDCF0E94AB07DACF0E94A6
:10022000806B84B926988AB18C618AB980E58CBDCF :10022000BC07D7CF0E94CD07D4CF0E940F08D1CFF3
:1002300081E08DBD8BB1837E8BB95A9A5B9A5C9AB3 :10023000089584B1806B84B926988AB18C618AB99B
:1002400008958BB1837E8BB98BB160FD10C090E0B7 :1002400080E58CBD81E08DBD8BB1837E8BB95A9AE0
:10025000892B8BB98BB161FD10C090E0892B8BB9D4 :100250005B9A5C9A08958BB1837E8BB98BB160FDFC
:100260008BB162FD10C090E0892B8BB9089594E0AA :1002600010C090E0892B8BB98BB161FD10C090E07C
:10027000892B8BB98BB161FFF0CF98E0892B8BB9BB :10027000892B8BB98BB162FD10C090E0892B8BB9B3
:100280008BB162FFF0CF90E1892B8BB908956EBDE1 :10028000089594E0892B8BB98BB161FFF0CF98E092
:100290000DB407FEFDCF8EB50895FC017183608318 :10029000892B8BB98BB162FFF0CF90E1892B8BB9A1
:1002A000428308951F93CF93DF93EC01162F6A8149 :1002A00008956EBD0DB407FEFDCF8EB50895FC0117
:1002B000888199810E94210160E4888199810E944E :1002B00071836083428308951F93CF93DF93EC0192
:1002C000470160E0888199810E944701612F888100 :1002C000162F6A81888199810E942B0160E48881C0
:1002D00099810E94470167E088819981DF91CF91E0 :1002D00099810E94510160E0888199810E945101B9
:1002E0001F910C9421011F93CF93DF93EC01162FE4 :1002E000612F888199810E94510167E088819981FD
:1002F0006A81888199810E94210160E488819981C5 :1002F000DF91CF911F910C942B011F93CF93DF932C
:100300000E94470161E0888199810E944701612F25 :10030000EC01162F6A81888199810E942B0160E49B
:10031000888199810E94470167E088819981DF91F6 :10031000888199810E94510161E0888199810E94C0
:10032000CF911F910C9421011F93CF93DF93EC0188 :100320005101612F888199810E94510167E0888184
:10033000162F6A81888199810E94210160E4888159 :100330009981DF91CF911F910C942B011F93CF9343
:1003400099810E94470162E1888199810E94470159 :10034000DF93EC01162F6A81888199810E942B012D
:10035000612F888199810E94470167E08881998196 :1003500060E4888199810E94510162E188819981DC
:10036000DF91CF911F910C9421011F93CF93DF93C5 :100360000E945101612F888199810E94510167E0AB
:10037000EC01162F6A81888199810E94210160E435 :1003700088819981DF91CF911F910C942B011F935C
:10038000888199810E94470163E1888199810E9457 :10038000CF93DF93EC01162F6A81888199810E94B7
:100390004701612F888199810E94470167E0888128 :100390002B0160E4888199810E94510163E1888189
:1003A0009981DF91CF911F910C9421011F93CF93DD :1003A00099810E945101612F888199810E94510198
:1003B000DF93EC016A81888199810E94210161E4C7 :1003B00067E088819981DF91CF911F910C942B0187
:1003C000888199810E94470162E1888199810E9418 :1003C0001F93CF93DF93EC016A81888199810E940A
:1003D000470160E0888199810E944701182F67E0FA :1003D0002B0161E4888199810E94510162E1888149
:1003E000888199810E942101812FDF91CF911F91F6 :1003E00099810E94510160E0888199810E945101A8
:1003F00008951F93CF93DF93EC016A8188819981DF :1003F000182F67E0888199810E942B01812FDF915E
:100400000E94210161E4888199810E94470163E192 :10040000CF911F9108951F93CF93DF93EC016A81E1
:10041000888199810E94470160E0888199810E94CA :10041000888199810E942B0161E4888199810E94E1
:100420004701182F67E0888199810E942101812F5F :10042000510163E1888199810E94510160E08881D6
:10043000DF91CF911F910895FC0171836083428306 :1004300099810E945101182F67E0888199810E945B
:1004400008950F931F93CF93DF93EC018B016A8183 :100440002B01812FDF91CF911F910895FC017183C2
:10045000888199810E942101B8010024660F771FCD :100450006083428308950F931F93CF93DF93EC0142
:10046000001C660F771F001C672F702D88819981F3 :100460008B016A81888199810E942B01B801002447
:100470000E944701602F660F660F888199810E9454 :10047000660F771F001C660F771F001C672F702DFB
:10048000470167E088819981DF91CF911F910F919A :10048000888199810E945101602F660F660F8881D3
:100490000C94210110927C0087E880937A000895E3 :1004900099810E94510167E088819981DF91CF9114
:1004A00080917C00807E682B60937C0080917A0034 :1004A0001F910F910C942B0110927C0087E8809390
:1004B000806480937A0083EA91E00197F1F700C0AD :1004B0007A00089580917C00807E682B60937C0098
:1004C000000080917A0086FDFCCF809178009091A9 :1004C00080917A00806480937A0083EA91E00197BA
:1004D000790008950F931F93CF93DF9361E089E034 :1004D000F1F700C0000080917A0086FDFCCF80918A
:1004E00092E00E949401C1E0D0E001E010E02FEF23 :1004E00078009091790008950F931F93CF93DF9335
:1004F00084E39CE0215080409040E1F700C0000080 :1004F00061E087E292E00E949E01C1E0D0E001E06D
:10050000B8010C2E01C0660F0A94EAF789E092E068 :1005000010E02FEF84E39CE0215080409040E1F721
:100510000E9494012196C930D10549F7DF91CF910E :1005100000C00000B8010C2E01C0660F0A94EAF773
:100520001F910F9108950F931F93CF93DF9361E075 :1005200087E292E00E949E012196C930D10549F7E9
:1005300086E092E00E949401C1E0D0E001E010E08A :10053000DF91CF911F910F9108950F931F93CF9348
:100540002FEF84E39CE0215080409040E1F700C011 :10054000DF9361E084E292E00E949E01C1E0D0E08E
:100550000000B8010C2E01C0660F0A94EAF786E08D :1005500001E010E02FEF84E39CE0215080409040C8
:1005600092E00E9494012196C930D10549F7DF91AC :10056000E1F700C00000B8010C2E01C0660F0A942C
:10057000CF911F910F910895CF93DF93C0E0D0E00A :10057000EAF784E292E00E949E012196C930D105FB
:10058000BE0180E092E00E94210287E893E101979A :1005800049F7DF91CF911F910F910895CF93DF939A
:10059000F1F700C000002196C11594E0D90781F75A :10059000C0E0D0E0BE018EE192E00E942B0287E82D
:1005A0002FE78AE196E0215080409040E1F700C0BB :1005A00093E10197F1F700C000002196C11594E096
:1005B000000060E070E080E092E0DF91CF910C9469 :1005B000D90781F72FE78AE196E0215080409040EB
:1005C0002102CF93DF93C0E0D0E0BE018DEF91E038 :1005C000E1F700C0000060E070E08EE192E0DF91B2
:1005D0000E94210287E893E10197F1F700C0000033 :1005D000CF910C942B02CF93DF93C0E0D0E0BE010B
:1005E0002196C11594E0D90781F72FE78AE196E0BB :1005E0008BE192E00E942B0287E893E10197F1F7FB
:1005F000215080409040E1F700C0000060E070E0D2 :1005F00000C000002196C11594E0D90781F72FE7CC
:100600008DEF91E0DF91CF910C9421020FB6F89419 :100600008AE196E0215080409040E1F700C0000070
:10061000A8958091600088618093600010926000CE :1006100060E070E08BE192E0DF91CF910C942B02CF
:100620000FBE60E08CEF91E00E945002BC0180E0C0 :100620000FB6F894A895809160008861809360006F
:1006300092E00E94210261E08CEF91E00E94500262 :10063000109260000FBE60E08AE192E00E945A02D0
:10064000BC018DEF91E00E94210289E092E00E94BE :10064000BC018EE192E00E942B0261E08AE192E01F
:10065000F901682F89E092E00E94940183E092E022 :100650000E945A02BC018BE192E00E942B0287E2C9
:100660000E94F901682F86E092E00E949401D9CFA0 :1006600092E00E940302682F87E292E00E949E01BE
:100670000E946A020E9493020E94BC020E94E10250 :1006700081E292E00E940302682F84E292E00E94ED
:100680000E94060322E02093C00028ED2093C100C1 :100680009E01D9CF0E9474020E949D020E94C60260
:1006900026E02093C2001092C50024E12093C400FC :100690000E94EB020E94100322E02093C00028ED8C
:1006A00070930E0260930D0286519F4FFC011082E1 :1006A0002093C10026E02093C2001092C50024E1EF
:1006B00008958091C6008FE792E00197F1F700C09E :1006B0002093C40086519F4FFC01108208958091C1
:1006C00000008091C00087FDF4CF0895DC01A9519E :1006C000C6008FE792E00197F1F700C0000080912B
:1006D000BF4F3C912091C600FC01E30FF11DE9538F :1006D000C00087FDF4CF089589519F4FFC0110821F
:1006E000FF4F20832C912F5F2C932C91FC01E95319 :1006E00008959C01FC01E651FF4F90819111FDCFCF
:1006F000FF4FE081F0E0E050FF4F8081281708F4C1 :1006F000F901E851FF4F10820895DC01A951BF4F65
:1007000008951C92E0910D02F0910E0209940F934E :100700002C9131E0320F3C933091C600FC01E20F96
:100710001F93CF93DF93EC018C0108511F4FF80119 :10071000F11DE953FF4F30832C91FC01E953FF4F4A
:10072000608189E092E00E949401F8019081319605 :10072000E081F0E0E050FF4F8081281720F01C921C
:100730008081981740F0C651DF4F1882DF91CF912A :1007300081E080932E0108950F931F93CF93DF9351
:100740001F910F9108958091C00085FFFCCFF801A3 :10074000EC018C0108511F4FF801608187E292E0B3
:10075000808191E0980F9083C80FD11D898180938B :100750000E949E01F801908131968081981740F0A7
:10076000C600DF91CF911F910F91089589519F4F3E :10076000C651DF4F1882DF91CF911F910F910895ED
:10077000FC01108208959C01FC01E651FF4F90811D :100770008091C00085FFFCCFF801808191E0980F47
:100780009111FDCFF901E851FF4F10820895CF92EA :100780009083C80FD11D89818093C600DF91CF91DE
:10079000DF92EF92FF920F931F93CF93DF93EC01C1 :100790001F910F910895CF92DF92EF92FF920F93E6
:1007A000C851DF4F2881211109C0DF91CF911F91DE :1007A0001F93CF93DF93EC01C851DF4F28812111B4
:1007B0000F91FF90EF90DF90CF9008958C0188818A :1007B00009C0DF91CF911F910F91FF90EF90DF90D3
:1007C000780199EEE90EF11CF70180831882680127 :1007C000CF9008958C018881780199EEE90EF11C93
:1007D000FAEECF0ED11C81E0F6018083688189E0BA :1007D000F701808318826801FAEECF0ED11C81E008
:1007E00092E00E9494019881F7018081981778F433 :1007E000F6018083688187E292E00E949E019881F1
:1007F0009091C00095FFFCCF888191E0980F98837D :1007F000F7018081981778F49091C00095FFFCCFA5
:10080000E801C80FD11D89818093C600CECFF601C3 :10080000888191E0980F9883E801C80FD11D8981F4
:100810001082CBCFFC01E851FF4F208131E0320F35 :100810008093C600CECFF6011082CBCFFC01E85109
:100820003083FC01E20FF11D61830895FC01E85162 :10082000FF4F208131E0320F3083FC01E20FF11DD8
:10083000FF4F208131E0320F3083DC01A20FB11D68 :1008300061830895FC01E851FF4F208131E0320FC0
:1008400011966C93208131E0320F3083FC01E20F6E :100840003083DC01A20FB11D11966C93208131E041
:10085000F11D718308950F931F93CF93DF938C0144 :10085000320F3083FC01E20FF11D718308950F9375
:10086000FC01E851FF4F808191E0980F9083D801FF :100860001F93CF93DF938C01FC01E851FF4F8081F0
:10087000A80FB11D11964C939FEF940F442361F084 :1008700091E0980F9083D801A80FB11D11964C9369
:10088000DB013D91208141E0420F4083E801C20F2E :100880009FEF940F442361F0DB013D91208141E013
:10089000D11D39839150A8F7DF91CF911F910F910E :10089000420F4083E801C20FD11D39839150A8F760
:1008A0000895EF92FF920F931F93CF93DF937C01F4 :1008A000DF91CF911F910F910895EF92FF920F93D7
:1008B000EC01C851DF4F888191E0980F9883F701D0 :1008B0001F93CF93DF937C01EC01C851DF4F8881F8
:1008C000E80FF11D41835FEF540F442309F467C023 :1008C00091E0980F9883F701E80FF11D41835FEFE6
:1008D000FB0120E041E9BF013191888191E0980F4F :1008D000540F442309F467C0FB0120E041E9BF0144
:1008E00098838701080F111DD80111963C93DB01F5 :1008E0003191888191E0980F98838701080F111D3D
:1008F0008C912827822F842720FD282F30E03595E2 :1008F000D80111963C93DB018C912827822F842705
:100900002795842F822720FD282F30E035952795C5 :1009000020FD282F30E035952795842F822720FD64
:10091000842F822720FD282F30E035952795842FBE :10091000282F30E035952795842F822720FD282F1A
:10092000822720FD282F30E035952795842F8227B8 :1009200030E035952795842F822720FD282F30E051
:1009300020FD282F30E035952795942F922720FD14 :1009300035952795842F822720FD282F30E0359587
:10094000292F30E035952795942F922720FD292FC8 :100940002795942F922720FD292F30E03595279564
:1009500030E035952795842F822720FD282F269576 :10095000942F922720FD292F30E035952795842F5D
:10096000515008F0B8CF888191E0980F9883F70133 :10096000822720FD282F2695515008F0B8CF888186
:10097000E80FF11D2183F701E951FF4F808191E0DC :1009700091E0980F9883F701E80FF11D2183F701AB
:10098000980F9083D701A80FB11DA953BF4F8C9129 :10098000E951FF4F808191E0980F9083D701A80F24
:10099000DF91CF911F910F91FF90EF90089520E08C :10099000B11DA953BF4F8C91DF91CF911F910F9142
:1009A000E2CFFC01E951FF4F208131E0320F30836B :1009A000FF90EF90089520E0E2CFFC01E951FF4F66
:1009B000820F911DFC01E953FF4F80810895FC01D6 :1009B000208131E0320F3083820F911DFC01E95319
:1009C000E951FF4F208131E0320F3083DC01A20F6B :1009C000FF4F80810895FC01E951FF4F208131E004
:1009D000B11DA953BF4F2C91308141E0430F40839B :1009D000320F3083DC01A20FB11DA953BF4F2C9100
:1009E000830F911DFC01E953FF4F3081822F90E06E :1009E000308141E0430F4083830F911DFC01E953A7
:1009F000932B0895CF93DF93DC01EC01CB53DF4FB2 :1009F000FF4F3081822F90E0932B0895CF93DF93A8
:100A0000888199818230910509F467C0B0F400971C :100A0000DC01EC01CB53DF4F888199818230910565
:100A100009F440C0019759F48C91FD01E80FF11DD4 :100A100009F467C0B0F4009709F440C0019759F495
:100A2000EF57FF4F608382E090E0998388838C9139 :100A20008C91FD01E80FF11DEF57FF4F608382E0CD
:100A30008F5F8C93DF91CF9108958330910509F4F6 :100A300090E0998388838C918F5F8C93DF91CF9125
:100A4000D3C00497A1F78091C6008FE792E0019789 :100A400008958330910509F4D3C00497A1F78091EC
:100A5000F1F700C000008091C00087FDF4CFFD01D8 :100A5000C6008FE792E00197F1F700C00000809197
:100A6000EC53FF4F8081882309F435C19EEFFD01CF :100A6000C00087FDF4CFFD01EC53FF4F8081882348
:100A7000E851FF4F808121E0280F2083FD01E80F1E :100A700009F435C19EEFFD01E851FF4F808121E06F
:100A8000F11D9183198218828C918F5F8C93DF9175 :100A8000280F2083FD01E80FF11D91831982188240
:100A9000CF910895613408F420C18091C6008FE79A :100A90008C918F5F8C93DF91CF910895613408F42E
:100AA00092E00197F1F700C000008091C00087FD3F :100AA00020C18091C6008FE792E00197F1F700C066
:100AB000F4CFFD01E851FF4F808191E0980F9083C2 :100AB00000008091C00087FDF4CFFD01E851FF4F99
:100AC000FD01E80FF11D8EEF8183198218828C9150 :100AC000808191E0980F9083FD01E80FF11D8EEF7A
:100AD0008F5F8C93DF91CF9108958C91FD01E80F8A :100AD0008183198218828C918F5F8C93DF91CF91E3
:100AE000F11DEF57FF4F6083FD01EC53FF4F8081F5 :100AE00008958C91FD01E80FF11DEF57FF4F6083D2
:100AF00068276083808180FF04C0908181E9892715 :100AF000FD01EC53FF4F808168276083808180FF78
:100B00008083808190E0959587958083808180FFA8 :100B000004C0908181E989278083808190E0959558
:100B100004C0908181E989278083808190E0959548 :100B100087958083808180FF04C0908181E9892747
:100B200087958083808180FF04C0908181E9892737 :100B20008083808190E0959587958083808180FF88
:100B30008083808190E0959587958083808180FF78 :100B300004C0908181E989278083808190E0959528
:100B400004C0908181E989278083808190E0959518 :100B400087958083808180FF04C0908181E9892717
:100B500087958083808180FF04C0908181E9892707 :100B50008083808190E0959587958083808180FF58
:100B60008083808190E0959587958083808180FF48 :100B600004C0908181E989278083808190E09595F8
:100B700004C0908181E989278083808190E09595E8 :100B700087958083808180FF04C0908181E98927E7
:100B800087958083808180FF04C0908181E98927D7 :100B80008083808190E0959587958083808180FF28
:100B90008083808190E0959587958083808180FF18 :100B900004C0908181E989278083808190E09595C8
:100BA00004C0908181E989278083808190E09595B8 :100BA00087958083808180FF04C0908181E98927B7
:100BB000879580839C91FD01EF57FF4F80819817A7 :100BB0008083808190E09595879580839C91FD014D
:100BC00009F498C09C918081981708F430CF8091E7 :100BC000EF57FF4F8081981709F498C09C9180815E
:100BD000C6008FE792E00197F1F700C00000809116 :100BD000981708F430CF8091C6008FE792E0019714
:100BE000C00087FDF4CF65CF8C91FD01E80FF11DAA :100BE000F1F700C000008091C00087FDF4CF65CF11
:100BF000EF57FF4F6083FD01EC53FF4F8081682763 :100BF0008C91FD01E80FF11DEF57FF4F6083FD0160
:100C00006083808180FF04C0908181E9892780838F :100C0000EC53FF4F808168276083808180FF04C0A0
:100C1000808190E0959587958083808180FF04C0D6 :100C1000908181E989278083808190E095958795EF
:100C2000908181E989278083808190E095958795DF :100C20008083808180FF04C0908181E9892780834F
:100C30008083808180FF04C0908181E9892780833F :100C3000808190E0959587958083808180FF04C0B6
:100C4000808190E0959587958083808180FF04C0A6 :100C4000908181E989278083808190E095958795BF
:100C5000908181E989278083808190E095958795AF :100C50008083808180FF04C0908181E9892780831F
:100C60008083808180FF04C0908181E9892780830F :100C6000808190E0959587958083808180FF04C086
:100C7000808190E0959587958083808180FF04C076 :100C7000908181E989278083808190E0959587958F
:100C8000908181E989278083808190E0959587957F :100C80008083808180FF04C0908181E989278083EF
:100C90008083808180FF04C0908181E989278083DF :100C9000808190E0959587958083808180FF04C056
:100CA000808190E0959587958083808180FF04C046 :100CA000908181E989278083808190E0959587955F
:100CB000908181E989278083808190E0959587954F :100CB0008083808180FF04C0908181E989278083BF
:100CC000808384E090E0998388838C918F5F8C93FC :100CC000808190E095958795808384E090E099837A
:100CD000DF91CF9108959FEFCACEFD01EF57FF4FEF :100CD00088838C918F5F8C93DF91CF9108959FEFE4
:100CE0006083ED5BFF4F10821C9281E090E099835E :100CE000CACEFD01EF57FF4F6083ED5BFF4F1082CF
:100CF00088839DCE83E090E09983888398CECF92BD :100CF0001C9281E090E0998388839DCE83E090E010
:100D0000DF92FF920F931F93CF93DF93FC01E95182 :100D00009983888398CECF92DF92FF920F931F939F
:100D1000FF4F9C0128513F4F6901D1E9640F711DBC :100D1000CF93DF93FC01E951FF4F9C0128513F4FD6
:100D2000AEEFFA2E208131E0320F3083AC01420F5A :100D20006901D1E9640F711DAEEFFA2E208131E027
:100D3000511D9A0129533F4FD9011C91103809F4D4 :100D3000320F3083AC01420F511D9A0129533F4FAE
:100D400073C0113408F010E0C0E020E0308141E0D1 :100D4000D9011C91103809F473C0113408F010E077
:100D5000430F4083AC01430F511DDA01A953BF4F2C :100D5000C0E020E0308141E0430F4083AC01430F0D
:100D60000C91202720FD2D2730E035952795422F27 :100D6000511DDA01A953BF4F0C91202720FD2D27DB
:100D700020FF02C04D2F4227242F30E035952795C4 :100D700030E035952795422F20FF02C04D2F4227A6
:100D8000422F20FF02C04D2F422750E05595479536 :100D8000242F30E035952795422F20FF02C04D2FAC
:100D9000242F40FF02C02D2F242730E035952795C2 :100D9000422750E055954795242F40FF02C02D2F44
:100DA000422F20FF02C04D2F422750E05595479516 :100DA000242730E035952795422F20FF02C04D2F94
:100DB000242F40FF02C02D2F242730E035952795A2 :100DB000422750E055954795242F40FF02C02D2F24
:100DC000422F20FF02C04D2F422750E055954795F6 :100DC000242730E035952795422F20FF02C04D2F74
:100DD000242F40FF02C02D2F24272695C11780F114 :100DD000422750E055954795242F40FF02C02D2F04
:100DE000CF5F1C1708F0B2CF3091C600AFE7B2E07A :100DE00024272695C11780F1CF5F1C1708F0B2CFDA
:100DF0001197F1F700C000003091C00037FDF4CF2B :100DF0003091C600AFE7B2E01197F1F700C00000F4
:100E0000211112C0F601208131E0320F3083FC0144 :100E00003091C00037FDF4CF211112C0F6012081CE
:100E1000E20FF11D2FEF2183DF91CF911F910F91F1 :100E100031E0320F3083FC01E20FF11D2FEF21830F
:100E2000FF90DF90CF900895D6012C9131E0320FE2 :100E2000DF91CF911F910F91FF90DF90CF900895A8
:100E30003C93AC01420F511DDA011196FC9272CF26 :100E3000D6012C9131E0320F3C93AC01420F511D91
:100E4000AB014C0F511DDA010C93CACFCF9381E750 :100E4000DA011196FC9272CFAB014C0F511DDA0101
:100E500091E00E94BB0381E791E00E94D104C82F7A :100E50000C93CACFCF938FE291E00E9471038FE28F
:100E60006FEF81E791E00E940A046C2F81E791E027 :100E600091E00E94D504C82F6FEF8FE291E00E94BD
:100E70000E940A0481E791E0CF910C94C70381E7B7 :100E70000E046C2F8FE291E00E940E048FE291E04D
:100E800091E00E94BB0363E081E791E00E940A04C5 :100E8000CF910C94CB038FE291E00E94710363E059
:100E90004CE062E271E081E791E00E942B0449E0BE :100E90008FE291E00E940E044CE062E271E08FE28A
:100EA00069E171E081E791E00E942B044CE06DE084 :100EA00091E00E942F0449E069E171E08FE291E056
:100EB00071E081E791E00E942B046FEF81E791E000 :100EB0000E942F044CE06DE071E08FE291E00E940F
:100EC0000E940A0481E791E00C94C70381E791E056 :100EC0002F046FEF8FE291E00E940E048FE291E019
:100ED0000E94BB0381E791E00E94DF04BC01660F22 :100ED0000C94CB038FE291E00E9471038FE291E0CA
:100EE000771F680F791F81E791E00E94160481E760 :100EE0000E94E304BC01660F771F680F791F8FE231
:100EF00091E00C94C70381E791E00E94BB0381E776 :100EF00091E00E941A048FE291E00C94CB038FE200
:100F000091E00E94D104682F89E092E00E94940150 :100F000091E00E9471038FE291E00E94D504682F66
:100F10006FEF81E791E00E940A0481E791E00C9471 :100F100087E292E00E949E016FEF8FE291E00E94D3
:100F2000C70381E791E00E94BB0381E791E00E9443 :100F20000E048FE291E00C94CB038FE291E00E94DB
:100F3000D104682F86E092E00E9494016FEF81E770 :100F300071038FE291E00E94D504682F84E292E071
:100F400091E00E940A0481E791E00C94C70381E7D5 :100F40000E949E016FEF8FE291E00E940E048FE2FB
:100F500091E00E94BB0389E092E00E94F901682FB2 :100F500091E00C94CB038FE291E00E94710387E251
:100F600081E791E00E940A0481E791E00C94C703B5 :100F600092E00E940302682F8FE291E00E940E043B
:100F700081E791E00E94BB0386E092E00E94F901C4 :100F70008FE291E00C94CB038FE291E00E94710329
:100F8000682F81E791E00E940A0481E791E00C94C8 :100F800084E292E00E940302682F8FE291E00E94C7
:100F9000C70381E791E00E94BB0381E791E00E94D3 :100F90000E048FE291E00C94CB038FE291E00E946B
:100FA000DF04BC0180E092E00E9421026FEF81E744 :100FA00071038FE291E00E94E304BC018EE192E0C4
:100FB00091E00E940A0481E791E00C94C70381E765 :100FB0000E942B026FEF8FE291E00E940E048FE2FD
:100FC00091E00E94BB0381E791E00E94DF04BC0135 :100FC00091E00C94CB038FE291E00E9471038FE2D9
:100FD0008DEF91E00E9421026FEF81E791E00E9486 :100FD00091E00E94E304BC018BE192E00E942B02AD
:100FE0000A0481E791E00C94C70381E791E00E9435 :100FE0006FEF8FE291E00E940E048FE291E00C948B
:100FF000BB0381E791E00E94D104682F8CEF91E060 :100FF000CB038FE291E00E9471038FE291E00E94A7
:101000000E945002BC0181E791E00E94160481E732 :10100000D504682F8AE192E00E945A02BC018FE267
:1010100091E00C94C7038F929F92AF92BF92CF92B0 :1010100091E00E941A048FE291E00C94CB038F922E
:10102000DF92EF92FF920F931F93CF93DF9381E7AD :101020009F92AF92BF92CF92DF92EF92FF920F9377
:1010300091E00E94D104882E81E791E00E94D104C2 :101030001F93CF93DF938FE291E00E94D504882E17
:10104000982E81E791E00E94DF04EC0181E791E0B6 :101040008FE291E00E94D504982E8FE291E00E94F9
:101050000E94DF045C0181E791E00E94DF04A89E0A :10105000E304EC018FE291E00E94E3045C018FE283
:101060006001A99ED00CB89ED00C11246FEF86E0D1 :1010600091E00E94E304A89E6001A99ED00CB89E66
:1010700092E00E949401CC15DD050CF5BE0180E0E4 :10107000D00C11246FEF84E292E00E949E01CC1507
:1010800092E00E942102A895682D8CEF91E00E94C9 :10108000DD054CF5BE018EE192E00E942B02A89591
:1010900050027C01692D8CEF91E00E9450028C017E :10109000682D8AE192E00E945A027C01692D8AE162
:1010A000B70181E791E00E941604B80181E791E061 :1010A00092E00E945A028C018FE291E00E9471034B
:1010B0000E941604CA0DDB1DCC15DD05FCF26FEF96 :1010B000B7018FE291E00E941A04B8018FE291E03B
:1010C00081E791E0DF91CF911F910F91FF90EF9019 :1010C0000E941A048FE291E00E94CB03CA0DDB1D3F
:1010D000DF90CF90BF90AF909F908F900C940A04B8 :1010D000CC15DD05BCF28FE291E00E9471036FEF49
:1010E0001F920F920FB60F9211240BB60F922F93EF :1010E0008FE291E00E940E048FE291E0DF91CF91B8
:1010F0003F934F935F936F937F938F939F93AF93A0 :1010F0001F910F91FF90EF90DF90CF90BF90AF9036
:10110000BF93EF93FF9381E791E00E946603FF9105 :101100009F908F900C94CB031F920F920FB60F926B
:10111000EF91BF91AF919F918F917F916F915F916F :1011100011240BB60F922F933F934F935F936F93CE
:101120004F913F912F910F900BBE0F900FBE0F90DC :101120007F938F939F93AF93BF93EF93FF938FE240
:101130001F9018951F920F920FB60F9211240BB6A5 :1011300091E00E947D03FF91EF91BF91AF919F914C
:101140000F922F933F934F935F936F937F938F9360 :101140008F917F916F915F914F913F912F910F9070
:101150009F93AF93BF93EF93FF9381E791E00E943A :101150000BBE0F900FBE0F901F9018951F920F920D
:101160008703FF91EF91BF91AF919F918F917F91F5 :101160000FB60F9211240BB60F922F933F934F930C
:101170006F915F914F913F912F910F900BBE0F9008 :101170005F936F937F938F939F93AF93BF93EF93FF
:101180000FBE0F901F9018950E94D1006FEF89E05D :10118000FF938FE291E00E949C03FF91EF91BF914A
:1011900092E00E9494012FE78AE196E0215080407E :10119000AF919F918F917F916F915F914F913F910F
:1011A0009040E1F700C0000060E089E092E00E941A :1011A0002F910F900BBE0F900FBE0F901F901895B0
:1011B00094018FE493EC0197F1F700C00000F9CFA0 :1011B0000E948B006FEF87E292E00E949E012FE772
:1011C0008CE092E00E940E0142E06CE072E089E067 :1011C0008AE196E0215080409040E1F700C00000A5
:1011D00092E00E944D0143E06CE072E086E092E014 :1011D00060E087E292E00E949E0118E1D8E004C03E
:1011E0000E944D0145E06CE072E083E092E00E94D5 :1011E00026E02A95F1F700C080912E018823C1F3F3
:1011F0004D0140E06CE072E080E092E00E941C0251 :1011F00010922E010FB6F894A895109360000FBEC0
:1012000041E06CE072E08DEF91E00E941C021092D0 :10120000D0936000A8958FE291E00E94D504C82F8A
:1012100071011092B7011092B6010895EE0FFF1FF1 :10121000682F84E292E00E949E018C2F90E0FC01F6
:101220000024001C0BBE0790F691E02D0994F89461 :101220003197EC30F10530F4EE5AFF4F0C9476090B
:02123000FFCFEE :101230000E94E3078FE291E00E946C030FB6F894DE
:1012320001020103000202010103030209626F615C :10124000A895809160008861809360001092600092
:101242007264696E666F2E680031353A33323A3213 :101250000FBEC6CF0E94F907EDCF0E94CD07EACF9F
:0E1252003500417072202032203230313900D8 :101260000E94BC07E7CF0E94AB07E4CF0E9495071E
:10127000E1CF0E947F07DECF0E946A07DBCF0E948A
:101280004307D8CF0E942A07D5CF0E940F08D2CF9C
:101290008AE292E00E94180142E06AE272E087E28C
:1012A00092E00E94570143E06AE272E084E292E039
:1012B0000E94570145E06AE272E081E292E00E94FA
:1012C000570140E06AE272E08EE192E00E9426025D
:1012D00041E06AE272E08BE192E00E942602109205
:1012E0002F011092F5011092F4010895EE0FFF1FE7
:1012F0000024001C0BBE0790F691E02D0994F89491
:02130000FFCF1D
:1013020001020103000202010103030209626F618B
:101312007264696E666F2E680031353A35393A3338
:0E132200390041707220203220323031390003
:00000001FF :00000001FF

View file

@ -8,10 +8,4 @@ volatile TLC5615 dac0(*((SPI*) &spi), SPIADR::AA0);
volatile TLC5615 dac1(*((SPI*) &spi), SPIADR::AA1); volatile TLC5615 dac1(*((SPI*) &spi), SPIADR::AA1);
volatile ADU adu; volatile ADU adu;
volatile USART usart; volatile USART usart;
volatile bool nextRequest = false;
volatile uint8_t receive_buffer[32];
volatile uint8_t receive_pos;
volatile uint8_t send_buffer[32];
volatile uint8_t send_pos;
volatile uint8_t send_len;

View file

@ -14,5 +14,6 @@ extern volatile TLC5615 dac0;
extern volatile TLC5615 dac1; extern volatile TLC5615 dac1;
extern volatile ADU adu; extern volatile ADU adu;
extern volatile USART usart; extern volatile USART usart;
extern volatile bool nextRequest;
#endif // GLOBAL_VARS_H #endif // GLOBAL_VARS_H

View file

@ -7,9 +7,7 @@
#include "requests.h" #include "requests.h"
#define WDT_TIMEOUT WDTO_1S #define WDT_TIMEOUT WDTO_15MS
void handleRequest(void);
void initAll() void initAll()
{ {
@ -22,7 +20,7 @@ void initAll()
((MCP23S17*) &sw)->setDirB(0xFF); // alle Eingang ((MCP23S17*) &sw)->setDirB(0xFF); // alle Eingang
((ADU*) &adu)->init(); ((ADU*) &adu)->init();
usart.init(&handleRequest); usart.init();
usart.initRX(); usart.initRX();
// aktiviere Interrupts // aktiviere Interrupts
@ -112,7 +110,12 @@ int main()
while(1) while(1)
{ {
_delay_ms(10); if(nextRequest)
{
nextRequest = false;
handleRequest();
}
_delay_us(1);
} }
return 0; return 0;

View file

@ -114,8 +114,11 @@ void rqAdcDacStroke()
uint16_t val_a = ((ADU*) &adu)->getValue(channel_a); uint16_t val_a = ((ADU*) &adu)->getValue(channel_a);
uint16_t val_b = ((ADU*) &adu)->getValue(channel_b); uint16_t val_b = ((ADU*) &adu)->getValue(channel_b);
usart.initTX();
usart.writeInt(val_a); usart.writeInt(val_a);
usart.writeInt(val_b); usart.writeInt(val_b);
usart.flush();
/*union doubleword /*union doubleword
{ {
@ -138,5 +141,7 @@ void rqAdcDacStroke()
} while(ret != USART::MSG_OK);*/ } while(ret != USART::MSG_OK);*/
} }
usart.initTX();
usart.writeByte(USART::MSG_OK); usart.writeByte(USART::MSG_OK);
usart.flush();
} }

View file

@ -1,8 +1,6 @@
#include "usart.h" #include "usart.h"
handler_t USART::receive_handler = nullptr; void USART::init() volatile
void USART::init(handler_t handler) volatile
{ {
UCSR0A = _BV(U2X0); UCSR0A = _BV(U2X0);
@ -15,7 +13,6 @@ void USART::init(handler_t handler) volatile
UBRR0H = (((F_CPU / (8UL * BAUDRATE))-1) >> 8) & 0xFF; UBRR0H = (((F_CPU / (8UL * BAUDRATE))-1) >> 8) & 0xFF;
UBRR0L = ((F_CPU / (8UL * BAUDRATE))-1) & 0xFF; UBRR0L = ((F_CPU / (8UL * BAUDRATE))-1) & 0xFF;
receive_handler = handler;
send_active = false; send_active = false;
} }
@ -33,15 +30,27 @@ void USART::clearInputBuffer() volatile
return; return;
} }
void USART::initRX(void) volatile
{
receive_pos = 0;
}
void USART::initTX(void) volatile
{
while(send_active);
send_pos = 0;
}
void USART::handleRX(void) volatile void USART::handleRX(void) volatile
{ {
receive_buffer[receive_pos] = UDR0; receive_buffer[receive_pos++] = UDR0;
receive_pos++;
if(receive_pos >= rq_len[receive_buffer[0]]) // last byte if(receive_pos >= rq_len[receive_buffer[0]]) // last byte of request
{ {
receive_pos = 0; receive_pos = 0;
receive_handler(); nextRequest = true;
} }
} }
@ -59,18 +68,6 @@ void USART::handleTX(void) volatile
} }
} }
void USART::initRX(void) volatile
{
receive_pos = 0;
}
void USART::initTX(void) volatile
{
while(send_active);
send_pos = 0;
}
void USART::flush(void) volatile void USART::flush(void) volatile
{ {
if(send_pos == 0) if(send_pos == 0)
@ -83,6 +80,7 @@ void USART::flush(void) volatile
handleTX(); handleTX();
} }
void USART::writeByte(uint8_t b) volatile void USART::writeByte(uint8_t b) volatile
{ {
send_buffer[send_pos++] = b; send_buffer[send_pos++] = b;
@ -137,6 +135,8 @@ uint16_t USART::readInt() volatile
return v; return v;
} }
void USART::nextByte(uint8_t byte) volatile void USART::nextByte(uint8_t byte) volatile
{ {
switch(seq) switch(seq)

View file

@ -11,8 +11,6 @@ class USART;
#include "requests.h" #include "requests.h"
typedef void (*handler_t)(void);
enum BlockSequence enum BlockSequence
{ {
IDLE = 0, IDLE = 0,
@ -25,53 +23,51 @@ enum BlockSequence
class USART class USART
{ {
public: public:
// Steuerung
void init(handler_t handler) volatile; void init(void) volatile;
void clearInputBuffer(void) volatile; void clearInputBuffer(void) volatile;
void initRX(void) volatile;
void initTX(void) volatile;
void handleRX(void) volatile;
void handleTX(void) volatile;
void flush(void) volatile;
// Sendefunktionen
void writeByte(uint8_t) volatile; void writeByte(uint8_t) volatile;
void writeInt(uint16_t) volatile; void writeInt(uint16_t) volatile;
void writeStr(const char*, uint8_t) volatile; void writeStr(const char*, uint8_t) volatile;
// Empfangsfunktionen
uint8_t readByte(void) volatile; uint8_t readByte(void) volatile;
uint16_t readInt(void) volatile; uint16_t readInt(void) volatile;
// NEU
void handleRX(void) volatile;
void handleTX(void) volatile;
void initRX(void) volatile;
void initTX(void) volatile;
void flush(void) volatile;
// Blockgedöns // Blockgedöns
void nextByte(uint8_t byte) volatile; void nextByte(uint8_t byte) volatile;
uint8_t writeBlock(uint8_t*, uint8_t) volatile; uint8_t writeBlock(uint8_t*, uint8_t) volatile;
void readBlock(uint8_t*, uint8_t) volatile; void readBlock(uint8_t*, uint8_t) volatile;
constexpr static uint8_t MSG_OK = 0xFF;
constexpr static uint8_t MSG_FAIL = 0xFE;
uint8_t block_pos = 0; uint8_t block_pos = 0;
// constants // constants
constexpr static uint8_t MSG_OK = 0xFF;
constexpr static uint8_t MSG_FAIL = 0xFE;
constexpr static uint32_t BAUDRATE = 115200; // 38400 constexpr static uint32_t BAUDRATE = 115200; // 38400
constexpr static uint8_t CRC7_POLY = 0x91; constexpr static uint8_t CRC7_POLY = 0x91;
constexpr static uint8_t MAX_BLOCK_SIZE = 64; constexpr static uint8_t MAX_BLOCK_SIZE = 64;
constexpr static uint8_t BLOCK_END = 0x80; constexpr static uint8_t BLOCK_END = 0x80;
volatile uint8_t send_buffer[128];
private: private:
static handler_t receive_handler;
uint8_t block_buffer[MAX_BLOCK_SIZE + 3]; // don't store BLOCK_END byte uint8_t block_buffer[MAX_BLOCK_SIZE + 3]; // don't store BLOCK_END byte
uint8_t crc; uint8_t crc;
BlockSequence seq = BlockSequence::IDLE; BlockSequence seq = BlockSequence::IDLE;
volatile uint8_t receive_buffer[32]; volatile uint8_t receive_buffer[128];
volatile uint8_t receive_pos; volatile uint8_t receive_pos;
volatile uint8_t send_buffer[128];
volatile uint8_t send_pos; volatile uint8_t send_pos;
volatile uint8_t send_len; volatile uint8_t send_len;
volatile bool send_active; volatile bool send_active;