Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - phreda

#1
ASM / Graficos en ASM
Septiembre 11, 2019, 04:13:41 PM
Buenas.

Tengo un lenguaje de programación que no utiliza la consola sino que levanta una ventana en formato grafico y dibuja en este espacio como un framebuffer, cuando compilo a asm necesito un "framework" o una serie de rutinas básicas para interactuar con esta forma de trabajar.

Utilizo estas rutinas para enseñar asm ya que el uso de un determinado API del SO es una complicación que tiene que ver con el SO y no con ASM que es lo que pretendo enseñar. Ademas, usando esta aproximación podria (aunque no lo hice) cambiar de SO usando otro conjunto de rutinas.

La interface es muy simple:

Variables:

Código: php
XRES ; resolucion horizontal (cte en ventana fija, variable en fullscreen)
YRES ; resolucion vertical (cte en ventana fija, variable en fullscreen)
SYSFRAME rd XRES*YRES ; espacio de memoria donde escribo en el buffer
SYSXYM dd 0 ; X e Y del puntero
SYSBM dd 0 ; estado de los botones del puntero
SYSKEY dd 0 ; tecla presionada
FREE_MEM dd 0 ; inicio de memoria libre


Funciones:

Código: php
SYSUPDATE: ; ( -- ) ; actualiza eventos y variables del sistema, 
SYSEND: ; ( -- ) ; fin del programa
SYSREDRAW: ; ( -- ) ; copia a la ventana el buffer de pixels
SYSMSEC: ;  ( -- msec ) ; retorna los milisegundos del sistema
SYSTIME: ;  ( -- s m h ) ; retorna hora,minutos y segundos
SYSDATE: ;  ( -- y m d ) ; retorna dia, mes y año

SYSLOAD: ; ( 'from "filename" -- 'to ) ; carga archivo en memoria
SYSSAVE: ; ( 'from cnt "filename" -- ) ; graba memoria en archivo
SYSAPPEND: ; ( 'from cnt "filename" -- ) ; agrega memoria en archivo

SYSFFIRST: ; ( "path" -- fdd ) ; lista Carpetas
SYSFNEXT: ; ( -- fdd/0) ; recorre carpetas


Aunque no es posible hacer todo con estas llamadas la idea es mantener al mínimo la conexion con el SO, con un poco de cuidado es hasta posible generar un Booteable con esta funcionalidad
A partir de este molde (o framework) se incluye code.asm y data.asm con las definiciones de codigo y datos generados por el compilador, aunque es posible escribir directamente.

por ejemplo, dibujar pixels con el mouse seria algo asi

Código: php

dibujo:
        call SYSCLS
loop2:
        mov eax, [SYSXYM]
        mov ebx,eax
        shr ebx,16
        and eax,$ffff  ; eax = X  ebx =Y

        imul ebx,ebx,XRES
        add eax,ebx
        lea edi,[SYSFRAME+eax*4]
        mov dword [edi],$ffffff   ; color blanco

        call SYSREDRAW  ; pone en pantalla
        call SYSUPDATE ; actualiza
        cmp [SYSKEY],1  ; bucle mientras no se toca escape
        jne loop2
        ret


No veo como subir archivos, dejo los links
Framework en 32 bits para window en ventana
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Framework en 32 bits para window en fullscreen
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Hace poco termine el framework para 64bits pero en algunas maquinas no anda y no se porque, si alguno quiere probar si lo puede hacer andar y comentarme, lo agradezco.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

la forma de ensamblar es con FASM, sin instalar nada, solamente descomprimir en carpeta, poner estos tres archivos y arrastrar f4asm64.asm a FASMW y RUN... funciona? en mi maquina si, en unas maquinas de la facu NO....

bien, acepto quejas, dudas, opiniones, criticas, sospechas, etc.

Saludos

#2
Presentaciones y cumpleaños / Presentacion
Septiembre 09, 2019, 10:51:26 PM
Hola, comunidad!

buscando info para utilizar un dll de forma dinamica, encontre este foro que parece bien activo, asi que me inscribo!!

Soy profe de ASM, arduino y mi especialidad es el FORTH (abra algun coder aqui??), programo en la mayoria de los lenguajes viejos(como yo:(, tengo muchas cosas hechas en graficos pero sobre cpu nada de gpu.

tengo un lenguaje de programacion con mas de 10 años de desarrollo que por supuesto puse en la firma, pero aqui les copio el link
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Espero ayudar y poner alguna cuestion cada tanto..
Saludos