Author Topic: CrippleWare News  (Read 11869 times)

rrr314159

  • Member
  • *****
  • Posts: 1382
Re: CrippleWare News
« Reply #15 on: September 17, 2016, 07:36:02 PM »
Sure, C is a good alternative. But asm is much easier to use.
I am NaN ;)

hutch--

  • Administrator
  • Member
  • ******
  • Posts: 7635
  • Mnemonic Driven API Grinder
    • The MASM32 SDK
Re: CrippleWare News
« Reply #16 on: September 17, 2016, 07:57:22 PM »
 :biggrin:

> And then comes that Australian Don Quichote who wants to convince the rest of the programming community that if arg1 }= arg2 looks better than if arg1 >= arg2 ...

Nah, real men[tm] do it with mnemonics.

    mov r10, arg1
    cmp r10, arg2
    je label

You know how it is, you can tell the men from the boys by the paper they use, (sheet of #0000 [very coarse] sandpaper) hung in the loo.  :P

It must be tough when you cannot rely on Microsoft 1990 design any longer to hold your hot little hand and you have to deal with those dirty INTEL mnemonics. Someone would think you were trying to write in assembler when you deal with mnemonics directly. :biggrin:
hutch at movsd dot com
http://www.masm32.com    :biggrin:  :skrewy:


hutch--

  • Administrator
  • Member
  • ******
  • Posts: 7635
  • Mnemonic Driven API Grinder
    • The MASM32 SDK
Re: CrippleWare News
« Reply #18 on: September 17, 2016, 08:51:44 PM »
Welcome to the brave new world where everything has changed. You have nothing to convince me about, Win64 is not Win32. Porting one to another is a pipe dream that you have committed yourself to without knowing all of the problems.

Since it was your complaint that Vasily does not comply with Microsoft design with "{=", if you don't like his notation, use mnemonics.

Try using SetWindowLong() in Win64. It has changed to SetWindowLongPtr().

Sooner or later you will have to wean yourself off the Microsoft 1990 teat and start writing assembler.

As before, this is already done using that poor crippled non visual garbage disgusting Microsoft assembler ML64.  :biggrin:

console executables
UI executables
Dynamic link libraries
Dialog applications
Static libraries
Individual object modules
A reliable prologue/epilogue
over 100 macros
over 50 library modules

And growing by the day.
hutch at movsd dot com
http://www.masm32.com    :biggrin:  :skrewy:

rrr314159

  • Member
  • *****
  • Posts: 1382
Re: CrippleWare News
« Reply #19 on: September 17, 2016, 11:19:37 PM »
> And then comes that Australian Don Quichote who wants to convince the rest of the programming community that if arg1 }= arg2 looks better than if arg1 >= arg2 ...

Nah, real men[tm] do it with mnemonics.

    mov r10, arg1
    cmp r10, arg2
    jge label

Frankly I prefer the mnemonics approach myself. But it's the principle of the thing. Why change what you're used to, when you don't have to? Also, that curly bracket looks wrong.
I am NaN ;)

nidud

  • Member
  • *****
  • Posts: 1999
    • https://github.com/nidud/asmc
Re: CrippleWare News
« Reply #20 on: September 17, 2016, 11:54:48 PM »

 :biggrin:

You don't need no stenking macros or include files
you only need Asmc  :lol:

Code: [Select]
;
; Build: asmc -pe b2hex.asm
;
.x64
.model flat, fastcall
option win64:2

option dllimport:<msvcrt>
__getmainargs proto :ptr, :ptr, :ptr, :ptr, :ptr
printf proto :ptr byte, :vararg
fprintf proto :ptr, :ptr byte, :vararg
fgetc proto :ptr
fopen proto :ptr, :ptr byte
fclose proto :ptr
exit proto :dword
option dllimport:NONE

.code

main PROC
local argc:dword, argv:qword, skip[128]:byte

lea rax,skip
__getmainargs( addr argc, addr argv, rax, rax, rax )

.if argc == 3

mov rax,argv
mov rsi,[rax+8]
mov rdi,[rax+16]

.if fopen ( rsi, "rb" )
mov rsi,rax

.if fopen ( rdi, "wt+" )
mov rdi,rax
xor ebx,ebx
fprintf(rdi, "00000000")

.while fgetc( rsi ) < 256

fprintf( rdi, " %02X", eax )
inc ebx
.if  !( ebx & 0Fh )

fprintf( rdi, "\n%08X", ebx )
.endif
.endw
fclose( rdi )
fclose( rsi )
.else
printf( "error open: %s\n", rdi )
exit  ( 1 )
.endif
.else
printf( "error open: %s\n", rsi )
exit  ( 1 )
.endif
.else
printf( "B2HEX Version 1.0, Public Domain\n%s",
"USAGE: B2HEX <source> <target>\n" )
.endif

exit  ( 0 )
main ENDP

END main

hutch--

  • Administrator
  • Member
  • ******
  • Posts: 7635
  • Mnemonic Driven API Grinder
    • The MASM32 SDK
Re: CrippleWare News
« Reply #21 on: September 18, 2016, 12:40:57 AM »
nidud,

Looks good.  :t
hutch at movsd dot com
http://www.masm32.com    :biggrin:  :skrewy:

hutch--

  • Administrator
  • Member
  • ******
  • Posts: 7635
  • Mnemonic Driven API Grinder
    • The MASM32 SDK
