Commit Graph

674 Commits

Author SHA1 Message Date
tomcw
391336a383 Apple II,II+ keyboard: ignore up/down arrows. (Fixes #617) 2019-01-19 10:18:16 +00:00
tomcw
875a0bdd11 Very minor clean-up 2019-01-10 22:00:53 +00:00
tomcw
4d7a3323e9 Extended -videorom <file> to also support Original //e (#574) 2019-01-10 21:38:21 +00:00
TomCh
25c7c41b07
Reinstate support for old AppleWin 1.25 "Color (Standard)" video mode (#357) (PR #614)
Renamed this video mode to: "Color (RGB Monitor)"
Also renamed "Color (Monitor)" to "Color (NTSC Monitor)".

As for the colours: I've changed them from the original 1.25 colours. Instead I runtime-generate the colours from the NTSC code. See NTSC.cpp's GenerateBaseColors(). This shifts the same 4-bit pattern in, combining with NTSC color phase, until the colour stabilises. Then I average the next 4 RGB values to get the final colour. The reason for this is that we now have consistent colours between NTSC and this simplified rendering mode.

NB. The 2 greys (in GR,DGR,DHGR) are now the same RGB value.
2019-01-09 21:29:36 +00:00
tomcw
8ee651a6f8 Fixed comment typo 2019-01-06 17:02:24 +00:00
tomcw
ceb0416bf3 Fixed 6522 & interrupt:
. Broadside needs to see IRQ within 17 cycles (6 opcodes) of 6522 counter underflowing to detect Mockingboard. (Fixes #605)
2019-01-06 16:54:54 +00:00
tomcw
eea8cb3cdf Deprecated and removed support for v1 save-state. (Fixes #603) 2019-01-05 22:20:51 +00:00
tomcw
b17f880e6d HDD: Added a swap HDD function to the Config->Disk UI (#585) 2018-12-09 11:48:22 +00:00
tomcw
d0f03fc90c Removed CTRL+F10 functionality to reveal mouse cursor (fixes #597) 2018-12-09 10:05:46 +00:00
tomcw
54fffdf25a 1.27.13: Bump version & update History.txt + help 2018-12-08 13:29:48 +00:00
tomcw
5ddff0d688 DiskII: read write protect - fix spinning test 2018-12-03 21:36:54 +00:00
tomcw
5504d280c7 When drive is off then data register holds its present state. (Fixes #599)
NB. Drive off = motor off && stopped spinning after 1 sec delay.
2018-12-03 17:38:52 +00:00
tomcw
cbd41333c9 2K ROM: refactor 2018-11-21 21:21:54 +00:00
tomcw
af899fa90a Added support for Apple II/II+ 2K video ROMs (fixes #205) 2018-11-19 22:15:04 +00:00
TomCh
aa59c71847
Add support for PAL/European or custom 8K video ROMs (#596)
Added new cmd-line switch: -videorom <file> to replace the video ROM for the Enhanced //e.
- Support video ROM sizes of 4K, 8K and 16K (top 8K only).
- NB. The rocker switch is set to European video ROM.
F10 (for //e or Enhanced //e models) emulates the PAL //e's rocker switch (under the keyboard) to toggle between European or US video ROM.

Other:
- Fixed debugger's view of the AltCharSet soft-switch (it was showing the opposite state).
2018-11-17 16:29:17 +00:00
tomcw
14e0bb7b71 Added new switch: '-no-hook-alt' - used to prevent left/right ALT from emulating open/closed apple keys (#583) 2018-11-10 15:55:20 +00:00
tomcw
6fb5b3b0e8 Refactor: consolidate 'modechanging' optimisations into a single function 2018-11-10 10:30:19 +00:00
TomCh
42c58f54e7
Refactor Language Card (#593)
* Refactor Language Card:
. MemSetPaging() now not used for $C080-C08F accesses.
  - Instead LC registers its own I/O handler like all other slot 1-7 cards.
. Saturn uses base LC's 16K for bank0

* Move all 'modechanging = 0' to UpdatePaging()
2018-11-09 20:51:51 +00:00
tomcw
f9b7d9326e Fixed Coverity 'High Impact Outstanding' issues:
CIDs in main code:
1446691
1446688 (false positive)
1446672 (false positive)
1446643
1446642
1446641
1446635 (false positive)

CIDs in debugger:
1472410
1446728 (false positive)
1446684
1446673
1472409
1446693
1446692
1446726
1446687
1446685
1446683
2018-11-06 19:13:28 +00:00
tomcw
3bf94eca9d Fix for save-state v1: original Apple II needs a LC 2018-11-04 20:04:38 +00:00
tomcw
325bc23d08 Fix for LC when //e (broken 13c3936) 2018-11-04 17:29:22 +00:00
tomcw
155547f847 1.27.10: Bump version & update History.txt 2018-11-04 16:35:25 +00:00
TomCh
13c393624b
Apple II original: default to 48K (ie. no Language Card) (PR #592)
Added support for #590:
* Changed Apple II original to default to no LC
* Added new cmd-line switch: -s0 <languagecard|lc>
* Changed so when LC is in slot-0, it now use Apple II+'s F8 (auto-start) ROM
2018-11-04 15:07:46 +00:00
tomcw
09ab12d0b6 Save-state: Keyboard - save 'Key Waiting' flag. (Fixes #591) 2018-11-01 21:14:16 +00:00
tomcw
034337cb28 Saturn: Change cmd-line to -s0 <saturn|saturn64|saturn128> 2018-10-27 18:49:50 +01:00
tomcw
9e1170ca9e LC: Added more comments when loading save-state memory v1 for II or II+ 2018-10-27 18:16:32 +01:00
TomCh
46274d4d1c
Apple II: Language Card and Saturn support for slot-0 (PR #589)
Support for #408:
* added slot-0 LC and Saturn 128K for Apple II and II+
* added save-state support
  - for slot-0 LC/Saturn, save the LC state in the slot-0 card, not the //e MMU; and switch to a new Apple2 unit ver2
* added g_Slot0, g_SlotAux
* added new LanguageCard.cpp/h to project and moved Saturn code into these new files.
* updated VS2013,2015,2017 projects
2018-10-26 11:23:30 -07:00
tomcw
91a6227da1 Debugger: Fixed disasm of branch targets <000 missing leading zeros. (Fixes #587) 2018-10-13 22:35:55 +01:00
TomCh
53d1d04988
DiskII: Support partial nibble reads for very close disk latch reads (#586)
Support partial reads for sequential accesses of 6 or less cycles.
- And 31 or less cycles when in "Disk Access Speed" = "Authentic Speed"
Save-state support for partial read cycle (Disk][ unit v3)
Added boot-time logging for Phasor1.dsk (ProDOS 1.1.1)
2018-10-02 22:08:54 +01:00
tomcw
a2d05ca386 mem(cache): provide more details about how the mem(cache) and associated variables work, eg. when reading/writing to the same or different memory banks 2018-09-16 22:02:35 +01:00
tomcw
a15e5a47f6 MemGetAuxPtr(): Refactor & added comment about video scanner fetching aux from the 1st 64K aux bank (#520) 2018-09-10 21:28:08 +01:00
tomcw
39f91c552c NTSC (#555)
. For the 14M video modes (DHGR,DGR,80COL), start rendering 1x 14M pixel early to account for these video modes being shifted right by 1 pixel
. Revert the display width back to 560 by disabling EXTEND_14M_VIDEO_BY_1_PIXEL
2018-09-09 15:41:04 +01:00
tomcw
7d100a349b NTSC: Merge-squash from 'GH555-1-pixel' branch for the 1 pixel shift for 14M video modes (#555) 2018-09-09 13:56:55 +01:00
tomcw
396c55d8a3 Coverity: tackled a few CIDs (#470) 2018-08-12 12:48:08 +01:00
tomcw
bd7a96ce6e Small refactor of VideoGetScannerAddress() 2018-08-06 19:06:28 +01:00
tomcw
d623533e06 Improve VideoGetScannerAddress() to generate NTSC tables; and check tables with all video cycles 2018-08-05 22:19:51 +01:00
tomcw
5e02eaee53 Use VideoGetScannerAddress() to generate the NTSC video lookup tables 2018-08-02 22:37:20 +01:00
tomcw
e4bd6162c5 Refactor: move code for WM_CLOSE next to WM_DESTROY, and WM_KEYDOWN next to WM_CHAR 2018-07-31 18:17:42 +01:00
tomcw
898f30f08a Fixed save-state on exit not working if there was a VM restart (eg. config h/w change). Fixes #564 2018-07-31 18:06:53 +01:00
tomcw
140d505fe9 Keyboard:
. reverted default so that ALT+TAB is not hooked (#556)
. reverted default so that ALT GR's fake LCONTROL is not hooked (#558)
. added new switches: -hook-alt-tab and -hook-altgr-control to support hooking these key combo's (#556)
2018-07-29 22:34:09 +01:00
tomcw
a4f225555f Keyboard: added comment for GH558 and removed some debug logging 2018-07-27 22:05:59 +01:00
TomCh
6ed354714e
Support ClosedApple+key with Alt Gr when combined with a regular keyboard key:
. When Alt Gr is pressed, then manually post WM_CHAR message on receiving a WM_KEYDOWN (manually translate and account for shift/control/caps-lock)
. Hook filter: suppress Alt Gr's (ie. RMENU's) fake LCONTROL messages

Also:
. Hook filter: allow Ctrl+Shift+Esc (for Task Manager)
. Keyboard: refactor only use accessor functions to get the Alt/Control/Shift state
2018-07-27 21:55:53 +01:00
tomcw
1afa2490c5 Keyboard: Refactor for GetKeyState() 2018-07-23 22:27:33 +01:00
tomcw
97b07eaee4 Keyboard hook filter:
. Created a dedicated thread with message loop (#570)
HookFilter dll: Only call GetKeyState() if keycode is ESC (instead of every time)
DebuggerCursorUpdate(): reduce sleep from 10ms to 1ms
2018-07-15 21:00:01 +01:00
tomcw
c457241229 Keyboard:
. When in MODE_LOGO, don't pass WM_CHAR to Apple II keyboard (now consistent with WM_KEYDOWN)
. Small refactor for Apple II keyboard's WM_KEYDOWN handler
Move code for log init & done to Log.cpp
2018-07-15 15:38:37 +01:00
tomcw
881e51874b Fix for other apps having sluggish key response - fixes #569 2018-06-30 18:21:28 +01:00
tomcw
9cacf8d90d Small refactor for reading $C01x soft switch status flags
Prevent Apple II from reading $C01x/$C07F soft switch status flags
2018-06-30 14:30:30 +01:00
tomcw
47ec7f4355 Reverted ad12a8e: video rendering from screen position -1: so now DHGR vertical column 559 is hidden again (see #555).
Changed HGR rendering, such that that last video byte (at hpos=64) clears g_nLastColumnPixelNTSC so that the end-of-line off-screen pixel is zero (see #555).
2018-06-23 17:50:23 +01:00
tomcw
9bc7feb37e Mockingboard: Better support for stop/starting 6522's IER.TIMERx (#567) 2018-06-20 22:13:18 +01:00
tomcw
7f478fa36c Mockingboard: Reading 6522's IER now returns 0x80|IER. (Fixes #567) 2018-06-17 18:47:57 +01:00
tomcw
6ad2621282 Fixed save-state not saving last key & update history.txt 2018-06-16 11:36:43 +01:00
tomcw
51669f36f3 Hook system keys: (#556)
. added -no-hook-system-key to prevent hooking system keys
. updated help
. HookFilter.dll: changed to directly send virtual key code
2018-06-16 10:24:05 +01:00
tomcw
734bc4cee2 AKD: Support both Return and Enter (and other extended keys). (#330) 2018-06-12 21:50:27 +01:00
tomcw
4a0e93fe28 Added new -alt-enter cmd-line switch to allow configuration of Alt+Enter behaviour (#556) 2018-06-10 18:14:34 +01:00
tomcw
e0da17ed96 Removed all VS2012 proj/slns (#559) 2018-06-10 17:01:44 +01:00
tomcw
fdd6a622dc Simplified AKD support 2018-06-02 22:26:29 +01:00
tomcw
539f5db40a Fix for //e keyboard's AKD. (Fixes #330) 2018-05-30 22:38:10 +01:00
tomcw
a07407c6f8 Suppress AKD support for II and II+ models. (Fixed #116) 2018-05-28 22:36:00 +01:00
tomcw
0d4be07e7e SysKey hook filter:
. Fix for GetKeyState() not detecting the special keys as being up (so AKD was erroneously reporting the key still down).
. eg. Whilst pressing TAB, press LEFT ALT, then release TAB.
2018-05-28 22:13:54 +01:00
tomcw
6b53adde55 SysKey hook filter:
. Also suppress ALT+SPACE
. PostMessage to AppleWin message-pump for WM_KEYDOWN, WM_KEYUP for these special key combos
. Add special any-key-down (AKD) handling for these special key combos
2018-05-28 17:27:38 +01:00
tomcw
19b90800cf Add hook filter for system keys (eg. ALT+TAB, ALT+ESC, CTRL+ESC) - #145, #556 2018-05-27 10:56:35 +01:00
tomcw
20cd8913f5 For #556: Suppress the Windows Default Beep (ie. Ding) whenever ALT+<key> is pressed. 2018-05-26 18:04:13 +01:00
tomcw
ad12a8e6d2 Fix for #555:
. Start video rendering from screen position -1 (ie. 1 DHGR pixel offscreen)
. Allows 559th DHGR vertical column to be visible
. But now an HGR HCOLOR=2 vertical line at column 0 is only 1 DHGR pixel wide
Also:
. Fix TEXT80 to be aligned with DHGR
. Fix FLASH in TEXT80 (inverse aux bits needed to be masked with 0x7f)
2018-05-24 21:34:26 +01:00
tomcw
3e7cc361ff #555: Fix for displaying colour dots & vertical lines in the far right hand column 2018-05-13 17:33:13 +01:00
tomcw
7beaf610d2 SSC:
. Save-state: SSC unit v2 - support DCD flag, removed redundant vars
2018-05-10 13:47:26 +01:00
tomcw
2fdc270837 SSC: Make default baud-rate consistent (9600) 2018-05-05 16:56:15 +01:00
tomcw
ba090ebcef SSC: Change DIPSW1's baud rate to 9600 (was 19200) & reflect this change in the help doc for SSC 2018-04-23 21:34:09 +01:00
tomcw
52e7d61c7e SSC:
. DCD state is now a mirror of DSR unless -dcd switch is used. (Fixes #553)
. Removed -dsr,-dtr switches, so -modem is now an alias for -dcd.  (Also for #553)
. Wait for events (RLSD,DSR,CTS) in CommThread and call GetCommModemStatus() in CommThread.
2018-04-22 14:37:59 +01:00
michaelangel007
10d68a3308 Debugger: 2.9.0.15: Cleanup: HELP CALC examples and See also. 2018-04-17 09:45:45 -07:00
michaelangel007
74c6739542 Debugger: Added HELP CALC see also: HELP OP 2018-04-17 09:43:06 -07:00
michaelangel007
c449ef12b7 Debugger: Clarify HELP CALC operators 2018-04-17 09:33:56 -07:00
michaelangel007
e852d91031 Debugger: Add examples for HELP CALC 2018-04-17 09:32:58 -07:00
michaelangel007
858586d646 Debugger: Cleanup output order of HELP CALC 2018-04-17 09:32:11 -07:00
michaelangel007
f9bc18f54c Debugger: Fix spelling 2018-04-17 09:30:59 -07:00
michaelangel007
9105019e11 Fixed: Debugger 2.9.0.14: HELP JSR 2018-04-17 07:16:21 -07:00
michaelangel007
8a9ddda46a 2.9.0.13: Add profiler cycles 2018-04-15 13:35:58 -07:00
tomcw
4ab5aa1e7c SSC work:
. SSC: For TCP mode, support DSR, DCD & CTS status bits (#308).
. SSC: Now DTR must also be set to enable interrupts (in addition to the respective Tx/Rx interrupt bit).
. SSC: When reading the Status register, throttle calls to GetCommModemStatus() to a maximum of once every 8ms.
2018-04-14 21:15:41 +01:00
tomcw
2900816167 Removed duplicate extern FILE* g_fh 2018-04-08 17:48:08 +01:00
TomCh
a78f1e04da
SSC: Support for TX IRQ and other SSC updates (#552)
. Support TX IRQ for both TCP and COM modes (fixes #522)
. Support CTS/RTS (fixes #311)
. Fixed reading DIPSW registers
. Fixed TCP mode which was only generating an IRQ for first byte received
. Added UpdateCommandReg() to consolidate all updates to SSC command reg
. Updated reference URLs
2018-04-08 17:37:26 +01:00
tomcw
598b20fb52 Refactor: Use INTCXROM instead of SLOTCXROM to be consistent with UTAIIe (fixes #419) 2018-04-06 22:36:54 +01:00
tomcw
419238bb54 Added cmd-line option: -s7 empty to remove the HDD Controller card from slot 7 2018-04-05 21:33:36 +01:00
tomcw
2ba55e0c12 Fix Swap Disk regression (fixes #543) 2018-04-02 18:21:18 +01:00
tomcw
9be3864f32 Added cmd-line options -h1,-h2 for specifying HDDs - #398 2018-04-02 12:38:05 +01:00
tomcw
d7de4908cd Add comment for the reason that reset doesn't affect memmode & videomode for II and II+ models.
Add accessor for memmode, make static and replace extern refs with GetMemMode().
2018-03-19 18:49:08 -07:00
tomcw
8dcc5d50ca Added a comment about HD_Insert() - #541 2018-03-10 14:30:18 +00:00
tomcw
2d2304b4c6 AppleWin's Config>Benchmark, reported a "Pure CPU MHz" which was not a good indicator of unthrottled speed for v1.26+, as it was still getting the emulator to do full NTSC/cycle-accurate video update. The reality (when in full-speed/unthrottled mode) is that the video is only refreshed at 16.6ms (wall-clock).
So added a 2nd "Pure CPU MHz" for full-speed (ie. no video update), eg:

---------------------------
Benchmarks
---------------------------
Pure Video FPS:	2860 hires, 2868 text
Pure CPU MHz:	10.3 (video update)
Pure CPU MHz:	241.3 (full-speed)

EXPECTED AVERAGE VIDEO GAME
PERFORMANCE: 476 FPS

(ref: #424, #540)
2018-03-03 22:01:03 +00:00
tomcw
d9accc82c5 Refactor codebase by renaming nCyclesLeft to uExecutedCycles (#540) 2018-03-03 21:27:50 +00:00
tomcw
93f57c0970 Logging: allowing logging of PrintScreen even when switch is used to suppress MsgBox 2018-02-28 21:23:20 +00:00
tomcw
d4a3c5c28f PrintScreen key: Improve UI feedback when any of the 3 registrations fails & log failures (fixes #547)
Also tweak to full-speed: consolidating 2 calls to DiskII module into 1 call.
2018-02-27 21:07:16 +00:00
tomcw
552d8fcc7b Remove old debug timing code (#540) 2018-02-26 21:34:01 +00:00
tomcw
6c031e7930 Disk II: changing 'enhancedisk' doesn't cause a restart + added accessors (fixes #546) 2018-02-25 15:09:25 +00:00
tomcw
e1286de7a9 Disk II: 'Swap Disks' only swaps disk (not drive properties) - fixes #543 2018-02-25 14:05:45 +00:00
tomcw
92504e0751 Refactor of Disk.cpp and Disk.h in preparation for #543.
Changed struct Disk_t:
. Added new struct Drive_t with "has-a" relationship to Disk_t
. Split properties of drive into Drive_t and properties of disk into Disk_t
2018-02-25 13:38:04 +00:00
Andrea
70540bd6dc Fix the following errors reported by VS2017 Code Analysis. (#414)
* Fix the following errors reported by VS2017 Code Analysis.

applewin\source\applewin.cpp(761): warning C6385: Reading invalid data from '"Disk Image"':  the readable size is '11' bytes, but '21' bytes may be read.
applewin\source\debugger\debug.cpp(6624): warning C6386: Buffer overrun while writing to 'sName':  the writable size is '31' bytes, but '32' bytes might be written.
applewin\source\debugger\debugger_display.cpp(3715): warning C6053: The prior call to 'strncpy' might not zero-terminate string 'sText'.
applewin\source\log.cpp(42): warning C6053: The prior call to '_vsnprintf' might not zero-terminate string 'output'.
applewin\source\debugger\debug.cpp(2759): warning C6011: Dereferencing NULL pointer 'pFont'.
applewin\source\debugger\debugger_symbols.cpp(243): warning C6053: The prior call to '_tcsncpy' might not zero-terminate string 'pText'.
applewin\source\diskimagehelper.cpp(1132): warning C6053: The prior call to '_tcsncpy' might not zero-terminate string 'pszExt'.
applewin\source\diskimagehelper.cpp(1141): warning C6053: The prior call to '_tcsncpy' might not zero-terminate string 'szFilename'.
applewin\source\parallelprinter.cpp(242): warning C6053: The prior call to '_tcsncpy' might not zero-terminate string 'g_szPrintFilename'.

The one about RegSetValue(), according to Microsoft

https://msdn.microsoft.com/en-us/library/windows/desktop/ms724922(v=vs.85).aspx

the last argument cbData is ignored, so I set it to 0, as in some cases was anyway wrong (see "DiskImage").


Signed-off-by: Andrea Odetti <mariofutire@gmail.com>

* Use sizeof() rather than hardcoded value.
Fix one more case on non terminated string.


Signed-off-by: Andrea Odetti <mariofutire@gmail.com>
2018-02-24 15:24:37 +00:00
Andrea
6051bc55d0 Changes to ease code compilation in gcc. (#541)
Changes to ease code compilation in GCC.

Disk_t and HDD contain a std::string and for this reason they need a proper constructor, ZeroMemory is not guaranteed to work.
2018-02-24 15:12:40 +00:00
tomcw
20022d999d Minor: use global floppylatch 2018-02-24 13:18:26 +00:00
tomcw
dc565dd28c Removed extra local var and updated DOS 3.2 INIT comment 2018-02-23 22:39:51 +00:00
tomcw
a07d087467 Improve logging and fix asserts for DOS 3.2 INIT (#537) 2018-02-15 21:54:15 +00:00
tomcw
82fdf1ab6a DiskII: allow reading of write-protect state when in write mode (#537) 2018-02-11 14:52:21 +00:00
tomcw
839812ab7d Debugger: OutputTraceLine() - add single-step comment 2018-02-02 21:10:46 +00:00