Compare commits

...

123 Commits

Author SHA1 Message Date
tomcw
7499adafdd rw3: power-cycle sets card back to 64K bank-0 (fixes #1414) 2025-07-09 22:20:53 +01:00
tomcw
72cc98d72a Fix for loading save-state test with continuous SSI263 phoneme 2025-07-06 18:00:10 +01:00
tomcw
79499fba0e Bump year to 2025 in resource file 2025-07-06 17:25:37 +01:00
tomcw
5386891222 MB:SSI263: update History.txt & help on command line for configuring SSI263 & SC01 chips 2025-07-06 17:14:26 +01:00
tomcw
d18f0a58a2 SSI263: Fix for power-down (CONTROL=1) not silencing continuous phoneme (#1412) 2025-06-21 13:40:10 +01:00
tomcw
d35bb2bcde For Drive1/2 pop-up menu: fade out all audio whilst menu is active. (fixes #1407) 2025-06-13 20:23:25 +01:00
tomcw
c245494859 Update firmware/BootSector batch files.
Fix out-of-date comment.
2025-06-13 19:48:16 +01:00
Andrea
b7452e00ba Fix compilation for LoadStringA() (PR #1410)
. LoadStringA() does not exist.
2025-06-13 19:21:58 +01:00
Michael "Code Poet" Pohoreski
0b12427f27 Update readme with forks and models (PR #1409)
* Add links to unofficial ports
* Update models supported
2025-06-13 18:49:10 +01:00
Andrea
75cc573d0e Make ProDOS utils cross platform. (#1406)
* Move ProDOS utils to separate file.

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

* Use std::vector to fix and avoid memory leaks.

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

* Remove TEXT and TCHAR.

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

---------

Signed-off-by: Andrea Odetti <mariofutire@gmail.com>
2025-06-13 08:51:59 -07:00
tomcw
cdba020ca7 Fix off-by-one error 2025-06-08 19:28:46 +01:00
tomcw
552d830045 SSI263:
. Default to SSI263AP (ie. with reset fixed)
. Support SSI263 type set from cmd-line: SSI263P, SSI263AP or empty
. Support SC01 type set from cmd-line: SC01 or empty
. Save-state: MB v14: support SSI263 & SC01 type (including Empty)
2025-06-08 12:42:55 +01:00
tomcw
001ffe8dee MB: Add cmd line to set SSI263 type or empty socket 2025-06-07 23:10:59 +01:00
tomcw
aa90c9e8e0 History.txt: Correct the release date 2025-05-31 12:05:50 +01:00
tomcw
0b5ce77e41 Bump version: 1.30.21.0 2025-05-31 10:23:02 +01:00
tomcw
04a6c6ec6c Fix for static_assert(): requires message parameter pre-C++17 2025-05-31 10:17:53 +01:00
tomcw
ba3b371ed6 Help: Creating Disk Images: reduce size of pop-up menu. 2025-05-30 22:38:17 +01:00
tomcw
ddb3755389 Update History.txt 2025-05-30 22:28:08 +01:00
tomcw
00ab15ddaf Fix focussing issue for AppleWin.chm, when it overlaps the AppleWin window. (#1403) 2025-05-30 22:19:18 +01:00
tomcw
e10eb0b42f WOZ: MessageBox's message: add full-stop 2025-05-30 22:00:59 +01:00
tomcw
7e40218be7 Tweak History.txt 2025-05-30 19:30:58 +01:00
tomcw
8182d99563 Improve robustness of WOZ chunk processing, and reject it if it's malformed. (#1402) 2025-05-25 22:03:55 +09:00
tomcw
515cbc3e00 1.30.21: Update History.txt 2025-05-25 11:13:20 +09:00
Michael "Code Poet" Pohoreski
3d0ef63537 Extend context menu for disk buttons (Disk image QoL) (#1363, PR #1364)
Persist menu selection for bitsy.boot, bitsy.bye, basis & prodos.sys to Registry.
Add new cmd line '-bootsector <pathname>'.
Add BootSector (code & binary).
Add OS (basic17.system, bitsy.boot, quit.system; DOS33 & ProDOS2.4.3).
Update help doc:
. add workflow info to ddi-create.html.
. add new ddi-sizes.html, and ddi-advanced.html (for advanced workflow).
2025-05-22 22:44:28 -07:00
tomcw
403ae5d044 Help: Update all the external HTML refs to open the page in a browser (and not within the CHM viewer) 2025-05-05 10:34:48 +01:00
tomcw
d963ab5e7e Add 'DOS 3.3 System Master - 680-0210-A.dsk'
Update help doc to ref this disk image.
Update makeAppleWin.bat to copy this disk image and set read-only.
2025-05-05 09:48:25 +01:00
tomcw
fb059c7bc5 Update help doc: include refs to BLANK.DSK and ProDOS_2_4_3.po 2025-05-04 22:20:23 +01:00
tomcw
810642c00d Update makeAppleWin.bat for the new release disk images 2025-05-04 22:02:47 +01:00
tomcw
23074f2020 Delete MASTER.DSK 2025-05-04 22:00:04 +01:00
Michael "Code Poet" Pohoreski
2902ca0024 Update disk images shipped in the release (#1365, PR #1378)
* Rename MASTER.DSK to BLANK.DSK.
  - And updated using Apple DOS 3.3 January 1983.dsk
* Add ProDOS_2_4_3.po
2025-05-04 21:57:01 +01:00
tomcw
fede2c103a Help doc: Add a note about using Ctrl+C to copy Benchmark results to the clipboard 2025-05-04 20:11:23 +01:00
Andrea
92a35ae481 Portable detection of 32/64 builds. (#1392, PR #1400) 2025-05-04 20:01:44 +01:00
tomcw
217a31d095 Include AppleWin version & '32/64-bit build' info-string in Benchmark dialog summary (#1392) 2025-05-04 20:00:33 +01:00
tomcw
265f1ddbf1 Include '32/64-bit build' info-string in log file and debugger's MOTD (#1392) 2025-05-04 18:36:33 +01:00
Michael "Code Poet" Pohoreski
32749dbcad #1397 Add warning when trying to copy memory and the source end address is less than the source start address. (#1398) 2025-05-02 15:26:57 -07:00
tomcw
19cef509f7 Help: Keyboard: add info about ALT+TAB (and the suppressed keyboard shortcuts: ALT+ESC, ALT+SPACE and CTRL+ESC). 2025-04-21 10:26:12 +01:00
Andrea
5bdbbb2a87 Remove references to DebugDefs.h (PR #1395)
. Removed unused declarations.
2025-04-20 12:38:27 +01:00
TomCh
d052327fb4 Update README.md
Update stable release version from 1.30.17 to 1.30.20.
2025-04-09 10:43:56 +01:00
tomcw
a4fa3b5cb5 Debugger: fix Ramworks3's bank display number (fixes #1393) 2025-04-05 09:27:50 +01:00
tomcw
c3fb55d376 Add debug cmd line: '-alt-cpu-emu' 2025-04-04 22:16:18 +01:00
TomCh
839c493b67 Support IIe aux slot: 80-col(1KiB) card via generic read ptrs (#1341, PR #1391)
Better support the IIe's aux slot when it's empty or has the 80-col(1KiB) card.
- any h/w using this alternate CPU emulation, (ie. aux=empty or 80-col(1KiB)), then the 'mem' cache is completely bypassed.
Debugger: change all the direct 'mem' accesses to go via ReadByteFromMemory().
TestCPU6502: test the alt CPU emulation code too.
2025-04-03 21:10:02 +01:00
Andrea
629e1344a2 tfe_store: explicit cases to avoid warning. (PR #1389) 2025-03-09 18:12:22 +00:00
Michael "Code Poet" Pohoreski
9d312230e5 Debugger view output QoL (#1384, PR #1387)
. Add HGR Pages 6, 7, 8 Visualizer viewing for Language Card.
. Update help for HGR Visualizer hotkeys 6, 7, 8 and debugger commands HGR6, HGR7, HGR8.
2025-03-02 15:57:27 +00:00
michaelangel007
9006430f0c #1384 Update main table of contents for Debugger View Ouptut 2025-02-22 10:21:09 -08:00
tomcw
e262595e30 AppleWin help: fix some typos & html debugger TOC issues 2025-02-22 17:33:09 +00:00
Michael "Code Poet" Pohoreski
c1592b90f4 Debugger view output QoL (#1384, PR #1385)
. Add (missing) help for Debugger's View Output
2025-02-22 16:57:10 +00:00
tomcw
07914230a7 Update comment 2025-02-22 14:47:07 +00:00
Andrea
fa6d2f7c12 Fix initial volume of SSI263 and after a Load State. (PR #1383)
It was set at the maximum level rather than the Mockingboard volume.
2025-02-22 14:38:04 +00:00
tomcw
245773795f RamWorks III: default to 1MiB (16x 64K banks). (#478) 2025-02-13 20:56:59 +00:00
Andrea
acbef19489 Remove TEXT() and _T(). (PR #1379) 2025-02-13 20:48:37 +00:00
TomCh
b35a4d17d2 Restore SC01 continuous phoneme playback from save-state (#1372, PR #1380)
. Save-state: Mockingboard v13: deprecate SS_YAML_KEY_VOTRAX_PHONEME (from Mockingboard card).
. Consolidate the save/loading of the SSI263 & SC01 state into single function (in class SSI263).
2025-02-11 21:54:48 +00:00
tomcw
fa181922f0 Commit 287a0f8 fixed #1318 2025-02-09 21:56:05 +00:00
tomcw
287a0f892e SSI263: Fix phoneme leadout ASSERT when single-stepping.
(And add some logging for SSI263::Update() for early returns)
2025-02-09 21:43:21 +00:00
tomcw
693812319a Use dtor for setting m_hasVidHD=false when VidHD card is removed. 2025-02-08 16:42:01 +00:00
tomcw
0ef6ead4a6 Fix setting m_hasVidHD=false when '-s3 empty' is specified on cmd line 2025-02-08 16:32:48 +00:00
Michael "Code Poet" Pohoreski
67896db65e Document the disk image size magic numbers. (PR #1375)
* Document the disk image size magic numbers (in source & help doc).
* Mention 40+ tracks after oddball disk sizes.
* Debugger 2.9.2.2: Fixed: DB HGR = 2000:3FFF was displaying help instead of being parsed.
* Debugger 2.9.2.3: Fixed: DB HGR = 2000:3FFF and DB FOO = 300 wasn't parsing correctly from 2.9.1.3. Fix for commit 48e0fe3a.
* Debugger: 2.9.2.4 Fixed: DA RESET = 3F2 was displaying help instead of being parsed.
* Debugger: 2.9.2.5 Added: Symbol table for DOS 3.3 using file A2_DOS33.SYM2
* Debugger: 2.9.2.6 Added: QoL: Turning a symbol table on/off now shows the current status.
2025-02-08 16:11:08 +00:00
tomcw
bd87cae92c Improve logging: for -fs-width/height=x: for each display resolution, after the WxH also output the aspect ratio. 2025-02-08 16:03:41 +00:00
TomCh
5bc7e495bf Restore SSI263 continuous phoneme playback from save-state (#1372, PR #1376)
. Defer each SSI263's DSInit() until SSI263::Play() & Update() are called.
. Refactor DSInit(): rename to Init() for consistency with MockingboardCardManager class.
. m_currentActivePhoneme: never return to -1 value, instead OR with kPhonemeLeadoutFlag.
. Save-state: Mockingboard v13: deprecate SS_YAML_KEY_SSI263_ACTIVE_PHONEME.
2025-02-08 13:37:50 +00:00
tomcw
648e5cca25 Replace a missed _tcslen() with strlen() 2025-02-08 11:11:31 +00:00
Andrea
168e868677 Remove TCHAR and <tchar.h> (PR #1373)
. Replace TCHAR -> char.
. Remove <tchar.h> and related functions.
2025-02-08 11:09:09 +00:00
tomcw
1f3e253c4b Help doc: -f-height, best: include info when vidhd is enabled 2025-02-06 21:35:50 +00:00
michaelangel007
f44d058a09 Debugger: 2.9.2.6 Added: QoL: Turning a symbol table on/off now shows the current status. 2025-02-06 11:48:28 -08:00
michaelangel007
977cc01d85 Debugger: 2.9.2.5 Added: Symbol table for DOS 3.3 using file A2_DOS33.SYM2 2025-02-06 11:47:33 -08:00
michaelangel007
fa608c1f89 Debugger: 2.9.2.4 Fixed: DA RESET = 3F2 was displaying help instead of being parsed. 2025-02-06 10:38:15 -08:00
michaelangel007
3659beb776 Debugger 2.9.2.3: Fixed: DB HGR = 2000:3FFF and DB FOO = 300 wasn't parsing correctly from 2.9.1.3. Fix for commit 48e0fe3a. 2025-02-06 10:37:10 -08:00
michaelangel007
cb0da8538d Debugger 2.9.2.2: Fixed: DB HGR = 2000:3FFF was displaying help instead of being parsed. 2025-02-06 09:59:00 -08:00
tomcw
9bd5f838b3 RepeatInitialization(): fix function's code indentation. NB. no code changes! 2025-01-26 19:40:24 +00:00
tomcw
7cde8d40c9 RepeatInitialization(): call KeybReset(). Fixes #1367 2025-01-26 19:32:32 +00:00
tomcw
7aa6fb5757 Help doc: bump (c) to 2025 2025-01-19 20:52:15 +00:00
tomcw
ef088e49ae RamWorks III: default to 2MiB (32x 64K banks). (#478) 2025-01-19 20:47:48 +00:00
TomCh
02b6bbdbb5 RamWorks III - 16MB support (#478, PR #1369)
. Allow up to 256 x 64KiB banks
. Persist aux slot's mem card's "Number of Banks" to Registry
. LoadConfiguration() now restores aux card from Registry - don't need to pass cmd line each time
. Update help docs
2025-01-19 18:16:53 +00:00
TomCh
d6c1654e97 Fix SmartPort Status cmd when reading status to aux mem (#1319, PR #1366)
. Use CpuWrite() instead of directly writing to 'mem'
. Check writes don't hit I/O space or ROM
2025-01-15 21:24:17 +00:00
tomcw
143f6679b6 Fix NMOS 6502 illegal opcode 0C (fixes #1360) 2025-01-07 21:51:34 +00:00
michaelangel007
6c6d821051 Debugger 2.9.2.1 Added: Error message when trying to add a symbol > 51 characters. See Issue #1342 2025-01-06 15:45:47 -08:00
tomcw
c336a0ce40 Fix 2 minor bugs:
1) Debugger: wasn't accounting for 80STORE when checking PAGE2 switch (eg. CTRL+PRNTSCRN)
2) 80-col 1KiB card (std80): wasn't checking SW_WRITERAM
2025-01-05 17:25:32 +00:00
Andrea
c4e81fc71d DebugFont: use an ID which is a valid macro. (PR #1359)
Simplifies linux resource embedding.
2025-01-05 17:13:06 +00:00
tomcw
b1a03a1a81 Logging: add log msg when AY reg writes are discarded (likely due to ScrollLock / full-speed mode). (#1358) 2025-01-04 13:30:36 +00:00
Andrea
3a3663d9d6 More cleanup (PR #1357)
SoundBuffer: move Windows only flags to DXSoundBuffer.
Remove out of date _MSC_VER checks (pre-VS2019).
2025-01-04 12:35:31 +00:00
Andrea
d7918d9ac9 A few miscellaneous cleanups. (PR #1355)
Move DSXXX function to a more specific location.
. DSAvailable() is not implemented in SoundCore.
. DSInit() & DSUninit(); are only meaningful in Windows.
SoundBuffer: use plain C++ to clean it up as opposed to COM interfaces.
. which are only relevant to the Win32 implementation.
Remove 2 obsolete FMT macros.
NTSC: load bitmaps by resource id.
SoundBuffer: make creation of a SoundBuffer an atomic operation.
Fix 2019 solution.
2025-01-02 21:08:55 +00:00
tomcw
80af06db77 Debug: fix MB IRQ logging 2025-01-02 21:04:15 +00:00
TomCh
16b2cf329e Support IIe aux slot: empty or with 80-col(1KiB) card (#1341, PR #1351)
Add new command line switch: -aux <empty|std80|ext80|rw3>
Add 6502/65C02 x normal/debugger alt read support for CPU emulation (#1353).
Fix bug in MemReadFloatingBus() reading from mem[] - no good, if MF_AUXREAD is set.
Support odd 80-col text video mode when aux slot is empty:
. add a new videoMode flag for VF_80COL_AUX_EMPTY.
Correctly support 80COL & DHIRES soft-switches when aux slot is empty or with std80 card.
Support VidHD's SHR with -aux <empty|std80>.
Save-state: support aux slot empty or with std80 card.
2024-12-30 21:39:16 +00:00
Jamiras
a2b03483ee Add SoundBuffer interface (PR #1352)
This replaces the LPDIRECTSOUNDBUFFER pointer with a pure virtual class and an implementation that wraps the LPDIRECTSOUNDBUFFER, allowing other sound implementations without having to simulate the exact alignment of a DIRECTSOUNDBUFFER object.

Additionally, moves the DSInit and DSUninit calls out of the SoundCore.cpp file (into a new DXSoundBuffer.cpp (for Windows)), allowing them to be appropriately reimplemented in a non-DirectSound environment.
2024-12-30 12:42:26 +00:00
Jamiras
cb1366f485 Check _WIN32 instead of _MSC_VER (PR #1346) 2024-12-24 12:06:37 +00:00
Andrea
35f176e4d8 Replace DWORD -> uint32_t. (PR #1350)
Some have been left where tightly coupled with the Win32 API.
2024-12-21 12:32:00 +00:00
tomcw
44babe9814 Add comment for RamWorks III on a reset 2024-12-16 15:25:18 +00:00
Andrea
9b15559949 Minizip: include minizip as "minizip/unzip.h" and "minizip/zip.h". (#1345)
This aligns AW to the new way minizip is meant to be included:

7e6f0784cc

Which avoids ambiguous includes if zip is installed in a non standard path.

Signed-off-by: Andrea Odetti <mariofutire@gmail.com>
2024-12-06 17:31:34 +00:00
tomcw
3fb6839458 Debugger: Increase symbol length from 31 to 51 chars 2024-11-24 18:12:48 +00:00
tomcw
000b546613 MB: Refactor: rename m_phasorEnable to m_isPhasorCard 2024-11-23 15:05:02 +00:00
tomcw
d1d026f7ab MB: Refactor: add SetPhasorMode() 2024-11-23 14:57:16 +00:00
tomcw
a6416acb87 MB: SSI263: Don't try to create DS soundbuffer if DS is unavailable 2024-11-23 14:25:09 +00:00
tomcw
b5544142e0 MB: Refactor IsActive() to IsActiveToPreventFullSpeed() (#1340) 2024-11-20 21:00:38 +00:00
tomcw
d896e1cec2 MB: Fix for SSI263 phoneme blocking enhanced disk II full-speed mode. (Fixes #1340) 2024-11-18 21:27:56 +00:00
tomcw
7f9563b8ea 1.30.20: Update History.txt 2024-11-16 12:21:51 +00:00
tomcw
a0e79d449e Help: Keyboard: add some 'quick-start' info to the top of this page. (PR #1335) 2024-11-16 11:29:13 +00:00
tomcw
ae4b34decf Fix VS2019 proj 2024-11-15 22:51:51 +00:00
tomcw
7c6ec3dbf0 Add cmd line option (for testing): -load-state-ignore-hdc-fw 2024-11-03 19:02:01 +00:00
TomCh
964a5d5198 Oz-DOS and Format command support (#88, PR #1337)
Support FORMAT cmd:
. HDC firmware: byte $FE, b3=1 (format supported)
. HDC firmware: allow both SmartPort and BLK FORMAT cmd (and check that SP FORMAT only has 1 parameter)

SmartPort Controller:
. Format will just zero all blocks (if not write-protected)
. Write cmd: if write-protected return NOWRITE
. SP Status cmd: 'General Status': set format-allowed & write-protected flags

If HDD image is read-only then support as write-protected.
. On Insert() setup m_bWriteProtected flag correctly
2024-11-02 11:39:49 +00:00
tomcw
5ddb2357aa History.txt: Revert the claim for the Oz DOS fix 2024-10-16 21:43:21 +01:00
tomcw
f6d0c0088c HDC: Improve logging 2024-10-16 21:41:37 +01:00
TomCh
910313f176 Fix edge-case for 6522 Timer write (#1333, PR #1334)
Refactor GetOpcodeCyclesForRead()/Write() to make then consistent & consolidate common code.
2024-10-15 21:26:38 +01:00
tomcw
9f508d1b7e MB: Fix ASSERT for 6522 write (#1333) 2024-10-13 18:09:21 +01:00
tomcw
617e2b5d16 Help: Troubleshooting: add item about overriding high DPI scaling behaviour (#1295) 2024-10-12 20:03:15 +01:00
tomcw
cf42f77b70 Update History.txt with a few issues fixed by previous AppleWin versions 2024-10-12 18:47:02 +01:00
Andrea
3033f3445b SaveState: add absolute path for disk & hdd images. (#1290, PR #1294) 2024-10-06 20:44:24 +01:00
tomcw
e8641555e8 Debugger: visually show that a 6522 is configured as bad in mini-mem window's title 2024-09-28 16:46:28 +01:00
tomcw
5f40ac8e70 Fix 6522 ctor 2024-09-25 21:48:41 +01:00
tomcw
b764c00d50 Cmd line: -sN 6522a|b-bad (for mb-audit) 2024-09-25 20:58:59 +01:00
tomcw
8739b6ba08 DiskII: C0E8 (DRIVES OFF): Improve logging & comments (#926) 2024-09-20 21:57:51 +01:00
tomcw
ec90ebf156 Help: Update harddisk page for Block mode/SmartPort etc 2024-09-17 21:05:09 +01:00
tomcw
8a3de5592a Help doc: add Hayden dongle 2024-08-25 14:31:44 +01:00
TomCh
29c02d6bf2 Gh1267 update paging (#1326)
MemGetBankPtr(): simplify with a default arg. (#1262, PR #1326)
. UpdatePaging(): improve comment for page0 & page1 and memdirty
2024-08-24 20:18:28 +01:00
tomcw
f035a53374 For II/II+/Unenhanced //e use the new SmartPort firmware, but with $Cs07 = 0x3C. (#1319) 2024-08-21 23:01:29 +01:00
tomcw
b3aef776c2 Help: tweak info on -s<n> hdc-[bm2|bm4] 2024-08-21 22:35:02 +01:00
TomCh
57ba330072 Support Hayden dongle (#1312, PR #1325) 2024-08-21 22:15:34 +01:00
tomcw
91743eeebc Help: add cmd-line info about '-s<n> hdc-[sp|bm2|bm4]' 2024-08-17 22:03:15 +01:00
tomcw
ad6482a89c Help: add cmd-line info about '-s5h* <pathname>' and '-s7h* <pathname>' 2024-08-17 21:43:13 +01:00
tomcw
25820cc145 History.txt: update to match GH release details 2024-08-17 21:26:10 +01:00
TomCh
fd93396162 Uthernet I/II: Activate DEV SELECT I/O even if NIC interface is not valid (PR #1324) 2024-08-17 21:20:00 +01:00
tomcw
4786de0cc7 Floppy/Harddisk images: on failure, close handle for all return paths. (Fixes #1227) 2024-08-17 16:14:09 +01:00
tomcw
1127447a10 U1, U2: small refactor 2024-08-15 20:08:38 +01:00
tomcw
2e65426a11 Get U2 to emit similar warning to U1 when interface isn't valid. (#1321) 2024-08-15 18:11:56 +01:00
tomcw
6e8d79ddde Fix for both Uthernet cards not reading I/O $Csxx space as floating-bus. (#1321) 2024-08-15 17:36:32 +01:00
TomCh
f516423772 Update History.txt - fixed releaes year for 1.30.18 & .19 2024-08-15 16:16:30 +01:00
224 changed files with 8345 additions and 3224 deletions

View File

@@ -11,7 +11,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AppleWin", "AppleWin-VS2022
{9B32A6E7-1237-4F36-8903-A3FD51DF9C4E} = {9B32A6E7-1237-4F36-8903-A3FD51DF9C4E}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zip_lib", "zip_lib\zip_VS2022.vcxproj", "{509739E7-0AF3-4C09-A1A9-F0B1BC31B39D}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip\zip_VS2022.vcxproj", "{509739E7-0AF3-4C09-A1A9-F0B1BC31B39D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib\zlib-VS2022.vcxproj", "{9B32A6E7-1237-4F36-8903-A3FD51DF9C4E}"
EndProject

View File

@@ -59,7 +59,6 @@
<ClInclude Include="source\CPU\cpu6502.h" />
<ClInclude Include="source\CPU\cpu65C02.h" />
<ClInclude Include="source\Debugger\Debug.h" />
<ClInclude Include="source\Debugger\DebugDefs.h" />
<ClInclude Include="source\Debugger\Debugger_Assembler.h" />
<ClInclude Include="source\Debugger\Debugger_Color.h" />
<ClInclude Include="source\Debugger\Debugger_Console.h" />
@@ -100,6 +99,8 @@
<ClInclude Include="source\NTSC_CharSet.h" />
<ClInclude Include="source\ParallelPrinter.h" />
<ClInclude Include="source\Pravets.h" />
<ClInclude Include="source\ProDOS_Utils.h" />
<ClInclude Include="source\ProDOS_FileSystem.h" />
<ClInclude Include="source\Registry.h" />
<ClInclude Include="source\RGBMonitor.h" />
<ClInclude Include="source\Riff.h" />
@@ -107,6 +108,7 @@
<ClInclude Include="source\SaveState.h" />
<ClInclude Include="source\SerialComms.h" />
<ClInclude Include="source\SNESMAX.h" />
<ClInclude Include="source\SoundBuffer.h" />
<ClInclude Include="source\SoundCore.h" />
<ClInclude Include="source\Speaker.h" />
<ClInclude Include="source\Speech.h" />
@@ -134,6 +136,7 @@
<ClInclude Include="source\W5100.h" />
<ClInclude Include="source\Windows\AppleWin.h" />
<ClInclude Include="source\Windows\DirectInput.h" />
<ClInclude Include="source\Windows\DXSoundBuffer.h" />
<ClInclude Include="source\Windows\HookFilter.h" />
<ClInclude Include="source\Windows\Win32Frame.h" />
<ClInclude Include="source\YamlHelper.h" />
@@ -209,6 +212,7 @@
<ClCompile Include="source\NTSC_CharSet.cpp" />
<ClCompile Include="source\ParallelPrinter.cpp" />
<ClCompile Include="source\Pravets.cpp" />
<ClCompile Include="source\ProDOS_Utils.cpp" />
<ClCompile Include="source\Registry.cpp" />
<ClCompile Include="source\Riff.cpp" />
<ClCompile Include="source\SaveState.cpp" />
@@ -264,6 +268,7 @@
<ClCompile Include="Source\VidHD.cpp" />
<ClCompile Include="source\Windows\AppleWin.cpp" />
<ClCompile Include="source\Windows\DirectInput.cpp" />
<ClCompile Include="source\Windows\DXSoundBuffer.cpp" />
<ClCompile Include="source\Windows\HookFilter.cpp" />
<ClCompile Include="source\Windows\Win32Frame.cpp" />
<ClCompile Include="source\Windows\WinFrame.cpp" />
@@ -321,7 +326,7 @@
<None Include="source\CPU\cpu_instructions.inl" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="zip_lib\zip_VS2022.vcxproj">
<ProjectReference Include="minizip\zip_VS2022.vcxproj">
<Project>{509739e7-0af3-4c09-a1a9-f0b1bc31b39d}</Project>
</ProjectReference>
<ProjectReference Include="zlib\zlib-VS2022.vcxproj">
@@ -467,7 +472,7 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
@@ -494,7 +499,7 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
@@ -523,7 +528,7 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;NO_DIRECT_X;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
<ConformanceMode>true</ConformanceMode>
@@ -551,7 +556,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
@@ -583,7 +588,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
@@ -617,7 +622,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;NO_DIRECT_X;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>

View File

@@ -106,6 +106,9 @@
<ClCompile Include="source\Configuration\PageSound.cpp">
<Filter>Source Files\Configuration</Filter>
</ClCompile>
<ClCompile Include="source\ProDOS_Utils.cpp">
<Filter>Source Files\Emulator</Filter>
</ClCompile>
<ClCompile Include="source\ParallelPrinter.cpp">
<Filter>Source Files\Emulator</Filter>
</ClCompile>
@@ -274,6 +277,9 @@
<ClCompile Include="source\MockingboardCardManager.cpp">
<Filter>Source Files\Emulator</Filter>
</ClCompile>
<ClCompile Include="source\Windows\DXSoundBuffer.cpp">
<Filter>Source Files\Windows</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="source\CommonVICE\6510core.h">
@@ -423,6 +429,12 @@
<ClInclude Include="source\ParallelPrinter.h">
<Filter>Source Files\Emulator</Filter>
</ClInclude>
<ClInclude Include="source\ProDOS_Utils.h">
<Filter>Source Files\Emulator</Filter>
</ClInclude>
<ClInclude Include="source\ProDOS_FileSystem.h">
<Filter>Source Files\Emulator</Filter>
</ClInclude>
<ClInclude Include="source\Tfe\Pcap.h">
<Filter>Source Files\Uthernet</Filter>
</ClInclude>
@@ -495,9 +507,6 @@
<ClInclude Include="source\z80emu.h">
<Filter>Source Files\Emulator</Filter>
</ClInclude>
<ClInclude Include="source\Debugger\DebugDefs.h">
<Filter>Source Files\Debugger</Filter>
</ClInclude>
<ClInclude Include="source\Debugger\Util_MemoryTextFile.h">
<Filter>Source Files\Debugger</Filter>
</ClInclude>
@@ -621,6 +630,12 @@
<ClInclude Include="source\MemoryDefs.h">
<Filter>Source Files\Emulator</Filter>
</ClInclude>
<ClInclude Include="source\SoundBuffer.h">
<Filter>Source Files\Emulator</Filter>
</ClInclude>
<ClInclude Include="source\Windows\DXSoundBuffer.h">
<Filter>Source Files\Windows</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="resource\Applewin.bmp">

View File

@@ -11,7 +11,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AppleWin", "AppleWinExpress
{9B32A6E7-1237-4F36-8903-A3FD51DF9C4E} = {9B32A6E7-1237-4F36-8903-A3FD51DF9C4E}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zip_lib", "zip_lib\zip_lib2019.vcxproj", "{509739E7-0AF3-4C09-A1A9-F0B1BC31B39D}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip\zip_lib2019.vcxproj", "{509739E7-0AF3-4C09-A1A9-F0B1BC31B39D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib\zlib-Express2019.vcxproj", "{9B32A6E7-1237-4F36-8903-A3FD51DF9C4E}"
EndProject

View File

@@ -59,7 +59,6 @@
<ClInclude Include="source\CPU\cpu6502.h" />
<ClInclude Include="source\CPU\cpu65C02.h" />
<ClInclude Include="source\Debugger\Debug.h" />
<ClInclude Include="source\Debugger\DebugDefs.h" />
<ClInclude Include="source\Debugger\Debugger_Assembler.h" />
<ClInclude Include="source\Debugger\Debugger_Color.h" />
<ClInclude Include="source\Debugger\Debugger_Console.h" />
@@ -90,6 +89,7 @@
<ClInclude Include="source\LanguageCard.h" />
<ClInclude Include="source\Log.h" />
<ClInclude Include="source\Memory.h" />
<ClInclude Include="source\MemoryDefs.h" />
<ClInclude Include="source\Mockingboard.h" />
<ClInclude Include="source\MockingboardCardManager.h" />
<ClInclude Include="source\MockingboardDefs.h" />
@@ -99,6 +99,8 @@
<ClInclude Include="source\NTSC_CharSet.h" />
<ClInclude Include="source\ParallelPrinter.h" />
<ClInclude Include="source\Pravets.h" />
<ClInclude Include="source\ProDOS_FileSystem.h" />
<ClInclude Include="source\ProDOS_Utils.h" />
<ClInclude Include="source\Registry.h" />
<ClInclude Include="source\RGBMonitor.h" />
<ClInclude Include="source\Riff.h" />
@@ -106,6 +108,7 @@
<ClInclude Include="source\SaveState.h" />
<ClInclude Include="source\SerialComms.h" />
<ClInclude Include="source\SNESMAX.h" />
<ClInclude Include="source\SoundBuffer.h" />
<ClInclude Include="source\SoundCore.h" />
<ClInclude Include="source\Speaker.h" />
<ClInclude Include="source\Speech.h" />
@@ -133,6 +136,7 @@
<ClInclude Include="source\W5100.h" />
<ClInclude Include="source\Windows\AppleWin.h" />
<ClInclude Include="source\Windows\DirectInput.h" />
<ClInclude Include="source\Windows\DXSoundBuffer.h" />
<ClInclude Include="source\Windows\HookFilter.h" />
<ClInclude Include="source\Windows\Win32Frame.h" />
<ClInclude Include="source\YamlHelper.h" />
@@ -177,6 +181,7 @@
<ClCompile Include="source\FourPlay.cpp" />
<ClCompile Include="source\FrameBase.cpp" />
<ClCompile Include="source\MockingboardCardManager.cpp" />
<ClCompile Include="source\ProDOS_Utils.cpp" />
<ClCompile Include="source\RGBMonitor.cpp" />
<ClCompile Include="source\SAM.cpp" />
<ClCompile Include="source\Debugger\Debug.cpp" />
@@ -263,6 +268,7 @@
<ClCompile Include="Source\VidHD.cpp" />
<ClCompile Include="source\Windows\AppleWin.cpp" />
<ClCompile Include="source\Windows\DirectInput.cpp" />
<ClCompile Include="source\Windows\DXSoundBuffer.cpp" />
<ClCompile Include="source\Windows\HookFilter.cpp" />
<ClCompile Include="source\Windows\Win32Frame.cpp" />
<ClCompile Include="source\Windows\WinFrame.cpp" />
@@ -297,14 +303,18 @@
<None Include="resource\Apple2.rom" />
<None Include="resource\Apple2e.rom" />
<None Include="resource\Apple2e_Enhanced.rom" />
<None Include="resource\Apple2e_Enhanced_Video.rom" />
<None Include="resource\Apple2_JPlus.rom" />
<None Include="resource\Apple2_JPlus_Video.rom" />
<None Include="resource\Apple2_Plus.rom" />
<None Include="resource\Apple2_Video.rom" />
<None Include="resource\Base64A.rom" />
<None Include="resource\Base64A_German_Video.rom" />
<None Include="resource\Disk2-13sector.rom" />
<None Include="resource\DISK2.rom" />
<None Include="resource\Freezes_Non-autostart_F8_Rom.rom" />
<None Include="resource\HDC-SmartPort.bin" />
<None Include="resource\Hddrvr-v2.bin" />
<None Include="resource\Hddrvr.bin" />
<None Include="resource\Mockingboard-D.rom" />
<None Include="resource\MouseInterface.rom" />
@@ -320,7 +330,7 @@
<None Include="source\CPU\cpu_instructions.inl" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="zip_lib\zip_lib2019.vcxproj">
<ProjectReference Include="minizip\zip_lib2019.vcxproj">
<Project>{509739e7-0af3-4c09-a1a9-f0b1bc31b39d}</Project>
</ProjectReference>
<ProjectReference Include="zlib\zlib-Express2019.vcxproj">
@@ -466,7 +476,7 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
@@ -493,7 +503,7 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
@@ -509,7 +519,7 @@
</Link>
<PreBuildEvent>
<Command>echo Performing unit-test: TestCPU6502
.\Debug\TestCPU6502.exe</Command>
".\Debug v141_xp\TestCPU6502.exe"</Command>
</PreBuildEvent>
<PreBuildEvent>
<Message>Performing unit-test: TestCPU6502</Message>
@@ -522,7 +532,7 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;NO_DIRECT_X;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
<ConformanceMode>true</ConformanceMode>
@@ -550,7 +560,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
@@ -582,7 +592,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
@@ -601,7 +611,7 @@
</Link>
<PreBuildEvent>
<Command>echo Performing unit-test: TestCPU6502
.\Release\TestCPU6502.exe</Command>
".\Release v141_xp\TestCPU6502.exe"</Command>
</PreBuildEvent>
<PreBuildEvent>
<Message>Performing unit-test: TestCPU6502</Message>
@@ -616,7 +626,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;NO_DSHOW_STRSAFE;NO_DIRECT_X;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;zip_lib;libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>source;source\cpu;source\debugger;zlib;$(SolutionDir);libyaml\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>

View File

@@ -274,6 +274,12 @@
<ClCompile Include="source\MockingboardCardManager.cpp">
<Filter>Source Files\Emulator</Filter>
</ClCompile>
<ClCompile Include="source\Windows\DXSoundBuffer.cpp">
<Filter>Source Files\Windows</Filter>
</ClCompile>
<ClCompile Include="source\ProDOS_Utils.cpp">
<Filter>Source Files\Emulator</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="source\CommonVICE\6510core.h">
@@ -423,6 +429,9 @@
<ClInclude Include="source\ParallelPrinter.h">
<Filter>Source Files\Emulator</Filter>
</ClInclude>
<ClInclude Include="source\ProDOS_FileSystem.h">
<Filter>Source Files\Emulator</Filter>
</ClInclude>
<ClInclude Include="source\Tfe\Pcap.h">
<Filter>Source Files\Uthernet</Filter>
</ClInclude>
@@ -495,9 +504,6 @@
<ClInclude Include="source\z80emu.h">
<Filter>Source Files\Emulator</Filter>
</ClInclude>
<ClInclude Include="source\Debugger\DebugDefs.h">
<Filter>Source Files\Debugger</Filter>
</ClInclude>
<ClInclude Include="source\Debugger\Util_MemoryTextFile.h">
<Filter>Source Files\Debugger</Filter>
</ClInclude>
@@ -618,6 +624,18 @@
<ClInclude Include="source\MockingboardDefs.h">
<Filter>Source Files\Emulator</Filter>
</ClInclude>
<ClInclude Include="source\MemoryDefs.h">
<Filter>Source Files\Emulator</Filter>
</ClInclude>
<ClInclude Include="source\SoundBuffer.h">
<Filter>Source Files\Emulator</Filter>
</ClInclude>
<ClInclude Include="source\Windows\DXSoundBuffer.h">
<Filter>Source Files\Windows</Filter>
</ClInclude>
<ClInclude Include="source\ProDOS_Utils.h">
<Filter>Source Files\Emulator</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="resource\Applewin.bmp">
@@ -805,6 +823,18 @@
<None Include="resource\Disk2-13sector.rom">
<Filter>Resource Files</Filter>
</None>
<None Include="resource\Apple2_Video.rom">
<Filter>Resource Files</Filter>
</None>
<None Include="resource\Apple2e_Enhanced_Video.rom">
<Filter>Resource Files</Filter>
</None>
<None Include="resource\HDC-SmartPort.bin">
<Filter>Resource Files</Filter>
</None>
<None Include="resource\Hddrvr-v2.bin">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<Text Include="docs\CodingConventions.txt">

View File

@@ -5,7 +5,18 @@ AppleWin
AppleWin is a fully-featured emulator supporting different Apple II models and clones. A variety of peripheral cards and video display modes are supported (eg. NTSC, RGB); and there's an extensive built-in symbolic debugger.
Apple 2 models supported include:
* ][
* ][+
* //e
* //e Enhanced
* Various clones (Pravets, TK3000, Base 64)
There is currently no support for the //c, //c+, Laser 128, Laser 128EX, Laser 128EX2, or Apple IIgs.
Peripheral cards and add-on hardware supported:
- Mockingboard, Phasor and SAM sound cards
- Disk II interface for floppy disk drives
- Hard disk controller
@@ -22,22 +33,32 @@ Peripheral cards and add-on hardware supported:
- No Slot Clock (NSC)
- Game I/O Connector copy protection dongles
Running
=======
Download latest (stable) release: [AppleWin v1.30.17.0](https://github.com/AppleWin/AppleWin/releases/download/v1.30.17.0/AppleWin1.30.17.0.zip)
Download latest (stable) release: [AppleWin v1.30.20.0](https://github.com/AppleWin/AppleWin/releases/download/v1.30.20.0/AppleWin1.30.20.0.zip)
Release Notes: [v1.30.17.0](https://github.com/AppleWin/AppleWin/releases/tag/v1.30.17.0)
Release Notes: [v1.30.20.0](https://github.com/AppleWin/AppleWin/releases/tag/v1.30.20.0)
Building
========
To compile from source see:
To compile for Windows from source see:
* [docs/compiling.txt](https://github.com/AppleWin/AppleWin/blob/master/docs/compiling.txt)
Unofficial Ports
================
These ports will allow you to build and run AppleWin on other platforms:
* [Linux](https://github.com/audetto/AppleWin)
* [macOS](https://github.com/sh95014/AppleWin)
Contributing
============
Please see the [CONTRIBUTING](https://github.com/AppleWin/AppleWin/blob/master/CONTRIBUTING.md) doc before raising new bugs, features and _especially_ PRs.
Please see the [CONTRIBUTING](https://github.com/AppleWin/AppleWin/blob/master/CONTRIBUTING.md) document before raising new bugs, features and _especially_ PRs (Pull Requests).
Next Version

93
bin/A2_DOS33.SYM2 Normal file
View File

@@ -0,0 +1,93 @@
// DOS 3.3 Symbols for AppleWin
// Min debugger version 2.9.2.4
// = Functions =
symdos33 DOS.COS0 = 9EEB
symdos33 DOS.COS1 = 9F12
symdos33 DOS.SCANCMD = 9FCD
symdos33 DOS.ORTN = 9FB3
symdos33 DOS.MVCSW = A851
symdos33 DOS.EBLD = A35D
symdos33 DOS.EBLD1 = A382
symdos33 DOS.EBLD2 = A360
symdos33 DOS.EBLD3 = A36C
symdos33 DOS.EBSV = A331
symdos33 DOS.EBRUN = A38E
symdos33 DOS.LD3 = A471
symdos33 DOS.GNBC = A1A4
// = Data =
dw DOS.CFTABA = AA4F
db DOS.ISTATE = AA51
db DOS.OSTATE = AA52
dw DOS.SVOUTS = AA53
dw DOS.SVINS = AA55
db DOS.CNFTBS = AA57
db DOS.DFNFB = AA58
db DOS.SVSTK = AA59
db DOS.SVX = AA5A
db DOS.SVY = AA5B
db DOS.SVA = AA5C
db DOS.LBUFD = AA5D
db DOS.MONMOD = AA5E
db DOS.CMDNO = AA5F
dw DOS.SVBL = AA60
db DOS.SVCMD = AA62
db DOS.TEMP1A = AA63
db DOS.TEMP2A = AA64
db DOS.INOPTS = AA65
dw DOS.CV = AA66
dw DOS.CD = AA68
dw DOS.CS = AA6A
dw DOS.CL = AA6C
dw DOS.CR = AA6E
dw DOS.CB = AA70
dw DOS.CA = AA72
db DOS.PAD_B7DF = B7DF
db DOS.NDPGS = B7E0
db DOS.BRWCNT = B7E1
db DOS.PAD_B7E2 = B7E2
db DOS.PAD_B7E3 = B7E3
da DOS.BAOB = B7E4
da DOS.ADOSLD = B7E6
db DOS.IBTYPE = B7E8
db DOS.IBSLOT = B7E9
db DOS.IBDRVN = B7EA
db DOS.IBVOL = B7EB
db DOS.IBTRK = B7EC
db DOS.IBSECT = B7ED
da DOS.IBDCTP = B7EE
da DOS.IBBUFP = B7F0
dw DOS.IBDLEN = B7F2
db DOS.IBCMD = B7F4
// = Strings =
asc T_INIT A884:A887
asc T_LOAD A888:A88B
asc T_SAVE A88C:A88F
asc T_RUN A890:A892
asc T_CHAIN A893:A897
asc T_DELETE A898:A89D
asc T_LOCK A89E:A8A1
asc T_UNLOCK A8A2:A8A7
asc T_CLOSE A8A8:A8AC
asc T_READ A8AD:A8B0
asc T_EXEC A8B1:A8B4
asc T_WRITE A8B5:A8B9
asc T_POSITION A8BA:A8C1
asc T_OPEN A8C2:A8C5
asc T_APPEND A8C6:A8CB
asc T_RENAME A8CC:A8D1
asc T_CATALOG A8D2:A8D8
asc T_MON A8D9:A8DB
asc T_NOMON A8DC:A8E0
asc T_PR_NUM A8E1:A8E3
asc T_IN_NUM A8E4:A8E6
asc T_MAXFILES A8E7:A8EE
asc T_FP A8EF:A8F0
asc T_INT A8F1:A8F3
asc T_BSAVE A8F4:A8F8
asc T_BLOAD A8F9:A8FD
asc T_BRUN A8FE:A901
asc T_VERIFY A902:A907

Binary file not shown.

View File

@@ -9,15 +9,83 @@ https://github.com/AppleWin/AppleWin/issues/new
Tom Charlesworth
1.30.19.0 - 28 Jul 2023
1.30.22.0 - ?
-----------------------
- [Change #1207] Support for SmartPort hard disk controller for Enhanced //e. [@burniouf, @alupin65, @inexorabletash, @univta0001]
- [Change #1416] Mockingboard and Phasor cards now support SSI263AP (instead of older SSI263P).
- mb-audit 1.57 (and earlier) will now fail the Phasor/SSI263 reset test: "43:F1:00, Expected:02 Actual:00".
- Restore the old AppleWin behaviour with, eg. '-s4 socket1=ssi263p' for the SSI263 at $C440.
- NB. mb-audit 1.58 supports both the SSI263P & SSI263AP for this Phasor/SSI263 reset test.
- Add command line to add/remove SC01: -sN <no-sc01|sc01>.
1.30.21.0 - 31 May 2025
-----------------------
Note: This is the last planned version to support Windows XP.
- [Change #1363] Right-click Disk Drive buttons QoL features to manage new disk images.
- Support creation of new DOS/ProDOS blank or formatted disk (including default ProDOS apps).
- [PR #1364] Document the new UI workflows.
- [PR #1375] Document the disk image size magic numbers.
- [Change #1365] Update disk images included with AppleWin distro.
- [Change #438] Remove MASTER.DSK and add BLANK.DSK (created using the newly added DOS 3.3 System Master disk).
- Add 'DOS 3.3 System Master - 680-0210-A.dsk'.
- Add 'ProDOS_2_4_3.po'.
- [Change #478] Support up to 16MiB in RamWorks III card (-r 256), and default to 1MiB (eg. `-aux rw3`, without -r switch)
- [Change #1397] Debugger: Monitor's memcpy: Warn and abort when the source's end address is below the source's start address.
- [Change #1384] Debugger: Support viewing pseudo-HGR pages at all multiple-of-8K physical start addresses within the 64K main memory.
- [Change #1341] Support Apple //e with empty aux slot, or with a 1KiB 80-column card.
- Includes accurately supporting the video modes, eg. aux=empty and enabling 80COL, then floating bus is fetched for aux memory.
- Currently only available via the command line: -aux <empty|std80|ext80|rw3>.
- NB. For `-aux empty`, `-aux std80` and -alt-cpu-emu this uses a different CPU emulation code path, where full-speed runs 25% slower.
- [Change #1403] Help window now owned by the desktop (instead of AppleWin window).
- Change: Improve logging: for -fs-width/height=x: for each display resolution, after the WxH also output the aspect ratio.
- [Bug #1402] Improve robustness of WOZ chunk processing, and reject image if it's malformed.
- [Bug #1383] Fix initial volume of Mockingboard card (and SSI263/SC01 devices) after loading a saved state. [@audetto]
- [Bug #1372] Fix restoring SSI263 and SC01 continuous phoneme playback from save-state.
- [Bug #1367] Fix for KeybReset() not called after a configuration reset.
- [Bug #1360] Fix NMOS 6502 illegal opcode 0x0C (aka SKW).
- [Bug #1359] DebugFont: use an ID which is a valid macro. [@audetto]
- [Bug #1319] Fix SmartPort reading Status into aux memory (if aux banked in).
- [Bug #1340] Fix AppleWin not able to switch to full-speed disk mode after playing a speech phoneme (regression at 1.30.19).
- [Bug #290] Fix for very slow Pascal builds on a 128K machine - using new command line: -alt-cpu-emu.
- [PR #1352] Add SoundBuffer interface. [@Jamiras]
- [PR #1345, #1350, #1355, #1357, #1373, #1379, #1389, #1395, #1400] Much refactoring to the code by Andrea Odetti / @audetto.
1.30.20.0 - 16 Nov 2024
-----------------------
- [Change #1312] Support Hayden's Applesoft compiler protection key.
- For use with Hayden's 1981 AppleSoft compiler (DOS 3.2 and DOS 3.3 pre-release versions).
- [Change #1337] HDC controller: support Format command (both SmartPort and ProDOS block device):
- [Bug #88] Fix for Oz-DOS (uses ProDOS block device command).
- SP Status command: 'General Status': set format-allowed & write-protected flags
- For read-only HDD images: support them as write-protected.
- [Change #1319] For II/II+/Unenhanced //e use the new SmartPort firmware, but with $Cs07 = 0x3C:
- This now defaults to supporting 4 block mode devices (instead of the previous 2).
- [Change #1295] Help doc: add troubleshooting note about "High DPI scaling override", eg. for 2K or 4K monitors.
- [Change #1290] Save-state: add absolute path to disk & hard disk image. [@audetto]
- [Bug #1333] Mockingboard: fix edge-case for 6522 Timer1/2 read/write (cycle accuracy). Test added to (future) mb-audit v1.56.
- [Bug #1321] Uthernet/Uthernet II cards: fix $Csxx space not reading as floating-bus.
- [Bug #1227] Fix issue with not being able to insert a 3.5" 800K image (after failing to insert it into a 5.25" drive).
- [PR #1335] Help doc: add some 'quick-start' info to the Keyboard page.
1.30.19.0 - 28 Jul 2024
-----------------------
- [Change #1207] Support for SmartPort hard disk controller for Enhanced //e. [Thanks to @burniouf, with additional testing and input from: @alupin65, @inexorabletash, @univta0001]
- New HDC SmartPort firmware written by @burniouf.
- Enhanced //e defaults to using SmartPort firmware, and older Apple II's still use the older v2 firmware.
- Supports up to 8 SmartPort units per HDC (currently limited to 4GiB capacity for each unit).
- Supports up to 4 ProDOS block devices per HDC (previously was 2).
- Command line support only for slot 5 HDC (-s5 hdc) and hard disks after unit-2 (eg. -s5h3 <pathname>, -s7h3 <pathname>, etc).
- [Bug #563] Fixes "UniDOS 3.3 v2.0.1".
- [Change #175] Improvements to the SSI263 emulation (mostly edge cases). Use in conjunction with mb-audit v1.53.
- [Bug #926, #1315] DiskII Interface: 'DRIVES OFF' forces the control flipflops to clear. Fixes Infocom's Shogun & Zork0. [@sicklittlemonkey]
- [Bug #1308] Fix for corrupt 't' glyph. [@xotmatrix]
- [Bug #1308] Fix for corrupt 't' glyph. [@xotmatrix] and use actual II+ and Enhanced //e video character ROMs.
- [Bug #1285] Fix crash in 6502 emulation at 0xFFFF boundary.
1.30.18.0 - 23 Mar 2023
1.30.18.0 - 23 Mar 2024
-----------------------
- [Change #1272] New HDC firmware v2 to support returning HDD size in Y:X for status call. [@peteri]
- [Change #1277] Add (debug) cmd line switch to revert to HDC firmware v1: -hdc-firmware-v1.

BIN
bin/ProDOS_2_4_3.po Normal file

Binary file not shown.

View File

@@ -8,7 +8,10 @@
@COPY /Y "%APPLEWIN_ROOT%\bin\DebuggerAutoRun.txt" "%~1"
@COPY /Y "%APPLEWIN_ROOT%\bin\GNU General Public License.txt" "%~1"
@COPY /Y "%APPLEWIN_ROOT%\bin\History.txt" "%~1"
@COPY /Y "%APPLEWIN_ROOT%\bin\MASTER.DSK" "%~1"
@COPY /Y "%APPLEWIN_ROOT%\bin\DOS 3.3 System Master - 680-0210-A.dsk" "%~1"
@ATTRIB +r "%~1\DOS 3.3 System Master - 680-0210-A.dsk"
@COPY /Y "%APPLEWIN_ROOT%\bin\BLANK.DSK" "%~1"
@COPY /Y "%APPLEWIN_ROOT%\bin\ProDOS_2_4_3.po" "%~1"
@COPY /Y "%APPLEWIN_ROOT%\docs\Debugger_Changelog.txt" "%~1"
@COPY /Y "%APPLEWIN_ROOT%\help\AppleWin.chm" "%~1"
@COPY /Y "%APPLEWIN_ROOT%\Release v141_xp\AppleWin.exe" "%~1"

View File

@@ -1,4 +1,29 @@
/*
2.9.2.8 Fixed: Debugger mem copy when source end address is less than the source start address copies too many bytes.
Example:
2000<6000.6ffm
2.9.2.7 Added: QoL for Debugger's view output screen.
When using the debugger to view the ouput screen such as `HGR`, `HGR2`, etc. allow the
keys 0-5 to display the specificed video # page, or 9 to see the current video mode.
0 Pseudo Page 0 ($0000 for graphics, else text page 1)
1 Hardware Page 1 ($2000 for graphics, else text $0400)
2 Hardware Page 2 ($4000 for graphics, else text $0800)
3 Pseudo Page 3 ($6000 for graphics, else text page 1)
4 Pseudo Page 4 ($8000 for graphics, else text page 1)
5 Pseudo Page 5 ($A000 for graphics, else text page 1)
9 Current mode and page
2.9.2.6 Added: QoL: Turning a symbol table on/off now shows the current status.
2.9.2.5 Added: Symbol table for DOS 3.3 using file A2_DOS33.SYM2
Add symbols via: SYMDOS33 <symbol> = <addr>
To disable: SYMDOS33 OFF
To renable: SYMDOS33 ON
2.9.2.4 Fixed: DA RESET = 3F2 was displaying help instead of being parsed.
2.9.2.3 Fixed: DB HGR = 2000:3FFF and DB FOO = 300 wasn't parsing correctly from 2.9.1.3. Fix for commit 48e0fe3a.
2.9.2.2 Fixed: DB HGR = 2000:3FFF was displaying help instead of being parsed.
2.9.2.1 Added: Error message when trying to add a symbol > 51 characters.
2.9.2.0 Released with AppleWin 1.30.20.0
2.9.2.0 Fixed: Debugger: Step-over WAIT can fail #1194
2.9.1.26 Fixed: When adding symbols list the address first then the name for readability
2.9.1.25 Fixed: R P ## wasn't setting P flag status register.

View File

@@ -0,0 +1,5 @@
@REM Toolchain
@REM * Acme (acme.exe)
del bootsector.bin
acme.exe bootsector.a

View File

@@ -0,0 +1,5 @@
@REM Toolchain
@REM * Merlin32 (merlin32.exe)
del bootsector
merlin32.exe -V . bootsector.s

View File

@@ -0,0 +1,3 @@
bin_to_c.exe bootsector.bin > acme.txt
bin_to_c.exe bootsector > merlin.txt
git diff --no-index merlin.txt acme.txt

Binary file not shown.

View File

@@ -0,0 +1,90 @@
;ACME 0.97
!cpu 6502
!ct "apple2.bin" ; Stupid filename must be < 11 chars. May be called convtab.bin
!to "bootsector.bin", plain
; Disk P5 PROM
SlotX16 = $2B ; i.e. $60 = Slot 6. NB. Booting a hard disk sets this to zero.
; IO Switches
IO_STORE40 = $C000 ; W
IO_KEYBOARD = $C000 ;R
IO_KEYSTROBE = $C010
IO_ALTZPOFF = $C008
IO_CLR80VID = $C00C
IO_CLRALTCHAR = $C00E ; Turn off Mouse Text
IO_DHIRESOFF = $C05F
IO_ROMIN = $C081
; F800 ROM Entry Points
E0_BASICWARM = $E003
F8_RESET = $FA69 ; CTRL-RESET
F8_MONITOR = $FF69 ; CALL-151
F8_INIT = $FB2F ;
F8_HOME = $FC58 ; Clear 40x24 text screen
F8_SETNORM = $FE84 ;
F8_SETVID = $FE93 ; PR#0
F8_SETKBD = $FE89 ; IN#0
COUT = $FDED
* = $800
Boot !byte $01 ; Only read 1 sector
ldx SlotX16 ;
txa ;
jsr InitSlot ;
Init sta IO_STORE40 ;
sta IO_CLR80VID ;
sta IO_CLRALTCHAR ;
sta IO_DHIRESOFF ;
sta IO_ROMIN ;
jsr F8_SETKBD ;
jsr F8_SETVID ;
jsr F8_INIT ;
jsr F8_SETNORM ;
jsr F8_HOME ;
ldx #0 ;
Print lda Message,X ;
beq WaitKey ;
jsr COUT ;
inx ;
bne Print ;
WaitKey lda IO_KEYBOARD ;
bpl WaitKey ;
sta IO_KEYSTROBE ;
cmp #'0' ; '0' ... '9'
bcc BootSlot ;
cmp #('9'+1) ;
bcs BootSlot ;
and #$0F ;
bne TestMonitor ; '0' BASIC
jmp E0_BASICWARM ;
TestMonitor cmp #$08 ; '8' MONITOR
bne TestReset ;
jmp F8_MONITOR ;
TestReset cmp #$09 ; '9' RESET
bne HaveSlot ;
jmp F8_RESET ;
HaveSlot jsr SetBootSlot ;
BootSlot jmp $C700 ; *** SELF-MODIFIED ***
InitSlot bne BootSlotX16 ;
lda #$70 ;
BootSlotX16 lsr ;
lsr ;
lsr ;
lsr ;
SetBootSlot ora #$C0 ; Firmware $Cx00
sta BootSlot+2 ; *** SELF-MODIFIES! ***
rts
; 0 1 2 3 4
; 1234567890123456789012345678901234567890
Message !text " THIS IS AN EMPTY "
Type !text "DATA DISK.",$8D
!text $8D
!text ' ',' ',$30," BASIC ($E003)",$8D
!text $31,"-",$37," BOOT SLOT ($CX00)",$8D
!text " "," ",$38," MONITOR ($FF69)",$8D
!text " "," ",$39," RESET ($FA62)",$8D
!text $41,$4E,$59," REBOOT LAST SLOT" ,$00
!align $FFF, $900 - 3, 0
!text "V2"
!byte <Type

Binary file not shown.

View File

@@ -0,0 +1,86 @@
; Disk P5 PROM
SlotX16 = $2B ; i.e. $60 = Slot 6. NB. Booting a hard disk sets this to zero.
; IO Switches
IO_STORE40 = $C000 ; W
IO_KEYBOARD = $C000 ;R
IO_KEYSTROBE = $C010
IO_ALTZPOFF = $C008
IO_CLR80VID = $C00C
IO_CLRALTCHAR = $C00E ; Turn off Mouse Text
IO_DHIRESOFF = $C05F
IO_ROMIN = $C081
; F800 ROM Entry Points
E0_BASICWARM = $E003
F8_RESET = $FA69 ; CTRL-RESET
F8_MONITOR = $FF69 ; CALL-151
F8_INIT = $FB2F ;
F8_HOME = $FC58 ; Clear 40x24 text screen
F8_SETNORM = $FE84 ;
F8_SETVID = $FE93 ; PR#0
F8_SETKBD = $FE89 ; IN#0
COUT = $FDED
ORG $800
Boot DB $01 ;
LDX SlotX16 ;
TXA ;
JSR InitSlot ;
Init STA IO_STORE40 ;
STA IO_CLR80VID ;
STA IO_CLRALTCHAR ;
STA IO_DHIRESOFF ;
STA IO_ROMIN ;
JSR F8_SETKBD ;
JSR F8_SETVID ;
JSR F8_INIT ;
JSR F8_SETNORM ;
JSR F8_HOME ;
LDX #0 ;
Print LDA Message,X ;
BEQ WaitKey ;
JSR COUT ;
INX ;
BNE Print ;
WaitKey LDA IO_KEYBOARD ;
BPL WaitKey ;
STA IO_KEYSTROBE ;
CMP #"0" ; '0' ... '9'
BCC BootSlot ;
CMP #"9"+1 ;
BCS BootSlot ;
AND #$0F ;
BNE TestMonitor ; '0' BASIC
JMP E0_BASICWARM ;
TestMonitor CMP #$08 ; '8' MONITOR
BNE TestReset ;
JMP F8_MONITOR ;
TestReset CMP #$09 ; '9' RESET
BNE HaveSlot ;
JMP F8_RESET ;
HaveSlot JSR SetBootSlot ;
BootSlot JMP $C700 ; *** SELF-MODIFIED ***
InitSlot BNE BootSlotX16 ;
LDA #$70 ;
BootSlotX16 LSR ;
LSR ;
LSR ;
LSR ;
SetBootSlot ORA #$C0 ; Firmware $Cx00
STA BootSlot+2 ; *** SELF-MODIFIES! ***
RTS
; 0 1 2 3 4
; 1234567890123456789012345678901234567890
Message ASC " THIS IS AN EMPTY "
Type ASC "DATA DISK.",$8D
ASC $8D
ASC " "," ",'0'," BASIC ($E003)",$8D
ASC '1',"-",'7'," BOOT SLOT ($CX00)",$8D
ASC " "," ",'8'," MONITOR ($FF69)",$8D
ASC " "," ",'9'," RESET ($FA62)",$8D
ASC 'A','N','Y'," REBOOT LAST SLOT" ,$00
DS $900 - 3 - *,0 ; reserve 3 bytes: 1 byte offset of "DATA" and 2 byte version string
ASC "V2"
DB <Type ; byte offset of "DATA"

View File

@@ -243,7 +243,7 @@ Cn_BLK php
ldy #0
- lda BLK_Cmd,y
sta IO_BlkCmdFifo,x ; BLK_Cmd's are $0x
sta IO_BlkCmdFifo,x ; BLK_Cmd's are $0x (NB. not range-checked unlike SP cmds)
iny ; BLK_UnitNum's are DSSS0000 : if SSS does NOT match physical slot...
; ...hardware should handle the remap by adding +2 to the REAL dev_ID
cpy #6 ; that way, a BLK controller can support 4 devices (see $CnFE byte below)
@@ -276,7 +276,9 @@ Cn_BLK_Done lsr ; Post: C=0 or 1
Cn_SP lda (Ptr1),y ; CMD byte
cmp #SP_Cmd_format
bcs Cn_SP_E_BADCALL ; only STATUS, READBLOCK & WRITEBLOCK supported
beq +
bcs Cn_SP_E_BADCALL ; only STATUS, READBLOCK, WRITEBLOCK & FORMAT supported
+ ; C=1 if FORMAT cmd [*1]
ldx Slot_n0
@@ -290,18 +292,28 @@ Cn_SP lda (Ptr1),y ; CMD byte
lda (Ptr1),y
sta Ptr1+1
pla
pla
sta Ptr1 ; Now Ptr1 = Param list
ldy #0 ; Param Cnt
ldy #0 ; Param Idx (in bytes)
lda (Ptr1),y
cmp #3 ; STATUS, READBLOCK & WRITEBLOCK = all 3 parameters
sec
!if 1 { ; (This parameter-checking code could be removed to free up some space)
bcs @format ; NB. C-flag untouched from above [*1]
cmp #3 ; STATUS, READBLOCK & WRITEBLOCK: all have 3 parameters
beq +
bne Cn_SP_E_BADCNT
@format cmp #1 ; FORMAT: has 1 parameter
bne Cn_SP_E_BADCNT
+
}
- iny ; UnitNum (B), MemPtr (L/H), DiskBlock (L/M/H) -> IO (R,W)
lda (Ptr1),y ; UnitNum (B), MemPtr (L/H), StatusCode (B) -> IO (S)
; Parameter-1: Parameter-2: Parameter-3:
; UnitNum (B), MemPtr (L/H), StatusCode (B) -> IO (STATUS)
; UnitNum (B), MemPtr (L/H), DiskBlock (L/M/H) -> IO (READ,WRITE)
; UnitNum (B) -> IO (FORMAT)
- iny ; Always copy 6 more bytes to the FIFO regardless of the command
lda (Ptr1),y
sta IO_SPCmdFifo,x ; UnitNum Range is 0 (smartport controller itself), 1,2,3.....
cpy #6 ; blockNums are 24-bit for SP calls
bcc -
@@ -364,7 +376,8 @@ Cn_SP_E_BADCNT ldx #E_BADCNT
; $C7 = Removable, Interruptable, #Volumes=1, Supports write/read/status
; $D7 = Removable, Interruptable, #Volumes=2, Supports write/read/status
; $F7 = Removable, Interruptable, #Volumes=4, Supports write/read/status
; $BF = Removable, Interruptable, #Volumes=4, Supports format/write/read/status (KEGS / IIGS)
; $FF = Removable, Interruptable, #Volumes=4, Supports format/write/read/status
; $BF = Removable, , #Volumes=4, Supports format/write/read/status (KEGS / IIGS)
;
; $CnFF = offset to BLK entry point
;--------------------------------------
@@ -372,8 +385,8 @@ Cn_SP_E_BADCNT ldx #E_BADCNT
*= $00FB ; org $00FB
!warn "CsFB padding = ", * - @checkCsFB
;--------------------------------------
!byte $00 ; Smart port ID Type byte
!byte $00 ; SmartPort ID Type byte
!word $0000 ; how many blocks are on the device. Zero means use status call
!byte $F7 ; specifics about the device (number of drives, read/write/format capability, etc)
!byte $FF ; specifics about the device (number of drives, read/write/format capability, etc)
!byte <Cn_Entry_BLK ; entry point offset for ProDOS (must be $0a)
;--------------------------------------

Binary file not shown.

BIN
firmware/OS/bitsy.boot.bin Normal file

Binary file not shown.

Binary file not shown.

BIN
firmware/OS/dos33c.bin Normal file

Binary file not shown.

BIN
firmware/OS/prodos243.bin Normal file

Binary file not shown.

BIN
firmware/OS/quit.system.bin Normal file

Binary file not shown.

View File

@@ -28,14 +28,24 @@
-s5d2 &lt;pathname&gt;<br>
Start with a floppy disk in slot 5 drive-2 (must be used with '-s5 diskii' or '-s5 diskii13').<br><br>
-h1 &lt;pathname&gt;<br>
Start with hard disk 1 plugged-in (and auto power-on the Apple II). NB. Hard disk controller card gets enabled.<br><br>
Start with hard disk 1 plugged in (and auto power-on the Apple II). NB. Hard disk controller card in slot 7 gets enabled.<br><br>
-h2 &lt;pathname&gt;<br>
Start with hard disk 2 plugged-in. NB. Hard disk controller card gets enabled.<br><br>
Start with hard disk 2 plugged in. NB. Hard disk controller card in slot 7 gets enabled.<br><br>
-s5h1 &lt;pathname&gt;<br>
Start with hard disk 1 plugged-in slot 5 (must be used with '-s5 hdc').<br><br>
Start with hard disk 1 plugged into HDC in slot 5 (must be used with '-s5 hdc').<br><br>
-s5h2 &lt;pathname&gt;<br>
Start with hard disk 2 plugged-in slot 5 (must be used with '-s5 hdc').<br><br>
NB. For -d1,-d2,-s5d1,-s5d2,-h1,-h2,-s5h1,-s5h2, if pathname is "", then the disk is ejected or the hard disk is unplugged.<br><br>
Start with hard disk 2 plugged into HDC in slot 5 (must be used with '-s5 hdc').<br><br>
-s5h&lt;1|2|3|4|5|6|7|8&gt; &lt;pathname&gt;<br>
Start with hard disk n plugged into HDC in slot 5 (must be used with '-s5 hdc').<br>
NB. Only SmartPort firmware for enhanced //e supports hard disks 5-8.<br><br>
-s7h1 &lt;pathname&gt;<br>
Start with hard disk 1 plugged into HDC in slot 7 (must be used with '-s7 hdc').<br><br>
-s7h2 &lt;pathname&gt;<br>
Start with hard disk 2 plugged into HDC in slot 7 (must be used with '-s7 hdc').<br><br>
-s7h&lt;1|2|3|4|5|6|7|8&gt; &lt;pathname&gt;<br>
Start with hard disk n plugged into HDC in slot 7 (must be used with '-s7 hdc').<br>
NB. Only SmartPort firmware for enhanced //e supports hard disks 5-8.<br><br>
NB. For -d1,-d2,-s5d1,-s5d2,-h1,-h2,-s5h*,-s7h*, if pathname is "", then the disk is ejected or the hard disk is unplugged.<br><br>
-model &lt;apple2|apple2p|apple2jp|apple2e|apple2ee&gt;<br>
Select the machine model: Apple II, Apple II+, Apple II J-Plus, Apple //e, Enhanced Apple //e.<br><br>
-clock-multiplier &lt;value&gt;<br>
@@ -69,18 +79,29 @@
Remove the hard disk controller card from slot 7 on AppleWin exit.<br><br>
-s5 hdc<br>
-s7 hdc<br>
Insert a hard disk controller card into slot 5 or 7.<br><br>
Insert a hard disk controller card into slot 5 or 7.<br>
NB. For enhanced //e, the firmware will support SmartPort commands (and up to 8 hard disk devices).<br><br>
-d1-disconnected, -d2-disconnected<br>
Disconnect drive-1 and/or drive-2 from the Disk II controller card in slot 6.<br><br>
-s&lt;N&gt; socket1=&lt;empty|ssi263p|ssi263ap&gt;<br>
Configure the SSI263 speech chip socket at $Cn40 (main location) for the Mockingboard or Phasor card in slot-N (N=1-7).<br><br>
-s&lt;N&gt; socket0=&lt;empty|ssi263p|ssi263ap&gt;<br>
Configure the SSI263 speech chip socket at $Cn20 (secondary location) for the Mockingboard or Phasor card in slot-N (N=1-7).<br><br>
-s&lt;N&gt; &lt;no-sc01|sc01&gt;<br>
Configure an SC01 speech chip for the Mockingboard or Phasor card in slot-N (N=1-7).<br><br>
-harddisknumblocks &lt;number of ProDOS blocks&gt;<br>
Set the number of blocks returned by a ProDOS status call. Use -harddisknumblocks 32767 to have the same autoexpanding behavior as older AppleWin versions.<br><br>
-no-nsc<br>
Remove the No-Slot clock (NSC).<br><br>
-r &lt;number of pages&gt;<br>
Emulate a RamWorks III card with 1 to 127 pages (each page is 64K, giving a max of 8MB) in the auxiliary slot in an Apple //e machine.<br><br>
-aux &lt;empty|std80|ext80|rw3&gt;<br>
Remove ('empty') or insert 80-Column('std80'), Extended 80-Column('ext80') or RamWorks III('rw3') card into auxiliary slot in Apple //e.<br>
NB. 'rw3' will default to 1MiB (16 banks of 64K) unless overriden by -r switch.<br><br>
-r &lt;number of banks&gt;<br>
Emulate a RamWorks III card with 1 to 256 banks (each bank is 64K, giving a max of 16MiB) in the auxiliary slot in an Apple //e machine.<br>
(Implicitly inserts a RamWorks III card into the aux slot.)<br><br>
-load-state &lt;savestate&gt;<br>
Load a save-state file (and auto power-on the Apple II).<br>
NB. This takes precedent over the -d1, -d2, -s#d#, -h1, -h2, s0-7, -model and -r switches.<br><br>
NB. This takes precedent over the -d1, -d2, -s#d#, -h1, -h2, -s#h#, -s0-7, -model and -r switches.<br><br>
-f or -full-screen<br>
Start in full-screen mode.<br><br>
-no-full-screen<br>
@@ -88,7 +109,7 @@
-fs-height=&lt;best|nnnn&gt;<br>
Use to select a better resolution for full-screen mode.<br>
<ul>
<li>best: picks the highest resolution where the height is an integer multiple of (192*2)</li>
<li>best: picks the highest resolution where the height is an integer multiple of (192*2); or (200*2) when using '-s3 vidhd'</li>
<li>nnnn: select a specific resolution with height=nnnn pixels</li>
</ul>
-fs-width=&lt;nnnn&gt;<br>
@@ -158,7 +179,7 @@
</ul>
-modem<br>
Shorthand for passing -dcd<br>
Use with GBBS Pro (or any other BBS package). See the <a href="http://www.callapple.org/documentation/books/gbbs-pro-2-2/">GBBS Pro 2.2</a> book from Call-A.P.P.L.E.
Use with GBBS Pro (or any other BBS package). See the <a target="_blank" href="http://www.callapple.org/documentation/books/gbbs-pro-2-2/">GBBS Pro 2.2</a> book from Call-A.P.P.L.E.
<br><br>
-dcd<br>
For the SSC's 6551's Status register's DCD bit, use this switch to force AppleWin to use the state of the MS_RLSD_ON bit from GetCommModemStatus().<br><br>
@@ -211,8 +232,8 @@
Save the speaker audio to a .wav file.<br>
Warning: there's no file size limit, so it just keeps saving until AppleWin exits (~10MB per minute).<br>
<br>
Save the Mockingboard audio (but not speech) to a .wav file.<br>
-wav-mockingboard &lt;file.wav&gt;<br>
Save the Mockingboard audio (but not speech) to a .wav file.<br>
Warning: there's no file size limit, so it just keeps saving until AppleWin exits (~10MB per minute).<br>
<br>
@@ -229,11 +250,19 @@
<br><br>
-screenshot-and-exit<br>
For testing. Use in combination with -load-state.<br><br>
-load-state-ignore-hdc-fw<br>
For testing. Use in combination with -load-state.<br><br>
-hdc-firmware-v1<br>
Force all attached hard disk controllers to use the old v1 firmware (as per pre-AppleWin 1.30.17).
<ul>
<li>NB. Switch likely to be removed after a few releases.</li>
</ul>
-s&lt;n&gt; hdc-[sp|bm2|bm4]
<ul>
<li>hdc-sp: Force HDC SmartPort firmware for II/II+/Unenhanced //e machines (now won't autoboot from HDD-1).</li>
<li>hdc-bm2: Modify HDC firmware: $Cn07=$3C (block mode, not SmartPort), and $CnFE to report supporting 2 block mode devices.</li>
<li>hdc-bm4: Modify HDC firmware: $Cn07=$3C (block mode, not SmartPort), and $CnFE to report supporting 4 block mode devices.</li>
</ul>
<br><br>
</body>
</html>

View File

@@ -49,6 +49,10 @@
<param name="Name" value="Creating Disk Images">
<param name="Local" value="ddi-create.html">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Advanced Formatting Options">
<param name="Local" value="ddi-advanced.html">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Transferring Disk Images">
<param name="Local" value="ddi-transfer.html">
@@ -65,6 +69,10 @@
<param name="Name" value="Hard Disk Images">
<param name="Local" value="ddi-harddisk.html">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Disk Sizes">
<param name="Local" value="ddi-sizes.html">
</OBJECT>
</UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Using The Toolbar">
@@ -179,6 +187,10 @@
<param name="Name" value="Memory">
<param name="Local" value="dbg-memory.html">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="View Output">
<param name="Local" value="dbg-view-output.html">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Symbols">
<param name="Local" value="dbg-symbols.html">

View File

@@ -87,7 +87,7 @@
<br>
Can't set bookmark 0 in the debugger / CTRL+SHIFT+0 not working:
<img style="FLOAT: right;" src="img/Change Key Sequence.png" alt="Configuration settings" hspace="5" vspace="5">
<img style="FLOAT: right;" src="img/Change Key Sequence.png" alt="Change Key Sequence" hspace="5" vspace="5">
<ul>
<li>Windows 7: From "Control Panel...":</li>
<ul>
@@ -124,5 +124,16 @@
<li>These non-booting .po images are with DOS-order sectors.</li>
</ul>
</ul>
<br>
AppleWin's window is blurry when running on a 2K, 4K (or higher) monitor when display scaling (eg. 150%) is enabled.
<img style="FLOAT: right;" src="img/Override high DPI scaling behaviour.png" alt="Override high DPI scaling behaviour" hspace="5" vspace="5">
<ul>
<li>From AppleWin.exe's Properties (from Explorer, press right-mouse button on the AppleWin.exe file) and select:</li>
<ul>
<li>Compatibility -> Change high DPI settings: Check the "Override high DPI scaling behaviour".</li>
<li>Set the drop-down menu to "Application".</li>
</ul>
</ul>
</body>
</html>

View File

@@ -13,14 +13,14 @@
<p style="MARGIN-LEFT: 40px">Thomas Stahl: Vertical blend in the 'Color (Composite Idealized)' video mode</p>
<p style="MARGIN-LEFT: 40px">Greg Hedger: SSI263 phoneme samples</p>
<p style="MARGIN-LEFT: 40px">Robert Hoem: Hard disk card (source module &amp; f/w)</p>
<p style="MARGIN-LEFT: 40px">VICE team: TFE, Z80, MC6821 PIA emulation modules (<a href="http://vice-emu.sourceforge.net/index.html#developers">http://vice-emu.sourceforge.net/index.html#developers</a>)<br>
<p style="MARGIN-LEFT: 40px">VICE team: TFE, Z80, MC6821 PIA emulation modules (<a target="_blank" href="http://vice-emu.sourceforge.net/index.html#developers">http://vice-emu.sourceforge.net/index.html#developers</a>)<br>
- In particular, Spiro Trikaliotis for TFE, whose code Glenn Jones adapted for Uthernet support</p>
<p style="MARGIN-LEFT: 40px">FUSE team: AY-3-8910 module (<a href="http://fuse-emulator.sourceforge.net">http://fuse-emulator.sourceforge.net</a>)</p>
<p style="MARGIN-LEFT: 40px">FUSE team: AY-3-8910 module (<a target="_blank" href="http://fuse-emulator.sourceforge.net">http://fuse-emulator.sourceforge.net</a>)</p>
<p style="MARGIN-LEFT: 40px">Kyle Kim: Mouse card support based on code from Apple in PC</p>
<p style="MARGIN-LEFT: 40px">F<EFBFBD>bio Belavenuto: TK3000 Brazilian //e clone (originally responsible for integrating Z80Em)</p>
<p style="MARGIN-LEFT: 40px">Bob Sander-Cederlof: Applesoft Symbols (<a href="http://www.txbobsc.com/scsc/scdocumentor/index.html">http://www.txbobsc.com/scsc/scdocumentor/</a> S-C DocuMentor: Applesoft)</p>
<p style="MARGIN-LEFT: 40px">Bob Sander-Cederlof: Applesoft Symbols (<a target="_blank" href="http://www.txbobsc.com/scsc/scdocumentor/index.html">http://www.txbobsc.com/scsc/scdocumentor/</a> S-C DocuMentor: Applesoft)</p>
<p style="MARGIN-LEFT: 40px">David Schmidt: Updates to this help file</p>
<p style="MARGIN-LEFT: 40px">Mike Harvey, Founder &amp; Editor of Nibble Magazine: For providing us Apple fans the pleasure of eagerly awaiting each next month's issue to learn about the Apple! (<a href="http://www.nibblemagazine.com/">http://www.nibblemagazine.com/</a>)</p>
<p style="MARGIN-LEFT: 40px">Mike Harvey, Founder &amp; Editor of Nibble Magazine: For providing us Apple fans the pleasure of eagerly awaiting each next month's issue to learn about the Apple! (<a target="_blank" href="http://www.nibblemagazine.com/">http://www.nibblemagazine.com/</a>)</p>
<p style="MARGIN-LEFT: 40px">Andrea Odetti: working on making the source code more portable & Uthernet II card support</p>
<p style="MARGIN-LEFT: 40px">Iv<EFBFBD>n Izaguirre: Taiwanese Copam Base64A Apple II clone</p>
<p style="MARGIN-LEFT: 40px">Arnaud C: debugger suggestions and help with 6502/6522/video timing issues</p>

View File

@@ -88,10 +88,11 @@ Supported devices are:
<li> Southwestern Data Systems' datakey - SpeedStar (copy protection dongle)
<li> Dynatech Microsoftware / Cortechs Corp's protection key - CodeWriter (copy protection dongle)
<li> Robocom Ltd's interface module - Robo 500/1000/1500 & RoboCAD 1/2 (copy protection dongle)
<li> Hayden Book Company, Inc's protection key - Applesoft Compiler (copy protection dongle)
</ul>
NB. Copy protection dongles can interfere with joysticks (eg. buttons may be hardwired to a fixed state), so only use dongles with the intended software.<br>
NB. Copy protection dongles can interfere with RGB cards (eg. unexpected video modes may get selected).<br>
NB. For Apple II/II+ models, when a joystick is selected (from the <a href="cfg-input.html">Input</a> tab), then there is also an implicit joystick connected at the same time as the device selected here.
NB. For Apple II/II+ models, when a joystick is selected (from the <a href="cfg-input.html">Input</a> tab), then there is also an implicit joystick connected at the same time as the device selected here (and some dongles even allowed 16-pin game connectors to be plugged in on top, eg. SDS and Robocom devices).
</p>
</body></html>

View File

@@ -66,7 +66,7 @@
<strong>VidHD in slot 3</strong><br>
Insert a VidHD card into slot 3 (which can co-exist with an 80-column card in the Apple //e's AUX slot).<br>
Allows all Apple II models to support the IIgs' Super Hi-Res (SHR) video modes and is supported by eg. <a href="https://archive.org/details/TotalReplay">Total Replay</a>.<br>
Allows all Apple II models to support the IIgs' Super Hi-Res (SHR) video modes and is supported by eg. <a target="_blank" href="https://archive.org/details/TotalReplay">Total Replay</a>.<br>
<br>
<hr>
@@ -104,6 +104,7 @@
<li> Pure CPU MHz (full-speed)
<li> Expected average video game performance (in FPS)
</ul>
Use Ctrl+C to copy the results to the clipboard.
</li>
</body>
</html>

View File

@@ -43,7 +43,7 @@ On real hardware this card allows up to 4 Atari 9-pin joysticks to be connected.
Under emulation, the first 2 Windows-detected controllers will be used, and then for joysticks 3 and 4, use keys: ESDF+ZX and IJKL+NM. Note these keys will also be readable from the keyboard.<br>
<li>The card can be configured in slots 3, 4 or 5.
<li>Since it only uses the slot's DEVICE SELECT space ($C0Bx for slot 3) then it can co-exist with an 80-column card in the Apple //e's AUX slot. NB. For a real PAL Apple //e, then a slot riser card is required for it to fit.<br>
See Lukazi's <a href="https://lukazi.blogspot.com/2016/04/apple-ii-4play-joystick-card.html">4Play card</a> and <a href="https://lukazi.blogspot.com/2017/08/apple-ii-4play-joystick-card-software.html">4Play card software</a> blogs for more information.<br>
See Lukazi's <a target="_blank" href="https://lukazi.blogspot.com/2016/04/apple-ii-4play-joystick-card.html">4Play card</a> and <a target="_blank" href="https://lukazi.blogspot.com/2017/08/apple-ii-4play-joystick-card-software.html">4Play card software</a> blogs for more information.<br>
<br>
<strong>SNES MAX card:</strong><br>
@@ -51,7 +51,7 @@ On real hardware this card allows up to 2 SNES controllers to be connected and a
Under emulation, the first 2 Windows-detected controllers will be used, ideally with 12 (or more) buttons eg. Logitech F310, PlayStation Dualshock 4, DualSense. Note that for some controllers (eg. 8BitDo NES30 Pro) the buttons need remapping, so use the command line switches -snes-max-alt-joy1 or -snes-max-alt-joy2 to remap.<br>
<li>The card can be configured in slots 3, 4 or 5.
<li>Since it only uses the slot's DEVICE SELECT space ($C0Bx for slot 3) then it can co-exist with an 80-column card in the Apple //e's AUX slot. NB. This card is small, so no slot riser card is required.<br>
See Lukazi's <a href="https://lukazi.blogspot.com/2021/06/game-controller-snes-max-snes.html">SNES MAX</a> blog for more information.<br>
See Lukazi's <a target="_blank" href="https://lukazi.blogspot.com/2021/06/game-controller-snes-max-snes.html">SNES MAX</a> blog for more information.<br>
<br>
<br>

View File

@@ -14,7 +14,7 @@
To contact the project administrators, post a question to the GitHub link below.<br>
<br>
<P>Bug reports / feature requests should be submitted here:<br>
<A href="https://github.com/AppleWin/AppleWin/issues/new">https://github.com/AppleWin/AppleWin/issues/new</A>
<A target="_blank" href="https://github.com/AppleWin/AppleWin/issues/new">https://github.com/AppleWin/AppleWin/issues/new</A>
</P>
</body>
</html>

View File

@@ -6,9 +6,6 @@
</head>
<body style="DIRECTION: ltr" lang="en-US">
<h2><a name="Configuration"></a>Configuration</h2>
<p><br>
<br>
</p>
<h3><a name="Colors"></a>Colors</h3>
<p>The commands to change color schemes, and colors are:</p>
<p><br>

View File

@@ -496,14 +496,10 @@ FF0A</span></b></font></font></p>
<p><font color="#00b8ff"><font face="Courier"><b>300:60</b></font></font></p>
</td>
<td width="75%">
<p><i><span style="COLOR: white">Same
as Applesoft Poke 768,96</span></i></p>
<p><i><span style="COLOR: white">Same as Applesoft Poke 768,96</span></i></p>
</td>
</tr>
</tbody>
</table>
<h2>
<br>
&nbsp;</h2>
</body>
</html>

View File

@@ -7,7 +7,7 @@
<body style="DIRECTION: ltr" lang="en-US">
<H1>AppleWin Debugger Tutorial</H1>
<P><FONT size="4"><i>By Michael Pohoreski.</i></FONT></P>
<P><FONT size="3">Revision 3.&nbsp; Mar 12, 2006.</FONT></P>
<P><FONT size="3">Revision 4.&nbsp; Feb. 21, 2025.</FONT></P>
<H2>Table of Contents</H2>
<UL>
<LI><A href="#Introduction">Introduction</A>
@@ -23,6 +23,11 @@
<LI><A href="dbg-memory.html#Memory_Search">Searching Memory</A>
<LI><A href="dbg-memory.html#Memory_Change">Changing Memory</A>
</UL>
<LI><A href="dbg-view-output.html">View Output</a>
<UL>
<LI><A href="dbg-view-output.html#View_Video_Modes">Video Modes</A>
<LI><A href="dbg-view-output.html#View_Output_Keys">Output Keys</A>
</UL>
<LI><A href="dbg-symbols.html">Symbols</A>
<LI><A href="dbg-calculator.html">Calculator</A>
<LI><A href="dbg-windows.html">Windows</A>

198
help/dbg-view-output.html Normal file
View File

@@ -0,0 +1,198 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>AppleWin Debugger Tutorial</title>
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=windows-1252">
</head>
<body style="DIRECTION: ltr" lang="en-US">
<h1><a name="View_Output">View Output</a></h1>
<h3><a name="View_Video_Modes">Video Modes</a></h3>
<p>You can view the output of the Apple by using the following commands.</p>
<table border="0" cellpadding="2" cellspacing="0" width="80%">
<COLGROUP>
<col width="64">
<col width="192">
<tbody>
<tr bgcolor="#000000">
<td bgcolor="#000000" width="25%"><p><font color="#ffffff"><b>Command</b></font></p></td>
<td bgcolor="#000000" width="75%"><p style="FONT-STYLE: normal"><font color="#ffffff"><b>Effect</b></font></p></td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">\</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">Display Apple output until a key pressed.</span></i></p></td>
</tr>
<tr bgcolor="#999999">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">DGR</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Double lo-res (current page).</span></i></p></td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">DGR1</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Double lo-res Page 1.</span></i></p></td>
</tr>
<tr bgcolor="#999999">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">DGR2</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Double lo-res Page 2.<br></span></i></p></td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">DHGR</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Double Hi-res (current page).</span></i></p></td>
</tr>
<tr bgcolor="#999999">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">DHGR1</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Double Hi-res Page 1.<br></span></i></p></td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">DHGR2</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Double Hi-res Page 2.</span></i></p></td>
</tr>
<tr bgcolor="#999999">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">GR</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Lo-Res screen (current page).<br></span></i></p></td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">GR1</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Lo-Res screen Page 1.</span></i></p></td>
</tr>
<tr bgcolor="#999999">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">GR2</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Lo-Res screen Page 2.<br></span></i></p></td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Hi-res (current page).</span></i></p></td>
</tr>
<tr bgcolor="#999999">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR0</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View pseudo Hi-res Page 0 ($0000).<br></span></i></p></td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR1</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Hi-res Page 1 ($2000).</span></i></p></td>
</tr>
<tr bgcolor="#999999">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR2</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Hi-res Page 2 ($4000).<br></span></i></p></td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR3</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View pseudo Hi-res Page 3 ($6000).</span></i></p></td>
</tr>
<tr bgcolor="#999999">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR4</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View pseudo Hi-res Page 4 ($8000).<br></span></i></p></td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR5</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View pseudo Hi-res Page 5 ($A000).</span></i></p></td>
</tr>
<tr bgcolor="#999999">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR6</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View pseudo Hi-res Page 6 LC Banks 1/2 ($C000-$DFFF).</span></i></p></td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR7</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View pseudo Hi-res Page 7 LC Banks 2/RAM ($D000-$EFFF).</span></i></p></td>
</tr>
<tr bgcolor="#999999">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">HGR8</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View pseudo Hi-res Page 8 LC Banks RAM ($D000-$EFFF).</span></i></p></td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">SHR</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Super Hi-res.<br></span></i></p></td>
</tr>
<tr bgcolor="#999999">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">TEXT</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Text screen (current page).</span></i></p></td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">TEXT1</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Text screen Page 1 ($0400).<br></span></i></p></td>
</tr>
<tr bgcolor="#999999">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">TEXT2</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View Text screen Page 2 ($0800).</span></i></p></td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">TEXT80</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View 80-column Text screen (current page).<br></span></i></p></td>
</tr>
<tr bgcolor="#999999">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">TEXT81</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View 80-column Text screen Page 1.</span></i></p></td>
</tr>
<tr bgcolor="#cccccc">
<td width="25%"><p><font color="#000000"><font face="Courier"><b><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">TEXT82</span></b></font></font></p></td>
<td width="75%"><p><i><span style="BACKGROUND: 0% 50%; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">View 80-column Text screen Page 2.<br></span></i></p></td>
</tr>
</tbody>
</table>
<h2><font size="4">Notes:</font></h2>
<ul>
<li><p>If you change to a specific video mode/page <i>different</i> from the current video settings and then exit the debugger (<font face="Courier, monospace">F7</font>) the screen will NOT change to the current video settings.
This lets you inspect other video modes/pages until code (re)sets the video mode or page -- handy if reverse engineering games.</p></li>
<li>If the Apple's output is in a mixed mode then viewing a specific mode MAY view them in full screen mode.</li>
</ul>
<p><br></p>
<h3><a name="View_Output_Keys">Output Keys</a></h3>
<p>While viewing the Apple's output you can use the following keys to switch video pages. Pressing any other key will return to the debugger's output.</p>
<table border="1" cellpadding="2" cellspacing="0" width="75%">
<COLGROUP>
<col width="26">
<col width="64">
<col width="166">
<tbody>
<tr bgcolor="#000000">
<td width="10%">
<p><font color="#ffffff"><b>Key</b></font></p>
</td>
<td width="25%">
<p><font color="#ffffff"><b>Name</b></font></p>
</td>
<td width="65%">
<p><font color="#ffffff"><b>Effect</b></font></p>
</td>
</tr>
<tr>
<td width="10%"><p><b><font face="Courier">0</font></b></p></td>
<td width="25%"><p>Zero</p></td><td width="65%"><p><i>View pseudo page 0<br> ($0000-$1FFF) if graphics,<br> page 1 if text.</i></p></td>
</tr>
<tr>
<td width="10%"><p><b><font face="Courier">1</font></b></p></td>
<td width="25%"><p>One</p></td><td width="65%"><p><i>View page 1<br> ($2000-$3FFF) if graphics,<br>($0400-$07FF) if text.</i></p></td>
</tr>
<tr>
<td width="10%"><p><b><font face="Courier">2</font></b></p></td>
<td width="25%"><p>Two</p></td><td width="65%"><p><i>View page 2<br> ($4000-$5FFF) if graphics,<br>($0800-$0BFF) if text.</i></p></td>
</tr>
<tr>
<td width="10%"><p><b><font face="Courier">3</font></b></p></td>
<td width="25%"><p>Three</p></td><td width="65%"><p><i>View pseudo page 3<br> ($6000-$7FFF) if graphics,<br>page 1 if text.</i></p></td>
</tr>
<tr>
<td width="10%"><p><b><font face="Courier">4</font></b></p></td>
<td width="25%"><p>Four</p></td><td width="65%"><p><i>View pseudo page 4<br> ($8000-$9FFF) if graphics,<br>page 1 if text.</i></p></td>
</tr>
<tr>
<td width="10%"><p><b><font face="Courier">5</font></b></p></td>
<td width="25%"><p>Five</p></td><td width="65%"><p><i>View pseudo page 5<br> ($A000-$BFFF) if graphics,<br>page 1 if text.</i></p></td>
</tr>
<tr>
<td width="10%"><p><b><font face="Courier">6</font></b></p></td>
<td width="25%"><p>Six</p></td><td width="65%"><p><i>View pseudo page 6<br> LC Banks 1/2 ($C000-$DFFF) if graphics,<br>page 1 if text.</i></p></td>
</tr>
<tr>
<td width="10%"><p><b><font face="Courier">7</font></b></p></td>
<td width="25%"><p>Seven</p></td><td width="65%"><p><i>View pseudo page 7<br> LC Banks 2/RAM ($D000-$EFFF) if graphics,<br>page 1 if text.</i></p></td>
</tr>
<tr>
<td width="10%"><p><b><font face="Courier">8</font></b></p></td>
<td width="25%"><p>Eight</p></td><td width="65%"><p><i>View pseudo page 8<br> LC Bank RAM ($E000-$FFFF) if graphics,<br>page 1 if text.</i></p></td>
</tr>
<tr>
<td width="10%"><p><b><font face="Courier">9</font></b></p></td>
<td width="25%"><p>Nine</p></td><td width="65%"><p><i>View current video mode and page.</i></p></td>
</tr>
</table>
</body>
</html>

193
help/ddi-advanced.html Normal file
View File

@@ -0,0 +1,193 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Advanced Formatting Options</title>
</head>
<body style="background-color: rgb(255, 255, 255); font-family: verdana;" alink="#008000" link="#008000" vlink="#008000">
<h2><font color="#008000">Advanced Formatting Options</font></h2>
<hr size="4">
<h3>Advanced Formatting Options</h3>
For finer control when formatting disks hold down the <span style="border: 1px solid black; border-radius: 3px; padding: 2px;">SHIFT</span> key and <b>Right-Click</b> on the drive <img src="img/tb-drv1.png" /> toolbar button.
<br>
<br>Alternatively, press <span style="border: 1px solid black; border-radius: 3px; padding: 2px">SHIFT</span>-<span style="border: 1px solid black; border-radius: 3px; padding: 2px;">CTRL</span>-<span style="border: 1px solid black; border-radius: 3px; padding: 2px;">F3</span> for drive one, or <span style="border: 1px solid black; border-radius: 3px; padding: 2px">SHIFT</span>-<span style="border: 1px solid black; border-radius: 3px; padding: 2px;">CTRL</span>-<span style="border: 1px solid black; border-radius: 3px; padding: 2px;">F4</span> for drive two for the drive pop-up menu.<br>
<br><img src="img/drive_popup_menu_advanced.png" style="width: 33%; height: auto;" border="1"/>
<h3>Terminology</h3>
Some quick terminology to help explain the difference between Bootable Disks, Data Disks, File Systems, and Disk Operating Systems:
<ul>
<li>An <i>Operating System</i> is a program (or collection of programs) that manages resources of the computer.</li>
<li>A <i>File System</i> is the organized structure of data on a disk. It lets you name and store files on the disk.</li>
<li>A <i>Disk Operating System</i> (ProDOS, DOS 3.3, etc.) is a bootable disk that loads an Operating System into memory and lets you access storage media such as a floppy or hard drive. It lets you choose which application(s) to run, or files to load, save, or even view.</li>
<li>An <i>unformatted</i> disk is a disk image with a file size of zero and/or random bytes.</li>
<li>A disk formatted <b>without</b> a File Sysystem (or Operating System (ProDOS, DOS 3.3, Pascal, etc.) on it may be called a <i>blank</i> or <i>empty</i> disk. (It <i>may</i> or <i>may not</i> be bootable.)</li>
<li>A disk formatted <b>with</b> a File System <b>but no</b> Operating System is called a <i>data</i> disk. Confusingly, it may also be called <i>blank</i>.</li>
<li>A disk formatted <b>with</b> a File System <b>and an</b> Operating System is called a <i>system</i> disk.</li>
</ul>
</p>
<p>This table may help:</p>
<table style="border:1px solid black;" cellpadding="4px">
<tr><th style="border-bottom:1px solid black;">Formatted?</th><th style="border-bottom:1px solid black;">Bootable?</th><th style="border-bottom:1px solid black;">File System?</th><th style="border-bottom:1px solid black;">Has an OS?</th><th style="border-bottom:1px solid black;">Name </th></tr>
<tr><td>no </td><td> n/a</td><td> n/a</td><td> n/a</td><td>Unformatted</td></tr>
<tr><td>yes </td><td> maybe</td><td> no</td><td> no</td><td>Blank </td></tr>
<tr><td>yes </td><td> maybe</td><td> yes</td><td> no</td><td>Data </td></tr>
<tr><td>yes </td><td> yes</td><td> yes</td><td> yes</td><td>System </td></tr>
</table>
<hr size="4">
<h3>New blank image...</h3>
<p>When you use AppleWin's <strong>New blank disk image...</strong> to create a new blank disk it will be <i>bootable</i> since AppleWin provides a custom 256 byte boot sector.</p>
<br><img src="img/disk_boot_data_disk.png" style="width: 50%; height: auto;" border="1" />
<p>To make a disk usable under AppleWin you will need to format it -- either with AppleWin or some other third party utility (see below for a list and their respective manual) -- which puts a File System on it, and optionally an Operating System on it.</p>
<h4>HOWTO: (Re-)Format an Existing Disk Image as a Data Disk</h4>
<ol>
<li>Make sure your disk image is <i>not</i> mounted in the disk drive.&nbsp; If it is then right-click on the drive button and select <strong>Eject.</strong>
<br>
<img src="img/disk_eject.png" style="width: 33%; height: auto;" border="1" /></li>
<li>Hold down the <span style="border: 1px solid black; border-radius: 3px; padding: 2px;">SHIFT</span> key and <b>Right-Click</b> on the drive <img src="img/tb-drv1.png" /> toolbar button then select either:
<ul>
<li><strong>Format ProDOS disk image...</strong>
<br><img src="img/disk_format_prodos_data.png" style="width: 33%; height: auto;" border="1" />
<br><br>or<br><br></li>
<li><strong>Format DOS 3.3 disk image...</strong>
<br><img src="img/disk_format_dos33_data.png" style="width: 33%; height: auto;" border="1" />
</li>
</ul>
</li>
<li>You will see a warning depending on which OS you picked that ALL data will be lost:<br>
<ul>
<li>DOS 3.3<br>
<img src="img/disk_format_dos33_warning.png" style="width: 33%; height: auto;" border="1" />
<br><br>or<br><br></li>
<li>ProDOS</br>
<img src="img/disk_format_prodos_warning.png" style="width: 33%; height: auto;" border="1" />
</li>
</ul>
</li>
<li>Select an existing disk image to over-write then click <b>Open</b>.<br>
<br><img src="img/disk_format_select_existing_disk.png" style="width: 33%; height: auto;" border="1" />
</li>
<li>You can then mount this disk and save/copy files to it.</li>
</ol>
<hr size="4">
<h3>HOWTO: Put an Operating System on new disk:</h3>
<p>When you make a <strong>New disk image</strong> AppleWin puts a boot sector on it. You can customize the boot sector -- this can actually be any binary file, even an a bootable disk image!</p>
<p>Normally to put an Disk Operating System on it you would either need to a disk utility such as Copy ][+, CiderPress -- but we can take advantage of the custom boot sector and AppleWin's <strong>Select boot sector file...</strong> option to <i>simultaneously</i> place both a File System and Operating System on it.</p>
<h4>To put DOS 3.3 on a blank disk:</h4>
<ol>
<li>Make sure your disk it <i>not</i> mounted in the disk drive.&nbsp; If it is, right-click on the drive button and select <strong>Eject.</strong>
<br>
<img src="img/disk_eject.png" style="width: 33%; height: auto;" border="1" />
</li>
<li>Hold down the <span style="border: 1px solid black; border-radius: 3px; padding: 2px;">SHIFT</span> key and <b>Right-Click</b> on the drive <img src="img/tb-drv1.png" /> toolbar button then click on <strong>Select boot sector file...</strong></li>
<br><img src="img/disk_select_boot_sector.png" style="width: 33%; height: auto;" border="1" />
</li>
<li>AppleWin will show the currect boot sector. By default it will use one built into AppleWin.
<br>
<img src="img/disk_default_boot_sector.png" style="width: 33%; height: auto;" border="1" />
</li>
<li>Select <strong>Yes</strong> then select a bootable DOS 3.3 disk such as <strong>DOS 3.3 System Master - 680-0210-A (1982).DSK</strong>
<br>
<img src="img/disk_select_bootsector_dos.png" style="width: 33%; height: auto;" border="1"/>
</li>
<li>Right-click on the drive button and select <strong>New blank 5.25" disk image...</strong>
<br>
<img src="img/disk_new_140kb_disk.png" style="width: 33%; height: auto;" border="1" />
<p><b>NOTE:</b> For DOS 3.3 you MUST select a 5.25" disk since Apple DOS 3.3 does NOT suppport 3.5" or hard drives.</p>
</li>
<li>Type in a name for your disk. It MUST end in <span style="font-family: Courier New,Courier,monospace;">.DSK</span> or <span style="font-family: Courier New,Courier,monospace;">.DO</span>.</li>
<li>You can now mount and boot your new disk image.</li>
</ol>
<h4>To put ProDOS on a blank disk:</h4>
<ol>
<li>Make sure your disk it <i>not</i> mounted in the disk drive.&nbsp; If it is, right-click on the drive button and select <strong>Eject.</strong>
<br>
<img src="img/disk_eject.png" style="width: 33%; height: auto;" border="1" /></li>
<li>Hold down the <span style="border: 1px solid black; border-radius: 3px; padding: 2px;">SHIFT</span> key and <b>Right-Click</b> on the drive <img src="img/tb-drv1.png" /> toolbar button then click on <strong>Select boot sector file...</strong>
<br>
<img src="img/disk_select_boot_sector.png" style="width: 33%; height: auto;" border="1" />
</li>
<li>AppleWin will show the currect boot sector. By default it will use one built into AppleWin.
<br>
<img src="img/disk_default_boot_sector.png" style="width: 33%; height: auto;" border="1" />
</li>
<li>Select a bootable ProDOS disk such as <strong>ProDOS_2_4_3.po</strong>
<br>
<img src="img/disk_select_bootsector_prodos.png" style="width: 33%; height: auto;" border="1" /></li>
<li>Right-click on the drive button and select <strong>New blank disk image...</strong>.
<br>
<img src="img/disk_new_140kb_disk.png" style="width: 33%; height: auto;" border="1" />
<br>
<p><b>NOTE:</b> For ProDOS you can select <i>any</i> of the New blank disk sizes (140 KB, 800 KB, 32 MB) since they are all supported by ProDOS.</p></li>
<li>Type in a name for your disk. It MUST end in <span style="font-family: Courier New,Courier,monospace;">.PO</span> or <span style="font-family: Courier New,Courier,monospace;">.HDV</span>.</li>
<li>You can now mount and boot your new disk image.</li>
</ol>
<hr size="4">
<h3>Sizes of new blank disk images</h3>
Here is table showing the disk sizes of the various <strong>New blank disk image...</strong>
<br>
<br><table style="border:1px solid black;" cellpadding="4px">
<tr><th style="border-bottom:1px solid black;">Option</th><th style="border-bottom:1px solid black;">Disk Size (KB)</th><th style="border-bottom:1px solid black;">Disk Size (Bytes)</th><th style="border-bottom:1px solid black;">Tracks</th></tr>
<tr><td>New blank 5.25" (140 KB) disk image... (Standard 35 Track)</td><td style="text-align:right;">140 KB</td><td style="text-align:right;"> 143,360 bytes</td><td style="text-align:right;"> 35</td></tr>
<tr><td>New blank 5.25" (160 KB) disk image... (Extended 40 Track)</td><td style="text-align:right;">160 KB</td><td style="text-align:right;"> 163,840 bytes</td><td style="text-align:right;"> 40</td></tr>
<tr><td>New blank 3.5" (800 KB) disk image... </td><td style="text-align:right;">800 KB</td><td style="text-align:right;"> 819,200 bytes</td><td style="text-align:right;">200</td></tr>
<tr><td>New blank hard (32 MB) disk image... </td><td style="text-align:right;"> 32 MB</td><td style="text-align:right;">33,554,432 bytes</td><td style="text-align:right;">8,192</td></tr>
</table>
<hr size="4">
<h3>More Disk Utilities</h3>
There are various third-party utilities to create and modify disk images. Three popular ones are:
<ul>
<li><a href="https://ciderpress2.com/">CiderPress 2</a> (newer)</li>
<li><a href="https://a2ciderpress.com/">CiderPress</a> (older)</li>
<li>Copy ][+. <b>NOTE:</b> Version 5.0 introduced ProDOS support but if you are modifying ProDOS disks you will want to use one of the latter versions (such as 8.x or later) since earlier verions have various ProDOS bugs in them dealing with the amount of files in a directory.</li>
</ul>
</body>
</html>

View File

@@ -49,7 +49,7 @@ prevalent on
the Apple, some software publishers developed tricky new ways of
creating disks that even nibble copiers could not copy. Such a
disk can only be transferred onto a WOZ disk image using the
AppleSauce hardware & software. </p>
Applesauce hardware & software. </p>
</body>
</html>

View File

@@ -11,47 +11,115 @@
<body style="background-color: rgb(255, 255, 255); font-family: verdana;" alink="#008000" link="#008000" vlink="#008000">
<h2><font color="#008000">Creating
Disk Images</font></h2>
<h2><font color="#008000">Creating Disk Images</font></h2>
<hr size="4">
<p>To create a new disk image,
all you have to do is tell AppleWin to use an image file which doesn't
already exist and the emulator will automatically create a new image
file.&nbsp; Specifying a new disk image is like inserting a blank,
unformatted floppy disk into a real drive.&nbsp; This means that
the image must be formatted by emulator before it can be used.
Specifically, this is what you'd do using DOS 3.3:</p>
<h3>Basic Disk Images</h3>
<p>There are two ways in AppleWin to create a blank floppy disk image:</p>
<h4>A) Native Disk Menu</h4>
The easiest way to to create a blank disk image is to:
<ol>
<li><strong>Right-Click</strong> on the Drive 1 <img src="img/tb-drv1.png" /> toolbar button (or press <span style="font-family: Courier New,Courier,monospace;">Ctrl-F3</span>) to open the drive pop-up menu.<br>
<li>Load a master DOS 3.3 disk
image in drive 1 and boot the emulated Apple. </li>
<br><img src="img/disk_new_140kb_disk.png" style="width: 33%; height: auto;" border="1"/></li>
<li>Click on the Drive 1
toolbar button. </li>
<li>Depending on the <i>File System</i> desired select:
<li>Instead of selecting a disk
image from the list, type in a name for a new disk image and press
enter. </li>
<p><ul>
<li>For a blank ProDOS disk select: <strong>New ProDOS 5.25" (140KB) disk image (Standard 35 Track)</strong>, or</li>
<li>For a blank DOS 3.3 disk select: <strong>New DOS 3.3 5.25" (140 KB) disk image (Standard 35 Track)</strong>.</li>
</ul>
</p>
<li>Type in a program that you
want DOS to run whenever this new disk is booted. A simple but useful
program is:<br>
<p>Newer programs tend to use ProDOS while older programs tend to use DOS 3.3.</p></li>
<p><strong>NOTE:</strong> By default a new ProDOS disk image will have four files copied onto it:
<ul>
<li><span style="font-family: Courier New,Courier,monospace;">BITSY.BOOT</span></li>
<li><span style="font-family: Courier New,Courier,monospace;">QUIT.SYSTEM</span></li>
<li><span style="font-family: Courier New,Courier,monospace;">BASIC.SYSTEM</span></li>
<li><span style="font-family: Courier New,Courier,monospace;">PRODOS</span></li>
</ul>
<p>If you want to free up more room on a ProDOS disk you can toggle these individually on/off for which file(s) should be copied. (Your preferences persist for the next time you use AppleWin in the registry.)</p>
<li>You will then be asked to optionally name the disk image.<br>
<p>The name will default to:</p>
<ul>
<li><i>blank_floppy_###.po</i> for ProDOS, or </li>
<li><i>blank_floppy_###.do</i> for DOS 3.3.</li>
</ul>
<p><strong>NOTE:</strong> The ### is the current date-time-stamp in YEAR-MON-DAY-HHh-MMm-SSs format.</p></li>
<li>Click <span style="font-family: Courier New,Courier,monospace;">SAVE</span> when ready.</li>
</ol>
<p>You are now ready to use your new disk image.
<h4>B) Classic Disk Creation</h4>
<p>In older versions of AppleWin there was only one way to natively create an empty disk image.
To create an empty disk image:</p>
<ol>
<li>Clicking on the drive icon, and</li>
<li>Type an image file name ending in <span style="font-family: Courier New,Courier,monospace;">.DSK</span> (or <span style="font-family: Courier New,Courier,monospace;">.DO</span>) which <i>doesn't</i> already exist.
</ol>
<p>AppleWin will automatically create a new 5.25" image
(standard 140 KB, 16 sectors/track, 35 tracks) file which is empty and <strong>non-bootable.</strong> (See <a href="ddi-sizes.html">Disk Sizes</a> or <a href="ddi-advanced.html">Advanced Formatting Options</a> for more information.)</p>
<h5>Manually putting DOS 3.3 on a blank disk so it is bootable</h5>
<i>Formatting</i> a disk will put a File System on it and (optionally) copy a Disk Operating System (DOS 3.3, ProDOS, etc.) onto it. This will also make the disk <i>bootable</i> (copies a small assembly language program called the boot sector to Track 0, Sector 0) such that you can use <span style="font-family: Courier New,Courier,monospace;">PR#6</span> too boot it.</p>
Specifying a new disk image is like inserting a blank,
unformatted floppy disk into a real drive.&nbsp; This means that
the image must be formatted (either by the emulator or some other utility) before it can be used.
Specifically, this is what you would do using DOS 3.3:</p>
<ol>
<li>Click on the Drive 1 <img src="img/tb-drv1.png" /> toolbar button (or press <span style="font-family: Courier New,Courier,monospace;">F3</span>)</li>
<li>Load a master DOS 3.3 disk image (eg. <i>DOS 3.3 System Master - 680-0210-A.dsk</i>) in drive 1 and boot the emulated Apple. </li>
<li>Boot the emulated Apple by clicking on the <img src="img/tb-run.png" /> button (or press <span style="font-family: Courier New,Courier,monospace;">F2</span>). </li>
<li>Click on the Drive 1 <img src="img/tb-drv1.png" /> toolbar button (or press <span style="font-family: Courier New,Courier,monospace;">F3</span>) again.</li>
<li>Instead of selecting a disk image from the list, type in a name for a new disk image and press enter.<br>
<p><b>NOTE:</b> The filename SHOULD end in <span style="font-family: Courier New,Courier,monospace;">.DSK</span> or <span style="font-family: Courier New,Courier,monospace;">.DO</span>.</p>
</li>
<li>Type in a program that you want DOS to run whenever this new disk is booted. A simple but useful
program is this Applesoft BASIC program:<br>
<br>
<span style="font-family: Courier New,Courier,monospace;">10
PRINT
CHR$(4);"CATALOG"</span><font face="Courier New"><br>
<span style="font-family: Courier New,Courier,monospace;">10 PRINT CHR$(4);"CATALOG"</span><font face="Courier New"><br>
</font><br>
</li>
<li>Type <span style="font-family: Courier New,Courier,monospace;">"INIT
HELLO"</span> to initialize (format) the disk image. </li>
HELLO"</span> to initialize (format) the disk image.
<p>This will:</p>
<ul>
<li>Put the DOS 3.3 File System on the disk,</li>
<li>Write DOS 3.3 to the first 3 tracks and make the disk bootable,</li>
<li>Write your program to disk.</li>
</ul>
</li>
</ol>
<p>You now have a working disk
@@ -63,10 +131,26 @@ Disk Images</a> topic for more information. </p>
<p>Please note that not all disk image types supported by
AppleWin can be created in this manner.&nbsp; Since there is no way
to detect the image type from the image itself, it is determined by the
given file extension only. Four extensions are allowed: (.DSK, .DO,
.NIB, .WOZ). The first two create a "DOS Order Image", .NIB creates
a "Nibble Image" and .WOZ creates an empty .WOZ image.&nbsp; If the extension is completely omitted,
".DSK" will be chosen by default.&nbsp; For more information, see <a href="ddi-formats.html">Disk Image Formats</a>.</p>
given file extension only. Six extensions are allowed:</p>
<ul>
<li>.DSK -- DOS 3.3 sector order,</li>
<li>.DO -- DOS 3.3 sector order,</li>
<li>.PO -- ProDOS sector order,</li>
<li>.HDV -- ProDOS (hard drive) volume in ProDOS sector order,</li>
<li>.NIB -- older raw nibble image that supports up to 6656 (0x1A00) nibbles/tracks, and</li>
<li>.WOZ -- the newest format that supports all copy protection formats.</li>
</ul>
<p>If the extension is completely omitted, <span style="font-family: Courier New,Courier,monospace;">.DSK</span> will be chosen by default.</p>
<p>For more information, see <a href="ddi-formats.html">Disk Image Formats</a>.</p>
<hr size="4">
<h3>Advanced Disk Creation</h3>
For finer control over disk formatting see <a href="ddi-advanced.html">Advanced Formatting Options</a>.
</body>
</html>

View File

@@ -27,16 +27,24 @@ sectors. If you run a DOS program on the Apple which reads in
sectors one by one and then transfers them over a serial line to
the PC, you will get a DOS order disk image. </p>
<p>Apple floppy disks contained 35 tracks with
<p>Apple floppy disks (normally) contain 35 tracks with
16 sectors per track, for a total of 560 sectors. Each of these
sectors contained 256 bytes of information, for a total of
143,360 bytes per disk. Therefore, DOS order disk images are
always at least 143,360 bytes long. Sometimes on the Internet you
will see a disk image that is 143,488 or 143,616 bytes long; this
will see a disk image that is not 143,360 bytes long; this
is probably a DOS order image with extra header information
before or after the image. In most cases, AppleWin can
automatically detect this and handle it. </p>
<p>Due to some games being incorrectly converted to a disk image AppleWin also accepts disk images of sizes:
<ul>
<li>143,403 bytes (<i>Castle Wolfenstein</i>)</li>
<li>143,488 bytes (<i>Rescue Raiders</i>)</li>
</ul>
<p>Some disk drives were able to handle 40+ tracks. AppleWin accept disk images up to 40 tracks -- 163,840 bytes -- as long as the disk image is a multiple of 4,096 bytes / track.</p>
<p style="font-weight: bold;">ProDOS Order
Images: </p>
@@ -64,7 +72,7 @@ disk; not just the data in sectors but also the sector headers
and synchronization areas, all stored in the same encoded format
that would be recorded on a real disk's surface. At 232,960
bytes, nibble images are bigger than other images, but they can
be useful for making images of copy protected software. </p>
be useful for making images of SOME copy protected software. </p>
<p style="font-weight: bold;">2mg Images:</p>
@@ -75,7 +83,7 @@ write-protection.
<p style="font-weight: bold;">WOZ Images:</p>
<p>The WOZ Disk Image format is an offshoot of the <A href="https://applesaucefdc.com/woz">Applesauce project</A>. Capturing highly accurate bit data is of no use if you don't have a container to hold the data. The WOZ format was designed to be able to contain every possible Apple ][ disk structure and layout. It can be so accurate that even copy protected software can't tell that it isn't an original disk.
<p>The WOZ Disk Image format is an offshoot of the <a target="_blank" href="https://applesaucefdc.com/woz">Applesauce project</a>. Capturing highly accurate bit data is of no use if you don't have a container to hold the data. The WOZ format was designed to be able to contain every possible Apple ][ disk structure and layout. It can be so accurate that even copy protected software can't tell that it isn't an original disk.
</p>
<p style="font-weight: bold;">Compressed Images :</p>

View File

@@ -5,7 +5,6 @@
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Hard Disk Images</title>
</head>
@@ -16,39 +15,38 @@
<hr size="4">
<p style="font-weight: bold;">Overview:</p>
<p>A hard disk controller (or interface) card can be plugged in to slot 7 via the AppleWin Configuration tab labelled Disk.
Just check <span style="font-style: italic;">Enable hard disk controller in slot 7</span>.</p>
<p>A hard disk controller (or interface) card can be plugged in to slot 7 via the
AppleWin Configuration tab labelled Disk. Just check <span style="font-style: italic;">
Enable hard disk controller in slot 7</span>.</p>
<p>There is provision to connect two hard disks to this card from the UI (more can be added via the command line).
This is done by using .hdv or 800KB .2mg files on your PC. Each hard disk can have a maximum capacity of 32MB.</p>
<p>There is provision to connect two hard disks to this card.
This is done by using .hdv or 800KB .2mg files on your PC.
Each hard disk can have a maximum capacity of 32MB.</p>
NB. The hard disk controller supports both fixed-disk types (up to 32MB) and 3.5" floppy types (800KB).
<p>On booting, the Apple will <span style="text-decoration: underline;">always</span>
attempt to
autoboot from slot 7 first. If the hard disk card is unplugged (not
enabled) then
the Apple will then attempt to boot from slot 6 (with the Disk][
attempt to autoboot from slot 7 first. If the hard disk card is unplugged (not
enabled) then the Apple will then attempt to boot from slot 6 (with the Disk][
interface card in it).</p>
<p>To boot a floppy disk with the hard disk card enabled, either hold down the Open-Apple key during an Apple II restart or
issue PR#6 from an AppleSoft prompt.</p>
<p>To boot a floppy disk with the hard disk card enabled, either hold down the
Open-Apple key during an Apple II restart or issue PR#6 from an AppleSoft prompt.</p>
<p>Use command line options to insert a hard disk controller card into slot 5, and attach HDDs.</p>
<p>The firmware in the hard disk controller card defaults to:
<li>II/II+/Unenhanced //e: ProDOS block mode, supporting up to 4 HDDs.</li>
<li>Enhanced //e: SmartPort, supporting up to 8 HDDs.</li>
</p>
<p style="font-weight: bold;">Warnings:</p>
<ul>
<li>Unchecking <span style="font-style: italic;">Enable hard disk controller in slot 7</span> whilst the Apple is running will
physically unplugging the hard disk card. This can lead to a corrupt
.hdv image if the Apple is writing to the hard disk when it is unplugged!</li>
<li>Equally, exiting AppleWin
can have the same affect.</li>
<li>Copy][+ v7.1 locks up when
trying to calculate how many free blocks are available when running a
catalog. This is a bug in Copy][+ which is fixed in later versions.</li>
<li>Unchecking <span style="font-style: italic;">Enable hard disk controller in slot 7</span>
whilst the Apple is running will physically unplugging the hard disk card. This
can lead to a corrupt .hdv image if the Apple is writing to the hard disk when it is unplugged!</li>
<li>Equally, exiting AppleWin can have the same affect.</li>
<li>Copy][+ v7.1 locks up when trying to calculate how many free blocks are
available when running a catalog. This is a bug in Copy][+ which is fixed in later versions.</li>
</ul>
</body>

View File

@@ -22,7 +22,7 @@ Images</h2>
<hr size="4">
<p>Everyone who once used an
Apple II and now
uses an IBM-compatible PC has the same problem:&nbsp; How can you
uses a PC has the same problem: How can you
make
the PC read Apple floppy disks? Unfortunately, without special
hardware, you can't. </p>
@@ -33,21 +33,26 @@ devices, much like
cassette tapes. For a computer to store digital data on a floppy
disk, it must "encode" the data into an analog format.
The Apple II used a method of encoding called Group Code
Recording (GCR), while IBM-compatible PC's use the much more
Recording (GCR), while IBM-compatible PC's used the much more
standard Modified Frequency Modulation (MFM) encoding. Since this
is all done in hardware and cannot be bypassed, it is not
possible for a PC program to "reprogram" the floppy
possible for a PC program to "reprogram" the 5.25" floppy
drive in such a way that it could read Apple-formatted floppy diskettes. </p>
<p>Therefore, instead of reading
and writing
disks directly, AppleWin uses disk images. A disk image is a
single file, which you can store on your hard drive or on a PC
floppy diskette, which contains all of the data from an entire Apple
single file, which you can store on your PC,
which contains all of the data from an entire Apple
diskette. AppleWin treats an image exactly as if it were a real
floppy disk. </p>
<p>Included in the AppleWin distribution is the DOS 3.3 System Master disk dated "January 1, 1983" (<i>DOS 3.3 System Master - 680-0210-A.dsk</i>), a blank DOS 3.3 disk (<i>BLANK.DSK</i>) created using the same System Master disk and a modern ProDOS disk (<i>ProDOS_2_4_3.po</i>).
<br>
<br>
NB. ProDOS 2.4 is an updated version by John Brooks, including support for all Apple II's. More details can be found here <a target="_blank" href="https://prodos8.com/">ProDOS8.com</a>.
</p>
</body>
</html>

View File

@@ -60,7 +60,7 @@ tool-tip with the full name.</p>
NB. There is no support for this feature for non-WOZ images.
</p>
<p><sub style="FONT-WEIGHT: bold">1</sub>&nbsp;To register the file types in Windows Vista, Windows 7 and Windows 10,
<p><sub style="FONT-WEIGHT: bold">1</sub>&nbsp;To register the file types in Windows Vista, Windows 7, Windows 10 and Windows 11,
you will need to run AppleWin with elevated privileges. This only needs to be done once.
Right click the AppleWin.exe icon and select 'Run as Administrator'.</p>

31
help/ddi-sizes.html Normal file
View File

@@ -0,0 +1,31 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Disk Sizes</title>
</head>
<body style="background-color: rgb(255, 255, 255); font-family: verdana;" alink="#008000" link="#008000" vlink="#008000">
<h2 style="color: rgb(0, 128, 0);">Disks Sizes</h2>
<hr size="4">
<p>You may be wondering why there are various disk sizes. AppleWin supports floppy disk and hard drive images.</p>
<br>
<ul>
<li>A standard 5.25" floppy disk normally has 35 tracks. This disk can hold 140 KB.</li>
<li>An extended 5.25" floppy disk may have up to 40 tracks. This disk can hold 160 KB.</li>
<li>When the Apple //c+ came out it came with a 3.5" floppy disk drive. This disk can hold 800 KB. Vanilla Apple DOS 3.3 does NOT support this larger disk size; you must use another Operating System such as ProDOS.</li>
<li>Hard drives can hold even more data; the maximum size under ProDOS is 32 MB. Vanilla Apple DOS 3.3 does NOT support this larger disk size; you must use another Operating System such as ProDOS.</li>
</ul>
</body>
</html>

View File

@@ -30,7 +30,7 @@ Common programs for doing this work are ADT and ADTPro:</p>
<ul>
<li>Apple Disk Transfer (ADT) - <a target="_blank" href="https://github.com/david-schmidt/adt">https://github.com/david-schmidt/adt</a>
- runs natively on Windows, but is limited to transferring 5-1/4" disks.</li>
<li>Apple Disk Transfer ProDOS (ADTPro) - <a target="_blank" href="http://adtpro.sourceforge.net/connectionsserial.html">http://adtpro.sourceforge.net/connectionsserial.html</a>
<li>Apple Disk Transfer ProDOS (ADTPro) - <a target="_blank" href="https://adtpro.com/connectionsserial.html">https://adtpro.com/connectionsserial.html</a>
- requires Java, but is capable of transferring all disk types and sizes.</li>
</ul>
@@ -42,16 +42,16 @@ but may be used if
the Apple in question lacks a serial port, for example.
Common programs for doing this work are ADTPro and Arme Leute Apple Disk Transfer:</p>
<ul>
<li>Apple Disk Transfer ProDOS (ADTPro) - <a target="_blank" href="http://adtpro.sourceforge.net/connectionsaudio.html">http://adtpro.sourceforge.net/connectionsaudio.html</a>
<li>Arme Leute Apple Disk Transfer (Poor Man's ADT) - <a target="_blank" href="http://seb.riot.org/appleII/aladt.sml">http://seb.riot.org/appleII/aladt.sml</a>
<li>Apple Disk Transfer ProDOS (ADTPro) - <a target="_blank" href="https://adtpro.com/connectionsaudio.html">https://adtpro.com/connectionsaudio.html</a>
<li>Arme Leute Apple Disk Transfer (Poor Man's ADT) - <a target="_blank" href="https://knzl.at/poor-mans-adt/">https://knzl.at/poor-mans-adt/</a>
</ul>
<p style="font-weight: bold;">Ethernet Transfers:</p>
Apples with an <a href="http://a2retrosystems.com/">A2RetroSystems</a>' Uthernet
Apples with an <a target="_blank" href="http://a2retrosystems.com/">A2RetroSystems</a>' Uthernet
card can transfer disk images via ADTPro:
<ul>
<li>Apple Disk Transfer ProDOS (ADTPro) - <a target="_blank" href="http://adtpro.sourceforge.net/configethernet.html">http://adtpro.sourceforge.net/configethernet.html</a>
<li>Apple Disk Transfer ProDOS (ADTPro) - <a target="_blank" href="https://adtpro.com/configethernet.html">https://adtpro.com/configethernet.html</a>
</ul>
@@ -82,7 +82,7 @@ uncompress the archive file. Nulib is available from
Through 3.5"
Disks:</p>
<p>One final way to transfer disk
<p>Another way to transfer disk
images is to
copy the data onto a 3.5" disk, and then use a Macintosh to
transfer the data from the 3.5" disk into a PC readable
@@ -109,5 +109,8 @@ PC Exchange.</li>
</ol>
<p style="font-weight: bold;">Transferring via Applesauce hardware:</p>
The <a target="_blank" href="https://applesaucefdc.com">Applesauce project</a> comprises of hardware and software which can be used to transfer both unprotected and copy-protected disk images.
</body>
</html>

View File

@@ -20,26 +20,24 @@ topics: </p>
<ul>
<li><a href="ddi-intro.html">Introduction
to Disk Images</a></li>
<li><a href="ddi-intro.html">Introduction to Disk Images</a></li>
<li><a href="ddi-load.html">Loading
Disk Images</a></li>
<li><a href="ddi-load.html">Loading Disk Images</a></li>
<li><a href="ddi-create.html">Creating
Disk Images</a></li>
<li><a href="ddi-create.html">Creating Disk Images</a></li>
<li><a href="ddi-transfer.html">Transferring Disk
Images</a></li>
<li><a href="ddi-advanced.html">Advanced Formatting Options</a></li>
<li><a href="ddi-copy.html">Copy
Protected Disks</a></li>
<li><a href="ddi-transfer.html">Transferring Disk Images</a></li>
<li><a href="ddi-formats.html">Disk
Image Formats</a></li>
<li><a href="ddi-copy.html">Copy Protected Disks</a></li>
<li><a href="ddi-formats.html">Disk Image Formats</a></li>
<li><a href="ddi-harddisk.html">Hard Disk Images</a></li>
<li><a href="ddi-sizes.html">Disk Sizes</a></li>
</ul>
</body>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
help/img/disk_eject.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

View File

@@ -5,11 +5,23 @@
<body style="font-family: verdana; background-color: rgb(255, 255, 255);" alink="#008000" link="#008000" vlink="#008000">
<h2 style="color: rgb(0, 128, 0);">Using the Keyboard</h2>
<hr size="4">
<p>Normally to start an Apple II computer you would insert a floppy into
the floppy disk drive and power it on. If you don't have a disk inserted
the drive motor will stay on indefinitely. To enter Applesoft BASIC instead (and stop the disk
drive from spinning) you should press Ctrl+Reset. In AppleWin this sequence is
<span style="font-style: italic;">analogous</span> to pressing the following keys:</p>
<ul>
<li><span style="font-weight: bold;">F2</span> (Power On), and
<li><span style="font-weight: bold;">Ctrl+F2</span> or <span style="font-weight: bold;">Ctrl+Break</span> (Ctrl+Reset)
</ul>
<br>
<p>The Apple //e keyboard was very similar to the PC keyboard, and most keys
correspond directly between the two keyboards. However, there were a few keys
on the Apple //e that are not on the PC; these are described below:</p>
<p><span style="font-weight: bold;">Reset</span>:<br>
On the Apple //e, you could usually press Control+Reset to interrupt a running
On the Apple //e, you could usually press Ctrl+Reset to interrupt a running
program. With the Apple //e Emulator, you may emulate this key sequence with
<span style="font-style: italic;">Ctrl+F2</span> or
<span style="font-style: italic;">Ctrl+Break</span>.
@@ -81,6 +93,10 @@
Copy the text screen (auto detect 40/80 columns) to the clipboard.</p>
<p><span style="font-weight: bold;">Alt+Enter:</span><br>
Default: Toggle between windowed and full screen video modes. (NB. Will conflict with emulation and prevent Open Apple + Enter from being readable. Use the <a href="CommandLine.html">Command Line</a> switch to allow Open Apple + Enter to be readable.)</p>
<p><span style="font-weight: bold;">Alt+Tab:</span><br>
Default: Switch between application-level windows. (NB. Will conflict with emulation and prevent Open Apple + Tab from being readable. Use the <a href="CommandLine.html">Command Line</a> switch to allow Open Apple + Tab to be readable.)</p>
<p><span style="font-weight: bold;">Alt+Esc, Alt+Space and Ctrl+Esc:</span><br>
Default: AppleWin hooks these keyboard shortcuts preventing Windows from detecting them. (NB. Use the <a href="CommandLine.html">Command Line</a> switch to allow Windows to detect them.)</p>
<p><span style="font-weight: bold;">Ctrl+Left Mouse Button:</span><br>
This will show the Windows mouse cursor when emulating an Apple joystick with the PC's mouse or using a Mouse card.<br>
<p><span style="font-weight: bold;">Function Keys F1-F8:</span><br>

View File

@@ -45,10 +45,12 @@
<li>Alternate ROM</li>
<li>Alternate video ROM</li>
</ul>
<p>Note: Only the file names of the disk images are stored in the .yaml file (not the
full path). This allows you to move your disk image around or distribute them.
If AppleWin can't locate the disk image(s), then it will prompt for the new
location.</p>
<p>
Note: Both the file name and absolute path are stored in the .yaml file.
This allows you to move your disk image around or distribute them.
If AppleWin still can't locate the disk image(s), then it will prompt for the new
location.
</p>
<p>NB. Loading of the old v1 file format (.aws file) is no longer supported. Use AppleWin 1.27.13 to load it at the AppleWin start-up/logo screen,
then immediately save it (and it'll be saved in the v2 format).</p>
</body>

View File

@@ -49,9 +49,10 @@
<li>Broadsides</li>
<li>Crimewave (Votrax speech)</li>
<li>Crypt of Medea (Votrax speech)</li>
<li>Cybernoid Music Disk</li>
<li><a target="_blank" href="https://github.com/tomcw/Cybernoid">Cybernoid Music Disk</a></li>
<li>French Touch demos, eg. (NOT SO) Cheap Tunes, Plasmagoria, Raster Bars + many others</li>
<li>Lady Tut (Mockingboard version)</li>
<li><a target="_blank" href="https://github.com/tomcw/mb-audit">mb-audit: diagnostics & tests</a></li>
<li>Mockingboard software (Sweet Micro Systems)</li>
<li>Mockingboard Classic Adventure (Sweet Micro Systems) (SSI263 speech only)</li>
<li>Music Construction Set</li>

View File

@@ -12,7 +12,7 @@
Copyright <20> 1994-1996, Michael O'Brien<br>
Copyright <20> 2001, Oliver Schmidt<br>
Copyright <20> 2002-2005, Tom Charlesworth<br>
Copyright <20> 2006-2024, Tom Charlesworth, Michael Pohoreski, Nick Westgate, Linards Ticmanis<br>
Copyright <20> 2006-2025, Tom Charlesworth, Michael Pohoreski, Nick Westgate, Linards Ticmanis<br>
<br>
<a href="applewin-team.html">AppleWin team</a>
<br>

View File

@@ -15,9 +15,9 @@
<P style="FONT-WEIGHT: bold">Acknowledgment:
</P>
<P>Uthernet (TFE) support in AppleWin was made possible by implementing the GPL
source written by Spiro Trikaliotis for the Vice emulator - <A href="http://vice-emu.sourceforge.net/index.html#developers">
http://vice-emu.sourceforge.net/index.html#developers</A></P>
<P><A href="https://a2retrosystems.com/">Uthernet II</A> support in AppleWin has been contributed by Andrea (audetto) Odetti.</P>
source written by Spiro Trikaliotis for the Vice emulator - <a target="_blank" href="http://vice-emu.sourceforge.net/index.html#developers">
http://vice-emu.sourceforge.net/index.html#developers</a></P>
<P><a target="_blank" href="https://a2retrosystems.com/">Uthernet II</a> support in AppleWin has been contributed by Andrea (audetto) Odetti.</P>
<P style="FONT-WEIGHT: bold">Details:
</P>
<P>To enable ethernet support in AppleWin you must first download and install
@@ -29,9 +29,9 @@
a switch. If you plan on doing any network programming Wireshark is a definite
must have.
</P>
<P>Npcap: <A href="https://nmap.org/npcap/#download">https://nmap.org/npcap/#download</A>
or Wireshark: <A href="https://www.wireshark.org">https://www.wireshark.org</A>
(or WinPcap: <A href="https://www.winpcap.org/install/default.htm">https://www.winpcap.org/install/default.htm</A>)
<P>Npcap: <A target="_blank" href="https://nmap.org/npcap/#download">https://nmap.org/npcap/#download</A>
or Wireshark: <A target="_blank" href="https://www.wireshark.org">https://www.wireshark.org</A>
(or WinPcap: <A target="_blank" href="https://www.winpcap.org/install/default.htm">https://www.winpcap.org/install/default.htm</A>)
</P>
<P>After AppleWin starts, select the settings icon and then select the ethernet
settings button.
@@ -50,11 +50,11 @@
with WinPcap (but see <A href="uthernet-wifi-workaround.html">WiFi Workaround</A>).
</P>
<P>In order to test the ethernet emulation out you should grab a copy of Contiki
for the Apple II here - <A href="http://www.a2retrosystems.com/downloads.htm">http://www.a2retrosystems.com/downloads.htm</A>
for the Apple II here - <A target="_blank" href="http://www.a2retrosystems.com/downloads.htm">http://www.a2retrosystems.com/downloads.htm</A>
</P>
<P>Grab the 80 Col. Primary Disk and Supplementary Disk images if using Apple //e
emulation or the 40 Col versions if running Apple II+ emulation. You should
also grab a copy of the Uthernet/Contiki getting started guide <A href="http://www.a2retrosystems.com/a2UtherManual.pdf">
also grab a copy of the Uthernet/Contiki getting started guide <A target="_blank" href="http://www.a2retrosystems.com/a2UtherManual.pdf">
http://www.a2retrosystems.com/a2UtherManual.pdf</A>
</P>
<P>Select the contiki80pri.dsk image. Boot AppleWin.
@@ -85,9 +85,9 @@
<P style="FONT-WEIGHT: bold">Troubleshooting:
</P>
<P>If you have ZoneAlarm running then try disabling it inorder to access the web.
if you are still having difficulty then you should refer to the VICE network
support page for additional information - <A href="http://vicekb.trikaliotis.net/13-005.shtml">
http://vicekb.trikaliotis.net/13-005.shtml</A></P>
(If you are still having difficulty then you could try referring to the VICE network
support page for additional information, now archived <A target="_blank" href="https://github.com/AppleWin/AppleWin/blob/master/docs/VICE%20Knowledge%20Base%20-%20Article%2013-005.htm">
here</A>.)</P>
<P style="FONT-WEIGHT: bold">Uthernet II:
</P>
<P>Most features of the Uthernet II are emulated, with the following caveats:
@@ -97,10 +97,10 @@
<li>after loading a save-state file, TCP and UDP sockets are closed</li>
</ul>
</P>
<P>The card implements a <A href="https://github.com/a2retrosystems/uthernet2/wiki/Virtual-W5100-with-DNS">Virtual DNS</A>
<P>The card implements a <A target="_blank" href="https://github.com/a2retrosystems/uthernet2/wiki/Virtual-W5100-with-DNS">Virtual DNS</A>
interface (not found on real hardware) for Apple II software to run without raw sockets: this allows operation on any type of network.
</P>
<P>Note that the Apple II application must be virtual W5100-aware (currently as of early 2024 the only application that supports this is <A href="https://github.com/oliverschmidt/A2Stream">A2Stream</A>). AppleWin will utilise DNS offloading when both AppleWin is configured to use "Virtual DNS" and the Apple II application enables the W5100 for the "Virtual DNS" mode.
<P>Note that the Apple II application must be virtual W5100-aware (currently as of early 2024 the only application that supports this is <A target="_blank" href="https://github.com/oliverschmidt/A2Stream">A2Stream</A>). AppleWin will utilise DNS offloading when both AppleWin is configured to use "Virtual DNS" and the Apple II application enables the W5100 for the "Virtual DNS" mode.
</P>
<P>Enabling AppleWin for "Virtual DNS" and using with Apple II applications that don't support this is harmless (but you won't get any benefit).
</P>

View File

@@ -36,8 +36,8 @@
<PropertyGroup Label="Globals">
<ProjectGuid>{509739E7-0AF3-4C09-A1A9-F0B1BC31B39D}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>zip_lib</RootNamespace>
<ProjectName>zip_lib</ProjectName>
<RootNamespace>minizip</RootNamespace>
<ProjectName>minizip</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

View File

@@ -36,8 +36,8 @@
<PropertyGroup Label="Globals">
<ProjectGuid>{509739E7-0AF3-4C09-A1A9-F0B1BC31B39D}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>zip_lib</RootNamespace>
<ProjectName>zip_lib</ProjectName>
<RootNamespace>minizip</RootNamespace>
<ProjectName>minizip</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

View File

@@ -70,13 +70,13 @@ LED_CAPSOFF_P8_BITMAP BITMAP "LED_CAPS_OFF_P8.BMP"
LED_CAPSON_P8_BITMAP BITMAP "LED_CAPS_ON_P8.BMP"
LED_LATOFF_BITMAP BITMAP "LED_CAPS_OFF_LAT.BMP"
LED_LATON_BITMAP BITMAP "LED_CAPS_ON_LAT.BMP"
CHARSET82 BITMAP "CHARSET82.BMP"
CHARSET8M BITMAP "CHARSET8M.BMP"
CHARSET8C BITMAP "CHARSET8C.BMP"
IDB_CHARSET82 BITMAP "CHARSET82.bmp"
IDB_CHARSET8M BITMAP "CHARSET8M.bmp"
IDB_CHARSET8C BITMAP "CHARSET8C.bmp"
HELP_BUTTON BITMAP "HELP.BMP"
DRIVESWAP_BUTTON BITMAP "DRIVESWAP.BMP"
IDB_APPLEWIN BITMAP "ApplewinLogo.bmp"
IDB_DEBUG_FONT_7X8 BITMAP "Debug_Font.bmp"
IDB_DEBUG_FONT_7_by_8 BITMAP "Debug_Font.bmp"
/////////////////////////////////////////////////////////////////////////////
//
@@ -297,7 +297,7 @@ BEGIN
VALUE "FileDescription", "Apple //e Emulator for Windows"
VALUE "FileVersion", APPLEWIN_VERSION_STR
VALUE "InternalName", "APPLEWIN"
VALUE "LegalCopyright", " 1994-2024 Michael O'Brien, Oliver Schmidt, Tom Charlesworth, Michael Pohoreski, Nick Westgate, Linards Ticmanis"
VALUE "LegalCopyright", " 1994-2025 Michael O'Brien, Oliver Schmidt, Tom Charlesworth, Michael Pohoreski, Nick Westgate, Linards Ticmanis"
VALUE "OriginalFilename", "APPLEWIN.EXE"
VALUE "ProductName", "Apple //e Emulator"
VALUE "ProductVersion", APPLEWIN_VERSION_STR
@@ -327,8 +327,8 @@ END
// FIRMWARE
//
IDR_DISK2_13SECTOR_FW FIRMWARE "Disk2-13sector.rom"
IDR_DISK2_16SECTOR_FW FIRMWARE "Disk2.rom"
IDR_DISK2_13SECTOR_FW FIRMWARE "DISK2-13sector.rom"
IDR_DISK2_16SECTOR_FW FIRMWARE "DISK2.rom"
IDR_SSC_FW FIRMWARE "SSC.rom"
IDR_HDDRVR_FW FIRMWARE "Hddrvr.bin"
IDR_HDDRVR_V2_FW FIRMWARE "Hddrvr-v2.bin"
@@ -338,6 +338,18 @@ IDR_MOCKINGBOARD_D_FW FIRMWARE "Mockingboard-D.rom"
IDR_MOUSEINTERFACE_FW FIRMWARE "MouseInterface.rom"
IDR_THUNDERCLOCKPLUS_FW FIRMWARE "ThunderClockPlus.rom"
IDR_TKCLOCK_FW FIRMWARE "TKClock.rom"
/// <summary>
/// When a user uses the right-click disk pop-up menu to format a new disk image
/// We write our own custom boot sector so the user doesn't crash to the monitor when booting it.
/// Technically not firmware but since it never changes we put this resource here.
/// </summary>
IDR_BOOT_SECTOR FIRMWARE "firmware\\BootSector\\bootsector.bin"
IDR_OS_DOS33 FIRMWARE "firmware\\OS\\dos33c.bin"
IDR_OS_PRODOS243 FIRMWARE "firmware\\OS\\prodos243.bin"
IDR_BOOT_SECTOR_PRODOS243 FIRMWARE "firmware\\OS\\bootsector_prodos243.bin"
IDR_FILE_BASIC17 FIRMWARE "firmware\\OS\basic17.system.bin"
IDR_FILE_BITSY_BOOT FIRMWARE "firmware\\OS\\bitsy.boot.bin"
IDR_FILE_BITSY_BYE FIRMWARE "firmware\\OS\\quit.system.bin"
/////////////////////////////////////////////////////////////////////////////
//
@@ -349,12 +361,12 @@ IDR_APPLE2_PLUS_ROM ROM "Apple2_Plus.rom"
IDR_APPLE2_JPLUS_ROM ROM "Apple2_JPlus.rom"
IDR_APPLE2E_ROM ROM "Apple2e.rom"
IDR_APPLE2E_ENHANCED_ROM ROM "Apple2e_Enhanced.rom"
IDR_PRAVETS_82_ROM ROM "Pravets82.rom"
IDR_PRAVETS_8M_ROM ROM "Pravets8M.rom"
IDR_PRAVETS_8C_ROM ROM "Pravets8C.rom"
IDR_PRAVETS_82_ROM ROM "PRAVETS82.ROM"
IDR_PRAVETS_8M_ROM ROM "PRAVETS8M.ROM"
IDR_PRAVETS_8C_ROM ROM "PRAVETS8C.ROM"
IDR_TK3000_2E_ROM ROM "TK3000e.rom"
IDR_BASE_64A_ROM ROM "Base64A.rom"
IDR_FREEZES_F8_ROM ROM "FREEZES_NON-AUTOSTART_F8_ROM.rom"
IDR_FREEZES_F8_ROM ROM "Freezes_Non-Autostart_F8_Rom.rom"
/////////////////////////////////////////////////////////////////////////////
//
@@ -384,14 +396,37 @@ BEGIN
END
END
// The Resource Compiler doesn't like strings with parenthesis in them so markup
// literal ", (, and ) with hex literals.
// Also See: https://www.ryanliptak.com/blog/every-rc-exe-bug-quirk-probably/
IDR_MENU_DISK_POPUP MENU
BEGIN
POPUP "Disk Menu"
BEGIN
MENUITEM "&Eject", ID_DISKMENU_EJECT
MENUITEM "Read / &Write", ID_DISKMENU_WRITEPROTECTION_OFF
MENUITEM "&Read only", ID_DISKMENU_WRITEPROTECTION_ON
MENUITEM "Send to &CiderPress", ID_DISKMENU_SENDTO_CIDERPRESS
MENUITEM "&Eject", ID_DISKMENU_EJECT
MENUITEM "Read / &Write", ID_DISKMENU_WRITEPROTECTION_OFF
MENUITEM "&Read only", ID_DISKMENU_WRITEPROTECTION_ON
MENUITEM "Send to &CiderPress", ID_DISKMENU_SENDTO_CIDERPRESS
MENUITEM SEPARATOR
MENUITEM "New &ProDOS 5.25\x22 \x28140 KB\x29 disk image... \x28Standard 35 Track\x29", ID_DISKMENU_NEW_PRODOS_140K_DISK
MENUITEM "New ProDOS 5.25\x22 \x28160 KB\x29 disk image... \x28Extended 40 Track\x29", ID_DISKMENU_NEW_PRODOS_160K_DISK
MENUITEM "New ProDOS 3.5\x22 \x28800 KB\x29 disk image...", ID_DISKMENU_NEW_PRODOS_800K_DISK
MENUITEM "New ProDOS hard \x2832 MB\x29 disk image...", ID_DISKMENU_NEW_PRODOS_32MB_DISK
MENUITEM "On format copy PRODOS", ID_DISKMENU_NEW_DISK_COPY_PRODOS
MENUITEM "On format copy Bitsy Boot", ID_DISKMENU_NEW_DISK_COPY_BITSY_BOOT
MENUITEM "On format copy Bitsy Bye", ID_DISKMENU_NEW_DISK_COPY_BITSY_BYE
MENUITEM "On format copy BASIC.SYSTEM", ID_DISKMENU_NEW_DISK_COPY_BASIC
MENUITEM SEPARATOR
MENUITEM "New &DOS 3.3 5.25\x22 \x28140 KB\x29 disk image... \x28Standard 35 Track\x29",ID_DISKMENU_NEW_DOS33_140K_DISK
MENUITEM "New DOS 3.3 5.25\x22 \x28160 KB\x29 disk image... \x28Extended 40 Track\x29", ID_DISKMENU_NEW_DOS33_160K_DISK
MENUITEM "-", ID_DISKMENU_ADVANCED_SEPARATOR
MENUITEM "Select boot sector file...", ID_DISKMENU_SELECT_BOOT_SECTOR
MENUITEM "New blank 5.25\x22 \x28140 KB\x29 disk image... \x28Standard 35 Track\x29", ID_DISKMENU_NEW_BLANK_140K_DISK
MENUITEM "New blank 5.25\x22 \x28160 KB\x29 disk image... \x28Extended 40 Track\x29", ID_DISKMENU_NEW_BLANK_160K_DISK
MENUITEM "New blank 3.5\x22 \x28800 KB\x29 disk image...", ID_DISKMENU_NEW_BLANK_800K_DISK
MENUITEM "New blank hard \x2832 MB\x29 disk image...", ID_DISKMENU_NEW_BLANK_32MB_DISK
MENUITEM "Format ProDOS disk image...", ID_DISKMENU_FORMAT_PRODOS_DISK
MENUITEM "Format DOS 3.3 disk image...", ID_DISKMENU_FORMAT_DOS33_DISK
END
END

Binary file not shown.

View File

@@ -39,9 +39,10 @@
#define IDR_MOCKINGBOARD_D_FW 135
#define IDR_MOUSEINTERFACE_FW 136
#define IDR_THUNDERCLOCKPLUS_FW 137
#define IDR_FREEZES_F8_ROM 138
#define IDR_PRAVETS_82_ROM 139
#define IDR_PRAVETS_8M_ROM 140
#define IDR_BOOT_SECTOR 138
#define IDR_FREEZES_F8_ROM 139
#define IDR_PRAVETS_82_ROM 140
#define IDR_PRAVETS_8M_ROM 141
#define IDR_PRAVETS_8C_ROM 142
#define IDR_MENU_DISK_POPUP 143
#define IDD_ABOUT 145
@@ -56,6 +57,16 @@
#define IDR_BASE64A_VIDEO_ROM 154
#define IDR_HDDRVR_V2_FW 155
#define IDR_HDC_SMARTPORT_FW 156
#define IDB_CHARSET8M 157
#define IDB_CHARSET82 158
#define IDB_CHARSET8C 159
#define IDB_DEBUG_FONT_7_by_8 160
#define IDR_OS_DOS33 161
#define IDR_OS_PRODOS243 162
#define IDR_BOOT_SECTOR_PRODOS243 163
#define IDR_FILE_BITSY_BOOT 164
#define IDR_FILE_BITSY_BYE 165
#define IDR_FILE_BASIC17 166
#define IDC_KEYB_BUFFER_ENABLE 1005
#define IDC_SAVESTATE 1006
#define IDC_SAVESTATE_ON_EXIT 1007
@@ -128,19 +139,37 @@
#define IDM_EXIT 40001
#define IDM_HELP 40002
#define IDM_ABOUT 40003
#define ID_DISKMENU_EJECT 40004
#define ID_DISKMENU_WRITEPROTECTION_ON 40005
#define ID_DISKMENU_WRITEPROTECTION_OFF 40006
#define ID_DISKMENU_SENDTO_CIDERPRESS 40007
#define ID_DISKMENU_EJECT 40004
#define ID_DISKMENU_WRITEPROTECTION_ON 40005
#define ID_DISKMENU_WRITEPROTECTION_OFF 40006
#define ID_DISKMENU_SENDTO_CIDERPRESS 40007
#define ID_DISKMENU_NEW_PRODOS_140K_DISK 40008
#define ID_DISKMENU_NEW_PRODOS_160K_DISK 40009
#define ID_DISKMENU_NEW_PRODOS_800K_DISK 40010
#define ID_DISKMENU_NEW_PRODOS_32MB_DISK 40011
#define ID_DISKMENU_NEW_DISK_COPY_PRODOS 40012
#define ID_DISKMENU_NEW_DISK_COPY_BITSY_BOOT 40013
#define ID_DISKMENU_NEW_DISK_COPY_BITSY_BYE 40014
#define ID_DISKMENU_NEW_DISK_COPY_BASIC 40015
#define ID_DISKMENU_NEW_DOS33_140K_DISK 40016
#define ID_DISKMENU_NEW_DOS33_160K_DISK 40017
#define ID_DISKMENU_ADVANCED_SEPARATOR 40019
#define ID_DISKMENU_SELECT_BOOT_SECTOR 40019
#define ID_DISKMENU_NEW_BLANK_140K_DISK 40020
#define ID_DISKMENU_NEW_BLANK_160K_DISK 40021
#define ID_DISKMENU_NEW_BLANK_800K_DISK 40022
#define ID_DISKMENU_NEW_BLANK_32MB_DISK 40023
#define ID_DISKMENU_FORMAT_PRODOS_DISK 40024
#define ID_DISKMENU_FORMAT_DOS33_DISK 40025
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 149
#define _APS_NEXT_COMMAND_VALUE 40012
#define _APS_NEXT_CONTROL_VALUE 1083
#define _APS_NEXT_RESOURCE_VALUE 167
#define _APS_NEXT_COMMAND_VALUE 40026
#define _APS_NEXT_CONTROL_VALUE 1093
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@@ -1,4 +1,4 @@
#define APPLEWIN_VERSION 1,30,19,0
#define APPLEWIN_VERSION 1,30,21,0
#define xstr(a) str(a)
#define str(a) #a

View File

@@ -87,7 +87,6 @@ void SY6522::StopTimer1(void)
void SY6522::StartTimer2(void)
{
m_timer2Active = true;
}
void SY6522::StopTimer2(void)
@@ -353,6 +352,8 @@ BYTE SY6522::Read(BYTE nReg)
break;
case 0x02: // DDRB
nValue = m_regs.DDRB;
if (m_bad6522)
nValue &= ~1; // DDRB.b0 = 0 (for testing mb-audit)
break;
case 0x03: // DDRA
nValue = m_regs.DDRA;
@@ -410,188 +411,200 @@ BYTE SY6522::Read(BYTE nReg)
// TODO: RMW opcodes: dec,inc,asl,lsr,rol,ror (abs16 & abs16,x) + 65C02 trb,tsb (abs16)
UINT SY6522::GetOpcodeCyclesForRead(BYTE reg)
{
UINT opcodeCycles = 0;
BYTE opcode = 0;
bool abs16 = false;
UINT zpOpcodeCycles = 0, opcodeCycles = 0;
BYTE zpOpcode = 0, opcode = 0; // these double-up as flags to indicate validity
bool abs16x = false;
bool abs16y = false;
bool indx = false;
bool indy = false;
const BYTE opcodeMinus3 = mem[(::regs.pc - 3) & 0xffff];
const BYTE opcodeMinus2 = mem[(::regs.pc - 2) & 0xffff];
const BYTE opcodeMinus3 = ReadByteFromMemory(::regs.pc - 3);
const BYTE opcodeMinus2 = ReadByteFromMemory(::regs.pc - 2);
// Check 2-byte opcodes
if (((opcodeMinus2 & 0x0f) == 0x01) && ((opcodeMinus2 & 0x10) == 0x00)) // ora (zp,x), and (zp,x), ..., sbc (zp,x)
{
// NB. this is for read, so don't need to exclude 0x81 / sta (zp,x)
opcodeCycles = 6;
opcode = opcodeMinus2;
zpOpcodeCycles = 6;
zpOpcode = opcodeMinus2;
indx = true;
}
else if (((opcodeMinus2 & 0x0f) == 0x01) && ((opcodeMinus2 & 0x10) == 0x10)) // ora (zp),y, and (zp),y, ..., sbc (zp),y
{
// NB. this is for read, so don't need to exclude 0x91 / sta (zp),y
opcodeCycles = 5;
opcode = opcodeMinus2;
zpOpcodeCycles = 5;
zpOpcode = opcodeMinus2;
indy = true;
}
else if (((opcodeMinus2 & 0x0f) == 0x02) && ((opcodeMinus2 & 0x10) == 0x10) && GetMainCpu() == CPU_65C02) // ora (zp), and (zp), ..., sbc (zp) : 65C02-only
{
// NB. this is for read, so don't need to exclude 0x92 / sta (zp)
opcodeCycles = 5;
opcode = opcodeMinus2;
zpOpcodeCycles = 5;
zpOpcode = opcodeMinus2;
}
else
{
if ((((opcodeMinus3 & 0x0f) == 0x0D) && ((opcodeMinus3 & 0x10) == 0x00)) || // ora abs16, and abs16, ..., sbc abs16
(opcodeMinus3 == 0x2C) || // bit abs16
(opcodeMinus3 == 0xAC) || // ldy abs16
(opcodeMinus3 == 0xAE) || // ldx abs16
(opcodeMinus3 == 0xCC) || // cpy abs16
(opcodeMinus3 == 0xEC)) // cpx abs16
{
}
else if ((opcodeMinus3 == 0xBC) || // ldy abs16,x
((opcodeMinus3 == 0x3C) && GetMainCpu() == CPU_65C02)) // bit abs16,x : 65C02-only
{
abs16x = true;
}
else if ((opcodeMinus3 == 0xBE)) // ldx abs16,y
{
abs16y = true;
}
else if ((opcodeMinus3 & 0x10) == 0x10)
{
if ((opcodeMinus3 & 0x0f) == 0x0D) // ora abs16,x, and abs16,x, ..., sbc abs16,x
abs16x = true;
else if ((opcodeMinus3 & 0x0f) == 0x09) // ora abs16,y, and abs16,y, ..., sbc abs16,y
abs16y = true;
}
else
{
_ASSERT(0);
opcodeCycles = 0;
return 0;
}
// Check 3-byte opcodes
if ((((opcodeMinus3 & 0x0f) == 0x0D) && ((opcodeMinus3 & 0x10) == 0x00)) || // ora abs16, and abs16, ..., sbc abs16
(opcodeMinus3 == 0x2C) || // bit abs16
(opcodeMinus3 == 0xAC) || // ldy abs16
(opcodeMinus3 == 0xAE) || // ldx abs16
(opcodeMinus3 == 0xCC) || // cpy abs16
(opcodeMinus3 == 0xEC)) // cpx abs16
{
opcodeCycles = 4;
opcode = opcodeMinus3;
abs16 = true;
}
else if ((opcodeMinus3 == 0xBC) || // ldy abs16,x
((opcodeMinus3 == 0x3C) && GetMainCpu() == CPU_65C02)) // bit abs16,x : 65C02-only
{
opcodeCycles = 4;
opcode = opcodeMinus3;
abs16x = true;
}
else if ((opcodeMinus3 == 0xBE)) // ldx abs16,y
{
opcodeCycles = 4;
opcode = opcodeMinus3;
abs16y = true;
}
else if ((opcodeMinus3 & 0x10) == 0x10)
{
if ((opcodeMinus3 & 0x0f) == 0x0D) // ora abs16,x, and abs16,x, ..., sbc abs16,x
{
opcodeCycles = 4;
opcode = opcodeMinus3;
abs16x = true;
}
else if ((opcodeMinus3 & 0x0f) == 0x09) // ora abs16,y, and abs16,y, ..., sbc abs16,y
{
opcodeCycles = 4;
opcode = opcodeMinus3;
abs16y = true;
}
}
//
WORD addr16 = 0;
if (!abs16)
{
BYTE zp = mem[(::regs.pc - 1) & 0xffff];
if (indx) zp += ::regs.x;
addr16 = (mem[zp] | (mem[(zp + 1) & 0xff] << 8));
if (indy) addr16 += ::regs.y;
}
else
{
addr16 = mem[(::regs.pc - 2) & 0xffff] | (mem[(::regs.pc - 1) & 0xffff] << 8);
if (abs16y) addr16 += ::regs.y;
if (abs16x) addr16 += ::regs.x;
}
// Check we've reverse looked-up the 6502 opcode correctly
if ((addr16 & 0xF80F) != (0xC000 + reg))
if (!opcode && !zpOpcode) // Unsupported opcode
{
_ASSERT(0);
return 0;
}
return opcodeCycles;
return GetOpcodeCycles(reg, zpOpcodeCycles, opcodeCycles, zpOpcode, opcode, abs16x, abs16y, indx, indy);
}
// TODO: RMW opcodes: dec,inc,asl,lsr,rol,ror (abs16 & abs16,x) + 65C02 trb,tsb (abs16)
UINT SY6522::GetOpcodeCyclesForWrite(BYTE reg)
{
UINT opcodeCycles = 0;
BYTE opcode = 0;
bool abs16 = false;
UINT zpOpcodeCycles = 0, opcodeCycles = 0;
BYTE zpOpcode = 0, opcode = 0; // these double-up as flags to indicate validity
bool abs16x = false;
bool abs16y = false;
bool indx = false;
bool indy = false;
const BYTE opcodeMinus3 = mem[(::regs.pc - 3) & 0xffff];
const BYTE opcodeMinus2 = mem[(::regs.pc - 2) & 0xffff];
const BYTE opcodeMinus3 = ReadByteFromMemory(::regs.pc - 3);
const BYTE opcodeMinus2 = ReadByteFromMemory(::regs.pc - 2);
if ((opcodeMinus3 == 0x8C) || // sty abs16
(opcodeMinus3 == 0x8D) || // sta abs16
(opcodeMinus3 == 0x8E)) // stx abs16
{ // Eg. FT demos: CHIP, MADEF, MAD2
opcodeCycles = 4;
opcode = opcodeMinus3;
abs16 = true;
}
else if ((opcodeMinus3 == 0x99) || // sta abs16,y
(opcodeMinus3 == 0x9D)) // sta abs16,x
{ // Eg. Paleotronic microTracker demo
opcodeCycles = 5;
opcode = opcodeMinus3;
abs16 = true;
}
else if (opcodeMinus2 == 0x81) // sta (zp,x)
// Check 2-byte opcodes
if (opcodeMinus2 == 0x81) // sta (zp,x)
{
opcodeCycles = 6;
opcode = opcodeMinus2;
zpOpcodeCycles = 6;
zpOpcode = opcodeMinus2;
indx = true;
}
else if (opcodeMinus2 == 0x91) // sta (zp),y
{ // Eg. FT demos: OMT, PLS
opcodeCycles = 6;
opcode = opcodeMinus2;
zpOpcodeCycles = 6;
zpOpcode = opcodeMinus2;
indy = true;
}
else if (opcodeMinus2 == 0x92 && GetMainCpu() == CPU_65C02) // sta (zp) : 65C02-only
{
zpOpcodeCycles = 5;
zpOpcode = opcodeMinus2;
}
// Check 3-byte opcodes
if ((opcodeMinus3 == 0x8C) || // sty abs16
(opcodeMinus3 == 0x8D) || // sta abs16
(opcodeMinus3 == 0x8E)) // stx abs16
{ // Eg. FT demos: CHIP, MADEF, MAD2
opcodeCycles = 4;
opcode = opcodeMinus3;
}
else if (opcodeMinus3 == 0x99) // sta abs16,y
{
opcodeCycles = 5;
opcode = opcodeMinus2;
opcode = opcodeMinus3;
abs16y = true;
}
else if (opcodeMinus3 == 0x9D) // sta abs16,x
{ // Eg. Paleotronic microTracker demo
opcodeCycles = 5;
opcode = opcodeMinus3;
abs16x = true;
}
else if (opcodeMinus3 == 0x9C && GetMainCpu() == CPU_65C02) // stz abs16 : 65C02-only
{
opcodeCycles = 4;
opcode = opcodeMinus3;
abs16 = true;
}
else if (opcodeMinus3 == 0x9E && GetMainCpu() == CPU_65C02) // stz abs16,x : 65C02-only
{
opcodeCycles = 5;
opcode = opcodeMinus3;
abs16 = true;
}
else
{
_ASSERT(0);
opcodeCycles = 0;
return 0;
abs16x = true;
}
//
WORD addr16 = 0;
if (!abs16)
{
BYTE zp = mem[(::regs.pc - 1) & 0xffff];
if (opcode == 0x81) zp += ::regs.x;
addr16 = (mem[zp] | (mem[(zp + 1) & 0xff] << 8));
if (opcode == 0x91) addr16 += ::regs.y;
}
else
{
addr16 = mem[(::regs.pc - 2) & 0xffff] | (mem[(::regs.pc - 1) & 0xffff] << 8);
if (opcode == 0x99) addr16 += ::regs.y;
if (opcode == 0x9D || opcode == 0x9E) addr16 += ::regs.x;
}
// Check we've reverse looked-up the 6502 opcode correctly
if ((addr16 & 0xF80F) != (0xC000 + reg))
if (!opcode && !zpOpcode) // Unsupported opcode
{
_ASSERT(0);
return 0;
}
return opcodeCycles;
return GetOpcodeCycles(reg, zpOpcodeCycles, opcodeCycles, zpOpcode, opcode, abs16x, abs16y, indx, indy);
}
UINT SY6522::GetOpcodeCycles(BYTE reg, UINT zpOpcodeCycles, UINT opcodeCycles,
BYTE zpOpcode, BYTE opcode,
bool abs16x, bool abs16y, bool indx, bool indy)
{
WORD zpAddr16 = 0, addr16 = 0;
if (zpOpcode)
{
if (IsZeroPageFloatingBus())
return 0;
BYTE zp = ReadByteFromMemory(::regs.pc - 1);
if (indx) zp += ::regs.x;
zpAddr16 = (ReadByteFromMemory(zp) | (ReadByteFromMemory((zp + 1) & 0xff) << 8));
if (indy) zpAddr16 += ::regs.y;
}
if (opcode)
{
addr16 = ReadByteFromMemory(::regs.pc - 2) | (ReadByteFromMemory(::regs.pc - 1) << 8);
if (abs16y) addr16 += ::regs.y;
if (abs16x) addr16 += ::regs.x;
}
// Check we've reverse looked-up the 6502 opcode correctly
const bool isZpAddrValid = (zpAddr16 & 0xF80F) == (0xC000 + reg);
const bool isAbs16AddrValid = (addr16 & 0xF80F) == (0xC000 + reg);
if ( (isZpAddrValid && isAbs16AddrValid)
|| (!isZpAddrValid && !isAbs16AddrValid) )
{
_ASSERT(0);
return 0;
}
return isZpAddrValid ? zpOpcodeCycles : opcodeCycles;
}
//=============================================================================

View File

@@ -3,7 +3,7 @@
class SY6522
{
public:
SY6522(UINT slot, bool isMegaAudio) : m_slot(slot), m_isMegaAudio(isMegaAudio), m_isBusDriven(false)
SY6522(UINT slot, bool isMegaAudio) : m_slot(slot), m_isMegaAudio(isMegaAudio), m_isBusDriven(false), m_bad6522(false)
{
for (UINT i = 0; i < kNumTimersPer6522; i++)
m_syncEvent[i] = NULL;
@@ -20,6 +20,11 @@ public:
m_syncEvent[1] = event1;
}
void InitBadState(bool bad6522)
{
m_bad6522 = bad6522;
}
void Reset(const bool powerCycle);
void StartTimer1(void);
@@ -55,6 +60,7 @@ public:
void SetRegIRA(BYTE reg) { m_regs.ORA = reg; }
bool IsTimer1IrqDelay(void) { return m_timer1IrqDelay ? true : false; }
void SetBusBeingDriven(bool state) { m_isBusDriven = state; }
bool IsBad(void) { return m_bad6522; }
BYTE Read(BYTE nReg);
void Write(BYTE nReg, BYTE nValue);
@@ -91,6 +97,7 @@ private:
UINT GetOpcodeCyclesForRead(BYTE reg);
UINT GetOpcodeCyclesForWrite(BYTE reg);
UINT GetOpcodeCycles(BYTE reg, UINT zpOpcodeCycles, UINT opcodeCycles, BYTE zpOpcode, BYTE opcode, bool abs16x, bool abs16y, bool indx, bool indy);
void StartTimer2(void);
void StartTimer1_LoadStateV1(void);
@@ -148,4 +155,7 @@ private:
bool m_isBusDriven;
static const UINT kExtraMegaAudioTimerCycles = kExtraTimerCycles + 1;
// For mb-audit
bool m_bad6522;
};

View File

@@ -782,6 +782,10 @@ void AY8913::sound_ay_write( int reg, int val, libspectrum_dword now )
ay_change[ ay_change_count ].val = val;
ay_change_count++;
}
else
{
LogOutput("AY reg write discarded: %02X = %02X\n", reg, val);
}
}

View File

@@ -235,7 +235,7 @@ static UINT g_nMin = 0xFFFFFFFF;
static UINT g_nMax = 0;
#endif
static __forceinline void DoIrqProfiling(DWORD uCycles)
static __forceinline void DoIrqProfiling(uint32_t uCycles)
{
#ifdef _DEBUG
if(regs.ps & AF_INTERRUPT)
@@ -379,6 +379,24 @@ static __forceinline void Fetch(BYTE& iOpcode, ULONG uExecutedCycles)
regs.pc++;
}
static __forceinline void Fetch_alt(BYTE& iOpcode, ULONG uExecutedCycles)
{
const USHORT PC = regs.pc;
#if defined(_DEBUG) && defined(DBG_HDD_ENTRYPOINT)
DebugHddEntrypoint(PC);
#endif
iOpcode = _READ_ALT(regs.pc);
#ifdef USE_SPEECH_API
if ((PC == COUT1 || PC == BASICOUT) && g_Speech.IsEnabled() && !g_bFullSpeed)
CaptureCOUT();
#endif
regs.pc++;
}
//#define ENABLE_NMI_SUPPORT // Not used - so don't enable
static __forceinline bool NMI(ULONG& uExecutedCycles, BOOL& flagc, BOOL& flagn, BOOL& flagv, BOOL& flagz)
{
@@ -391,14 +409,28 @@ static __forceinline bool NMI(ULONG& uExecutedCycles, BOOL& flagc, BOOL& flagn,
#ifdef _DEBUG
g_nCycleIrqStart = g_nCumulativeCycles + uExecutedCycles;
#endif
PUSH(regs.pc >> 8)
PUSH(regs.pc & 0xFF)
EF_TO_AF
PUSH(regs.ps & ~AF_BREAK)
regs.ps |= AF_INTERRUPT;
if (GetMainCpu() == CPU_65C02) // GH#1099
regs.ps &= ~AF_DECIMAL;
regs.pc = * (WORD*) (mem+0xFFFA);
if (GetIsMemCacheValid())
{
_PUSH(regs.pc >> 8)
_PUSH(regs.pc & 0xFF)
EF_TO_AF
_PUSH(regs.ps & ~AF_BREAK)
regs.ps |= AF_INTERRUPT;
if (GetMainCpu() == CPU_65C02) // GH#1099
regs.ps &= ~AF_DECIMAL;
regs.pc = *(WORD*)(mem + _6502_NMI_VECTOR);
}
else
{
_PUSH_ALT(regs.pc >> 8)
_PUSH_ALT(regs.pc & 0xFF)
EF_TO_AF
_PUSH_ALT(regs.ps & ~AF_BREAK)
regs.ps |= AF_INTERRUPT;
if (GetMainCpu() == CPU_65C02) // GH#1099
regs.ps &= ~AF_DECIMAL;
regs.pc = READ_WORD_ALT(_6502_NMI_VECTOR);
}
UINT uExtraCycles = 0; // Needed for CYC(a) macro
CYC(7);
g_interruptInLastExecutionBatch = true;
@@ -433,14 +465,28 @@ static __forceinline bool IRQ(ULONG& uExecutedCycles, BOOL& flagc, BOOL& flagn,
#ifdef _DEBUG
g_nCycleIrqStart = g_nCumulativeCycles + uExecutedCycles;
#endif
PUSH(regs.pc >> 8)
PUSH(regs.pc & 0xFF)
EF_TO_AF
PUSH(regs.ps & ~AF_BREAK)
regs.ps |= AF_INTERRUPT;
if (GetMainCpu() == CPU_65C02) // GH#1099
regs.ps &= ~AF_DECIMAL;
regs.pc = * (WORD*) (mem+0xFFFE);
if (GetIsMemCacheValid())
{
_PUSH(regs.pc >> 8)
_PUSH(regs.pc & 0xFF)
EF_TO_AF;
_PUSH(regs.ps & ~AF_BREAK)
regs.ps |= AF_INTERRUPT;
if (GetMainCpu() == CPU_65C02) // GH#1099
regs.ps &= ~AF_DECIMAL;
regs.pc = *(WORD*)(mem + _6502_INTERRUPT_VECTOR);
}
else
{
_PUSH_ALT(regs.pc >> 8)
_PUSH_ALT(regs.pc & 0xFF)
EF_TO_AF;
_PUSH_ALT(regs.ps & ~AF_BREAK)
regs.ps |= AF_INTERRUPT;
if (GetMainCpu() == CPU_65C02) // GH#1099
regs.ps &= ~AF_DECIMAL;
regs.pc = READ_WORD_ALT(_6502_INTERRUPT_VECTOR);
}
UINT uExtraCycles = 0; // Needed for CYC(a) macro
CYC(7);
#if defined(_DEBUG) && LOG_IRQ_TAKEN_AND_RTI
@@ -462,61 +508,116 @@ static __forceinline bool IRQ(ULONG& uExecutedCycles, BOOL& flagc, BOOL& flagn,
//===========================================================================
#define READ _READ_WITH_IO_F8xx
#define WRITE(value) _WRITE_WITH_IO_F8xx(value)
#define HEATMAP_X(address)
// 6502 & no debugger
#define READ(addr) _READ_WITH_IO_F8xx(addr)
#define WRITE(value) _WRITE_WITH_IO_F8xx(value)
#include "CPU/cpu6502.h" // MOS 6502
#undef READ
#undef WRITE
//-------
// 6502 & no debugger & alt read/write support
#define CPU_ALT
#define READ(addr) _READ_ALT(addr)
#define WRITE(value) _WRITE_ALT(value)
#define Cpu6502 Cpu6502_altRW
#define Fetch Fetch_alt
#include "CPU/cpu6502.h" // MOS 6502
#undef Cpu6502
#undef Fetch
//-------
#define READ _READ
// 65C02 & no debugger
#define READ(addr) _READ(addr)
#define WRITE(value) _WRITE(value)
#include "CPU/cpu65C02.h" // WDC 65C02
#undef READ
#undef WRITE
//-------
// 65C02 & no debugger & alt read/write support
#define CPU_ALT
#define READ(addr) _READ_ALT(addr)
#define WRITE(value) _WRITE_ALT(value)
#define Cpu65C02 Cpu65C02_altRW
#define Fetch Fetch_alt
#include "CPU/cpu65C02.h" // WDC 65C02
#undef Cpu65C02
#undef Fetch
#undef HEATMAP_X
//-----------------
#define READ Heatmap_ReadByte_With_IO_F8xx(addr, uExecutedCycles)
#define WRITE(value) Heatmap_WriteByte_With_IO_F8xx(addr, value, uExecutedCycles);
#define HEATMAP_X(address) Heatmap_X(address)
#include "CPU/cpu_heatmap.inl"
// 6502 & debugger
#define READ(addr) Heatmap_ReadByte_With_IO_F8xx(addr, uExecutedCycles)
#define WRITE(value) Heatmap_WriteByte_With_IO_F8xx(addr, value, uExecutedCycles);
#define Cpu6502 Cpu6502_debug
#include "CPU/cpu6502.h" // MOS 6502
#undef Cpu6502
#undef READ
#undef WRITE
//-------
// 6502 & debugger & alt read/write support
#define CPU_ALT
#define READ(addr) _READ_ALT(addr)
#define WRITE(value) _WRITE_ALT(value)
#define Cpu6502 Cpu6502_debug_altRW
#define Fetch Fetch_alt
#include "CPU/cpu6502.h" // MOS 6502
#undef Cpu6502
#undef Fetch
//-------
#define READ Heatmap_ReadByte(addr, uExecutedCycles)
// 65C02 & debugger
#define READ(addr) Heatmap_ReadByte(addr, uExecutedCycles)
#define WRITE(value) Heatmap_WriteByte(addr, value, uExecutedCycles);
#define Cpu65C02 Cpu65C02_debug
#include "CPU/cpu65C02.h" // WDC 65C02
#undef Cpu65C02
#undef READ
#undef WRITE
//-------
// 65C02 & debugger & alt read/write support
#define CPU_ALT
#define READ(addr) _READ_ALT(addr)
#define WRITE(value) _WRITE_ALT(value)
#define Cpu65C02 Cpu65C02_debug_altRW
#define Fetch Fetch_alt
#include "CPU/cpu65C02.h" // WDC 65C02
#undef Cpu65C02
#undef Fetch
#undef HEATMAP_X
//===========================================================================
static DWORD InternalCpuExecute(const DWORD uTotalCycles, const bool bVideoUpdate)
static uint32_t InternalCpuExecute(const uint32_t uTotalCycles, const bool bVideoUpdate)
{
if (g_nAppMode == MODE_RUNNING || g_nAppMode == MODE_BENCHMARK)
{
if (!GetIsMemCacheValid())
{
_ASSERT(memshadow[0]);
if (GetMainCpu() == CPU_6502)
return Cpu6502_altRW(uTotalCycles, bVideoUpdate); // Apple //e
else
return Cpu65C02_altRW(uTotalCycles, bVideoUpdate); // Enhanced Apple //e
}
if (GetMainCpu() == CPU_6502)
return Cpu6502(uTotalCycles, bVideoUpdate); // Apple ][, ][+, //e, Clones
else
@@ -525,6 +626,16 @@ static DWORD InternalCpuExecute(const DWORD uTotalCycles, const bool bVideoUpdat
else
{
_ASSERT(g_nAppMode == MODE_STEPPING || g_nAppMode == MODE_DEBUG);
if (!GetIsMemCacheValid())
{
_ASSERT(memshadow[0]);
if (GetMainCpu() == CPU_6502)
return Cpu6502_debug_altRW(uTotalCycles, bVideoUpdate); // Apple //e
else
return Cpu65C02_debug_altRW(uTotalCycles, bVideoUpdate); // Enhanced Apple //e
}
if (GetMainCpu() == CPU_6502)
return Cpu6502_debug(uTotalCycles, bVideoUpdate); // Apple ][, ][+, //e, Clones
else
@@ -543,7 +654,7 @@ BYTE CpuRead(USHORT addr, ULONG uExecutedCycles)
{
if (g_nAppMode == MODE_RUNNING)
{
return _READ_WITH_IO_F8xx; // Superset of _READ
return _READ_WITH_IO_F8xx(addr); // Superset of _READ
}
return Heatmap_ReadByte_With_IO_F8xx(addr, uExecutedCycles);
@@ -607,7 +718,7 @@ ULONG CpuGetCyclesThisVideoFrame(const ULONG nExecutedCycles)
//===========================================================================
DWORD CpuExecute(const DWORD uCycles, const bool bVideoUpdate)
uint32_t CpuExecute(const uint32_t uCycles, const bool bVideoUpdate)
{
#ifdef LOG_PERF_TIMINGS
extern UINT64 g_timeCpu;
@@ -624,7 +735,7 @@ DWORD CpuExecute(const DWORD uCycles, const bool bVideoUpdate)
// uCycles:
// =0 : Do single step
// >0 : Do multi-opcode emulation
const DWORD uExecutedCycles = InternalCpuExecute(uCycles, bVideoUpdate);
const uint32_t uExecutedCycles = InternalCpuExecute(uCycles, bVideoUpdate);
// Update 6522s (NB. Do this before updating g_nCumulativeCycles below)
// . Ensures that 6522 regs are up-to-date for any potential save-state
@@ -692,7 +803,10 @@ void CpuReset()
regs.ps |= AF_INTERRUPT;
if (GetMainCpu() == CPU_65C02) // GH#1099
regs.ps &= ~AF_DECIMAL;
regs.pc = *(WORD*)(mem + 0xFFFC);
_ASSERT(memshadow[_6502_RESET_VECTOR >> 8] != NULL);
regs.pc = ReadWordFromMemory(_6502_RESET_VECTOR);
regs.sp = 0x0100 | ((regs.sp - 3) & 0xFF);
regs.bJammed = 0;
@@ -705,7 +819,7 @@ void CpuReset()
//===========================================================================
void CpuSetupBenchmark ()
void CpuSetupBenchmark()
{
regs.a = 0;
regs.x = 0;
@@ -719,19 +833,19 @@ void CpuSetupBenchmark ()
int opcode = 0;
do
{
*(mem+addr++) = benchopcode[opcode];
*(mem+addr++) = benchopcode[opcode];
WriteByteToMemory(addr++, benchopcode[opcode]);
WriteByteToMemory(addr++, benchopcode[opcode]);
if (opcode >= SHORTOPCODES)
*(mem+addr++) = 0;
WriteByteToMemory(addr++, 0);
if ((++opcode >= BENCHOPCODES) || ((addr & 0x0F) >= 0x0B))
{
*(mem+addr++) = 0x4C;
WriteByteToMemory(addr++, 0x4C);
// split into 2 lines to avoid -Wunsequenced and undefined behaviour
const BYTE value = (opcode >= BENCHOPCODES) ? 0x00 : ((addr >> 4)+1) << 4;
*(mem+addr++) = value;
*(mem+addr++) = 0x03;
WriteByteToMemory(addr++, value);
WriteByteToMemory(addr++, 0x03);
while (addr & 0x0F)
++addr;
}

View File

@@ -30,7 +30,7 @@ extern unsigned __int64 g_nCumulativeCycles;
void CpuDestroy ();
void CpuCalcCycles(ULONG nExecutedCycles);
DWORD CpuExecute(const DWORD uCycles, const bool bVideoUpdate);
uint32_t CpuExecute(const uint32_t uCycles, const bool bVideoUpdate);
ULONG CpuGetCyclesThisVideoFrame(ULONG nExecutedCycles);
void CpuCreateCriticalSection(void);
void CpuInitialize(void);

View File

@@ -21,9 +21,64 @@ along with AppleWin; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// For regular or alternate (slow-path) CPU emulation
#ifndef CPU_ALT
// NB READ(x) and WRITE(x) are defined in the parent CPU.cpp.
// . but keep here to retain symmetry with the undef's at the end of this file.
//#define READ(addr) _READ(addr)
//#define WRITE(value) _WRITE(value)
#define BRK_NMOS _BRK_NMOS
#define BRK_CMOS _BRK_CMOS
#define JSR _JSR
#define POP _POP
#define PUSH(value) _PUSH(value)
#define ABS _ABS
#define IABSX _IABSX
#define ABSX_CONST _ABSX_CONST
#define ABSX_OPT _ABSX_OPT
#define ABSY_CONST _ABSY_CONST
#define ABSY_OPT _ABSY_OPT
#define IABS_CMOS _IABS_CMOS
#define IABS_NMOS _IABS_NMOS
#define INDX _INDX
#define INDX _INDX
#define INDY_CONST _INDY_CONST
#define INDY_OPT _INDY_OPT
#define IZPG _IZPG
#define REL _REL
#define ZPG _ZPG
#define ZPGX _ZPGX
#define ZPGY _ZPGY
#else
//#define READ(addr) _READ_ALT(addr)
//#define WRITE(value) _WRITE_ALT(value)
#define BRK_NMOS _BRK_NMOS_ALT
#define BRK_CMOS _BRK_CMOS_ALT
#define JSR _JSR_ALT
#define POP _POP_ALT
#define PUSH(value) _PUSH_ALT(value)
#define ABS _ABS_ALT
#define IABSX _IABSX_ALT
#define ABSX_CONST _ABSX_CONST_ALT
#define ABSX_OPT _ABSX_OPT_ALT
#define ABSY_CONST _ABSY_CONST_ALT
#define ABSY_OPT _ABSY_OPT_ALT
#define IABS_CMOS _IABS_CMOS_ALT
#define IABS_NMOS _IABS_NMOS_ALT
#define INDX _INDX_ALT
#define INDX _INDX_ALT
#define INDY_CONST _INDY_CONST_ALT
#define INDY_OPT _INDY_OPT_ALT
#define IZPG _IZPG_ALT
#define REL _REL_ALT
#define ZPG _ZPG_ALT
#define ZPGX _ZPGX_ALT
#define ZPGY _ZPGY_ALT
#endif
//===========================================================================
static DWORD Cpu6502(DWORD uTotalCycles, const bool bVideoUpdate)
static uint32_t Cpu6502(uint32_t uTotalCycles, const bool bVideoUpdate)
{
WORD addr;
BOOL flagc; // must always be 0 or 1, no other values allowed
@@ -74,7 +129,7 @@ static DWORD Cpu6502(DWORD uTotalCycles, const bool bVideoUpdate)
case 0x09: IMM ORA CYC(2) break;
case 0x0A: asl CYC(2) break;
case 0x0B: IMM ANC CYC(2) break; // invalid
case 0x0C: ABSX_OPT NOP CYC(4) break; // invalid
case 0x0C: ABS NOP CYC(4) break; // invalid (GH#1360: ABS, not ABS,X)
case 0x0D: ABS ORA CYC(4) break;
case 0x0E: ABS ASLn CYC(6) break;
case 0x0F: ABS ASO CYC(6) break; // invalid
@@ -339,3 +394,30 @@ static DWORD Cpu6502(DWORD uTotalCycles, const bool bVideoUpdate)
}
//===========================================================================
#undef CPU_ALT
#undef READ
#undef WRITE
#undef BRK_NMOS
#undef BRK_CMOS
#undef JSR
#undef POP
#undef PUSH
#undef ABS
#undef IABSX
#undef ABSX_CONST
#undef ABSX_OPT
#undef ABSY_CONST
#undef ABSY_OPT
#undef IABS_CMOS
#undef IABS_NMOS
#undef INDX
#undef INDX
#undef INDY_CONST
#undef INDY_OPT
#undef IZPG
#undef REL
#undef ZPG
#undef ZPGX
#undef ZPGY

View File

@@ -21,9 +21,64 @@ along with AppleWin; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// For regular or alternate (slow-path) CPU emulation
#ifndef CPU_ALT
// NB READ(x) and WRITE(x) are defined in the parent CPU.cpp.
// . but keep here to retain symmetry with the undef's at the end of this file.
//#define READ(addr) _READ(addr)
//#define WRITE(value) _WRITE(value)
#define BRK_NMOS _BRK_NMOS
#define BRK_CMOS _BRK_CMOS
#define JSR _JSR
#define POP _POP
#define PUSH(value) _PUSH(value)
#define ABS _ABS
#define IABSX _IABSX
#define ABSX_CONST _ABSX_CONST
#define ABSX_OPT _ABSX_OPT
#define ABSY_CONST _ABSY_CONST
#define ABSY_OPT _ABSY_OPT
#define IABS_CMOS _IABS_CMOS
#define IABS_NMOS _IABS_NMOS
#define INDX _INDX
#define INDX _INDX
#define INDY_CONST _INDY_CONST
#define INDY_OPT _INDY_OPT
#define IZPG _IZPG
#define REL _REL
#define ZPG _ZPG
#define ZPGX _ZPGX
#define ZPGY _ZPGY
#else
//#define READ(addr) _READ_ALT(addr)
//#define WRITE(value) _WRITE_ALT(value)
#define BRK_NMOS _BRK_NMOS_ALT
#define BRK_CMOS _BRK_CMOS_ALT
#define JSR _JSR_ALT
#define POP _POP_ALT
#define PUSH(value) _PUSH_ALT(value)
#define ABS _ABS_ALT
#define IABSX _IABSX_ALT
#define ABSX_CONST _ABSX_CONST_ALT
#define ABSX_OPT _ABSX_OPT_ALT
#define ABSY_CONST _ABSY_CONST_ALT
#define ABSY_OPT _ABSY_OPT_ALT
#define IABS_CMOS _IABS_CMOS_ALT
#define IABS_NMOS _IABS_NMOS_ALT
#define INDX _INDX_ALT
#define INDX _INDX_ALT
#define INDY_CONST _INDY_CONST_ALT
#define INDY_OPT _INDY_OPT_ALT
#define IZPG _IZPG_ALT
#define REL _REL_ALT
#define ZPG _ZPG_ALT
#define ZPGX _ZPGX_ALT
#define ZPGY _ZPGY_ALT
#endif
//===========================================================================
static DWORD Cpu65C02(DWORD uTotalCycles, const bool bVideoUpdate)
static uint32_t Cpu65C02(uint32_t uTotalCycles, const bool bVideoUpdate)
{
WORD addr;
BOOL flagc; // must always be 0 or 1, no other values allowed
@@ -339,3 +394,30 @@ static DWORD Cpu65C02(DWORD uTotalCycles, const bool bVideoUpdate)
}
//===========================================================================
#undef CPU_ALT
#undef READ
#undef WRITE
#undef BRK_NMOS
#undef BRK_CMOS
#undef JSR
#undef POP
#undef PUSH
#undef ABS
#undef IABSX
#undef ABSX_CONST
#undef ABSX_OPT
#undef ABSY_CONST
#undef ABSY_OPT
#undef IABS_CMOS
#undef IABS_NMOS
#undef INDX
#undef INDX
#undef INDY_CONST
#undef INDY_OPT
#undef IZPG
#undef REL
#undef ZPG
#undef ZPGX
#undef ZPGY

Some files were not shown because too many files have changed in this diff Show More