"Battle cars" for Sharp PC-1500
 Hebdogiciel, Shift editions.
Author : Sakuma Akihiro
Published in Hebdogiciel #48 (September 1984).
BASIC program - 8733 bytes.

CLOAD "BATTLE CARS"
RUN

Commands:
D - Turn on
L - Pause
P - Check list
1/3 - Fire left/right
8 - Speed up
4/6 - Turn left/right

----- BASIC program -----------------------------------------1 "BATTLE CARS"
2 "Hebdogiciel 48"
3 "(D)emarrer"
4 "(L): Demande de repit"
5 "(P): Check list"
6 "(1)/(3): Tir Gche/Drte"
7 "(8): Accelerer"
8 "(4)/(6): Tourner G/D"
20 "Z"CLEAR 
90 D=0,V=0,A=0,K=113,Q=0,II=150,VMA=200,BT=100,CH=100,MO=100,MU=100,ES=100
95 AR=20000,AM=100,FEM=4,N=9:RANDOM 
100 DIM V$(9)*32:FOR I=0 TO 9:READ V$(I):NEXT I
110 DIM T$(8)*30:RESTORE 5050:FOR I=0 TO 8:READ T$(I):NEXT I
120 DIM J$(5)*30:FOR I=0 TO 5:READ J$(I):NEXT I
130 WAIT 0:GCURSOR 10:GPRINT V$(4):GCURSOR 126:GPRINT V$(3):FOR I=1 TO 10:NEXT I
135 WAIT 0:BEEP 1,50,10:GPRINT V$(8)+V$(4):GCURSOR 125:BEEP 1,90,10:GPRINT V$(3)+V$(7)
136 FOR I=1 TO 40:NEXT I
138 CLS 
140 FOR I=10 TO 58:GCURSOR I:GPRINT V$(4):GCURSOR 130-I:GPRINT V$(3):BEEP 1,1,1:NEXT I
170 CLS :GCURSOR 67:GPRINT 8,34,8,85,8,34,8:FOR I=1 TO 20:POKE# 64000,RND 255:NEXT I
175 FOR I=1 TO 40:NEXT I
180 CURSOR 7:PRINT "BATTLE CARS":GCURSOR 5:GPRINT V$(4):GCURSOR 131:GPRINT V$(3):GCURSOR 24:GPRINT V$(0):GCURSOR 116:GPRINT V$(2)
183 FOR I=1 TO 40:NEXT I
185 WAIT 0:FOR I=127 TO 0 STEP -2:GCURSOR I:GPRINT "0808000000":BEEP 1,1,5:NEXT I
190 WAIT 0:TIME =0:PRINT "ACTION?":GCURSOR K:GPRINT V$(U)
195 WAIT 0:I$=INKEY$ :GCURSOR 75:GPRINT "7F":GCURSOR K:GPRINT V$(U)
196 IF FE>4 THEN 1800
198 IF N=0 OR N=1 OR N=2 OR N=5 OR N=6 OR N=9WAIT 0:GCURSOR II:GPRINT V$(N)
200 IF I$="D" THEN 295
205 IF I$="L" AND DE<2 THEN 3200
210 IF I$="8" THEN 305
215 IF I$="1" THEN 940
220 IF I$="5" THEN 340
225 IF I$="3" THEN 890
230 IF I$="2" THEN 355
240 IF I$="6" THEN 505
245 IF I$="P" THEN 2500
250 IF I$="4" THEN 600
253 IF N<>9 AND TIME >0.0001 AND V+A<>0 THEN 3000
255 T=T+1:IF T>25 AND V+A=0 THEN 800
257 IF TIME >.0005 AND A+V>0 THEN 2010
260  GOTO 195
295 N=9:WAIT 70:IF ES=0PRINT "PLUS D/ESSENCE":PRINT "VOUS ETES IMMOBILISE":CLS : GOTO 195
300 D=1:WAIT 0:GCURSOR K-10:BEEP 1,10:GPRINT V$(8):BEEP 1,20:GCURSOR K+12:GPRINT V$(7):FOR I=1 TO 50:NEXT I:CLS : GOTO 195
305 U=0:IF A<>0 THEN "GTO"
310 WAIT 100:IF D=0PRINT "LE MOTEUR NE TOURNE PAS": GOTO 190
312 WAIT 70:IF BT<10PRINT "BOITE FICHUE":D=0,VMA=0,AM=0: GOTO 195
318 IF CH=0PRINT "CHASSIS FICHU":VMA=0
319 IF MO<0LET MO=0
320 X=0,T=0,F=0,V=V+4:IF V>VMALET V=VMA
322 IF V=VMALET MO=MO-5:VMA=VMA-1
323 ES=ES-.5:IF ES<0LET ES=0,V=0,A=0,D=0
324 IF V<0LET V=0
325 WAIT 0:PRINT V;"k/h":CURSOR 7:GPRINT T$(INT (V/25)):GCURSOR II:GPRINT V$(N): GOTO 195
340 N=9,U=0:IF A=0 GOTO 400
345 IF V=0 GOTO 420
350 IF A=0 AND V=0 GOTO 500
355 U=0:WAIT 100:IF D=0PRINT "LE MOTEUR NE TOURNE PAS": GOTO 190
360 IF V<>0 THEN 1100
365 X=0,T=0,F=0,A=A+2:IF A>AMLET A=AM-1
366 IF CH=0PRINT "CHASSIS FICHU":VMA=0,AM=0,D=0
367 ES=ES-0.5:IF ES<0LET ES=0,V=0,A=0,D=0
368 IF MO<0LET MO=0:PRINT "MOTEUR GRILLE":D=0,AM=0,VMA=0
370 WAIT 0:PRINT A;"k/h":CURSOR 7:GPRINT T$(INT (A/25));:PRINT " AR":GCURSOR II:GPRINT V$(N): GOTO 195
400 U=0,V=V-10:IF V<0LET V=0
410 WAIT 0:PRINT V;"k/h":CURSOR 7:GPRINT T$(INT (V/25)): GOTO 195
420 U=0,A=A-10:IF A<0LET A=0
430 W=0:PRINT A;"k/h":CURSOR 7:GPRINT T$(INT (A/25)): GOTO 195
500 U=0:WAIT 0:PRINT V;"k/h":CURSOR 7:PRINT T$(INT (V/25)): GOTO 195
505 IF D=0CLS :PRINT "LE MOTEUR NE TOURNE PAS": GOTO 195
508 IF A=0 AND V=0PRINT "VITESSE NULLE": GOTO 195
510 IF A=0 AND V<>0 GOTO 530
520 IF A<>0 AND V=0 GOTO 550
530 U=5,K=K+INT (V/10):IF K>136LET K=136
540 WAIT 0:CLS :GCURSOR K:GPRINT V$(U):GCURSOR II:GPRINT V$(N):ES=ES-0.25: GOTO 1200
550 U=6,K=K+INT (A/10):IF K>150LET K=150
560 WAIT 0:CLS :GCURSOR K:GPRINT V$(U):GCURSOR II:GPRINT V$(N):ES=ES-0.25: GOTO 1200
600 CLS :WAIT 50:IF D=0PRINT "LE MOTEUR NE TOURNE PAS":CLS : GOTO 195
605 WAIT 0:IF V=0 AND A=0PRINT "VITESSE NULLE": GOTO 195
610 IF A=0 AND V<>0 GOTO 630
620 IF A<>0 AND V=0 GOTO 650
630 U=6,K=K-INT (V/10):IF K<75LET K=75
635 WAIT 0:GCURSOR II:GPRINT V$(N)
640 WAIT 0:GCURSOR K:GPRINT V$(U):GCURSOR II:GPRINT V$(N):ES=ES-.5: GOTO 1200
650 U=5,K=K-INT (A/10):IF K<75LET K=75
660 WAIT 0:CLS :GCURSOR K:GPRINT V$(U):GCURSOR II:GPRINT V$(N):ES=ES-0.5: GOTO 1200
800 IF Q/2-INT (Q/2)<>0 THEN 850
805 WAIT 0:F=F+3:IF F>140-K THEN 830
810 N=3:GCURSOR 150-F:GPRINT V$(N)+"0000":BEEP 1,F,5: GOTO 195
817 IF M>5LET M=0: GOTO 825
830 N=9,F=0,L=0: GOTO 990
850 WAIT 0:L=L+3:IF 75+L>K-14 THEN 830
860 WAIT 0:N=4:GCURSOR 75+L:GPRINT "0000"+V$(N):BEEP 1,L,5: GOTO 195
890 IF V+A<>0 THEN 1600
895 WAIT 70:IF MU=0PRINT "PLUS DE MUNITIONS":CLS : GOTO 195
900 WAIT 1:FOR H=K+14 TO 148-F STEP 2:GCURSOR H:BEEP 1,10,5:GPRINT "00000808":NEXT H:IF F=9GCURSOR 148:GPRINT "00"
902 GCURSOR 148-F:GPRINT "0000"
905 IF F=0GCURSOR 149:PRINT " ": GOTO 195
913 R=R+1,MU=MU-1:IF MU<0LET MU=0
915 FOR GI=1 TO 10:POKE# 64000,RND 255:NEXT GI:IF R<5 THEN 800
920 GCURSOR 152-F:BEEP 1,150,50:GPRINT 8,34,8,85,8,34,8:R=0,F=0,T=0,Z=Z+1,N=9,X=0,Q=Q+1:CLS 
925 IF Q>20 GOTO 4100
926  GOTO 195
940 IF V+A<>0 GOTO 1700
945 WAIT 70:IF MU=0PRINT "PLUS DE MUNITIONS":CLS : GOTO 195
950 WAIT 1:FOR E=K-4 TO 90+L STEP -2:GCURSOR E:BEEP 1,10,5:GPRINT "0808000000":NEXT E
955 IF N=9GCURSOR 91:GPRINT "0000"
960 IF L=0 THEN 195
963 M=M+1:MU=MU-1:IF MU<0LET MU=0
965 FOR GI=1 TO 10:POKE# 64000,RND 255:NEXT GI:IF M<5 THEN 800
970 GCURSOR 75+L:GPRINT 8,34,8,85,8,34,8:BEEP 1,10,50:M=0,F=0,L=0,Q=Q+1,T=0,Z=Z+1,N=9,X=0
975 IF Q>20 THEN 4100
976  GOTO 195
980 GCURSOR 80+L:PRINT " ": GOTO 195
990 CLS :BEEP 1:IG=IG+1,X=0,L=0,R=0,M=0:IF IG>FEM THEN 1800
1000 X=0,T=0,Z=0: GOTO 195
1100 WAIT 30:PRINT "CRAC!!":BEEP 2,50:BT=BT-10,VMA=VMA-20:IF VMA<50PRINT "BOITE FICHUE"
1110  GOTO 195
1200 IF I$="6" AND II>K THEN 1400
1205 GCURSOR 75:GPRINT 127
1210 IF I$="6" AND II<K GOTO 195
1220 IF I$="4" AND II<K GOTO 1410
1230 IF I$="4" AND II>K GOTO 195
1400 IF K>=II-12 AND N<>9LET N=9: GOTO 1500
1405  GOTO 195
1410 IF K<=II+12 AND N<>9LET N=9: GOTO 1500
1415  GOTO 195
1500 IF Q/2-INT (Q/2)<>0 THEN 1520
1510 WAIT 10:FOR I=1 TO 10:POKE# 64000,RND 255:NEXT I:GCURSOR II:GPRINT 8,34,8,85,8,34,8:BEEP 1:J=0,Q=Q+1
1512  GOTO 195
1515 WAIT 50:CH=CH-10:IF CH<50PRINT "CHASSIS FICHU!!": GOTO 195
1517  GOTO 195
1520 CH=CH-10:WAIT 10:FOR I=1 TO 10:POKE# 64000,RND 255:NEXT I:GCURSOR II:GPRINT 8,34,8,85,8,34,8:BEEP 1:J=0
1521 Q=Q+1:TIME =0: GOTO 195
1525 WAIT 50:CH=CH-10:IF CH<50PRINT "CHASSIS FICHU!!": GOTO 195
1600 WAIT 70:IF MU=0PRINT "PLUS DE MUNITIONS": GOTO 195
1610 WAIT 1:IF II<KLET VV=152,XX=0
1615 IF II>K AND II<150LET XX=-3,VV=II
1616 IF II>151LET XX=0,VV=II
1617 IF N=9LET XX=0,VV=152
1620 FOR QQ=K+14 TO VV+XX STEP 2:GCURSOR QQ:GPRINT "00000808":BEEP 1,4,5:NEXT QQ:IF N=9GCURSOR QQ:PRINT " "
1621 GCURSOR QQ:GPRINT "0000"
1625 GCURSOR 75:GPRINT 127
1630 IF II<K THEN 195
1633 IF N<>9LET VR=VR+1:FOR I=1 TO 5:POKE# 64000,RND 255:NEXT I
1635 MU=MU-1:IF MU<0LET MU=0
1636 IF N=9 THEN 195
1640 IF VR<5 THEN 195
1645 GCURSOR QQ+1:GPRINT 8,34,8,85,8,34,8:BEEP 1,10,10:II=154:TIME =0,N=9,Q=Q+1,VR=0:IF Q>20 THEN 4100
1650  GOTO 195
1700 WAIT 70:IF MU=0PRINT "PLUS DE MUNITIONS"
1705 IF II<K AND II<>0LET VV=II,XX=14
1710 IF II>KLET VV=75,XX=0
1715 IF II<K AND II=75LET VV=II,XX=0
1720 WAIT 1:FOR QQ=K-3 TO VV+XX STEP -2:GCURSOR QQ:GPRINT "08080000":BEEP 1,50,5:NEXT QQ:GCURSOR QQ:PRINT " "
1722 GCURSOR 75:GPRINT 127
1725 IF II>K THEN 195
1727 IF N<>9LET JT=JT+1:FOR I=1 TO 5:POKE# 64000,RND 255:NEXT I
1730 MU=MU-1:IF MU<0LET MU=0
1733 IF N=9 GOTO 195
1735 IF JT<5 THEN 195
1740 GCURSOR II:GPRINT 8,34,8,85,8,34,8:BEEP 1,50,20:JT=0,N=9,Q=Q+1,TIME =0,II=75:IF Q>20 THEN 4100
1745 II=75: GOTO 195
1800 WAIT 70:CLS :PRINT "VOTRE VOYAGE S/ARRETE ICI":PRINT "VOUS AVEZ"
1810 PRINT "DETRUIT";Q;" ENNEMI(S).":PRINT "VOUS SORTEZ DE VOTRE ENGIN"
1820 PRINT "DEJA VOUS ENTENDEZ LA":PRINT "HORDE DE CONARE LE BARBAN"
1830 PRINT "S/APPROCHANT, IVRE DE RAGE":BEEP 1,50,100:CLS :CURSOR 11:PRINT "FIN"
1840 END
2010 IF V+A=0LET U=0: GOTO 195
2020 IF A>0 THEN 2700
2040 IF Q/2-INT (Q/2)<>0 THEN 2100
2045 IF V<20LET V=20
2050 N=6:FOR II=150 TO 140 STEP -1:GCURSOR II:GPRINT V$(N):NEXT II
2060 N=1:GCURSOR II:GPRINT V$(N)+"0000000000000000000000": GOTO 195
2100 N=5:FOR II=75 TO 81:GCURSOR II:GPRINT V$(N):NEXT II
2110 N=1:GCURSOR II:GPRINT V$(N): GOTO 195
2500 WAIT 0:CLS :GCURSOR 10:GPRINT J$(1):CURSOR 6:PRINT "**CHECK-LIST**":GCURSOR 127:GPRINT J$(3):FOR I=1 TO 50:NEXT I
2505 IF MO>100LET MO=100
2510 CLS :WAIT 0:PRINT "PUISSANCE MOTEUR":GCURSOR 100:PRINT MO;"%":GCURSOR 135:GPRINT J$(MO/25):FOR I=1 TO 100:NEXT I
2515 SSES=ES/25:IF ES>100LET SSES=4
2520 CLS :PRINT "ESSENCE:":GCURSOR 100:PRINT ES;"l":GCURSOR 135:GPRINT J$(INT SSES):FOR I=1 TO 100:NEXT I
2525 WAIT 70:CLS :PRINT "BOITIER DE VITESSE:";BT;"%"
2530 WAIT 0:CLS :PRINT "MUNITIONS":GCURSOR 100:PRINT MU:GCURSOR 135:GPRINT J$(5):FOR I=1 TO 100:NEXT I
2540 WAIT 0:CLS :PRINT "RIGIDITE CHASSIS":GCURSOR 110:PRINT CH;"%":FOR I=1 TO 100:NEXT I:CLS 
2560 WAIT 70:IF MO<50PRINT "MOTEUR FATIGUE"
2570 IF ES<30PRINT "PLUS BEAUCOUP D/ESSENCE"
2580 IF MU<10PRINT "ATTENTION AUX MUNITIONS"
2590 IF CH<50PRINT "CHASSIS FAUSSE"
2595 IF ES>70 AND MO>70 AND MU>70 AND CH>70PRINT "BON ETAT GENERAL"
2600 CLS : GOTO 195
2700 IF Q/2-INT (Q/2)<>0 THEN 2750
2710 WAIT 0:N=5:FOR II=150 TO 136 STEP -1:GCURSOR II:GPRINT V$(N)+"0000":NEXT II:N=1:GCURSOR II:GPRINT V$(N)+"0000"
2720  GOTO 195
2750 WAIT 0:N=6:FOR II=75 TO 81:GCURSOR II:GPRINT V$(N):NEXT II:N=1:GCURSOR II:GPRINT V$(N): GOTO 195
3000 IF II>K THEN 3110
3010 WAIT 0:ET=15:FOR AB=II+ET TO K-4:GCURSOR AB:GPRINT "0000081C08":NEXT AB:GCURSOR K-6:PRINT " "
3020 FOR I=1 TO 10:POKE# 64000,RND 255:NEXT I
3030 TIME =0: GOTO 990
3110 FOR BA=II-4 TO K+14 STEP -1:GCURSOR BA:GPRINT "081C080000":NEXT BA:GCURSOR K+14:GPRINT "00000000"
3120 FOR I=1 TO 10:POKE# 64000,RND 255:NEXT I
3130 BA=0,TIME =0: GOTO 990
3200 WAIT 70:BEEP 1:PRINT "DEMANDE DE REPIT":B=RND 20:IF B>10PRINT "REFUSE":DE=DE+1: GOTO 195
3210 DE=DE+1:WAIT 70:PRINT "SON ALTESSE CONARE":PRINT "LE BARBAN":PRINT "VOUS ACCORDE LE TEMPS"
3220 PRINT "NECESSAIRE POUR":PRINT "EFFECTUER VOS REPARATIONS":PRINT "VOUS NE PERDEZ RIEN"
3230 PRINT "POUR ATTENDRE.. HE!HE!"
3240 PRINT "ACHAT MATERIEL...":PRINT "100 CARTOUCHES-->150F":INPUT "ACHAT?";R$
3250 IF LEFT$ (R$,1)="O"LET PX=150: GOSUB 4000:MU=MU+100*RE
3260 PRINT "ESSENCE--->6F/L":INPUT "ACHAT?";R$
3270 IF LEFT$ (R$,1)="O"INPUT "COMBIEN DE LITRES?";P:PX=P*6: GOSUB 4000:ES=ES+P*RE
3280 PRINT "BTE DE VITESSE -->1000F":INPUT "ACHAT?";R$
3290 IF LEFT$ (R$,1)="O"LET PX=1000: GOSUB 4000:IF RE=1LET BT=100
3300 PRINT "CHASSIS-------->   5000F":INPUT "ACHAT?";R$
3310 IF LEFT$ (R$,1)="O"LET PX=5000: GOSUB 4000:IF RE=1LET CH=100
3320 PRINT "MOTEUR----->  10000F":INPUT "ACHAT?";R$
3330 IF LEFT$ (R$,1)="O"LET PX=10000: GOSUB 4000:CLS :IF RE=1LET MO=MO+100,VMA=200
3400  GOTO 195
4000 WAIT 70:IF PX>ARPRINT "PLUS ASSEZ D/ARGENT...":PRINT "IL NE RESTE QUE";AR;"F":RE=0:RETURN 
4005 IF PX>ARPRINT "PLUS ASSEZ D/ARGENT...":PRINT "IL NE RESTE QUE";AR;"F":RE=0:RETURN 
4010 WAIT 70:PRINT "ACHAT EFFECTUE":AR=AR-PX:PRINT "IL RESTE";AR;"F":RE=1:RETURN 
4100 WAIT 70:PRINT "VICTOIRE!":PRINT "CONARE EST VAINCU!"
4110 PRINT "VOUS AVEZ GAGNE!":END
5000 DATA "007474243F3D3D3D3F24747400","007474283F3D3D3D3F28747400"
5010 DATA "007474283F353D353F28747400","007454740C1C1E1D1D1D0D7754740800"
5020 DATA "00087454770D1D1D1D1E1C0C74547400"
5030 DATA "00747C7F3D3D7F5F7D1D3E7C5C7400","00745C7C3E1D7D5F7F3D3D7F7C7400"
5040 DATA "0020406070383E3F1F0E04","040E1F3F3E387060402000",""
5045 DATA 
5050 DATA "7F014141414141410101010101017F","7F011111212141410101010101017F"
5060 DATA "7F010105091121410101010101017F","7F010101010719610101010101017F"
5070 DATA "7F0101010101017F0101010101017F","7F010101010101611907010101017F"
5080 DATA "7F010101010101412111090501017F","7F010101010101414121211111017F"
5090 DATA "7F010101010101414141414141017F"
5100 DATA "700C4242414141010102020C70","700C020A112141010102020C70"
5110 DATA "700C020201017D010102020C78","700C020201014121110A020C70"
5120 DATA "700C0202010141414142420C70","7F3E3E3E3E3E3E3E1C1C1C1C1C1C08"
