Vistas de página en total

sábado, 8 de febrero de 2014

EMULADOR 8051 (10/12) (RECIVE)

      Siguiendo el formato del blog, vamos a seguir subiendo de nivel en la estructura del programa del emulador.
      Apoyándonos en las funciones que ya he puesto, hoy declaro la función "Recive", que permitirá recoger el programa de memoria del emulador y guardarlo en el disco duro en un fichero.
    Como nombre del fichero usará una variable externa que será declarada y modificada por el entorno hombre máquina principal, el "main" del programa.
    Por lo tanto este procedimiento simplemente intenta abrir el fichero. Si se produce un error, abre una ventana emergente y muestra el error. Si todo va bien, lee la memoria hasta la dirección de fin de programa y lo guarda en el fichero.

     Como se ve la función es muy sencilla de entender gracias a que está apoyada en todas las librerías ya implementadas. Incluidas las de gestión de ventanas.




RECIVE.ASM


; Copyright (C) 2013  José Ángel Moneo Fernández

;    This program is free software: you can redistribute it and/or modify
;    it under the terms of the GNU General Public License as published by
;    the Free Software Foundation, either version 3 of the License, or
;   (at your option) any later version.

;    This program is distributed in the hope that it will be useful,
;    but WITHOUT ANY WARRANTY; without even the implied warranty of
;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;    GNU General Public License for more details.

;    You should have received a copy of the GNU General Public License
;    along with this program.  If not, see <http://www.gnu.org/licenses/

include main.mac
include stdio.mac
include 48iocent.mac
include mouse.mac
include io.mac
include window.mac
INCLUDE 8051.MAC

        public reciv

.model compact,pascal


.data
        extrn file:byte
        extrn m_Ventana:byte
        extrn dir_fin:word
hand1 dw 0
nada db 0
err_ab db "No se puede Abrir Fichero",0
dato db 0


.code
        extrn lee:near
reciv proc near 
 abrir:
        open file,_W,hand1
        jnc bueno
        creat file,_Archivo,hand1
        jnc bueno
        getwindow  m_ventana,10,10,12,37
        window 10,10,12,37,nada
        gotoxy 11,11
        printf err_ab
        getch al
        putwindow m_ventana,10,10,12,37
        ret
bueno:

        mov dx,0
otro:
        call lee
        mov byte ptr dato,al
        write hand1,1,dato               ;escrive dato
        cmp dx,dir_fin
        jz fin
        inc dx
        jmp otro
fin:
        cmp hand1,0
        jz no_cerrar
        close hand1
no_cerrar:
fin_fin:
       ret

reciv endp

No hay comentarios:

Publicar un comentario

Si tienes algún comentario, duda o sugerencia, o si quieres aportar algún código creado a partir de las librerías expuestas aquí, por favor, indícamelo.