
REM ---- S3kill.opo needed to run this program
REM ---- S3kill is found in the Psion Library 
REM ---- on Compuserve.
REM ---- Mark Esposito - 1992 Pelican Software

PROC killapps:
local g%,serr%,aerr%,derr%,werr%,wlderr%,cerr%,d%,err%,fl%
local agenda%,data%,word%,world%,calc%,sav$(27),spy%,spread%,chess%,prog%
giprint"Pelican Software"
gfont 2 :gstyle 8
gat 150,48
gprint"APP KILLER!"
sav$="Does not save changes!"
loader:("s3kill")
dinit"Kill All or Individual"
dposition -1,0
dbuttons "All",%A,"Individual",%I
d%=dialog
if d%=%a or d%=%A
 fl%=1
 busy "Killing All Apps..."
endif
do
aerr%=appid%:("AGENDA",ADDR(agenda%))
if aerr%=0
if fl%=0
 dinit"Quit AGENDA?"
 dposition -1,0
 dbuttons "Yes",%Y,"No",%N,"System",27
 d%=dialog
endif
 if d%=%Y or d%=%y or fl%=1
  appkill%:(agenda%)
 elseif d%=0
  return
 endif
endif
until aerr%<0 or d%=%n or d%=%N
do
derr%=appid%:("DATA",ADDR(data%))
if derr%=0
if fl%=0
 dinit"Quit DATA?"
 dposition -1,0
 dbuttons "Yes",%Y,"No",%N,"System",27
 d%=dialog
endif
 if d%=%Y or d%=%y or fl%=1
  appkill%:(data%)
 elseif d%=0
  return
 endif
endif
until derr%<0 or d%=%n or d%=%N
do
werr%=appid%:("WORD",ADDR(word%))
if werr%=0
if fl%=0
 dinit"Quit WORD/Prog Editor?"
 dposition -1,0
 dtext "",sav$,2
 dbuttons "Yes",%Y,"No",%N,"System",27
 d%=dialog
endif
 if d%=%Y or d%=%y or fl%=1
  appkill%:(Word%)
 elseif d%=0
  return
 endif
endif
until werr%<0 or d%=%n or d%=%N
do
wlderr%=appid%:("WORLD",ADDR(world%))
if wlderr%=0
if fl%=0
  dinit"Quit WORLD?"
 dposition -1,0
 dbuttons "Yes",%Y,"No",%N,"System",27
 d%=dialog
endif
 if d%=%Y or d%=%y or fl%=1
  appkill%:(world%)
 elseif d%=0
  return
 endif
endif
until wlderr%<0 or d%=%n or d%=%N
do
cerr%=appid%:("CALC",ADDR(calc%))
if cerr%=0
if fl%=0
  dinit"Quit CALC?"
 dposition -1,0
 dbuttons "Yes",%Y,"No",%N,"System",27
 d%=dialog
endif
 if d%=%Y or d%=%y or fl%=1
  appkill%:(calc%)
 elseif d%=0
  return
 endif
endif
until cerr%<0 or d%=%n or d%=%N
serr%=appid%:("SPY",ADDR(spy%))
if serr%=0
if fl%=0
  dinit"Quit SPY?"
 dposition -1,0
 dbuttons "Yes",%Y,"No",%N,"System",27
 d%=dialog
endif
 if d%=%Y or d%=%y or fl%=1
  appkill%:(spy%)
 elseif d%=0
  return
 endif
endif
do
serr%=appid%:("SH3",ADDR(spread%))
if serr%=0
if fl%=0
  dinit"Quit SREADSHEET?"
 dposition -1,0
 dbuttons "Yes",%Y,"No",%N,"System",27
 d%=dialog
endif
 if d%=%Y or d%=%y or fl%=1
  appkill%:(spread%)
 endif
endif
until serr%<0 or d%=%n or d%=%N
do
err%=appid%:("CHESS",ADDR(chess%))
if err%=0
if fl%=0
  dinit"Quit CHESS?"
 dposition -1,0
 dbuttons "Yes",%Y,"No",%N,"System",27
 d%=dialog
endif
 if d%=%Y or d%=%y or fl%=1
  appkill%:(chess%)
 elseif d%=0
  return
 endif
endif
until err%<0 or d%=%n or d%=%N
do
err%=appid%:("SYS$PRGO",ADDR(prog%))
if err%=0
if fl%=0
  dinit"Quit Running Program?"
 dposition -1,0
 dbuttons "Yes",%Y,"No",%N,"System",27
 d%=dialog
endif
 if d%=%Y or d%=%y or fl%=1
  appkill%:(prog%)
 elseif d%=0
  return
 endif
endif
until err%<0 or d%=%n or d%=%N
busy off
ENDP

proc loader:(f$)
local dev$(2),path$(6),ext$(4)
path$="\opo\" :ext$=".opo"
dev$="m:"
do
 trap loadm dev$+path$+f$+ext$
 if err
  dev$="A:"
 else break
 endif
 trap loadm dev$+path$+f$+ext$
 if err
  dev$="B:"
 else break
 endif
 trap loadm dev$+path$+f$+ext$
 if err
  giprint err$(err)
  return
 endif
 break
until 0
endp
