'************************
'*      HochTief        *
'*                      *
'*     written by       *
'*    Andreas Lesch     *
'*     Okerstr.30A      *
'*  5090 Leverkusen 1   *
'************************
  
WINDOW CLOSE 1
' *********** T I T E L ***********
ON BREAK GOSUB ende
BREAK ON

DECLARE FUNCTION Move& LIBRARY
DECLARE FUNCTION OpenDiskFont& LIBRARY

main:

SCREEN 1,640,256,3,2
WINDOW 2,"",,0,1
MENU 1,0,0,""
FOR x=0 TO 7
  i=i+10
  y=y+.125
  PALETTE x,y,0,0
  LINE (0+i,0+i)-(WINDOW(2)-i,WINDOW(3)-i),x,bf
NEXT x 
                                
ON ERROR GOTO fehler
fehler=0
LIBRARY "diskfont.library"                  
fehler=1
LIBRARY "graphics.library"
fehler=2
LIBRARY "intuition.library"
fehler=3

i=13
                                
COLOR 0,3
diskfont "sapphire",19

LOCATE 14,21 
shadow2 "      HochTief",31
LOCATE 17,23 
shadow2 "          by <StarSoft ©>",18
LOCATE 20,23
shadow2 "          Linke Maustaste",18
CALL SetFont&(WINDOW(8),altfont&)
i=0:j=0
fl:
IF j=0 THEN i=i+.001
IF j=1 THEN i=i-.001

IF i>.8 THEN j=1
IF i<.2 THEN j=0
PALETTE 0,i,0,0
IF  MOUSE(0)=0 THEN fl
WINDOW CLOSE 2
     
WINDOW 2,,(0,10)-(631,240),0,1

FOR farbe=0 TO 6
  PALETTE farbe,0,0,0
NEXT farbe
            

                     

'********** Variablen *************
Variablen:
altfont&=PEEKL(WINDOW(8)+52)
scr&=PEEKL(WINDOW(7)+46)
setzen&=5 : betrag&=100 :index=0 :h=1 :ind=1 :zaehler=1


RANDOMIZE TIMER

'********** Farben ****************
 
DATA .8,.8,.8, 0,0,0, .8,0,0, 0,0,.4, .3,.5,.9, 1,.2,.3

'********** Grafiken Datenfelder **
  DIM SHARED KaroKlein%(30),PikKlein%(30),HerzKlein%(30),KreuzKlein%(30)
  DIM SHARED KaroGross%(93),PikGross%(93),HerzGross%(93),KreuzGross%(93) 
  COLOR 4,2:CLS
  COLOR 7,2
  LOCATE 13,23 : PRINT "HochTief  von  Andreas Lesch <StarSoft ©>"
  LOCATE 16,24 : PRINT  "Geben Sie Ihren Namen ein (7 Stellen):"
  LOCATE 18,34 : LINE INPUT nam1$
  COLOR 4,2        
  AREA (51,48):AREA (47,51):AREA (51,54):AREA (55,51):AREAFILL     'Karo
  AREA (90,70):AREA (82,75):AREA (90,80):AREA (98,75):AREAFILL  
  GET (46,48)-(56,54),KaroKlein%
  GET (81,70)-(99,80),KaroGross%  
  CIRCLE (10,5),2:CIRCLE (14,5),2:PAINT (10,5):PAINT (14,5)
  AREA (8,6):AREA (12,9):AREA (16,6):AREAFILL
  CIRCLE (28,10),4:CIRCLE (36,10),4:PAINT (28,10):PAINT (36,10)     'Herz
  AREA (24,11):AREA (32,16):AREA (40,11):AREAFILL
  GET (7,3)-(17,9),HerzKlein%
  GET (22,6)-(40,16),HerzGross%
  COLOR 3,2
  CIRCLE (50,15),2:CIRCLE (54,15),2:PAINT (50,15):PAINT (54,15)      'Pik
  AREA (48,14):AREA (52,11):AREA (56,14):AREAFILL
  LINE (52,16)-(52,17)
  CIRCLE (68,10),4:CIRCLE (76,10),4:PAINT (68,10):PAINT (76,10)     'Pik
  AREA (64,9):AREA (72,5):AREA (79,8):AREAFILL 
  AREA (72,12):AREA (70,14):AREA (74,14):AREAFILL   
  GET (47,11)-(57,17),PikKlein% 
  GET (63,5)-(81,14),PikGross% 
  CIRCLE (100,15),2:CIRCLE (106,15),2:CIRCLE (103,13),2
  PAINT (100,15):PAINT (106,15):PAINT (103,13):LINE (103,16)-(103,17) 'Kreuz
  CIRCLE (200,30),3:CIRCLE(208,30),3:CIRCLE (204,27),3
  PAINT (200,30):PAINT(208,30):PAINT (204,27):LINE (204,28)-(204,30)
  AREA (204,30):AREA (202,33):AREA (206,33):AREAFILL
  GET (98,11)-(108,17),KreuzKlein% 
  GET (195,24)-(213,33),KreuzGross%
  PALETTE 7,0,0,0
