News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_Executioner

WinAPE enhancements

Started by Executioner, 10:09, 22 March 16

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

VincentGR

You can save your game/code progress and when it locks you can load the last position.

Bryce

Well I'm saving the code to a virtual disk before I lock the computer, but it's annoying that every time I leave the computer, I either have to shut down WinAPE completely or go through the process of killing the process in the task manager when I return. Surely this can be solved. Savestates won't make that any less annoying.

Bryce.

Prodatron

Quote from: Bryce on 10:07, 20 October 16
Hi,
        as many here know, I'm not a fan of emulators and always use real hardware. However, I now need to have a CPC for some coding while I'm travelling for a small project of mine, so I've just installed WinAPE. However, when I lock the computer and then return, WinAPE has always crashed with an error that seems to be associated with Win7/10 Aero GUI. I assume this issue is known, but I couldn't find any information about it. Is there some way of getting around this (other than turning off Aero) or is this problem being worked on?

Bryce.

That's a very old issue.
It doesn't occur when you pause the emulation (press F8). Usually I do this everytime when I leave/close my PC or whatever to prevent this crash.

GRAPHICAL Z80 MULTITASKING OPERATING SYSTEM

Bryce

Quote from: Prodatron on 13:04, 20 October 16
That's a very old issue.
It doesn't occur when you pause the emulation (press F8). Usually I do this everytime when I leave/close my PC or whatever to prevent this crash.

Ok, I'll try that next time. However, if it's a very old issue, then why isn't it solved yet?

Bryce.

dragon

Winape don't look to the cpr lenght.

So i made a cartridge with 31 roms and 20 rom  lenght. And it works in winape and not works in the rest of the world.


;)



Kris

Quote from: dragon on 13:41, 20 October 16
Winape don't look to the cpr lenght.

So i made a cartridge with 31 roms and 20 rom  lenght. And it works in winape and not works in the rest of the world.


;)


How do you access between different ROMs , Did you write a dedicated menu ?


dragon

Nop, but a menu is possible.

Plus have these rsx to burning rubber game |game,|juego,|spiel,|jeux.

I stole for me |juego,|spiel| and | jeux.

Then in amsdos change the jumps of the rsx to the free part of amdsos.
In parados as it not have free space. Exchangue the burning rubber jumps for calls. And change jump of burning rubber to other page.

Then extracting the return direction from stack and you can know what parameter has benn called.
Chage the di after burning rubber rst 018 to ret so programs can back if they do in amstrad rom.


Then the rest is manage the parameters send you the os the user has write.

Made a jump with the rst 018 to the rom you can execute and thats all. :)

The worst part is you need patch roms to be fixed in these slots and know where jump. Because they normally search in first 16 slots.

You can  made a |menu to manage all slot, is another idea :).



roudoudou

#107

Hi


I noticed that the INCBIN assembler directive is very, very, very slow... (even with nolist activated)


...only when the file is located in a network folder


It's fast as lightning when the file is "local"


As my network folder is on the same machine (it's a trick to let my virtual machine access linux files elsewhere than the virtual HDD) it has to be fast.


So i guess the INCBIN command read byte per byte instead of loading the full file with one read command, overloading permissions/access/...


Am i wrong?


Regard




EDIT: i forgot to mention that using a network folder for a READ "file.asm" command with the same data is fast while there is more data to read  ;D
My pronouns are RASM and ACE

andycadley


Having been using the assembler in WinAPE in anger for the last week, a few other things that would be handy:


1) Local labels. So I can divide my code up into sections and not worry about label names clashing in unrelated bits of code. I'd suggest having a directive to set the section name and then treat labels prefixed with underscores as being defined only within that section. E.g.


section foo


.showsprite ; global label, works as normal
._loop ; local label only visible within foo section
jp _loop
...
section bar
._loop ; local label, so no error in re-definition
jp _loop


You can, kind of, accomplish this for backward references in WinAPE today using let loop = $, but it's a bit clunky and rather prone to errors - plus it obviously doesn't work for forward references.


