1   500 CALL CLEAR 
   2   510 ON WARNING NEXT 
   3   520 OPTION BASE 1 
   4   530 DIM H$ ( 20 ) , N$ ( 9 ) , HS ( 260 ) , TS ( 9 ) , RA ( 9 ) 
   5   540 S$ = "()      " & CHR$ ( 136 ) & CHR$ ( 137 ) 
   6   550 FOR I = 1 TO 19 
   7   560 H$ ( I ) = SEG$ ( "!!!!!!!!!!!!!!!!!!*+      " & CHR$ ( 138 ) & CHR$ ( 139 ) & "!!!!!!!!!!!!!!!!!!!" , I , 28 ) 
   8   570 NEXT I 
   9   580 DEF TP ( X ) = INT ( X / 60 ) 
  10   590 DEF TQ ( X ) = INT ( ( X - TP ( X ) * 60 ) * 100 ) / 100 
  11   600 REM  DEFINITION
  12   610 CALL CHAR ( 33 , "000000FFFF" , 128 , "0000001824C3" ) 
  13   620 Z$ = "070707070707040400C0F0F0C000000004040404040404040" 
  14   630 CALL CHAR ( 40 , Z$ , 136 , Z$ , 129 , "000000FFFF" , 64 , "000010107C101" ) 
  15   640 CALL CHAR ( 96 , "000707070F1F1315191101000000030E000000E0B19ACCC0C0C0C0EEF8E08" ) 
  16   650 CALL CHAR ( 100 , "000303071F3727272F37270606060202008080C0F0D8C8C8E8D8C8C0C0C0808" ) 
  17   660 CALL CHAR ( 104 , "000000078D593303030303771F07010000E0E0E0F0F8C8A8988880000000C07" ) 
  18   670 GOSUB 2570
  19   680 CALL SCREEN ( 12 )  :: DISPLAY ERASE ALL AT ( 6 , 2 )  : "ANZAHL SPIELER [1-9]?:1" 
  20   690 ACCEPT AT ( 6 , 24 ) BEEP VALIDATE ( DIGIT ) SIZE ( - 1 )  : SPIELER  :: IF SPIELER = 0 OR SPIELER >; 9 THEN 690
  21   700 IF SPIELER = 1 THEN 770
  22   710 DISPLAY AT ( 9 , 1 )  : "NAMENSEINGABE :" 
  23   720 FOR G = 1 TO SPIELER 
  24   730 DISPLAY AT ( 10 + G , 1 )  : "SPIELER " & STR$ ( G ) & "?:" 
  25   740 ACCEPT AT ( 10 + G , 13 ) BEEP VALIDATE ( UALPHA , ".-" ) SIZE ( 8 )  : N$ ( G ) 
  26   750 IF N$ ( G ) = "" THEN 740
  27   760 NEXT G 
  28   770 CALL SCREEN ( 4 )  :: DISPLAY AT ( 9 , 1 ) ERASE ALL  : "GEBEN SIE DIE NUMMER DER    PISTE AN, AUF DER SIE FAHRENWOLLEN[1-9999]: 1" 
  29   780 ACCEPT AT ( 11 , 17 ) SIZE ( - 4 ) BEEP VALIDATE ( DIGIT )  : PSN  :: IF PSN = 0 THEN 780
  30   790 CALL CLEAR  :: CALL SCREEN ( 8 ) 
  31   800 DISPLAY AT ( 4 , 2 )  : "BITTE WAEHLEN SIE:"  :  : TAB ( 4 )  ; "1 ABFAHRT      \"  : TAB ( 20 )  ; ">;EINFACH"  : TAB ( 4 )  ; "2 RIESENSLALOM /"  :  : TAB ( 4 )  ; "3 SLALOM       >;SCHWIERIG" 
  32   810 CALL KEY ( 0 , K , S ) 
  33   820 IF K <; 49 OR K >; 51 THEN 810
  34   830 ON K - 48 GOTO 840, 860, 880
  35   840 F1 = 3  :: F2 = 8  :: F3 = 8  :: F4 = 12  :: F5 = 1.0 
  36   850 GOTO 890
  37   860 F1 = 4  :: F2 = 7  :: F3 = 7  :: F4 = 16  :: F5 = 0.5 
  38   870 GOTO 890
  39   880 F1 = 5  :: F2 = 3  :: F3 = 3  :: F4 = 24  :: F5 = 2 
  40   890 CALL CLEAR 
  41   900 CALL MAGNIFY ( 3 ) 
  42   910 CALL CLEAR  :: CALL SCREEN ( 14 ) 
  43   930 Z$ = "070707070707040400C0F0F0C000000004040404040404040" 
  44   940 IF K <; >; 51 THEN Z$ = "2030383F3F3F3F3F040C1CFCFCFCFCFC3F2F272020202020FCF4E40404040404" 
  45   950 CALL CHAR ( 40 , Z$ , 136 , Z$ ) 
  46   960 Z$ = "" 
  47   970 RANDOMIZE PSN 
  48   980 LS = INT ( 60 + 200 * RND )  :: SL = 1 
  49   985 DISPLAY AT ( 10 , 7 )  : "BITTE WARTEN"  :  : "[ PISTE NR."  ; PSN  ; "LAENGE:"  ; INT ( LS / F1 * 10 )  ; "M"  : "  WIRD GERADE PRAEPARIERT ]" 
  50   990 FOR I = 1 TO LS 
  51  1000 HS ( I ) = INT ( 51 + RND * 100 ) 
  52  1010 NEXT I 
  53  1020 FOR I = 1 TO LS - 5 
  54  1030 IF F1 = 3 THEN HS ( I ) = INT ( 19 * RND + 1 ) ELSE HS ( I ) = INT ( 10 + SGN ( SL ) * ( 3 + 6 * RND ) )  :: SL = - SL 
  55  1040 HS ( I + 1 ) = HS ( I ) + 20 
  56  1050 I = I + F2 + INT ( F3 * RND ) 
  57  1060 NEXT I 
  58  1070 CALL COLOR ( 0 , 2 , 8 , 1 , 16 , 16 , 2 , 7 , 16 , 3 , 2 , 16 , 4 , 2 , 16 , 5 , 2 , 16 , 6 , 2 , 16 ) 
  59  1080 CALL COLOR ( 7 , 2 , 16 , 8 , 2 , 16 , 9 , 5 , 16 , 10 , 5 , 16 , 11 , 2 , 16 , 12 , 2 , 16 , 13 , 2 , 16 , 14 , 5 , 16 ) 
  60  1090 CALL SCREEN ( 8 ) 
  61  1100 REM  START
  62  1110 FOR G = 1 TO 9  :: TS ( G ) , RA ( G ) = 0  :: NEXT G 
  63  1120 FOR SP = 1 TO SPIELER 
  64  1130 CALL CLEAR 
  65  1140 CALL DELSPRITE ( ALL ) 
  66  1150 CALL VCHAR ( 1 , 31 , 31 , 96 ) 
  67  1160 IF SPIELER = 1 THEN 1180
  68  1170 DISPLAY AT ( 2 , 2 )  : "NR."  ; SP  ; " "  ; N$ ( SP ) 
  69  1180 DISPLAY AT ( 6 , 1 )  : "          " & RPT$ ( CHR$ ( 129 ) , 7 ) & "                      START" 
  70  1190 DISPLAY AT ( 14 , 1 )  : TAB ( 10 )  ; S$  : H$ ( 10 ) 
  71  1200 CALL SPRITE ( # 1 , 100 , 3 + SP , 26 , 120 , 0 , 0 ) 
  72  1210 ZIEL , T = 0 
  73  1220 CALL KEY ( 1 , K , S ) 
  74  1230 IF K <; >; 18 THEN 1220
  75  1240 FOR ZA = 1 TO 3 
  76  1250 CALL SOUND ( 100 , 440 , 9 ) 
  77  1260 CALL SOUND ( 100 , 110 , 30 ) 
  78  1270 NEXT ZA 
  79  1280 CALL SOUND ( 200 , 659 , 9 ) 
  80  1290 SPD = 8 
  81  1300 TZ = .2 
  82  1305 XL = - 10  :: SX = 0  :: SL = - 100 
  83  1310 REM  CALL SOUND(4250,-5,29)
  84  1320 GOSUB 2230
  85  1330 IF X THEN T = T + .5 
  86  1340 CALL POSITION ( # 1 , P , Q ) 
  87  1350 IF P <; 56 THEN 1320
  88  1360 CALL MOTION ( # 1 , 0 , 0 ) 
  89  1370 CALL LOCATE ( # 1 , 58 , Q ) 
  90  1380 SPD = 0 
  91  1385 TZ = 1 / F1 
  92  1387 XL = 0 
  93  1390 FOR PS = 1 TO LS 
  94  1410 GOSUB 2230
  95  1415 CALL POSITION ( # 1 , P , Q )  :: IF JUMP THEN CALL LOCATE ( # 1 , P + 4 , Q )  :: P = P + 4  :: JUMP = 0 
  96  1420 P = ( P + 15 ) / 8  :: Q = ( Q + 11 ) / 8  :: IF Q <; = 2 OR Q >; = 31 THEN 1680
  97  1460 CALL GCHAR ( P , Q , Z ) 
  98  1470 IF Z = 32 THEN 1780
  99  1475 IF Z = 128 THEN 1671
 100  1480 IF Z = 33 OR ( Z = 139 AND F1 = 4 ) THEN 1520
 101  1490 IF Z = 129 THEN 1910
 102  1500 IF Z = 42 OR ( Z = 43 AND F1 <; >; 4 ) OR Z = 138 OR ( Z = 139 AND F1 <; >; 4 ) THEN 1570
 103  1510 GOTO 1780
 104  1520 CALL COLOR ( 1 , 15 , 16 ) 
 105  1530 CALL SOUND ( - 100 , 440 , 20 ) 
 106  1540 T = T + 1.0 
 107  1550 CALL COLOR ( 1 , 16 , 16 ) 
 108  1560 GOTO 1780
 109  1570 CALL HCHAR ( P , Q , 32 ) 
 110  1580 CALL PATTERN ( # 1 , 100 ) 
 111  1590 CALL PATTERN ( # 1 , 96 ) 
 112  1600 CALL PATTERN ( # 1 , 100 ) 
 113  1610 CALL PATTERN ( # 1 , 104 ) 
 114  1620 CALL SOUND ( - 100 , - 6 , 15 ) 
 115  1630 CALL PATTERN ( # 1 , 100 ) 
 116  1640 CALL PATTERN ( # 1 , 96 ) 
 117  1650 CALL PATTERN ( # 1 , 100 + X ) 
 118  1660 T = T + .2 
 119  1670 GOTO 1780
 120  1671 CALL POSITION ( # 1 , P , Q ) 
 121  1672 CALL LOCATE ( # 1 , P - 4 , Q ) 
 122  1673 CALL SOUND ( - 100 , - 5 , 15 ) 
 123  1674 JUMP = 1 
 124  1675 T = T + 0.1 
 125  1679 GOTO 1780
 126  1680 CALL MOTION ( # 1 , 0 , 0 ) 
 127  1690 CALL SOUND ( - 500 , - 6 , 10 ) 
 128  1700 FOR G = 1 TO 20 
 129  1710 CALL COLOR ( 0 , 2 , 10 ) 
 130  1720 CALL COLOR ( # 1 , 12 ) 
 131  1730 CALL COLOR ( 0 , 2 , 8 ) 
 132  1740 CALL COLOR ( # 1 , 5 ) 
 133  1750 NEXT G 
 134  1760 CALL DELSPRITE ( ALL ) 
 135  1770 GOTO 2130
 136  1780 REM  CALL SOUND(-1500,-5,29)
 137  1790 REM  PISTE
 138  1800 IF ZIEL THEN PRINT  :: GOTO 1860
 139  1810 WP = HS ( PS ) 
 140  1820 IF WP >; 50 THEN 1850
 141  1830 IF WP <; 20 THEN PRINT TAB ( 20 - WP )  ; S$ ELSE PRINT H$ ( WP - 20 ) 
 142  1840 GOTO 1860
 143  1850 IF WP <; 79 THEN PRINT TAB ( WP - 50 )  ; CHR$ ( 128 ) ELSE PRINT  : 
 144  1860 NEXT PS 
 145  1870 ZIEL , PS = 1 
 146  1880 CALL HCHAR ( 23 , 3 , 129 , 28 )  :: PRINT TAB ( 12 )  ; "ZIEL" 
 147  1890 TZ = 1 / F1 
 148  1900 GOTO 1390
 149  1910 TS ( SP ) = INT ( T * 100 ) / 100 
 150  1920 SPD = 5  :: CALL MOTION ( # 1 , SPD , SX ) 
 151  1930 IF RA ( 1 ) = 0 THEN 1970
 152  1940 IMAGE "## : ##.##" 
 153  1950 IMAGE "##.##" 
 154  1960 DISPLAY AT ( 23 , 2 )  : USING 1940 : TP ( TS ( RA ( 1 ) ) ) , TQ ( TS ( RA ( 1 ) ) ) 
 155  1970 DISPLAY AT ( 23 , 15 )  : USING 1940 : TP ( TS ( SP ) ) , TQ ( TS ( SP ) ) 
 156  1980 SPD = 8 
 157  1990 IF SPIELER = 1 THEN 2040
 158  2000 DISPLAY AT ( 1 , 1 )  :  : " NR."  ; SP  ; N$ ( SP )  :  : 
 159  2010 GOSUB 2300
 160  2020 FOR G = 1 TO SPIELER  :: IF RA ( G ) = SP THEN DISPLAY AT ( 24 , 23 )  : "["  ; G  ; "]"  :: GOTO 2040
 161  2030 NEXT G  :: STOP 
 162  2040 TZ = 0 
 163  2050 SPD = 4 
 164  2060 FOR G = 1 TO 50  :: GOSUB 2230 :: NEXT G 
 165  2070 T = 0  :: CALL MOTION ( # 1 , 0 , 0 ) 
 166  2080 DISPLAY AT ( 14 , 4 )  : "DRUECKEN SIE EINE TASTE" 
 167  2090 CALL KEY ( 1 , K , S1 )  :: CALL KEY ( 0 , K , S ) 
 168  2100 IF S = 0 AND S1 = 0 THEN 2090
 169  2110 CALL DELSPRITE ( ALL ) 
 170  2120 IF K = 6 THEN 770ELSE IF K = 15 THEN 680
 171  2130 IF SP <; 3 THEN 2150
 172  2140 GOSUB 2410
 173  2150 NEXT SP 
 174  2160 DISPLAY AT ( 12 , 5 ) ERASE ALL BEEP  : "NOCH EIN SPIEL ?[J/N]" 
 175  2170 CALL KEY ( 0 , K , S )  :: IF S <; = 0 THEN 2170
 176  2180 IF K = 78 OR K = 110 THEN STOP 
 177  2190 IF K = 74 OR K = 106 THEN IF SPIELER = 1 THEN 1120ELSE 1110
 178  2200 GOTO 2170
 179  2210 STOP 
 180  2220 REM  SKIFAHRER
 181  2230 CALL JOYST ( 1 , X , Y ) 
 182  2240 T = T + TZ 
 183  2250 IF X THEN T = T + 0.01 
 184  2260 IF X <; >; XL THEN CALL PATTERN ( # 1 , X + 100 )  :: CALL MOTION ( # 1 , SPD , X * F1 )  :: XL = X 
 185  2280 RETURN 
 186  2290  !  RANGBERECHNUNG
 187  2300  ! 
 188  2310 FOR G = 1 TO SPIELER 
 189  2320 IF RA ( G ) = 0 THEN 2360
 190  2330 IF TS ( SP ) <; = TS ( RA ( G ) ) THEN 2360
 191  2340 NEXT G 
 192  2350 STOP 
 193  2360 FOR I = SPIELER - 1 TO G STEP - 1 
 194  2370 RA ( I + 1 ) = RA ( I ) 
 195  2380 NEXT I 
 196  2390 RA ( G ) = SP 
 197  2400 RETURN 
 198  2410  !  AUSDRUCK
 199  2420 CALL DELSPRITE ( ALL ) 
 200  2430 CALL CLEAR 
 201  2440 DISPLAY AT ( 2 , 1 )  : "PL. STRNR. NAME      ZEIT" 
 202  2450 FOR G = 1 TO SPIELER 
 203  2460 IF RA ( G ) = 0 THEN 2530
 204  2470 IF G = 1 THEN TP1 = TP ( TS ( RA ( 1 ) ) )  :: TQ1 = TQ ( TS ( RA ( 1 ) ) )  :: P$ = " " ELSE TP1 = 0  :: TQ1 = TS ( RA ( G ) ) - TS ( RA ( 1 ) )  :: P$ = "@" 
 205  2480 IF G = 1 THEN G1 = G  :: GOTO 2500
 206  2490 IF TS ( RA ( G ) ) <; >; TS ( RA ( G - 1 ) ) THEN G1 = G 
 207  2500 DISPLAY AT ( 3 + G , 1 )  : G1  ; TAB ( 5 )  ; RA ( G )  ; TAB ( 10 )  ; N$ ( RA ( G ) )  ; TAB ( 19 )  ; P$ 
 208  2510 IF G >; 1 THEN DISPLAY AT ( 3 + G , 24 )  : USING 1950 : TQ1 ELSE DISPLAY AT ( 3 + G , 19 )  : USING 1940 : TP1 , TQ1 
 209  2520 NEXT G 
 210  2530 DISPLAY AT ( 23 , 7 )  : "TASTE DRUECKEN" 
 211  2540 CALL KEY ( 1 , K , S1 )  :: CALL KEY ( 0 , K , S )  :: IF S <; = 0 AND S1 <; = 0 THEN 2540
 212  2550 RETURN 
 213  2560  !  ** TITEL **
 214  2570 CALL MAGNIFY ( 2 )  :: CALL SCREEN ( 16 ) 
 215  2580 CALL SPRITE ( # 1 , 83 , 2 , 20 , 128 , # 2 , 75 , 2 , 30 , 128 , # 3 , 73 , 2 , 60 , 128 ) 
 216  2590 CALL MOTION ( # 1 , 8 , - 8 , # 2 , - 8 , 0 , # 3 , - 8 , 8 ) 
 217  2600 CALL COINC ( # 1 , 40 , 108 , 2 , O )  :: IF NOT O THEN 2600
 218  2610 CALL MOTION ( # 1 , 0 , 0 , # 2 , 0 , 0 , # 3 , 0 , 0 ) 
 219  2620 CALL LOCATE ( # 1 , 40 , 108 , # 2 , 16 , 128 , # 3 , 40 , 148 ) 
 220  2630 CALL COLOR ( # 1 , 5 , # 2 , 7 , # 3 , 14 ) 
 221  2640 CALL MOTION ( # 2 , 8 , 0 ) 
 222  2650 CALL COINC ( # 2 , 40 , 128 , 2 , O )  :: IF NOT O THEN 2650
 223  2660 CALL MOTION ( # 2 , 0 , 0 )  :: CALL LOCATE ( # 2 , 40 , 128 ) 
 224  2670 DISPLAY AT ( 10 , 8 )  : "() HALLO " & CHR$ ( 136 ) & CHR$ ( 137 )  : TAB ( 8 )  ; "*+ HALLO " & CHR$ ( 138 ) & CHR$ ( 139 ) 
 225  2680 DISPLAY AT ( 13 , 1 )  : "LIEBE SKIFREUNDE,"  :  : "`b DER COMPUTER BEGRUESST hjac SIE ZUM SKIPROGRAMM.   ik" 
 226  2690 DISPLAY AT ( 18 , 1 )  : "HIER DIE REGELN:"  : "ES KOENNEN BIS ZU 9 FAHRER  TEILNEHMEN.JEDER GIBT SEINENNAMEN EIN UND ERHAELT EINE  STARTNUMMER." 
 227  2700 GOSUB 2800
 228  2705 CALL LOCATE ( # 1 , 1 , 108 , # 2 , 1 , 128 , # 3 , 1 , 148 ) 
 229  2710 PRINT  :  :  :  : "() ES WIR IMMER MIT JOYSTICK*+ NR.1 GESPIELT.AM ENDE       ERSCHEINT DANN DIE     " & CHR$ ( 136 ) & CHR$ ( 137 ) 
 230  2715 PRINT "   GEFAHRENE ZEIT UND EINE" & CHR$ ( 138 ) & CHR$ ( 139 ) & "`b RANGTABELLE." 
 231  2720 PRINT "ac"  ; TAB ( 27 )  ; "df"  : "   SIE MUESSEN VERSUCHEN  eg() SO DURCH DIE PISTE ZU"  : "*+ KOMMEN, OHNE DASS SIE  " & CHR$ ( 136 ) & CHR$ ( 137 ) 
 232  2725 PRINT "   EIN TOR STREIFEN ODER  " & CHR$ ( 138 ) & CHR$ ( 139 ) & "hj AUSLASSEN."  : "ik SONST ERHALTEN SIE          EINEN ZEITZUSCHLAG." 
 233  2727 PRINT  :  : RPT$ ( "()" & CHR$ ( 136 ) & CHR$ ( 137 ) , 2 ) & "    VIEL"  ; 
 234  2730 PRINT TAB ( 20 )  ; RPT$ ( "()" & CHR$ ( 136 ) & CHR$ ( 137 ) , 2 ) 
 235  2735 PRINT RPT$ ( "*+" & CHR$ ( 138 ) & CHR$ ( 139 ) , 2 ) & "   GLUECK"  ; TAB ( 20 )  ; RPT$ ( "*+" & CHR$ ( 138 ) & CHR$ ( 139 ) , 2 )  :  : 
 236  2740 GOSUB 2800
 237  2745 CALL DELSPRITE ( ALL )  :: CALL COLOR ( 2 , 2 , 1 ) 
 238  2750 RETURN 
 239  2760  ! 
 240  2770  ! 
 241  2780  ! 
 242  2790  ! 
 243  2800 DISPLAY AT ( 24 , 6 )  : "WEITER MIT ENTER" 
 244  2810 FOR J = 1 TO 3  :: CALL COLOR ( # J , INT ( 14 * RND + 2 ) )  :: NEXT J 
 245  2820 CALL COLOR ( 2 , INT ( 14 * RND + 2 ) , 1 )  :: CALL COLOR ( 9 , INT ( 14 * RND + 2 ) , 1 )  :: CALL COLOR ( 14 , INT ( 14 * RND + 2 ) , 1 )  :: CALL COLOR ( 10 , INT ( 14 * RND + 2 ) , 1 ) 
 246  2830 CALL KEY ( 0 , K , S )  :: IF K <; >; 13 THEN 2810
 247  2840 RETURN