|
pablor
Visitante
|
 |
« : Febrero 23, 2007, 09:31:23 » |
|
Hola a todos. Desde hace mas de un a?o que estoy desarrollando un lenguaje de programacion, basado en FORTH y por ahora orientado a los VideoJuegos. se llama R4 y lo pueden ver en http://www.reda4.orgAhora estoy terminando el compilador hecho en el mismo lenguaje (ahora funciona sobre un interprete) y la coneccion con el SO son 11 rutinas en asm muy especificas y claras (por ejemplo obtener la hora, obtener la direccion de la pantalla, etc) El primer SO que le hice la interface es a WIN porque estoy desarrollando en una maquina con win, pero ya empece a hacer la interface con un SO llamado DexOS http://www.dex4u.comLa interface con el SO son esas 11 rutinas en assembler, en win son 10kb (400 lineas) en FASM Si alguien quiere que R4 compile para algun SO propio, no tiene mas que escribirme. Los programas que funcionan actualmente en el interprete quedan compilados asi que la prueba son los mismos juegos y utilidades que obtienen de la pagina. espero que les guste. Pablo
|
|
|
|
|
En línea
|
|
|
|
|
HQH
|
 |
« Respuesta #1 : Febrero 25, 2007, 11:38:36 » |
|
Muy buena la idea, seria buena idea portarlo cuando tengamos parte del SO en claro o para alguno de los ya existentes de amigos (Toro, OctaviOS).
Ademas, pongo un enlace a la seccion de creacion de videojuegos, ya que R4 me parece un lenguaje interesante.
Un saludo.
|
|
|
|
|
En línea
|
|
|
|
|
JMA_SP
|
 |
« Respuesta #2 : Febrero 25, 2007, 01:20:10 » |
|
Primero de todo bienvenido y gracias por postear aqu? tu compilador. Estuve leyendolo y la primera ocurrencia fue la de trasladar el post directamenta a la secci?n de juegos pero no tengo acceso. En cuanto al resto es cuesti?n de que lo comentes a Octavio o bien a Matias con sus respectivos sistemas operativos. En cuanto a octavio el tiene su propio OCTASM todo para ensamblador y por parte de Mat?as en sus sistema TORO lo basa en Freepascal (utilizando su run time library). No coment? nada porque de FORTH no tengo ni la m?s leve idea, por tanto poco puedo aportar, pero la sola experiencia en crear un compilador / int?rprete les puede venir muy bien a ambos. En lo poco que mir? de los dos enlaces est? bastante interesante, he a?adido DexOS al listado de sistemas operativos funcionales y curiosamente observ? que uno de los desarrolladores era bubach con nick similar al programador que cedi? el espacio para albergar el sistema de Octavio: http://octaos.joox.net , no se si ser? el mismo... Lo dicho un saludo y bienvenido.
|
|
|
|
|
En línea
|
|
|
|
|
pablor
Visitante
|
 |
« Respuesta #3 : Febrero 25, 2007, 02:24:14 » |
|
Bueno, gracias a los dos por las respuesta...
Realice algunas prueba con el OS de octavio y no pude bootear, con Solar tambien me paso lo mismo... El SO que mejor se ha comportado es DexOs, me imagino que sera algun detalle ya que los SO son bastante chicos, en fin. Ahora estoy trabado porque Dex captura el teclado y hace algunas modificaciones al scancode y yo lo necesito mas basico, curioso.
Me interesa la utilizacion de la memoria en FLAT o tambien llamado modo UNREAL (sin segmentacion ni paginacion), y sin proteccion de ningun tipo, tengo documentacion y ejemplos si alguien los quiere, cuanto mas chico y con menos servicios mejor.
Creo que le puede servir a alguien que quiera hacer un SO disponer de un lenguaje con solo escribir un peque?o codigo, ya logre hacer un disco que boteara con R4 pero por ahora no funciona por el rollo del teclado.
saludos !
|
|
|
|
|
En línea
|
|
|
|
|
JMA_SP
|
 |
