1 - TESIUAMI

Anuncio
U N W E RSIDAD AUTO NOlvfk h3 ETRO FOLITL4NA4
UNIDAD IYTAFAUAFA
IN GENIE RÍA E LECTRÓ NICA
/
FRClYE LTO DE INGENIE RIA
ELEGTRONICA I Y 1 1
1
‘
SISTEMA AUTOMATIZADO PARA
129305
1.
PERFORACIÓN DE TABLILLAS DE CIRCUITO
IMPRESO
Asesor es:
Dr.Adriano d e Luca P.y’
Ing. Elensid H.Gar& G.
Y
4
José Garcia nares
r ejü
Maria Zuñiga T
Diaria Laur a Kr o epfly Saury
Silveriu Bautista Fragoso
. ..
_.-I.... .. .
I . OBJETIVOS
F,ealir:ar disefici e irriplaiitaci6n de c-üritrüi digital de un
taiadrci rrtüxi parala perfclraciót-t de tarjetas de Circuito
Impresü basado enuri rciicrüc:ünti-üladür 5031.
Itttpiaritaciht-1 d e Soft ware p x a realizar una iriterfaz de
usuariü adecuada.
11. DISEÑO
El dia.gra.ma a bloques del siguiente sir;tema., muestra a
grandes rasgos la estructura. basica del perforador
‘-7Interface
IconPC
DESCRIPCIdN DE LAS ETAPAS
Sistema mínimo 803 1
Consiste en el kit de 803 1.
El diagrama de este sistema se muestrd. en l a figura 2
L a función de esta etapa es controlar elmanejo de los
motürex que cünstituyrrt l a parte b&ica de l a etapa
mecdnica y püsteriorrriente controlará la irtterfaz de
comunicación con una compiutadora.. con el pr ophsito de
aumentar la eficiencia e n la erttraday adquisición de datos
coordenadas de perforación).
Interface de potencia
Este bloque esta formado princi~taknertteput- do, etapas
que son:
Lbgica d e control y actuador.
El problema principal al diseñar el perforador fué el
movimiento del taladro efí 3 ejes, de manera que se
pudiera perforar sobre cualquier punto en un plano.
Para solucionar dicho problema recurrimos a sistemas
mechnicos empleados comercialmente, como son:
graficadores e impresoras, los cuales mueven una plumilla
ü una cabeza de impresión sobre un plano o semiplano y
trabajm utilizando motores de paso, d e los que se puede
obtener bastante precisión.
L a etapa de Ihgtca de coritrol tiene como principal
objetivo el controlar el movimiento de los inotores de
pas o unip olar e 5.
Esta lhgtca funciona hisicmlente sobre. un cortta.dor
(iip/dowti], el m a l proporciona el sentido de a.vance y la
direccih en un niotor,, asi como el número de pascis,
recihiendu los hilos de c:cintrol del Sistema aiínimo 5031.
Enlafigura 3 se muestraun diagtatrta de esta etapa
El actuador cütistd de un circuito de conmutacitin básico,
el mal se encarga de polarizar alternativamente un
devanado por paso delmotor en el sentido que se haya
establecido en la logica de control, esto se logra por
medio de cuatro hilos.
El diagrama correjpondiente a esta etapa se muestra en la
figir a 3.
Sistema Mécanico
,
En este sistema se utilizaun carro que transporta el
taladro a l o largo del e j e X , otro carro que llevala tarjeta
sobre el eje Y , con l o cual se tiene el movimiento
'
cornpleto sobre el plano X i .
Fara lograr la perforación se diseño un FiSterna de
engranes que mueven toda la plataforma de l a tarjeta
sobre el eje Z, de tal manera que el taladro puede
perforarla.
111. SOFTWARE PARA E L SISTEMA MfPrIMO
La ircterfaz del perforador c:on l a FC se realiza por medio
del sistema minim,. L o cual quiere decir que hay un
software en el sistema rninimo y otro en la PC y ambos se
cotrcurtican et-tire sí p a r a controlar finalmente alperfordor.
El scifiware del sistema mitiirno consta basica.mertte d e
,L.
partes:
a) Cümunicaciíit-c con la F L [sistema minima -> F C]
b) Control del perforador [sistemaminimo -> perforador)
Descripción del software del 8031 para Za
comunicación c o n la PC.
Sistema minimo -> PC.
La FC rrcartda l a inforrriaciún de las coürderiadas hacia el
sistema minimü. E l C P U del 8031 se da. c:iierita. de l a
llegada. de estos da.tos y l o s marida amemüria FAh4 del
sistema rnirtimo. L a ubicacion de los datos en memoria
FLkhrl ya esta predeterminada y puede variarse. Por lü
tartto el 8L131ya sabe en que direcciones almacenará los
datos que le llegan. Almismo tiempo que los datos se
empiezan a alma.c:enar en el sitio indicado, pcit- ütro lado
se tiene un procedimiercto que mandalos datos de la
memoria M M hacia el perforador.
Se revisa si hayrriás datos en el PPI, silos h a y estos datos
se colocan en la siguiente casilla de memoria. Para ubicar
las direcziones de memoria que contienen los datos se
tiene un apuntador a estas.
Debido G. que el buffer d e da.?us es reducido se irrlplmto
una e s ? r u c ? ~ ade datos d e cola cirmlat que fut-tc:iiona i::utt
2 ap~-ititadores.El primero apunta a la siguiente püsicitlt-i
d e donde se puede introducir un datci de 1cis que llegan
de la. FC. El segundo ay~iii-it~ior
dice c:ml es el siguiente
datri que puede torcriar-ssep x a llevarlo al perfciia.dor.
( h a n d k ei primer apntador llega ai finai del bu:fer se
regresa al piintcipio pxra seguir esc:rik&xtdci. El seeundo
a.yiuntadnr puede adelmtirse rietqire y mando no
reha-se al primero. De igual fcirnia el qnirttador 2 SE! va
"cutnienda " lcis datos 37 ' ~ cadelüt-itan3u:;e..
i
cuandci llega al
final del kmffer se remesir al principio y pueden seguir así
riiientras n o alca.nce al apiuntador 1.
n-5
8.2
&ando termina. d e perforar el sisienla minimo envía un
mensaje la. PC diciendo que h a terminado la
perfot-acihn, y que esta listo para ia prbsirm
129305
I
TOR Y ECTR EN EL. UFiIG
UN PRCD
;VUELVE A CHECRR
<
ACIDNES
i
COMIENZAe
ET
I
i
**
**********
NOV
ACALL
CJNE
MOV
CJNE
SSMP
MT3V
NOV
NUVX
ACALL
I NC
K&Lt
NOV
MOV
CJMF
~
DPTE, #LETHE2
PESFLEGA
A , DESPL O
A, XW$ELO,€T1001
A, DE@FHI
A , IhlSEH1,EfIQOi
ET1002
DPL, DECP'LO
OPH,PESF"I
A,BI)FTW
COOHDE
DPTR
OVFL
DcPjPLa, RL
DESPH1,DPH
ETIOOZ
!
I
2 D E W L I EDA EL M€NSAJ&
'
Er
1
~
I
I
~
I
1
I
I
I
I
~
,
ET10073
MOV
RET
B ,WXJM
I
pEwmw: CJNE
o
i
8
ETIOII:
ETlOl,
ETfUlF:
CJNE
5n-W
ACALL
WLL
DJNZ
DJNZ
5ETB
CJNE
CJNE
SJMP
ACw,.
ACALL
DIR
PA8
,
I
H5,%0Ot.llETIOl4
R4,#0OH,ETIOl4
ETIOlS
DIRY
PAIBOY
,
m,
i
ETIQfS:
' PAWX:
I
,
@T1019:
SETE
RET
MOV
SETB
ACALL
CLW
ACALL
DJNZ
RET
I
I
DIWP
R4,E
P1.3
4.
,
WSH
.O
RETMQDPr
Pl.O
mmm
R3, E T f O l q
M V
JNB
CLR
Mov
XRL
XRL
ADD
-
A, w
m
A , #QlH
JNP
CLR
MCV
A?cC . 7 , ET r(324
F1.c.
A,R5
XRL
A, #OFFH
A, # O l H
R5. A
A, 64
ET I O 1b
ADD
MUV
MOV
>
JNC
XRL
t
1
EfI016:
FiDD
A, tCiFFH
A,#CilH
MQV
R4,A
GJMP
XRL
MOV
2 1
I
R4
i
~ Q R # PUSH
07n
PUSH
I
QbH
DJNZ
POP
WP
RET
R7 ET1022
OBH
STI024:
INC
RET
MOV
3
1
H4,CI
Rb,ETIO21
,
07H
I
1
I
I
I
1
Descripción del software del sistema mínimo para el
control d e l perforador
Sistema mínimo >-: perforador
En l a primera sección se define las direcciones donde se
kyardanlos datos provenientes de l a P C y las direcciones
de los optoelectricos.
Después se realiza una rutina p a r a inicializar los motores,
checa si el motor s erst6 en el origen, sino l o regresa
hasta que lo posiciona en el ürigeti, de igual forma para el
motor :7.
Enseguida se comienza con las perforaciones, se
despliega en el display elmensaje "INICIO" y se espera
hasta que se presionala tecla dato para iriciar.
L a rutina siguiente se encarga de mciver el taladro sobre
el eje x, se perfora y liuego 5e buscala siguiente posición.
Elmovimiento anterior se reliza también para el eje y.
E l rciü-Amientu sobre el eje z se t-ealiza al final y en esta
rutina se cuerda. el riimero de perforacicines.
Después se listar1 todas las rutinas bikica para implantar las
rutinas generales ardes tnencionadas.
A continuacibn se mueswa ellistado completo de las
rutinas.
AVDCET SYSTEMS SR51 CROSS ASCEHBI.ER
-
VFRSIIIN 1.1611
PAGE 1
SOURCE FILE NAHE: PROY.PAS
em^
0170
le79
1878
1871
fib72
1177
087E
lSB#
0.309
6410
8389
ZAEE
DATO
DlRlI
OlRI,
D6
Dl
EOU
EQU
EQU
EQU
EQU
D2
EQU
DI
EQU
TECLA
EQU
DATO1
EQU
DECPLECA EQU
ASIETE
EQU
DESPBUF EQU
OPTOELE EQU
05PII
07Pll
AIPII
87R1
;PIRECCION QUE GUARDA EL DATO INlRODUClDO
1i7111
0i;1
0i7H
07Ell
ISRQH
:DIRECCION DON@E SE ENCUENTRA EL ler. DATO
03nw
04 I RII
ü3BDIt
28BFII
;@IRECCION DONDE
SE ENCUENTRAN LOS OPTOELE.
8500
11510 C291
1512 C285
(5114 912880
ES17 Ed
ESP8 F5FE
051A 2PFlfl7
6560 DI12
f56F MF6
0511 E0
0512 F5FO
1514 W104
1517 DI28
1519 M F 6
CLR
CLR
P1.1
P1.3
nov DPIR, IDPTOELE
INICIAX: MOVX A,BDPTR
nnv B,A
JB
B,i,FlIO!?
ACALL PACOY
CJñP IHlClAX
INICIAY: MOVX A,@DI'TR
HOV
B,A
ET1633 JE
E.0,CüRIEHZA
ACALL PASOY
SJHP INlClAY
;
; f11111111111111111111I11111
; 11 FIN DE INICIALIZACION E t
; 11111111111ff111111lt1ll~*l
;CtRCA AL DPTR LA DlRECClON DE LOS OPTO
;CARGA EL VALOR DE LOS OPTO
:CIIECA SI EL MOTOR X ESTA EN EL ORIGEN
;SI NO, REGRESA UN PASO
;VUELVE A CHECAR
;CAECA SI EL HOTDR Y ESTA EN EL ORIGEN
;SI NO, REGRESA UN PASO
;VUELVE A CHECAR
;I I ~ ~ ~ ~ ~ ~ I ~ ~ I ~ ~ I ~ I ~ I
; 1 1 COMIENZA RUTINA DE INTROWCCION DE DATOS 1 1
; 1l111111i11111l11i11111l1l111~111t111111111111
lslB 7591EA
651E W 5 C E
1521 71w
1523 DlDü
6525 B4IAFB
1528 Bt156fl
1528 DIE3
COMENZA: HOV
WOY
ACALL
ETlE1l: ACALL
PI,IlEAH
DPTR,ILETREI
DESFLECA
RECILIATO
' CJNE
A,lEBAH,ETIIüI
HOV
DPTR,lDATOI
ET1112: ACALL LIiiFIAl
;DECPLEGA EL
I
~
I
I
HENSAJE 'Int
~
I
~
~
I
I
I
~
I
~
N ~
~
dAt'
;ESPERA HASTA PRECIONAR LA
;TECM '1'
:CARCA AL DPTR CON LA DlRECClOW DDNDE SE GUARDAN
;LlliPlA LAS DIR DIRL, DIRH Y DECPLECA HENSAJE
LOS DATOS
~
I
~
I
I
~
~
~
~
I
AVOCET SYSTEAS 8151 CROSS-ACSEHBLER- VERSION I.
IM
PACE 2
SOURCE FILE NAAE: PROY.PAS
8520 D I M
152F E57E
0531 B41A02
0534 8115
15% 841~02
0539 B M D
0538 DlFF
053D DlAA
153F E57E
I541 8418E7
I544 FllB
I546 8IF3
1548 74FF
054A F I
ACALL INTDAT
A,TECLA
ETIO13:
ETIIO4:
ETIBO5:
;INTROWCE DATO
MOV
CJNE
SIMP
CJNE
A,IOIAH,ETlRO3
ETIOB4
A, 1OüB11, ET1164
SJMP ET1005
IICALL LlnPlA2
ACALL INTOAT
nov A,TECLA
CJNE A, IWBH,ET1012
ACALL ERROR
SJnP ET1004
IiOV
A,i6FFIl
novx BDPTR,A
;CHECA SI YA TERillNlO DE INTROWCIR EL DATO X
;SI NO, CHECA SI YA TERNINO DE INTROWCIR TODOS LOS DATOS
;LIRPIA
LAS
DIR DIRL, DlRH Y DESPLEGA MENSAJE
;INTRODUCE DATO
;CHECA SI SE PRECIDH LA TECLA 'I'
;SI SE PRESIOND DESPLtEGiI 'ERROR'
;SI NO, SIGUE CON LA INT. DE DATOS
;YA TERHIND. ESCRlüE FIN DE DA1OS
111llfl1lfllilllllll11lvun1?**~~11
11
FIN DE INTRODUCCION DE DATOS
41
I1lflll€lllllll1ltll)1111)111111(1
11111111111111111~l1111111
11
;
1540 911506
Is4E 71Dg
Is51 DlDü
1552 846AFB
1555 r n 8
1557 DlDE
Is59 M C
INICIA PERFORACIONES
11
111l1l11111111111111tlllll
i
ET1116:
ET1143:
ET1138:
MOV
DPTR,ILETREZ
ACUL DECPLECA
ACALL RECIDATO
CJHE A,IüIM,ETIflIG
iiOV
R6,i1üBll
ACALL PASOZF
DJHZ R6,ET1638
+DESPLIEGA EL NENSAJE
'Inicio'
;SE ESPERA HASTA PRESIONAR
'I' PARA INICIAR
¡LA TECLA
o
;
11
MVE
;
EL TALADRO SOBRE EL
1558 911510
AOV
155E 78H
)Iov
OPTR,IDATOl
R8,1101H
1582 7Dll
HOY
AOV
R5,1101H
15w 7
9
n
IS64 E1
1585 UFF12
1568 8127
1561 851113
W
A
3
B E 811A
Is711111
1572 BlFI
1574
ET1117:
rmVX
ETIIOB:
CJNE
SIMP
CJWE
IK
CJHP
ETlOlI:
ACN.1
SJHP
w2
1576 81F6
1578 DllB
IC
ET1112:
ET1113:
RI,IOIOH
A,BDPTR
A,IOFFH,ETIOR8
ET1819
A,OOM,ETIOIO
DPTR
ETlOll
ET1112
MYORK
ET1013
ACALL " O R X
ACUL HUEVX
FIN
DE iIüVlHlENT0 X
II
tCARGA AL WTR CON LA DIR DEL fer. DATO
$INICI)iLIU WC REG. 1,1 Y 5
;PARA C h R AL WS HOTORES EM EL ORIGEN
¡CARCA EL PRlllEll DATO
1CHECA SI YA SE tE~iW0DE PERFORAR
;COMPARA EL DATO UiN
RI
PARA CALCüi.AR
*I
LA
¡si ES LA nim CARGA EL SIGUIENTE DATD
¡SI NO, u1IIPARA SI Es HEWOR O HAYOR
¡SI ES MFOR, ADELANTA EL NOTOR X
iSl NO, REGRESA AL MOTOR X
i
; **
EJE X
llVRlA POSICION
AVOCET SYSTEHS 8151 CROSS-ACSEHBLER - VERSION 1.IsH
SOURCE FILE NAHE: PROY.PAS
657A EO
0578 B5010.3
057E A3
ü57F 818A
tS8l 4814
OS83 BlFC
1585 8102
0587 DI62
1589 DllF
PAGE 3
: 4 4 NUEVE EL TALADRO SOBRE EL EJE Y 11
;
ETIOII: MOVX A,@@PIR
;CARGA EL DATO Y
CJNE A,IRIH,ETIüI4
;COMPARALO CON EL REG AI PARA CALCULAR EL NUEVA POSICION
INC
DFTR
;SI ES LA nisnA CARICA
EL SIGUIENTE DATO
SJNP ET1115
ET1114: IC
ET1816
;SI NO, COMPARA SI ES RENOR O MAYOR
ACALL MAYORY
;SI ES MAYOR, ADELANTA EL HOTOR Y
SIMP ET1817
ETIO16: ACALL MENORY
;SI NO, REGRESA AL IiOlOR Y
ET1017: ACALL HUEVY
i
; M I FIN DE IiOVlIilENTO Y
1588 DI74
058D DI43
; 4 4 HUEVE EL TALADRO COBRE EL EJE I, Y CUENTA EL NUMERO DE PERFORACIONES 41
i
ET1015: ACALL NUllPERF
;CUENTA EL NUilERO DE PERFORACIONES REALIZADAS
ACALL IiUEVI
;BAJA Y SUBE EL TALADRO
i
15% 81D3
@*
;
1
I*FIN
DE ROVlRlENTO I Y NUHERO DE PERFORACIONES
SJHP
ET1807
;
; 4f~lflffffffl4444ll4f44mfm
; 11 FIN DE PERFORACIONES I *
; ~mflfltf4fflff44f~lffl~;lf
i
8591 C291
1593 881102
15% 8013
#Se8 E8
E89 DIO8
man DZ~I
KIND C293
EBF
ET1069:
ET1045:
ETlH46:
wn2
0512 M13
KIA4 E9
#SA5 DIIF
85A7 DZ93
KIA9 C295
#SA8 ?E88
R A D BIDE
6sAF DEFC
úSB1 0295
6583 9M5C6
1586 iim
ET 1117:
ET11148:
ET1139:
ED0 Dlüü
HBA M8A62
ETII44:
HV MIBF6
ñ c 2 10518
ET 1142:
KIM)8106
CLR
CJNE
CJW
MOV
ACALL
CETB
CLR
CJNE
SJMP
MOV
ACALL
PI.l
R#,llüHH,ETI645
ET1046
A,R0
WEVX
PI.1
P1.3
Rl,llHüH,ETlW7
ET1048
A,RI
WEVY
SET8 P1.3
CLR
P1.5
HOV
R6,IBBBH
ACALL PASOZF
DJNZ R6,ETl639
SET8 P1.5
MOV
DPTR,iI.ETRE7
ACALL DESPLEGA
A C A U RECIOATO
CJNE A, tlOAH,ET1142
C J W ET1043
CJNE A,t688H,ETI644
UMP COMIENZA
b
44
AVOCET CYSTENS 8151 CROSS-ASSENBUR
-
VERSION I . llll
PAGE 4
SOURCE FILE NAnE: PROY.PAS
ISCS 22
RET
0SC6 8786AFAB LETRE7:
üSCA ABEFABA3
OB
DB
18711,IR6tl,BAFII,OABH
IABH, EEFH, úAB11, #A311
i
; 111111111111111111111ll1~111lll
; 1 1 FIN DE PROGRAMA PRINCIPAL I 1
; 11111~11111111111111~l1I~llll~1
;
05CE CFAB87FF LETREl:
O502 AIW7FF
0SD6 CFAEEFA7 LETRE2:
05DA EFAJFFFF
;
1SDE 7815
~ L E P~ 2 9 4
#SE2 BlEB
#SE4 C294
: 11
:
PASOZF:
#SE6 8x8
#SE8 ü8F6
QSEA 22
#SE8 7CFF
05ED CCFE
(SEF 22
DB
DB
DB
RUTINA UUE GENERA UN FASO PARA LA ELEVACION DE LA PLATMOMA
ETld41:
; 11
~CFII,flABH,O87ll,RFFll
IAlH,li8&!I,887H,üFFll
úCFH,flA8II,BEFII,@ A N
OEFII, Mi,IFFH, K F H
DB
WOV
R3,16051i
Pl.4
ACALL RETARDOF
CLR
P1.4
ACALL RETARDOF
DIN2 R3,ETIfII
RET
SETB
RUTINA QUE GEiiERA
RETARDOF: nov
ETl641: DJNZ
i*I RUTlM
i
MAYORX:
tSF2 88
OSF3 AB12
15FS 22
05~6ce
OSFC FA
fm c3
ESFE W
QUE
NOV
CLR
CUBB
NDV
RET
11
A F 7 C3
0SFB 53
15FD C291
15FB 22
UN RETARDO PARA LA ELEVACIDN
11
R~,IIFFH
R4,ETlbiI
RET
;
AFI FA
AFI C3
11
CALCULA EL DESPLAZANlE!4TO ASCENOENTE
R2,A
C
A,RI
R#,flK!H
On. MOTOR X
11
c
RUTINA QUE CALCULA EL DESPLAZAMIENTO DECRECIE~TEDEL HOTOR I
i
IIENORI:
XCH
CLU
CUBE
CUI
RET
11
A,RB
c
A,R#
P1.I
i
I I t RUTINA QUE CALCULA EL DESPUZAIIIENTO ASC!NfEiiTE DEL MOTOR I 11
i
HAYORY:
MOV
R2,A
CLR c
CUB8 A,R1
AVOCET CYSTFMC 8151 CROSS-ACSEI(BLER
- VFRCION
I . IM
PAGE 6
SOURCE FILE NAHE: PROY.FAS
,,
15FF A982
8611 22
MOV
RET
R1,OflAl
i '
;
1612 c9
1613 c3
8644 89
1615 C293
8617 22
if
IENORY:
II
IIUEVX:
$616
1618
RIA
16iC
161E
ACALL
DEC
CJNE
INC
SET8
RET
;
11
P1.3
RUTINA auE MUEVE AL
i
i
1614 D290
A,RI
c
sunn v i
;
8612 7ü15
XCll
CLR
CLR
RET
i
46u) DI12
161A 14
1618 B4MFA
161E A3
161F 0291
O611 22
RUTINA QUE CALCULA EL DESPLAZAiiiENTO DECRECIENTE DEL MTOR Y
nuion x
PACOX
A
A,IBPOII,~UEVX
DPTR
Pi.l
RUTINA QUE GENERA UN PACO EN EL MOTOR X
,
PACOX:
ET11i8:
DI36
c291
Di36
üBF6
22
iiüV
SUB
ACALL
CLR
ACALL
DJNZ
RET
#I
R3,115H
PI.#
RETAR
Pi.0
RETAR
R3,ETIIiIO
i
161F DI29
1621 14
1622 BIIIFA
1625 A3
1626 D283
1628 22
wm 7815
1628 D282
162D Di36
$68c282
1631DI36
16J3 DüF6
6635 22
; 8 8 RUTINA QUE WEVE AL MOTOR I I i
;
WEVY:
ACALL PASOY
DEC
A
c
CJWE A,i0ómi,HUEVY
IK DPTR
CETB P1.3
RET
;
;i
i
R U T ~ MauE GENERA UN PASO EN EL MOTOR Y
PACOY:
ETi119:
HOV
CETB
ACALl
CLR
ACALL
DIN2
R3,11lü511
P1.2
RETAR
P1.2
RETAR
R3,ET1619
i
i
RET
;
; 11 R U I N A QUE QWERA Uii RETARDO PARA EL PASO DE LOS MfORES i
;
11
AVOCET CYCTERC 81151 CROSS-ASSEMILER
SOURCE
FILE
VERSION I.
ldll
PAGE 6
NAiiE: PROY.PAS
1636 C M 5
0638 7F62
063A 7DFF
d 6 X bDFE
ü63E DFFA
A64R 1MOS
8642
-
RETAR:
PUSH
ETlfl37:
ETl028:
ROV
DJN2
DJNZ
por
::
1645 C296
1647 D15A
1648 DEFC
1648 8295
164D DI67
164F 7E15
1651 D15A
1653 DEFC
1655 8295
1657 D296
1659 22
ü05H
RI,IPR:II
R5,IPiFH
A'J,ETliVB
R7,ETlfl:
o m
GLT
;
0643 7E15
nov
11
RIITINA
HUEVZ:
ETl035:
ET11136:
QUE ilUEVE FL
MOV
CLR
ACALL
DJNZ
CPL
ACALL
tlOY
ACALL
DJWZ
CPL
SET8
RET
IlOiOR
i
1)
R6,1R151l
PIA
PACO2
R6,ETIR35
P1.5
RETARNI
116,161511
PASOZ
R6,ETIü36
P1.5
P1.6
:
; 11 RUTINA QUE GENERA UN PAZ0 EN EL MOTOR 2
1651 7B15
165C D294
665E DI67
c294
1662 DI67
:
PASOZ:
ET1121:
ow
HOV
R3,i@üSH
CETR P1.4
ACALL RETARDO
P1.1
ACAU RETARW
DJNZ R3,ET1821
CLR
166)
DBF6
166622
RET
;
;
1667 c115
1660 7c31
16611 7061
166D DüFE
166F DCFA
1671 DHS
1673 22
II
1)
RUTINA QUE GENERA UN RETARDO PARA EL PASO DEL NOTOR 2
t
RETARDO: PUSH
HOY
ETi123:
HOY
Fl1122: DJWZ
DJNZ
POP
RET
015H
R4,1031H
R5,1166"
R5,ETlüZZ
R4,ET1123
11
4
115H
,
; 11 RUTINA QUE MUESTRA EN EL DISPLAY EN " E R O DE PERFORACIONES
; REALIZADAS 11
1674
1676
1678
167A
ClEl
C18J
CM2
BW6A2
167D 7109
,
AWERF: PUSH
PUSH
PUSH
lloV
ACALL
ACC
DI"
DPL
DPTR, ILETRE6
DESPLEGA
AVOCET SYSTEMS ~ # S ICROSS-ASCEHBLER -
VERCIOII
I.tan
PAGE 7
SOURCE FILE NANE: ~ROY.PAC
nov
067F ED
1681 54Fñ
I682 C4
AN1
CUP
1683 91 i ñ
A,R'J
A,IOFRII
A
ACALL ASIETE
nov
nov
1685 F571
1887 ED
16BB 54F
668A gill
DI,A
A,RS
AN1 A,IORFH
ACALL ASIETE
nov DE,A
INC R5
HOV A,R5
W F571
668E OD
168F ED
#690 541F
1692 B41A14
AHL
CJNE
A,10@FH
A, IMAH,ET I032
1695 EO
HOY
A,&
ñ96 2416
ffiüü FD
ADD
A,ll#Gll
RS,A
1699 1189
1698 M82
169D DUM
669F DIU
nov
ET1632:
E6i 22
RET
16A2 Be86AF8FBE LETREG:
MA6 FFFFFFFF
i
;**
16AA
ACAU DECPBUF
POP
DPL
POP DPH
POP ACC
Dü
DB
IBCH,086H,#AFH,1801
IFFII,OFFH,OFFH,IIFM
RUTINA QUE REClüE LAS COORDENAOAC DE LAC PERFORACIONES A REALIZAR
1
DJDB
INTDAT:
ACALl RECIDATO
CJNE A,1#1iBl1,ET1624
1681 MOA13
16u FIE4
16ü6 E556
6688 84D512
16Eü 8fED
66BD 4462
06BF 81EB
ET1024:
UNE A,l6lAH,ET1126
ACALL DECIIL
16CI E551
16C3 FI
ET1628:
66AC 84112
BAF 811F
sinp
miV A,DhTO
CJNE A,llD511,ET1127
ET1127:
16C4 A3
SJHP
INTDAT
1C
ET1128
sinp
INTDAT
ñ0V
HOVX
A,DATO
OIIPTR, A
INC
SJW
w c 5 8119
16c7 DID1
ET1126:
16GC F13ü
16CE BODA
6 6 M 22
ET1625:
16c9 B406DE
aim
DPTR
ET1625
ACALL DICDEC
CJNE A,I#IIRI,INTDAT
ACALL RECDIR
CJHP INTDAT
RET
i
;#I
RUTlWA 4UE CHECA
o
&DI E57E
16D3 'ISFMA
1606 04
DIGOEC:
SI LA
IiOV
A,TECLA
B,IIOAH
DIV
AB
nov
TECLA PRESIONADA ES UII DIGIT0
**
**
AVOCET SYSTENS 8151 CROSS-ASSENBLER SOURCE
FILE NME:
VERSION I. IN!
PAGE 8
PROY.PAS
RET
16D7 22
i
;ti
RUTINA QUE ESPERA MCTA QUE SE PRESIONE UNA TECLA
If
i
ü6DB 757EFF
KDü E57E
16DD B4FF02
16EO 8lFB
06E2 22
RECIDATO: MOV
ETII30: NOV
CINE
SJHP
ET1129: RET
i
;it
TECLA,lflrFll
A,TEI.LA
A,l6iFH,EiI#29
ET1130
RUTINA QUE LIMPIA DIRL, OlRll Y DESPLIEGA EL MENSAJE ‘CoorX’
)I
i
16E3 Cfl83
&E5 C182
16E7 9116F7
M E A 11D0
16EC 757810
O W 757911
6 F 2 D682
16F4 WB3
6 F 6 22
LIMPlAl:
16F7 C6A3A3AF LETRE3:
KFB 89C1CIcO
i
;if
MFF
16FF C183
nri c182
1713 911713
1718 7108
1718 757811
PUSH
PUSH
MOY
ACALL
MOV
MOV
POP
POP
RET
DB
DB
DFII
DPL
DPTR,llETRE3
DESILECI
DIRH,IOIRH
DIRL,Iü#IH
DPL
Di”
IC6H,#A3H,IAM,1AFH
089H,OC8H,OC1H,6C~
RUTINA PUE LIHPIA DIRL, DlRH Y DESPLIEGA EL HENSAJE ‘CoorY’
SI
LlMPlA2: PUSH
PUSH
17m 757Bw
171E Dl82
fl711 D183
1112 22
6713 cM3A3AF LETRE4:
1717 BICICüCl
DPH
DPL
HOY
DPTR,lLETRE4
ACALL DESPLEGA
iiOV
DIRH,I#IüH
nov DIRL,OBIH
POP
DPL
POP
DPH
RET
DB
1C6H,flA3H,#AM,OAFH
DB
WIH, úCOH,ICOH, 1COH
I.
Iii RUTINA QUE DESPLIEGA EL MENSAJE ’ERROR’ CUANW
EXISTA
1718 C183
071D C m 2
171F W 7 2 E
1722 71üQ
1724 DIM
1726 BYFFB
1729 M82
O728 W33
i
ERROR:
EiII3I:
1721) 22
172E FF86AFAF LETRES:
1732 A3AFFFFF
PUSH
PUSH
DPH
DPL
nov DPTR,ILETRES
ACALL DESPLECA
ACAU RECIDATO
UNE A,1O#FH,ETIIJI
POP
DPL
POP
DPH
RET
DB
CFH,#&H,OAFH,üAFH
DB
IA3H,IAFH,IFFH,IFTH
it
IIH
AVOCET CVSTEnC 8051 CROSS-ASSEHOLER - VERSION I.
PAGE 9
SOURCE FILE NINE: PROV.PAS
i
;in
RUTINA QUE DESPLIEGA V ALiiACEtiA LA TECLA QUE SE PRESIONO
i
nov
DZ,DI
b0V
HOY
AN1
D1,Dú
1736 057172
(739 857171
173c E578
673E 54F1
1741 F5i8
1742 E570
1744 75Fll1
6747 84
1740 F5FI
1 7 M E578
174C 25FI
ü74E F578
1750 F153
I752 22
RECD~R:
6753 E579
HEXZIDIG:
nov
RECORRE:
CYAP
nov
nov
nov
DIV
NOV
HOY
ADD
8,tim
AB
ü,A
A,DIRtI
A,B
DIRH,~
ACALL IIEX21DIG
RET
nov
E755 F162
11757 257E
1758 F579
1758 9111
675D F571
075F 7189
6761 22
1762 C4
A,DIRII
A,IIFBH
DIRH,A
A,DIRI.
1763 54FI
A,DIRL
ACALL RECORRE
ADD
A,TECLA
NOW
DIRL,A
ACAU M E T E
NOY
M,A
ACALL DECPBUF
RET
rUn
RET
1765 22
A
A,tüFdH
i
;ir
nE6 75511
1769 E578
1760 75FIM
176E A4
1761: F551
1771 E579
1773 c4
6774 54üF
1776 75FllA
1779 A4
n 7 A 2551
177c F551
#77E E578
1784 SIIF
1782 6 5 1
17.94 F551
1788 22
IIM
RUTINA QUE COnülERTE EL DATO IWTRODUCIO A HEXADECINAL
:
DECIHAL: HOV
HOV
MV
nu,
MV
nov
CYAP
AN1
NOV
IWL
ADD
HOY
HOY
A m
ADD
MIY
RET
END
DAT0,IIflIH
A,DIRH
8,116411
AB
DATO,A
A,DIRL
A
A,liBFH
ü,túüAH
AB
A,DATO
DATO,A
A,DIRL
A,IIüFH
A,DATO
DAT0,A
if
1
AVOCET CYSTEHC 8151 CROCS-ACCE1(BLER- VERSION
1.m
PAGE I1
SOURCE FILE NAHE: FkOY.PAC
- - - - sYnBoL TABLE - - - 1GFF
1GFF
ACC
IüEO
ASIETE 1410
8
IIFO
COHIENZA 1518
M
1171
DI
1871
02
1172
07
1177
DATO
1151
DATO1
1511
DEcinAL 1766
DECPBUF 13B9
DECPLEGA 13D9
DIGDEC 16DI
DlRH
61178
DlRL
1079
DPH
1483
DPL
1182
ERROR
1718
ETlü8l
ET I112
ET1003
ET I014
ET1105
ET1116
ET I
117
ET1118
ET1109
ETI0IO
ET1011
ET1012
ET1013
ET1014
ET1615
ET1116
ET1117
ET1118
ET1119
ET1021
ET1821
1523
O528
8536
1538
1548
1550
0564
156A
1591.
157%
157A
1576
0578
0581
1588
11587
0589
0614
1628
163c
m c
ETIP2%
ET11123
ET1024
€TI825
ET I826
ET I827
ETlüZ8
ET I029
ET1030
ETlAJl
ET I832
ET1033
ET I835
ET1036
ET1137
ET I
M8
ET1639
ET1048
ET1041
ET1042
ETIP43
RG6D
066B
8681
06M
66C7
168D
16C1
16E2
16DB
1724
8699
8514
11647
8651
163A
R557
05AD
85EI
15ED
ET1044
ET1145
ET1146
ET1147
ET1148
HEXZIDIC
INlClAX
INICIAI
INTDAT
LETREI
LETREZ
LETRE3
LETRE4
LETRE5
LETRÉG
LETRE7
O588
iiENORY
HUEVI
1598
15A1
15A7
1753
1517
1511
16AA
15CE
05Dü
ffiF7
1713
672E
&A2
15C6
ü6E3
WVV
15B8
LlHPlAl
LllPlA2 16FF
MYORX
MYORY
15FI
ü58F
8555
HENORX
15F6
c.
15FC
MlNZ
"PERF
OPTOELE
PI
PASOX
PACOY
PASO2
PACOZF
1662
6618
161F
1643
0674
2801
1091
1612
6629
165A
15DE
0736
RECDIR
RECIDATO 06Ds
RECORRE 1762
RETAR
1636
RETARDO 1667
RETARDOF ü5E8
TECLA
807E
IV. DESCRIPCIÓN DEL SOFIWARE
CONTENIDO EN LA PC.
L a ultima parte del sistema es el software que se
encuentra en l a PC.
El objetivo principal d e este software es comunicarse con
el kit del 8031para controlar la entrada de datos hacia el
perforador, y la interfaz con el usuario para facilitar l a
entrada de los datos.
El sistema consta básicamente de ¿os partes:
a) Interfaz con 8 0 ? 1
b) interfaz con el usuario
Descripción de la interfaz con el 803 1.
Una vez que se tienen los datos, la estructura de datos
adecuada y con la información en el formato que la
requiere el 8031. Se envíanlos datos por medio del
puerto paralelo de la PC al puerto paralelo del Kit del
803 1.
El funcionamiento de larutina de envío es idéntico ai de
las rutinas para comunicación de FC conimpresoras, es
, decir se maneja. un protocolo de handshake mediante
señales d e strobe,busy y acknowledge.
La. rutina espera a que el dispositivo no se encuentre
ocupado para enviar un dato, y despuis esperarecibir la
señal de acnowledge l a m a l indica que el dato ha sido
re cibidn.
El tamaño de los datos para cada coordenada es de 2
bytes pero el envío es de byte por byte, enviindose
priemro el byte menos significativo y posteriormente el
más significativo.
En cada rutina de envío se manda la coordenada X y la
coordenada Y .
Los datos que se envían al kit requieren encontrarse en
un formato especiald. Este formato consiste en expresar
cada perforación mediante coordenadas X,Y relativas.
Además estas coordenadas deben expresarse ennúmero
de pasos de motor. Paralograr lo interior se realizanlas
siguientes actividades:
Al leer los datos del archivo se almacenan en una
estructura de datos de tipo stream de caracter temporal..
los datos del archivo vienen ya en coordenadas >.,Y
absolutas y en alguna de las siguientes unidades:
milimetros,centimetr os o pulgadas.
El siguiente paso consiste en convertir las unidades d e las
coordenadas enpasos de motor. Esto se realiza de
acuerdo a la unidad original de los datos.
Posteriormente se copianlos datos de la estructura de
datos inicial a otra estructura de datos de tipo stream, la
cual contiene las coordenadas relativa:., es decir., que en
el proceso de copia se convierten las coordenadas
absohltas a relativas, os ea. desplazamientos.
Descripción d e la interfaz con el usuario.
F'a.rainicia.r la. erttraita de datu.;, der.de la PC elusuario
debe llamar al programa Fi1.c
Posteriormente aparecen en la pantalla dos ventana::.
L a prirriera ventana tiene el nombre de FILITRON, con
el cual hemos bautizado a este sisterria.
L a segunda ventana contiene el menú principal, con las
siguientes opciones Archivo, Teclado, Transmisión,
Ayuda y Salir.
En principio se dehe dar l a opción que elusuario desee,
ya se que tenga.los datos de las coordenadas en Archivo
6 los quieraindicar por medio Teclado.
L a secuencia de opciones que debe seguir elusuario si
ya tiene el archivo es :
Archivo: Cuando se selecciona esta opción aparece una
ventana en la czial se pide e1nombre del archivo que
contiene las coordenadas.una vez que elusuario h a
proporcionado este nombre. Se pide que seleccione
alpina de las tres unidades disponibles esta selección l e
hace de acuerdo a!a siguiente tabla.:
4
opci6n elegida
11
1
?
unidades
centimetros
millmetr o s
pulgadas
Al dar este dato. El programa regresa al menu principal.
Si l a üpciin elegida inicialmente f i k Tecla.do entonce:,
1
Teclado: El usi-mio debe editar en esta ventana las
cc1ordenada.s pa.rrala.rierfnra.ci6n. La.5 tedas d e edicihn
sun.
insert: conmuta los modos d e inserción y sobreesctitura.
delete: Gorra el car6der que esta encima del cursor.
backspace: borra el carkter a la izquierda del cursctr.
end: coloca el Lcursor al final del campo.
home: coloca el cixsür al inicio del campo.
tab: salta al campo siguiente
shift-tab: salta al campo anterior.
page up: salta alapagina de captura amteriur.
page down: salta a l a pagtna de c&tura siguiente.
esc: termina la captura.
E: importante aclarar que las coordenas capturadas
deben ser absolu?as.
IJt-ta-vezque se han proporciona.do los dalos de las
cüurdenada5.. y a :ea por arctrdo o pur teclado. Nos
ubicamüs nuevamente en el men<i prinqal.
L a opción a elegtr en este momento es Trartmiidri
Transmisión: En esta. ü p d n se pregun?a.elnumero de
?a.ttIilla.z que se desem perforar., y a que e l usuario puede
desear que se perforen más de ulna tablilla cot-t1a.s misttias
cüordenadaj. For lo tanto el usuario debe dar este dato.
Una vez que el sistema y a sabe cuantas tablillas debe
p erfür ar . A p a.r e ce un letrero que dice pr e sione cualquier
tecla p a r a corttini.1a.r. Finalmente aparece unletrero que
dice espere un mor~iet-itose esta transmitiendo cuandü y a
se transmitió l a infürrnacibn par a. l a primer a tablilla.
Aparece otro letrero el cual indica que se debe poner la
siguiente tablilla y una vez que la.ta.blilla esta lista se debe
oprirttir Icxialquier tecla para transrnitir los datüs de l a
siwiertte
.tablilla. Esta Última a c c h debe repetirse hasta
terminar de perforar todas l a . ~tablillas. Cuando se
terminan el programa regresa al menii principal.
Ayuda: Si se tiene alguna duda del funcionamiento del
sistema se puede seleccionar esta opción y aparecerd una
ventana que contiene 1n.s indicaciones #3.seguir.
Salir: Al seleccionar esta op"óri se regresa al sistema
oper a.tim.
A continuacion se propor"onauna lista de los archicros
de software necesarios para implantar el sistema, junto
con una breve explicación de las rutinas que contienen.
Este &digo se implantü en lenguaje C
com3to.c
Contiene las rutinas de comunicacihn con el
puertci par alelo. Incluye:
hoyos-def: definiciones de la estructura de
datos para las coordenada.5.
comqto.cie: constantes para la rutina de
cümunicaciún.
conv-kit.c
Contiene lar rutinas de cnnversihn de
coordenadas. Incluye:
hoyos-def
129305
1ectura.c
Contiene las rutinas para interpretar el
fürmato del archivo que deja Orcad y leerlo
enla estruciura de dahs en memoria.
Se espera que este archivo tenga en un
futuro rutinas para l a lectura de diferentes
fürmatos de archivos de descripción de
perforaciones. Inciuye.
stream-def: definicibn de la estructura de
datos stream.
hoyos. d ef.
sir e am. c
Contiene el código p a r a la impiaritacih del
TDA,stream. Incluye:
sire am.d e f
hoyos.def
Contiene el manejador de tnenús del sistema
y las invücaciones a las funciones
principales del sistema.Realiz a glübalmente
la interfaz de usuario. Incluye:
scrni0.h: archivo de encabezadci para las
rutinas básicas de manejü de parhlla.
iouti1.h: archivo de encabezado para las
rutinas basicas de rnanejo de entradu(sa1ida.
str1st.h: archivü de encabezado para las
rutinas basicas de manejü del tdñ lista de
cadenas.
smenu.h archim de encabeza-do para las
rutinas basicas de manejü de meriús.
edici6n.h: archivo de encahezadü para las
rutinas basicas de manejo d e captura.
p a g h : archivo de encabezado parallas
rutinas basicas de triarteiü de pa@-tas de
c.apkira.
str eam.def
hoyo s. d e f
comqtmcte
fi1itron.c
ioutil.c
Contiene la implaritacilón de las rutinas
b&i-._. ~ dr ,de eritra.da y salida. Incluye.
iouti1.h
P0PUP.C
snnio.c
Contiene la implantacihnde las rutinas
b6sica; de manejo de ventanas. Incluye.
iouti1.h
s crnio .h
Contiene la. implantacih de las rutinas
ha-'-.
iiLas d e manejo de pantalla. Incluye
ioutil.h
5crnio.h
smenu.c
Contiene l a implantación de las rutinas
básicas de manejo de mer&. Incluye.
iouti1.h
scrni0.h
5rnenu.h
edicion.c
Contiene la implantación de las rutinas
básicas de manejo de capturas. incluye.
iouti1.h
scrni0.h
edicion.h
Chitime l a implantaciíiri de las rutinas
basicas de manejo de paana.s
.de captura.
Incluye :
iouti1.h
scrnio.h
edit5on.h
Pag-h
str1st.c
Contiene la implantación de las rutinas
basilcas de manejo del tda lista de c a d e n a
1nc:liiye:
str1rt.h
A continuación se muestra ellistado completo de las
rutinas antes mencionadas:
/
ci
mgto
-cte
C e n s t a n t e s p a r a l a cornunicacion can e l pciei.to p a r . a i e ! n + ; ~
!
¡
i
!
,
#define
#define
#dkfine
#define
LFT1
LPT2
ENVIa-FTO
INI-PTD
ci
1
C)
t
,
typedef
Stt-'.tCt
float x, y, d r i l l ;
3 hoyo;
.
,
,
I
/*********R..**:.***************.****.**~**~..~.i.
.-
-
.
*-4.i.**.*.,
,
pa$.?,
3;
p a q u e t e de m n r , ~ . j o
d r c&
***************************~***.*:*.CtX+.~-****
t y p e d e f ciwi on s t t- 1 i zt
-st r u c t *5t t- 1 ii t :
L.**IC
******.E.*
~
,
I..**
!*
I
......................................
x.i
.
Interfaz p a r a las r u t i n a s de men#
..........................................................................
typedE-f snum
;? i.p
.:6 ;
Is
Er;
i!
m
:simple, p u l l d o w n ,
z .- ,ner,u, ;i -neriu,
E i..i' : y ;
submenu; menutype;
rec:-nen~..:., sci.-ol:.-menii2
merii..isr,aue:
í
,
. .: .
j.
*
,.
,~
j i.
.<.
.i.
; j.
.i../
~
.
~
. .
. . ..
.
i n t membei-str-1st (chat- *s, s t r l i s t 5 t r 1 1 s t r l i s t * m l )
/*****I+*+t********X***************************************************~**
Detztmiiia
****+.*
51.
una c a d e n a p e t - t e n e c e u no a l i s t a
............................................................................
i n t j:
cjtrelew
I?;
e. d a t a . = s ;
j=l;
.
*m 1 =5 t r 1.- .: h n f i rst ;
whileí*ml!=NULL)
.
i f < C ~ R tB -s I. ein ii+:I 1 .' ...-.'..dn e 1em. e ? : t-.etur;n j ;
j i;i
+
*,n .) = i * m i .ne:: t ;
.
:j
3
3
r e t CI 1.11'
lilt
::>
;
i
d & l s . t i l S t < ; n t p r s%t*l't5t s t V 1 )
..........................................................................
E l i m i n a una c a d e n a de l a p o s i c i " n
e s p e c i f i c a d a d e n t r o de l a l i s t a
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.?
s t r l i 5 t t l ?t l . 2 ;
in ,C ,j :
i.f ( a t i 1 = = r . ~ u ~
!-e~-~gp-:-,
~j
p;
else
:.
if
(
(p:i.O) Z&
(p:;=~trl->hn.numelernl
j
i f (st t-1->hn. n&nelem==l)
:.
delstrelemistrl-:hn.
f ir~.t->dn.elem) ;
f r e e í í c h a r * ) s t i 1 -?hn f i r 5 t ? ;
st I* 1-?hn .f i rs t=NULL ;
stt-l-:-hn. l a s t = N U L L ;
.
I
3
else
i f (p==i)
t 1=st t- 1-:?hn. f i rst -)dn. ne:.: t ;
d e 1e t re1em ( st r1->hn. f i t-st.-:.:-dn.e 1em) ;
f r-ee i i c h a r.*> s t r-1 ->hn f i PS t j ;
t;p.. L: .- ".
.. hn. f i rst=.t1;
.
3
else
i f íp==si:rl.-
J
I
I
striist * m l )
i n t m e m b e t * s t r l a t ( c h a r *e, 5 t r l i s t stt.1,
..........................................................................
Dr+:?imiria
***** ****-c.’*
cadena p e r t e n e c e o no a l i s t a
S I uria
***..>c*.I.+.*.C*
f**.**CI**+***************~***************************./
r
i n t j;
streíem e ;
e.data=s;
j=l;
*ml=stt-l->hn. f i r s t ;
while(*ml!=NULL)
:.
i f <, 1 ní,ri .t :-el.
em í !i m1 .!
dn.elern,eY
i ;- .::4n. ne?: t ;
* .~ ; : .*,ni 1 = *,TI
rciturn
j:
J
I
r e t u t’n O j
int
i
& 3 ~ ; i $ ; . ~ . ~ ~
p,
sti-list
-L-.
=
,
$
,
I
1
)
/***.*II*Y****+*****X**~***********************.****************************
E l i i n i n a una c a d e n a d e l a p o 5 i c i ” n e s p e c i f i c a d a d e n t r o d e l a l i s t a
...........................................................................
-i
-
.
.
d e 1 s t re 1e
m í s t r 1 > hn f i rs t -? dn e 1e
m) ;
free í f c h a r * :5t e - 1-.:.hn f i rs t ;
strl-.*.hn. f irst=NULL;
s t r1-;.hn. 1as t =NULL;
I
3
@iSE
‘i
i f (p==l:
.
-
t 1=st r 1 ::.hn f i rs t -*.dn. ne>:t ;
d e l s t r e l e m i s t r l - > h n . first-:>dn.elem)
f í r e e í (char*istrl->.hn. first:;
sti.-:.-:>hn. f i r . s t = t l ;
fnr-:j=2, t l = s t r l - > h n . f i t - á t : j s : p :
d e 15t re lem I t, 1--::.dn n e :x t -+drb. e 1em;
f ree í i char-* ) t 1-.:,dn
ne :.: t i ;
t!.-:,drt. next=NULL;
5t r 1- :> h n 1a 5 t = t 1 ;
..
>
;
tl=tl--::.dn.nei:t:;
:.t.t,
j
.
.
-...
.
~
,.--.
.
A c ~ ~ q uric1
i 3
cacle a:. si f i n a l d e una l i s t a d e c a d e n a s
*******.s*******+s,+s*******************************************************,'
c
.-,
,
s t r 1 ist t 1 ;
strelem e;
1
1
i f ( + s t t - 1= = w L L )
1
ma.:len,e. leni;
r-,t
I T ,5 5
:t. 1.
!.
= h a ,'
a;
i n t d l . , i n t k ~ y ,i n t p , á t P 1 i s t ; * s t , - 1 )
/*****,+*********.~-*************~*.~*****.*S********************************.~
I n s e r t a una c a d e n a y una l l a v e en i a l 1 5 t ñ d e c a d e n a s en una
p o s i t i"n e s p e c i f i c a d a
.............................................................................
s t t - 1 i s t t 1 , t 12:
i n : j;
s t ~ e l e me;
i f ( p < l ) r e t u r n O;
i f í*s t r l==NULL)
L
>
i f ( ! m a k e s t r l s t ( l t l ) ) r e t u r n O;
i f i!appendstr.lstis,dl
key,&tl))
*st ri=t i ;
r e t u r n O;
else
i f ip:::' í *st r-1) ->hn
:.
.nume
em i
i f í ! a p p e n d s t r l s t ( i , d , k e y , s t r I ) > r e t u r n O;
3
else
f
a=makestrelem(s,3l,key) ;
if í!makestrnode(e,&tl));
i
* s t r1 ) -> h n ma;.:1en=MAX ( i f.5.ti" 1 i .-I> hr, ma;.: 1e n , e. 1 en > ;
i f (p==l>
.
.
.t 1--, dn n e x t = (*st r 1> -::: h n
i *5t r 1 ) -::*hn. f i rst=t 1 ;
else
.
.
f
i ;-.st;
128305
-.
b
/ X f i1: t i 8 i t t I t X X 1; '!
F-0PuP.C
!
Hwrruientae para crear ventanas popup
'It~t1C*lt8it8~&l(iIi&t8S8ttt8tS&L~8ttt888t888t88k8t8888L88I8I;tlI$88t88/'
lud. (rtdáefi. h>
nclude <alloc.h>
hc lude *ser ni o. h"
n c l ude "i out i 1. h
I'
efine MIN-W-WT 3
efine HIN-W-HT 3
ef ine W X - W - W T 80
efine MAX-W-HT 25
efine CENTER-W -1
efino CilRñENT-bi -2
tr bare-window=NüLL;
tr active-window=NULL;
Xtt8t
*tX t X1
De+ I i .i c i o.. de ca i zr e-
t t 1: f
z r a a s .$ I X t j 1 X 4 .t.$. r .& i
I t I t 1: f /
p t r teripi
f <brre,wlndow-NUU)
r e t u r n O;
81s. if (activo-window ! - base-window)
{
temp-acti ve-window;
selectwindow (base-wi ndow) ;
p u t s t r a t r a b s ( 0 , 24, '"I
base-wi ndow- : . w n i j a t r ,
se1 e c t w i ndow (temp) ;
,
3
e l s e putstratrabsCO,
eturn 1 ;
24,
"I'
,
base-window-iwndatr,
tStlll1 Funciones que el u s u a r i o puede invocar
€30)
:
861 ;
t:t1lttl21ltl1SXtl$l1~~~8/
.
< -I 6 :
8 t t ~ t X l 8 t t L : 8 8 ~ ~ ~ t l ~ t ~ : t t ~ t t 8 l t 8 t ~ ~ l 8 8 t t t 8 i 8 t t $ ~ t t : l t t 8 t ~ l l $ : t 8 t : k ~ t l l
&signa valores i n i c i a l e s a l a s v a r i a b l e s i n t e r n a s
E s t a funciones crean una ventana por omisi+?, "Base windaw", que
rwprooonta toda l a p a n t a l l a .
Debe i n v o c a r s e antes de c u a l q u i e r o t r a de e s t e paquete
.t i n i t w i :id¿cis
:tttttL:iL:ft%8tttt~ttttlt**ttitXt*Slttttt~L:f~L:L:8tttL:ti8~t~ti~$8tt~tt$t~~k,'
ong vp;
fp = i e t s c r p t r ( - l ) ;
(!make_window-node(kba%e-window) 1 r e t u r r ? O;
f
sase-wi ndow-.--I ;
base-wi ndow-:jyh=27;
; a s ~ . . . w~i I ~ o 'I:<*
< H -= Q 7 :
)ase-window-;.%save =where:cabsi) ;
) r s e - w i ndow- )ysave r w h s w a b s ( ) ;
jtrcpy <base-window->nar,
UBi.%O Window") i
/.--ni
ndow->wtype -psuodo;
tare-window-iwndatr
~%~re~Lbase~window->y%
tbase-windouaveI
>xraveJ.attr;
i r m m - w i n d o w - >f 1d a t r 1 121
!are-window->brdatr =baSa_wi ndow->wndatr ;
k s e - w i n d o w - X i t a t r =1121
lase-wi ndow- >prmptatr = 15;
lase-wi ndow->box t y p e =O;
i t k t o p =base-window;
i c t i ve-window *base-window;
, a 5 e _ w : r e l o v l ~ -:. y x . i
2
-
If (vp~aOxb66üL)
def c o l o r 5
errcolors
wrricolors
msgcalors
= nonoco¡ws;
= invcolors;
= invcdors;
= invcolors;
' e t u r n 1;
p0pupwlridowii<i: x 5 i i i t y j i r : t w i 7 ink. ¡it, L L t r 3n, Z I - . ~
biindutwti.pi
~
.NL*
wptr twnd, c o l o r p a k t c p )
: t l 8 i t ~ t ~ t t t t ~ t 8 ~ 8 8 ~ t 1 ~ t 1 t l 8 t ~ t t t ~ 1 ~ t ~ L : 8 ~ t $ ~ t L 1 ~ ~ t l ~ t t ~ t $ t t t X
Crea una vantandi
x columna y r r n p l d n i wd aricho ht rituri.i; In nombre
w t t i p o , L c p a t r i b u t o s de color twnd apuntadw 51 la verttarld creada
v a l o r e s e s p e c i a l e s p a r a l o s argumentos
it
"
-I
r.rnc.-*
1 ,
.m,e.c%.e=n
.
.
1 a<,-..--+*,.
,.
a .ctu.l
x
usa l a coordenada a c t u a l y
y -2
88t88888&l&888888888StttS*Sttttt*Stttltr~&888l&~8888888888&~88888888888~
wtr
wi
i n t 1 , >(wow,y w o w l
t e x e l p tr t p ;
t e x e l ti
if
!push-window-node(&w))
r e t u r n O;
(wd:MIN-W-WT)
wd=MIN-W-WT;
i f ( h t (MIN-W-HT 1 ht=MIN-W-HT 3
i f (wd>MAX-W-WT)
wd=MAX-W-WTI
i f (ht>PIAX-W-HT)
ht=MAX-W-HT;
(
i f
=wdi
w->yh l h t i
W->XW
if (x==CENTER-W)
x = (MAX-W-WT-wd)
e i s s i f (x==CUkWENT-Wi
12;
.:
i f ( w t != v t p t i : < = w h e r e x a b s ! ! ;
Pise ::=where>:
1
(wt==vtpt)
%+=acti v e - w i n d o w - > x u l + l i
(v==CENTER-W)
y=(MfAX-bJ-HT-ht)
12;
if
if
cl5e
1
f (v-=CURRENT_bi!
1 f (wt ! = v t p t J
y s w h e r e y a b s < ) ; oi 5e y = w h c r e y
3
( w t = = v t p t ) y+=act i v e - w i n d o w - > y u l + I ;
if
(!;
()
;
1
I
i f ( : : * : O ) x=O;
if
<y,:ci;,
lf
(wt'=vtptl
,y=<!;
i:
i f í(x+Wd-1)>79) x e - w d i
>
i i ííy+ht-i)>24) y m 2 S - h t i
if (Wt-vtpt)
C
w-harr = xl
i ft w d > w - > r i r r i w->xu1 = w - i x a r r ;
i f <ht*2>=y)
<
3.
el se
H-
w - > a r r o w b u f f C O I . attr = c p - > . ~ c d a t . ?IZB:
r
w - > a r r o w b u f f t ü 3 . c h =Oxlei
w->arrowbuff ti1.attr =cp->wndatrci26;
w->rrroubuff t l 3 . c h = O x b 3 ;
w->yul
= y+31
w - > y a r r = y+1;
el 5e
c
w - > a r r o w b u f f C O I . a t t r = c p - 'wndatrcl25;
w - ) a r r o w l u f f COI. ch K k b 3 ;
w-sarro>,úuff C 1 3 . a t t r
=cp-iwr:&kr
+I-;;
w.- ? a r r - c w b L i f f i i 2. ct: 'w;:
If ;
:,.ar;- y - : ;
w-; y u l =w- > y a r r - h t ;
:
L.,..
>
3
else C w - > x u l = x ;
#*-\ld*.,m~*Ll+
9
w-;,
,,.
>xul=w-.>xarr-wd+l;
129385
.
.-.
I
it r mvwÍ ndow (Wtr Iw>
it8888~~M88Ol$8t8~~f8tttt*Stt&t8Mt888t8l88l88888888~lI~888~8888l~8l
Elimíma una vonkana y todhr i*r que se mtwmtran oncima di o l l a
r88t888t8$8~$8~8t)Y8~~~888P*IPt8Lt8Mt~$t88I8t$88tl:$~l:Il*l8~888~88St8Lt8t&8/
w t r q , prevwi
.nt bwnpappd,
f
n l , m2, nU, m41
ttw==NULL) r e t u r n O;
)revw= (&h)->prev;
~eenpopped=ü;
jo<.
if(stktop->wtypr-=vtpt)
swap-~rr~~(stktop);
~wapvra~n<otktiop,
s t k t o p - > p i c p t r 1t
q=st k t o p ;
i f ( q = * p r e v w ) beenpopped=l;
s t k t o p s s t ktop- >under ;
lf
(q==sw)
d i spose-wi ndow-node ( & q )
;
tceai,;
e l s e d i spose-window-nods . ? . J J ;
While(1):
s t k top- ,over=NULL;
i f (brrnpopped I w l r c twr ndow ( s t k t o p ) ; el se sei ectwr ndow (pr evw) ;
r e t u r n 1;
>
.
. - ......
. -
-.
..
... , ~ . " . .
...
.~
.
f (w==NULL) r e t u r n 0 ;
tcti v e - w i n d o w - ~ x s a v e - w h e r e x O ;
i c t i ve-window->yaave=wherey
iul=w->xul ;
t u l =w->yul1
:w=w->x w ;
/h-;w->yh;
window(xul+i, yUl+l,
()
;
xul+xw-2,
I
yul+yh-2) i
_i
?1se
if
C
uindow(xul+l.
21
3
(yh==3)
i
vul+l. uul+xw-2,
yul+yh-1) I
se
windowíxul,yul,
xul+xw-1,
: t e x t c o l o r (u->wndatr i ;
~ c t o x y ( w - h s a v e , w-iysave) ;
i c t i ve-wi ndowrw;
-eturn I:
clrscriwa);
yul+yh)i
n t bt, u, y;
f
( a i <.tt r=&;
el yc at.tr-=w->brdatr-
j
f ibaxt.ype) bt=boxtypel
#se
bt.=w->boxtypo$
f ( t a l t;it.tr=ta;
el r e ?.it !~r,:::iw >ti t a t r i
ox(w-::.. u:, , . r - ' x y . ~ i , E ~ ' - w~- >~y h ,~ , b t , a t t r ) ;
enters; I. x u i , w . - . . , , ~ l , w->xul+w->xw-l,
w->yul,
wprr
ci
q= i w p ' , r
malloctrizeuf (window-packet));
i f tq=:::NULLi
tw-4:
q.-
;.1 ~I : t
Li,..;:).,..
. .
-=:l.Li-
i d
~
q-:PvL"-=! I L L :
return 1 .
return O?
:
w->name,
tattrji
or
<i=Ci;
(í<=l);
i++)
t=&mcreen Ew->yarr+L 3 t w - > w u r 3 ;
tmp98t ;
St:=w--:arrowbuff
t i 3;
w- >arrowbuff t i I-tmp;
l i d uwapvramíwptr w,
t e x e l p t r b)
:ttt:~tCltktr~tttX\8t~::t8ktt88~t~kt~t~8~~8888~88t~888:88tt~$88888888881
1n:erc:mrbia
la imagen de v i d e o de la ventana con a1 imagen d e t r a s .
da l a ventana
:88t~t~tt~8Sttt8t8888888888888888k888888888~~88888~8888~88888~~8888888888/
:exe'.ptr t p ;
..
.2 ..: ,
-,
..
...I.
.
'kit.
.f
:.
I
:í-.
::start.
.;?
ycitart;
.
( ! ~ - > w t y p e ! = psuedoj
>:?=i.J-%
Lil
+ w - > x w-1:
..~ . = . J , ., .d., +.;
.: :~-'..>-'
.
v,.k-i;
..
. . _ : I *
1:
yst wt::w-iyul;
i f (Iw-:.boxtype)
c
xs.:art.++;
ys:a-t.++;
.. ,
..&. - ,
y2-3
.:
fur
c
for
c
>
í y = ; y s t a r t ; y.=,,-;
íx:=xstart
yttJ
, tp=&<rcrnnCylt x r t a r t 3 :
x < =xZ;
x++)
tp*Phtp ;
t'tp+i-=8b;
8tr ++et p2 :
3
i
.-
.
.
.. . .
.
._.
. . ~ ~ ..
-
-
4
:aid c : i q i i i.5t imencidesc .*.sin);
v o i d c i s p b a i i i n t a t t r , menudesc *sm!;
vcjid n:eni..s:.ze:int
nc, i n t n r , i n t h i e .
senudesc *sm,
i n t *wd);
-+-.ti;
v.-.^.;
L.ir.
-,,~m;:hat--(menctclesc
.
*sir' ;
3 ' C ,
!? t c t i
r
s t a t ii
static
static
static
static
static
static
static
static
stat:[
.- *
,ai i c
5:
r;.tatic
static
s t r l i s t sl, c h a r *t,
Cmeniide~,: * 5 m ) :
ir!:.r c o i ; ; % i i i tcolnci, menudesc *.smi i
i n t b a r l m x i i n t i , menudesc +sin);
i n t b a r l o c y í i n t i , menudesc *sm);
v ~ ~ ai ddj s i z r ( m e n u d e s c *sm,
i n t nc, i n t n r ) ;
v c 8 i d a d j i ( m r n u d e s c *sm, i n t *i);
v o i d homebarimenudesc *sm);
v o i d endbarinenud.esc +sm) ;
v o i d pgupbar(menudesc *sm) ;
v c 8 i d pydnbar (menudesc +sm) ;
' v c : i G upbat- Inenudesc *sin> ;
',+!:. ;ci i.c?~r!barimeniidess *+m);
v c ii:l lef t b a r imiinudesc *sm) ;
v o i d r i g h t b a r imenudesc +smf ;
<.,!.
.
l,.i..i..-
,
i n t wd;
,.
:\a.
s m - >d rag=Ci ;
sm->paren t=NULL;
menusize(nc, n r ,
hze,
sl, t,
5m,
Wdf;
sm->menu k i n d = i~mp 1e ;
p o p c i p w i n d o w ! ’ ~ : , y : w d , s m - : : : - n r o w s - ~ -t= ,, o v e r l a p , & ( 5 m - : 2 w ) ,
i f (menLi_e,..itbi.;t+j
c.c
.. peen C %m--:.: w.-.
ui lCsm-..:~w-:~~:~ill.t:h=EX-BUTT;
/*
i
cp);
i f (sm-.:::.shap~== s c r o l l m e n u )
sc r-een C 5m-:::. w - : i . v u 1+Sm-:::.w-::.yh- 1 1[ sm->w-(;. XLI 1+sm->w-:>xw-83.
ch-S-UP;
y h- 1 1C 5 m - ? w- :> xu 1+sm-::.w-,: >: w-6 3 c h=C-DN;
s c r e e n E sm--:::.w-:
yh-1 J ~ s r n - > w - : ~ x u l + s m - > w - > x w - 4 1 . ch=I-LlP;
screen E sm-iw-.
ec r e e n C 5 m >: w - :iy 8-1 1+sm ->: w- > y h - 1 1C sm- ? w- >. x u 1+om- ? w->: x w-2 3 c h s I -DN
.
.
-
I*/
sm->sc t-of 5 =Ci i
..:x..-.
....
<ZL,\!
’’
...
-.
d i 5p i i 5 t i ,:.T,’!
..’
... , . /
,
;
1
i
v o i d rmvmenci ímenudesc * s m )
,/******************************~*r**************************************
r,.
i .ii
: #:tima
!,!f.55.
ecta.
comenta>-io5
!? ;
i1r
i2 r
I
-c
:.
i.i*R..?+***.,.*.X*
rmvw i i)cIüw ( 9, is i n - ::..wj ;
/*freestrlst ( t : s m - - : j t x t ) )
void moveat-ound 1:menudesc
F.*.r.*)(.-~r..L.***,Q*
?‘****.u..**.**
;*/
*5m,
rtricode
í * a c t i u n ! ímenudesc * s m )
)
.******.x-!~*~***********I+~c++” ~*~*****************
Manejacior-. d r a c c i ü r i e s d e ciii menu s i i n p l e
............................................................................
c
r t n c o d e rc;
d o -C
m o v e s t e p ism, (:I) ;
rc=sm-:> r c o d e ;
i f (rc==doit)
i’c’
< *act;
)while
1
i
,.iliI ;
C5iTtj
;i
í ít*c!=abortit)
sm->rcode=rc;
?A,.í r c ! = t e i m i n t
)!;
) w h i l e ,:rc!-terminate) ;
r-mvinenii .%cia..
r,ineru) ;
3
/*******+*c**
I-***
t+
*~+********+**+********+********************~~~~~***
-.
.
.
..
...
-. -
t, rea i
.
:
i
i v t lnenu_tt~igger(menude+c *ism)
stat i:
:,-****.++
I.
. 1 iF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Eie
ira cuando +e p r e s i o n a una t s c l a
*4He4.*.l;*.r.(I~~+*************~**************~*************************~*****/
c
in; i
:
n:.,
, mZ,
m3, m4;
k= :I;
'i
g i! t :L,: E!: ' ( ? r k ) ;
:
~
\ I
.....I I
., ,
I
3
void ~tlj,~
l:.,st
s&~
(menudesc * s m )
/***.i.iiu.r.-. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
M.iR!cit: '?. la lista de opciones de un menii
***Y
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
(.*.I:.*..
, u~~~,*********Y**********.~~.~~*****Y*************************~~*****/
d
v o i , i m e t i i w - . e i i r , . ; nc, i n t n r ,
i ri :' * w d )
/ **-+-,**i+*.-
I
*~+*++-C~*****************************************************
. * / u p 1te e l ancho
c***~+Y******************************~************************/
***Z*****rt
t,.J(j=wiiT
I
s t a t i c vc,
3 ; 7:
***.c***.c+
menudesc *sin,
~,min;i el. tamaáo f / s i c o r e a l d e u n men#
I)!?
wd
/*+.i..i..X4
i n t h i e , s t r l i s t si, char- * t ,
L-c
'
.
I
, , j >-+.
: L. -.i.*nf:!:>+;?j;
adjstieímenude+c *5m,
k-;,riaCc
r'
,
i n t nc, i n t
ni-.)
,..i.**-*.C.rC*.cr**********~**************.~~**+*******************~
ji!:
iir, me.n#
, i..~*s*.~.%*************************************~*****************/
i -: t sp
i f ( i s m - : ~ n c o l s - l ~.;:=~
O)
sp=o;
l
.
.. .
.-
...
..
,
-. ...,-.
.
4
.
5y.iit .
c i n t col;.: ( i n t colno, menudesc * c m )
f.'.*++*+**.*
,.*** ****-**********~~*r~.**~******I~*~*~r~**~**+.
denada ;.: d e una c~-Iumnae s p e c i l ' i c a d a en u n inen#
.........................................................
i
-.'?turn ícolno-1)
5i;iii
* ( s r n - > m a x l e n + s m - ~ í p a c i n ~;)
ic i n t b a r l o c x ( i n t i, menudesc * s m )
............................................................................
x d e la u p c i . " n i...--=Amadsl men#
.* *ñ-*X..**.*******'*************++*******.~.~**iC************~.~(-*.C*****I.***/'
.:.t:tz!-mit-~:t la coordenada
*i+r:.t
.c
3
vet urn c o l x
>.,:
. . . . .........
....
(
í i -1 1 /sm-.:,nrows) i.1,
. . . . ~.
. . ..
<. .
3.7.- .........
I I L,li+l
~
sm) ;
-~
c h a r *s;
:qt
F.'*';
stt-list stl;
l = g e t s t r p t r (sm-:isc r o f s+sm->.curr-en t r y , sin->t x t ) ;
s=stl-?dn.elem.data;
5t
:if <sm-:~nrows ! = l j
p" = ern-':.
. maxlen;
-
21E.
p w = s t r l e n ( s j;
=eiectwindow(sm-:::w) :
p r t h z ( b a r l o c x ( s r n - l c u r r _ e n t r y , s m ) ,bar1ocy~sm->curr~entt-y,sm~,
"'*,
attr,pw);
static vil i li endbar imenu.desc *stn i
.......................................................................
!?.-ocesa la t e c l a end
X.*X*i.*tt..:~*.C*.,***+-*.~.*.o.,.~..C.C:X.*
*-**-,c** f..^.:^^^^* f..^.:^^^^* **.*+**+..a**/
i n t me;
me=maxent (sm ;
i f i (sm-:>scrofs+sm->area)
.: me)
r
sm->scrofs = me - sm-)area;
3
srn-l.curr-entry
= me
sm->scrofs:
displist(sm);
-
3
s t a t : . c v u i . : i.tptl,i" .menudesc *sm)
/*********rtr*.*+****,H*****~****~*~*******~**************************
Froi_eijn
*****i.t+r*r
I.rt
I
~
.... .I , ,. ....
-..*.a
u~~~***~******~********************************************/
;
i=:sfq
j. f
t w l a up
si
'
,
''[:,If'
.. ,i S.TI--
.,
. .
.,....
I
,
t
<~
,: .
j
:. 1 )
i=sm-
1
,>.rico 15 ;
'.
else
sm-?scrof s -=srn-*.nrows;
sm-:~sciofs=MAX ísm-:;.srrnfs, 0 );
d i s p l i s t ism':
i=oldi;
adji(sm,%ii;
m - 1::. cur r-en i:r y= i ;
s t - t i c v o i d rightbarimenudesc +sm)
,.
,
**~.f*.**~.~.5~?.*.~*~.~***.*
a la. t-=.cl+, rigi.2
.F*t*.+.i.*
nt o l d i ,
me,
*****.*.*+***C****
.+******************~~~****.**
* * * * + * * ft
. t. ..................................................
i;
f i !i+sm ..:.5crofi11
:..me1
oldi=i;
i+=sm-.:nrows;
i f < i . sill.-:.. a t - e ~ . .
.
!:J.[.
o.
,
*
.
Y:IIC
*."?*.E**
,.I
i3;jiist.s
. .r-*i:*+
,
, , .,,:*,.*,.1.
E
.iiii+...
xis-sc
<;
..:
:
...
it it
-8l.a
*sin, i n t + i i
.i. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
n d i i f? ,de e n t r a d a s
d e manera que n o s o b r e p a s e l a #ltima
-. n *~*.
-w......................................................
I- I i
~
I.+
I
Y**..
-,I...
.....................................................
com-pto. c
R u t i n a s d e comunicarion con el p u e r t o en p a r a l e l o t /
n c l u d e t s t d i o . h>
nciude<mth.h>
ncludr<bios.h>
nc l u d e < d o s . h >
n c l ude"hoyor. def u
n c l ude"com-pto. c t e "
t i n i - p t o ( i n t num)
Inicia el pto
d e v u e l v e cero en ex i. o
s i n o d e v u e l v e l a cat.,:,?d e l e r r o r t /
i n t etatusi
,;
. .
.
..::
.
,.~:>.r.L.;:
-
,.,.., .. ..
.
_
>di
:
_
1
i
d...
>
-..-< !, .
'.
el se
dato-sar=<ir,i~'.:i.rto..?+ii.l!;
biosprint<ENVI~_PTO.:I.lto_sal,iPTi); / t e n v i a primer b y t e de1 d a t o x
delay(l0J;
d a t o - s a l = d a t o - s a l > ' 8;
b i o s p r i c t iENVIR_PTO,:l~ito_sal,LPTl);/Ir
d e l ay ( 1 0 ) ;
:C
:3at:;.
.-.,
.
j
..,'..Jj
-
:
.
.
.
,, . , . , 2 . .
--, > - -
1.1-
2..
,
$1
envia segundo b y t e del d a t a x t /
. .
.>_.,,..
: conv-kit.c
K u t i n d s d e cz:!.,.t?t-sion t /
nc lude "hoyos. def ''
$*J
lar conv-pa6o%(hoyo M a t o ,
i
ehar uní)
c o n v i e r t e 10s d a t o s de l a s coordenadas a p a s o s d e motor
un1 d i c e l a s u n i d a d e s en que v i e n e n l a s c o o r d e n a d a s
O cm
1 mm
2 pulgadas
D e v u e l v e c e r o en error t /
float divii
s w i t c h (uni ) C
case O: d i v i =O. OS*2.54;
case 1:
break;
divi=0.0512.54110;
DCfi
;
: d i . , . , .:..,:ay;
breri. ;
d e f a u l t : r e t d r n O;
- : ~ c o2
1
ftdat-).y
I .:
.
#
..
-
.
!f-latnl.!~/iivii
'
.
~
' . j ,
-i . L .
1RCtWa.C
rut&de lectura do
lm datos
81
nc 1udc<stdio.h >
nclude-:al l n c . h>
ncl ude<stri ng. h;
ncludeimath.h Z
nc1ude"strearn.def "
t lee-orcad(char tnombre, stream ted-hoyo)
1- en una ed los juegos de dato. de hoyos d. un archivo a u c i ¿o orcad
nombre contiene el nombre del archivo
devuelve cero en caso de error 8/
- *
,-.L.i
SA,.
5df í
.---
:
r-[803i
char tapl, t a p 2 ;
ch-8
s
char c a d ~ x C 1 8 1 , c a d ~ y L 1 8 3 , c a d ~ d C 1 8 1 ;
char temp;
hc
oodc'
-
whi le ( f gets ( b u f f hr,80,arch)!=NULL!
t Emp
'. ' i
;Lp
;t: ii~.; :bL;i. r s r , temp) I
:
'-
temp=',
';
.:ipZ=rtr~ikr(sp!,temp!:
strncpy(cod,d,y,l+l,apZ-apl-i)l
~.4dCap2-y,l-l3='\O'i
api~etrchr(ap2+i,teap);
strncpytcad-x,rp2+l,apl-ap2-l)i
cad-xcapl-ap2-1J='\O' I
temp=' ) ' 8
ap~strchr(apl+l,terap)i
strncpy (cad-y,apl+i,ap2-apl-1)3
cad-yCap2-apl-11='\0';
rode. : =at'f {cad-:: ;
.,>:
>ti-..
:, ~ A i . d #
+
:.:)d
nodo.dri ll=atof(cad-d) i
>
inserta-rtreamied-hoyo,nodo);
return 1:
.*
odzca ?;
primera
/I obtrenc el drili
L/
iL: busca l a segunda coma
/ * obtiene la c o a d o n d a x
$1
/*
/*
*/
I/
busca el parentesis que c i e r r a t /
Obtiene l a cowdenad. Y
t/
ttktkikttkttkttSttktttttt$tSSltSllttlSLI88kitt$
panta-e6.c
de vmtrnas
i88888888888888888888888~888888888888888~88888k8/
rutinas para
nclude
nclude
nclude
nclude
nclude
nclude
nc 1ud e
nclude
MnLJO
(std1ib.h)
(std1o.h)
<dos.hi
<ctype.h
istdarg.h,
<string.h>
'I sc r n 1o. h 'I
"1 o u t 11 . h "
i c f i n e VIO Ox10
i e f i n e R1Nta.b) ( ( a < b ) ? ( a ) 1 ( b ) )
a t f c unsigned char boxcar t23C63={
i?a, 1 1 í . I?'=. - ; Z . L i 7 ; ,
2$)1.7Ci5. 1 8 7 . 186.21' 2. 1BE'
.i-.
rnarray f a r
tscrptr;
:I:I:tt*I: o a r a m e t r o s n n r n ú l e s p a r 3 ventanas
,
-
.a,
.
. .. ,
~
..
. .
.
<
..
,
.>'.,A
tttt~tírt8t8ttt8tt/
..
-Y'
. a t ~ cunsigned criar watt.? = I b ;
: a t i c a n t wvpage = O x b 8 ü ü ;
/ % p a g i n a de v i d e o L G A l t
; t t * t l t k k k l D i r e c c i o n e s de paginas d e v i d e o ~ m $ t t x ~ i # ~ i t $ t % t ~ f ~ /
,.
'.,,L!,;:c2,
<+,* *i,C:<>(-J(yJrj; ;
I - . ,..
,....,.-
. . , _c:-i3105
<:-
! I !
'-
i a t i c i n t l f a b s í i n t n, i n t x ,
FUNCIONES OENERC\LES
i n t y,
int xl,
int yl,
unsigned char a);
*
e
nion REOS regag
n i o n z <long pa;
-
int pahC21;
2 paddr;
f *S(vp >-o> l
d
( tvpi4) 1
paddt.pr
page-addrtvplt
e l se
c
regs.h.ah
=15;
i nt 86 ( VI O, &r eqs &regs) ;
,
i f (regs.h.al
>
=:-
e l s e paddr.pa
-7
paddr.pa =: OxbOOCiUO(Jc1.
=page_addrCregs.h.bh3;
.
rvprge epaddr pah C 1 I i
K r p t r = t u r n a r r a y f a r t ) paddr.pai
‘eturn wvpagei
,:ii!t ::t~)p. in? ct>ot!
c i t i t i ~ X ~ t i t t t i t k t t ~ U i ~ ~ ~ ~ i * ~ i ~ ~ t % t l ¶
)id s e t t u r s c r
ü e f i n e e l formato d e l cursor
ctop u l t i n a l i n e a del cursor
chnt arimera linea d e l cw-53’.
.
' e g s . h. ah=J;
egs.h. bh = w ~ p a g e i
n t86 (UI O &rege, &<regs
) i
wturn regs.h.dhi
,
..
.
..
.
,I--
,,
)id putstratrabs t i n t x ,
i n t y, char ts, u n s i g n e d char a , I n t f )
:88888888~8~8t8~888888888888888888888888888888888~888888888
Imprime una cadena crn atributo M 1. c w r d r n r d m o s p e c i f i c a d a
r 8 ~ 8 8 8 ~ 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ~ 8 ~ 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 .8 ~ ~
texrlptr tpi
i n t i;
checkcoord ( x ,y ) ;
f o r ítp=&screenCyJCxl, i = l ;
i
if
>
(*s!=Oi
tp->ch
e l s e tp->ch
tp->at tr = a ;
='
=
&%++;
'
i
( i < = f 1;
i++,
tp++)
,
i,$#,.E>:u1 = ':¡ wyui = ;'
wlr = ::li wylr = : , , I ;
,
( i d getchatr
t i n t K,
i n t y, c h a r t c , unsigned char & a )
kk&k&8&8&k~kk&kk&&~8kZk8k8S8~tk&Ik8~8l88k8k~888888SU~&8lk.SI88k8~kkk&k~
L e e el c a r a c t e r con a t r i b u t o d e 1 8 e # r d m a d a r e l a t i v a
~tkttltSLtttttlt*t*t**t**8*8&&&*8*t&&&&&&&&*&&&8&&&*&8Z88kk88kkk888&&&*k8k/
getchatrabsi:.:+w;:ul, y + w y u l .
bid c i r r c r
c,
a);
(unsigned c h a r M a )
~88~t8k~8~$8~L88k88k888~~k~8888&k8lk88k88~~8l8888l8l~~8~~8t$~88
Limpía 1. p a n t a l l a y c o l o c a c1 c u r s o r on l a p o s í c í o n 6. i n i c i o
u t i l i z a na
COIO
el a t r i b u t o p a r a 1i.pi.r
I8k888&~kk~kk~lk&&&&k~kkk888kZkkZk8~kk88kkkkk~~k888&8k888~88~~k8kkk8kkl~k
inion RE- regs;
insigned char ucolors
<%<:o)
I f
c
if
n=MIN(etrlcn(s),
i#ír-wxui+i);
trCII-=ü) n*wxlrlo<ui+li
(le !=O)
OLU
i f
..,
x = (rn<ir-wxui-n)12~
if (xi0) x ~ 0 ;
3
+= w > : u 1 ;
:
.f
'
.
(yiü) y =(wylr-wyul)/Z;
+= wyuli
{
if
i(n+x)
if
(:s
<
!
I
> (wxir+i)) n=wxlr-x+l;
== O )
f o r (tp = &screenCyICxl,
C tp++->attr = ai
i=l;
(i<=n)i x++,
i++)
u!
>
else í
- --
/ t L l e n a la linea con un carrcter t /
*,end < O ) ) 6
& s c r e o n F y X f . w l ~i
l l < i <* n); y + + , i + + j t p +o 80) C
i.FC$**Lyin#S)
fwttp
t p -> ch
i f (a != O)
So);
t p ->
1
3
-
1)
a t t r = a;
/ t saca un string con a t r - i u u t o s I r /
f o r ( t p = &screenCylCxl,i=i;
i t s ! = O ) && ( i .:= n)i y + + , i + + , t p
else C
3
3
tp
if
->
Ch
=
SS++i
!
>
:~
/ t a c t u a l i z a el cursor
!
t/
' .,."
I+
i a ! = w ~t p - ) a t t r
=ai
tp++->ct¡ =*si x++i
if((x>wxlr)
I
80) C
(a ! = O) t p ->attr = a ;
gotoxyabstx,y);
. .z .:?
+=
::
(ts
== '\n'))
~
. ..
:
. . . . . .
>
y i l f a b % ( l , w x u l . wyul.
t p =&screen t y 1 Cx 3 ;
wxlr,
wyli-,
wittr):
=Icc.ui
>
?
!otoxyabs(>:,y ) :
, i d cdecl p r t h r f ( i n t x. i n t y , char I f m t , unsigned char a t t r ,
r&&III&I&IIII$:III:I::IIIIII&&&I~IIII&&&~:&&I&8&&&:&&I~II&&&&&8I&II::I&&:I
-rime
h o r i z o n t a l m e n t e con f o r m t o
i n t wd,
.
ik&&t&t&&&~t&&&::I::I:~&&&&&k&&k8&&&&&&&&&&&&&8&&&&&&~&&&&&I~&8&8&&I&k&&&I/
.
-,
.
.
,
.-
E
if
i b t y p o >2> b t y p e
..=i;
=
1;
c =boxcar C b t ype3 C 1 3 i
.
.~ . .
.. ~ ~
. .
...
I
........
. .. .
,I
tpl-kh
>
tcL-/cI)
=
-
Lpl++->attr
cpZ++->attr
i
;
c;
i
b ~yp.3 C 5 3 i
- ~ < r c ~ . . ~ ~ ~ i í ~ & Y ,
-
= ai
ai
( i ~ h t )I++)
~
t
= c; t p i - > a t t r = a;
(tpl+wd-l)-lch
= c, ( t p l + w d - 1 ) - > a t t r
tp1 +=so;
tpi-xh
1
screen
scrzen
screen
screen
Cyul I L x ~ i Ji . c h = boxcarCbtypeICV1;
Cyul 3 C::ul + w d - l I . c n = boxcar [ b t y p e l C 2 3 i
Cyul +ht-i3Cxul3. ch = b o x c a r C b t y p e I C 4 1 ;
Cyul+ht-1 l E x u l + n d - l ~ . ch = boxcirCbtype3 C51 i
.
1
_. , . -..
._. .
Lt.,..ript'' L P >
Lt
'.t
= ai
::.
.
I
L.
i:.:
.
rabs(wxu1) i
f a b s ( 1 , wxul. wyul, wxlr. wylr, wattrjt
t fu-limy(int
y)
r e t u r n (y+wyul >wylr") ;
k Str8am.c
A r c h i v o que c o n t i e n e l a i m p l a n t a c i o n d e l a s o p e r a c i o n e s d81 TDCI stream
Diana L . K r o e p f l y C .
Agosto 1991 $ 1
ncludr (al1oc.h)
nc 1 ude "st ream. d e / "
t crea-stream
(strmu $st)
k s t ) .cabeza = NULL;
Xst) . u l t i m n
L
5
.
--
:;. :. .
I,:*,
~,
..
ii
.
=
N1.jL.L:
..
t inserta-stream
! stream t s t ,
hoya e l e n )
-
(tst).ultimo->info = nlem;
(lot).ultimo->oig
NULLt
((*mt).cuenta)++;
r r t w n < l )I
>
3
t vacio-stream
(stream 8t)
devurlve 1 si esta vacio el stream y O en caso contrario
if
i
$1
( ( s t ~ . c a b e z a = = i W L ~ J&& cist).ultimo == N U L L J J
roturn ( 1 ) 3
rrturn ( O ) i
I
E l i m i n a rlipnentor del stream ae e n t i ada, la eliminacLoi; la nace a p a r t i r
IA cabna
papa realizar esto consicbra d i f u w r t t e s casos t í
bevuelve 1 si pueUe borrar y O s i no puede borrar X /
do
I
,
t lleno-stream (stream t s t , int max)
choca si 01 strmam esta lleno, devuelve 1 m i a r t a lleno y O m otro c a m $ /
1
i
i
t borra-aot (stream t s t )
bwrr un o l w u n t o de 1 8 strern cola del stream
$1
lista tccnp,trrp28
Ist).ultico==NULL)
1.32
I
:
)
return O;
ista tmpl
,
, " . )*
'f ~!vacia,mtrr~ntst)~ C
:*
tmnpwt. cabeza I
whi 1e itemp ! -NULL) <
p r i n t f ( " \ n x=X5.3f
y=%. 3f d=XS. 3f ' I , temp->in/ o . x , temp->inf o.y,
temp->info.drill);
ternpatemp->si g ;
>
i d b o r r a - t o d o (stream t s t )
hoyo dato1
while(!vacio-streem(Ist)) C
cor-t~ a- s i ,.cam t L; t. LUa'L =J i ;
3
i
I
.
I
imvwindow(huno2 :
void transmision O
C .
r*#I>*
hoyo data;
wptr- uno;
i.insiyned int i , tablas;
earn t e m p ;
rrea-5trearn (?,:temp);
pq
j I.!
"u
c,c, i.-i
j. i
l
i
:
, 5 1,60 ,J ,
I,
,,
,
E
-;<;.p, :,.i,no,
eti.l;lor-rs:;
(hayarch==l!:.
if
1, "CUANTAS TGHLILLGC DECEG PEFF3RAR ",7,2L);
scanf !"%d",&tablasj;
for(i=l; i<:=tablas;i++) :.
pt-thz!-i,
copia-stream(&temp,&edgaso) ;
[>r+hi!-i! 1, "COLOQUE ILA TARLILLA Y
t-. t i-,
/*
,
A
4 ,
i,
1
"ECFEKE
inigto(LPT1);
, .
...
... ,.
ilUilENT0,
SE
.
PRESIDNE
UFIG
TECLA"
E X # TRA~~CMITIEND0",7,
X!>
;
Inicia el puerto paralelo
*/
. .~
.
oar-rs-streami&.temp, & d a t o ) 4
. ~ ~ r , : , i ~ . - ~ . t ~;~ d a i ~ , ~ ! ~
.
1
void a y u 0
Oprima cualquier tecla p a r a c?ntinuar", 1 1 2 ) ;
popupw indow ( 0 ,O, BCi,23 ,"AYUDA",over 1 ap ,%uno, &co 1 ores) ;
prthz(l,l,"Filitron software para control de perforacion de tablillas, autom<
makestat
CO",30,80!;
.
.
. ..
-...
, ?Iin;. - .-I...id _ , las cocrdenadas ñl I-i:itema q;,e ;.caliza la p e r f ~ t - a r i n i - " , - ,
:
prthz í 1 ,12, "Se pregunta el numero d e tab1 i 1 l a s a pet-forar, teclee e s z a da to.
i son mas" ,XI,80 ) ;
~.
~.
. ..
. .
pr-.i;};z
; 1 1,
(:I )
~~~~~
~
~~
,.
p r t h z < 1,14,
".
I
1 A d ' c u a l q u i e r t e c l a . R e p i t a e s t r a c c i o n h a s t a tcrrminar d e Der'
'I
i,15,"laz t a b l i l l a s . " , ~ 0 , 8 0 ~ ;
p t - t h z ! l , 17,"CALIR: r e g r e s a a l si6tema o p e r a t i v o " , 3 0 , 8 0 i ;
, ., .
bipskey(0)i .
e
rmvwindow (%uno);
i
t.tf,;:l
í1iv-t
tr ,:me
a t !i :
1 lamadot-a ímenudesc
Xsmi
.an=!C
i* archivo+/
rc=donothing;
l e c ti:ra ( ) ;
hreal:;
tase 3:
break;
transmision+/
/*.-..., .
..
,
. .
,.,
,. ..+
. ...
:
.j
.. ,~
.A/_ 3
.
';
rc=uonothinp;
;" :
"Y'.'
k:t-E%i:;
hr e a k ;
toid m a i n 0
ipr;i,..:.;
ha:yar c h=Ci ;
crer-,stream ( & e d g a s o ) ;
opir:iones= s t o l í " A r c h i v o / Teclado;
Trasmisi"n/
Ayuda / C a l i r " , C i ) ;
....
. . ..
...
.,
-
,
-,
:L
,L
p1antaci"n
c
d e I.
n a . g e n e r a 1 d e edici"n
. .
..
.
b a n d e r a d e n o e x i s t e n c i a d e primer- s i g n o */
*;.
.i.nt ~ i c . . ~ , i . y i ; ~ : ~ L ; / + band
,!:: e i s t e n c i a d e s e q i , r d o .sig-go *
.
i
i n t continua;
i n t nosignol;
1,
/*
*,/
/*
* , , V e r i f icacimee i n i c i a l e s
i f (cad==NULL) return -1;
Hace nada si no h a y c a d e n a * /
2. f
( i i!-,!-:==REGL.E! ;. ? o n c o m í i - , ( c a t i , l e n ) ; 3 / * pone cclmas y a p o s t r o f o s e n
un n#met-o r e a l
:b,:>i-,c<;,4:,
= :.t.:-len i c a d ) ;
i f ( l o r i c a d .: 1en 1
.: i r n = l a n c a d : cad[ 1En I = ' \(:I ' ;
*/
i;ec!a=i:~;
it
c: on t i
n ua= 1 ;
/*
inserta=l;
>:ini=x;
if
/*
v a l o t - d e tie~y,oli-tci.'n pot- omisi"n
modo d e inserci"n
posicion i n i c i a l
/*
/*
/*
!-' 7
~ 2 j.
-
*/
por omi5i"n
*/
í l o n c a d ! = O ) :.
nopunto = r e v i s a g u n t o f c a t i ) ;
hOe>:p
~ r e v i s a e x p o n e n t e ( c a d ) ; /*
haynum
= r e v i s a n u m e r o (c.nd) ;
haynum exp =r evi sa-n ci m er o e : : ~ ( c a d ) ;
n o i i q n o l = r e v i s a - s i y n o l . íc.nd) ;
./*
*/
u n o e i no h a y p u n t o *í
uno si no h a y e x p o n e n t e
c o n t a d o r d e nUmeros */
contador d e l exponente
uno s i no h a y un s i g n o
.I
*/
*/
1<! p (I) -j 3,:: i,. .. 7 j<* 1
s i g n o d e l e x p o n e n t e */
'j
'
I
e l se
_.. I . I _ -
*/
x=xini:
apcad=rad ;
6 i Que=1 ;
~
~~
. ... .. .
.
-...
.
_.
.~
rar=ae tksy.(&tec la) ;
-,*,itch (tecla) i
/it+*+*t+it*+***
Froceeo d e teclas d e movimiento interno
*++++***+/
puede quedar en dos estadoc.,
apuntando a un'caracter de l a cadena ( y apcad a l mismo caracter)
ap~iri
tando una posicion despues del #ltimo caracter:
y apcad apuntan a l caracter ncila d e cad 1 * /
de i a cadena í i
El cursor
/it
1
2
/*
Teclas de movimiento
leftkey:
cage
*/
.
..
i
,
i f (%?=;:inil Capcad--; gotoxy(x,y);
b t-eak ;
3 e l s e C:.:++;
3
case rightkey:
x++;
if ((x<=xini+loncad) && (x<len+xini))
Capcad++; gotoxy(x,yf; 3
else E:.:--: 3
e 3.I:: ;
:-:
r-
;<
= >: In 1;
3.T.i., z / ' :
,ri
( ;.t,
y
J
I.
apcad=cad ;
break ;
.... . . -. .~
.
.
.
; 3p.c3.f--"
~ , . . ~ . .
,
Qoto;:,
1 '3
<>:,y);
h t-eaf<;
.~
case
. ..:
:7,;IC'J :~ ::
inskey:
i f (i/?E@kiC*j
b real: ;
.:if-,
ei)c.
. ...
c?ge
4. j '
.:i.,'Z.Ei.'t,=:;
:
case delkey:
= x in i 4.1oncad I .:
if (sapcad=='. 'f
C nopunto=l; if (xexp!=xini+lenf xexp--; 3
if ((+apcad=='E') I:(+apcad=='e'))
Cnoexp=l ; xexp=x in i +len; 1
if ( (*apcad>=48)%8(itapcad(-57) )
--:if (,.:e:.:p!=:.iir:i+lcnl
xexp--; ?
i -
_I
.. : :,
i f ( x==x in i 1
Cnosignoi=l; if (xexp!=xini+len) :.:exp--;3
else C nosign02=1;3
ac tc1al=apcad;
*. ( ,z a r:i +. 1.I:IS
int-.
k. 1. :=:..i :;
.
cl....,j j
I.
- .....
.i
-.7:
plttcna'ct-. iI
...&., .Li3. .: +.-i.
''
4
, y',
* a c t u a l , a t t-
i
l..it.j
,
:.L
apcad--;
i f i+apcad=='.
')
xcxp--; 3
I (*apcad=='e') i
:. noexp= 1 ; >: exp= x i n i+ 1en ; 3
( (+opcad>=48)%% (xapcad :::=57)
)
~ : : : p )I hayriiirn--;
i f( s e x p ! = x i n i + l e n ) s:e:.:p--; 1
else haynumexp--;
(!+apcad=='+') I I !+apcad=='-'))
(xrxp!=xini+le%k
.f
1.
i c i
.:
n o e i g n o l = l ; i f (xe:.:F!=xini+len) xe?ip--; 3
else .: nosigno2-1; 3
a: tual=apcad;
<cad+loncad)= ' ' ;
for(i=::; ( i c : = x i n i + l o n c a d - l ) ; i + + ) C
sig=actual+l;
-*
e ii;e
putchatr(i,y,+actua~,atij;
actual++;
case @%:key:
case t ,abkey :
case crirey:
case up!:ey:
case di2,iunIrey:
case p q l h \::e;/:
case f i ' i e y :
case f Z l : e y :
case f3l:ey:
c a s e f4i::ey:
. . .
I.
Qoto f i n a l ;
break ;
b real: ;
break;
break;
b t-e 3 k :
:... ......
I.,.
break ;
break:;
break;
/*
sale
*/
3
3
else .:beep; 1
#.,
;?.:
$7:
break;
def WJ 1 t t
1
ifiaceptai C
i f ( ' i n s e r t a : .E
i o n c a d + + ; i f ! l O r i c ñ d leni
* ( c a d + l o n c a d ) ='\<I ' ;
actual=cad+loncad-1
f rv
' .8
i = ..: 1
:,
I -L
I Zlri c a d
loncad---:
I.
siq=ac t u a l - 1 ;
+act u a 1=*si o :
1 f í t 1po==CONTKA-E)
putchatríi,y, ' I ',atr);
el se
putchatt-í 1 , y , + a c t u a l , a t r ) ;
actual --;
_
I
.
1
unto(
i n t lugare.:p(char +s, int len)
c
_ ,
:
r
''
-
.
.
.~
<
._c.., .
.
I
l
,
,
~
,;=-
f o ( p a s g u n t o=<)
: í p o s g u n to<= 1a r y o ) ;p o s g u n t o++
__
.
..
__ .
~*i+*,~+,**~~****a*~****~*.**~********~**~~
.
Descargar