CPCWiki forum

General Category => Emulators => Topic started by: Executioner on 10:09, 22 March 16

Title: WinAPE enhancements
Post by: Executioner on 10:09, 22 March 16
For the next version of WinAPE I have a number of things on the list, but I'd like to know which are the most important for most people.

Currently, in order of importance (to me) are:

1. Networking - (there is currently no actual working hardware that I can emulate). I was planning on emulating the W5100 or something similar and putting it on an arbitrary port, but it doesn't appear anyone can get an actual interface working with that chip. These are other possibilities, but I may resort to creating my own custom socket implementation using a particular set of I/O ports.

2. Project files - A way to group WinAPE assembler files (and maybe other resources) together and have some form of build script which would allow such things as calling external programs during the build.

3. Inter-Process communications channels - A way to allow other programs control over WinAPE with a scripting engine to allow running of scripts. This could be achieved under Windows using either of Memory-Mapped Files or WM_COPYDATA messages both ways.

4. Speech emulation (SSA-1). Actual emulation of the phoneme ROM and synthesis module rather than simply playing a set of WAV files.

5. Improvements to Plus emulation, including emulating soft-scroll in officially unsupported modes (eg. MODE 0 with horizontal SS of 15), more accurate raster interrupt and DMA emulation, and more accurate ASIC RAM read/write masks and values. I think most of it is fairly accurate, but people keep posting how wonderful another emulator is that hardly anybody can actually use.

6. Anything else that people would really like to see.
Title: Re: WinAPE enhancements
Post by: Joseman on 10:22, 22 March 16
Hi

I don't know if the Simbiface II mouse is emulated but i would like that winape can support this

I can't make work Bonny Dos / Hard drive on winape, ¿is the IDE protocol 100% supported on winape?

For me is important that actual hardware that have hundreds of users, can work on emulators for coding purposes...

And for me Winape is the best emulator for coding!







Title: Re: WinAPE enhancements
Post by: Phi2x on 10:27, 22 March 16
.
Title: Re: WinAPE enhancements
Post by: reidrac on 11:22, 22 March 16
Quote from: Executioner on 10:09, 22 March 16
3. Inter-Process communications channels - A way to allow other programs control over WinAPE with a scripting engine to allow running of scripts. This could be achieved under Windows using either of Memory-Mapped Files or WM_COPYDATA messages both ways.

Please take into account that a lot people currently use WinAPE in non windows systems (eg, Linux with WINE, WinAPE is probably the best emulator in that platform). It would be nice if you could run winape.exe (or a client.exe) that could send commands to and existing instance of WinAPE.

Quote from: Executioner on 10:09, 22 March 16
6. Anything else that people would really like to see.

I think (3) could do the trick, but what I really want is to be able to provide a DSK file from command line and automatically run specific input (eg, run"whatever.bin"; without having to use the UI). That would be really handy in the development cycle when I'm testing things.

Other than that WinAPE currently does what I need, even in Linux :)
Title: Re: WinAPE enhancements
Post by: khaz on 12:20, 22 March 16
I'd like to have the dsk editor as a separate executable please.
Title: Re: WinAPE enhancements
Post by: Docent on 12:30, 22 March 16
Quote from: Executioner on 10:09, 22 March 16
For the next version of WinAPE I have a number of things on the list, but I'd like to know which are the most important for most people.

Currently, in order of importance (to me) are:

here're my favorites list  (6 position on your importance list :)
1.
- fix crash related to handling of directx surfaces after screen blanking/hibernation (on win7/8)
- fix "Action Unsupported" message when going full screen on win8
- fix problem with minimizing windows - minimizing all windows except the main will not minimize them to the taskbar - on win8 such window is lost for ever and cannot be bring back to screen until quitting the emulator.
- add support for 'dump' Maxam option. eg dump "filename" should dump labels to file filename.
- get rid of Maxam only compatibility and
   - extend expression enumeration to support parentheses
   - extend parser to handle new syntax for hex numbers (ie 0xff, ffh)
- assembler: out (c),0

2. project files
3. Improvements to Plus emulation
4. Inter-Process communications channels
5. Networking
6. Speech emulation
more comments below.

Quote from: Executioner on 10:09, 22 March 16

1. Networking - (there is currently no actual working hardware that I can emulate). I was planning on emulating the W5100 or something similar and putting it on an arbitrary port, but it doesn't appear anyone can get an actual interface working with that chip. These are other possibilities, but I may resort to creating my own custom socket implementation using a particular set of I/O ports.
Instead of emulating a chip no one have used before on cpc, I'd suggest to create a tcp/ip stack emulation/bridge by extending firmware vectors.
There are a number of empty space that could be filled with additional vectors, for example between
bdf7-be40 - 24 entries
baea-bb00 - 7 entries

The basic set of such Network Pack would require 17 entries
NET SOCKET, NET BIND, NET CONNECT, NET LISTEN, NET ACCEPT, NET SEND, NET SENDTO, NET RECV,  NET RECVFROM,
NET CLOSE, NET SHUTDOWN, NET SELECT,  NET GETSOCKOPT, NET SETSOCKOPT, NET GETSOCKNAME, NET SENDMSG, NET RECVMSG

These functions can be almost directly mapped to winsock calls via a specially marked cpc ROM. The ROM would be detected by WinAPE and treated as a bridge between cpc and windows.
A program on cpc would call these vectors, the ROM would call winsock through WinAPE etc. With such set of functions porting of network enabled applications would be pretty easy.
This approach would also set a comon api standard for networking and in the future (if someone will ever build an ethernet interface for cpc) will give some sort of basis for compatibility.

Quote from: Executioner on 10:09, 22 March 16
3. Inter-Process communications channels - A way to allow other programs control over WinAPE with a scripting engine to allow running of scripts. This could be achieved under Windows using either of Memory-Mapped Files or WM_COPYDATA messages both ways.
I would add scripting support first, for example using lua. Lua is pretty easy to integrate and there are bindings for delphi already available. Scripting could be also used for projects - the build script could be Lua script..
I wouldnt bother with memory mapped files - just use WM_COPYDATA with dw_data as a some sort of message identifier to expose selected WinAPE functionality (eg. load dsk, load snapshot, run, assemble etc).
Same functionality could be exposed to the scripting engine so WinAPE could be controlled both by a script or another application.

Title: Re: WinAPE enhancements
Post by: SOS on 13:54, 22 March 16
Hi,

my two wishes:
- no more crashes with "breakpoint on read", e. g.
       Org &a000
       ld hl,&3000
       ld a,(hl)
       jr &a000
  => With a "breakpoint on read" on &3000 makes winape to crash
- Albireo-Integration  :D
   (maybe it's possible, when a ch376-board is connected on the Windows-PC to usb or spi)

Thanks & Bye

Bernd
Title: Re: WinAPE enhancements
Post by: andycadley on 14:40, 22 March 16
For 3: The most Windows friendly way would be to expose a COM interface. It would then be drivable from pretty much any scripting language going as well as easy to interface with from "real" applications.

5) would definitely be top of my list though. Accurate Plus emulation in odd situations is always useful.