COLOR 1,0:CLS

'********** Programmsteuerung *****
ON MOUSE GOSUB mauskontrolle

'********** HAUPTSCHLEIFE **********
GOSUB hiscoreLesen:
GOSUB titel

HauptSchleife:
  MOUSE ON                                 
  taste$=INKEY$
  IF taste$=CHR$(27) THEN
    ende:
    IF HiJa =1 THEN GOSUB HiscoreSchreiben
    MENU RESET
    LIBRARY CLOSE
    END
  END IF
GOTO HauptSchleife

'********** Unterprogramme ********
titel:
  diskfont "sapphire",19
  LINE (224,2)-(387,21),3,bf
  LOCATE 1,13
  COLOR 3,4
  PRINT  "   HochTief   "
  CALL SetFont&(WINDOW(8),altfont&)
  LINE (165,25)-(451,33),3,bf
  GOSUB HS
  GOSUB KartenHinten
  GOSUB taste 
  CIRCLE (168,196),70,3:PAINT (168,192),3
  CIRCLE (172,194),70,4:PAINT (172,192),4 
  CIRCLE (464,196),70,3:PAINT (464,192),3
  CIRCLE (468,194),70,4:PAINT (468,192),4 
  GOSUB Gesetzt
  GOSUB Haben
  PALETTE 0,0,.5,0 : PALETTE 1,0,.5,0 
  FOR FarbNr=2 TO 7
    READ r,g,b
    PALETTE FarbNr,r,g,b
  NEXT FarbNr  
RETURN
HS:
  LOCATE 4,22
  COLOR 5,4
  PRINT  "H i g h s c o r e : ";
  PRINT USING "\     \";nam$,
  PRINT USING "#######";score&;
  PRINT " $"
RETURN

