Esta evaluación constaba de hacer una especie de banner en el sistema de desarrollo, donde se mostrara un mensaje en las cuatro lineas de la computadora, y fuesen rotando
1: ; defseg teste,start=0000h,absolute; 2: ; seg teste; 3: 4: ORG 2000H 5: LD SP,3DFFH 6: INICIO:7: CALL BORRAR_PAN
8: CALL LIMPIAR
9: CALL LIMP_SEC
10: LD B,64 11: LD IY,MENSAJE1 12: 13: LD IX,LINEA1 14: LD A,115: CALL ENVIAR_MEN
16: ESPL1: 17: ; SE RECOGE LA TECLA PULSADA Y SE GUARDA EN LA POSICION 18: ; APUNTADA POR IY Y SE IMPRIME PARA QUE SE VEA POR PANTALLA 19: ; SE ACEPTAN DATOS HASTA Q SE PULSE ENTER O LA BARRA ESPACIADORA20: CALL SCAN
21: CP 20H22: CALL Z,ENTER
23: LD (IY),A 24: INC IY 25: 26: LD IX,LINEA1 27: LD A,128: CALL ENVIAR_MEN
29: DJNZ ESPL1 30: 31: LD B,64 32: LD IY,MENSAJE2 33: 34: LD IX,LINEA2 35: LD A,236: CALL ENVIAR_MEN
37: ESPL2:38: CALL SCAN
39: CP 20H40: CALL Z,ENTER
41: LD (IY),A 42: INC IY 43: LD IX,LINEA2 44: LD A,245: CALL ENVIAR_MEN
46: DJNZ ESPL2 47: 48: LD B,64 49: LD IY,MENSAJE3 50: 51: LD IX,LINEA3 52: LD A,353: CALL ENVIAR_MEN
54: 55: ; SE COMPARA CON 20H, EL CUAL ES EL RESULTADO DE PRESIONAR LA TECLA 56: ; ENTER O LA BARRA ESPACIADORA, ADEMAS SE FILTRA QUE SOLO SE PRESIONE 57: ; NUMERO ENTRE 0 Y 5 58: ; SI EL NUMERO ES MENOR A 0 NO SE ACEPTA Y SE VUELVE A PREGUNTAR POR 59: ; LA PROXIMA TECLA 60: ; SI EL NUMERO ES MAYOR O IGUAL A 6 NO SE ACEPTA Y SE VUELVE A PREGUNTAR 61: ; POR LA PROXIMA TECLA 62: 63: ESPL3:64: CALL SCAN
65: CP 20H66: CALL Z,ENTER
67: CP 30H 68: JP C,ESPL3 69: CP 36H 70: JP NC,ESPL3 71: LD (IY),A 72: INC IY73: LD (IY),","
74: INC IY 75: LD IX,LINEA3 76: LD A,377: CALL ENVIAR_MEN
78: DJNZ ESPL3 79: 80: CALL BORRAR_PAN
81: 82: ; COPIO LOS MENSAJES A LAS LINEAS AUXILIARES PARA NO PERDER 83: ; LOS MENSAJES ORIGINALES 84: 85: LD IY,MENSAJE3 86: PUSH IY 87: ESPOP: 88: LD IX,MENSAJE1 89: LD IY,LAUX190: CALL AUX
91: 92: LD IX,MENSAJE2 93: LD IY,LAUX294: CALL AUX
95: 96: POP IY 97: LD A,(IY) 98: INC IY 99: 100: ; SE COMPARA CON LOS NUMEROS PARA SABER QUE EFECTO SE VERA 101: ; DEPENDIENDO DE LO INTRODUCIDO POR TECLADO 102: 103: CP 31H 104: JP Z,OPC1 105: CP 32H 106: JP Z,OPC2 107: CP 32H 108: JP Z,OPC3 109: CP 34H 110: JP Z,OPC4 111: CP 35H 112: JP Z,OPC5 113: 114: JP INICIO 115: OPC1: 116: 117: ; RESGUARDO LA POSICION DE LA SECUENCIA PARA SABER 118: ; EN QUE SECUENCIA SE QUEDO EL BANNER 119: PUSH IY 120: LD D,64 121: OPC1_1: 122: ; DE IZQUIERDA A DERECHA 123: LD IX,LAUX1 124: LD A,1125: CALL ENVIAR_MEN
126: 127: LD IX,LAUX2 128: LD A,2129: CALL ENVIAR_MEN
130: 131: LD IX,LAUX1132: CALL DERE
133: 134: LD IX,LAUX2135: CALL DERE
136: 137: CALL RETRASO
138: LD A,E139: CP "K"
140: JP Z,INICIO141: CP "k"
142: JP Z,INICIO143: CP "S"
144: JP Z,SALIR145: CP "s"
146: JP Z,SALIR 147: DEC D 148: JP NZ,OPC1_1 149: 150: CALL BORRAR_PAN
151: JP ESPOP 152: 153: OPC2: 154: ; RESGUARDO LA POSICION DE LA SECUENCIA 155: PUSH IY 156: ; DE DERECHA A IZQUIERDA 157: 158: LD D,64 159: OPC2_1: 160: LD IX,LAUX1 161: LD A,1162: CALL ENVIAR_MEN
163: 164: LD IX,LAUX2 165: LD A,2166: CALL ENVIAR_MEN
167: 168: LD IX,LAUX1169: CALL IZQUI
170: 171: LD IX,LAUX2172: CALL IZQUI
173: ;RETRASO174: CALL RETRASO
175: LD A,E176: CP "K"
177: JP Z,INICIO178: CP "k"
179: JP Z,INICIO180: CP "S"
181: JP Z,SALIR182: CP "s"
183: JP Z,SALIR 184: DEC D 185: JP NZ,OPC2_1 186: 187: CALL BORRAR_PAN
188: JP ESPOP 189: 190: 191: OPC3: 192: ; RESGUARDO LA POSICION DE LA SECUENCIA 193: PUSH IY194: CALL BORRAR_PAN
195: LD IX,LAUX1 196: LD A,1197: CALL ENVIAR_MEN
198: 199: LD IX,LAUX2 200: LD A,2201: CALL ENVIAR_MEN
202: 203: LD IX,LAUX3 204: LD A,3205: CALL ENVIAR_MEN
206: 207: LD IX,LAUX3 208: LD A,4209: CALL ENVIAR_MEN
210: 211: ;RETRASO212: CALL RETRASO
213: LD A,E214: CP "K"
215: JP Z,INICIO216: CP "k"
217: JP Z,INICIO218: CP "S"
219: JP Z,SALIR220: CP "s"
221: JP Z,SALIR 222: 223: CALL BORRAR_PAN
224: LD IX,LAUX3 225: LD A,1226: CALL ENVIAR_MEN
227: 228: LD IX,LAUX1 229: LD A,2230: CALL ENVIAR_MEN
231: 232: LD IX,LAUX2 233: LD A,3234: CALL ENVIAR_MEN
235: 236: LD IX,LAUX3 237: LD A,4238: CALL ENVIAR_MEN
239: 240: ;RETRASO241: CALL RETRASO
242: LD A,E243: CP "K"
244: JP Z,INICIO245: CP "k"
246: JP Z,INICIO247: CP "S"
248: JP Z,SALIR249: CP "s"
250: JP Z,SALIR 251: 252: CALL BORRAR_PAN
253: LD IX,LAUX3 254: LD A,1255: CALL ENVIAR_MEN
256: 257: LD IX,LAUX3 258: LD A,2259: CALL ENVIAR_MEN
260: 261: LD IX,LAUX1 262: LD A,3263: CALL ENVIAR_MEN
264: 265: LD IX,LAUX2 266: LD A,4267: CALL ENVIAR_MEN
268: 269: ; RETRASO270: CALL RETRASO
271: LD A,E272: CP "K"
273: JP Z,INICIO274: CP "k"
275: JP Z,INICIO276: CP "S"
277: JP Z,SALIR278: CP "s"
279: JP Z,SALIR 280: 281: CALL BORRAR_PAN
282: LD IX,LAUX2 283: LD A,1284: CALL ENVIAR_MEN
285: 286: LD IX,LAUX3 287: LD A,2288: CALL ENVIAR_MEN
289: 290: LD IX,LAUX3 291: LD A,3292: CALL ENVIAR_MEN
293: 294: LD IX,LAUX1 295: LD A,4296: CALL ENVIAR_MEN
297: 298: CALL RETRASO
299: LD A,E 300: CP "K"
301: JP Z,INICIO302: CP "k"
303: JP Z,INICIO304: CP "S"
305: JP Z,SALIR306: CP "s"
307: JP Z,SALIR 308: 309: CALL BORRAR_PAN
310: JP ESPOP 311: 312: OPC4: 313: 314: ; PARA IMPRIMIR DE ARRIBA HACIA ABAJO LO QUE SE HACE ES CAMBIAR LA 315: ; PANTALLA LINEA POR LINEA 316: ; RESGUARDO LA POSICION DE LA SECUENCIA 317: PUSH IY318: CALL BORRAR_PAN
319: LD IX,LAUX1 320: LD A,1321: CALL ENVIAR_MEN
322: 323: LD IX,LAUX2 324: LD A,2325: CALL ENVIAR_MEN
326: 327: LD IX,LAUX3 328: LD A,3329: CALL ENVIAR_MEN
330: 331: LD IX,LAUX3 332: LD A,4333: CALL ENVIAR_MEN
334: 335: ;RETRASO336: CALL RETRASO
337: LD A,E338: CP "K"
339: JP Z,INICIO340: CP "k"
341: JP Z,INICIO342: CP "S"
343: JP Z,SALIR344: CP "s"
345: JP Z,SALIR 346: 347: CALL BORRAR_PAN
348: LD IX,LAUX2 349: LD A,1350: CALL ENVIAR_MEN
351: 352: LD IX,LAUX3 353: LD A,2354: CALL ENVIAR_MEN
355: 356: LD IX,LAUX3 357: LD A,3358: CALL ENVIAR_MEN
359: 360: LD IX,LAUX1 361: LD A,4362: CALL ENVIAR_MEN
363: 364: ;RETRASO365: CALL RETRASO
366: LD A,E367: CP "K"
368: JP Z,INICIO369: CP "k"
370: JP Z,INICIO371: CP "S"
372: JP Z,SALIR373: CP "s"
374: JP Z,SALIR 375: 376: CALL BORRAR_PAN
377: LD IX,LAUX3 378: LD A,1379: CALL ENVIAR_MEN
380: 381: LD IX,LAUX3 382: LD A,2383: CALL ENVIAR_MEN
384: 385: LD IX,LAUX1 386: LD A,3387: CALL ENVIAR_MEN
388: 389: LD IX,LAUX2 390: LD A,4391: CALL ENVIAR_MEN
392: 393: ;RETRASO394: CALL RETRASO
395: LD A,E396: CP "K"
397: JP Z,INICIO398: CP "k"
399: JP Z,INICIO400: CP "S"
401: JP Z,SALIR402: CP "s"
403: JP Z,SALIR 404: 405: CALL BORRAR_PAN
406: LD IX,LAUX3 407: LD A,1408: CALL ENVIAR_MEN
409: 410: LD IX,LAUX1 411: LD A,2412: CALL ENVIAR_MEN
413: 414: LD IX,LAUX2 415: LD A,3416: CALL ENVIAR_MEN
417: 418: LD IX,LAUX3 419: LD A,4420: CALL ENVIAR_MEN
421: 422: CALL RETRASO
423: LD A,E424: CP "K"
425: JP Z,INICIO426: CP "k"
427: JP Z,INICIO428: CP "S"
429: JP Z,SALIR430: CP "s"
431: JP Z,SALIR 432: 433: CALL BORRAR_PAN
434: JP ESPOP 435: 436: ; OPCION 5, SE DESPLAZA A LA DERECHA EL MENSAJE PARA QUE SE VEA EN 437: ; FORMA DIAGONAL 438: OPC5: 439: ; RESGUARDO LA POSICION DE LA SECUENCIA 440: PUSH IY 441: 442: LD IX,LAUX1 443: LD A,1444: CALL ENVIAR_MEN
445: 446: LD IX,LAUX2 447: LD A,2 448: 449: LD B,10 450: OPC5_1: 451: DEC IX 452: DJNZ OPC5_1453: CALL ENVIAR_MEN
454: 455: ;RETRASO456: CALL RETRASO
457: LD A,E 458: 459: LD A,1 460: LD IX,LAUX3461: CALL ENVIAR_MEN
462: 463: LD IX,LAUX1 464: LD A,3 465: 466: LD B,20 467: OPC5_2: 468: DEC IX 469: DJNZ OPC5_2470: CALL ENVIAR_MEN
471: 472: ;RETRASO473: CALL RETRASO
474: LD A,E 475: 476: LD A,2 477: LD IX,LAUX3478: CALL ENVIAR_MEN
479: 480: LD IX,LAUX2 481: LD A,4 482: 483: LD B,30 484: OPC5_3: 485: DEC IX 486: DJNZ OPC5_3487: CALL ENVIAR_MEN
488: 489: ;RETRASO490: CALL RETRASO
491: LD A,E 492: 493: CALL BORRAR_PAN
494: JP ESPOP 495: 496: ; CON ESTA RUTINA SE LIMPIAN LOS MENSAJES CARGANDOLO CON 0 497: ; Y REINICIANDO TODO 498: LIMPIAR: 499: LD IY,MENSAJE1 500: LD IX,MENSAJE2 501: LD HL,LAUX3 502: LD B,64 503: LIMPIO: 504: LD (IY),0 505: LD (IX),0 506: LD (HL),20H 507: INC IX 508: INC IY 509: INC HL 510: DJNZ LIMPIO 511: RET 512: 513: LIMP_SEC: 514: LD IY,MENSAJE3 515: LD B,64 516: LI_2: 517: LD (IY),0 518: INC IY 519: DJNZ LI_2 520: RET 521: 522: ; SE UTILIZA PARA COPIAR 64 POSICIONES DE MEMORIA DESDE LA 523: ; DIRECCION APUNTADA POR IX A LA POSICION APUNTADA POR IY 524: AUX: 525: LD B,64 526: AUX1: 527: LD A,(IX) 528: LD (IY),A 529: INC IY 530: INC IX 531: DJNZ AUX1 532: RET 533: 534: ENTER: 535: LD B,1 536: RET 537: 538: ; EN IX DEBE ESTAR LA LINEA A ROTAR PARA DESPLAZAR UN CARACTER 539: ; A LA IZQUIERDA 540: IZQUI: 541: LD B,63 542: LD C,(IX) 543: LEFT: 544: LD A,(IX+1) 545: LD (IX),A 546: INC IX 547: DJNZ LEFT 548: LD (IX),C 549: RET 550: 551: ; EN IX DEBE ESTAR LA LINEA A ROTAR PARA DESPLAZAR UN CARACTER A LA 552: ; DERECHA 553: DERE: 554: LD B,63 555: LD C,(IX+63) 556: RIGHT: 557: LD A,(IX+62) 558: LD (IX+63),A 559: DEC IX 560: DJNZ RIGHT 561: LD (IX+63),C 562: RET 563: 564: SALIR: 565: RST 38H 566: 567: ; SE USA LA FUNCION DEL SISTEMA DE DESARROLLO SCAN1 LA CUAL DURA 568: ; ALREDEDOR DE 30 MSEG Y RECOGE SI SE PRESIONA UNA TECLA DURANTE 569: ; SU EJECUCION, PARA AUMENTAR LA DURACION SE DEBEN AGREGAR MAS SCAN1 570: RETRASO: 571: CALL SCAN1
572: CP 0573: CALL NZ,TVAL
574: CALL SCAN1
575: CP 0576: CALL NZ,TVAL
577: CALL SCAN1
578: CP 0579: CALL NZ,TVAL
580: CALL SCAN1
581: CP 0582: CALL NZ,TVAL
583: CALL SCAN1
584: CP 0585: CALL NZ,TVAL
586: CALL SCAN1
587: CP 0588: CALL NZ,TVAL
589: CALL SCAN1
590: CP 0591: CALL NZ,TVAL
592: CALL SCAN1
593: CP 0594: CALL NZ,TVAL
595: CALL SCAN1
596: CP 0597: CALL NZ,TVAL
598: RET 599: TVAL: 600: LD E,A 601: RET 602: 603: 604: 605: ORG 3000H606: LINEA1 DB "INTRODUCE cARACTERES DE LINEA1: "
607: MENSAJE1 DS 64 608: DB 24H609: LINEA2 DB "INTRODUCE cARACTERES DE LINEA2: "
610: MENSAJE2 DS 64 611: DB 24H612: LINEA3 DB "INTRODUCE SECUENCIA: "
613: MENSAJE3 DS 64H 614: DB 24H 615: LAUX3 DS 64 616: DB 24H 617: LAUX1 DS 64 618: DB 24H619: LAUX4 DB " "
620: DB " "
621: DB 24H 622: LAUX2 DS 64 623: DB 24H 624: TECLA DB 0 625: 626: SCAN EQU 04F1H 627: ENVIAR_MEN EQU 052BH 628: BORRAR_PAN EQU 055CH 629: SCAN1 EQU 0508H630: END
631: 632: 633: ; PARA AGREGAR MAS TIEMPO DE RETRASO AGREGAR ESTAS LINEAS TAL CUAL634: CALL SCAN1
635: CP 0636: CALL NZ,TVAL
No hay comentarios:
Publicar un comentario