2) The ability to pause the emulator without the debugger popping up. When working on a small screen laptop, it's a PITA to have to keep trying to get the debugger window out of the way when trying to type into the assembler (particularly because it seems to insist on being on top). Minimizing it is less than ideal as it gets minimized to a titlebar that sits right over the line number on the assembler status bar when maximized. You can obviously leave the emulator running instead, but it slows things down a fair whack on my machine for some reason (yes I probably need a better laptop!)


3) Timing info in the debugger output. Just because it would be so much easier to be able to look directly at the info there rather than having to look it up in a web based chart.

Docent

Quote from: andycadley on 23:46, 28 December 16
Having been using the assembler in WinAPE in anger for the last week, a few other things that would be handy:


1) Local labels. So I can divide my code up into sections and not worry about label names clashing in unrelated bits of code. I'd suggest having a directive to set the section name and then treat labels prefixed with underscores as being defined only within that section. E.g.


section foo


.showsprite ; global label, works as normal
._loop ; local label only visible within foo section
jp _loop
...
section bar
._loop ; local label, so no error in re-definition
jp _loop


You can, kind of, accomplish this for backward references in WinAPE today using let loop = $, but it's a bit clunky and rather prone to errors - plus it obviously doesn't work for forward references.


you can try to use macros for this purpose - they have local labels.
for eg. define a macro as:
macro showspriteloop
@loop:
....
jp @loop
mend

and then use it in the code:

.showsprite:
    showspriteloop



andycadley


Yeah, macros can get round it, but it feels very clunky and in the worst case (like your sample) with only one local jump you end up having to manually manage the disambiguation anyway by naming the macro uniquely.


A few more things that I forgot last time:


1) Smaller tabbing in the assembler editor. About 4 spaces is usually enough to give decent indentation. As it stands it feels like it indents far too much and I end up having to replace tabs with spaces to make it readable.


2) Not sure if this is a bug, but with code like:


macro Sequence seq, label
;;if2
    ifdef seq
        let seq = seq + 1
    else
        let seq = 1
    endif
;;endif
label equ seq
endm
Sequence seq1, vala
Sequence seq1, valb
Sequence seq1, valc
Sequence seq1, vald
Sequence seq1, vale
Sequence seq2, valx
ld a, vala
sub valb
add valx



I find the generated values to be double what I would have expected. Uncommenting the IF2 block, so that things only happen on the second pass, seems to make it work correctly but I'm not entirely sure that's a "safe" assumption given that the documentation specifically says not to use directives within an IF1/IF2 block (and it feels a bit hacky). Should that work or am I being a little too sneaky?

roudoudou

#111
there is a bug (or a limitation) in winape assembler in a repeat loop


EDIT: found the problem, the error message do not display the correct line number but display the rend line number


My pronouns are RASM and ACE

fgbrain

Today I realized that (Version2 B2) if you use Digiblaster output, the video rec doesnt record any audio..

(using uncompressed AVI -other choices dont work for me)  :'(
_____

6128 (UK keyboard, Crtc type 0/2), 6128+ (UK keyboard), 3.5" and 5.25" drives, Reset switch and Digiblaster (selfmade), Inicron Romram box, Bryce Megaflash, SVideo & PS/2 mouse, , Magnum Lightgun, X-MEM, X4 Board, C4CPC, Multiface2 X4, RTC X4 and Gotek USB Floppy emulator.

Shining

Late, but here are some wishes from my developer point of view:


- When you've loaded .noi-Symbols:

       
  • Seeing them in the Breakpoint window or in an extra-window and activate/deactivate breakpoints there
  • Activate a Breakpoint on one or several symbols (or memory-adresses) by commandline
  • Goto symbols in the memory- and the disassembly-pane
- Playcity-support
- M4-Support including the network capabilities



TGS is back

Download my productions at:
cpc.scifinet.org

Rhino

First of all congratulate to Executioner for his great work.

I'm developing Pinball Dreams with WinAPE and the project already has a large size. As far as possible I try to structure the code in something like object-oriented. This distributes the code in many .asm files and folders. I have the files loaded and they appears in the tabs below, but I often have to scroll the tabs to find the desired file and it is quite awkward.

