|
Post by willymanilly on Dec 27, 2017 3:06:23 GMT
In my mad rush I just noticed I put this in VDC programming section by mistake. Grateful if a forum administrator can put this in the appropiate section.
|
|
|
Post by willymanilly on Dec 27, 2017 2:32:05 GMT
I've been researching the behavior of the VICIIe during 2Mhz mode and am just sharing some of my findings. This is a very brief explanation of my observations so is not going to be very technical. Once I finish researching I will give a more detailed analysis of my observations. As you know when using poke 53296,1 to set the cpu to 2Mhz mode the VICII output loooks random. In actual fact it is possible to control the output of the VICII in 2 Mhz mode with precise timing. When in 2Mhz mode the following seems to happen. I've attached some test programs that show this behavior. - VICIIe no longer can control the databus or freeze the cpu
- CPU always runs at 1Mhz mode during DMA refresh cycles (5 cycles per line)
- VICIIe still behaves as though it is fetching data on badlines and sprite DMA but the data received by the VICIIe is controlled directly by the CPU. Using the VICII article by Christian Bauer as a reference, the following seems to happen during c-access and g-access
C-access data +----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | +----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | phase 1 data left | *interal VICII databus (can be seen when reading| | on bus from cpu | and writing to VICII registers in bitmap mode.) | +-------------------+-------------------------------------------------+
g-access data
+----+----+----+----+----+----+----+----+----+ | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | +----+----+----+----+----+----+----+----+----+ | phase 2 data left on bus from cpu | +----+----+----+----+----+----+----+----+----+
The VICII version of Risen from Oblivion uses the above concepts with their awesome demo. I have implemented all the above discussed behavior in the new UI of Z64K. I note the color of the 4th last character of the test screenshot does not match (directly after the @ symbol) but otherwise seems to match perfectly. The part with light blue background of first test is in 2Mhz mode. 2nd test demonstrates point in c-access highlighted with *.
I'm being rushed out the door for social commitment but I will update this information and clarify any questions when I'm free.
Attachments:2Mhztest20170106v2.zip (140.4 KB)
|
|
|
Post by willymanilly on Nov 26, 2017 3:21:07 GMT
How do I switch to the 80-column-screen on the New UI version? I can only see the 40 column screen. I haven't included switching screen modes via the menu settings yet for the newUI. For now you can use the following shortcuts. ALT-O = Toggle 40/80 screen output ALT-2 = Toggle 2nd screen on/off ALT-ENTER = Toggle Full Screen mode
|
|
|
Post by willymanilly on Oct 30, 2017 4:17:32 GMT
Hi,yet yet I tried your C-128 emulator on a Linux with JAVA version 1.8.0_131. I've got a "AZERTY" keyboard. The emulation is very slow, and there is a noise. On the keyboard, the number keys don't work, thus, I can't get the " symbol. Hope this help you ;-) Thanks for your feedback. What are the specs of the computer you are running Linux on? I've been more focused on accuracy at this stage so the emulator does require a reasonably fast computer to run at full speed. What average cycles/second does the emulator report for you in the title bar? The noise is possibly a result of the host computer not being fast enough to run the emulator at full speed. I've noticed spasmodic static noise when I test the emulator on my Raspberry Pi 3 which I know is nowhere near fast enough to run c128 at full speed. I've also noticed a small clicking noise when the c128 emulator resets on my laptop and desktop that I use for testing but I think that happens on my real c128 as well when I reset it. I've used a VMWare instance of Ubuntu 17.04 with JAVA version 1.8.0_131. to test the emulators running on Linux and it runs at 100% under all loads for me. I'd be interested in other peoples setup and the performance of the emulator on them with and without limit speed. I plan on adding optimisations without sacrificing accuracy of the emulator in the future. Have you tried the development version of the new UI available here ==> www.z64k.com/resources/Z64KNewUI.jar ? I've been rewriting the UI from the ground up with many improvements, especially with the rendering that uses a separate thread from the core of the emulator. I've still got a few things I need to implement and finalise, including host computer sound options and improved multi-monitor support. The new UI will be replacing all the current emulators as a first release once it has all their features implemented. In C128 mode, the number pad acts as joystick and num keypad depending if NUM LOCK is enabled or not. I haven't got access to an AZERTY keyboard so can't really test myself. Once I finally release the new UI version of the emulator I will be calling on the community to assist with internationalization. One of the biggest challenges of writing this emulator has been supporting the various keyboards and languages everyone uses. The last few months have been busier than normal socially and at work for me so I've had little time to focus on this project but I'm hoping to have more time over the next few months to work on it. Thanks to everyone so far who have contributed to it's development by testing and offering suggestions to improve it.
|
|
|
Post by willymanilly on Jul 18, 2017 22:18:25 GMT
How do I load an option rom? I see there are some tick boxes for it but I can't tick them or browse for a file. You can select a Function Rom using Load External Rom or Load Internal Rom under the File menu. Once you load one of them, the appropriate tick box in the chip set settings becomes active so you can select/unselect that ROM mapped into memory. I've done minimal testing on this functionality but the roms I've had access to seem to work as expected.
While I'm talking about ROMS, I plan on adding an option for the user to select their own Kernal ROMS for the computer and drives as well. In the mean time users can customise ROMS used by the emulator by using a program like WinRAR to open the JAR file and change the ROMS manually. They are under the assets folder. Ensure you keep the name of the ROM you replace the same size and name otherwise the emulator won't start up.
|
|
|
Post by willymanilly on Jul 3, 2017 13:32:14 GMT
I would ask for improved debugging capabilities mainly at this point. - A help command in the debugger that displays all commands.
- I want to feed a symbol list at boot to get addresses replaced by symbol names when disassembling using addresses from 0 to $1FFFF.
- The debugger needs to handle RAM from $00000 to $1ffff. It seems to have broken support for this with 'd 10000' and 'm 10000' for instance.
- I want to feed breakpoints using a file at boot. Could be same as the symbol list, like VICE.
- I would like memory breakpoints as well: read, write or both.
- I need to see both 40 and 80 column screens at the same time.
I'm going to start work on improving the Machine debugging features. As a starting point I will be implementing most of the commands in the same format as VICE uses for consistency between the emulators. The complete list of commands in the current emulator which I haven't really publicly announced are in the following list. I created most of these for my own use for debugging the emulator so they are likely to change but someone might find them useful for now. If anyone has any requests or suggestions on specific commands or functionality, taking note I will be using the commands VICE uses as a template, this is the time to ask. I plan on improving the UI, and will also allow feeding of breakpoints, labels, etc at boot. *arguments are in hexadecimal Command
| Action | a <address> [<instruction>[:<instruction>]*
| Assemble instruction to address. Only can assemble 6502 instructions at this stage. No arguments lists all the current cpu's available main instruction set. (Z80 or 6502)
| b [<address>]
| Toggle breakpoint at address. no argument lists current breakpoints. Breakpoints can also be toggled by right clicking the disassembled code in the left debugging window.
| cd <directory>
| Change working directory
| cls | Clear machine monitor screen
| dir
| View files and folders in current directory
| d [<address>]
| Disassemble instructions from address. If no argument disassemble from last address
| m [<address>]
| Memory dump from address. If no argument dump from last address
| l <filename> <address>
| Load file to address. If address is not included emulator will use first 2 bytes of file contents as the load address. Address range can be from 0-1ffff
| s <filename> <start address><end address>
| Save memory range to file. Address range can be from 0-1ffff
| g <address>
| set PC address and exit monitor
| j <address>
| set PC to address but stay in monitor
| r <xxxx>
| execute xxxx machine cycles at current cpu speed and disassemble to machine monitor. WARNING don't use number too high (anything above ffff) because emulator will debug that many cycles which can be slow and there is no way to cancel operation once started. I will fix this in a future release.
| z <xxxx>
| execute xxxx cpu instructions WARNING don't use number too high (anything above ffff) because emulator will debug that many instructions which can be slow and there is no way to cancel operation once started. I will fix this in a future release. NOTE: I just noticed this command is broken and will only execute 1 complete instruction regardless of argument. I have found the bug and will have this fixed in the next release.
| switch [0:1]
| switch device. 0=computer, 1= device 8. I will likely changed this command to the same name (device) and format as VICE uses.
| cpu
| print name of current cpu
| c <color>
| clear main display to color. If no argument, color will be black
| p <address><value>
| poke address with value
| x
| exit monitor
| C128 Specific Commands
|
| z80
| switch cpu to z80
| 6502
| switch cpu to MOS8502
| rb0
| switch to ram bank 0
| rb1
| switch to ram bank 1
| noramshare
| disable ram share (software disable only)
| cbxx
| list all z80 cbxx available instructions
| ddxx
| list all z80 ddxx available instructions
| edxx
| list all z80 edxx available instructions
| fdxx
| list all z80 fdxx available instructions
| ddcb
| list all z80 dbxx available instructions
| fdcb
| list all z80 fbxx available instructions
| vdc
| dump vdc register values
| vdcmem <address>
| dump vdc memory start at address
| charmap <address>
| dump vdc memory as charmap
|
|
|
|
Post by willymanilly on Jul 1, 2017 23:34:32 GMT
ahha, it wasn't just me who couldn't find the escape key then ! How about a menu option to select 40/80 column as they key is missing? Great work again Thanks. The 40/80 key in earlier versions of the emulator was mapped to F11 but is now mapped to F7 in the latest version I just uploaded to my website. I plan on adding icons to the bottom emulator panel to represent the status of the CAPS LOCK and 40/80 keys, I just need to find/create some nice icons. The complete list of keyboard mapping is as follows:- F1=ESC F2=TAB F3=ALT F4=CAPS LOCK F5= HELP F6=LINE FEED F7=40/80 DISPLAY F8=NO SCROLL The following keymappings override the values in the keyboard configuration editor for the C128 F9 = F1/F2 F10= F3/F4 F11= F5/F6 F12=F7/F8 Other changes are:- PC CAPS LOCK = C128 SHIFT LOCK For emulated NUMPAD Joystick Num Lock needs to be OFF. C128 NUMPAD keys works with Num Lock ON. *Update There is an option to enable/disable extra c128 keys via settings==>setup==>Extended Keyboard keys in the latest downloadable version of the emulator. Default is enable extended keyboard keys in C128/CPM modes only. The C128 Direction keys are mapped to PC cursor keys, and CRSR U/D and CRSR L/R mapped to PC NUMPAD / and * when Extended Keyboard keys enabled.
|
|
|
Post by willymanilly on Jul 1, 2017 15:57:47 GMT
Regarding your emulator I was wondering where to find the "ESC"-key? The extra C128 keys are emulated now including the ESC Key (mapped to F1)! The only keys that are not mapped are the addition arrow keys. Updated emulator and details of changes available on my website.
|
|
|
Post by willymanilly on Jul 1, 2017 3:06:59 GMT
Is there anyway to make it so I can drag and drop a PRG onto it and have it auto-run? You inspired me to have a look at dragging and dropping functionality and the solution was relatively easy in Java. I have enabled dragging and dropping PRG files onto the main screen of the emulators which will reset the machine and autorun the program. I plan on extending this functionality for other file types. Please note when loading PRG files, the C128 emulator doesn't properly set the BASIC pointers after loading yet so some programs might fail. The majority I have tried work OK without the need to update the BASIC pointers though. If anyone knows off the top of their head which memory locations should be updated after loading a PRG file, that would be useful for me to complete PRG support for the C128. I do have all documentation to be able to figure it out myself but I just haven't got around to it yet.
|
|
|
Post by willymanilly on Jun 30, 2017 12:27:07 GMT
NicE! That means it should work with my VGA Rockfall as well now. Whats the download link for this latest version? Cool. Let me know if it works. Website is here ==> www.z64k.com/
|
|