News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests

Main Menu

Antique PC's [RESOLVED]

Started by mikorians, November 10, 2012, 05:57:02 AM

Previous topic - Next topic

mikorians

Hi!
I'm something of a hobbyist and have lots of old museum-grade PC's about and wondered if I used only 8088 opcodes if I could use MASM32 to compile an asm program for them, and if I could avoid the non-flat memory-type model with 20 bit addressing that we all hated so much.  If there's a modern tool that would do it, I'd like to attempt it.
(I also have the hp 200 pocket pc - which is why I ask)

Vortex

Masm32 is for 32-bit computing while 8088 is for 16-bit. You would probably need to convert your 32-bit code to 16-bit where it's possible.  There is no any modern tool to perform this task.

dedndave

there are no tools to convert back and forth between 16-bit code and 32-bit code
there are just too many differences to handle

however, you can build 16-bit programs using ML.EXE and LINK16.EXE

FORTRANS

Hi,

   You can use MASM to create programs for the HP 200LX,
I do so.  The version of MASM that comes with the MASM32
package will not run on a 16-bit machine, it requires a 32-bit
Windows.  But it can create 16-bit programs that can then
be transfered to the 16-bit machine.  A 16-bit X86 processer
only supports the 20-bit segment based addressing scheme.

   Are you a member of the 200LX mailing list?

Regards,

Steve N.

dedndave

if you want masm v 5.10, let me know

mikorians

 8)  Thanks all.  I don't wanna go this route.  I didn't like the old addressing scheme.  's why I liked the original motorola and 6502 chips for asm.
I'm normally a strictly BASIC man.

FORTRANS

Hi,

   Well, if you use the "tiny" programming model using only
one segment you can ignore segments in the addressing.
My most complex asm program (in terms of lines of code)
still fits in one segment.  So then your addressing is mostly
pretty simple.


dedndave

i have written a number of tiny model programs that use more than one segment for data
segmented memory isn't all that bad, once you get the hang of it   :P

Vortex

During the 16-bit era, Borland provided nice IDEs for C\C++ and Pascal programming. Nice souvenirs.

FORTRANS

Quote from: dedndave on November 16, 2012, 01:53:36 AM
i have written a number of tiny model programs that use more than one segment for data
segmented memory isn't all that bad, once you get the hang of it   :P

Hi,

   So have I.  But if segments are scaring him off, he should
know that he can write programs without segment addressing.
I also wrote a program that had a data structure that was
addressed by adding a multiple of the array index to the segment
register and left the offset alone.  Sort of a Python confuse a cat
program?

Cheers,

Steve N.

mikorians

'scuse my closed mindedness, but C...  Yetch...  Choke choke...

Fortran I can stand... Maybe.

BUT---  Thank you guys for the Tiny model suggestion!  8)   I don't write much large stuff in ASM because I'm an amateur.
So thank you very much!
So...
Model: Tiny
Cpu: 8088

What are the typical source code statements again???

dedndave

here is a simple TINY model program...

upon entry, DS = CS = SS = ES = PSP segment
PSP:80h is where the command line tail length byte is, followed by the command line string, if any
the string is normally terminated with a carriage return
PSP:100h is the program entry point
there are various other data items in the PSP, as well

with TINY model programs, you own all available memory up to 9FFF:FFFF
the program, including the stack, data, and PSP, must fit into 64 Kb

        .MODEL  Tiny
        OPTION  CaseMap:None

;******************************************************************************

        .CODE

;------------------------------------------------------------------------------

        ORG     100h

_main   PROC

;display the banner message

        mov     dx,offset s$Banner
        mov     ah,9
        int     21h

;wait for a keypress and remove it from the buffer

        mov     ah,1
        int     16h
        mov     ah,0
        int     16h

;terminate program

        mov     ax,4C00h
        int     21h

_main   ENDP

;******************************************************************************

s$Banner db 'Hello World!',0Dh,0Ah,24h

;******************************************************************************

        END     _main


to assemble it, use the 16-bit linker...

\masm32\bin\ml /c MyProg.asm
\masm32\bin\Link16 /TINY MyProg.obj;


mikorians

Thank you very much!   Happy holidays!
8)
Aw.  I don't have link16.exe  (I do have the old MASM615 package)

jj2007

Are you sure it isn't in \Masm32\bin\link16.exe ? If not, see attachment.

dedndave

you probably did not install the masm32 package
also, link16 (16-bit) is sometimes named link563 (ver 5.63)