' ---------------------------------------------------------------------------
' -           Demoprogramm zu den Compiler-Patches von GFA_PTCH             -
' -                              13.07.93                                   -
' ---------------------------------------------------------------------------
' - Compiler & Library-Patches von                                          -
' - Christoph Conrad, Adalbertsteinweg 113, D-52070 Aachen                  -
' -                                                                         -
' - Interpreter-Patches und GEM-Oberfl„che von                              -
' - Gregor Duchalski, Baueracker 15a, D-44627 Herne                         -
' ---------------------------------------------------------------------------
$m 60000
' $I+, damit EVERY/AFTER/Break ber CTRL/SHIFT/ALT. Sollten unter MiNT, MultiTOS
' und in Accessorys berhaupt nicht verwendet werden, in normalen Applikationen
' ist es auch unsauber, da eine Applikation sich in Vektoren einh„ngt (ohne XBRA).
' Hier nur als Demo.
'
$U+,I+
EVERY 200 GOSUB ping
'
ON BREAK GOSUB break
ON ERROR GOSUB err
'
auto!=BTST(ERR,0)
acc!=BTST(ERR,1)
nomem!=BTST(ERR,2)
'
' WICHTIG!
IF NOT auto!
  CLIP OFF
ENDIF
'
' >>> $m-Speicher stand nicht zur Verfgung
IF nomem!
  PRINT "Speicheranforderung nicht erfllt!"
  IF auto!
    ' $I- im Autoordner vor Terminieren IMMENS wichtig, falls vorher $I+!!!!
    ' Aush„ngen aus diversen Vektoren
    $I-
    ' !!! Programm im Autoordner niemals mit END oder SYSTEM beenden !!!
    ' klappt zwar z.B. unter 1.04, aber es werden v_clsvwk / appl_exit aufgerufen
    ' bei Rckgabewert 0: auch ~GEMDOS(0) m”glich
    ~GEMDOS(76,1)
  ELSE
    SYSTEM
  ENDIF
ENDIF
'
' >>> Autooordner
IF auto!
  PRINT "Autoordner!"
  '
  WHILE NOT INP?(2)
  WEND
  '
  ' $I- im Autoordner vor Terminieren IMMENS wichtig, falls vorher $I+
  $I-
  ~GEMDOS(0)
ENDIF
'
' >>> Accessory
IF acc!
  ' $I- im Accessory wichtig, falls vorher $I+!!!!
  ' - wegen Aufl”sungswechseln
  ' - Entladen mit CHAMELEON
  $I-
  '
  ' APPL_INIT() ist eine Dummy-Funktion und liefert nur die im Initteil
  ' ermittelte Application-Id
  ~MENU_REGISTER(APPL_INIT(),"  Prgname ")
  '
  ' Beispiel...
  DO
    ~EVNT_MESAG(0)
    IF MENU(1)=40
      txt$="[1][Bitte als normales|Programm laufen lassen!|][OK]"
      ~FORM_ALERT(1,txt$)
    ENDIF
  LOOP
ENDIF
'
' >>> normales Programmm
'
PRINT "Normales Programm!"
WHILE NOT INP?(2)
WEND
'
' Fehler fr ERR erzeugen
~1/0
label:
PRINT "Hi"
'
> PROCEDURE err
  PRINT
  PRINT "Div / 0"
  RESUME label
RETURN
> PROCEDURE break
  PRINT
  PRINT "Hi break"
RETURN
> PROCEDURE ping
  ~BIOS(3,2,7)
RETURN
