Skip to main content

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.