%%HP: T(3)A(D)F(.);
DIR
  TRON.RPL
    \<< # 198h TRON
VIREV XLIB 1217 0
EVAL CLLCD B\->R
"Score:" SWAP + 4
DISP 0 WAIT DROP
    \>>
  TRON
"
'PRO
!0-15
!PC
INTOFF
ST=0 15

GOSUB efface
LC 10
R0=C %absice
LC 10
R1=C %ordone
LC 01
R2=C %inc abs
LC 00
R3=C %inc ord
C=0 A
R4=C %compteur

%*******************
%voici le cerveau du
%      prog
%*******************
*main_boucle
GOSUB test_clavier

*ask_ON
LC FFF
GOSBVL 01EEC
?CBIT=1 15
GOYES quitte

A=R0
C=R2
A=A+C B
R0=A
A=R1
C=R3
C=C+A B
R1=C
A=R0
GOSUB put_pixel
GOSUB wait
GOSUB inc_compteur
?ST=0 0
GOYES main_boucle


*quitte
C=DAT1 A
D1=C
D1=D1+ 10
C=R4
DAT1=C A
ST=1 15
INTON
'ENDE

*wait
LC 004FF
*wait_boucle
C=C-1 A
GONC wait_boucle
RTN

*inc_compteur
C=R4
C=C+1 A
R4=C
RTN

*test_clavier

*gauche
LC 004
GOSBVL 01EEC
?CBIT=0 3
GOYES droite
LC FF
R2=C
LC 00
R3=C

*droite
LC 004
GOSBVL 01EEC
?CBIT=0 1
GOYES haut
LC 01
R2=C
LC 00
R3=C

*haut
LC 008
GOSBVL 01EEC
?CBIT=0 2
GOYES bas
LC FF
R3=C
LC 00
R2=C

*bas
LC 002
GOSBVL 01EEC
?CBIT=0 2
RTNYES
LC 01
R3=C
LC 00
R2=C
RTN

'PUTPIXEL
'EFFACE
@"
  PUTPIXEL
"%abs en A,ord en C
%A,B,C,D0 modifies

*put_pixel
ST=0 0
B=0 A
B=C B
B=B+B A
C=B   A
BSL   A
C=C+B A

B=0 A
B=A A
BSRB A
BSRB A
B=B+C A
D0= 7050E
C=DAT0 A
C=C+B A
D0=C
GOSUB witch_pix
A=DAT0 B
B=A A
A=A!C B
DAT0=A B
B=B&C A
?B=0 B
RTNYES
ST=1 0
RTN


*witch_pix
LC 01
?ABIT=0 1
GOYES pix1-2
C=C+C A
C=C+C A
*pix1-2
?ABIT=0 0
RTNYES
C=C+C A
RTN

@"
  EFFACE
"%un bel ecran tout propre
*efface
D0= 7050E
A=DAT0 A
D0=A
GOSUB noire
LC 35
D=C B
C=0 W
LC 1
*b_efface
DAT0=C W
D0=D0+ 16
A=0   W
DAT0=A W
D0=D0+ 16
A=A+4 B
DAT0=A B
D0=D0+ 2
D=D-1 B
GONC b_efface
GOSUB noire
RTN

*noire
A=0 W
A=A-1 W
DAT0=A W
D0=D0+ 16
DAT0=A W
D0=D0+ 16
DAT0=A B
D0=D0+ 2
RTN

@"
  PRO
"GOSBVL 0679B
@"
  ENDE
"GOSBVL 067D2
A=DAT0 A
D0=D0+ 5
PC=(A)
@"
  VIREV NEWOB Code
END