I propose a somewhat ambitious improvements:

1) To be able to, optionally, use a project file with the info about the folders and files that compose it, + adding in menu File the options: "New project", "Open project" and "Close project" (It is also possible go without "New project", if the project file can be created and edited via a text editor, of the same way that you can edit WinAPE.ini).

2) Include a zone to the left of the editor to see the folders / files of the project and be able to click there to select them, in the same way as IDEs like Eclipse:



3) To add options in the right mouse button menu like "Go to Declaration", "Find usages", "Search in project" by selecting a label reference or text part, to go to the file/line where the label is declared, and show the usages of the label in the files of the project. Currently, to get something like this, I comment the label temporarily and assemble it, so the assembler shows me the error lines that did not find that label.

4) To save memory, sometimes it is necessary to include blocks of code in places that are not the ideal ones from a conceptual view. This "messes up" the code a bit and makes it hard to read. Including a way to hide code parts can do it a little more clear. For example, this code:


   some code here...
   ret

; <DRAW_SPRITE comment="Draw a sprite...">

draw_sprite:
  ...
  ret

; </DRAW_SPRITE>

   more code here...


It is hidden as:

   some code here...
   ret

[ +] DRAW_SPRITE    Draw a sprite...

   more code here...


and the [ +] button switches to [-] to show/hide the code part.

I know all this is a lot of work, but they can make the development of large projects in WinAPE easier.

Thanks!

Rhino

roudoudou

Or you can use any IDE and include the root file.
My pronouns are RASM and ACE

Rhino

Quote from: roudoudou on 16:07, 12 May 17
Or you can use any IDE and include the root file.

It could be an alternative, does anyone know an IDE compatible with Maxam and highlighting fine?

roudoudou




With notepad++ you can define you own syntax in an XML


There is a thread  8)


http://www.cpcwiki.eu/forum/programming/z80-syntax-highlighting-for-notepad/
My pronouns are RASM and ACE

Arnaud


Marskilla

I'm new here, so my apologies if this enhancement has already been asked.

To me, Winape is just the best CPC emulator. Period.

I use à 16:10 monitor, and my video card does not adapt 4:3 signal. It streches it.

Is this possible to expect a fullscreen allowing native resolution but preserving the 4:3 ratio in a future version of Winape ?
Or maybe there is an option somewhere I missed ?

Longshot

#120
Hello Richard.
Little bug found here :
http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/amstrad-plus-and-im2-bug/30/

Bit 5 of R52 is cleared by PRI or CPC raster interrupts but not for DMA interrupts, whatever the ack method used (ei or dcsr+ei).
In Winape, the bit 5 is cleared with a DMA interrupt. So, if R52 was > #20, then R52=R52-#20, and so, the next int is delayed of #20 lines
(see link for test program)
Rhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!!

roudoudou

Do you plan new graphics options like 'double windowed screen size' in the future?
My pronouns are RASM and ACE

Skunkfish

Input/Output breakpoints don't work for me (running Windows 10).

When I attempt to use WinAPE stops responding. Is it just me?

[attachimg=1]
An expanding array of hardware available at www.cpcstore.co.uk (and issue 4 of CPC Fanzine!)

SOS

Quote from: Skunkfish on 17:54, 28 December 17
Input/Output breakpoints don't work for me (running Windows 10).

When I attempt to use WinAPE stops responding. Is it just me?
No, same here on Win 8.1
It happens, when i set a read- or write-breakpoint for an Memory-address AND the Debugger-window is open, when the Z80-program goes on and come to the breakpoint.
Workaround:
After Breakpoint-Set or when a read/write-breakpoint is passed - Close the debugger-Window

krusty_benediction

Hello,
I often use Winape to count the number of nops of my code and it seems there are errors in the timing of some instructions (I'm using v 2.0 beta 2 and have not seen more recent version on the website).
ld a,i => 1 nops instead of 3
add (ix+0) => 2 nops instead of 5

I guess it is the same for similar instructions


Powered by SMFPacks Menu Editor Mod