|
AMIGA
Time Code
Por Juan Carlos Sánchez García
Versión 1.1 13/07/92
HISTORIA
Este programa
fue creado para solucionar de forma sencilla y efectiva el problema
que me planteó mi gran amigo Tantín, que como todo buen
profesional del vídeo, exige una cierta calidad.
Es típico
que cuando editamos una serie de imágenes, precisemos insertar
una banda sonora para porporcionarle a nuestro trabajo un toque especial.
Por lo general dicha banda sonora suele ser una música adecuada
para las imágenes...
El método
más utilizado por todo aficionado, consiste en realizar un AUDIO
DUBBING o inserción del audio en la cinta de video, sin alterar
la imagen. Este método no permite el sincronizar de cierta manera
la imagen con el sonido.
Por ejemplo:
supongamos que las imágenes corresponden a una carrera de motos
que hemos grabado en el circuito de Jerez y queremos montarlas con una
música rápida y en una escena, una moto cae estrepitosamente
y queremos que ese instante coincida con una subida del ritmo de la
música... Para todo profesional del vídeo, es sabido que
la forma más sencilla para ello es grabar la música en
cinta de video y editar ésta como si de imágenes se tratase.
Así, conseguiremos una sincronización de la imagen y el
sonido. Muchos profesionales del video, graban en video los efectos
sonoros o músicas más usados, para realizar dichos montajes.
La gran mayoría de los videos industriales o semiprofesionales
no incluyen como configuración básica un generador de
códigos de tiempo que es grabado como parte de la información
de video. Con dicho código de tiempos, podemos acceder a cualquier
posición de una cinta de video con gran exactitud y desde cualquier
punto de la cinta. Por lo general estos videos poseen un cortador de
tiempo que cuenta con una precisión al FRAME pero con el inconveniente
de que dicho tiempo comienza en el punto en que se encuentre la cinta
en el momento de su inserción. Por ello, nunca tenemos un punto
exacto de localización de los fragmentos que tengamos en la cinta.
Si la cinta contiene una gran cantidad de sonidos o canciones grabadas,
el localizar un fragmento puede ser un trabajo complicado. En este punto
entramos en juego el ATC. Cuando grabamos la música en las cintas
de video, lo hacemos en la pista de uadio normal o en la HIFI si la
tenemos. Como no necesitamos grabar ninguna imagen, aprovechamos la
pista de video para grabar un código de tiempos en imagen, un
simple contador de tiempo con precisión al FRAME. Conforme vamos
grabando la música grabamos la imagen del contador y vamos anotando
los tiempo de comienzo de cada fragmento. Así podremos localizar
cualquier punto de forma rápida y precisa.
CARACTERISTICAS
Debido a que
estamos en ESPAÑA y aquí la norma televisiva es la PAL,
el programa genera un código de tiempos de 25 FRAMES por segundo.
El tiempo máximo que puede contar es de 24 horas. (A ver que
cinta dura eso)
La imagen del
contador está generada en Hi-ress interlace para que luego no
digas...
FUNCIONAMIENTO
El control
del código se realiza con los dos botones del ratón de
la siguiente forma:
- Una vez arrancado
el programa con el botón derecho entraremos en el contador...
- El botón IZQUIERDO empieza a contar. (PLAY)
- El botón DERECHO congela el contador. (PAUSE)
- El botón DERECHO durante 2 segundos pone a cero el contador.
(RESET)
- El botón DERECHO+IZQUIERDO termina el programa. (END)
PROBLEMAS CONOCIDOS
Por ahora son
desconocidos...
FUTURAS VERSIONES
Tengo en preparación
una nueva versión que incorpora una base de datos con todos los
tiempo así como la posibilidad de insertar a demás del
contador, texto que incluya el nombre del disco, autor, así como
toda información necesaria.
Además
la base de datos permite almacenar información sobre discos de
música y mantener una discoteca tanto de Video, CD, MD, DAT,
MC, DCC, LP, que además incluya la búsqueda por nombre,
artistas, tipo de música, etc...
Dispondrá
de editor de carátulas para todos los soportes grabables.
La base de
datos también permitirá almacenar películas o montajes
de video así como inserción de imágenes digitalizadas
ya sean de las secuencias o de la carátula para una mayor flexibilidad
en la búsqueda.
Será
indispensable el poseer disco duro y la versión OS 2.04.
INFO
Este programa
es de DOMINIO PUBLICO y tiene permiso del autor para ser copiado, con
la única condición de mantener los Copywrites originales
y todos los ficheros que acompañan, que son:
- ATC
- ATC.info
- ATC.DOC
- ATC.DOC.info
- Fonts:Hamilton/12
- Fonts:Hamilton.font
- Fonts:nEuro/36
- Fonts:nEuro.font
Para funcionar
el programa deberemos instalar las fuentes de letras en nuestro directorio
FONTS: y además es necesario la libería Diskfont.library
en el directorio LIBS:
Realizado integramente
en MODULA II (Cluster v1.0) y compatible con las versiones de KICKSTART
1.x y 2.x así como con todos los procesadores de la familia MC680x0.
En ratos libres
hago algunos programas de este tipo... si te interesan (Poquitos...
algunos de DP y otros NO...)
QUE GURU 1.0
Por JM Torresano
Este programa
es de distribución gratuita. NO puede venderlo bajo ningún
concepto.
INTRODUCCION
El programa
es una pequeña utilidad para saber por qué demonios su
Amiga se ha puesto místico. Lo que tiene que hacer es apuntar
los ocho primeros dígitos (empezando desde la izquierda y hasta
el punto) del guru de su alerta. A continuación, deje que QUEGURU
se lo interprete.
USO
El empleo del
programa no puede ser más fácil: teclee desde el CLI QUEGURU
y cuando le pida el número introduzca el que apuntó y
pulse INTRO. El número puede tener un espacio en medio (xxxx
xxxx) o no (xxxxxxxx), como le sea más cómodo. Una vez
en el programa, puede introducir más números sin tener
que ejecutarlo de nuevo. Para salir basta con pulsar la tecla INTRO
sin ningún número.
Ejemplos: >QUEGURU
GURU MEDITATION v1.0
GURU numero (Return para parar):
0000 0003
Código de Error: 0000 0003
La Alerta es: Recuperable
Provocada por: CPU
Error General al: No Aplicable
Error Específico: Error de Dirección
GURU número (Return para parar):
81000005
Código de Error: 8100 0005
ÑLa Alerta es: No Recuperable
Provocada por: Libería Exec
Error General al: No Aplicable
Error Específico: Lista de memoria corrupta detectada en FreeMem
CARACTERISTICAS
El programa
está diseñado para hacer una interpretación dinámica
de las alertas. Estos significa que puede interpretar cualquier combinación,
dentro de los valores posibles, sin que ello signifique que, en realidad,
se pueda dar esa alerta :-[. El programa controla la calidad (numero
de digitos y su validez) del gurú introducido.
Todos los mensajes
están actualizados hasta la versión 2.4 del Workbench
y en castellano :-). Funciona en cualquier Amiga con ROM 1.2, 1.3 ó
2.04.
Si quiere que
el programa soporte más opciones o si ha encontrado algún
'bug', por favor mándeme una nota a través de la redacción.
GRACIAS.
CheckClock versión 2.0
Ricardo Martínez (15-Nov-1992)
Gracias por
usar CheckClock 2.0, si quiere hacer alguna sugerencia o informar de
algún BUG, déjeme un mensaje en FidoNET.
RESTRICCIONES
- Sólo
funciona bajo AmigaDOS v2.04 o superior.
- Sólo funciona desde el Shell.
- Necesita la librería ReqTools v38 o superior (incluida en el
archivo).
FUNCIONAMIENTO
CheckClock
es una utilidad para mantener la fecha de su Amiga siempre correcta.
Para ello comprueba que la fecha del reloj interno y la del sistema
están dentro del margen especificado.
¿Por
qué un margen? Para evitar escribir la fecha en el disco cada
vez que se ejecuta el programa CheckClock debería ser ejecutado
en la secuencia de rranque de su Amiga, por lo tanto es posible que
se ejecute varias veces al día y se escribiría la misma
fecha en el disco varias veces, lo cual es innecesario. Usando el margen
sólo se slavará la fecha una o dos veces al mes (según
el margen). Por ejemplo, un margen de 15 días y en condiciones
normales implica que se salve la fecha cada 7 días. Eso es porque,
aunque se considera válida dentro de esos 15 días, se
actualiza cada 7 (la mitad del margen).
Se usa como:
CheckClock [margen] [NOSAVE]
- margen (opcional):
Margen es días por defecto o exceso dentro del cual se considera
válida la fecha actual. Por defecto son 15 días.
- NOSAVE (opcional):
abreviado NS): CheckClock salva las fechas en caso de necesidad. Esta
opción impide que se modifique alguna de las fechas comprobadas.
CheckClock
funciona de la siguiente forma:
- En primer
lugar comprueba que la fecha del reloj interno y la del sistema coincidan.
Si no lo hacen, avisa de ello y pregunta cual de ellas debe ser usada
como la correcta.
- Seguidamente
lee la fecha de creación en disco del programa, y comprueba que
la diferencia entre esta y la del reloj interno está dentro del
margen especificado. Si todo es correcto y además la diferencia
no excede la mistad del margen, finaliza el programa silenciosamente.
Si la diferencia es mayor que la mitad y menor que el margen, modifica
la fecha de creación del programa dejándola como la fecha
actual del reloj interno. Si excede el margen, avisa de ello permitiendo
usar la fecha del reloj interno, la última salvada o introducir
una nueva fecha. Esta fecha será salvada como la del reloj interno,
del sistema y de creación del programa.
BUGS CONOCIDOS
- Al modificar
las fechas es posible que el manejo de los segundos no sea muy exacto.
- Este programa
ha sido desarrollado inicialmente en un Amiga 2000 y probado posteriormente
en un Amiga 3000 asegurando su perfecto funcionamiento.
INSTALACION
Si usa la secuencia
de arranque estándar del Amiga, añada una línea
para ejecutar el comando "CheckClock" dentro del script "S:User-startup"
si existe. Si no puede crear uno nuevo o añadir el comando en
el fichero "S:startup-sequence" entre las líneas "LoadWB"
y "EndCLI >NIL:".
DISTRIBUCION
Este programa
es SHAREWARE. Esto quiere decir que, si lo usa habitalmente debe contribuir
económicamente para financiar el desarrollo de este y otros programas
y así fomentar el uso del Amiga. Cualquier contribución
es válida si no puede mandar dinero, al menos mándeme
una postal para que yo vea que alguien usa mis programas y merece la
pena seguir con ellos. Mi dirección es:
Ricardo Martinez Carretero
c/ Federico Moreno Torroba, 1
Madrid 28007
;-------------------------------- ; $VER: CheckClock versión 2.0 Ricardo Martinez (15-Nov-1992) ;-------------------------------- ; Escrito con CygnusEd Pro v2.12 ; Ensamblado con GenAm v3.02 ;-------------------------------- incdir "Sources:Include/" include "ExecCalls.i" include "DosCalls.i" include "UtilCalls.i" AllocRequest equ -30 ; reqtools FreeRquest equ -36 EZRequestA equ -66 GetStringA equ -72 ReadBattClock equ -12 ; battmem WriteBattClock equ -18 lib_Version equ 20 ; exec RDA_Buffer equ 0 ; dos RDA_Lenght equ 4 RDA_SIZE equ 32 FORMAT_DOS equ 0 fib_FileName equ 8 fib_Date equ 132 ds_Days equ 0 ds_Minute equ 4 ds_Tick equ 8 ds_SIZE equ 12 dat_StrDay equ 14 dat_SIZE equ 26 RT_ReqPos equ $80000003 ; reqtools RTEZ_ReqTitle equ $80000014 RTGS_TextFmt equ $80000026 TAG_END equ 0 REQPOS_CENTERSCR equ 2 RT_REQINFO equ 1 io_Command equ 28 ; struct IORequest tv_secs equ 0 tv_micro equ 4 tr_node equ 0 tr_time equ 32 tr_SIZE equ 40 CMD_NONSTD equ 9 TR_SETSYSTIME equ CMD_NONSTD+2 UNIT_VBLANK equ 1 ;-------------------------------- section CClock_code,CODE ;-------------------------------- StartUp lea RDA_args,a1 ; save command line data move.l a0,RDA_Buffer(a1) move.l d0,RDA_Lenght(a1) lea DosName,a1 ; open "dos.library" moveq #0,d0 movea.l 4.w,a6 jsr OpenLibrary(a6) move.l d0,DosBase beq CleanUp .c1 movea.l DosBase,a0 ; check AmigaDOS version move.w lib_Version(a0),d0 cmpi.w #37,d0 bge.s .c2 move.l #T_DosErr,d1 bra Error .c2 lea ReqName,a1 ; open "reqtools.library" moveq #0,d0 movea.l 4.w,a6 jsr OpenLibrary(a6) move.l d0,ReqBase bne.s .c3 move.l #T_ReqErr,d1 bra.s Error ,c3 moveq #RT_REQINFO,d0 ; alloc a Requester lea 0.w,a0 movea.l ReqBase,a6 jsr AllocRequestA(a6) move.l d0,RT_req bne.s .c4 move.l #T_MemErr,d1 bra.s Error .c4 lea UtilName,a1 ; open "utility.library" moveq #0,d0 movea.l 4.w,a6 jsr OpenLibrary(a6) move.l d0,UtilBase bne.s .c5 move.l #T_UtilErr,d1 bra.s Error .c5 lea BClkName,a1 ; open "battclock.resource" movea.l 4.w,a6 jsr OpenResource(a6) move.l d0,BClkBase move.l #10,RetCode bsr.s CheckClock beq.s CleanUp Error movea.l DosBase,a6 ; print error jsr PutStr(a6) CleanUp move.l UtilBase,d1 ; close "utility.library" beq.s .e4 movea.l d1,a1 movea.l 4.w,a6 jsr CloseLibrary(a6) .e4 move.l RT_req,d1 ; free requester beq.s .e3 movea.l d1,a1 movea.l ReqBase,a6 jsr FreeRequest(a6) .e3 move.l ReqBase,d1 ; close "reqtools.library" beq.s .e2 movea.l d1,a1 movea.l 4.w,a6 jsr CloseLibrary(a6) .e2 move.l DosBase,d1 ; close "dos.library" beq.s .e1 movea.l d1,a1 movea.l 4.w,a6 jsr CloseLibrary(a6) .e1 move.l RetCode,d0 rts ;-------------------------------- ; main code CheckClock bsr ParseArgs ; parse arguments beq .e1 bsr GetSysDate ; get system date bsr GetClkDate ; get battclock date beq.s .c1 lea DS_System,a0 ; compare system & battclock date lea DS_BClock,a1 move,l ds_Days(a0),d0 move.l ds_Days(a1),d1 cmp.l d0,d1 beq.s .c1 lea T_WhichUse,a1 ; does not match, which must I use? lea T_3gads,a2 lea AA_temp,a4 move.l #BU_BCday,(a4) move.l #BU_BCdate,4(a4) move.l #BU_SYday.8(a4) move.l #BU_SYdate,12(a4) bsr ARequest beq .e2 lea DAT_BClock,a0 ; copy good date info bad date lea DAT_System,a1 subq.l #1,d0 beq.s .c3 exg a0,a1 .c3 moveq #dat_SIZE-1,d0 .l1 move.b (a0)+,(a1)+ dbf d0,.l1 bset #0,Flags .c1 bsr GetDskDate ; get saved date bne.s .c2 lea T_DskErr,a1 ; cant read disk date bsr SRequest bra .c4 .c2 lea DS_BClock,a0 ; compare battclock & saved dates lea DS_Disk,a1 move.l ds_Days(a0),d0 move.l ds_Days(a1),d1 sub.l d1,d0 bpl.s .c5 neg.l d0 .c5 move.l DMargen,d1 bset #1,Flags cmp.l d1,d0 bhi.s .c7 ; out of range! -> save lsr.l d1 cmp.l d1,d0 bhi.s .c10 ; in range, but must be saved bclr #1,Flags bra.s .c4 .c7 lea T_BadDate,a1 ; HEY, Bad date! lea T_4gads.a2 lea AA_temp,a4 move.l #BU_BCday,(a4) move.l #BU_BCdate,4(a4) move.l #BU_DKday,8(a4) move.l #BU_DKdate,12(a4) bsr ARequest beq.s .e2 cmpi.w #3.d0 bne.s .c8 bsr AskDate ; ask a new date beq.s .e2 bra.s .c4 .c10 lea DAT_BClock,a0 ; copy good date into bad date lea DAT_Disk,a1 bra.s .c9 .c8 lea DAT_BClock,a0 ; copy good date into bad date lea DAT_Disk,a1 subq.l #1,d0 beq.s .c9 exg a0,a1 .c9 moveq #dat_SIZE-1,d0 .l2 move.b (a0)+,(a1)+ dbf d0,.l2 .c4 tst.l AA_args+4 ; NOSAVE! bne.s .e1 btst #0,Flags ; save system & battclock dates? beq.s .c6 bsr SetClkDate bsr SetSysDate .c6 btst #1,Flags ; save disk date? beq.s .e1 bsr SetDskDate bne.s .e1 lea T_SaveErr,a1 ; cant save disk date bsr SRequest .e2 move.l #5,RetCode rts .e1 clr.l RetCode rts ;-------------------------------- ; parse command line arguments ParseArgs lea RDA_args,a0 ; command is "?" movea.l RDA_Buffer(a0),a0 move.b (a0)+,d0 lsl.w #8,d0 move.b (a0)+,d0 cmpi.w #$3f0a,d0 bne.s .c1 lea T_About,a1 ; about CheckClock bsr SRequest rts .c1 move.l #Template,d1 ; parse command line move.l #AA_args,d2 move.l #RDA_args,d3 movea.l DosBase,a6 jsr ReadArgs(a6) move.l d0,RDA_args2 bne.s .c2 lea T_ArgErr,a1 bsr SRequest rts .c2 lea AA_args,a0 ; get arguments move.l (a0),d0 beq.s .c3 movea.l d0,a0 move.l (a0),DMargen .c3 move.l RDA_args2,d1 ; free ReadArgs() work space movea.l DosBase,a6 jsr FreeArgs(a6) moveq #-1,d0 rts ;-------------------------------- ; get BattClock date GetClkDate tst.l BClkBase ; there is a batt-clock? beq.s .e1 movea.l BClkBase,a6 ; get battclock date jsr ReadBattClock(a6) move.l #60*50*24,d1 ; make battclock DateStamp movea.l UtiBase,a6 jsr UDivMod32(a6) move.l d0,DS_BClock+ds_Days move.l d1,d0 moveq #60,d1 movea.l UtilBase,a6 jsr UDivMod32(a6) move.l d0,DS_BClock+ds_Minute move.l d1,DS_BClock+ds_Tick move.l #DAT_BClock,d1 ; make battclock date string move.l DosBase,a6 jsr DateToStr(a6) moveq #-1,d0 .e1 rts ;-------------------------------- ; set BattClock date SetClkDate tst.l BClkBase beq.s .e1 lea DS_BClock,a0 ; calc Clock date bsr DStmp2Secs movea.l BClkBase,a6 ; save Clock date jsr WhiteBatClock(a6) .e1 rts ;-------------------------------- ; get System date GetSysDate move.l #DS_System,d1 ; get System DateStamp move.l DosBase,a6 jsr DateStamp(a6) move.l #DAT_System,d1 ; make System date string move.l DosBase,a6 jsr DateToStr(a6) rts ;-------------------------------- ; set System date SetSysDate movea.l 4.w,a6 ; create a port jsr CreateMsgPort(a6) move.l d0,MP_timer beq .e1 movea.l MP_timer.a0 ; create an IORequest moveq #tr_SIZE,d0 movea.l 4.w,a6 jsr CreateIORequest(a6) move.l d0,IO_timer beq.s .e2 lea TimerName,a0 ; open "timer.device" movea.l IO_timer,a1 moveq #UNIT_VBLANK,d0 moveq #0,d1 movea.l 4.w,a6 jsr OpenDevice(a6) tst.l d0 bne.s .e3 movea.l IO_timer,a1 move.l d0,tr_time+tv_secs(a1) move.l d1,tr_time+tv_micro(a1) move.w #TR_SETSYSTIME,io_Command(a1) movea.l 4.w,a6 jsr DoIO(a6) movea.l IO_timer,a1 ; close "timer.device" movea.l 4.w,a6 jsr CloseDevice(a6) .e3 movea.l IO_timer,a0 ; delete IORequest movea.l 4.w,a6 jsr DeleteIORequest(a6) .e2 movea.l MP_timer,a0 ; delete port movea.l 4.w,a6 jsr DeleteMsgPort(a6) .e1 rts ;-------------------------------- ; seconds, mseconds=DStmp2Secs(DateStamp) ; d0 d1 a0 DStmp2Secs move.l ds_Days(a0),d1 move.l ds_Minute(a0),d2 move.l ds_Tick(a0),d3 move.l #24*60*60,d0 movea.l UtilBase,a6 jsr UMul32(a6) move.l d0,d4 moveq #60,d0 mulu d2,d0 add.l d4,d0 move.l d3,d1 divu #5,d1 mulu #6,d1 add.l d1,d0 move.l d0,-(sp) divu #3000,d3 clr.w d3 swap d3 move.l d3,d1 move.l #20000,d0 movea.l UtilBase,a6 jsr UMul32(a6) move.l d0,d1 ; d1 = µseconds move.l (sp)+,d0 ; d0 = seconds rts ;-------------------------------- ; get saved date GetDskDate movea.l DosBase,a6 ; get program's dir jst GetProgramDir(a6) move.l d0,ProgDir move.l #ProgName,d1 ; get program's name move.l #256,d2 jsr GetProgramName(a6) tst.l d0 beq .e1 move.l ProgDir,d1 ; program's dir is now current dir movea.l DosBase,a6 jsr CurrentDir(a6) move.l d0,OldDir move.l #ProgName,d1 ; lock CheckClock movea.l DosBase,a6 jsr Lock(a6) move.l d0,CClockLock beq.s .e2 move.l d0,d1 ; examine CheckClock move.l #FInfo,d2 movea.l DosBase,a6 jsr Examine(a6) tst.l d0 beq.s .e3 lea FInfo+fib_Date,a0 ; get disk DateStamp lea DS_Disk,a1 move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l #DAT_Disk,d1 ; make Disk date string move.l DosBase,a6 jsr DateToStr(a6) .e3 move.l CClockLock,d1 ; unlock CheckClock movea.l DosBase,a6 jsr UnLock(a6) .e2 move.l OldDir,d1 ; restore old current dir movea.l DosBase,a6 jsr CurrentDir(a6) .e1 tst.l FInfo+fib_FileName rts ;-------------------------------- ; set saved date SetDskDate movea.l DosBase,a6 ; get program's dir jsr GetProgramDir(a6) move.l d0,ProgDir move.l #ProgName,d1 ; get program's name move.l #256,d2 jsr GetProgramName(a6) tst.l d0 beq.s .e1 move.l ProgDir,d1 ; program's dir is now current dir movea.l DosBase,a6 jsr CurrentDir(a6) move.l d0,OldDir move.l #ProgName,d1 ; set CheckClock date move.l #DS_Disk,d2 movea.l DosBase,a6 jsr SetFileDate(a6) move.l d0,-(sp) move.l OldDir,d1 ; restore old current dir movea.l DosBase,a6 jsr CurrentDir(a6) move.l (sp)+,d0 .e1 rts ;-------------------------------- ; ask a date from user AskDate lea TL_Stags,a0 ; get a date string lea DAT_BClock,a1 movea.l dat_StrDate(a1),a1 lea T_ReqTitle,a2 lea 0.w,a3 moveq #10,d0 movea.l ReqBase,a6 jsr GetStringA(a6) tst.l d0 beq.s .e1 move.l #DAT_BClock,d1 ; make date string move.l DosBase,a6 jsr StrToDate(a6) tst.l d0 bne.s .c1 lea T_InvDate,a1 ; Bad date! lea T_Salir,a2 lea AA_temp,a4 lea DAT_BClock,a0 move.l dat_StrDate(a0),(a4) bsr.s ARequest bra.s .e1 .c1 lea DAT_BClock,a0 ; copy good date into bad dates lea DAT_System,a1 lea DAT_Disk,a2 moveq #dat_SIZE-1,d0 .l1 move.b (a0),(a1)+ move.b (a0)+,(a2)+ dbf d0,.l1 bset #0,Flags bset #1,Flags moveq #-1,d0 .e1 rts ;-------------------------------- ; ReqTools requester SRequest lea T_Salir,a2 ; "SALIR" a1=text bra.s GRequest ORequest lea T_Ok,a2 ; " OK " a1=text GRequest lea 0.w,a4 ; a1=text a2=gadgets ARequest lea TL_Rtags,a0 FRequest movea.l RT_req,a3 ; a0=tags a1=text a2=gadgets movea.l ReqBase,a6 jsr EZRequestA(a6) tst.l d0 rts ;-------------------------------- section CClock2.00_data,DATA cnop 0,4 FInfo dcb.b 260,0 OldDir dc.l 0 CClockLock dc.l 0 RetCode dc.l 20 OutputFH dc.l 0 DMargen dc.l 15 ProgDir dc.l 0 ProgName dcb.b 256,0 MP_timer dc.l 0 IO_timer dc.l 0 DosBase dc.l 0 ReqBase dc.l 0 UtilBase dc.l 0 BClkBase dc.l 0 DosName dc.b "dos.library",0 ReqName dc.b "reqtools.library",0 utilName dc.b "utility.library",0 BClkname dc.b "battclock.resource",0 TimerName dc.b "timer.device",0 Version dc.b "$VER: CheckClock 2.0 (15.Nov.1992)",0 Flags dc.b 0 even ;-------------------------------- ; arguments RDA_args dcb.b RDA_SIZE RDA_args2 dc.l 0,0 Template dc.b "MARGEN/N,NS=NOSAVE/S" even ;-------------------------------- ; reqtools data RT_req dc.l 0 TL_Stags dc.l RT_ReqPos dc.l REQPOS_CENTERSCR dc.l RTGS_TextFmt,T_DateFmt dc.l TAG_END TL_Rtags dc.l RTEZ_ReqTitle ; title dc.l T_ReqTitle dc.l RT_ReqPos ; position = pointer dc.l REQPOS_CENTERSCR dc.l TAG_END AA_temp dcb.l 10,0 ;-------------------------------- ; dates DAT_BClock ; battclock date DS_BClock dcb.b ds_SIZE dc.b FORMAT_DOS,0 dc.l BU_BCday,BU_BCdate,BU_BCtime BU_BCday dcb.b 16,0 BU_BCdate dcb.b 16,0 BU_BCtime dcb.b 16,0 DAT_System ; system date DS_System dcb.b ds_SIZE dc.b FORMAT_DOS,0 dc.l BU_SYday,BU_SYdate,BU_SYtime BU_SYday dcb.b 16,0 BU_SYdate dcb.b 16,0 BU_SYtime dcb.b 16,0 DAT_Disk ; saved date DS_Disk dcb.b ds_SIZE dc.b FORMAT_DOS,0 dc.l BU_DKday,BU_DKdate,BU_DKtime BU_DKday dcb.b 16,0 BU_DKdate dcb.b 16,0 BU_DKtime dcb.b 16,0 ;-------------------------------- ; texts T_DosErr dc.b "CheckClock 2.0 necesita el AmigaDOS versión 2.04 o superior",10,0 T_ReqErr dc.b "CheckClock 2.0 necesita la librería ReqTools",10,0 T_UtilErr dc.b "CheckClock 2.0 necesita la librería utility",10,0 T_MemErr dc.b "No hay memoria suficiente",10,0 T_ArgErr dc.b "Argumentos erróneos",10,0 T_DskErr dc.b "No puedo leer la última fecha salvada",0 T_SaveErr dc.b "'%s' no es una fecha válida",0 T_ReqTitle dc.b "Check Clock 2.0",0 T_About dc.b "Escrito por Ricardo Martinez Cantero",10 dc.b 10 dc.b "Este programa es SHAREWARE. Contribuye con",10 dc.b "una aportación moneraria si lo usas habitualmente.",10 dc.b 10 dc.b "Uso: CheckClock [margen_en_dias] [NOSALVAR]",0 T_WhichUse dc.b "La fecha del reloj interno es distinta a la del sistema",10,10 dc.b "Reloj interno: %s, %s",10 dc.b "Sistema: %s, %s",10,10 dc.b "¿Cuál debo usar?",0 T_BadDate dc.b "La fecha del reloj interno está fuera del rango especificado",10,10 dc.b "Reloj interno: %s, %s",10 dc.b "Ultima fecha salvada: %2, %2",10,10 dc.b "¿Cuál debo usar?",0 T_DateFmt dc.b "introduce una fecha en la forma 'DD-MMM-YY'",0 T_Salir dc.b "SALIR",0 T_Ok dc.b " OK ",0 T_3gads dc.b " RELOJ | SISTEMA | SALIR ",0 T_4gads dc.b "RELOJ|DISCO|NUEVA|SALIR",0
|
|