El código fuente tiene este aspecto:
Código: Seleccionar todo
@ltd: LET D= CODE "\!'"
@ltm: LET M= 0|16444
@prn: PRINT "\::\0\1\2\3\4\5\6\7\8\9"
@frf: FOR F= VAL "166" TO VAL "175"
@prf: PRINT CHR$ F
@nxf: NEXT F
@frg: FOR F= NOT PI TO VAL "4"
#@gsb: GOSUB @inp
@gsb: GOSUB CODE "Y"
@pat: PRINT AT Y + SGN PI, X + SGN PI; "oo"
@pok: POKE M+F, RND*CODE "<" + F*CODE "="
@nxg: NEXT F
@lty: LET Y= RND*D + SGN PI
@ltx: LET X= RND*D + SGN PI
@pxy: PRINT AT INT Y, INT X;
@ltf: LET F= PEEK( PEEK 0|16398 + VAL "256"*PEEK 0|16399 )
#@iff: IF F=CODE "X" THEN GOTO @lty
@iff: IF F=CODE "X" THEN GOTO CODE "4"
@prx: PRINT "X"; AT D+D, NOT PI;
#@ifo: IF F<>CODE "o" THEN GOTO @gsy
@ifo: IF F<>CODE "o" THEN GOTO CODE "M"
@inx: LET X= X+SGN PI-(VAL "2" AND X>=D)
#@got: GOTO @pxy
@got: GOTO CODE "8"
#@gsy: GOSUB @inp
@gsy: GOSUB CODE "Y"
@frh: FOR F= M TO M+VAL "4"
@ify: IF Y*D+X=PEEK F\
OR Y*D+X=PEEK F + SGN PI THEN PRINT "HIT"
@nxh: NEXT F
@prs: PRINT " "
#@gou: GOTO @lty
@gou: GOTO CODE "4"
@inp: INPUT A$
@ley: LET Y= CODE A$(SGN PI)-CODE "A"
@lex: LET X= VAL A$(VAL "2")
@ret: RETURN
Los cambios realizados (he intentado minimizarlos) son:
- Empleo de etiquetas en lugar de números. Esto facilita la edición, ya que puedes insertar líneas sin tener que renumerar las adyacentes. Para facilitar optimizaciones con CODE se deja la línea comentada y se hace el cambio al final (dejando comentado el salto a la etiqueta).
- Para mejorar legibilidad: identación de FOR, partir alguna línea con \ y dejar una línea en blanco sobre todas las etiquetas que pueden recibir saltos o llamadas a subrutina.
- Los números de 5 dígitos codificados con VAL"" los cambio con 0| ya que ocupan un byte menos.