mauskontrolle:     
  dummy=MOUSE(0) : x=MOUSE(1) : y=MOUSE(2)
  IF y>124 AND y<146  THEN
    IF x>49 AND x<151 AND ja=0 THEN
      LINE (50,125)-(150,145),3,bf
      GOSUB Warte
      GOSUB taste
      IF x<99 THEN
        setzen&=setzen&+1
        IF setzen&>20 THEN setzen&=20
        GOSUB Gesetzt
      END IF 
      IF x>100 THEN
        setzen&=setzen&-1
        GOSUB Gesetzt
      END IF         
    END IF  'Setzen
    
    IF x>189 AND x<291 AND ja=0 THEN
      ja=1 : posi%=0 :j=0
      LINE (190,125)-(290,145),3,bf
      IF setzen&>betrag& THEN
        setzen&=betrag&
        GOSUB Gesetzt
      END IF  
      GOSUB Warte
      GOSUB taste
      GOSUB KartenHinten
      GOSUB ZufallsZahl
      altsetzen&=setzen&   
    END IF   'Spiel
                                     
    IF x>329 AND x<431 AND j=0 THEN
      LINE (330,125)-(430,145),3,bf
      GOSUB Warte
      GOSUB taste
      posi%=posi%+110
      GOSUB ZufallsZahl
      IF zahl(index)<zahl(index-1) THEN GOSUB verloren ELSE setzen&=setzen&+setzen&     
      GOSUB Gesetzt
      GOSUB Haben
      IF index=5 THEN GOSUB gewonnen
    END IF
    
    IF x>469 AND x<571 AND j=0 THEN
      LINE (470,125)-(570,145),3,bf
      GOSUB Warte
      GOSUB taste
      posi%=posi%+110                
      GOSUB ZufallsZahl
      zahl(0)=zahl(index)
      IF zahl(index)>zahl(index-1) THEN GOSUB verloren ELSE setzen&=setzen&+setzen&      
      GOSUB Gesetzt
      GOSUB Haben      
      IF index=5 THEN GOSUB gewonnen
    END IF    
  END IF
  IF index>2 THEN
    LINE (255,162)-(375,192),3,bf
    LINE (257,160)-(377,190),5,bf
    LINE (266,165)-(368,185),4,bf
    LOCATE 22,36 : PRINT CHR$(252)"bernehmen"
  END IF
  IF x>265 AND x<369 AND y>164 AND y<186 AND ja=1 AND index>2 THEN  GOSUB gewonnen 
RETURN
 
verloren:
  FOR klang=500 TO 100 STEP -50
    SOUND klang,1
  NEXT klang  
  betrag&=betrag&-setzen&
  GOSUB Haben
  GOSUB Gesetzt
  GOSUB Ueberweg
  GOSUB var
  GOSUB Gesetzt
  IF betrag&<1 THEN 
    betrag&=100
    setzen&=5
    FOR klang=1000 TO 2000 STEP 100
      SOUND klang,1,INT(klang/10)
    NEXT klang
    CALL tilt
    GOSUB Haben
    GOSUB Gesetzt
    FOR klang=2000 TO 1000 STEP -100
      SOUND klang,1,INT(klang/10)
    NEXT klang     
  END IF  
RETURN HauptSchleife 
gewonnen:
  FOR klang=100 TO 500 STEP 50
    SOUND klang,1
  NEXT klang    
  betrag&=betrag&+setzen&
  GOSUB Haben
  GOSUB Gesetzt
  GOSUB var
  GOSUB Ueberweg
  GOSUB Gesetzt
  IF betrag&>score& THEN
    HiJa=1
    nam$=nam1$:score&=betrag&
    GOSUB HS
  END IF  
  IF betrag&>999999& THEN 
    betrag&=100
    setzen&=5
    FOR klang=1000 TO 5000 STEP 500
      SOUND klang,1
    NEXT klang 
    FOR klang=5000 TO 1000 STEP -500
      SOUND klang,1
    NEXT klang       
    GOSUB Haben
    GOSUB Gesetzt
  END IF    
RETURN HauptSchleife 
Ueberweg:
  LINE (255,160)-(377,192),0,bf
RETURN
     
var:
  posi%=0:index=0:ja=0:j=1:fehler=0:h(i)=0:ind=1:i=0:setzen&=altsetzen&
RETURN     
taste:
xs=0
  FOR i=1 TO 4
    LINE (xs+37,122)-(xs+157,152),3,bf
    LINE (xs+40,120)-(xs+160,150),5,bf
    LINE (xs+50,125)-(xs+150,145),7,bf
    xs=xs+140
  NEXT i 
  COLOR 5,7
  LOCATE 17,8 : PRINT "+ Setzen -" 
  LOCATE 17,28: PRINT "Spiel"
  LOCATE 17,46: PRINT "h"CHR$(246)"her"
  LOCATE 17,63: PRINT "tiefer"
RETURN
Warte:
  FOR i=1 TO 100 : NEXT
RETURN      

KartenHinten:
  FOR karten%=40 TO 480 STEP 110
    CALL karte (karten%,6)                   
  NEXT karten%    
