zbyti Posted November 2, 2020 Share 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 Link to comment Share on other sites More sharing options...
funkheld Posted November 2, 2020 Share 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 Link to comment Share on other sites More sharing options...
zbyti Posted November 2, 2020 Share Posted November 2, 2020 It's intentional. Quote Link to comment Share on other sites More sharing options...
tebe Posted November 2, 2020 Author Share 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 Link to comment Share on other sites More sharing options...
zbyti Posted November 2, 2020 Share Posted November 2, 2020 @tebe impressive! :] Quote Link to comment Share on other sites More sharing options...
Gury Posted November 2, 2020 Share Posted November 2, 2020 Most impressive 1 Quote Link to comment Share on other sites More sharing options...
zbyti Posted November 2, 2020 Share Posted November 2, 2020 (edited) New Mad Pascal Benchmark Suite: suite.xex Edited November 2, 2020 by zbyti flames 2 Quote Link to comment Share on other sites More sharing options...
ivop Posted November 2, 2020 Share 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 Link to comment Share on other sites More sharing options...
zbyti Posted November 2, 2020 Share 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 Link to comment Share on other sites More sharing options...
ivop Posted November 2, 2020 Share 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 Link to comment Share on other sites More sharing options...
zbyti Posted November 2, 2020 Share Posted November 2, 2020 Just now, ivop said: But you'll come back later, right? No. 1 Quote Link to comment Share on other sites More sharing options...
ivop Posted November 2, 2020 Share 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 Link to comment Share on other sites More sharing options...
zbyti Posted November 2, 2020 Share 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 Link to comment Share on other sites More sharing options...
ivop Posted November 2, 2020 Share 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 Link to comment Share on other sites More sharing options...
zbyti Posted November 2, 2020 Share 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 Link to comment Share on other sites More sharing options...
funkheld Posted November 2, 2020 Share Posted November 2, 2020 that's good to hear. then millfork and kickc continue with your support in development. Thank you. greeting Quote Link to comment Share on other sites More sharing options...
+JAC! Posted November 8, 2020 Share 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 Link to comment Share on other sites More sharing options...
zbyti Posted November 9, 2020 Share 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 Link to comment Share on other sites More sharing options...
zbyti Posted November 9, 2020 Share 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 Link to comment Share on other sites More sharing options...
zbyti Posted November 9, 2020 Share 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 Link to comment Share on other sites More sharing options...
+JAC! Posted November 10, 2020 Share 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 Link to comment Share on other sites More sharing options...
zbyti Posted November 10, 2020 Share 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 Link to comment Share on other sites More sharing options...
zbyti Posted November 10, 2020 Share 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 Link to comment Share on other sites More sharing options...
JesperGravgaard Posted November 13, 2020 Share 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 Link to comment Share on other sites More sharing options...
ilmenit Posted November 13, 2020 Share 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 Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.