« Respuesta #4 : Febrero 25, 2007, 03:04:29 » |
|
Si claro, el problema con la versi?n de Octavio es que actualmente la imagen ISO parece no arrancar, tal como el indica hay dos posibilidades para que arranque pero no he tenido muchas ganas de ponerme con el tema. Desc?rgate la versi?n en disquete que si va mejor, en comparaci?n con DexOS yo creo que te puede ser bastante ?til. Por otro lado l?stima que no te diese por el compilador FreePascal, tiene mucho potencial y su ayuda para con Mat?as podr?a resultar en un sistema bastante afianzado. Respecto a DexOS me descargu? la versi?n 0.0.1 mediante el ISO y ciertamente arranca, pero no me funcionaba ni la opci?n settings, networking y en el modo l?nea de mandatos se me colgaba al poco rato en cuanto tecleaba 4 cosas, sobre todo coincidiendo con la ?ltima l?nea en pantalla. Supongo que utiliza FAT12 y los mandatos son similares al DOS, incluyendo el famoso PROMT del sistema A:\> En respuesta a la simplicidad de un sistema en modo plano sin segmentaci?n o al menos un solo segmento a?adiendole un desplazamiento u offset de 4 Gbytes es interesante de hecho he leido que se hicieron juegos para este modo. Ser?a cuesti?n de ver como funcionan en el las interrupciones, cuales no dan problemas que por ejemplo hagan salir de dicho modo, pero a?n as? la cuesti?n es que no admitir?a la multitarea, aunque no es indispensable. He estado leyendo un poco y los pasos a seguir no son demasiados, entrar en modo protegido, cambiar algunos valores y retornar (habilitar la l?nea A20). Creo que as? tendriamos acceso a toda la memoria de video en modo plano (FLAT)  y la velocidad debe ser bastante buena. Pr?cticamente en cuanto se tuviese implementada la funci?n poner pixel en modo de video, las dem?s primitivas es ya solo cuestion de tiempo. Lo que m?s interesante veo yo ahora mismo es la opci?n de un compilador de generar su c?digo equivalente en ensamblador o de ver los nombres p?blicos de las funciones. Tanto para C como para FreePascal la ?ltima opci?n la tiene, la de generar ficheros en ensamblador es ya un poco m?s dif?cil, freepascal si lo permite, porque enlazar con un fichero objeto es otra posibilidad pero prefiero el ensamblador en fichero listado. Un saludo.
|
|
|
|
« Última modificación: Febrero 25, 2007, 03:10:44 por JMA_SP »
|
En línea
|
|
|
|
|
pablor
Visitante
|
 |
« Respuesta #5 : Febrero 25, 2007, 07:49:39 » |
|
Voy a probar nuevamente la version de Octavio, yo lo habia hecho con diskette y me tiraba un error.. En Dex inclusive ya compile programas (los podes ver en los foros) Yo antes programaba en Pascal, C etc. asi que no tengo problemas con codigos en estos lenguajes. La multitarea se implementa de forma cooperativa con el lenguaje mismo, al igual que los drivers de cualquier cosa, el SO ideal para mi lenguaje es bien chico y pelado. Las primitivas ( y no tanto ) para graficar ya las tengo hechas, lo unico que necesito es setear el modo grafico (en 32bits de color), saber cual es el comienzo de la Memoria de Video y realizar una copia de memoria a memoria de video, estas rutinas forman parte del conjunto de 11 que necesito para hacer andar el programa compilado. Lo que genera mi compilador es el codigo en FASM, mas adelante compilara en memoria directo, y este se ensambla para cada SO. Mi proyecto es de codigo abierto asi que no tengo problema en subir cosas, ahora mismo tengo funcionando solo en win, si quieren posteo algo para que lo vean funcionando y vean el codigo. Me alegra encontrar gente que sabe como ustedes
|
|
|
|
|
En línea
|
|
|
|
octavio
Novato

Mensajes: 37
|
 |
