[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: METAL.SYSTEM help!
In article <1993Apr19.231117.25870@osl.or.gov> visitor@ednet1.osl.or.gov (Compass Guest) writes:
>
>I got METAL.SYSTEM to boot finally (and found metal.config too!)
>and everything works great, except it wont compile EVENT.MANAGER.
>It says that error $0000 at ($0000) happens. Any ideas? I re-
>unarchived EVENT.MANAGER and it still wont compile. Thanx
Hehehe. If you notice, EVENT.MANGER has no .S ending, even though it is METAL
source code. It is an include file. It's not meant to be a standalone program.
It contains the EVENT.MANAGER subroutines for METAL. Instead of harcoding them
into ALL the BBS segments, we simply use METAL's ability to "chain" or include
files while it is compiling. This allows us to use the same subroutines in
MANY different segments. When we make a change to THOSE subroutines, we don't
have to change all the other files. We simple re-compile them.
Example...
Label
? "The next scheduled event is ";
gosub GetNextEvent ! This subroutine is in the 1/i/event.manager include
! We don't have to re-write it.
? nevnt$
.include 1/i/event.manager ! This line then compiles the subroutines in this
! file into the original program.
Is something known as a compiler directive. When METAL compiles a segment,
such as 1/STARTUP.S its compiler will read this line and compile in the
1/i/event.manager include with the code.
Some people may say "But this makes for lots of unused code for one lousy
label."
Your exactly right! ;) That's why METAL 1.09.02 has conditional compiliation.
It will only compile in the labels that get referenced in the original source
file. :) These are called "library" files.
For mor information on compiler directives, please see the documents COMM.TYPES
and COMMANDS.P.0ETC.