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,1
15: 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 ESPACIADORA
20: CALL SCAN
21: CP 20H
22: CALL Z,ENTER
23: LD (IY),A
24: INC IY
25:
26: LD IX,LINEA1
27: LD A,1
28: CALL ENVIAR_MEN
29: DJNZ ESPL1
30:
31: LD B,64
32: LD IY,MENSAJE2
33:
34: LD IX,LINEA2
35: LD A,2
36: CALL ENVIAR_MEN
37: ESPL2:
38: CALL SCAN
39: CP 20H
40: CALL Z,ENTER
41: LD (IY),A
42: INC IY
43: LD IX,LINEA2
44: LD A,2
45: CALL ENVIAR_MEN
46: DJNZ ESPL2
47:
48: LD B,64
49: LD IY,MENSAJE3
50:
51: LD IX,LINEA3
52: LD A,3
53: 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 20H
66: CALL Z,ENTER
67: CP 30H
68: JP C,ESPL3
69: CP 36H
70: JP NC,ESPL3
71: LD (IY),A
72: INC IY
73: LD (IY),","
74: INC IY
75: LD IX,LINEA3
76: LD A,3
77: 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,LAUX1
90: CALL AUX
91:
92: LD IX,MENSAJE2
93: LD IY,LAUX2
94: 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,1
125: CALL ENVIAR_MEN
126:
127: LD IX,LAUX2
128: LD A,2
129: CALL ENVIAR_MEN
130:
131: LD IX,LAUX1
132: CALL DERE
133:
134: LD IX,LAUX2
135: CALL DERE
136:
137: CALL RETRASO
138: LD A,E
139: CP "K"
140: JP Z,INICIO
141: CP "k"
142: JP Z,INICIO
143: CP "S"
144: JP Z,SALIR
145: 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,1
162: CALL ENVIAR_MEN
163:
164: LD IX,LAUX2
165: LD A,2
166: CALL ENVIAR_MEN
167:
168: LD IX,LAUX1
169: CALL IZQUI
170:
171: LD IX,LAUX2
172: CALL IZQUI
173: ;RETRASO
174: CALL RETRASO
175: LD A,E
176: CP "K"
177: JP Z,INICIO
178: CP "k"
179: JP Z,INICIO
180: CP "S"
181: JP Z,SALIR
182: 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 IY
194: CALL BORRAR_PAN
195: LD IX,LAUX1
196: LD A,1
197: CALL ENVIAR_MEN
198:
199: LD IX,LAUX2
200: LD A,2
201: CALL ENVIAR_MEN
202:
203: LD IX,LAUX3
204: LD A,3
205: CALL ENVIAR_MEN
206:
207: LD IX,LAUX3
208: LD A,4
209: CALL ENVIAR_MEN
210:
211: ;RETRASO
212: CALL RETRASO
213: LD A,E
214: CP "K"
215: JP Z,INICIO
216: CP "k"
217: JP Z,INICIO
218: CP "S"
219: JP Z,SALIR
220: CP "s"
221: JP Z,SALIR
222:
223: CALL BORRAR_PAN
224: LD IX,LAUX3
225: LD A,1
226: CALL ENVIAR_MEN
227:
228: LD IX,LAUX1
229: LD A,2
230: CALL ENVIAR_MEN
231:
232: LD IX,LAUX2
233: LD A,3
234: CALL ENVIAR_MEN
235:
236: LD IX,LAUX3
237: LD A,4
238: CALL ENVIAR_MEN
239:
240: ;RETRASO
241: CALL RETRASO
242: LD A,E
243: CP "K"
244: JP Z,INICIO
245: CP "k"
246: JP Z,INICIO
247: CP "S"
248: JP Z,SALIR
249: CP "s"
250: JP Z,SALIR
251:
252: CALL BORRAR_PAN
253: LD IX,LAUX3
254: LD A,1
255: CALL ENVIAR_MEN
256:
257: LD IX,LAUX3
258: LD A,2
259: CALL ENVIAR_MEN
260:
261: LD IX,LAUX1
262: LD A,3
263: CALL ENVIAR_MEN
264:
265: LD IX,LAUX2
266: LD A,4
267: CALL ENVIAR_MEN
268:
269: ; RETRASO
270: CALL RETRASO
271: LD A,E
272: CP "K"
273: JP Z,INICIO
274: CP "k"
275: JP Z,INICIO
276: CP "S"
277: JP Z,SALIR
278: CP "s"
279: JP Z,SALIR
280:
281: CALL BORRAR_PAN
282: LD IX,LAUX2
283: LD A,1
284: CALL ENVIAR_MEN
285:
286: LD IX,LAUX3
287: LD A,2
288: CALL ENVIAR_MEN
289:
290: LD IX,LAUX3
291: LD A,3
292: CALL ENVIAR_MEN
293:
294: LD IX,LAUX1
295: LD A,4
296: CALL ENVIAR_MEN
297:
298: CALL RETRASO
299: LD A,E
300: CP "K"
301: JP Z,INICIO
302: CP "k"
303: JP Z,INICIO
304: CP "S"
305: JP Z,SALIR
306: 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 IY
318: CALL BORRAR_PAN
319: LD IX,LAUX1
320: LD A,1
321: CALL ENVIAR_MEN
322:
323: LD IX,LAUX2
324: LD A,2
325: CALL ENVIAR_MEN
326:
327: LD IX,LAUX3
328: LD A,3
329: CALL ENVIAR_MEN
330:
331: LD IX,LAUX3
332: LD A,4
333: CALL ENVIAR_MEN
334:
335: ;RETRASO
336: CALL RETRASO
337: LD A,E
338: CP "K"
339: JP Z,INICIO
340: CP "k"
341: JP Z,INICIO
342: CP "S"
343: JP Z,SALIR
344: CP "s"
345: JP Z,SALIR
346:
347: CALL BORRAR_PAN
348: LD IX,LAUX2
349: LD A,1
350: CALL ENVIAR_MEN
351:
352: LD IX,LAUX3
353: LD A,2
354: CALL ENVIAR_MEN
355:
356: LD IX,LAUX3
357: LD A,3
358: CALL ENVIAR_MEN
359:
360: LD IX,LAUX1
361: LD A,4
362: CALL ENVIAR_MEN
363:
364: ;RETRASO
365: CALL RETRASO
366: LD A,E
367: CP "K"
368: JP Z,INICIO
369: CP "k"
370: JP Z,INICIO
371: CP "S"
372: JP Z,SALIR
373: CP "s"
374: JP Z,SALIR
375:
376: CALL BORRAR_PAN
377: LD IX,LAUX3
378: LD A,1
379: CALL ENVIAR_MEN
380:
381: LD IX,LAUX3
382: LD A,2
383: CALL ENVIAR_MEN
384:
385: LD IX,LAUX1
386: LD A,3
387: CALL ENVIAR_MEN
388:
389: LD IX,LAUX2
390: LD A,4
391: CALL ENVIAR_MEN
392:
393: ;RETRASO
394: CALL RETRASO
395: LD A,E
396: CP "K"
397: JP Z,INICIO
398: CP "k"
399: JP Z,INICIO
400: CP "S"
401: JP Z,SALIR
402: CP "s"
403: JP Z,SALIR
404:
405: CALL BORRAR_PAN
406: LD IX,LAUX3
407: LD A,1
408: CALL ENVIAR_MEN
409:
410: LD IX,LAUX1
411: LD A,2
412: CALL ENVIAR_MEN
413:
414: LD IX,LAUX2
415: LD A,3
416: CALL ENVIAR_MEN
417:
418: LD IX,LAUX3
419: LD A,4
420: CALL ENVIAR_MEN
421:
422: CALL RETRASO
423: LD A,E
424: CP "K"
425: JP Z,INICIO
426: CP "k"
427: JP Z,INICIO
428: CP "S"
429: JP Z,SALIR
430: 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,1
444: 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_1
453: CALL ENVIAR_MEN
454:
455: ;RETRASO
456: CALL RETRASO
457: LD A,E
458:
459: LD A,1
460: LD IX,LAUX3
461: 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_2
470: CALL ENVIAR_MEN
471:
472: ;RETRASO
473: CALL RETRASO
474: LD A,E
475:
476: LD A,2
477: LD IX,LAUX3
478: 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_3
487: CALL ENVIAR_MEN
488:
489: ;RETRASO
490: 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 0
573: CALL NZ,TVAL
574: CALL SCAN1
575: CP 0
576: CALL NZ,TVAL
577: CALL SCAN1
578: CP 0
579: CALL NZ,TVAL
580: CALL SCAN1
581: CP 0
582: CALL NZ,TVAL
583: CALL SCAN1
584: CP 0
585: CALL NZ,TVAL
586: CALL SCAN1
587: CP 0
588: CALL NZ,TVAL
589: CALL SCAN1
590: CP 0
591: CALL NZ,TVAL
592: CALL SCAN1
593: CP 0
594: CALL NZ,TVAL
595: CALL SCAN1
596: CP 0
597: CALL NZ,TVAL
598: RET
599: TVAL:
600: LD E,A
601: RET
602:
603:
604:
605: ORG 3000H
606: LINEA1 DB "INTRODUCE cARACTERES DE LINEA1: "
607: MENSAJE1 DS 64
608: DB 24H
609: LINEA2 DB "INTRODUCE cARACTERES DE LINEA2: "
610: MENSAJE2 DS 64
611: DB 24H
612: LINEA3 DB "INTRODUCE SECUENCIA: "
613: MENSAJE3 DS 64H
614: DB 24H
615: LAUX3 DS 64
616: DB 24H
617: LAUX1 DS 64
618: DB 24H
619: 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 0508H
630: END
631:
632:
633: ; PARA AGREGAR MAS TIEMPO DE RETRASO AGREGAR ESTAS LINEAS TAL CUAL
634: CALL SCAN1
635: CP 0
636: CALL NZ,TVAL
No hay comentarios:
Publicar un comentario