100 REMark *--------------------------------------------------------------------
110 REMark * FICHERO:  Soporte_bas
120 REMark * OBJETIVO: Servir de soporte al desarrollo de Olimpo
130 REMark * FECHA:    M.25.7.1995
140 REMark * FUNCIONES DISPONIBLES:
150 REMark *   PonAlt  MandaCC  C  M  SC  Ayuda  Zeus  CreaLib  Copia
160 REMark *   Salva  Examina  Mdemo  PrepCop  CO  Touch
170 REMark *--------------------------------------------------------------------
180 :
190 REMark *--------------------------------------------------------------------
200 REMark * Variables globales
210 REMark *--------------------------------------------------------------------
220 DIM Salida$  (20)  : REMark Orden para poner el nombre del ejecutable
230 DIM Origen$  (20)  : REMark Directorio donde est el sistema
240 DIM Destino$ (20)  : REMark Directorio donde se copia el sistema
250 DIM DirComp$ (20)  : REMark Directorio donde estn los ficheros de C68
260 :
270 REMark *--------------------------------------------------------------------
280 REMark * Programa principal
290 REMark *--------------------------------------------------------------------
300 Origen$  = "Win2_Olm_"
310 Destino$ = "FLP1_"
320 DirComp$ = "Win2_C68_"
330 DATA_USE Origen$ : PROG_USE Origen$
340 ALTKEY "s", "Soporte_bas"
350 Ayuda
360 :
370 REMark *--------------------------------------------------------------------
380 REMark * PROCEDIMIENTO: Ayuda
390 REMark * OBJETIVO: Mostrar los procedimientos disponibles
400 REMark *--------------------------------------------------------------------
410 DEFine PROCedure Ayuda
420   WSET : REMark  Si no dispones de WSET puedes usar WTV o CLS
430   PRINT "Programa de soporte de Olimpo QL"
440   PRINT
450   PRINT "Procedimientos disponibles:"
460   PRINT
470   PRINT "C         Compila y monta un fichero"
480   PRINT "M         Llama a make con el nombre del makefile"
490   PRINT "SC        Slo compila un fichero"
500   PRINT "Touch     Invoca el programa touch"
510   PRINT "Ayuda     Muestra estas instrucciones"
520   PRINT "Zeus      Invoca el programa Zeus"
530   PRINT "Examina   Coloca por orden los _o"
540   PRINT "CreaLib   Une los _o creando libOlimpo_a"
550   PRINT "Salva     Hace copias de seguridad"
560   PRINT "PrepCop   Prepara los ficheros para copiar"
570   PRINT "Copia     Copia el sistema completo"
580   PRINT "Mdemo     Monta el programa de demostracin"
590   PRINT "CO        Compila y monta un programa usando Olimpo"
600   PRINT
610   PRINT "Orden de los objetos de Olimpo:"
620   PRINT "Gen Mem Pan Azr Tim Son Car Lis Trz Zon Cad Prg"
630   PRINT "Fec Tec Cdr Reg Usr Fch Men Cnf Bdt Mmo Ind Dbn Tif"
640 END DEFine Ayuda
650 :
660 REMark *--------------------------------------------------------------------
670 REMark * PROCEDIMIENTO: C
680 REMark * OBJETIVO: Compilar y montar un fichero
690 REMark * ENTRADAS: El nombre sin extensin
700 REMark * EJEMPLO:  C "UneH"
710 REMark *--------------------------------------------------------------------
720 DEFine PROCedure C (Fuente$)
730   PonAlt Fuente$
740   MandaCC Fuente$ & "_c" & Salida$
750 END DEFine C
760 :
770 REMark *--------------------------------------------------------------------
780 REMark * PROCEDIMIENTO: M
790 REMark * OBJETIVO: Llamar a make con el nombre de un makefile
800 REMark * ENTRADAS: El nombre del fichero makefile sin extensin
810 REMark * EJEMPLO:  M "Vgen"
820 REMark *--------------------------------------------------------------------
830 DEFine PROCedure M (Makefile$)
840   PonAlt Makefile$
850   PROG_USE DirComp$
860   EX DirComp$ & "make" ; "-f" & Makefile$ & "_mak"
870   PROG_USE Origen$
880 END DEFine M
890 :
900 REMark *--------------------------------------------------------------------
910 REMark * PROCEDIMIENTO: Touch
920 REMark * OBJETIVO: Llamar a touch con los nombres de los ficheros
930 REMark * ENTRADAS: La cadena que hay que mandar a touch
940 REMark * EJEMPLO:  Touch "Vgen_o"
950 REMark *--------------------------------------------------------------------
960 DEFine PROCedure Touch (Orden$)
970   EX DirComp$ & "touch" ; Orden$
980 END DEFine M
990 :
1000 REMark *--------------------------------------------------------------------
1010 REMark * PROCEDIMIENTO: Zeus
1020 REMark * OBJETIVO: Ejecutar el programa Zeus
1030 REMark *--------------------------------------------------------------------
1040 DEFine PROCedure Zeus
1050   CLS
1060   EW Zeus_exe
1070 END DEFine Zeus
1080 :
1090 REMark *--------------------------------------------------------------------
1100 REMark * PROCEDIMIENTO: Examina
1110 REMark * OBJETIVO: Poner los _o en un orden que luego pueda manejar ld
1120 REMark * ENTRADAS: El fichero Objeto_lst
1130 REMark * SALIDAS:  El fichero ObjetoOrdenado_lst
1140 REMark *--------------------------------------------------------------------
1150 DEFine PROCedure Examina
1160   EW DirComp$ & "slb"   ; "-mOlimpo_lst -LOlimpoPares_lst"
1170   EW DirComp$ & "tsort" ; "OlimpoPares_lst >OlimpoOrdenado_lst"
1180   DELETE OlimpoPares_lst
1190 END DEFine Examina
1200 :
1210 REMark *--------------------------------------------------------------------
1220 REMark * PROCEDIMIENTO: CreaLib
1230 REMark * OBJETIVO: Crear libOlimpo_a invocando slb
1240 REMark * ENTRADAS: El fichero OlimpoOrdenado_lst
1250 REMark *--------------------------------------------------------------------
1260 DEFine PROCedure CreaLib
1270   WSET :  REMark  Si no dispones de WSET puedes usar WTV o CLS
1280   DELETE libOlimpo_a
1290   EX DirComp$ & "slb" ; "-c -v -mOlimpoOrdenado_lst libOlimpo_a"
1300 END DEFine CreaLib
1310 :
1320 REMark *--------------------------------------------------------------------
1330 REMark * PROCEDIMIENTO: SC
1340 REMark * OBJETIVO: Compilar un fichero (slo compilar)
1350 REMark * ENTRADAS: El nombre sin extensin
1360 REMark * EJEMPLO:  SC "PanDefin"
1370 REMark *--------------------------------------------------------------------
1380 DEFine PROCedure SC (Fuente$)
1390   MandaCC " -c " & Fuente$ & "_c"
1400 END DEFine SC
1410 :
1420 REMark *--------------------------------------------------------------------
1430 REMark * PROCEDIMIENTO: PonAlt
1440 REMark * OBJETIVO: Asignar Altkeys y poner el nombre del ejecutable
1450 REMark * ENTRADAS: El identificador del objeto
1460 REMark * SALIDAS:  La variable global Salida$
1470 REMark * EJEMPLO:  PonAlt "Vgen"
1480 REMark *--------------------------------------------------------------------
1490 :
1500 DEFine PROCedure PonAlt (nom$)
1510   LOCal ejecutable$
1520   :
1530   ALTKEY "m", '"' & nom$ & '"'
1540   ejecutable$ = nom$ & "_exe"
1550   ALTKEY "x", "EX " & ejecutable$
1560   ALTKEY "q", "EW " & ejecutable$
1570   :
1580   Salida$ = " -o" & ejecutable$ & " "
1590 END DEFine PonAlt
1600 :
1610 REMark *--------------------------------------------------------------------
1620 REMark * PROCEDIMIENTO: MandaCC
1630 REMark * OBJETIVO: Lanzar CC con ciertas opciones
1640 REMark * ENTRADAS: La orden especfica que hay que enviar
1650 REMark * SALIDAS:  Lo que ocurra en CC
1660 REMark * EJEMPLO:  MandaCC "-c Vpan_c"
1670 REMark *--------------------------------------------------------------------
1680 DEFine PROCedure MandaCC (Cadena$)
1690   LOCal Orden$
1700   LOCal temporal$
1710   LOCal compilador$
1720   LOCal bufp$
1730   :
1740   temporal$   = " -tmpRAM1_ "
1750   compilador$ = " -Y" & DirComp$
1760   bufp$       = " -bufp200 "
1770   Orden$ = temporal$ & compilador$ & bufp$ & Cadena$
1780   :
1790   EW DirComp$ & "cc" ; Orden$
1800 END DEFine MandaCC
1810 :
1820 REMark *--------------------------------------------------------------------
1830 REMark * PROCEDIMIENTO: Mdemo
1840 REMark * OBJETIVO: Montar el programa de demostracin
1850 REMark *--------------------------------------------------------------------
1860 DEFine PROCedure Mdemo
1870   PonAlt "Demo"
1880   MandaCC "-c -N Demo_c"
1890   MandaCC "-oDemo_exe Demo_o -L" & Origen$ & " -lOlimpo -lm "
1900 END DEFine Mdemo
1910 :
1920 REMark *--------------------------------------------------------------------
1930 REMark * PROCEDIMIENTO: PrepCop
1940 REMark * OBJETIVO: Preparar los ficheros para copiar Olimpo
1950 REMark *--------------------------------------------------------------------
1960 DEFine PROCedure PrepCop
1970   LOCal NombreFich$(3,20), ListaNombre$, Nuevo$
1980   NombreFich$(1) = "Sistema"
1990   NombreFich$(2) = "Demo"
2000   NombreFich$(3) = "Fuente"
2010   FOR i = 1 TO 3
2020     CLS
2030     PRINT "Preparando lista de ficheros " & NombreFich$(i)
2040     IF ( i=3 )
2050       ListaNombre$ = " Fuente_lst"
2060     ELSE
2070       ListaNombre$ = ""
2080     END IF
2090     OPEN #3, NombreFich$(i) & "_lst"
2100     REPeat Lectura
2110       IF EOF (#3) : EXIT Lectura
2120       INPUT #3, Nuevo$
2130       ListaNombre$ = ListaNombre$ & " " & Nuevo$
2140     END REPeat Lectura
2150     CLOSE #3
2160     PRINT "Poniendo al da el fichero comprimido..."
2170     EW DirComp$ & "Zip2" ; "-u " & NombreFich$(i) & ListaNombre$
2180   END FOR i
2190   PRINT "Terminado"
2200 END DEFine PrepCopia
2210 :
2220 REMark *--------------------------------------------------------------------
2230 REMark * PROCEDIMIENTO: Copia
2240 REMark * OBJETIVO: Copiar los ficheros de Olimpo a un disquete
2250 REMark *--------------------------------------------------------------------
2260 DEFine PROCedure Copia
2270   LOCal Nombre$(5,20), Total
2280   Total = 5
2290   Nombre$(1) = "Leeme_txt"
2300   Nombre$(2) = "UnZip_exe"
2310   Nombre$(3) = "Sistema_zip"
2320   Nombre$(4) = "Demo_zip"
2330   Nombre$(5) = "Fuente_zip"
2340   CLS
2350   PRINT "Copiando ficheros..."
2360   FOR i = 1 TO Total
2370     PRINT Nombre$(i)
2380     COPY Origen$ & Nombre$(i) TO Destino$ & Nombre$(i)
2390   END FOR i
2400 END DEFine Copia
2410 :
2420 REMark *--------------------------------------------------------------------
2430 REMark * PROCEDIMIENTO: Salva
2440 REMark * OBJETIVO: Hacer copia de seguridad de los ficheros esenciales
2450 REMark *--------------------------------------------------------------------
2460 DEFine PROCedure Salva
2470   LOCal ListaNombre$, Nuevo$
2480   CLS
2490   PRINT "Preparando lista de ficheros..."
2500   ListaNombre$ = "Salva_lst"
2510   OPEN #3, "Salva_lst"
2520   REPeat Lectura
2530     IF EOF (#3) : EXIT Lectura
2540     INPUT #3, Nuevo$
2550     ListaNombre$ = ListaNombre$ & " " & Nuevo$
2560   END REPeat Lectura
2570   CLOSE #3
2580   PRINT "Poniendo al da el fichero comprimido..."
2590   EW DirComp$ & "Zip2" ; "-u Seguridad " & ListaNombre$
2600   PRINT "Copiando el fichero comprimido..."
2610   COPY_O Origen$ & "Seguridad_zip", Destino$ & "Seguridad_zip"
2620   PRINT "Terminado."
2630 END DEFine Salva
2640 :
2650 REMark *--------------------------------------------------------------------
2660 REMark * PROCEDIMIENTO: CO
2670 REMark * OBJETIVO: Compilar y montar un fichero con Olimpo
2680 REMark * ENTRADAS: El nombre sin extensin
2690 REMark * EJEMPLO:  CO "Programa"
2700 REMark *--------------------------------------------------------------------
2710 DEFine PROCedure CO (Fuente$)
2720   PonAlt Fuente$
2730   MandaCC Fuente$ & "_c -L" & Origen$ & " -lOlimpo -lm " & Salida$
2740 END DEFine CO
2750 :
2760 REMark *--------------------------------------------------------------------
2770 REMark * PROCEDIMIENTO: Renombra
2780 REMark * OBJETIVO: Renombrar los ficheros de maysculas a bonito
2790 REMark *--------------------------------------------------------------------
2800 DEFine PROCedure Renombra
2810   LOCal Nombre$
2820   CLS
2830   PRINT "Renombrando ficheros..."
2840   OPEN #3, "Salva_lst"
2850   REPeat Lectura
2860     IF EOF (#3) : EXIT Lectura
2870     INPUT #3, Nombre$
2880     PRINT Nombre$
2890     IF ( Nombre$ <> "" AND Nombre$ <> "Salva_lst" )
2900       RENAME Nombre$, "XxZz17_Olm"
2910       RENAME "XxZz17_Olm", Nombre$
2920     END IF
2930   END REPeat Lectura
2940   CLOSE #3
2950   PRINT "Terminado"
2960 END DEFine Renombra