RETURN

ZufallsZahl:
  index=index+1
  zaehler=zaehler+1
  neu:
  zahl(index)=INT(1+((32)*RND))
  help=zahl(index)
  h(i)=index
  FOR i=1 TO 6
  IF zahl(i)=help AND h(i) <> index THEN GOTO neu
  NEXT i
 
  IF posi%>440 THEN posi%=0 
  IF zahl(index)= 1 THEN CALL Sieben(posi%,KaroKlein%(),KaroGross%(),4)
  IF zahl(index)= 2 THEN CALL Sieben(posi%,HerzKlein%(),HerzGross%(),4)
  IF zahl(index)= 3 THEN CALL Sieben(posi%,PikKlein%(),PikGross%(),3)
  IF zahl(index)= 4 THEN CALL Sieben(posi%,KreuzKlein%(),KreuzGross%(),3)
  IF zahl(index)= 5 THEN CALL Acht(posi%,KaroKlein%(),KaroGross%(),4)
  IF zahl(index)= 6 THEN CALL Acht(posi%,HerzKlein%(),HerzGross%(),4)
  IF zahl(index)= 7 THEN CALL Acht(posi%,PikKlein%(),PikGross%(),3)
  IF zahl(index)= 8 THEN CALL Acht(posi%,KreuzKlein%(),KreuzGross%(),3)
  IF zahl(index)= 9 THEN CALL Neun(posi%,KaroKlein%(),KaroGross%(),4)
  IF zahl(index)=10 THEN CALL Neun(posi%,HerzKlein%(),HerzGross%(),4)
  IF zahl(index)=11 THEN CALL Neun(posi%,PikKlein%(),PikGross%(),3)
  IF zahl(index)=12 THEN CALL Neun(posi%,KreuzKlein%(),KreuzGross%(),3)
  IF zahl(index)=13 THEN CALL Zehn(posi%,KaroKlein%(),KaroGross%(),4)
  IF zahl(index)=14 THEN CALL Zehn(posi%,HerzKlein%(),HerzGross%(),4)
  IF zahl(index)=15 THEN CALL Zehn(posi%,PikKlein%(),PikGross%(),3)
  IF zahl(index)=16 THEN CALL Zehn(posi%,KreuzKlein%(),KreuzGross%(),3)
  IF zahl(index)=17 THEN CALL Bube(posi%,KaroKlein%(),KaroGross%(),4)
  IF zahl(index)=18 THEN CALL Bube(posi%,HerzKlein%(),HerzGross%(),4)
  IF zahl(index)=19 THEN CALL Bube(posi%,PikKlein%(),PikGross%(),3)
  IF zahl(index)=20 THEN CALL Bube(posi%,KreuzKlein%(),KreuzGross%(),3)
  IF zahl(index)=21 THEN CALL Dame(posi%,KaroKlein%(),KaroGross%(),4)
  IF zahl(index)=22 THEN CALL Dame(posi%,HerzKlein%(),HerzGross%(),4)
  IF zahl(index)=23 THEN CALL Dame(posi%,PikKlein%(),PikGross%(),3)
  IF zahl(index)=24 THEN CALL Dame(posi%,KreuzKlein%(),KreuzGross%(),3)
  IF zahl(index)=25 THEN CALL Koenig(posi%,KaroKlein%(),KaroGross%(),4)
  IF zahl(index)=26 THEN CALL Koenig(posi%,HerzKlein%(),HerzGross%(),4)
  IF zahl(index)=27 THEN CALL Koenig(posi%,PikKlein%(),PikGross%(),3)
  IF zahl(index)=28 THEN CALL Koenig(posi%,KreuzKlein%(),KreuzGross%(),3)
  IF zahl(index)=29 THEN CALL Asi(posi%,KaroKlein%(),KaroGross%(),4)
  IF zahl(index)=30 THEN CALL Asi(posi%,HerzKlein%(),HerzGross%(),4)
  IF zahl(index)=31 THEN CALL Asi(posi%,PikKlein%(),PikGross%(),3)
  IF zahl(index)=32 THEN CALL Asi(posi%,KreuzKlein%(),KreuzGross%(),3)
 
RETURN

Gesetzt:
  COLOR 5,4
  IF setzen&<1 THEN setzen&=1
  IF setzen&>betrag& THEN setzen&=betrag&
  LOCATE 25,14 :PRINT  "Gesetzt:";
  PRINT USING"#####";setzen&;
  PRINT " $"
RETURN
  
Haben:
  COLOR 5,4
  LOCATE 25,51 :PRINT "Guthaben:";        
  PRINT USING"######";betrag&;                     
  PRINT " $" 
RETURN 

hiscoreLesen:
  OPEN "Hiscore_HochTief" FOR INPUT AS 1
    INPUT #1,score&
    INPUT #1,nam$
  CLOSE 1  
RETURN                                        
 
HiscoreSchreiben:
  OPEN "Hiscore_HochTief" FOR OUTPUT AS 1
    PRINT #1,score&
    PRINT #1,nam$
  CLOSE 1  
RETURN

fehler:
  IF ERR=53 THEN
    IF fehler=0 THEN
      errtext$="Diskfont.bmap"
      GOTO Fehlermeldung
    END IF  
    IF fehler=1 THEN
      errtext$="graphics.bmap"
      GOTO Fehlermeldung
    END IF  
    IF fehler=2 THEN
      errtext$="intuition.bmap"
      GOTO Fehlermeldung
    END IF  
    IF fehler=3 THEN  
      nam$="Andreas":score&=6125&
      GOSUB HiscoreSchreiben
      WINDOW 2
    END IF  
  END IF
RESUME

Fehlermeldung:
  WINDOW 3,"Error",(100,50)-(540,100),0,1
  PALETTE 2,1,1,1:PALETTE 0,0,0,0:PALETTE 1,.5,.5,.5
  COLOR 2,0:CLS
  LOCATE 2,1
  PRINT "Keine "errtext$" vorhanden"
  PRINT "Programm wird beendet"
  PRINT "Taste DrÜcken"
  SLEEP:SLEEP:SLEEP
  GOTO ende
     
SUB karte (position%,fa%) STATIC
  LINE (position%-6,43)-(position%+95,114),3,bf
  LINE (position%,39)-(position%+100,111),fa%,bf
END SUB

SUB schreiben (po%,Text$,fa%) STATIC
  CALL SetDrMd&(WINDOW(8),0)  'JAM1
  COLOR fa%,2
  lo=INT(po%/8)
  IF (po%=0 OR po%=440) AND Text$="10" THEN lo=lo-1 
  LOCATE 6,7+lo : PRINT Text$ : LOCATE 14,7+lo :PRINT Text$
  LOCATE 6,17+lo : PRINT Text$ : LOCATE 14,17+lo :PRINT Text$
  CALL SetDrMd&(WINDOW(8),1)  'JAM2 (normal)  
END SUB
  
SUB Asi (po%,FeldNamKl%(),FeldnamGr%(),farb%) STATIC  
  CALL karte (po%+40,2)
  PUT (47+po%,49),FeldNamKl%,PSET
  PUT (126+po%,49),FeldNamKl%,PSET 
  PUT (47+po%,95),FeldNamKl%,PSET        
  PUT (126+po%,95),FeldNamKl%,PSET
  PUT (82+po%,70),FeldnamGr%,PSET 
  CALL schreiben (po%,"A",farb%)
END SUB
  
SUB Koenig (po%,FeldNamKl%(),FeldnamGr%(),farb%) STATIC  
  CALL karte (po%+40,2) 
  PUT (47+po%,49),FeldNamKl%,PSET
  PUT (126+po%,49),FeldNamKl%,PSET
  PUT (47+po%,95),FeldNamKl%,PSET
  PUT (126+po%,95),FeldNamKl%,PSET         
  PUT (56+po%,42),FeldnamGr%,PSET
  PUT (106+po%,97),FeldnamGr%,PSET
  CALL schreiben (po%,"K",farb%)
END SUB 

SUB Dame (po%,FeldNamKl%(),FeldnamGr%(),farb%) STATIC   
  CALL karte (po%+40,2) 
  PUT (47+po%,49),FeldNamKl%,PSET
  PUT (126+po%,49),FeldNamKl%,PSET
  PUT (47+po%,95),FeldNamKl%,PSET
  PUT (126+po%,95),FeldNamKl%,PSET         
  PUT (56+po%,42),FeldnamGr%,PSET
  PUT (106+po%,97),FeldnamGr%,PSET
  CALL schreiben (po%,"D",farb%)
END SUB 

SUB Bube (po%,FeldNamKl%(),FeldnamGr%(),farb%) STATIC
  CALL karte (po%+40,2) 
  PUT (47+po%,49),FeldNamKl%,PSET
  PUT (126+po%,49),FeldNamKl%,PSET
  PUT (47+po%,95),FeldNamKl%,PSET
  PUT (126+po%,95),FeldNamKl%,PSET         
  PUT (56+po%,42),FeldnamGr%,PSET
  PUT (106+po%,97),FeldnamGr%,PSET
  CALL schreiben (po%,"B",farb%)
END SUB 

SUB Zehn (po%,FeldNamKl%(),FeldnamGr%(),farb%) STATIC
  CALL karte (po%+40,2) 
  PUT (47+po%,49),FeldNamKl%,PSET
  PUT (126+po%,49),FeldNamKl%,PSET
  PUT (47+po%,95),FeldNamKl%,PSET
  PUT (126+po%,95),FeldNamKl%,PSET         
  FOR i=42 TO 97 STEP 18
    PUT (58+po%,i),FeldnamGr%,PSET
    PUT (104+po%,i),FeldnamGr%,PSET
  NEXT i
  PUT (81+po%,51),FeldnamGr%,PSET
  PUT (81+po%,88),FeldnamGr%,PSET
  CALL schreiben (po%,"10",farb%)
END SUB 

SUB Neun (po%,FeldNamKl%(),FeldnamGr%(),farb%) STATIC
  CALL karte (po%+40,2) 
  PUT (47+po%,49),FeldNamKl%,PSET
  PUT (126+po%,49),FeldNamKl%,PSET
  PUT (47+po%,95),FeldNamKl%,PSET
  PUT (126+po%,95),FeldNamKl%,PSET         
  FOR i=42 TO 97 STEP 18
    PUT (58+po%,i),FeldnamGr%,PSET
    PUT (104+po%,i),FeldnamGr%,PSET
  NEXT i
  PUT (81+po%,70),FeldnamGr%,PSET
  CALL schreiben (po%,"9",farb%)
END SUB 

SUB Acht (po%,FeldNamKl%(),FeldnamGr%(),farb%) STATIC
  CALL karte (po%+40,2) 
  PUT (47+po%,49),FeldNamKl%,PSET
  PUT (126+po%,49),FeldNamKl%,PSET
  PUT (47+po%,95),FeldNamKl%,PSET
  PUT (126+po%,95),FeldNamKl%,PSET         
  FOR i=42 TO 97 STEP 27
    PUT (58+po%,i),FeldnamGr%,PSET
    PUT (104+po%,i),FeldnamGr%,PSET
  NEXT i
  PUT (81+po%,55),FeldnamGr%,PSET
  PUT (81+po%,84),FeldnamGr%,PSET
  CALL schreiben (po%,"8",farb%)
END SUB 

SUB Sieben (po%,FeldNamKl%(),FeldnamGr%(),farb%) STATIC
  CALL karte (po%+40,2) 
  PUT (47+po%,49),FeldNamKl%,PSET
  PUT (126+po%,49),FeldNamKl%,PSET
  PUT (47+po%,95),FeldNamKl%,PSET
  PUT (126+po%,95),FeldNamKl%,PSET         
  FOR i=42 TO 97 STEP 27
    PUT (58+po%,i),FeldnamGr%,PSET
    PUT (104+po%,i),FeldnamGr%,PSET
  NEXT i
  PUT (81+po%,55),FeldnamGr%,PSET
  CALL schreiben (po%,"7",farb%)