Re: CrippleWare News
« Reply #22 on: September 18, 2016, 01:38:48 AM »
Here is yet another piece of this terrible toothless crippleware produced with ML64. It is an interface test for a vertical toolbar. No source as it cannot be built without the latest macros and libraries which will come later as I am still writing a lot more new stuff. I am hoping to get in front of the UI stuff so I can do some work on high speed algos but I have not got there yet.
hutch at movsd dot com
http://www.masm32.com    :biggrin:  :skrewy:

rrr314159

  • Member
  • *****
  • Posts: 1382
Re: CrippleWare News
« Reply #23 on: September 18, 2016, 04:53:50 AM »
Here is yet another piece of this terrible toothless crippleware produced with ML64.

I definitely can't agree with characterizing it as either "terrible" or "toothless". The differences between ML64 and Asmc, or HJWasm, are not that huge. You can do all the same things with any assembler. It's just a bit harder, more annoying, slower, with ML64. Certainly, if only that were available, I'd use it, and get the same functionality. But why bother, when you have better alternatives? - No need to answer that! I know: "Open Source".
I am NaN ;)

hutch--

  • Administrator
  • Member
  • ******
  • Posts: 7635
  • Mnemonic Driven API Grinder
    • The MASM32 SDK
Re: CrippleWare News
« Reply #24 on: September 18, 2016, 08:52:21 AM »
I would be interested to see if Japheth's JWASM could be used with the libraries and includes that I already have using the macros I have done but it would still require some of Vasily's macros and I gather that JWASM may not run them properly.
hutch at movsd dot com
http://www.masm32.com    :biggrin:  :skrewy:

jj2007

  • Member
  • *****
  • Posts: 10668
  • Assembler is fun ;-)
    • MasmBasic
Re: CrippleWare News
« Reply #25 on: September 18, 2016, 10:02:01 AM »
it would still require some of Vasily's macros

It would require disabling the .if, invoke etc macros with e.g. IFIDNI @Assembler, <ML> then .if macro ...

Perhaps like this:
Code: [Select]
IFIDNI @Assembler, <ML>
  include VasilysMacros4ML64.inc   ; invoke, if else endif, repeat ... until, while ... wend, switch .. case .. endsw
ENDIF
include Macros4allAssemblers.inc

Macro compatibility per se is no longer a problem. All MasmBasic macros work with all our assemblers. Occasionally, I had to tweak them a little bit to make them work with ML and the Watcom family, but there is not a single one that needs conditional assembly.

rrr314159

  • Member
  • *****
  • Posts: 1382
Re: CrippleWare News
« Reply #26 on: September 18, 2016, 10:40:39 AM »
I'd expect a handful of minor issues. To get it working might take somewhere between a few minutes to a few hours - you know how these things can often be more trouble than expected, what with one thing and another.
I am NaN ;)

anunitu

  • Member
  • *****
  • Posts: 1145
Re: CrippleWare News
« Reply #27 on: September 18, 2016, 04:02:59 PM »
Is it truly the dawning of the age of assemblyius(Aquarius) ,man I did not want to go back to my misspent youth and all those cute blotter things.
ML64 may indeed be the Necronomicon of the all new,all so much more tweeked assembler of the digital black hole into the age of Jimmy Netron 

This is Jimmy BTW.


Looks a bit like Zen I think...

rrr314159

  • Member
  • *****
  • Posts: 1382
Re: CrippleWare News
« Reply #28 on: September 18, 2016, 05:17:26 PM »
He sure does look like Zen! And the other guy in the red shirt reminds me of hutch
I am NaN ;)

jj2007

  • Member
  • *****
  • Posts: 10668
  • Assembler is fun ;-)
    • MasmBasic
Re: CrippleWare News
« Reply #29 on: September 18, 2016, 06:48:16 PM »
I am sure Microsoft sit up at night sobbing silently while wiping away the tear stains because of your dissatisfaction with ML64

Just found a very interesting exchange of views, over 11 years ago, between Microsoft (Kang Su Gatlin, Visual C++ Program Manager) and some members of this forum titled MASM on x64:

M$: how important is "INVOKE" for x64 MASM? ... Would you rank INVOKE as more or less important than the high-level control flow directives such as .WHILE, .IF, etc...?

Randy Hyde: The *vast* majority of MASM32 projects I've ever seen certainly use both.

Eugen: I am using MASM for writing fairly complex commercial applications (mainly shareware games) and i consider critical to be able to use both invoke and if/else HLL constructs.

hutch--: a properly designed INVOKE style syntax becomes critical to this range of users. Particularly for C/C++ programmers who are used to prototyping and the reliability of size and parameter count checking, bare mnemonics are very unpalatable to them.

Tedd: rough guesses on what I personally use, though I dare say others are similar.. invoke - LOTS, proc/endproc - lots, .IF/.ELSEIF/.ELSE - very often

GregL: PROTO / INVOKE are very important to me, as well as .IF. .WHILE and .LOOP would be next in importance.

BogdanOntanu: I will never use an assembler that has no invoke or extended call syntax and .IF .ELSEIF .ELSE .ENDIF constructs included in the assembler.

hutch--: In terms of priority of pseudo high level constructions, I would tend to place them in this order.
1. INVOKE  Critical for C/C++ programmer who are used to prototyping and who have little chance of writing bare mnemonic code.
2. .IF block syntax for sequential conditional testing. Nearly as critical for reliable higher level code.
3.  .WHILE / .REPEAT loop code syntax.  Useful but can generally be replaced with manual loop code.

M$: I'd like to thank EVERYONE for their feedback.