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*~****~*.**~********~**~~ .