' MSP-UPCASE in BASIC eingebunden
'
' von Lars Jedinski
'
GOSUB Init                        ' Einbinden
INPUT "Eingabe : ",Eing$
CLS
LOCATE 10,5 : PRINT "Vorher   : ";Eing$

CALL Upcase&(SADD(Eing$))      ' Aufruf unseres UPCASE !!!

LOCATE 12,5 : PRINT "Nachher  : ";Eing$
GOTO Ende

Init:
 DECLARE FUNCTION AllocMem&(laenge,ort) LIBRARY
 DECLARE FUNCTION FreeMem&(zeiger,laenge) LIBRARY
 LIBRARY "exec.library"
 READ laenge&
 IF laenge&=0 THEN GOTO Ende.2
 Upcase& = AllocMem&(laenge&,1)
 IF Upcase& = 0 THEN
   PRINT "Kein RAM fÜr uns !!!" : BEEP
   GOTO Ende.2
 END IF
 FOR i&=0 TO laenge&-1
   READ wert$ : wert = VAL("&h"+wert$)
   POKE Upcase&+i&,wert
 NEXT i&
RETURN

Ende:
 dumm&=FreeMem&(Upcase&,laenge&) ' FreeMem ist eine Function, die einen
                                 ' "ÜberflÜssigen" Wert als Ergebnis hat
Ende.2:
 LIBRARY CLOSE
 END

' Das ist unser MSP-Programm :

DATA   144 : REM Länge des MSP-codes
DATA  0, 0, 3,F3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0
DATA  0, 0, 0,1B, 0, 0, 3,E9, 0, 0, 0,1B,48,E7,FF,FE,20,6F, 0,40
DATA 42,80,42,81,12,30, 0, 0,B2,3C, 0, 0,67, 0, 0,50,B2,3C, 0,E4
DATA 66, 0, 0, A,12,3C, 0,C4,60, 0, 0,36,B2,3C, 0,F6,66, 0, 0, A
DATA 12,3C, 0,D6,60, 0, 0,26,B2,3C, 0,FC,66, 0, 0, A,12,3C, 0,DC
DATA 60, 0, 0,16,B2,3C, 0,61,6B, 0, 0, E,B2,3C, 0,7A,62, 0, 0, 6
DATA  4, 1, 0,20,11,81, 0, 0,52,40,60, 0,FF,A8,4C,DF,7F,FF,4E,75
DATA  0, 0, 3,F2
