Skip to main content
© Red Sector

DESKSEL - THE DIGITAL INSANITY DESKTOP SELECTOR
by Stefan Posthuma

Boy,  am I in trouble this time. Slayer, one of my highly-trained 
killer Stick Insects broke out of his tungsten-carbide cage  last 
night  and  killed six cats,  destroyed two brand new  cars  (one 
being a police car) and set off nine burglar alarms.  I found him 
this  morning sleeping with Mad Butcher,  the Pitbull Terrier  of 
my neighbour.

If you have two monitors and a hard disk,  like I do,  there is a 
need  to be able to select a desktop at boot time.  I mean  if  I 
want to play around with Degas Elite,  I want low-res,  my  Degas 
window  open at the right spot and my icons neatly  arranged.  On 
the other hand,  if I want to do a little programming,  I want my 
Develop folder open plus my ST NEWS folder.  I also want mid-res. 
If I want to write some articles, I want to do that in Monochrome 
and I want my WordPlus and my ST NEWS document folders opened.

You can't possible do all that with just one DESKTOP.INF file, so 
I  decided to write a little program that allows me to  select  a 
desktop at boot time. 

First,  I  created some nice desktops and every time,  after  the 
'Save Desktop' command,  I renamed the DESKTOP.INF file to a file 
with  a  meaningful filename,  like DEGAS.INF or  DEVELOP.INF  or 
WORDPLUS.INF. After that, I wrote a GfA program that selected all 
the .INF files from the boot drive and allowed me to select  one. 
After selecting,  it just copied the selected file to DEKSTOP.INF 
and viola! my desktop was booted neatly.

Wait a moment,  Soulcrusher (one of my other Combat Killer  Stick 
Insects) is getting restless.

DOWN SOULCRUSHER
DOWN!!!

Here, some meat for you...
(Ripping and slobbering noises,  followed by howling and  banging 
against tungsten carbide bars)

Oh you want more?

(Sound  of footsteps on the stairs,  heavy doors  being  unlocked, 
sound  of  hollow footsteps in a  freezer  cell,  heavy  dragging 
noises,  doors  closing,  ever  heavier dragging  noises  on  the 
stairs,  wet thud,  carving and sawing noises,  loud howling  and 
banging,  another  wet thud immediately followed my  ever  louder 
ripping and slobbering)

Boy, ever seen a stick-insect devour a whole cow?

Of  course,  I don't want to select a desktop every time I  boot. 
(During  a programming session,  my computer is likely  to  crash 
lotsa times, and I DON'T want to be bothered by desktop selectors 
or any other foolish auto-boot program).  So the first thing I do 
is check if the left shift key has been pressed. If this is true, 
my little program will come alive.

So, how do I check the left shift key?

Fortunately there is a system call that will do it for  you,  the 
Bios(11)  call.  This one will set or return the values  for  the 
special  keys like Shift,  Control and Alternate.  The  following 
call will return a bit-mapped value:

Kbshift%=Xbios(11,-1)

The following bits correspond to the following keys:

Bit  Key
0    right shift
1    left shift
2    control
3    Alternate
4    caps lock enabled
5    right mouse key (ALT-CLR/HOME)
6    left mouse key  (ALT-INSERT)
7    unused

So  by ANDing the value with 2^1,  you can see whether  the  left 
shift key is pressed or not:

If (Xbios(11,-1) And 2)<>0
.
.
Endif

(loud  burping,   clanging  of  bones  against  tungsten-carbide, 
growling)

SOULCRUSHER!, SLAYER! SHUT UP!!

The  next thing we have to do is to read all .INF files  into  an 
array  and allow the user to select one of these files.  For  the 
selection of file,  we use the Fsfirst and Fsnext  calls.  Pretty 
standard stuff,  so I am not going to spill it out  again.  Check 
out the source if your memory needs refreshing.

The  next thing we do it to display all the files on the  screen, 
the  first one highlighted.  Then we read the keyboard to see  if 
the user presses arrow-up or arrow-down. If he does this, we move 
the  highlight  by  displaying the  previously  highlighted  file 
normal again and the new file in reverse video.  Using the  VT-52 
escape  codes (escape-p for reverse-on and escape-q  for  reverse 
off) this is a piece of cake.

When  the  user presses return or selects a file  immediately  by 
pressing  one  of the function keys (files 1-10) or  one  of  the 
numeric  keys (files 11-20),  it is time to install the  selected 
desktop and exit the program.

We open the wanted file,  determine its length,  create a  string 
large enough to hold the entire file (to my knowledge,  there are 
no  desktop files larger than 32K,  so we can use this  method!), 
read the file and write the file from the string to DESKTOP.INF

After  that,  we leave the program and the ST will boot with  the 
desired desktop!

If you think about it,  it is all very simple. For documented GfA 
source,  take a look in the PROGRAMS folder on this disk. It will 
contain  the  DESKSEL.BAS file (amongst  some  other  interesting 
stuff)  ready  for  you to be compiled and  placed  in  the  AUTO 
folder.

This program also offers some sort of a solution to the  WordPlus 
info file bug.  Just create two info files for WordPlus,  one for 
monochrome  and one for medium res.  Depending on the  resolution 
and  the  selected desktop,  this program can install  the  right 
WORDPLUS.INF file.

If  you  like the idea behind this  program,  STRIKE-a-LIGHT  has 
created  a program called BOOTSTART which is similar to  DeskSel, 
only  it  also allows you to  install  accessories,  auto-booting 
programs and more stuff. For more info:

STRIKE-a-LIGHT
Grote Berg 85
5611 KJ Eindhoven
Holland

Telephone: 040-455281

To conclude this article, I would like to tell y...*(*1ij)U(&*!!"

OH NO! I forgot to feed Slayer!

(Loud banging noises and growling,  breaking of tungsten-carbide, 
drooling and slurping noises)

NO...BACK OFF SLAYER!!

NO!!! AAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHH!!!

(Sounds  of flesh being torn,  ripping claws and snapping  fangs. 
The loud cries of pain end abruptly)

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.