"Slalom" for Sharp PC-1500 +4 KB
 Hebdogiciel, Shift editions.
Author : Frderic YARGUI
Published in Hebdogiciel #90, July 1985.
BASIC program - 2426 bytes.

CLOAD "SLALOM"
RUN or DEF A

Commands:
SHIFT   - up
.       - down
numbers - change speed
DEF Z   - see scores

----- BASIC program -----------------------------------------
1 "SLALOM"
2 "Hebdogiciel No 90
3 "Deplacement: SHIFT / .
4 "Chgt vitesse: pave num.
5 "Voir les scores: DEF Z
30 "A"RANDOM :CLS :WAIT 0:CLEAR :POKE &79B4,&B2,0:DIM A$(0)*80:Y$=CHR$ 34
50 CURSOR 10:Y=PEEK &764E,Z=PEEK &764F:POKE &764E,0,0
60 GPRINT "242A2A2A12003E20202020003C0A0A0A3C003E20202020001C2222221C003E0408043E"
70 FOR P=0 TO 57:GCURSOR P:GPRINT 127:GCURSOR 155-P:GPRINT 127:NEXT P
80 FOR P=57 TO 77:GCURSOR P:GPRINT 127-POINT P:GCURSOR 155-P:GPRINT 127-POINT (155-P):NEXT P
100 RESTORE 720
110 FOR Q=0 TO 49:READ P:POKE &7750+Q,P:NEXT Q
130 WAIT 0:PRINT " Niveau de jeu   (1-9)":CALL &7771
140 R=VAL INKEY$ :IF R=0 GOTO 140
160 RESTORE 170:FOR Q=1 TO 15:READ @(Q):NEXT Q
170 DATA 2,4,8,16,32,9,17,18,36,72,37,41,42,74,82
180 CLS :GCURSOR 5:GPRINT "141414141414224141":GCURSOR 140:GPRINT "414141636363007F7F"
190 FOR P=20 TO 130 STEP 12-R:GCURSOR P:GPRINT @(RND 15):NEXT P
200 S=6,T=8,U=1,V=TIME ,X=0
220 POKE &79B6,0:FOR S=S TO S+U-1
230 CALL &7750:IF (POINT S AND T)=T GOTO 320
240 CALL &7750:GCURSOR S:GPRINT POINT S OR T
250 CALL &7750:IF POINT 146 GOTO 670
260 NEXT S
270 IF W=16LET T=T/2: GOTO (T<1)*30+290
280 IF W=1LET T=T*2:IF T>64 GOTO 320
290 U=U+VAL INKEY$ 
300 S=S+1: GOTO 220
320 GCURSOR S-2
330  GOSUB INT (LN T/LN 2+.5)*10+360
340 CALL &7768,U:PAUSE : GOTO 470
350 GPRINT "05030F0305":RETURN 
360 GPRINT "0503070305":RETURN 
370 GPRINT "0A071E070A":RETURN 
380 GPRINT "150E3F0E15":RETURN 
390 GPRINT "2A1C7F1C2A":RETURN 
400 GPRINT "54387E3854":RETURN 
410 GPRINT "28703C7028":RETURN 
420 GPRINT "5060786050":RETURN 
430 GPRINT "5060786050":RETURN 
450 V$=STR$ INT (.5+DMS (DEG TIME -DEG V)*1E4)+" secondes ",W$=" ( niveau "+STR$ R+" )":RETURN 
470 IF &7F AND T GOTO 610
480 ON RND 2 GOTO 500,510
500 PAUSE "  Pof ! Dans le ravin !": GOTO 520
510 PAUSE " Eh ! Restez avec nous !"
520  GOSUB 450:A$(0)="Vous etes reste en piste pendant "+V$
530 IF S>120LET A$(0)=A$(0)+" Dommage ! Vous y etiez presque ."
550 WAIT 10:FOR Q=1 TO LEN A$(0)-25:PRINT MID$ (A$(0),Q,26):NEXT Q:PAUSE :WAIT 0
560 PRINT " Une autre partie ? ENTER":CALL &7771
570 R=ASC INKEY$ :IF R=0 GOTO 570
580 IF R=13 GOTO 130
590 CLS :POKE &764E,Y,Z:CURSOR 14:PRINT "Au revoir !":CALL &7771:PAUSE 
600 END
610 IF U<6PAUSE "  Aie , ca fait mal !": GOTO 650
620 IF U<11PAUSE " Paf ! En plein dedans !": GOTO 650
630 IF U<15PAUSE "  Preparez la civiere !": GOTO 650
640 PAUSE " Vite , appelez le SAMU !"
650  GOSUB 450:A$(0)="Vous avez tenu pendant "+V$: GOTO 530
670  GOSUB 450:X$=@$(R):IF X$ GOTO 690
680 A$(0)="   Bravo ! Parcours sans faute en "+V$+W$,@$(R)=V$: GOTO 550
690 IF X$<=V$LET A$(0)="Vous n"+Y$+"avez pas encore battu le record : "+V$: GOTO 550
700 A$(0)="   Bravo , vous avez ameliore le record : "+V$+W$,@$(R)=V$: GOTO 550
720 DATA &B5,&02,&BE,&E4,&1A,&B9,&01,&BE,&77,&61,&B5,&01,&BE,&E4,&1A,&B9,&10,&AB
730 DATA &79,&B6,&AE,&79,&B6,&9A,&04,&2A,&FD,&A5,&F0,&00,&88,&06,&9A,&68,&78,&6A
740 DATA &4D,&FD,&62,&25,&BD,&FF,&2E,&88,&06,&6C,&77,&93,&0E,&9A
840 "Z"WAIT 0:PRINT "   LES RECORDS :":CALL &7771:PAUSE 
850 FOR Q=1 TO 9:PRINT 
860 PRINT " Niveau";Q;" : ";@$(Q);:IF @$(Q)=""PRINT " ( non joue )"
870 CALL &7771:PAUSE :PAUSE :NEXT Q: GOTO 560