Beyond that, extending the assembler to support things like macros, namespaces and other useful gubbins would be nice, even if it was at the expense of direct Maxam compatability.
Title: Re: WinAPE enhancements
Post by: ronaldo on 16:55, 22 March 16
Quote from: reidrac on 11:22, 22 March 16
I think (3) could do the trick, but what I really want is to be able to provide a DSK file from command line and automatically run specific input (eg, run"whatever.bin"; without having to use the UI).
WinAPE already does almost that. You can load DSKs and NOI symbol files from the command line and tell WinAPE to autorun the main file. cpct_winape script  (https://github.com/lronaldo/cpctelera/blob/master/cpctelera/tools/scripts/cpct_winape)automatizes all for you under Linux or MacOS X. You can use it if you like or have a look at the code and adapt it to your needs if you prefer.

Anyways, I also think that running a custom command from the command line is a good idea. Under some circumstances, it would be much comfortable.
Title: Re: WinAPE enhancements
Post by: reidrac on 17:24, 22 March 16
Quote from: ronaldo on 16:55, 22 March 16
WinAPE already does almost that. You can load DSKs and NOI symbol files from the command line and tell WinAPE to autorun the main file. cpct_winape script  (https://github.com/lronaldo/cpctelera/blob/master/cpctelera/tools/scripts/cpct_winape)automatizes all for you under Linux or MacOS X. You can use it if you like or have a look at the code and adapt it to your needs if you prefer.

Ha! well, that settles it. Never checked WinAPE help:  "/A:filename file.dsk" is all I need!

EDIT: seriously, I feel really stupid now. Thanks for the tip!
Title: Re: WinAPE enhancements
Post by: Arnaud on 19:17, 22 March 16
Drag and Drop Autorun like CPCE95.

Very useful to quickly start emulation.
Title: Re: WinAPE enhancements
Post by: andycadley on 19:23, 22 March 16
Quote from: ronaldo on 16:55, 22 March 16Anyways, I also think that running a custom command from the command line is a good idea. Under some circumstances, it would be much comfortable.
As a strategy it tends not to play well with multiple instances running though (which is a handy thing to have during development) and also tends towards having to do a lot of parsing of output, which is decidedly less than ideal for more complex interactions with structured data.
Title: Re: WinAPE enhancements
Post by: Executioner on 21:55, 22 March 16
Quote from: SOS on 13:54, 22 March 16
- no more crashes with "breakpoint on read", e. g.
       Org &a000
       ld hl,&3000
       ld a,(hl)
       jr &a000
  => With a "breakpoint on read" on &3000 makes winape to crash

Hi Bernd,

I can't replicate this, works perfectly for me. Did you have a condition on the breakpoint?
Title: Re: WinAPE enhancements
Post by: Executioner on 22:32, 22 March 16
Quote from: Docent on 12:30, 22 March 16
1.
- fix crash related to handling of directx surfaces after screen blanking/hibernation (on win7/8)

I'll try and replicate this. The DirectX code does try to recreate the surface, but oviously fails in some cases.

Quote- fix "Action Unsupported" message when going full screen on win8

Is this because your graphics card doesn't support the required screen mode? I'm looking at adding a combo box to select full screen resolution and enable scaling (with or without maintaining aspect ratio).

Quote- fix problem with minimizing windows - minimizing all windows except the main will not minimize them to the taskbar - on win8 such window is lost for ever and cannot be bring back to screen until quitting the emulator.

I've never used Windows 8. I think it's Microsofts worst OS ever. This doesn't happen in Windows 7 on my PC. Does the same happen on Windows 10?

Quote- add support for 'dump' Maxam option. eg dump "filename" should dump labels to file filename.

Shouldn't be too hard.

Quote- get rid of Maxam only compatibility and
   - extend expression enumeration to support parentheses
   - extend parser to handle new syntax for hex numbers (ie 0xff, ffh)
- assembler: out (c),0

- I could make strict Maxam compatibility an option when I have project files.

- Adding parenthesis shouldn't be too hard even without that, however, parenthesis are used to change the meaning of mnemonics (eg. ld a,(#40) is not the same as ld a,#40), so how do you suggest the assembler recognise the difference iy you wanted to do something like ld a,(x + w) * 4? I suppose the rule could be that the expression starts with '(' and ends with ')'. Could be a difficult change to make.

- Are there other assemblers that accept C style hex numbers? I suppose it can be done easily enough. I've only seen the 'h' format used when prefixed with a digit (eg. 0ffh) as that format would restrict symbol names somewhat, eg. You couldn't have a label named "each".

Quote2. project files

The idea is to have all included files listed in the project file so I can create a Tree view, and have settings specific to the project.

Quote3. Improvements to Plus emulation

Here is where I may need more input from people who just send messages saying "WinAPE isn't accurate", usually with no other information as to why, and having done no research themselves to find out what is wrong.

QuoteInstead of emulating a chip no one have used before on cpc, I'd suggest to create a tcp/ip stack emulation/bridge by extending firmware vectors.

I sort of like this idea, but it has one major drawback: Most software that's going to be using networking probably won't use any firmware vectors, or firmware at all for that matter. It'd probably be better to create an I/O device which has these functions, then create a ROM image which gives a firmware vector access to the I/O routines. I'd probably go for a single vector (eg. BDF7) with either a stack based command ID or use a register for the ID. eg.

CALL #BDF7:DB NET_SOCKET

or

LD A,NET_SOCKET
CALL #BDF7

This provides the same compatibility, but the underlying functions could actually use something like:

LD BC,NET_PORT
LD A,NET_SOCKET
OUT (C),A

making them available to the likes of FuturOS and SymbOS (which is actually the main reason I'm providing it).

QuoteI would add scripting support first, for example using lua. Lua is pretty easy to integrate and there are bindings for delphi already available. Scripting could be also used for projects - the build script could be Lua script..

Thanks for the hint, I've never heard of LUA before but I'll look into it.

QuoteI wouldnt bother with memory mapped files - just use WM_COPYDATA with dw_data as a some sort of message identifier to expose selected WinAPE functionality (eg. load dsk, load snapshot, run, assemble etc).

WM_COPYDATA has a fundamental flaw in that you can't return Strings. Although, there are very few cases where this is required, I'd like to support it. Perhaps WinAPE can post a WM_COPYDATA message back to the source handle.
Title: Re: WinAPE enhancements
Post by: andycadley on 00:50, 23 March 16
Quote from: Executioner on 22:32, 22 March 16
I've never used Windows 8. I think it's Microsofts worst OS ever. This doesn't happen in Windows 7 on my PC. Does the same happen on Windows 10?

On both Windows 8 and 10 for me, at least, they minimize to tiny little strips (just large enough to contain the icon, min, max and close buttons) and sit just above the Task Bar.

Quote
- Adding parenthesis shouldn't be too hard even without that, however, parenthesis are used to change the meaning of mnemonics (eg. ld a,(#40) is not the same as ld a,#40), so how do you suggest the assembler recognise the difference iy you wanted to do something like ld a,(x + w) * 4? I suppose the rule could be that the expression starts with '(' and ends with ')'. Could be a difficult change to make.

It does introduce ambiguities. Could just get around it by using [ ] for expressions instead, maybe? ld a, [x + w] * 4 would be entirely obvious, easier to parse and still flexible enough to accommodate making expression order clearer.
Title: Re: WinAPE enhancements
Post by: Fessor on 01:34, 23 March 16
I wish better Linux/Wine compatibility.
- German Keyboard is not recognized and it is not possible to map the keys to CPC-Keys, because they aren't listed in the Listboxes
- Redraw-Problems at the Editor of the Assembler
- Redraw-Problems at the Icons of the Main-Window
(Maybe all this Problems are Direct-X-related(?), because WinCPC, written also in Delphi, didn't have these Problems.)

Title: Re: WinAPE enhancements
Post by: Grim on 02:44, 23 March 16
Quote from: Executioner on 10:09, 22 March 166. Anything else that people would really like to see.
I really would like WinAPE to be controllable telepathically. I really do :)

Quote from: Docent on 12:30, 22 March 16I would add scripting support first, for example using lua.

Title: Re: WinAPE enhancements
Post by: greatxerox on 03:23, 23 March 16
hi


i'd like ZIP support ! to launch .dsk inside .zip archives


and connect to databases like on javaCPC
Title: Re: WinAPE enhancements
Post by: Docent on 04:40, 23 March 16
Quote from: Executioner on 22:32, 22 March 16
I'll try and replicate this. The DirectX code does try to recreate the surface, but oviously fails in some cases.
Yes, this is probably it - when WinAPE is minimized, it crashes much less frequently.
Quote from: Executioner on 22:32, 22 March 16
Is this because your graphics card doesn't support the required screen mode? I'm looking at adding a combo box to select full screen resolution and enable scaling (with or without maintaining aspect ratio).
I don't know what is the required resolution, I use Lenovo W520 laptop with NVidia Quadro 1000M chipset and windows 8.1 Enterprise. I run it in 1920x1080 32bit but the chipset also supports other, lower resolutions, however it may not support the WinAPE fullscreen resolution.
An option to select the resolution for fullscreen would be great.

Quote from: Executioner on 22:32, 22 March 16
I've never used Windows 8. I think it's Microsofts worst OS ever. This doesn't happen in Windows 7 on my PC. Does the same happen on Windows 10?

This is rather WinAPE issue than windows issue - I changed the desktop size to be smaller than 1920x1080 (1600x700) and minimized windows started to appear just over the taskbar.
Quote from: Executioner on 22:32, 22 March 16
- Adding parenthesis shouldn't be too hard even without that, however, parenthesis are used to change the meaning of mnemonics (eg. ld a,(#40) is not the same as ld a,#40), so how do you suggest the assembler recognise the difference iy you wanted to do something like ld a,(x + w) * 4? I suppose the rule could be that the expression starts with '(' and ends with ')'. Could be a difficult change to make.
one approach could be to use # - for example ld a, #(x+w)*4 would mean ld a,#expression while ld a, (x+w) would mean ld a, (#expression). Another approach could be that if an expression contains additional params outside the parenthesis, it will be treated as ld a,#expression otherwise it will be ld a,(expression)
The first is probably better...
Quote from: Executioner on 22:32, 22 March 16
- Are there other assemblers that accept C style hex numbers? I suppose it can be done easily enough. I've only seen the 'h' format used when prefixed with a digit (eg. 0ffh) as that format would restrict symbol names somewhat, eg. You couldn't have a label named "each".
There are a couple of standards, for example:
- a number in the Intel format (0nnnnH - no problem with 'each' label due to leading '0')
- a number in Motorola format ($nnnn)
- a number in AT&T format (C language - 0xnnnn)
Pasmo assembler supports all these formats.
Quote from: Executioner on 22:32, 22 March 16
I sort of like this idea, but it has one major drawback: Most software that's going to be using networking probably won't use any firmware vectors, or firmware at all for that matter. It'd probably be better to create an I/O device which has these functions, then create a ROM image which gives a firmware vector access to the I/O routines. I'd probably go for a single vector (eg. BDF7) with either a stack based command ID or use a register for the ID. eg.

CALL #BDF7:DB NET_SOCKET

or

LD A,NET_SOCKET
CALL #BDF7
I think that having separate vector for each function instead of just one vector for all would be better:
- no need to use  A  for function id - you save one reg and these functions have up to 6 params, so it is essential to have as much free regs as possible.
- code is simpler, no need for checking the id or jump table.
- patching is easier, ech vector can be patched separately
- its more in the style of original firmware :)

ROM could have a jump table at the beginning and will setup firmware vectors during normal init. The jumptable in ROM can be used by nonsystem software like symbos while system friendly programs will go through firmware vectors. Basic could be also extended with new commands.

A simple smtp client could be implemented in a few lines of code - the example below would connect to the server and start conversation with the smtp server.
ld a, AF_INET
ld b, SOCK_STREAM
ld c, IPPROTO_TCP
call NET_SOCKET
or a
jr z, error
ld a, (socket)
ld hl, sockadrr_in
call NET_CONNECT
or a
jr m, error

ld a, (socket)
ld hl, helo
ld de, ok-helo
ld bc, flags
call NET_SEND

ld a, (socket)
ld hl, inbuf
ld de, inbufend-inbuf
ld bc, flags
call NET_RECV
....
error:
ld a,(socket)
call NET_CLOSE
ret

// struct sockaddr_in:
sockaddr_in:
db AF_NET;family
dw 25   ;port
dw 0001   ;sin_addr_lo
dw 007f   ; sin_addr_hi

helo:
db "HELO",13
ok:
db "OK",0
inbuf
ds 10,0
inbufend

Quote from: Executioner on 22:32, 22 March 16
Thanks for the hint, I've never heard of LUA before but I'll look into it.
Its well worth to look into - its one of the fastest scripting languages (especially luajit) and quite popular (read: tested :)
Quote from: Executioner on 22:32, 22 March 16
WM_COPYDATA has a fundamental flaw in that you can't return Strings. Although, there are very few cases where this is required, I'd like to support it. Perhaps WinAPE can post a WM_COPYDATA message back to the source handle.
If you need to send back strings I afraid that there is no other option than sending back WM_COPYDATA. Unfortunately this message doesn't provide any information about the sender, so you'll need an additional message from the sender with its window name to send messages back. If you can stick to a number<>0 as a return value, you can use it as the return value from the message handler - officially MS requires you to return TRUE on successful processing of this message, but any value >0 should do... 
Title: Re: WinAPE enhancements
Post by: Axelay on 13:59, 23 March 16

Quote from: Executioner on 10:09, 22 March 16


2. Project files - A way to group WinAPE assembler files (and maybe other resources) together and have some form of build script which would allow such things as calling external programs during the build.


At the moment I use several versions of WinAPE to sort of handle different projects, but even then, I'll still end up with several dozen files open in the assembler at times and it can be a bit painful getting to the right file sometimes, so if this helps streamline that then I'll like this.


Quote from: Executioner on 10:09, 22 March 16


4. Speech emulation (SSA-1). Actual emulation of the phoneme ROM and synthesis module rather than simply playing a set of WAV files.




Will this also include the DK'Tronics voice synth?  I've got one of those, and hope one day to support both in a game.


Any chance you'll add support for TotO's PlayCity expansion?
Title: Re: WinAPE enhancements
Post by: TFM on 17:07, 23 March 16
Would be great to see X-DDOS 2.10 running without crash on start up, maybe this includes to emulate the Dobbertin HD-20 hard drive.  :)
Title: Re: WinAPE enhancements
Post by: andycadley on 19:11, 23 March 16
Quote from: Docent on 04:40, 23 March 16Its well worth to look into - its one of the fastest scripting languages (especially luajit) and quite popular (read: tested :)

If you need to send back strings I afraid that there is no other option than sending back WM_COPYDATA. Unfortunately this message doesn't provide any information about the sender, so you'll need an additional message from the sender with its window name to send messages back. If you can stick to a number<>0 as a return value, you can use it as the return value from the message handler - officially MS requires you to return TRUE on successful processing of this message, but any value >0 should do...
The enormous downside of baking in Lua support is that then you can only automate things via Lua. Whereas exposing a COM interface (which Delphi has native support for) means you can support Lua, C++, Delphi, VB, PowerShell, VBScript.... basically anything scripting or programming language on Windows ever (since Win32 itself is about 90% COM). And then you can just pass strings as strings, without any mucking around with things like window message processing.
Title: Re: WinAPE enhancements
Post by: AMSDOS on 00:46, 24 March 16
Quote from: Executioner on 10:09, 22 March 16

6. Anything else that people would really like to see.


Well I always wanted to see a Pascal like language or PLZ/SYS (the Z80 equivalent of PLM), but I would be a minority group and I'm not looking to upgrade my PC (from XP) which is 10 years old. I also retired it from the Internet a few years ago, so haven't updated to the latest Winape! :(
But the Winape I'm using, is fine when coding Hisoft Pascal programs, so I can write stuff in Notepad and use the Paste in Winape to Paste code in which works fine and if I need to Dump a program back into ASCII, just use the Printer to dump it to File, which I can edit in Notepad. The only advantage an integrated compiler would have is compile and use the necessarily library fragments to use for the program, though at the moment I haven't run into problems with the 6k Library HP attaches to final Binaries.
Title: Re: WinAPE enhancements
Post by: SOS on 12:00, 24 March 16
More Wishes ;-)
- Statistics how often one Z80-Line is hit, can see it in the debugger-window (e.g.) after the Z80-Instruction in a new column
    (Extended Request: I can see it, which are the Z80-register-values on every hit)

- Log of the Z80-Execution, e.g.:
        A000  ld b,3
        A002  inc c
        A003  djnz &A002
        A005  ld a,7
        A007  ret
  shows me:
        A000  ld b,3
        A002  inc c
        A003  djnz &A002
        A002  inc c
        A003  djnz &A002
        A002  inc c
        A003  djnz &A002
        A005  ld a,7
        A007  ret
  (Extended Request: I can see it, which are the Z80-register-values on every line, e.g. in new columns)
 
- Possible to show texts in the debugger, e.g. i wrote in Winape:
        ld b,3
    loop:
        inc c
        djnz &A002
    ThisIsATestComment:       => this one, i see in the debugger  :-)
        ld a,7
        ret
  It's possible to have the same functionality with other development-compiler?
  (i use "Phactory" with sdcc)
