Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Problem "Out of Memory" while writing BBS door in
#41
Quote:1. finding a linker that's better able to handle large files (anybody know any good ones?)

I was not so intelligent thinking that changing of LINK your problem would be solved... Now I realize that in every 16 bits LINKer you will get the same error: Some module uses for data/code more than 64 Kb. In 16 bits, 64 Kb is the size of a segment, so the maximum for data/code in a module. I'd rather use 2.
SCUMM (the band) on Myspace!
ComputerEmuzone Games Studio
underBASIC, homegrown musicians
[img]http://www.ojodepez-fanzine.net/almacen/yoghourtslover.png[/i
Reply
#42
... is it possible, though?

::crosses fingers::

*peace*

Meg.
Reply
#43
I have interesting news! After my previous compilation problems, I decided to try removing from my code all lines that called any routines in my four largest modules (USEITEM, USEITEM2, EVENT0, EVENT1) and recompiling the code into OBJs. Then, when I linked them into an EXE (excluding those 4 OBJs, of course), it...

...MADE AN EXE FILE!!!!...


...which means that the linker isn't getting hung up on the easy-door library! It's getting hung up on the easy-door library in CONJUNCTION with one (or more) of those four modules. Or, possibly, it's getting hung up on the combination of the library and the SUM of all my modules simply being too big.

I'd like to try making an EXE file out of just those four modules plus the easy-door lib but I don't think it'd be reasonably possibly to make the code such that it'd be able to do that.

Ah, well. I'll keep at it. I swear I'll get this thing to work if it kills me.

*peace*

Meg.
Reply
#44
Another update.

I threw back into the mix two of the modules (USEITEM and USEITEM2) and it still worked fine.

However, when I add in module EVENT0, it compiles to an EXE fine, but when I run the EXE I get this error right at the start:

============================================

out of string space in module TEMPEDR2 at address 24E3:44F0

============================================

...and then it returns me to DOS.

TEMPEDR2 is the easyy-door library module that contains most of the routines which I make calls to in my program. Specifically, it's got the routines that I use to send text to the remote user's monitor, "SEND" and "SENDCR" There are a LOT of calls to this routine in module EVENT0.

*peace*

Meg.
Reply
#45
I'm going to make ONE sub that gets passed text, and then calls the SEND/SENDCR routine and passes the text right along to it. I'm curious to see whether that does anything.

*peace*

Meg.
Reply
#46
... but I will just keep talking to myself 'cause it keeps me coding Smile

I did the following to my BBS door code:

1. made subroutines in my main module (DUNGEON.BAS) that called the Easy-Door routines I was using in all my modules (for example, the SendCR routine which sends text and a carriage return to the remote user's screen).

2. Replaced all code in all OTHER modules (i.e. *not* the main one) in such a way that no Easy-Door routine is ever directly called from them. Instead, the subroutines in the main module are called, which in turn pass on the arguments to the Easy-Door routine. Therefore,

3. The only module that needs to include the Easy-Door routines is the main module!

The results?

For starters, I can now load all the modules into the IDE without ever running out of memory. This was quickly becoming a problem.

I can still compile all the module BAS files into OBJ files.

I can link the OBJ files to an EXE! Yes! DUNGEON.EXE now exists!

**HOWEVER**

When I run it from DOS, it simply says,

=============================================

Out of string space in module TEMPEDR2 at address 1C3D:3BA7

Hit any key to return to system

=============================================

Well, I'm getting closer... :Confusedigh::...

*peace*

Meg.
Reply
#47
OH MY GOD OH MY GOD... I just tried something and I'm so happy! I opened up the program (main module and all others) in the IDE and used the pull-down menu option "Make into EXE File" and it worked (which was a surprise). However, the EXE file it makes RUNS! As in, NO "Out of Memory" message!

What would cause the difference between compiling/linking to EXE in the IDE and doing it from the DOS prompt? I thought doing it manually would be better...

*peace*

Meg.
Reply
#48
in two different places probably doesn't increase your chances of getting two different answers. (You can get two (or more) answers just asking the question just once.) Smile
ravelling Curmudgeon
(geocities sites require copying and pasting URLs.)
I liked spam better when it was something that came in a can.
Windows should be defenestrated.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)