« Respuesta #6 : Febrero 27, 2007, 12:36:47 » |
|
> y me tiraba un error.. podrias dar mas detalles. En principio mi sistema no usa ejecutables ,pero si puedes compilar a formato elf relocatable y describirme las funciones que require, yo mismo puedo portarlo. Aunque no creo que nadie lo use, yo programo en Octasm y a ti no te funciona mi sistema operativo. Pero tengo curiosidad por ver como es el lenguaje Forth.
|
|
|
|
|
En línea
|
|
|
|
|
pablor
Visitante
|
 |
« Respuesta #7 : Febrero 27, 2007, 02:56:43 » |
|
Hola Octavio, me parecio buenisimo tu sistema de compilar on the fly..curiosamente ahora estoy generando codigo para FASM y podria tirar el codigo con tu sintaxis (muy buena) seria muy facil. lo probe otra vez y me una unos fd_error... yo pense que se trababa pero esperando un poco comenzo el sistema, deben ser los discos de $%$$ estos...asi que funciona OK !! Si te interesa conocer un poco de FORTH te recomiendo el libro Thinking Forth ( http://thinking-forth.sourceforge.net/ ), mi lenguaje desciende de ColorForth ( http://www.colorforth.com ). Aqui envio un paquete con la ultima version..para que veas como es la cosa El programa compilado es el de dibujo vectorial, podes ver el codigo en el paquete de mi pagina, el compilador genera cod.asm y dat.asm y la inteface es r4win.asm (para win) y r4dex.asm (para Dex), los .bat compilan el ejecutable, las funciones estan casi completas en win. bueno, cualquier cosa escribime, te felicito por tu SO !! Pablo
|
|
|
|
En línea
|
|
|
|
|
Z0rr0
Visitante
|
 |
« Respuesta #8 : Febrero 28, 2007, 03:59:26 » |
|
Hola Pablo con respecto a TORO 1.1.3 , se implementa como cualquier sistema operativo los servicios del kernel a traves de las llamadas al sistema o trampas , se implementan las llamadas Open,Write,Read,Close , etc . Los puedes ver en la RTL que he hecho para FPC sobre TORO , la portacion de tu compilador seria bastante facil. Lo unico que Toro ejecuta solo archivos en formato COFF32. Un saludo Matias Vara.
|
|
|
|
|
En línea
|
|
|
|
octavio
Novato

Mensajes: 37
|
 |
« Respuesta #9 : Marzo 04, 2007, 09:47:21 » |
|
Hola Octavio, me parecio buenisimo tu sistema de compilar on the fly..curiosamente ahora estoy generando codigo para FASM y podria tirar el codigo con tu sintaxis (muy buena) seria muy facil. lo probe otra vez y me una unos fd_error... yo pense que se trababa pero esperando un poco comenzo el sistema, deben ser los discos de $%$$ estos...asi que funciona OK !! Si te interesa conocer un poco de FORTH te recomiendo el libro Thinking Forth ( http://thinking-forth.sourceforge.net/ ), mi lenguaje desciende de ColorForth ( http://www.colorforth.com ). Aqui envio un paquete con la ultima version..para que veas como es la cosa El programa compilado es el de dibujo vectorial, podes ver el codigo en el paquete de mi pagina, el compilador genera cod.asm y dat.asm y la inteface es r4win.asm (para win) y r4dex.asm (para Dex), los .bat compilan el ejecutable, las funciones estan casi completas en win. bueno, cualquier cosa escribime, te felicito por tu SO !! Pablo No hay nigun archivo que explique lo que hace el programa ni como utilizarlo. Es curioso que hay un archivo que usa el codigo 13 como cambio de linea, lo he tenido que cambiar por el 10. Despues he podido compilar (con mi sistema operativo) la version para Dex pero no la de windows porque falta el archivo 'macros.inc'. Genera 1.3MB de codigo ,supongo que por el uso de memoria estatica para el bufer de video,creo que deberias declararlo como virtual. Ahora creo que solo falta cambiar el archivo dex.asm para que funcione en mi sistema, correcto? ?Y el codigo del compilador? ?cuando dices que lo has portado a dex, te refieres a la demo o al compilador? Bueno, ya hice una prueba en mi sistema operativo, se abre una ventanita y sale el mismo dibujo que en windows ,pero eso es todo. Me falta informacion sobre el interface los codigos de sysevent etc... He visto que en r4dex.asm muchas rutinas solo tienen un 'ret' es porque el port esta incompleto, ?no? Aunque mi sistema por ser multitarea se parece mas a windows que a dex4u no he mirado el codigo para windows porque tampoco conozco las apis de windows.
|
|
|
|
« Última modificación: Marzo 04, 2007, 11:32:08 por octavio »
|
En línea
|
|
|
|
|
pablor
Visitante
|
 |
« Respuesta #10 : Marzo 04, 2007, 03:10:43 » |
|
Bueno, el codigo compilado es r4dibujo, es un programa para dibujar graficos vectoriales multicolores, yo no me di cuenta, pero utiliza los archivos, ahora subo uno que utiliza solo graficos, mas simple, xe.txt es el fuente en R4 Como tuve que borrar cosas para llegar al limite maximo de archivos de este foro, se ve que borre de mas.. Lo del cod. 13, acordate que yo estoy trabajando en win. Que raro que genere 1.3 MB de codigo, en win y dex genera 113kb, quizas cambiaste el orden de declaracion, fijate que tube cuidado en que estas declaraciones quedaran al final, para que reserve la memoria cuando carga el archivo y no antes. El compilador esta escrito en R4, si queres te lo envio, mi plan es publicar una version cuando tenga algunas cosas mas y este un poco mas pulido el ambiente. A ver si esto aclara el panorama... lo que podes bajarte de mi pagina es un interprete que toma el codigo R4, por ejemplo xe.txt y lo ejecuta, ahora tengo un compilado que toma el codigo xe.txt y genera dos archivos, cod.asm y dat.asm, estos dos archivos utilizan llamadas a una inteface, no al sistema operativo, por lo que es posible general el ASM y, dependiendo de la inteface, compilar para varios SO. La inteface para win es R4win.asm, para Dex es R4dex.asm (los ret estan porque esta incompleta), quizas terminemos teniedo un R4octa.asm..  Vo a hacer referencia a r4win.asm porque esta mas completo, no importan las llamadas al win.. Los eventos funcionan asi: UPDATE actualiza los eventos...teclado y mouse por ahora y luego salta a un evento si ocurre, estos eventos son definidos en el programa. teclado: si hay un scancode en la entrada, tanto apretar como soltar la tecla (scancodes or $80) en SYSKEY guardo el scancode and $7f (no guarda si es soltando o apretando) y en SYSEVENT cargo la direccion que se encuentra en SYSKEYM+scancode*4 (lineas 384-401) mouse: identifica 3 eventos, apretar cualquier boton, mover el raton (con cualquier boton apretado) y soltar cualquier boton fijate que tuve que hacer algunas comprobaciones ya que los eventos de win no son exactamente estos. (lineas 359-383) en cada uno de los tres eventos guardo la posicion del mouse SYSXYM (parte alta Y parte baja X) SYSBM boton/s apretados y cargo SYSEVENT con lo que tiene SYSMM,SYSME,SYSMS (Move,End y Start) cuando termina de comprobar esto se fija si SYSEVENT tiene 0, si es asi termina, sino salto a esta direccion (lineas 142-149) Espero haber sido claro.. No dudes en escribirme me muero de ganas de utilizar R4 con OctaOs !!! Saludos.. Pablo
|
|
|
|
En línea
|
|
|
|
octavio
Novato

Mensajes: 37
|
 |
« Respuesta #11 : Marzo 04, 2007, 04:58:05 » |
|
Bueno, el codigo compilado es r4dibujo, es un programa para dibujar graficos vectoriales multicolores, yo no me di cuenta, pero utiliza los archivos, ahora subo uno que utiliza solo graficos, mas simple, xe.txt es el fuente en R4 Como tuve que borrar cosas para llegar al limite maximo de archivos de este foro, se ve que borre de mas.. Lo del cod. 13, acordate que yo estoy trabajando en win. Que raro que genere 1.3 MB de codigo, en win y dex genera 113kb, quizas cambiaste el orden de declaracion, fijate que tube cuidado en que estas declaraciones quedaran al final, para que reserve la memoria cuando carga el archivo y no antes. El compilador esta escrito en R4, si queres te lo envio, mi plan es publicar una version cuando tenga algunas cosas mas y este un poco mas pulido el ambiente. A ver si esto aclara el panorama... lo que podes bajarte de mi pagina es un interprete que toma el codigo R4, por ejemplo xe.txt y lo ejecuta, ahora tengo un compilado que toma el codigo xe.txt y genera dos archivos, cod.asm y dat.asm, estos dos archivos utilizan llamadas a una inteface, no al sistema operativo, por lo que es posible general el ASM y, dependiendo de la inteface, compilar para varios SO. La inteface para win es R4win.asm, para Dex es R4dex.asm (los ret estan porque esta incompleta), quizas terminemos teniedo un R4octa.asm..  Vo a hacer referencia a r4win.asm porque esta mas completo, no importan las llamadas al win.. Los eventos funcionan asi: UPDATE actualiza los eventos...teclado y mouse por ahora y luego salta a un evento si ocurre, estos eventos son definidos en el programa. teclado: si hay un scancode en la entrada, tanto apretar como soltar la tecla (scancodes or $80) en SYSKEY guardo el scancode and $7f (no guarda si es soltando o apretando) y en SYSEVENT cargo la direccion que se encuentra en SYSKEYM+scancode*4 (lineas 384-401) mouse: identifica 3 eventos, apretar cualquier boton, mover el raton (con cualquier boton apretado) y soltar cualquier boton fijate que tuve que hacer algunas comprobaciones ya que los eventos de win no son exactamente estos. (lineas 359-383) en cada uno de los tres eventos guardo la posicion del mouse SYSXYM (parte alta Y parte baja X) SYSBM boton/s apretados y cargo SYSEVENT con lo que tiene SYSMM,SYSME,SYSMS (Move,End y Start) cuando termina de comprobar esto se fija si SYSEVENT tiene 0, si es asi termina, sino salto a esta direccion (lineas 142-149) Espero haber sido claro.. No dudes en escribirme me muero de ganas de utilizar R4 con OctaOs !!! Saludos.. Pablo Ocupa 1.3MB al compilar en memoria pero solo 110KB al compilar en un archivo. Si he entendido bien sysevent es un puntero a funcion luego voy a probarlo. respecto a los codigos del teclado, parece que usas directamente los codigos del teclado, esto puede crear confusion al usar teclados en otros idiomas ,u otro tipo de hardware. por que no usas los codigos ya traducidos como hacen todos los programas? En windows he conseguido hacer algun dibujito pero estaria bien que escribieses un peque?o manual. respecto al cambio de linea, dos y windows usan los codigos 13,10 y linux solo 10 mis programas admiten las dos opciones pero no el codigo 13 solo. no conozco ningun otro programa que use solo el codigo 13 y el archvo cod.asm no se ve bien con el notepad de windows.
|
|
|
|
« Última modificación: Marzo 04, 2007, 05:12:56 por octavio »
|
En línea
|
|
|
|
|
pablor
Visitante
|
 |
« Respuesta #12 : Marzo 04, 2007, 05:47:59 » |
|
exacto sysevent es la direccion del evento uso el scancode directo, el mismo lenguaje hace la conversion a ascii, ya esta previsto. Perdon por la poca documentacion... todo esta comenzando y estoy yo solo en esto ( a vos te habra pasado tambien !! ) ok, no me habia dado cuenta del 13.. uso NOTEPAD2.. muy recomendable.. maneja esto bien, lo cambio por 13,10 en la siguiente
por favor cuando tengas algo para probar me gustaria verlo..
|
|
|
|
|
En línea
|
|
|
|
octavio
Novato

Mensajes: 37
|
 |
« Respuesta #13 : Marzo 05, 2007, 12:17:19 » |
|
exacto sysevent es la direccion del evento uso el scancode directo, el mismo lenguaje hace la conversion a ascii, ya esta previsto. Perdon por la poca documentacion... todo esta comenzando y estoy yo solo en esto ( a vos te habra pasado tambien !! ) ok, no me habia dado cuenta del 13.. uso NOTEPAD2.. muy recomendable.. maneja esto bien, lo cambio por 13,10 en la siguiente
por favor cuando tengas algo para probar me gustaria verlo.. Lo que yo pensaba que eran punteros a funciones esta puesto a zero, asi que sigo igual. te envio el archivo con lo que tengo hasta ahora , a ver si tu ves lo que falta. Ya sabras que mi sistema no usa ejecutables , para ejecutarlo selecciona el archivo usando fview y pulsa -> o pulsa f3 para editar y luego f5. de momento el programa abre la ventanita imprime algo y se termina pulsando la tecla escape, eso es todo. Lo del scancode directo no me gusta,por que tendria que a?adir nuevas funciones en exclusiva para tu programa, aparte de que impide el uso de herramientas de teclado (cuando las haya) y otros problemas. no podrias cambiarlo? Lo de obtener el directorio actual no es problema en octasm, pero con fasm tendre que a?adir algo de codigo. Hasta luego. nota: entre semana tengo poco tiempo para el ordenador y menos para internet no consigo poner el archivo adjunto, asi que te lo copio aqui ;LANG FASM include '\\RD\FASM.INC'
XRES equ 640 YRES equ 480 VMODO equ $4112 ;mov esi,tmp_path ;call cdfile ;mov [current_dir],ebx pcall gui.new.t3,XRES,YRES,title call getmxy1 pcall wait_ms1,40 ;---- Inicio R4 mov [NIVEL0],esp call SYSUPDATE mov esi,pila xor eax,eax jmp inicio
title: db 12,'Fasm example' msg1: db " Vesa/Mouse Error",13 db " Press any key to exit. ",13,0 ;.................compilado..................... include 'cod.asm' ;.................compilado.....................
;=============================================== SYSEND: mov esp,[NIVEL0] ; nivel de llamada 0 ret ; Return control to DexOS
;=============================================== SYSUPDATE: pusha mov [SYSEVENT],0 call getd jnc .keyb call getmxy2 jnc .mouse pcall wait_ms2,40 jnc .tick call get_redraw jnc .redraw call del_msg popa ret .redraw: call SYSREDRAW popa ret .tick: inc [last_tick] popa ret .keyb: ;jmp SYSEND cmp eax,keyb.esc je SYSEND and eax,7fh mov [SYSKEY],eax mov eax,[SYSKEYM+eax*4] mov [SYSEVENT],eax popa ret .mouse: mov [SYSBM],ebx shl edx,16 or eax,16 mov [SYSXYM],eax mov eax,[SYSMM] test ebx,ebx jz .l1 mov eax,[SYSMS] .l1: mov [SYSEVENT],eax popa ret
;=============================================== SYSRUN:; ( "nombre" -- ) ret
;=============================================== SYSREDRAW:; BuffToScreen32: pusha mov al,bmp32_write call setvideofuncion mov dword[bmp],SYSFRAME mov eax,0 mov ebx,0 mov ecx,XRES mov edx,YRES call rectangulo popa ret
;=============================================== SYSIFILL:; ( v cnt src -- ) push edi mov edi,eax mov ecx,[esi] mov eax,[esi+4] cld rep stosd mov eax,[esi+8] lea esi,[esi+12] pop edi ret
;=============================================== SYSMSEC: ret
;=============================================== SYSTIME: int 1 lea esi,[esi-12] mov [esi+8],eax cli mov al,4 ; RTC 04h out 70h,al in al,71h ; read hour call Bcd2Bin mov [esi+4],eax; NOS-1 mov al,2 ; RTC 02h out 70h,al in al,71h ; read minute call Bcd2Bin mov [esi],eax; NOS xor al,al ; RTC 00h out 70h,al in al,71h ; read second call Bcd2Bin sti ret
;=============================================== SYSDATE: int 1 lea esi,[esi-12] mov [esi+8],eax cli xor eax,eax mov al,9 ; RTC 09h out 70h,al in al,71h ; read year call Bcd2Bin mov [esi+4],eax; NOS-1 mov al,8 ; RTC 08h out 70h,al in al,71h ; read month call Bcd2Bin mov [esi],eax ; NOS mov al,7 ; RTC 07h out 70h,al in al,71h ; read day call Bcd2Bin ;TOS sti ret
Bcd2Bin:; ebx trash xor eax,eax mov bl,0x0a mov bh,al shr al,4 mul bl and bh,0x0f add al,bh ret
;=============================================== SYSDIR:; ( "path" -- ) ret pusha mov ebx,[current_dir] lea esi,[eax+1] xor eax,eax call cdfile jc SYSEND mov [current_dir],ebx popa ret
copy_path: pusha mov edi,tmp_path+1 mov ecx,33 .l1: lodsb stosb cmp al,20h jc .l2 loop .l1 jmp SYSEND;path too long .l2: popa ret
tmp_path: db '\\D0\WINDOWS\OCTA\PRUEBAS\CODIGO ' current_dir dd 0 ;=============================================== SYSFILE:; ( nro -- "name" ) ret
;=============================================== SYSLOAD:; ( 'from "filename" -- 'to ) ret int 1 pusha ;eax->file name mov esi,eax call copy_path mov ebx,[current_dir] mov eax,80h mov esi,tmp_path call open test eax,eax jz SYSEND or ecx,-1 call read ;edi=bufer call close popa ret
;=============================================== SYSSAVE:; ( 'from cnt "filename" -- ) ;|WriteCommand rd 1 ; 43.Writes a file to floppy, ;ESI points to name of file to make, ;EDI = place to load file from, ;EAX = size of file to load in bytes, ;set's CF to 1 on error, error code in AH, ;sucsess EBX = number of sectors loaded, ECX = file size in bytes. ret
align 4
last_tick dd 0
NIVEL0 dd 0 ; pila de codigo
SYSEVENT dd 0 SYSXYM dd 0 SYSBM dd 0 SYSKEY dd 0 SYSMS dd 0 SYSMM dd 0 SYSME dd 0
SYSBPP dd 32 SYSW dd XRES SYSH dd YRES SYSVSIZE dd XRES*YRES
include 'dat.asm'
align 4
SYSKEYM rd 256 ppila rd 1024 pila rd 1024 SYSFRAME rd XRES*YRES FREE_MEM rd 1024*4; 4M(32bits) 16MB
|
|
|
|
« Última modificación: Marzo 05, 2007, 12:26:03 por octavio »
|
En línea
|
|
|
|
|
pablor
Visitante
|
 |
« Respuesta #14 : Marzo 06, 2007, 12:09:25 » |
|
Ok, Octavio, vamos tranquilos...
Los punteros estan a 0 cuando no hacen nada, o sea, siempre compruebo que no sea 0 antes de saltar.
Con respecto al teclado, es una lastima que no lo manejes de manera directa, yo ya recopile como hacerlo con las in y out, pensaba reemplazar la interrupcion de Dex con una propia para poder usarlo, si leiste y viste el codigo del ColorForth te habras dado cuenta hasta que grado de independencia del SO es posible llegar, mi idea es desactivar las interrupciones tambien.. cuando funcione todo OK
Voy a ver si hago alguna prueba con OctaOs, aunque yo tambien estoy bastante ocupado con el laburo y las clases (empiezo a ense?ar R4 la semana que viene).
Lo del directorio no te preocupes mucho, con que funcione la interaccion alcanza por ahora. Tambien tengo planes al respecto.
Gracias por tu cooperacion, me gustaria saber si viste algo de forth y si tenes alguna duda (del forth o de mi lenguaje) no dudes en preguntar.
|
|
|
|
|
En línea
|
|
|
|
|