Title: Re: WinAPE enhancements
Post by: Trebmint on 12:01, 24 March 16
The Network support is 1st for me, as a Symbos coder it's a pain having to use localhost. The cool stuff a emu/network solution would open up for development would be immense
Title: Re: WinAPE enhancements
Post by: McKlain on 13:06, 24 March 16
1- Autorun for DSK files
2- An option to keep the proper screen aspect ratio when the main window is resized or maximized and you are using DirectX stretch.
Title: Re: WinAPE enhancements
Post by: Prodatron on 16:15, 24 March 16
Quote from: Executioner on 10:09, 22 March 161. Networking - (there is currently no actual working hardware that I can emulate). I was planning on emulating the W5100 or something similar and putting it on an arbitrary port, but it doesn't appear anyone can get an actual interface working with that chip. These are other possibilities, but I may resort to creating my own custom socket implementation using a particular set of I/O ports.

W5100 emulation would be very useful IMHO, as there is still the possibility of a network hardware using this one. The MSX is a very similiar Z80 system, and now since a few month they already have two different ethernet cards both using the W5100. The same for the Spectranet Ethernet card for the ZX Spectrum. So at least it's possible to build such a hardware for our Z80 machine.
As I said before I would help and support you in both cases, no matter if you do a W5100 or a custom implementation. It would be just good if it works in a similiar way like such a possible ethernet hardware.
Title: Re: WinAPE enhancements
Post by: TFM on 17:24, 24 March 16
IMHO it's a good thing to support already existing hardware. Even if their number is few out there, it's still better than supporting fantasy hardware, because their number out there is zero. But other people may think different.
One word about networking, we got alrerady:
- VN96
- CPC-Booster
- Albireo


Support them imho.  :)
Title: Re: WinAPE enhancements
Post by: Prodatron on 19:14, 24 March 16
There is a huge difference between point to point serial hardware and ethernet hardware. Especially in an emulator it makes more sense to support ethernet directly.
Title: Re: WinAPE enhancements
Post by: Trebmint on 19:16, 24 March 16
Software needs hardware and hardware needs software, and since neither can exist without the other means the idea that the software/hardware middleware that is Winape could cure this chicken and egg situation seems like a sensible option. There is already software running via symbos, and with this development option more would come. I think it would be likely in this situation one of our hardware gurus would see the sense in bringing the CPC into the new century.