END SUB 
 
SUB diskfont(font$,height%) STATIC

  SHARED strFont&
  prefs%=96
  font0$=font$+".font"+CHR$(0)
  IF strFont&<>0 THEN CALL CloseFont(strFont&)
  textAttr&(0)=SADD(font0$)
  textAttr&(1)=height%*2^16+prefs%
  strFont&=OpenDiskFont&(VARPTR(textAttr&(0)))
  IF strFont&<>0 THEN CALL SetFont (WINDOW(8),strFont&)
  
END SUB
  
' *********** Shadow-Print ***********
'_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

SUB shadow(Text$,spacing%) STATIC

  depth%=2
  crsX%=POS(0)
  crsY%=(CSRLIN)*8            'Cursor-Koordinaten
  IF crsY%<8 THEN crsY%=8     'erste BS-Zeile ins Format
  CALL SetDrMd&(WINDOW(8),0)  'JAM1
  FOR loop%=1 TO LEN(Text$)
    b$=MID$(Text$,loop%,1)
    e&=Move&(WINDOW(8),crsX%-depth%,crsY%+depth%)
    COLOR 3,0                 'Schatten (schwarz) malen
    PRINT b$
    COLOR 4,0
    e&=Move&(WINDOW(8),crsX%,crsY%)
    PRINT b$                       'Zeichen malen
    crsX%=crsX%+spacing%
  NEXT loop%
  PRINT 
  CALL SetDrMd&(WINDOW(8),1)  'JAM2 (normal)
END SUB

SUB tilt STATIC 
  he&=PEEKL(WINDOW(7)+46)
  rp&=he&+84
  y%=255
  FOR i%=0 TO 49
    x%=16*i%
    CALL ScrollRaster(rp&,0,i%-20,x%,0,x%+15,y%)
  NEXT i%  
  x%=639 : n%=INT(255/50)
  FOR i%=0 TO 59
    y%=i%*n%
    CALL ScrollRaster(rp&,25-i%,0,0,y%,x%,y%+n%-1)
  NEXT i%
  FOR i=1 TO 2000:NEXT i
  FOR i=1 TO 65  
    CALL MoveScreen(he&,0,4)
  NEXT i   
  FOR i%=0 TO 59 
    y%=i%*n%
    CALL ScrollRaster(rp&,-25+i%,0,0,y%,x%,y%+n%-1)
  NEXT i%
  FOR i%=0 TO 49 
    x%=16*i%
    CALL ScrollRaster(rp&,0,-i%+20,x%,0,x%+15,y%)
  NEXT i%  
  FOR i=1 TO 65  
    CALL MoveScreen(he&,0,-4)
  NEXT i  
  
END SUB

'_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

SUB shadow2(Text$,spacing%) STATIC

  depth%=2
  crsX%=POS(0)
  crsY%=(CSRLIN)*8            'Cursor-Koordinaten
  IF crsY%<8 THEN crsY%=8     'erste BS-Zeile ins Format
  CALL SetDrMd&(WINDOW(8),0)  'JAM1
  FOR loop%=1 TO LEN(Text$)
    b$=MID$(Text$,loop%,1)
    e&=Move&(WINDOW(8),crsX%+depth%,crsY%+depth%)
    COLOR 0,0                 'Schatten (schwarz) malen
    PRINT b$
    COLOR 4,0
    e&=Move&(WINDOW(8),crsX%,crsY%)
    PRINT b$                       'Zeichen malen
    crsX%=crsX%+spacing%
  NEXT loop%
  PRINT 
  CALL SetDrMd&(WINDOW(8),1)  'JAM2 (normal)
  
  END SUB
    
  
