zbyti #476 Posted November 2, 2020 (edited) It was another C&P problem corrected. (* * Fire by koalka/bbsl/karzelki *) program Fire; uses atari; const screen = $6400; charset = $6000; dl: array [0..25] of byte = ( $42,lo(screen),hi(screen), 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, $41,lo(word(@dl)),hi(word(@dl)) ); var b0i : byte absolute $e0; b1i : byte absolute $e1; tmp : byte absolute $e2; p0 : PByte absolute $e3; p1 : PByte absolute $e5; p2 : PByte absolute $e7; begin color4 := $20; tmp := 0; sdlstl := word(@dl); chbas := hi(charset); gprior := $40; sdmctl := $21; for b0i := 0 to $f do begin for b1i := 0 to 7 do poke(charset + b1i + b0i * 8, tmp); inc(tmp,$11); end; FillChar(pointer(screen), $400, 0); while true do begin p0 := pointer(screen - 31); p1 := pointer(screen - 31 + $100); p2 := pointer(screen - 31 + $200); for b0i := 0 to 255 do begin tmp := p0[30] + p0[31] + p0[32] + p0[63]; tmp := tmp shr 2; p0^ := tmp; tmp := p1[30] + p1[31] + p1[32] + p1[63]; tmp := tmp shr 2; p1^ := tmp; tmp := p2[30] + p2[31] + p2[32] + p2[63]; tmp := tmp shr 2; p2^ := tmp; inc(p0); inc(p1); inc(p2); end; //colbk := 10; pause; p0 := pointer(screen + $2e0); for b0i := $1f downto 0 do p0[b0i] := rnd and 15; end; end. fire.pas fire.xex Edited November 2, 2020 by zbyti fix and refactor 1 Quote Share this post Link to post Share on other sites
funkheld #477 Posted November 2, 2020 error in the screen. the screen is pushed too far up during execution. 80% of the race is only used. Quote Share this post Link to post Share on other sites
zbyti #478 Posted November 2, 2020 It's intentional. Quote Share this post Link to post Share on other sites
tebe #479 Posted November 2, 2020 (edited) (* * Fire by koalka/bbsl/karzelki *) program Fire; uses atari; const screen = $6400; charset = $6000; dl: array [0..25] of byte = ( $42,lo(screen),hi(screen), 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, $41,lo(word(@dl)),hi(word(@dl)) ); var b0i : byte absolute $e0; p0 : PByte absolute $e1; p1 : PByte absolute $e3; p2 : PByte absolute $e5; b1i, tmp : byte; begin color4 := $20; tmp := 0; sdlstl := word(@dl); chbas := hi(charset); gprior := $40; sdmctl := $21; for b0i := 0 to $f do begin for b1i := 0 to 7 do poke(charset + b1i + b0i * 8, tmp); inc(tmp,$11); end; FillChar(pointer(screen), $400, 0); while true do begin p0 := pointer(screen - 31); p1 := pointer(screen - 31 + $100); p2 := pointer(screen - 31 + $200); for b0i := 0 to 255 do begin p0^ := byte(p0[30] + p0[31]+ p0[32]+ p0[63]) shr 2; p1^ := byte(p1[30] + p1[31]+ p1[32]+ p1[63]) shr 2; p2^ := byte(p2[30] + p2[31]+ p2[32]+ p2[63]) shr 2; inc(p0); inc(p1); inc(p2); end; //colbk := 10; pause; p0 := pointer(screen + $2e0); for b0i := $1f downto 0 do p0[b0i] := rnd and 15; end; end. fire.obx fire.pas Edited November 2, 2020 by tebe 4 Quote Share this post Link to post Share on other sites
zbyti #480 Posted November 2, 2020 @tebe impressive! :] Quote Share this post Link to post Share on other sites
Gury #481 Posted November 2, 2020 Most impressive 1 Quote Share this post Link to post Share on other sites
zbyti #482 Posted November 2, 2020 (edited) New Mad Pascal Benchmark Suite: suite.xex Edited November 2, 2020 by zbyti flames 2 Quote Share this post Link to post Share on other sites
ivop #483 Posted November 2, 2020 @zbyti, I relly applaud your efforts to benchmark all these different languages, but it's getting hard to follow. Your code and results are all over the place. Perhaps you could start a github repo to keep track of the different languages and compilers, like C (CC65, KickC , gcc), Mad Pascal, Millfork, K65, Action! (native and effectus), etc... Each in their own subdirectory. You could call it Atari LAnguages BenchmArks MAnifestation, i.e. ALABAMA or MAsochism MAsturbations MAnagement MAximizer And when the project hasn't been updated for years, it becomes MAusoleum 1 Quote Share this post Link to post Share on other sites
zbyti #484 Posted November 2, 2020 40 minutes ago, ivop said: Your code and results are all over the place. OK. I just finished my benchmark work today. You will see nothing more from me. Quote Share this post Link to post Share on other sites
ivop #485 Posted November 2, 2020 2 minutes ago, zbyti said: OK. I just finished my benchmark work today. You will see nothing more from me. But you'll come back later, right? Quote Share this post Link to post Share on other sites
zbyti #486 Posted November 2, 2020 Just now, ivop said: But you'll come back later, right? No. 1 Quote Share this post Link to post Share on other sites
ivop #487 Posted November 2, 2020 (edited) 11 minutes ago, zbyti said: No. Just because what I said??? If so, I don't get it. My posting was meant lighthearted, slightly funny perhaps, but also serious about collecting all your benchmarks from different threads (that's what I meant with all over the place, i.e. they are to be found at different places on this forum) and put them in one repository. I had and have no ill meaning. Edit: and the alabama thing, apparently my attempt at humor didn't get through. Masochism was meant lighthearted, as in you punish yourself by trying so many languages. Masturbations, dito, but about.... Management and Maximizer were actually meant serious. Edit2: clarified all over the place some more. Edit3: Oxford Dictionary: 1. (informal) everywhere "we've been all over the place looking for you" 2. in a disorganized or confused state. "the government is all over the place on this" Cambridge Dictionary: 1. in a lot of different places or in all parts of a place 2. (informal) not correct, regular, or well organized; changing a lot without reason I meant the first meaning. Funny though, how both dictionaries disagree on which meaning is informal Edited November 2, 2020 by ivop Quote Share this post Link to post Share on other sites
zbyti #488 Posted November 2, 2020 @ivop I decided to focus on my project, I no longer have time to read & write on AA. I made that decision yesterday not because of you. My repositories are already on GitHub https://github.com/zbyti Cheers. 1 Quote Share this post Link to post Share on other sites
ivop #489 Posted November 2, 2020 12 minutes ago, zbyti said: I decided to focus on my project, I no longer have time to read & write on AA. I made that decision yesterday not because of you. My repositories are already on GitHub https://github.com/zbyti If you had just said this, instead of "You will see nothing more from me" and "No", I think I might have understood it better I really thought you meant I had offended you by the phrase "all over the place", which could well have been the case if you look at the aforementioned different meanings. Good to see your code is already on github! I didn't know. Good luck with the project you are focusing on right now! 1 Quote Share this post Link to post Share on other sites
zbyti #490 Posted November 2, 2020 5 minutes ago, ivop said: If you had just said this, instead of "You will see nothing more from me" and "No", I think I might have understood it better I really thought you meant I had offended you by the phrase "all over the place", which could well have been the case if you look at the aforementioned different meanings. Quote Share this post Link to post Share on other sites
funkheld #491 Posted November 2, 2020 that's good to hear. then millfork and kickc continue with your support in development. Thank you. greeting Quote Share this post Link to post Share on other sites
+JAC! #492 Posted November 8, 2020 I have a problem with MP (V1.6.3). I try to pass a struct to a procedure by reference, so I can modify its values. type thund = record aussehen: zeichen; spalte: zahl; zeile: zahl; alte_spalte: zahl; alte_zeile: zahl; aktion: hund_aktion; aktion_dauer: zahl; end; but this does not work/results are not written back: procedure BewegeHund(var hund: thund) if hund.zeile>rand_oben then hund.zeile:=hund.zeile-1; // No effekt for now I've worked around it for now by returning a copy of the result instead. But that is really too slow/complex: function BewegeHund(hund: thund): thund; BewegeHund:=hund; Any ideas? Is that a limtiation of MP? - Peter. Quote Share this post Link to post Share on other sites
zbyti #493 Posted November 9, 2020 (edited) @JAC! why you use so old MP? Quote It is possible to recurse procedures, provided that the procedure parameters will be passed by value and will be of a simple - ordinal type. The record or pointer type will not be properly allocated in memory. http://mads.atari8.info/doc/madpascal_en.html#proc Edited November 9, 2020 by zbyti link Quote Share this post Link to post Share on other sites
zbyti #494 Posted November 9, 2020 (edited) @JAC! I don't know if I understood this case, but you can pass as parameter memory address (word) to the given record. Anyway, official MP is now 1.6.4 but I use 1.6.5 "night build" Edited November 9, 2020 by zbyti word Quote Share this post Link to post Share on other sites
zbyti #495 Posted November 9, 2020 (edited) Now I'm confused. Quote The record or pointer type will not be properly allocated in memory. only applies to recursion? Let @tebe explain it. I'll recommend you test your code with 1.6.4. Edited November 9, 2020 by zbyti tebe Quote Share this post Link to post Share on other sites
+JAC! #496 Posted November 10, 2020 On 11/9/2020 at 1:01 AM, zbyti said: @JAC! why you use so old MP? http://mads.atari8.info/doc/madpascal_en.html#proc I checked the main page and it states "1.6.3", and so does the documentation in your like above, so I expected that is the latest version. http://mads.atari8.info/ Will try the newer versions tomorrow. Quote Share this post Link to post Share on other sites
zbyti #497 Posted November 10, 2020 (edited) 10 minutes ago, JAC! said: I checked the main page and it states "1.6.3", and so does the documentation in your like above, so I expected that is the latest version. http://mads.atari8.info/ Will try the newer versions tomorrow. yes, number on this page is outdated. Edited November 10, 2020 by zbyti GitHub 1.6.4 Quote Share this post Link to post Share on other sites
zbyti #498 Posted November 10, 2020 Mad Pascal 1.6.4 https://github.com/tebe6502/Mad-Pascal/releases multiplying procedures u8x8, u16x16 replaced by code from CC65 adding the POKEY reset code at the beginning of the program launch optimization of conditional IF expressions () and () and ... IF () or () or ... CMP_SHORTINT, CMP_SMALLINT optimization GRAPH, FASTGRAPH: SetActiveBuffer, SetDisplayBuffer, NewDisplayBuffer, SwitchDisplayBuffer, example demoeffects\lines2.pas, line3.pas, line4.pas GRAPH: Ellipse procedure (X, Y, StAngle, EndAngle, xRadius,yRadius: Word); MATH: Hypot SYSTEM: Length(string_array[element]) SYSTEM: GetMem, FreeMem SYSTEM: IntToStr(CARDINAL), Str(CARDINAL, STRING) SYSUTILS: ByteToStr(BYTE): STRING SYSUTILS: corrected FindFirst, StrToFloat SYSTEM: corrected Val(string, real, code) ; Val(string, single, code) new CIO unit: Opn, Cls, Get, Put, BGet, BPut, XIO new SIODISK unit, separated from the SYSTEM new S2 unit, integrated with handler installer VBXE-S2: (S_VBXE.SYS) new DEFLATE unit, which performs DEFLATE decompression (procedure unDEF), example compression\undef.pas new LZ4 unit, implementing LZ4 decompression (procedure unLZ4), example compression\unlz4.pas, unlz4_stream.pas new APLIB unit, which performs apLib decompression (procedure unApl), example compression\unapl.pas, unapl_stream.pas new CRC unit: function crc32(crc: cardinal; buf: Pbyte; len: word) a new PASCAL procedure/function modifier, causing a new memory block to be assigned/released for variables each time a procedure/function is called, example 'math\evaluate.pas'. added ability to disable ROM while maintaining system operation, {$DEFINE ROMOFF} shorter names of the switch -zpage (-z), -stack (-s), -data (-d), -code (-c), -define (-d), -ipath (-i) added possibility to generate code for C64 (-t c64) 3 Quote Share this post Link to post Share on other sites
JesperGravgaard #499 Posted November 13, 2020 On 11/2/2020 at 2:29 PM, zbyti said: New Mad Pascal Benchmark Suite: I really like the Mad Pascal benchmark suite! The different tests examine different aspects of the language nicely. However, I am somewhat unsure in which tests "higher is better" and in which "lower is better". Is there a list showing this somewhere, that I have missed? @zbyti maybe you can point me in the right direction. 1 Quote Share this post Link to post Share on other sites
ilmenit #500 Posted November 13, 2020 I agree, it would be good to modify the tests to follow the same scoring approach - the lower (or higher) the number, the faster the code is. Quote Share this post Link to post Share on other sites