Yeah support all the hardware possible, but for once if a software development can lead to hardware development rather than the opposite way round its a good thing
Title: Re: WinAPE enhancements
Post by: TFM on 23:22, 24 March 16
Yeah, both would be nice. That one helps the other is common sense. The question which feature is 'most needed' is not as easy to answer.  :)
Title: Re: WinAPE enhancements
Post by: AugustoRuiz on 23:45, 24 March 16
My 2 cents:
1.- Ignore colon ( : ) in comments. Right now it assumes it's a new line. But it's inside a comment! ;) (i know, there's no end of comment sign, so it could be a new line, but...)
Title: Re: WinAPE enhancements
Post by: Fessor on 00:07, 25 March 16
Quote from: AugustoRuiz on 23:45, 24 March 16
My 2 cents:
1.- Ignore colon ( : ) in comments. Right now it assumes it's a new line. But it's inside a comment! ;) (i know, there's no end of comment sign, so it could be a new line, but...)

Use ;; for commenting lines
Title: Re: WinAPE enhancements
Post by: Gryzor on 17:13, 25 March 16
An online database would be #1 for me too...
Title: Re: WinAPE enhancements
Post by: Executioner on 22:41, 26 March 16
Quote from: AugustoRuiz on 23:45, 24 March 16
1.- Ignore colon ( : ) in comments.

I think I'll add a couple of flags which will be applied to projects by default, one of which will be to (1) disable part-line comments, others will (2) allow brackets and (3) operator precedence (which will break a lot of existing code).
Title: Re: WinAPE enhancements
Post by: Executioner on 22:44, 26 March 16
Quote from: Prodatron on 16:15, 24 March 16
The MSX is a very similiar Z80 system, and now since a few month they already have two different ethernet cards both using the W5100. The same for the Spectranet Ethernet card for the ZX Spectrum.

I assume if they can get it working on a Spectrum (or MSX) it must be fairly simple to copy that design to the CPC. Anyone up for that?
Title: Re: WinAPE enhancements
Post by: khaz on 17:08, 27 March 16
Is it possible to add HxC .hfe compatibility?
Title: Re: WinAPE enhancements
Post by: Executioner on 03:54, 29 March 16
Quote from: Docent on 12:30, 22 March 16
bdf7-be40 - 24 entries
baea-bb00 - 7 entries

Unfortunately,# BE00..#BE31 is used by ParaDOS for formats requiring a larger than standard ALV (all ROMDOS formats require this), that's why I would prefere not to use that area. There is some more room at #BAEA (actually,  #BAE9, but it doesn't make a lot of difference), and the region from #BE32 to #BE3F could be used, but that only allows for 11 entries unless some tricky code is used to squeeze more entries into that space, and using all of that space restricts what other interfaces could be added using the jumpblocks.
Title: Re: WinAPE enhancements
Post by: Executioner on 07:35, 29 March 16
Quote from: khaz on 17:08, 27 March 16
Is it possible to add HxC .hfe compatibility?

HFE is a raw FM/MFM format, so it requires decoding and encoding (for writing) FM/MFM bits in order to make it work.
Title: Re: WinAPE enhancements
Post by: khaz on 12:49, 29 March 16
Quote from: Executioner on 07:35, 29 March 16
HFE is a raw FM/MFM format, so it requires decoding and encoding (for writing) FM/MFM bits in order to make it work.
So that's a no then?
Title: Re: WinAPE enhancements
Post by: Rhino on 21:19, 29 March 16
In the assembler editor:

1) Selecting a label reference + right mouse button, a "Go to Declaration" option to go to the file/line where the label is declared.
2) A way to hide some code parts. 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...

the [ +] button switches to [-] to show/hide the code part                     
Title: Re: WinAPE enhancements
Post by: Executioner on 23:25, 29 March 16
Quote from: khaz on 12:49, 29 March 16
So that's a no then?

That's a "probably not in the next release" :)
Title: Re: WinAPE enhancements
Post by: Singaja on 13:21, 30 March 16
Could there be an option (checkbox?) to sync the scrolling of the disassembly and raw byte editable data scroll views? Drives me crazy to do a CTRL-G on each window separately.
Title: Re: WinAPE enhancements
Post by: Executioner on 02:38, 31 March 16
Quote from: Singaja on 13:21, 30 March 16
Could there be an option (checkbox?) to sync the scrolling of the disassembly and raw byte editable data scroll views? Drives me crazy to do a CTRL-G on each window separately.

I'm not exactly sure why you'd want to do that, but I could go one better than that and have the option to follow an expression. For example: PC, HL, IX + 10, HL + #4000 etc.
Title: Re: WinAPE enhancements
Post by: Singaja on 09:08, 31 March 16
Quote from: Executioner on 02:38, 31 March 16
I'm not exactly sure why you'd want to do that, but I could go one better than that and have the option to follow an expression. For example: PC, HL, IX + 10, HL + #4000 etc.
Yes, that would be really useful. I mostly use WinApe for reverse engineering games, so my workflow looks like that - I have a text editor with notes , so if I want to continue working on something I need to jump around the code to edit something and that's the moment where I need to double CTRL-G on both scroll views (the disassembly and the raw bytes) to be sure the edit I'm doing is actually what I want (so after the opcodes change I can immediately see the actual updated asm). I'd love to have  some kind of colour coded comments to describe asm "source code" so I would not need to switch between WinApe and the text editor. Just don't get me wrong - I don't want to put any pressure on you, I know it's your hobby and WinApe rocks!
Title: Re: WinAPE enhancements
Post by: roudoudou on 12:50, 01 April 16
Hi
i was using Winape 2.0b2 with many disk writes (mostly under BASIC or with AMSDOS calls under OCP Art Studio)
i lost two .DSK -> they fall down to 256 bytes (as far as i remember) with code and GFX :/
i switched back to Winape 2.0b1 and no problem since
anyway, i'm doing more backups now


Anyone had the problem?
Title: Re: WinAPE enhancements
Post by: TFM on 19:30, 01 April 16
Quote from: roudoudou on 12:50, 01 April 16
Hi
i was using Winape 2.0b2 with many disk writes (mostly under BASIC or with AMSDOS calls under OCP Art Studio)
i lost two .DSK -> they fall down to 256 bytes (as far as i remember) with code and GFX :/
i switched back to Winape 2.0b1 and no problem since
anyway, i'm doing more backups now
Anyone had the problem?

That's a well know problem. The way to omit this is to Eject all DSKs before closing WinApe and the Insert DSK when you start it again. Yes, its tedious, but it's save.  :)  However you will find this problem in all versions.  :-X

I personally use Caprice most of the time, probably the 2nd oldest emulator and for sure not the most accurate. But it has AWESOME DSK handling! I just wished other emulators would do the same.[nb]Especially, ASK ME before changing then content of a DSK, so I can save a new copy of it.  :) [/nb]
Title: Re: WinAPE enhancements
Post by: roudoudou on 20:13, 01 April 16
Quote from: TFM on 19:30, 01 April 16
That's a well know problem. [...]  However you will find this problem in all versions.  :-X



gaaaaaaaaaasssssppp...


i haven't try caprice since a long time. I see there is a linux version (if you build it), i will give a try. Thanks
Title: Re: WinAPE enhancements
Post by: Singaja on 21:36, 01 April 16
Quote from: TFM on 19:30, 01 April 16
I personally use Caprice most of the time, probably the 2nd oldest emulator and for sure not the most accurate.
It was actually one of first programs I downloaded through BBS in the early 90s on a 2400 baud modem  ;D
Title: Re: WinAPE enhancements
Post by: TFM on 20:47, 03 April 16
Quote from: roudoudou on 20:13, 01 April 16

gaaaaaaaaaasssssppp...


i haven't try caprice since a long time. I see there is a linux version (if you build it), i will give a try. Thanks


Weeeeel, its only good for DSK handling and quick assembly using MAXAM (f.e.), but for serious emulation I suggest WinApe and JavaCPC - especially at the final stage of a project.  :)



Also suggarbox is quite cool! Arnold will be very interesting as soon as it is finished up.  :)
Title: Re: WinAPE enhancements
Post by: Executioner on 23:32, 03 April 16
Quote from: roudoudou on 12:50, 01 April 16
Anyone had the problem?

I've never had this problem, and have not been able to replicate it except with more than one instance of WinAPE running. If you open WinAPE once it will lock the DSK images. If you open a second copy of WinAPE it won't be able to open the DSK images and this will cause it to create empty images when it gets closed.

There is an option in WinAPE to prompt before saving changes to disc images. Turn it on.

The lock on the disc images is due to the old code which wrote directly back to the disc image when a sector was written, and to ensure the image isn't changed by something else while you're using WinAPE. The only real way to remove this requirement would be to read the entire disc image into memory when selected or at startup.
Title: Re: WinAPE enhancements
Post by: TFM on 00:18, 04 April 16
Get WinApe started
Insert an DSK
End WinApe
Start it again
DSK is down at 256 bytes (destructed)



Title: Re: WinAPE enhancements
Post by: Executioner on 00:22, 04 April 16
Quote from: TFM on 00:18, 04 April 16
Get WinApe started
Insert an DSK
End WinApe
Start it again
DSK is down at 256 bytes (destructed)

I'd like to know how you do that, because I can't. How long do you wait between closing WinAPE and starting it again?
Title: Re: WinAPE enhancements
Post by: TFM on 00:27, 04 April 16
Quote from: Executioner on 00:22, 04 April 16
I'd like to know how you do that, because I can't. How long do you wait between closing WinAPE and starting it again?


Sometimes the same day, sometimes an another day. I can't predict when it happens. Of course if happens not always, but too often. My solution is to get DSKs out before closing WinApe. That works at least for me.

Title: Re: WinAPE enhancements
Post by: Executioner on 01:06, 04 April 16
Quote from: TFM on 00:27, 04 April 16
Sometimes the same day, sometimes an another day.

Actually, under Windows 7, I just had two instances of WinAPE running, both using the same DSK image, but I didn't try and write to either of them, and when I closed them the DSK image remained intact. That said, I'm changing the code so that WinAPE tests for the existence of the file, and will only create a blank image if the file doesn't exist. If there is an error opening the file it should show an error message and make the disc read-only so you can't write to it at all.
Title: Re: WinAPE enhancements
Post by: AMSDOS on 08:24, 04 April 16
Quote from: TFM on 00:18, 04 April 16
Get WinApe started
Insert an DSK
End WinApe
Start it again
DSK is down at 256 bytes (destructed)


Mostly guessing here, but that sounds like the old DSC format which ties Winape in with RWCPC, but with that format there's 2 Files (DSC & HDR I think) and the 2nd file holds the Contents of the Disk which unlike the DSK format starts from 0 bytes upwards.


A couple of times I accidentally created Disk images of programs I typed in and when I saved, the file type box had DSK DSC and something else and made a DSC by mistake for that program just by entering that extension.
Title: Re: WinAPE enhancements
Post by: CanonMan on 09:15, 04 April 16
Quote from: TFM on 00:18, 04 April 16
Get WinApe started
Insert an DSK
End WinApe
Start it again
DSK is down at 256 bytes (destructed)


That's never happened to me.
Title: Re: WinAPE enhancements
Post by: andycadley on 12:17, 04 April 16
Given Executioner's description of how WinAPE works, I'd put money on it being something like a virus scanner locking the file for too long on opening.
Title: Re: WinAPE enhancements
Post by: Executioner on 14:36, 04 April 16
I've changed the code to test for existence of the file, and only create a new image if it doesn't exist. If it fails to open the file for any other reason, it either warns you and opens it in read-only mode, or if that also fails it sets the image to read-only so you can't cause an update to write the file when it's closed.
Title: Re: WinAPE enhancements
Post by: Executioner on 08:08, 10 April 16
I may actually change the code again yet, and always open the file in read-only mode with no locks, then check the file modification date at the end when I close the image and warn if something else has modified it.
Title: Re: WinAPE enhancements
Post by: tastefulmrship on 10:07, 10 April 16
Quote from: roudoudou on 12:50, 01 April 16
i lost two .DSK -> they fall down to 256 bytes (as far as i remember) with code and GFX :/
i switched back to Winape 2.0b1 and no problem since
anyway, i'm doing more backups now

The only way I've ever seen WinAPE create a 256 byte .dsk file is when you change the .dsk filename or move it to another folder in Windows without EJECTing or changing the active .dsk file!

eg;
Open WinAPE
Insert (or create) TEST1.dsk to Drive A
Close WinAPE
Rename TEST1.dsk to TEST2.dsk in Windows.
Open WinAPE
Close WinAPE
WinAPE creates test1.dsk of length 256 bytes, TEST2.dsk is not affected.

But this is not a new thing, WinAPE has ALWAYS done this.
Title: Re: WinAPE enhancements
Post by: Trebmint on 09:04, 13 April 16
How about putting a few video filters in like 2xSal or EPX. Would be nice to see the CPC looking a little different.


Or even a palette changer which could physically alter the CPC palette colours to user settings. For instance the user could set symbos to be 4 colours #fff,#aaa,#555,#000 so you get a cool grayscale. You could even do splits like the plastice strips you used to find on breakout back in the day 
Title: Re: WinAPE enhancements
Post by: trabitboy on 09:56, 13 April 16
Quote from: Docent on 04:40, 23 March 16
Yes, this is probably it - when WinAPE is minimized, it crashes much less frequently.I don't know what is the required resolution, I use Lenovo W520 laptop with NVidia Quadro 1000M chipset and windows 8.1 Enterprise. I run it in 1920x1080 32bit but the chipset also supports other, lower resolutions, however it may not support the WinAPE fullscreen resolution.
An option to select the resolution for fullscreen would be great.


At the moment, I'm using a winape instance on my pc which I hibernate/wake up all the time,
so I got "reacquainted" with the problem  8) )

If winape is running, it will crash when pc comes back from hibernation ( fully powered off, memory written to disk );
but if it is paused it with F7 , it's ok; coming back from hibernation I can continue emulation without pb.

So I got REALLY used to F7 before putting my pc to sleep, but once in a while I miss  :picard:
Thanks for the great emulator by the way!
Title: Re: WinAPE enhancements
Post by: roudoudou on 13:42, 13 April 16
i wrote a simple piece of code last week


Winape settings -> 6128 Plus


unlock ASIC
set raster interrupt to 1
halt
64 nop loop 200 times


then i saw unsynchronised effects...


with Winape debug, i used step by step execution then i saw sometimes it jumps to #38!


the raster interrupt is not supposed to disable classic interruptions?

Title: Re: WinAPE enhancements
Post by: TFM on 19:07, 13 April 16
Quote from: Trebmint on 09:04, 13 April 16
Or even a palette changer which could physically alter the CPC palette colours to user settings. For instance the user could set symbos to be 4 colours #fff,#aaa,#555,#000 so you get a cool grayscale. You could even do splits like the plastice strips you used to find on breakout back in the day

Well, then it's definitely no CPC anymore. So why not just use Windows in gray scale? Or why not teach symbos to use the Plus colors, since WinApe is a Plus emulator?

IMHO it's a bad thing to add features to an emulator which don't exist in reality, because we end up having something virtual and nothing will run on real CPCs or Plusses any longer.

Of course everybody can have a different POV about that, just sharing my thoughts.  :)
Title: Re: WinAPE enhancements
Post by: Trebmint on 19:18, 13 April 16
Quote from: TFM on 19:07, 13 April 16
Well, then it's definitely no CPC anymore. So why not just use Windows in gray scale? Or why not teach symbos to use the Plus colors, since WinApe is a Plus emulator?

IMHO it's a bad thing to add features to an emulator which don't exist in reality, because we end up having something virtual and nothing will run on real CPCs or Plusses any longer.

Of course everybody can have a different POV about that, just sharing my thoughts.  :)
Well most of the well respected emulators for NES, SNES, Megadrive, Master System, 2800/7800, long long list of machines from the 80's have these upscalers. I guess you're argument is true if you're into purely the machine, however if you want to play Roland on the Ropes or Sorcery and want better smoother less blocky graphics there is no way of doing so.
This doesn't change the code, speed or gameplay, just allows those that want to turn it on to have it look slightly better graphics
Title: Re: WinAPE enhancements
Post by: remax on 20:13, 13 April 16
Quote from: Trebmint on 19:18, 13 April 16
Well most of the well respected emulators for NES, SNES, Megadrive, Master System, 2800/7800, long long list of machines from the 80's have these upscalers. I guess you're argument is true if you're into purely the machine, however if you want to play Roland on the Ropes or Sorcery and want better smoother less blocky graphics there is no way of doing so.
This doesn't change the code, speed or gameplay, just allows those that want to turn it on to have it look slightly better graphics

For me if you want to play with less blocky graphics, play a more recent game... Just my humble opinion.
Title: Re: WinAPE enhancements
Post by: andycadley on 20:19, 13 April 16
Quote from: roudoudou on 13:42, 13 April 16
i wrote a simple piece of code last week


Winape settings -> 6128 Plus


unlock ASIC
set raster interrupt to 1
halt
64 nop loop 200 times


then i saw unsynchronised effects...


with Winape debug, i used step by step execution then i saw sometimes it jumps to #38!


the raster interrupt is not supposed to disable classic interruptions?

The PRI disables the standard gate array interrupts, but it doesn't change what the Z80 actually does when an interrupt occurs. If you're still in IM1, then it will still jump to #38 on each Raster Interrupt.
Title: Re: WinAPE enhancements
Post by: roudoudou on 20:51, 13 April 16
Quote from: andycadley on 20:19, 13 April 16
The PRI disables the standard gate array interrupts, but it doesn't change what the Z80 actually does when an interrupt occurs. If you're still in IM1, then it will still jump to #38 on each Raster Interrupt.


I mean, i have more than one interrupt per VBL with PRI enable!
Title: Re: WinAPE enhancements
Post by: andycadley on 21:42, 13 April 16
Quote from: roudoudou on 20:51, 13 April 16

I mean, i have more than one interrupt per VBL with PRI enable!
Hmm, shouldn't happen and I've never seen WinAPE get that wrong, I think it'd be way too obvious if it did. Bug in your code, perhaps?
Title: Re: WinAPE enhancements
Post by: roudoudou on 21:53, 13 April 16
Quote from: andycadley on 21:42, 13 April 16
Hmm, shouldn't happen and I've never seen WinAPE get that wrong, I think it'd be way too obvious if it did. Bug in your code, perhaps?


i solved the problem with a DI after the HALT and a EI when VBL occurs


i will simplify the code to isolate the problem (if it is not a bug in my code) and post here
Title: Re: WinAPE enhancements
Post by: Trebmint on 21:54, 13 April 16
Quote from: remax on 20:13, 13 April 16
For me if you want to play with less blocky graphics, play a more recent game... Just my humble opinion.
I dont actually understand this really? If it doesnt change the software, just improves the imagery via the emulator then people who dont want to use it dont and people who do can!
Are you really saying I wont use it, so I dont think anyone should be allowed too? Most other system emulators employ it so I cant see why the CPC is so pure as not to allow it
Title: Re: WinAPE enhancements
Post by: remax on 21:59, 13 April 16
Quote from: Trebmint on 21:54, 13 April 16
I dont actually understand this really? If it doesnt change the software, just improves the imagery via the emulator then people who dont want to use it dont and people who do can!
Are you really saying I wont use it, so I dont think anyone should be allowed too? Most other system emulators employ it so I cant see why the CPC is so pure as not to allow it


You like to extrapolate don't you?  :D


All i said is i find strange to want to play again an old game, and at the same time wanting to butcher his look. For me, if you want smooth graphics, play a recent game.



But every one is entitled to his own opinion and rights to play how he wants.
Title: Re: WinAPE enhancements
Post by: Trebmint on 22:11, 13 April 16
Quote from: remax on 21:59, 13 April 16

You like to extrapolate don't you?  :D



Extrapolate not really. Interpolate hell yeah  ;D
Title: Re: WinAPE enhancements
Post by: roudoudou on 22:23, 13 April 16
Here is a simple piece of code



Quote
call WaitVBL
call AsicON

MainLoop:
ld a,1
ld (#6800),a ; PRI line 1
ld b,199
ld de,#FF
ld hl,#6400
halt
loop64:
ld (hl),d ; split-raster
ld (hl),e
ld (hl),d
ld (hl),e
defs 64-4-8,0
djnz loop64
jp MainLoop


I have another INT 50 nops after the first INT. Cause of the extra-interrupt, split-rasters are delayed


(http://reho.st/self/eabddfa414e8d0cbdb82b2e44c2b6506df2e8833.png)
[/size]
Title: Re: WinAPE enhancements
Post by: TFM on 22:32, 13 April 16
Quote from: Trebmint on 19:18, 13 April 16
Well most of the well respected emulators for NES, SNES, Megadrive, Master System, 2800/7800, long long list of machines from the 80's have these upscalers. I guess you're argument is true if you're into purely the machine, however if you want to play Roland on the Ropes or Sorcery and want better smoother less blocky graphics there is no way of doing so.
This doesn't change the code, speed or gameplay, just allows those that want to turn it on to have it look slightly better graphics


Good points... Well, in this case I would just use the PC itself for even better game experience. And I guess you could argue that this is not true in all cases.... oh well. Just not perfect this world.  ;) :)


Quote from: Trebmint on 21:54, 13 April 16I dont actually understand this really? If it doesnt change the software, just improves the imagery via the emulator then people who dont want to use it dont and people who do can!Are you really saying I wont use it, so I dont think anyone should be allowed too? Most other system emulators employ it so I cant see why the CPC is so pure as not to allow it


Maybe the solution could be to make very clear which feature are native to CPC/Plus and which are native to the emulator?!
Title: Re: WinAPE enhancements
Post by: Trebmint on 23:34, 13 April 16
Quote from: TFM on 22:32, 13 April 16

Good points... Well, in this case I would just use the PC itself for even better game experience. And I guess you could argue that this is not true in all cases.... oh well. Just not perfect this world.  ;) :)



Maybe the solution could be to make very clear which feature are native to CPC/Plus and which are native to the emulator?!
I'm sure anyone that would care would know the features of the CPC and PLUS machines. Lots of emulators for other systems from the 80's & 90's have these and nobody seems confused. All it does is smooth out pixels, and given mode 0 blown up on a modern pin sharp monitor looks far more jarring than it did back with the old blurry CPC monitors.... surely its not a bad option to have?
Title: Re: WinAPE enhancements
Post by: andycadley on 05:37, 14 April 16
Quote from: roudoudou on 22:23, 13 April 16
I have another INT 50 nops after the first INT. Cause of the extra-interrupt, split-rasters are delayed
Nope, the problem you have is that the firmware interrupt handler takes an age to do anything and as a result your timing is off at the start of the screen.

You can fix it by taking the firmware out of the equation, by doing something like:

ld hl,&c9fb
ld (&38),hl

to replace the interrupt routine with an EI: RET combo.

You can see this more easily if you turn on the "Show Ints" feature in WinAPE's registers window, which changes the border whilst interrupts are being serviced.
Title: Re: WinAPE enhancements
Post by: roudoudou on 07:46, 14 April 16

As i said, this piece of code is a short version.

Try by yourself, in the full program, there is already an EI/RET in #38 -> that's why split raster are delayed of a CALL/EI/RET nops ;)


I have no explanation of the TWO interrupts per VBL with PRI enable, i'm sorry...




I will take a look at the show int feature and investigate further


Here is a longer version if you want to try







Quote
ORG #8000
nolist




DI
ld hl,#c9fb
ld (#38),hl
ei
call UnlockAsic
call WaitVBL
halt
; configure CRTC
InitWideScreen:
ld b,#BC
ld hl,crtcwidescreenregister
InitWideScreenLoop:
ld a,(hl)
inc hl
cp 255
jr z,InitWideScreenEnd
out (c),a
inc b
ld a,(hl)
inc hl
out (c),a
dec b
jr InitWideScreenLoop
InitWideScreenEnd:

; clear screen
LD HL,#C000
LD DE,#C001
LD (HL),0
LD BC,16383
LDIR

;--------------------------------------------------------------
call WaitVBL
call AsicON

MainLoop:
ld a,1
ld (#6800),a ; PRI line 1
ld b,199
ld de,#FF
ld hl,#6400
halt
loop64:
ld (hl),d ; split-raster
ld (hl),e
ld (hl),d
ld (hl),e
defs 64-4-8,0
djnz loop64
jp MainLoop





WaitVBL:
; wait VBL
ld b,#F5
novbl: in a,(c)
rra
jr nc,novbl


AsicOn:LD BC,#7FB8
OUT (C),C
ret

UnlockAsic:
DI
LD E,17     
        LD HL,ASIC   
        LD BC,#BC00
UnlockLoop    LD A,(HL) 
        OUT (C),A   
        INC HL       
        DEC E       
        JR NZ,UnlockLoop
        EI           
        RET
ASIC    DEFB 255,0,255,119,179
        DEFB 81,168,212,98,57,156
        DEFB 70,43,21,138,205,238

crtcwidescreenregister: defb 4,38,9,7,2,50,1,48,7,30,6,25,5,0,12,#30,13,0,255



Title: Re: WinAPE enhancements
Post by: roudoudou on 08:04, 14 April 16
Here are registers captures before and after the INT-CALL


(http://reho.st/self/935fd704d2481b5f1cfabb73ea4b847a6920099a.png)

(http://reho.st/self/4ec6818f63eb5cb279ab96a4a76af1049c7642f5.png)

I ask a friend to run the code on a real CPC+

Title: Re: WinAPE enhancements
Post by: Executioner on 12:40, 14 April 16
It appears that since your HSYNC width and start covers both the start and end of a scan line the interrupt happens both at the end of scan line 0 when HCC wraps back to 0 and HSYNC is still active (ie. HCC=0, VLC=1, VCC=0) and when the HSYNC becomes active again at the end of the same scan line when HCC=32, VCC=0,VLC=1. You can either adjust the HSYNC position or reduce it's width (default 14 characters) to stop this.
Title: Re: WinAPE enhancements
Post by: Executioner on 14:06, 14 April 16
P.S. It would be nice to know if the same happens on a real Plus. Unfortunately I can't test since I'm on holiday.
Title: Re: WinAPE enhancements
Post by: roudoudou on 14:38, 14 April 16
Quote from: Executioner on 14:06, 14 April 16
P.S. It would be nice to know if the same happens on a real Plus. Unfortunately I can't test since I'm on holiday.


I asked a friend, i will have an answer tonight
Title: Re: WinAPE enhancements
Post by: roudoudou on 18:25, 14 April 16
Same result on a real CPC+, two INT on the same line. Winape is accurate  :D
Title: Re: WinAPE enhancements
Post by: roudoudou on 20:32, 01 June 16



Is there a way to assemble with winape assembler the undocumented instructions like LD E,SRL(IX+4) ?
If i use DEFB, Winape can disassemble. I tried two syntax -> LD E,SRL(IX+0) and SRL (IX+0),E
None of them work
May i miss something?
Title: Re: WinAPE enhancements
Post by: Executioner on 11:50, 03 June 16
Not currently, added to the TODO list (which is still quite big)
Title: Re: WinAPE enhancements
Post by: roudoudou on 07:46, 10 June 16
Hi
I use W2.0b2 and when quitting, there was a loud bass huge sound, like broooooooonnnnnnnnnnnnn (AFTER closing winape)
(I watched a demo, reset the machine, made a CAT then quitting)
I wait a little to see if it was a buffer emptying itself but no
The sound stops when i clicked a directory in windows explorer
Title: Re: WinAPE enhancements
Post by: Executioner on 10:24, 10 June 16
Quote from: roudoudou on 07:46, 10 June 16
Hi
I use W2.0b2 and when quitting, there was a loud bass huge sound, like broooooooonnnnnnnnnnnnn (AFTER closing winape)
(I watched a demo, reset the machine, made a CAT then quitting)
I wait a little to see if it was a buffer emptying itself but no
The sound stops when i clicked a directory in windows explorer

I think it is only with 8 bit sound. Caused by WinAPE using AY-style voltage bias (ie. unsigned wave output). I think the 16 bit version uses signed output, but the volume is probably roughly halved.
Title: Re: WinAPE enhancements
Post by: roudoudou on 21:02, 19 June 16
It seems that Winape generates interrupt even when CRTC is not initialized by the first ROM


A real CPC (or Arnold) does not generate interrupt with a partial Init of the CRTC (test with Asic CPC+) then it loops in the first HALT, even after a EI


My partial init (register/value ended by 255): defb 4,38,9,7,2,50,1,48,7,30,6,25,5,0,12,#30,13,0,255


Work on real CPC only with full init (all register values from 0 to 15): defb &3f, 48, 50, &8e, 38, 0, 25, 30, &00, &07, &00,&00,&30,&00,&c0,&00


Title: Re: WinAPE enhancements
Post by: Executioner on 03:17, 25 June 16
Quote from: roudoudou on 21:02, 19 June 16
It seems that Winape generates interrupt even when CRTC is not initialized by the first ROM

I don't understand the question. The main register you're not initialising is Register 0. I assume the default value isn't 63 then.
Title: Re: WinAPE enhancements
Post by: arnoldemu on 08:33, 25 June 16
Quote from: Executioner on 03:17, 25 June 16
I don't understand the question. The main register you're not initialising is Register 0. I assume the default value isn't 63 then.
correct all crtc registers are 0 at reset.
Title: Re: WinAPE enhancements
Post by: roudoudou on 20:32, 12 October 16



i tried this with Winape 2ab2



out &bc00,15
out &bd00,222
print inp(&bf00)



it returns 0 instead of 222 as register 15 may be read (i know, it is WAS unused until today) but i need it  :P
Title: Re: WinAPE enhancements
Post by: Executioner on 00:26, 13 October 16
@roudoudou (http://www.cpcwiki.eu/forum/index.php?action=profile;u=1714) I'll look into that.

I got a new MSI notebook, so I'm attempting to move all the code over. I have a later version of Delphi (XE2) which I wanted to use and upgrade WinAPE from Delphi 7. Unfortunately, there are a few major problems with DirectX libraries etc. I'm looking into maybe going with Lazarus rather than Embarcadero RAD Studio because the prices of the new versions are quite ridiculous, and there are a lot of promising free cross-platform features.
Title: Re: WinAPE enhancements
Post by: Wanderer on 00:08, 14 October 16
Quote from: Executioner on 00:26, 13 October 16I'm looking into maybe going with Lazarus

Other projects have been coded with Lazarus, successfully as it seems. I happen to be using one of them (Total Commander (http://www.ghisler.com/) - the 64-bit version is in Lazarus).

If you wish, you could try asking Christian (TC's developer) some info on the challenges he faced (in the forum (http://www.ghisler.ch/board/index.php)).
Title: Re: WinAPE enhancements
Post by: roudoudou on 22:54, 19 October 16
Hi


I was testing some FDC format functions


I create a track with a size 6 sector


First i send a regular format command track 40, sector size 0, ID=1, Gap  then i change sector size to 6 during sector list sending


If i eject the floppy at this point, the DSK saved contains a track 40 with one size 0 sector (not 6 as specified AND expected)


If i format and write to the sector and finally eject the floppy, Winape crashes and write nothing to the DSK


The normal behaviour (or HFE point of view) is to unformat track cause sector 6 write will erase track descriptor. But, in a DSK point of view, it is expected than the sector is written and stored, without Winape crash, like Arnold will do, for example.






Here are the two sources


track format adapted from A100% code source



org #8000


ld bc,#FA7E
ld a,1
out (c),a
di


ld b,0
sttt
push bc
ld b,0
djnz $
pop bc
djnz sttt


ld bc,#FB7E
call recale


; start at track 40
ld a,40
ld hl,piste
ld (hl),a
jp seek


;--------------------------------
start
ld a,4
call putfdc
xor a
call putfdc
call getfdc
and #c0
jp nz,error
ld ix,liste_secteur
ld hl,sequence_format
ld d,6


formatage
ld a,(hl)
call putfdc
inc hl
dec d
jr nz,formatage
ld d,0 ; legal track format sector size (not used during writing operation)
ld e,(hl)
ld h,0
ld a,(ix+0)


data
ld l,a
test
in a,(c)
jp p,test
inc c
out (c),e ; track ?
dec c
test1
in a,(c)
jp p,test1
inc c
out (c),h ; head
dec c
test2
in a,(c)
jp p,test2
inc c
out (c),l ; Sector ID
dec c
test3
in a,(c)
jp p,test3
inc c
ld a,6
out (c),a ; Sector size 6
dec c
inc ix
ld a,(ix+0)
cp #ff
jr nz,data


ld hl,tampon
ld d,7


get
call getfdc
ld (hl),a
inc hl
dec d
jr nz,get


ld a,(tampon)
and #C8
jr nz,restart
ld a,(tampon+1)
and #82
jp nz,error
ld a,(tampon+2)
and #22
jp nz,error
ld a,4
call putfdc
xor a
call putfdc
call getfdc
and #C0
jp nz,error
ei
ld a,'#'
call #BB5A
di
ld hl,piste
inc (hl)
ld a,(hl)
cp 41
jr z,suit


seek ld a,#0F
call putfdc
xor a
call putfdc
ld a,(hl)
call putfdc
call ready
jp start


restart
call recale
jr seek


recale
ld a,7
call putfdc
xor a
call putfdc
ready
ld a,8
call putfdc
call getfdc
ld e,a
call getfdc
ld a,e
and #20
jr z,ready
ret


suit
ld a,7
call putfdc
xor a
call putfdc
call ready
ld hl,message_point
call printsystem


motoff ld bc,#FA7E
xor a
out (c),a
ei
ret


error
ei
call motoff
ld hl,message_erreur
call printsystem
ret


message_erreur defb 'Erreur (disquette protegee ou lecteur vide)'
message_point defb '.',10,13,0
message_fin defb 10,13,0


printsystem ld a,(hl)
or a
ret z
call #BB5A
inc hl
jr printsystem


putfdc push af
lieta in a,(c)
rla
jr nc,lieta
sors inc c
pop af
out (c),a
dec c
ret


getfdc push bc
ld bc,#FB7E
litfdc in a,(c)
rla
jr nc,litfdc
inc c
in a,(c)
pop bc
ret


sequence_format defb #4D,0,0,1,80 ; size 0 sector for command!
remp defb #AA
piste defb 40
liste_secteur defb 1,#FF
tampon defs 7,0



write sector from A100% code source


org #8000


; ECRITURE SECTEUR
; HL=adresse memoire
; A=piste
; D=secteur debut
; E=secteur fin
di
call MOTON
;
; 8191 #DD
; ended by a 8192e #DE
ld a,#DD
ld hl,#4000
ld (hl),a
ld de,#4001
ld bc,8191
ldir
inc a
ld (de),a
;




ld a,40
ld de,#101
ld hl,#4000
call ECRITURE
call MOTOFF
ei
ret


MOTOFF
ld bc,#FA7E
xor a
ld (MOTOR),a
out (c),a
ret


MOTON
ld a,(MOTOR)
or a
ret nz
ld bc,#FA7E
inc a
ld (MOTOR),a
out (c),a
ld e,25
MOTON_tempo
call WAITVBL
dec e
jr nz,MOTON_tempo
ret


VBL
ld b,#F5
NOVBL
in a,(c)
rra
jr nc,NOVBL
ret


VBLEND
ld b,#F5
CURRENTVBL
in a,(c)
rra
jr c,CURRENTVBL
ret


WAITVBL
CALL VBL
CALL VBLEND
ret


SEEKTEST
di
ld bc,#FB7E
LITFDC
in a,(c)
and #10
jr z,SEEK
LITFDC2
in a,(c)
rla
jr nc,LITFDC2
rla
jr c,ECRIS
LIS
inc c
in a,(c)
dec c
jr LITFDC


ECRIS
xor #FF
inc c
out (c),a
dec c
jr LITFDC


SEEK
ld a,#0F
call PUTFDC
xor a
call PUTFDC
ld a,(PISTE)
call PUTFDC
SEEKOK
ld a,8
call PUTFDC
call GETFDC
ld d,a
call GETFDC
ld a,d
and #20
jr z,SEEKOK
ret




ECRITURE
ld (PISTE),a
ld a,d
ld (SECTEURDEB),a
ld a,e
ld (SECTEURFIN),a
call SEEKTEST


push hl
ld hl,COMMAND
ld d,9
WRITECOMMAND
ld a,(hl)
inc hl
call PUTFDC
dec d
jr nz,WRITECOMMAND
pop hl
jr GETDATA


PASRES
inc c
ld a,(hl)
out (c),a
inc hl
dec c
GETDATA
in a,(c)
jp p,GETDATA
and #20
jr nz,PASRES


ld d,7
ld (MEM),hl
ld hl,RETOURFDC
LISRETOUR
call GETFDC
ld (hl),a
inc hl
dec d
jr nz,LISRETOUR
ret


PUTFDC
push af
PUTFDC2
in a,(c)
rla
jr nc,PUTFDC2
pop af
inc c
out (c),a
dec c
ret


GETFDC
in a,(c)
rla
jr nc,GETFDC
inc c
in a,(c)
dec c
ret




COMMAND defb #45
lecteur defb 0
piste defb 40
test defb 0
SECTEURDEB defb 1
type defb 6
SECTEURFIN defb 1
gap3 defb #20
taille defb 0


MEM defw 0
motor defb 0
RETOURFDC defs 7,0








Title: Re: WinAPE enhancements
Post by: 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.
Title: Re: WinAPE enhancements
Post by: robcfg on 10:29, 20 October 16
That's why you should finish your Portable CPC project...  ;)
Title: Re: WinAPE enhancements
Post by: Bryce on 11:05, 20 October 16
True, but when I'm away on business I don't want to be dragging two laptops around with me. There's also more chance of WinAPE getting fixed before I finish that laptop. :D

Bryce.
Title: Re: WinAPE enhancements
Post by: VincentGR on 11:10, 20 October 16
Can't help you with the aero thingy but how about using savestates?
Title: Re: WinAPE enhancements
Post by: Bryce on 11:27, 20 October 16
Quote from: VincentGR on 11:10, 20 October 16
Can't help you with the aero thingy but how about using savestates?

Not sure what you mean. How would that help me?

Bryce.
Title: Re: WinAPE enhancements
Post by: VincentGR on 11:49, 20 October 16
You can save your game/code progress and when it locks you can load the last position.
Title: Re: WinAPE enhancements
Post by: Bryce on 12:41, 20 October 16
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.
Title: Re: WinAPE enhancements
Post by: Prodatron on 13:04, 20 October 16
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.
Title: Re: WinAPE enhancements
Post by: Bryce on 13:27, 20 October 16
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.
Title: Re: WinAPE enhancements
Post by: 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.


;)


Title: Re: WinAPE enhancements
Post by: Kris on 15:00, 20 October 16
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 ?

Title: Re: WinAPE enhancements
Post by: dragon on 18:38, 20 October 16
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 :).


Title: Re: WinAPE enhancements
Post by: roudoudou on 20:36, 02 December 16

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
Title: Re: WinAPE enhancements
Post by: 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.


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.
Title: Re: WinAPE enhancements
Post by: Docent on 04:08, 30 December 16
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


Title: Re: WinAPE enhancements
Post by: andycadley on 06:43, 30 December 16

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?
Title: Re: WinAPE enhancements
Post by: roudoudou on 22:31, 04 March 17
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


Title: Re: WinAPE enhancements
Post by: fgbrain on 11:50, 17 April 17
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)  :'(
Title: Re: WinAPE enhancements
Post by: Shining on 07:34, 12 May 17
Late, but here are some wishes from my developer point of view:


- When you've loaded .noi-Symbols:
- Playcity-support
- M4-Support including the network capabilities



Title: Re: WinAPE enhancements
Post by: Rhino on 14:12, 12 May 17
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:

(https://hackadaycom.files.wordpress.com/2015/09/eclipse-ide.png)

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
Title: Re: WinAPE enhancements
Post by: roudoudou on 16:07, 12 May 17
Or you can use any IDE and include the root file.
Title: Re: WinAPE enhancements
Post by: Rhino on 20:36, 12 May 17
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?
Title: Re: WinAPE enhancements
Post by: roudoudou on 21:17, 12 May 17



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/ (http://www.cpcwiki.eu/forum/programming/z80-syntax-highlighting-for-notepad/)
Title: Re: WinAPE enhancements
Post by: Arnaud on 06:22, 13 May 17
Quote from: roudoudou on 21:17, 12 May 17

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

Also create un project : http://docs.notepad-plus-plus.org/index.php/Project_Management
and run an external program (compiler for example) : http://docs.notepad-plus-plus.org/index.php/External_Programs#Running_a_command
Title: Re: WinAPE enhancements
Post by: Marskilla on 18:37, 07 June 17
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 ?
Title: Re: WinAPE enhancements
Post by: Longshot on 11:29, 05 August 17
Hello Richard.
Little bug found here :
http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/amstrad-plus-and-im2-bug/30/ (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)
Title: Re: WinAPE enhancements
Post by: roudoudou on 14:20, 18 August 17
Do you plan new graphics options like 'double windowed screen size' in the future?
Title: Re: WinAPE enhancements
Post by: 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?

[attachimg=1]
Title: Re: WinAPE enhancements
Post by: SOS on 18:23, 28 December 17
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
Title: Re: WinAPE enhancements
Post by: krusty_benediction on 15:07, 11 March 18
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

Title: Re: WinAPE enhancements
Post by: roudoudou on 16:17, 11 March 18
Quote from: krusty_benediction on 15:07, 11 March 18
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


I'm using Winape 2.0b2


LD A,I counts 3 nops
ADD (IX+0) counts 5 nops


Can you isolate and reproduce the counting error with the integrated assembler?
Title: Re: WinAPE enhancements
Post by: krusty_benediction on 17:46, 11 March 18
(http://www.cpcwiki.eu/forum/data:image/png;base64,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)
(http://www.cpcwiki.eu/forum/data:image/png;base64,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)
Yep I have the same bug using the code
    org 16384

    ld a, i
    add (ix+0)
To launch the prog I have manually modified PC to go in 0x4000.
Figure 1 gives the amount of nops (in the box T) for ld a,iFigure 2 for add (ix+0)
edit: the image has not been included; T box respectively gave 1 an 2
Title: Re: WinAPE enhancements
Post by: roudoudou on 18:23, 11 March 18
Quote from: krusty_benediction on 17:46, 11 March 18
To launch the prog I have manually modified PC to go in 0x4000.


I tried you way (setting PC) and my way (assembling the source below with F9) without wrong timing...



org #4000
run #4000
ld a,i ; press F5 on this line to enable breakpoint
add (ix+0)



My winape.exe is 2.443.776 bytes



EDIT: Even the W2A18 gives my the correct timings
Title: Re: WinAPE enhancements
Post by: krusty_benediction on 20:03, 11 March 18
Quote from: roudoudou on 18:23, 11 March 18
My winape.exe is 2.443.776 bytes

My mistake: turbo mode was activated. I did not though it acted on the nop counter.By deactivating it, everything works ok
So there is no bug, just a faulty user....
Sorry for making you lost your time
Title: Re: WinAPE enhancements
Post by: oss003 on 10:43, 28 May 18
Hi guys,


I'm new to the forum and have a question about autostarting a program in WinAPE:

- I'm using WinAGD to create a game sourcefile called GAME.AGD
- The AGD compiler creates an assembler sourcefile called GAME.ASM with the command: COMPILECPC GAME
- To create a binary file called GAME.BIN I'm using PASMO with the command:PASMO GAME.ASM GAME.BIN
- Then I create a diskimage called NEWDISK.DSK and add the file GAME.BIN to it with CPCDiskXP: CPCDiskXP -File GAME.BIN -AddToNewDsk NEWDISK.DSK
- To autostart WinAPE with GAME.BIN, I type: WINAPE NEWDISK.DSK /A:GAME.BIN

Then WinAPE reports a disk error, am I doing something wrong?
Can somebody help me with this?
Title: Re: WinAPE enhancements
Post by: Golem13 on 14:01, 29 May 18
Quote from: oss003 on 10:43, 28 May 18
Hi guys,

I'm new to the forum and have a question about autostarting a program in WinAPE:

- I'm using WinAGD to create a game sourcefile called GAME.AGD
- The AGD compiler creates an assembler sourcefile called GAME.ASM with the command: COMPILECPC GAME
- To create a binary file called GAME.BIN I'm using PASMO with the command:PASMO GAME.ASM GAME.BIN
- Then I create a diskimage called NEWDISK.DSK and add the file GAME.BIN to it with CPCDiskXP: CPCDiskXP -File GAME.BIN -AddToNewDsk NEWDISK.DSK
- To autostart WinAPE with GAME.BIN, I type: WINAPE NEWDISK.DSK /A:GAME.BIN

Then WinAPE reports a disk error, am I doing something wrong?
Can somebody help me with this?
Is the amsdos header automaticaly added with the file when you execute the CPCDiskXP -File command ?
Title: Re: WinAPE enhancements
Post by: oss003 on 21:06, 29 May 18
Now it is, I added it to the CPCdiskXP command:CPCDiskXP -File GAME.BIN -AddAmsdosHeader 7D0 -AddToNewDsk NEWDISK.DSK
The strange thing is that if I manually install the disk image in drive A and run TEST.BIN, it works but not when I start WinAPE NEWDISK.DSK /A:TEST.BIN so the disk image is ok....
Title: Re: WinAPE enhancements
Post by: oss003 on 13:16, 30 May 18
Solved it ........ you have to add the complete path to the disk image name ...



Title: Re: WinAPE enhancements
Post by: GUNHED on 15:07, 01 June 18
It would be great if Mode 2 videos would be recorded correctly.  :)
Title: Re: WinAPE enhancements
Post by: krusty_benediction on 17:47, 08 September 18
it would be great if
- in the main window, Debug > Send to CPCWifiwould generate a v2 sna and send it to the cpcwifi. - in the disc editor window, Right clic on a file >  Run on CPCWifi would put the dsk on the cpcwifi and ask to run the selected file
Powered by SMFPacks Menu Editor Mod