GALAHAD: Open the door! Open the door!
[pound pound pound]
In the name of King Arthur, open the door!
[squeak thump]
[squeak boom]
ALL: Hello!
ZOOT: Welcome gentle Sir knight, welcome to the Castle
Anthrax.
GALAHAD: The Castle Anthrax?
ZOOT: Yes... oh, it's not a very good name is it? Oh! but
we are nice and we shall attend to your every, every
need!
GALAHAD: You are the keepers of the Holy Grail?
ZOOT: The what?
GALAHAD: The Grail - it is here?
ZOOT: Oh, but you are tired, and you must rest awhile.
Midget! Crepper!
MIDGET and CREPPER:
Yes, oh Zoot!
ZOOT: Prepare a bed for our guest.
MIDGET and CREPPER:
Oh thank you thank you thank you -
ZOOT: Away away vile peasents! The beds here are warm and
soft - and very, very big.
GALAHAD: Well, look, I-I-uh-
ZOOT: What is your name, handsome knight?
GALAHAD: Sir Galahad...the Chaste.
ZOOT: Mine is Zoot... just Zoot. Oh, but come!
GALAHAD: Look, please! In God's name, show me the Grail!
ZOOT: Oh, you have suffered much! You are delirious!
GALAHAD: L-look, I have seen it! It is here, in the -
ZOOT: Sir Galahad! You would not be so ungallant as to
refuse our hospitality.
GALAHAD: Well, I-I-uh-
ZOOT: Oh, I am afraid our life must seem very dull and
quiet compared to yours. We are but eight score
young blondes and brunettes, all between sixteen and
nineteen and a half, cut off in this castle with no
one to protect us! Oh, it is a lonely life -bathing,
dressing, undressing, making exciting underwear....
We are just not used to handsome knights. Nay, nay,
come, come, you may lie here. Oh, but you are
wounded!
GALAHAD: No, no - i-it's nothing!
ZOOT: Oh, but you must see the doctors immediately! No,
no, please, lie down.
[clap clap]
PIGLET: Ah. What seems to be the trouble?
GALAHAD: They're doctors?!
ZOOT: Uh, they've had a basic medical training, yes.
GALAHAD: B-but-
ZOOT: Oh, come come, you must try to rest! Doctor Piglet,
Doctor Winston, practice your art.
PIGLET: Try to relax.
GALAHAD: Are you sure that's necessary?
PIGLET: We must examine you.
GALAHAD: There's nothing wrong with that!
PIGLET: Please - we are doctors.
GALAHAD: Get off the bed! I am sworn to chastity!
PIGLET: Back to your bed!
GALAHAD: Torment me no longer! I have seen the Grail!
PIGLET: There's no grail here.
GALAHAD: I have seen it, I have seen it. I have seen -
GIRLS: Hello.
GALAHAD: Oh -
VARIOUS GIRLS:
Hello. Hello. Hello. Hello. Hello. Hello. Hello.
Hello. Hello. Hello. Hello. Hello.
GALAHAD: Zoot!
DINGO: No, I am Zoot's identical twin sister, Dingo.
GALAHAD: Oh, well, excuse me, I -
DINGO: Where are you going?
GALAHAD: I seek the Grail! I have seen it, here in this
castle!
DINGO: No! Oh, no! Bad, bad Zoot!
GALAHAD: What is it?
DINGO: Oh, wicked, bad, naughty Zoot! She has been setting
alight to our beacon, which, I just remembered, is
grail-shaped. It's not the first time we've had this
problem.
GALAHAD: It's not the real Grail?
DINGO: Oh, wicked, bad, naughty, evil Zoot! Oh, she is a
naughty person, and she must pay the penalty - and
here in Castle Anthrax, we have but one punishment
for setting alight the grail-shaped beacon. You must
tie her down on a bed and spank her!
GIRLS: A spanking! A spanking!
DINGO: You must spank her well. And after you have spanked
her, you may deal with her as you like. And then,
spank me.
VARIOUS GIRLS:
And spank me. And me. And me.
DINGO: Yes, yes, you must give us all a good spanking!
GIRLS: A spanking! A spanking!
DINGO: And after the spanking, the oral sex.
GIRLS: Oral sex! Oral sex!
GALAHAD: Well, I could stay a BIT longer.
LAUNCELOT: Sir Galahad!
GALAHAD: Oh, hello.
LAUNCELOT: Quick!
GALAHAD: What?
LAUNCELOT: Quick!
GALAHAD: Why?
LAUNCELOT: You're in great peril!
GALAHAD: ...
ZOOT: ...
LAUNCELOT: Silence, foul temptress!
GALAHAD: Now look, it's not important.
LAUNCELOT: Quick! Come on and we'll cover your escape!
GALAHAD: Look, I'm fine!
LAUNCELOT: Come on!
GALAHAD: Now look, I can tackle this lot single-handed!
DINGO: Yes! Let him tackle us single-handed!
GIRLS: Yes! Tackle us single-handed!
LAUNCELOT: No, Sir Galahad, come on!
GALAHAD: No, really, honestly, I can go back and handle this
lot easily!
DINGO: Oh, yes, let him handle us easily.
GIRLS: Yes, yes!
GALAHAD: Wait! I can defeat them! There's only a hundred and
fifty of them!
DINGO: Yes, yes, he'll beat us easily, we haven't a chance.
GIRLS: Yes, yes.
[boom]
DINGO: Oh, shit.
[outside]
LAUNCELOT: We were in the nick of time, you were in great peril.
GALAHAD: I don't think I was.
LAUNCELOT: Yes you were, you were in terrible peril.
GALAHAD: Look, let me go back in there and face the peril.
LAUNCELOT: No, it's too perilous.
GALAHAD: Look, [something] as much peril as I can.
LAUNCELOT: No, we've got to find the Holy Grail. Come on!
GALAHAD: Well, let me have just a little bit of peril?
LAUNCELOT: No, it's unhealthy.
GALAHAD: Bet you're gay!
LAUNCELOT: No, I'm not.
Scene 11 - The Tale of Sir Galahad
From "Monty Python and the Holy Grail"
HOW TO MAKE GFA BASIC PROGRAMS COMPILE FASTER
by Richard Karsmakers
(Assisted by Stefan Posthuma)
When you're programming in "GfA Basic", everything goes pretty
smoothly. Things only go wrong on two possible occasions.
The first is that you'd try to run version 3.6 or lower under
"MultiTOS". Tough shit there, for it doesn't work at all. The
second case is that you've got a pretty huge program, say 200 Kb
or more, and you would want to compile it. No panic - it will
certainly compile terrifically. The compilation speed will be
stupefyingly slow, however.
How come?
I noticed the problem first when I was still working at Thalion
software. There were two people programming in basic. Karsten
Köper was programming this tremendously huge design system for
Role Playing Games. I was updating my fairly enormous virus
killer in my off hours. The stupid thing was that Karsten's
program compiled blindingly fast, within a minute. My source took
over 230 seconds to compile, which basically gets down to over
four times as much time for a file hardly larger (if not smaller)
than Karsten's.
I reckoned Karsten's programming simply had to be better. For
starters he didn't use any GOTOs and that sort of unstructured
stuff. I spent hours and hours reprogramming my entire virus
killer so that eventually there were only one or two GOTOs left.
The logics were baffling, at least to me. I am no great
programmer and not much of a mathmatician either.
The speed increase was hardly dramatic - about 10 or 15 seconds.
I decided to throw the towel in the ring. I would just have to
spend lots of time waiting for the program to compile. Certainly
I could live with that?
Earlier this year I got the idea to include most of the program
texts in INLINE parts of the source. I had to make different
versions of the program in several different language (English,
German and Dutch) and what I basically wanted was to assign a
text string identifier to each alert box and such, and have the
alert box routine read out the appropriate text from that INLINE
bit. Even the HELP screens would have to disappear into INLINEs.
The INLINE structure would basically have to consist of a word
(as in '16 bit value') value followed by the text that was
wanted, closed off by a zero byte (or two in case the address
needed to be evened out). All this would enable me to make
different versions of my virus killer merely by including other
INLINE files.
I am a sucker at coding in machine code. Obviously, however, the
search routine that gave me the address of the appropriate text
would have to be written in machine code for speed-economic
purposes. So Stefan (who's a great chum really) wrote it for me.
In this article I will give you the information you will require
to build this sort of stuff into your own programs. Especially if
they're big it will bring you lots of compilation speed profit,
even though it will initially take quite a lot of work.
In the PROGRAMS folder you will find a folder called GFA_TRIX.
The file called FOOB.S is the machine code source file of the
routine that needs to be fed the string identifier and that will
then give you the address on which the appropriate text is
located in the INLINE. This text can then be printed with the
"GfA Basic" CHAR command (I think this only works with GfA Basic
3.0 or higher - or possibly even 3.5 and higher). The FOOB.LST
file is the "GfA Basic" source file that can be merged into your
programs. It contains the routine that is fed the string
identification number and gives you the address where that string
is located in memory, as well as the routine required to convert
your text files into the appropriate INL files to be read into an
INLINE.
First, the text file format has to be explained. An example
would be the following.
~001
"This is a demo text"
~002
"Certainly it is"
~
Do note that the number has to use three digits, and the file
needs to be closed off with one "~" followed by two or three
empty lines. If you want to use "~" in your actual texts...well,
you basically can't.
The "GfA Basic" routine "alg_to_inl" converts the text file
using the above format into an INL file with a format the FOOB.S
program (finished INLINE machine code to be found in FOOB.INL)
can use.
The function "fetch" communicates with the machine code thing
and gets the address of the string you want to print. You can use
the "GfA Basic" CHAR command to print it. Basically, to print the
text belonging to number 1 you would need the following command:
CHAR{@fetch(1)}
The CHAR command only needs the address where the string starts.
It will print until it finds a zero byte (just like GEMDOS). Have
a look at the source files yourself to see how it works. I think
I explained it well enough, in the source code as well.
The CHAR command works within every text screen output command
with the exception of the INPUT type of commands (you can
actually see the compiler pause a while when it's compiling
source code lines with these commands on them). You can also use
the CHAR command with all string manipulations, such as -
A$="YEAH SURE"+LEFT$(CHAR{@fetch(x%)},3)
Or anything along these lines.
That's about it, really. I hope it all works for I haven't
actually tested things extensively (I didn't have much time
writing this and, to be honest, I was out of inspiration for
being a teacher at something I'm not altogether too splendid at).
Nonetheless, two more things you might find helpful when
programming in "GfA Basic" will be explained below. In another
article you will get an interesting (and very naughty) trick on
how to recognize whether a program it booted from the AUTO folder
or not.
*****
A while ago I tried to get my virus killer to work as an
accessory. I have in the mean time filed drastically (as I said,
I am not much of a splendid programmer) but at least I came
across a replacement routine for the "GfA Basic" EXIST command
which does work when you're in an accessory (EXIST doesn't do
this properly).
There is not much to tell here, except that I got it from "TOS"
(the German magazine). You will find the source included in
FOOB.LST ("real exist").
*****
Another useful trick: You might want to know what the current
program is called. You can for example check whether your
program's name has been altered or not.
Again, not much to tell. Direct your attention to FOOB.LST
once more - it's close to the end.
And that's it for this issue's "GfA Basic" tricks. I really
think my writing style sucked, but I am no didactic so you can go
and do something dirty if you mind.
Disclaimer
The text of the articles is identical to the originals like they appeared
in old ST NEWS issues. Please take into consideration that the author(s)
was (were) a lot younger and less responsible back then. So bad jokes,
bad English, youthful arrogance, insults, bravura, over-crediting and
tastelessness should be taken with at least a grain of salt. Any contact
and/or payment information, as well as deadlines/release dates of any
kind should be regarded as outdated. Due to the fact that these pages are
not actually contained in an Atari executable here, references to scroll
texts, featured demo screens and hidden articles may also be irrelevant.