creación binario

Programando el Amstrad en Ensamblador.
Reglas del Foro
Debido a que hay varios temas pidiendo ayuda para programar en ensamblador máquinas distintas al Amstrad CPC, con micro distinto al Z80 y que incluso dependen del sistema operativo, nos vemos en la necesidad de poner por escrito que estos posts son bienvenidos pero que no es el lugar adecuado ya que por estos lares nos dedicamos más al ensamblador del Z80, un microprocesador de 8 bits que tuvo su gran auge en ordenadores y consolas de los años 80.

De todas formas, esto no quita que alguien que sepa del asunto pueda postear alguna respuesta pero es más fácil encontrar foros dedicados a programar en ensamblador en Windows o MS-DOS que ayudarán más que nosotros:
http://www.lawebdelprogramador.com/news ... nsamblador
Avatar de Usuario
Fran123
Me voy lanzando
Me voy lanzando
Mensajes: 74
Registrado: Lun 24 Feb , 2020 2:44 pm

creación binario

Mensajepor Fran123 » Mar 25 Feb , 2020 6:01 pm

Hola

Tengo un código fuente del "hola mundo" (adjunto el código). Lo compilo con el winape y luego en la ventana del amstrad lo ejecuto con call &4200. Todo bien.
Luego lo grabo con save"holamundo",b,&4200,(&19+1) (empieza en &4200 y termina en &4219) y al ejecutarlo con run"holamundo.bin" el ordenador se resetea.
Si antes de ejecutarlo desde disco escribo memory &41ff, también se resetea al ejecutar.

¿qué estoy haciendo mal?

Gracias!

Código: Seleccionar todo

PrintChar equ &BB5a

org &4200

ld hl,Message
Call PrintString
ret

PrintString:
ld a,(hl)
cp 255
ret z
inc hl
call PrintChar
jr PrintString

Message: db 'hola mundo!',255

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8420
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: creación binario

Mensajepor Artaburu » Mar 25 Feb , 2020 9:38 pm

Tienes que salvarlos con:
Save"nombre",b,&4200,&19,&4200
El segundo &4200 indica dirección de ejecución del código para el Run"nombre
Salu2,
Arta

Avatar de Usuario
Fran123
Me voy lanzando
Me voy lanzando
Mensajes: 74
Registrado: Lun 24 Feb , 2020 2:44 pm

Re: creación binario

Mensajepor Fran123 » Mar 25 Feb , 2020 10:25 pm

hola

después de grabarlo tal como dices,

escribo:

Código: Seleccionar todo

memory &41ff
run"hola.bin
y se resetea

sin embargo, si escribo:

Código: Seleccionar todo

memory &41ff
load"hola.bin",&4200
call &4200
funciona y no se resetea

Avatar de Usuario
Fran123
Me voy lanzando
Me voy lanzando
Mensajes: 74
Registrado: Lun 24 Feb , 2020 2:44 pm

Re: creación binario

Mensajepor Fran123 » Mié 26 Feb , 2020 11:52 am

Sigo sin ver la luz

esta es la pantalla Assembling de winape

Código: Seleccionar todo

WinAPE Z80 Assembler V1.0.13

000001 0000 (BB5A) PrintChar equ &BB5a
000003 0000 (4200) org &4200
000005 4200 21 11 42 ld hl,Message
000006 4203 CD 07 42 Call PrintString
000007 4206 C9 ret
000009 4207 PrintString
000010 4207 7E ld a,(hl)
000011 4208 FE FF cp 255
000012 420A C8 ret z
000013 420B 23 inc hl
000014 420C CD 5A BB call PrintChar
000015 420F 18 F6 jr PrintString
000017 4211 Message
000017 4211 68 6F 6C 61 db 'hola mundo!',255
4215 20 6D 75 6E
4219 64 6F 21 FF
La longitud del código son 29 bytes (&1d)

Grabo esos bytes en la dirección de memory &4200 en adelante (con memory &41ff hecho previamente), y luego lo ejecuto (call &4200) y funciona.
Al grabarlo con save"hola.bin",b,&4200,29,&4200 y ejecutarlo se resetea

Avatar de Usuario
Fran123
Me voy lanzando
Me voy lanzando
Mensajes: 74
Registrado: Lun 24 Feb , 2020 2:44 pm

Re: creación binario

Mensajepor Fran123 » Mié 26 Feb , 2020 8:13 pm

He hecho un programa (termina con RET) que sólo espera la pulsación de una tecla.

Al ejecutarlo, borra la pantalla, y cuando se pulsa la tecla, se reinicio. Luego diría que funciona. Lo que ya no entiendo es el borrado de la pantalla, y por supuesto el reinicio.

Avatar de Usuario
MiguelSky
Lord of Short Time
Lord of Short Time
Mensajes: 6969
Registrado: Sab 08 Oct , 2005 2:02 am
Contactar:

Re: creación binario

Mensajepor MiguelSky » Mié 26 Feb , 2020 9:13 pm

Yo creo que lo que ocurre es normal al usar RUN" en lugar de LOAD"+CALL. Cuando cargas tu programa con RUN" el CPC se "olvida" del BASIC. Si tuvieras que usar tu HolaMundo en un programa BASIC, la estructura vendría a ser:

10 MEMORY &41FF
20 LOAD "HOLA.BIN"
30 CALL "&4200"
40 PRINT:PRINT "Ahora ya rula!!!"

trocoloco
Megaforero
Megaforero
Mensajes: 335
Registrado: Lun 16 Abr , 2007 11:02 am

Re: creación binario

Mensajepor trocoloco » Mié 26 Feb , 2020 10:05 pm

Buenas , a tu programa no le pasa nada, está bien, no tiene nada de extraño el reseteo del amstrad. Lo que hace es resetar las roms haciendo un run desde basic. Aquí te lo explica en inglés.

http://www.cpctech.org.uk/docs/runbin.html

Avatar de Usuario
MiguelSky
Lord of Short Time
Lord of Short Time
Mensajes: 6969
Registrado: Sab 08 Oct , 2005 2:02 am
Contactar:

Re: creación binario

Mensajepor MiguelSky » Mié 26 Feb , 2020 11:17 pm

De la misma web:
If a executable binary program is RUN directly: e.g.
RUN"demo.bin"
Then it will be started with the firmware function "MC BOOT PROGRAM". This will reset the state of the firmware and disable the disc operating system. Therefore the selected drive and other disc operating system variables are lost.

Avatar de Usuario
Fran123
Me voy lanzando
Me voy lanzando
Mensajes: 74
Registrado: Lun 24 Feb , 2020 2:44 pm

Re: creación binario

Mensajepor Fran123 » Mié 26 Feb , 2020 11:22 pm

Gracias!
Ahora ya lo entiendo.

Había llegado a comparar la cabecera con la de otro binario.

Poliyo
Keeper of The Forum
Keeper of The Forum
Mensajes: 909
Registrado: Jue 12 May , 2016 10:07 pm
Ubicación: Valencia

Re: creación binario

Mensajepor Poliyo » Jue 27 Feb , 2020 7:13 am

Ese era un "problema" bastante común, sabía que desactivaba disquetera pero desconocía el resto.
Muchos juegos crackeados venían con un arranque en fichero .Bin (usualmente la pantalla de carga), lo que hacían para "funcionar" correctamente era inicializar l ROM de disco, lo que me obligaba a parchearlos pues no iban con la segunda unidad de disco.


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic