ld hl,TEXTO
ld de,NAMTBL
ld bc,11
call LDIRVM
ret
TEXTO:
db "HOLA, MUNDO"
Quizás sea más sencillo, no?
From: "Flyguille" <Flyguille(_en_)arnet(_punto_)com(_punto_)ar>
Reply-To: hispamsx(_en_)yahoogroups(_punto_)com
To:
<mnbios(_en_)domeus(_punto_)es>,<hispamsx(_en_)yahoogroups(_punto_)com>,<clubmsxargentino(_en_)gruposyahoo(_punto_)com>
Subject: [hispamsx] Hello World !!!! para MNBIOS
Date: Mon, 22 Mar 2004 16:07:08 -0300
El siguiente programa es la versión "HOLA MUNDO" para MNBIOS.... que como
sabrán es un sistema multitasking y acá demostramos como se programa y
prevee este sistema.
NOTA: no se incluyeron en el código acentos para no molestar con el tema de
los códigos ASCII.
Cualquier pregunta me dicen....
org $4000
;
header:
;
.exec: dw code.exec,0 ; parte EXEC
.task: dw code.task,0 ; parte TASK
.fkey: dw code.fkey,0 ; parte FKEY
.stop: dw code.stop,0 ; parte STOP
.ftask: dw code.ftask,0 ; parte FTASK
.close: dw code.close,0 ; parte CLOSE
;
.nac:
.nac.length: equ $ - .nac
ds 28 - .nac.length," "
;
.ver: db 0
.sver: db 0
.mver: db 0
.msver: db 0
;
.mark:
.mark.length: equ $ - .mark
ds 16 - .mark.length," "
;
.prog:
.prog.length: equ $ - .prog
ds 16 - .prog.length," "
;
.nidea:
.nidea.length: equ $ - .nidea
ds 16 - .nidea.length," "
;
.ngrp:
.ngrp.length: equ $ - .ngrp
ds 16 - .ngrp.length," "
;
.nsnd:
.nsnd.length: equ $ - .nsnd
ds 16 - .nsnd.length," "
;
.date: db "DD/MM/YYYY"
.fdate: db "DD/MM/YYYY"
;
.btask: dw code.btask,0 ; parte BTASK
;
; Variables que usaremos en la aplicación.
FlagTask: db 0
Text: db "Hola mundo!!!",0
TextAgain: db "Hola mundo de nuevo!!!",0
TextWait: db "<pulse cualquier tecla para continuar o Q
para salir>",0
code:
;
.exec: LD A,18h
LD HL,text
CALL 0C260h ; funcion WR_CHRS
.JUMP2: LD A,18h
LD HL,TextWait
CALL 0C260h ; funcion WR_CHRS
.Loop: CALL 0C27Ch ; funcion INPUT$(1)
JR C,.Errored
CP "Q"
ret z ; si "Q" es presionada sale del
programa.
JP .exec
.Errored: CP 61h ; Verifica el codigo de error devuelto
JR z,.bige
xor a ; Si no es un evento mayor entonces
;
puede que sea un error del buffer del teclado.
CALL 0C2E0h ; SET_BUFFER_KEY (activa el buffer
del teclado si A=0)
Jp .Loop
.bige: LD a,(FlagTask) ; Apareció un evento mayor
CP 0FFh ; verifica si el evento mayor es del sistema
multitasking
jr nz,.Loop
; es un evento del sistema
multitasking...
; y
como el programa no tiene nada que hacer
;
simplemente devuelve rapidamente el control al
; sistema
multitasking
xor a
LD (FlagTask),a ; Esto borra la variable que acabamos
de usar.
LD IY,00FDh
LD C,01h
RST 30h ; función DRIVER
JP .exec ; Normalmente el sistema multitasking no
retorna
; el
control a este codigo nunca mas.
; Pero si
ocurre un error en la llamada al sistema
;
retornara un codigo de error....
;
como cuando el sistema multitasking
; no
tiene suficientes recursos del sistema
; Que
hacer aquí? NADA....o....
; tal vez intentar liberar recursos y
volver a llamar al sistema
; o
re ejecutar esta aplicación para que el usuario pueda
;
intentar después.
.task:
LD A,18h
LD HL,TextAgain
CALL 0C260h ; funcion WR_CHRS
JP .JUMP2
.fkey: ret ; ON KEY GOSUB sin uso
.stop: ret ; ON STOP GOSUB sin uso
.ftask: LD A,0FFh
LD (FlagTask),A ; esto setea la variable bandera que usamos cuando
el usuario
; presiona CTRL+GRPH+CODE para abrir la ventana
; multitarea o cambiar de aplicación.
ret
.close: ; Esto es llamado cuando el usuario usa
; un
comando de cierre externo de la aplicacion
; Sin
nada que hacer, la aplicacion devuelve el control.
; En realidad aca solo se esta permitido asignar un valor a una
variable,
; y que el proceso normal de la aplicacion de la misma forma que
atiende
; al cambio de aplicacion, atienda al cierre de la aplicacion
guardando datos
; y archivos que necesite salvar.
ret
.btask: ret ; Para procesos de fondo, sin uso en la version DEMO
mnbios..
[Se han eliminado los trozos de este mensaje que no contenían texto]
*HispaMSX. La mailing-list de MSX en castellano*
Para cualquier duda: hispamsx-owner(_en_)yahoogroups(_punto_)com
Web de lista: http://www.hispamsx.org
Enlaces a Yahoo! Grupos
Para visitar tu grupo en la web, accede a:
http://es.groups.yahoo.com/group/hispamsx/
Para cancelar tu suscripción en este grupo, envía
un mensaje en blanco a:
hispamsx-unsubscribe(_en_)yahoogroups(_punto_)com
El uso que hagas de Yahoo! Grupos está sujeto a
las Condiciones del servicio de Yahoo!:
http://es.docs.yahoo.com/info/utos.html
_________________________________________________________________
¿Estás pensando en cambiar de coche? Todas los modelos de serie y extras en
MSN Motor. http://motor.msn.es/researchcentre/