TIP: Click on subject to list as thread! ANSI
echo: public_domain
to: rowan crowe
from: Paul Edwards
date: 1995-07-01 12:59:42
subject: spawn.asm

PE> I have changed it slightly with 3.1, here is the diff...

PE> 112,123c112
PE> <  IFDEF  PASCAL
PE> <  .model  tpascal
PE> < ;
PE> <  extrn  prefixseg: word
PE> < ;
PE> < ptrsize  =  1
PE> <  ELSE
PE> <  IFNDEF  MODL
PE> <  .model  small,c
PE> <  ELSE
PE> < %   .model  MODL,c
PE> <  ENDIF
PE> -+-
>> .model  large,c
PE> 128d116
PE> <  ENDIF

rc>     I presume this is meant to be processed by a machine, but I managed to 

I don't know about that.

rc> work out what you meant. Delete all the "<" lines and
add the ">" line, 
rc> right?

You've never seen a diff listing before?  It's pretty standard.
FREQ "GNUDIFF.ZIP" if you want the diff program that I use.  You
are sort of correct in your interpretation.  It basically means:
"" -
this is what is in
the new file.  It's meant for human consumption more than anything
else.

rc>> I presume you'd use /DMODL=large spawn

PE> I'm just going "wasm spawn.asm".  I think I've already changed all
PE> that crap to get around that model and pascal stuff.

rc>     Does compiling with the switches change any error messages?

I just tried, with the command as above, and no, nothing changed.
I'll insert the command line options in case you meant for me to
try something else...

Usage:   wasm [options] asm_file [options] [{at}env_var]
Options:                    ( /option is also supported )
-{0,1,2,3,4,5}{p}{r,s}
    -0          8086 instructions
    -1          80186 instructions
    -2          80286 instructions
    -3          80386 instructions
    -4          80486 instructions
    -5          pentium instructions
    add p       protect mode
    add r       register calling conventions
    add s       stack calling conventions
                ie: /2      /3s     /4pr    /5p
-bt=            set the build target to 
-c                  disable outputting of data in code records
-d[=text]     define text macro
-d1                 line number debugging support
-e                  stop reading ASM file at END directive
-e          set error limit number
-fe=     set error file name
-fo=     set object file name
-fi=     force  to be included
-fpc                calls to floating-point library
-fpi                inline 80x87 instructions with emulation
-fpi87              inline 80x87 instructions
-fp0                floating-point for 8087
-fp2                floating-point for 287
-fp3                floating-point for 387
-fp5                floating-point for Pentium
-i=      add directory to list of include directories
-j or -s            force signed types to be used for signed values
-m{t,s,m,c,l,h,f}   memory model:
                    (Tiny, Small, Medium, Compact, Large, Huge, Flat)
-nd=          set data segment name
-nm=          set module name
-nt=          set name of text segment
-o                  allow C form of octal constants
-zq or -q           operate quietly
-?  or -h           print this message
-w          set warning level number
-we                 treat all warnings as errors



rc>     I won't be able to tell you exactly, because I know fuck all about 
rc> MASM. I can try, though.

Or whatever you think "standard assembler" should have done, anyway.

PE> spawn.asm(197): Error! E149: This instruction is not supported

rc>     I think I got my diff slightly wrong; line 197 is the
"msize" line in 
rc> my "modified" source, but I would guess that
"addr" is the problem line due 
rc> to a reserved keyword. Change globally to something else, like
"addr1"

Done.

PE> spawn.asm(251): Error! E102: Operator is expected
PE> spawn.asm(251): Error! E081: Offset cannot be smaller than WORD size

rc> expar           db      TYPE exec_block dup (?) ; exec-parameter-block

rc>     What the fuck is this? TYPE? Hmmm. I think this means reserve  exec_block structure> bytes. From around line 159:

If you don't know what "TYPE" is, presumably that means it isn't
standard assembler? 

rc>     The size of the structure is 14 bytes. So, try this on line 251:

rc> expar           db      14 dup (?) ; exec-parameter-block

rc>     Just as a workaround. If that works then we'll see about another way to 
rc> figure out the size of the structure.

Yes, that has fixed the problem.  Before I go and change all the
others, can you tell me of the proper way to get the structure
size in masm/wasm?

rc>     Same fucking problem. Surely you must have noticed this yourself Paul, 
rc> you're not that stupid are you? ;-) I would guess that assigning the value 

I noticed the problem, but I didn't know what the proper solution
was.  Like I say, Watcom just says "We are MASM-compatible, and we
DON'T teach you how to program in MASM".

PE> spawn.asm(298): Error! E102: Operator is expected
PE> spawn.asm(298): Error! E065: Invalid instruction operands
PE> spawn.asm(299): Error! E102: Operator is expected
PE> spawn.asm(299): Error! E065: Invalid instruction operands

rc>         mov     ax,lmem lprep.first_mcb
rc>         mov     bx,lmem lcurrdesc.addr

rc> lmem    equ     

rc>     WASM may be literally replacing "lmem" with the text
string "" 
rc> when it should be "ds:"

rc>     First, try changing "" in the line above
(about line 235) to "ds:"

Yes, that worked.  Does anyone know for sure whether or not this is
acceptible to MASM?

spawn.asm(259): Error! E102: Operator is expected
spawn.asm(259): Error! E081: Offset cannot be smaller than WORD size
spawn.asm(260): Error! E102: Operator is expected
spawn.asm(260): Error! E081: Offset cannot be smaller than WORD size
spawn.asm(261): Error! E102: Operator is expected
spawn.asm(261): Error! E081: Offset cannot be smaller than WORD size
spawn.asm(268): Error! E102: Operator is expected
spawn.asm(269): Error! E102: Operator is expected
spawn.asm(638): Error! E102: Operator is expected
spawn.asm(638): Error! E065: Invalid instruction operands
spawn.asm(639): Error! E073: Immediate data out of range
spawn.asm(692): Error! E073: Immediate data out of range
spawn.asm(694): Error! E148: Invalid operand size for instruction
spawn.asm(705): Error! E102: Operator is expected
spawn.asm(705): Error! E065: Invalid instruction operands
spawn.asm(708): Error! E073: Immediate data out of range
spawn.asm(709): Error! E073: Immediate data out of range
spawn.asm(711): Error! E148: Invalid operand size for instruction
spawn.asm(724): Error! E148: Invalid operand size for instruction
spawn.asm(729): Error! E148: Invalid operand size for instruction
spawn.asm(742):  
@EOT:

---
* Origin: X (3:711/934.9)

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.