100 REMark programa boot
110 REMark version 1 - jav 2008
120 :
130 REMark Programa
140 :
150 VALORES  : REMark carga variables
160 PRIMERO  : REMark ejecuta primero
170 PANTALLA : REMark muestra pantalla
180 LISTA    : REMark lee/lista entradas
190 MUESTRA  : REMark primera entrada
200 SELECCION: REMark elije opcion
210 ULTIMO   : REMark ejecuta ultimo
220 LANZA    : REMark lanza aplicacion
230 STOP
240 :
250 REMark Procedimientos
260 :
270 DEFine PROCedure VALORES
280 :
290 REMark ruta
300  disp$='flp1_'
310 :
320 REMark ***** variables modificables
330  modo=512
340 REMark fondo de pantalla
350  fondo=1 : REMark activa background
360  fondo$='bg_scr'   : fonpos=131072
370 REMark codigo de teclas de seleccion
380  sube=208: baja=216: opci=32
390 REMark ancho y alto de ventana en chr
400  anch=52 : alto=10 : lon=12
410 REMark ancho y alto de chr en pixels
420  an_ch=7 : al_ch=10: borde=3
430 REMark posicion de ventana en pixels
440  xw=64   : yw=105
450 REMark pos. de titulo, subt. y nota
460  xti=8   : xsu=4   : xno=22
470  yti=11  : ysu=11  : yno=12
480 REMark ancho sombra en pixels y color
490  sombx=7 : somby=5 : pa_so=0
500 REMark colores para menu y primera
510  in_se=7 : pa_se=2 : prime=2
520 REMark numeros de canales
530  ch_fi=4 : ch_bg=5 : ch_me=6 : ch_in=7
540 REMark tinta y papel de canales
550  in_wb=7 : in_bg=7 : in_me=0 : in_in=0
560  pa_wb=0 : pa_bg=16: pa_me=4 : pa_in=7
570 :
580 REMark ***** variables no modificalbes
590  pos=1   : old_pos=1
600  an=(an_ch*anch)+(borde*4)
610  al=(al_ch*alto)+(borde*2)
620  xw_bg=xw+sombx    : yw_bg=yw+somby
630  an_me=lon*an_ch   : an_in=an-an_me
640  xw_in=xw+an_me
650 END DEFine VALORES
660 :
670 DEFine PROCedure PRIMERO
680 TK2_EXT
690 PRINT "Disco Aventuras. Cargando..."
700 REMark FORMAT ram1_
710 COPY disp$&'zip_exe' TO ram1_zip_exe
720 END DEFine PRIMERO
730 :
740 DEFine PROCedure ULTIMO
750 CLS #ch_in : PRINT\\\;"   "
760 PRINT #ch_in,"Cargando"!aplica$&"..."
770 END DEFine ULTIMO
780 :
790 DEFine PROCedure PANTALLA
800 MODE   modo
810 OPEN   #ch_bg,scr_512x256a0x0
820 PAPER  #ch_bg,pa_bg : INK #ch_bg,in_bg
830 CLS    #ch_bg
840 IF fondo: LBYTES disp$&fondo$,fonpos
850 PAUSE 1 : REMark necesario en emulador
860 OPEN   #ch_me,'scr_'&an&'x'&al&'a'&xw_bg&'x'&yw_bg
870 PAPER  #ch_me,pa_so : CLS #ch_me
880 WINDOW #ch_me,321,24,63,38
890 CLS    #ch_me
900 WINDOW #ch_me,an,al,xw,yw
910 PAPER  #ch_me,pa_wb : INK #ch_me,in_wb
920 CLS    #ch_me
930 WINDOW #ch_me,an_me,al,xw,yw
940 PAPER  #ch_me,pa_me : INK #ch_me,in_me
950 CLS    #ch_me : BORDER #ch_me,borde
960 OPEN   #ch_in,'scr_'&an_in&'x'&al&'a'&xw_in&'x'&yw
970 PAPER  #ch_in,pa_in : INK #ch_in,in_in
980 CLS    #ch_in : BORDER #ch_in,borde
990 END DEFine PANTALLA
1000 :
1010 DEFine PROCedure LISTA
1020 OPEN  #ch_fi,disp$&'boot_info'
1030 REMark cargando textos
1040 INPUT #ch_fi,nulo$
1050 INPUT #ch_fi,nulo$
1060 INPUT #ch_fi,titu$
1070 INPUT #ch_fi,sub1$
1080 INPUT #ch_fi,sub2$
1090 INPUT #ch_fi,nota$
1100 REMark mostrando textos
1110 OVER  #ch_bg,1
1120 AT    #ch_bg,xti,yti
1130 CSIZE #ch_bg,1,1
1140 PRINT #ch_bg,titu$
1150 CSIZE #ch_bg,0,0
1160 INK   #ch_bg,4
1170 AT    #ch_bg,xsu,ysu
1180 PRINT #ch_bg,sub1$
1190 AT    #ch_bg,xsu+1,ysu
1200 PRINT #ch_bg,sub2$
1210 INK   #ch_bg,in_bg
1220 AT    #ch_bg,xno,yno
1230 PRINT #ch_bg,nota$
1240 OVER  #ch_bg,0
1250 REMark cargando numero de programas
1260 INPUT #ch_fi,nulo$
1270 INPUT #ch_fi,progs
1280 INPUT #ch_fi,nulo$
1290 DIM lista$(progs,2,lon)
1300 REMark cargando y mostrando listado
1310 FOR bu=1 TO progs
1320   INPUT #ch_fi,nulo$
1330   IF LEN(nulo$) > lon THEN 
1340     nulo$=nulo$(1 TO lon)
1350   END IF 
1360   lista$(bu,1)=nulo$
1370   PRINT #ch_me,nulo$
1380   nulo=LEN(nulo$)
1390   IF nulo < lon
1400     FOR b=1 TO lon-nulo+1
1410       nulo$=nulo$&" "
1420     END FOR b
1430   END IF 
1440   lista$(bu,2)=nulo$
1450 END FOR bu
1460 CLOSE #ch_fi
1470 END DEFine LISTA
1480 :
1490 DEFine PROCedure MUESTRA
1500 aplica$=lista$(pos,1)
1510 AT    #ch_me,old_pos-1,0
1520 PRINT #ch_me,lista$(old_pos,2)
1530 AT    #ch_me,pos-1,0
1540 PAPER #ch_me,pa_se : INK #ch_me,in_se
1550 PRINT #ch_me,lista$(pos,2)
1560 PAPER #ch_me,pa_me : INK #ch_me,in_me
1570 CLS   #ch_in
1580 AT    #ch_in,0,0
1590 OPEN  #ch_fi,disp$&aplica$&'_info'
1600 INK   #ch_in,prime
1610 INPUT #ch_fi,nulo$
1620 PRINT #ch_in,nulo$
1630 INK   #ch_in,in_in
1640 REPeat bu
1650   IF EOF(#ch_fi) THEN EXIT bu
1660   INPUT #ch_fi,nulo$
1670   PRINT #ch_in,nulo$
1680 END REPeat bu
1690 CLOSE #ch_fi
1700 END DEFine MUESTRA
1710 :
1720 DEFine PROCedure SELECCION
1730 REPeat bucle
1740   nulo$=INKEY$(-1)
1750   nulo=CODE(nulo$)
1760   old_pos=pos
1770   SELect ON nulo
1780     =opci : EXIT bucle
1790     =sube : pos=pos-1
1800      IF pos=0 THEN pos=progs
1810     =baja : pos=pos+1
1820      IF pos=progs+1 THEN pos=1
1830   END SELect 
1840   MUESTRA
1850 END REPeat bucle
1860 END DEFine SELECCION
1870 :
1880 DEFine PROCedure LANZA
1890 CLOSE #ch_me
1900 CLOSE #ch_in
1910 PAPER #ch_bg,0
1920 CLS   #ch_bg
1930 CLOSE #ch_bg
1940 EW ram1_zip_exe;disp$&aplica$&'_z5'
1950 END DEFine LANZA
