├── .gitignore ├── .gitmodules ├── .vscode ├── launch.json └── tasks.json ├── COPYING.txt ├── README.md ├── _work ├── VIAEMDEV.c └── target_options.h ├── cfg ├── CNFGGLOB.h ├── EMCONFIG.h ├── MACII.h ├── MACPLUS.h └── STRCONST.h ├── docs ├── about.html ├── bootdlg_model.png ├── bootdlg_start.png ├── change │ ├── index.html │ ├── v3.0.html │ ├── v3.1.html │ ├── v3.2.html │ ├── v3.3.html │ ├── v3.4.html │ ├── v3.5.html │ ├── v36.html │ └── v37.html ├── contents.html ├── control.html ├── credits.html ├── develop.html ├── extras │ ├── aspack │ │ └── index.html │ ├── asunpack │ │ └── index.html │ ├── autoquit │ │ └── index.html │ ├── autquit7 │ │ └── index.html │ ├── binunpk │ │ └── index.html │ ├── blanks │ │ └── index.html │ ├── clipin │ │ └── index.html │ ├── clipout │ │ └── index.html │ ├── clockfix │ │ └── index.html │ ├── cnvtdc42 │ │ └── index.html │ ├── copyroms │ │ └── index.html │ ├── dafkey │ │ └── index.html │ ├── daopener │ │ └── index.html │ ├── dc42chk │ │ └── index.html │ ├── dolaunch │ │ └── index.html │ ├── egretrom │ │ └── index.html │ ├── ejctquit │ │ └── index.html │ ├── exportfl │ │ └── index.html │ ├── exportps │ │ └── index.html │ ├── fdisasm │ │ ├── a │ │ │ ├── index.html │ │ │ └── roms.html │ │ ├── c │ │ │ ├── index.html │ │ │ └── roms.html │ │ └── index.html │ ├── findcode │ │ └── index.html │ ├── findres │ │ └── index.html │ ├── getpram │ │ └── index.html │ ├── getrsfrk │ │ └── index.html │ ├── icon2 │ │ └── index.html │ ├── icons │ │ └── index.html │ ├── importfl │ │ └── index.html │ ├── index.html │ ├── makekeys │ │ └── index.html │ ├── makerand │ │ └── index.html │ ├── md5fl │ │ └── index.html │ ├── md5im │ │ └── index.html │ ├── mkkeystl │ │ └── index.html │ ├── mnvmreg │ │ └── index.html │ ├── mpwextns │ │ └── index.html │ ├── pmakkeys │ │ └── index.html │ ├── pmurom │ │ └── index.html │ ├── psgcheck │ │ └── index.html │ ├── psgchktl │ │ └── index.html │ ├── psgwrite │ │ └── index.html │ ├── reasm │ │ └── index.html │ ├── setftype │ │ └── index.html │ ├── sigcheck │ │ └── index.html │ ├── sigchktl │ │ └── index.html │ ├── sigwrite │ │ └── index.html │ ├── sigwrttl │ │ └── index.html │ ├── sitpack │ │ └── index.html │ ├── slotrom │ │ └── index.html │ ├── testmnvm │ │ └── index.html │ └── testsync │ │ └── index.html ├── faq.html ├── happy-mac-options.png ├── hardware.html ├── index.html ├── license.html ├── local │ ├── catalan.html │ ├── czech.html │ ├── dutch.html │ ├── english.html │ ├── french.html │ ├── german.html │ ├── index.html │ ├── italian.html │ ├── polish.html │ ├── pt_BR.html │ ├── spanish.html │ ├── sr_cyrl.html │ └── sr_latn.html ├── macii.png ├── macplus.png ├── norom-mockup.gif ├── options.html ├── osx_note.html ├── ports.html ├── recipes │ ├── brsys7in │ │ ├── index.html │ │ ├── p2.html │ │ ├── p3.html │ │ └── p4.html │ ├── brsys7ut │ │ ├── index.html │ │ ├── p2.html │ │ ├── p3.html │ │ └── p4.html │ ├── index.html │ ├── lnrphntm │ │ ├── index.html │ │ ├── p2.html │ │ ├── p3.html │ │ └── p4.html │ ├── sys6util │ │ ├── index.html │ │ ├── p2.html │ │ ├── p3.html │ │ └── p4.html │ ├── sys7inst │ │ ├── index.html │ │ ├── p2.html │ │ ├── p3.html │ │ └── p4.html │ └── sys7tnin │ │ ├── index.html │ │ ├── p2.html │ │ ├── p3.html │ │ └── p4.html ├── screens │ ├── index.html │ └── more.html ├── setupcfg.html ├── sit_alt.html ├── start.html └── use.html ├── extras ├── mydriver │ ├── disk │ │ ├── README.txt │ │ └── mydriver.a │ └── video │ │ └── firmware.a └── trans.txt ├── gfx ├── bootdlg │ ├── base.png │ ├── model.png │ ├── model_se30.png │ └── start.png └── norom │ ├── norom-0.png │ ├── norom-1.png │ ├── norom-mockup.png │ └── norom.gif ├── meson.build ├── rsrc ├── HAPPYMAC │ ├── aside.xbm │ ├── cheese.xbm │ ├── evil.xbm │ ├── horror.xbm │ ├── lady.xbm │ ├── moustache.xbm │ ├── nerdy.xbm │ ├── pirate.xbm │ ├── sleepy.xbm │ ├── sly.xbm │ ├── sunglasses.xbm │ ├── surprise.xbm │ ├── tongue.xbm │ ├── yuck.xbm │ └── zombie.xbm ├── SONYDRV.bin ├── SONYICO.bin ├── WIN32 │ ├── ICONAPPW.ico │ ├── ICONDSKW.ico │ ├── ICONROMW.ico │ ├── app.manifest │ └── main.rc └── macOS │ ├── ICONAPPO.icns │ ├── ICONDSKO.icns │ └── ICONROMO.icns └── src ├── CFGMAN.c ├── CFGMAN.h ├── ERRCODES.h ├── GLOBGLUE.c ├── GLOBGLUE.h ├── HW ├── ADB │ ├── ADBEMDEV.c │ ├── ADBEMDEV.h │ └── ADBSHARE.h ├── DISK │ ├── IWMEMDEV.c │ ├── IWMEMDEV.h │ ├── SONYEMDV.c │ └── SONYEMDV.h ├── KBRD │ ├── KBRDEMDV.c │ ├── KBRDEMDV.h │ └── KEYCODES.h ├── M68K │ ├── DISAM68K.c │ ├── DISAM68K.h │ ├── FPCPEMDV.c │ ├── FPCPEMDV.h │ ├── FPMATHEM.h │ ├── M68KITAB.c │ ├── M68KITAB.h │ ├── MINEM68K.c │ └── MINEM68K.h ├── MOUSE │ ├── MOUSEMDV.c │ └── MOUSEMDV.h ├── POWERMAN │ ├── PMUEMDEV.c │ └── PMUEMDEV.h ├── RAM │ └── RAMADDR.h ├── ROM │ ├── ROMEMDEV.c │ └── ROMEMDEV.h ├── RTC │ ├── RTCEMDEV.c │ └── RTCEMDEV.h ├── SCC │ ├── SCCEMDEV.c │ └── SCCEMDEV.h ├── SCREEN │ ├── SCRNEMDV.c │ ├── SCRNEMDV.h │ └── SCRNTRNS.h ├── SCSI │ ├── SCSIEMDV.c │ └── SCSIEMDV.h ├── SOUND │ ├── ASCEMDEV.c │ ├── ASCEMDEV.h │ ├── SNDEMDEV.c │ └── SNDEMDEV.h ├── VIA │ ├── VIA2EMDV.c │ ├── VIA2EMDV.h │ ├── VIAEMDEV.c │ └── VIAEMDEV.h └── VIDCARD │ ├── VIDEMDEV.c │ └── VIDEMDEV.h ├── LANG ├── INTLCHAR.c ├── INTLCHAR.h ├── STRCNCAT.h ├── STRCNCZE.h ├── STRCNDUT.h ├── STRCNENG.h ├── STRCNFRE.h ├── STRCNGER.h ├── STRCNITA.h ├── STRCNPOL.h ├── STRCNPTB.h ├── STRCNSPA.h └── STRCNSRL.h ├── PATCHES ├── HPMCHACK.h ├── ROMEMDEV.c ├── ROMEMDEV.h ├── SCRNHACK.c ├── SCRNHACK.h ├── SONYDRV.c └── SONYDRV.h ├── PROGMAIN.c ├── PROGMAIN.h ├── SYSDEPNS.h ├── UI ├── COMOSGLU.c ├── COMOSGLU.h ├── CONTROLM.c ├── CONTROLM.h ├── MYOSGLUE.h └── SDL2 │ ├── CLIPBRD.c │ ├── DBGLOG.c │ ├── DRIVES.c │ ├── INTL.c │ ├── KEYBOARD.c │ ├── MOUSE.c │ ├── OSGLUSD2.c │ ├── OSGLUSD2.h │ ├── ROM.c │ ├── SOUND.c │ ├── TIMEDATE.c │ └── VIDEO.c └── UTIL ├── BPFILTER.h ├── DATE2SEC.c ├── DATE2SEC.h ├── ENDIANAC.h └── PBUFSTDC.h /.gitignore: -------------------------------------------------------------------------------- 1 | # Binaries 2 | *.exe 3 | *.obj 4 | *.dsk 5 | *.ROM 6 | 7 | # Visual Studio 8 | .vs/* 9 | .vs/ 10 | 11 | # Visual Studio Code 12 | .vscode/* 13 | !.vscode/launch.json 14 | !.vscode/tasks.json 15 | 16 | # KDevelop 4 17 | *.kdev4 18 | *.pdb 19 | 20 | # Meson 21 | build/ 22 | subprojects/ 23 | reconfigure/ -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "src/incbin"] 2 | path = lib/incbin 3 | url = https://github.com/graphitemaster/incbin 4 | [submodule "src/tomlc99"] 5 | path = lib/tomlc99 6 | url = https://github.com/cktan/tomlc99 7 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "(Windows) Launch", 9 | "type": "cppvsdbg", 10 | "request": "launch", 11 | "program": "${workspaceFolder}/build/microvmac.exe", 12 | "args": [], 13 | "stopAtEntry": false, 14 | "cwd": "${workspaceFolder}/build/", 15 | "environment": [], 16 | "console": "externalTerminal", 17 | "preLaunchTask": "${defaultBuildTask}" 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "tasks": [ 3 | { 4 | "type": "cppbuild", 5 | "label": "C/C++: compile with Meson", 6 | "command": "meson", 7 | "args": [ 8 | "compile", 9 | ], 10 | "options": { 11 | "cwd": "${workspaceFolder}/build" 12 | }, 13 | "problemMatcher": [ 14 | "$msCompile" 15 | ], 16 | "group": { 17 | "kind": "build", 18 | "isDefault": true 19 | }, 20 | } 21 | ], 22 | "version": "2.0.0" 23 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # µvMac 0.37.0 2 | 3 | Forked from Mini vMac v36.4 by Paul C. Pratt (http://www.gryphel.com/c/minivmac), which was forked from vMac by Philip "PC" Cummins (http://www.vmac.org/main.html) 4 | 5 | µvMac (micro vMac) is a small, simple emulator for early Motorola 68000 based emulators. Currently we support systems from the original Macintosh 128K all the way up to the Macintosh II. 6 | 7 | This fork was created to clean up and modernize the code base, make the project easier to compile and hack on, and allow for much easier user configuration. The intent of Mini vMac was to create a "emulator collection" of many very optimized "variations" of the same codebase. I consider this much more trouble than it's worth, and intend to focus more on maintainability and accuracy. 8 | 9 | µvMac is undergoing substansial and sporadic development and is unlikely to be in an usable state at this time. 10 | 11 | ## Supported Platforms 12 | 13 | µvMac *absolutely requires* SDL2. There are no plans to support platforms that SDL2 does not target. For 99% of users, this should not be a concern. Dropping support for esoteric platforms and exclusively using SDL2 vastly simplifies the complexity of the code. 14 | 15 | So far µvMac has only been tested on Windows and Linux. No other operating systems are supported at this time. 16 | 17 | ## Legal info 18 | 19 | You can redistribute µvMac and/or modify it under the terms 20 | of version 2 of the GNU General Public License as published by 21 | the Free Software Foundation. See the included file COPYING.txt 22 | 23 | µvMac is distributed in the hope that it will be useful, 24 | but WITHOUT ANY WARRANTY; without even the implied warranty of 25 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 26 | license for more details. 27 | -------------------------------------------------------------------------------- /cfg/CNFGGLOB.h: -------------------------------------------------------------------------------- 1 | /* 2 | Configuration options used by both platform specific 3 | and platform independent code. 4 | 5 | Hopefully, one day, we can remove this file entirely. 6 | */ 7 | 8 | #ifndef CNFGGLOB_H 9 | #define CNFGGLOB_H 10 | 11 | #include 12 | 13 | #define SmallGlobals 0 14 | #define cIncludeUnused 0 15 | #define UnusedParam(p) (void) p 16 | 17 | /* capabilities provided by platform specific code */ 18 | 19 | #define SoundEnabled 1 20 | #define kLn2SoundSampSz 3 21 | 22 | #define dbglog_HAVE 0 23 | #define WantAbnormalReports 0 24 | 25 | #define NumDrives 6 26 | #define IncludeSonyRawMode 1 27 | #define IncludeSonyGetName 1 28 | #define IncludeSonyNew 1 29 | #define IncludeSonyNameNew 1 30 | 31 | #define IncludePbufs 1 32 | #define NumPbufs 4 33 | 34 | #define EnableMouseMotion 0 35 | 36 | #define IncludeHostTextClipExchange 0 37 | #define EmLocalTalk 0 38 | #define AutoLocation 1 39 | #define AutoTimeZone 1 40 | 41 | // Variable versions of configuration flags 42 | extern uint16_t vMacScreenHeight; 43 | extern uint16_t vMacScreenWidth; 44 | extern uint16_t vMacScreenDepth; 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /cfg/EMCONFIG.h: -------------------------------------------------------------------------------- 1 | /* 2 | Configuration options used by platform independent code. 3 | 4 | This file is automatically generated by the build system, 5 | which tries to know what options are valid in what 6 | combinations. Avoid changing this file manually unless 7 | you know what you're doing. 8 | */ 9 | 10 | #ifndef EMCONFIG_H 11 | #define EMCONFIG_H 12 | 13 | // Keybindings 14 | // TODO: Make these variable 15 | #define MKC_formac_Control MKC_CM 16 | #define MKC_formac_Command MKC_Command 17 | #define MKC_formac_Option MKC_Option 18 | #define MKC_formac_Shift MKC_Shift 19 | #define MKC_formac_CapsLock MKC_CapsLock 20 | #define MKC_formac_Escape MKC_Escape 21 | #define MKC_formac_BackSlash MKC_BackSlash 22 | #define MKC_formac_Slash MKC_Slash 23 | #define MKC_formac_Grave MKC_Grave 24 | #define MKC_formac_Enter MKC_Enter 25 | #define MKC_formac_PageUp MKC_PageUp 26 | #define MKC_formac_PageDown MKC_PageDown 27 | #define MKC_formac_Home MKC_Home 28 | #define MKC_formac_End MKC_End 29 | #define MKC_formac_Help MKC_Help 30 | #define MKC_formac_ForwardDel MKC_ForwardDel 31 | #define MKC_formac_F1 MKC_Option 32 | #define MKC_formac_F2 MKC_Command 33 | #define MKC_formac_F3 MKC_F3 34 | #define MKC_formac_F4 MKC_F4 35 | #define MKC_formac_F5 MKC_F5 36 | #define MKC_formac_RControl MKC_CM 37 | #define MKC_formac_RCommand MKC_Command 38 | #define MKC_formac_ROption MKC_Option 39 | #define MKC_formac_RShift MKC_Shift 40 | #define MKC_UnMappedKey MKC_Control 41 | 42 | #define MaxATTListN 32 43 | #define IncludeExtnPbufs 1 44 | // temporary 45 | #define IncludeExtnHostTextClipExchange 0 46 | 47 | #define Sony_SupportDC42 1 48 | #define Sony_SupportTags 0 49 | #define Sony_WantChecksumsUpdated 0 50 | #define Sony_VerifyChecksums 0 51 | #define CaretBlinkTime 0x03 52 | #define SpeakerVol 0x07 53 | #define DoubleClickTime 0x05 54 | #define MenuBlink 0x03 55 | #define AutoKeyThresh 0x06 56 | #define AutoKeyRate 0x03 57 | 58 | #define CurEmMd kEmMd_Plus 59 | 60 | //#if (CurEmMd == kEmMd_Plus) 61 | #include "MACPLUS.h" 62 | //#elif (CurEmMd == kEmMd_II) 63 | //#include "MACII.h" 64 | //#endif 65 | 66 | #define WantDisasm 0 67 | #define ExtraAbnormalReports 0 68 | 69 | #endif 70 | -------------------------------------------------------------------------------- /cfg/STRCONST.h: -------------------------------------------------------------------------------- 1 | #include "LANG/STRCNENG.h" 2 | -------------------------------------------------------------------------------- /docs/about.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | About µvMac 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |

µvMac - About

15 | Back 16 |
17 |
18 | 19 |

20 | The µvMac emulator allows modern computers 21 | to run software made for early Macintosh 22 | computers, the computers that Apple sold from 1984 to 1996 23 | based upon Motorola's 680x0 microprocessors, most notably the 24 | Macintosh Plus. 25 |

26 | 27 |

µvMac is maintained by InvisibleUp.

28 | 29 |

30 | µvMac began in 2020 as a spin off of the program Mini vMac. Mini vMac, 31 | while great, was inflexible and very difficult to maintain. This fork 32 | was created to clean up and modernize the code base, make the project 33 | easier to compile and hack on, and allow for much easier user 34 | configuration. The intent of Mini vMac was to create a "emulator 35 | collection" of many very optimized "variations" of the same codebase. 36 | I consider this much more trouble than it's worth, and intend to focus 37 | more on maintainability and accuracy. 38 |

39 | 40 |

41 | The “micro” in the name refers more to the side and simplicity 42 | of the codebase than of any particular binary. That said, having every 43 | possible system emulated by one single program would, in fact, be smaller. 44 | Also it was meant to imply that this comes "after" Mini vMac. 45 |

46 | Besides the Macintosh Plus, there 47 | are also emulations of the Macintosh 128K, 512K, 512Ke, 48 | SE, Classic, and SE FDHD. 49 | Work is in progress on Macintosh II emulation, which seems to be mostly 50 | stable from what testing I've done. 51 |

52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /docs/bootdlg_model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/docs/bootdlg_model.png -------------------------------------------------------------------------------- /docs/bootdlg_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/docs/bootdlg_start.png -------------------------------------------------------------------------------- /docs/change/index.html: -------------------------------------------------------------------------------- 1 | Mini vMac Changes
www.gryphel.com/c/minivmac/change - feedback

Mini vMac

Changes


What has changed in each major branch of Mini vMac:
: : (see also Downloads for these branches)

Mini vMac 37.xx is in alpha

Mini vMac 36.xx is the current stable version

Mini vMac 3.5.8

Mini vMac 3.4.1

Mini vMac 3.3.3

Mini vMac 3.2.3

Mini vMac 3.1.3

Mini vMac 3.0.4

:

If you find Mini vMac useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K

Next - Contents of Mini vMac source


www.gryphel.com/c/minivmac/change - feedback
copyright (c) 2020 Paul C. Pratt - last update 1/19/2020
-------------------------------------------------------------------------------- /docs/contents.html: -------------------------------------------------------------------------------- 1 | Contents - Mini vMac
www.gryphel.com/c/minivmac/contents - feedback

Mini vMac

Contents of the source distribution


See the Build page to learn how to compile Mini vMac. The source archive contains:

src

Source code files for Mini vMac, most in C.

setup

Source code for the tool that configures Mini vMac source code for compiling.

extras

mydriver

Source code for a replacement disk driver that is patched into the emulated rom, and for the video driver of the Macintosh II emulation.

tran

Some source files are simple transformations of other source files. This is some MPW scripts to help keep them in sync.

README

Has link to Mini vMac home page, and some license information.

COPYING

The GNU General Public License (GPL)

:

If you find Mini vMac useful, please consider helping the Gryphel Project.

gryphel logo, 1K

Next - Building Mini vMac


www.gryphel.com/c/minivmac/contents - feedback
copyright (c) 2018 Paul C. Pratt - last update 10/26/2018
-------------------------------------------------------------------------------- /docs/extras/asunpack/index.html: -------------------------------------------------------------------------------- 1 | asUnpack
www.gryphel.com/c/minivmac/extras/asunpack - feedback

asUnpack


Download

asunpack-1.0.0.zip (74K) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.

asUnpack is an application to unpack a file in AppleSingle format, as created by asPack. It may not be able to unpack AppleSingle files created by other programs; in particular, it only deals with version 2 of the format.

The program operates on a file named “bin” in the same folder as the asUnpack application, and puts the output file in that same folder, with the name specified inside the AppleSingle file. If “bin” is not found, the program prompts you to select the input file. If the output file already exists, it is overwritten with no further prompting.

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

3fc9071e23f2759971b2b8b84e6924e4 asunpack-1.0.0.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/ClWc16AUANsSmkn/QbUo+ZY2obHQFvtxRSXl8TjYCPO6/Ob
bxPS7TEBh5U8RV+BTUh9GPAtboOpCQuBAFMfBkmFdXI9NHkxiQ+W3SVmWNNMO2ji
Ia5QWXJrztQE7wC5XBIHRKIcyOgkKjcORUD9s0+hgewD9DWhe0eVD6uPVTRNWRlX
-------- END GRY SIGNATURE --------

See the Compiling page for instructions on compiling asUnpack from the source code.

You can redistribute asUnpack and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. See the included file COPYING.

asUnpack is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.

:

If you find asUnpack useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/asunpack - feedback
copyright (c) 2018 Paul C. Pratt - last update 11/18/2018
-------------------------------------------------------------------------------- /docs/extras/binunpk/index.html: -------------------------------------------------------------------------------- 1 | binUnpk
www.gryphel.com/c/minivmac/extras/binunpk - feedback

binUnpk


Download

binunpk-1.2.0.zip (64K) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.

binUnpk is an application to unpack files in MacBinary format. It is mostly useful for unpacking the Stuffit Expander 4.0.1 archive. It can also unpack other MacBinary files, but there isn't much need for it once you have Stuffit Expander. (Update - now that I'm hosting StuffIt Expander in disk image format, there is even less need for binUnpk.)

Since binUnpk comes as a zipped disk image, you don't need any other unpacking software running on the emulated Macintosh to unpack it. You just need to unpack the zip file on the real computer.

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

641511e06df0fce5d072f07624d97085 binunpk-1.2.0.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/LcRL3XK6XGT/MGCuWsdGJ99B5C83pb4vTleblATQuWdfcZJ
pJMJG0Q4ZgYmpfsvVEk4A2QcaTOqesnl5JF/cWnitw3mq7VYeTW5tKokO4SpWYd7
ZWIWOaHof+SR011OOjB5e3fIFkN9d5LPJ7v8PAs6c/6u+oWn2dd64qp2gKy/NtCH
-------- END GRY SIGNATURE --------

See the Compiling page for instructions on compiling binUnpk from the source code.

You can redistribute binUnpk and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. See the included file COPYING.

binUnpk is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.

:

If you find binUnpk useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/binunpk - feedback
copyright (c) 2011 Paul C. Pratt - last update 12/9/2011
-------------------------------------------------------------------------------- /docs/extras/clipin/index.html: -------------------------------------------------------------------------------- 1 | ClipIn
www.gryphel.com/c/minivmac/extras/clipin - feedback

ClipIn


Download

clipin-1.1.0.zip (20K) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.

ClipIn is a Desk Accessory to use in Mini vMac 3.0.0 or later to import the clipboard of the real computer into the clipboard of the emulated computer.

When ClipIn is opened, a small window very briefly appears. After it disappears the clipboard has been imported.

ClipIn in provided in two formats. The file 'ClipIn' is a Font/DA Mover suitcase for use in System 6 and earlier, containing a desk accessory named '6-ClipIn'. (Use Font/DA Mover to install DAs in System 6 and earlier.) The file '6-ClipIn' is a System 7 style desk accessory, with icon and version resources. The actual desk accessory code in both versions is identical.

ClipIn is intended to be used with DAFKEY, to provide a keyboard shortcut. That is why the name of the desk accessory starts with '6-'.

If you would like to export the clipboard, see ClipOut, the opposite of ClipIn.

If you would like to import entire files, see ImportFl.

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

e094de97d1c6c214a80fb74895124c3e clipin-1.1.0.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/JPGCqMBv2wRwXvPf45SY/F4gMP04qsY36FmnBBOwfngkQ07
ojxmHG0TPIAc8JEiU6giXZX28U5RDXN9vMdnnTcJUKsF2rAQF1xHVJzEDRGTin15
Rpuznv0dQCMUKdkWa9gPd8v61YvS/GpOBr9DvwNuRwLoJeBNKgfnzQgvF9Kunnsi
-------- END GRY SIGNATURE --------

You can redistribute ClipIn and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. See the included file COPYING.

ClipIn is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.

:

If you find ClipIn useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/clipin - feedback
copyright (c) 2012 Paul C. Pratt - last update 5/27/2012
-------------------------------------------------------------------------------- /docs/extras/cnvtdc42/index.html: -------------------------------------------------------------------------------- 1 | CnvtDC42
www.gryphel.com/c/minivmac/extras/cnvtdc42 - feedback

CnvtDC42


Download

cnvtdc42-1.0.0.zip (64K) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.

CnvtDC42 is an application to use in Mini vMac (version 3.0.0 or later) to convert disk image files created by Disk Copy 4.2 into the simpler format preferred by Mini vMac (discarding tags, checksums, and header, leaving just the raw image data).

This is useful because, as of version 3.2.2, Mini vMac by default only allows read access to Disk Copy 4.2 images. CnvtDC42 can be used to convert a Disk Copy 4.2 image into a format that Mini vMac can both read and write. (Previous versions of Mini vMac allowed write access, but didn't support the tags and checksums, resulting in an invalid image. Full read/write support, with tags and checksums, is now a compile time option.)

A new image file is created, and the old one is not changed. The old and new images are on the host computer, not the emulated one. So CnvtDC42 combines characteristics of both ImportFl and ExportFl.

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

d5e40d113d2222ed25448cdd690987a3 cnvtdc42-1.0.0.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/L3qp9KbSqUsBvWGcdyaBzRdXIOhQidnAluhEjkR31Q8WwtP
Em4O0G4MLYzy1g2e3DpQzOp/wjPG0Sazzn+jsfNbOqIWSp1AL0zwLGHkLpL2/wFl
imI7GRL6FEKXNEOFUlgSeIzdme//V8j05dELRWlbvgSRwAXoDDhIFRijN6FOO8MN
-------- END GRY SIGNATURE --------

See the Compiling page for instructions on compiling CnvtDC42 from the source code.

You can redistribute CnvtDC42 and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. See the included file COPYING.

CnvtDC42 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.

:

If you find CnvtDC42 useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/cnvtdc42 - feedback
copyright (c) 2018 Paul C. Pratt - last update 10/15/2018
-------------------------------------------------------------------------------- /docs/extras/daopener/index.html: -------------------------------------------------------------------------------- 1 | DAOpener
www.gryphel.com/c/minivmac/extras/daopener - feedback

DAOpener


Download

daopener-1.1.0.zip (40K) a zipped hfs disk image. The disk image can be mounted with Mini vMac. Includes source code.

DAOpener is intended to be used with AutoQuit. AutoQuit is used to assist in 'wrapping' an application so that you can use it much as you would a native application for your machine. DAOpener allows you to wrap a Desk Accessory within an application, which can then be wrapped using AutoQuit, so that you can use it much as you would a native application.

DAOpener is a simple application for Macintosh system version 6.0.8 and earlier, that just opens the first Desk Accessory from the Apple Menu. You can then use that Desk Accessory as normal. When all windows are closed, the program quits.

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

8334f153c6392a390078db2ea703b19b daopener-1.1.0.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/ODrPE2EKdyfztQaqqO+fDEu6SG2tLjvTUN2zJ87dMPu/nbv
EaxdWv9/WUB6cUwUiJb+gevFT6b5/EPSSKIMVjFWgVqkflWRF1nqRQkcSHioDHhW
gOIh2yflxijGa1LtaAENIBc0mXcl/qcSSimbmWnqw8sIH2D2FcIZMfC3WU0zxjCm
-------- END GRY SIGNATURE --------

See the Compiling page for instructions on compiling DAOpener from the source code.

You can redistribute DAOpener and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. See the included file COPYING.

DAOpener is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.

:

If you find DAOpener useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/daopener - feedback
copyright (c) 2010 Paul C. Pratt - last update 10/21/2010
-------------------------------------------------------------------------------- /docs/extras/dc42chk/index.html: -------------------------------------------------------------------------------- 1 | DC42Chk
www.gryphel.com/c/minivmac/extras/dc42chk - feedback

DC42Chk


Download

dc42chk-1.0.0.zip (66K) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.

DC42Chk is an application to use in Mini vMac (version 3.0.0 or later) to check that disk image files in the format used by Disk Copy 4.2 have correct checksums.

Mini vMac versions before 3.2.2 by default will mount and write to Disk Copy 4.2 images without updating the checksums, resulting in an invalid image. Mini vMac 3.2.2 and later by default will mount such images read only, but can be compiled to be able to write to such images, in which case the checksums will be updated when the image is unmounted. It does not verify the checksums before mounting. Hence this utility.

DC42Chk works similar to ImportFl. The image to check is on the host computer, not the emulated one. Upon scanning a valid image, DC42Chk will display the message : "Good - I think that is a valid Disk Copy 4.2 disk image." Otherwise some other message will be displayed indicating the problem.

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

f8d7617bb52894c834768d5f53e3fb62 dc42chk-1.0.0.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/A+bwP10hKMZYHEimltz1knBtJ9h56jezDcmeqETrzYmgec2
0XWeeWVA0uV/s2E+BUbfWVfNwHVqaC0NOQo5ttvqZQg6qRq8PNi/WUmgm8xFiF7H
7QP14nVdgJYGyDHoxhTBygjVV77iwYOsYMQzsZBy9KyFpN9bwYf0oCdhaUhtlRH4
-------- END GRY SIGNATURE --------

See the Compiling page for instructions on compiling DC42Chk from the source code.

You can redistribute DC42Chk and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. See the included file COPYING.

DC42Chk is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.

:

If you find DC42Chk useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/dc42chk - feedback
copyright (c) 2011 Paul C. Pratt - last update 4/22/2011
-------------------------------------------------------------------------------- /docs/extras/fdisasm/index.html: -------------------------------------------------------------------------------- 1 | FDisasm
www.gryphel.com/c/minivmac/extras/fdisasm - feedback

FDisasm


major branches:

branch 13 (Alpha)

branch 12 (Stable)


www.gryphel.com/c/minivmac/extras/fdisasm - feedback
copyright (c) 2019 Paul C. Pratt - last update 5/19/2019
-------------------------------------------------------------------------------- /docs/extras/getrsfrk/index.html: -------------------------------------------------------------------------------- 1 | GetRsFrk
www.gryphel.com/c/minivmac/extras/getrsfrk - feedback

GetRsFrk


Download

getrsfrk-1.1.0.zip (60K) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.

GetRsFrk is an application that gets the "resource fork" of a file you select, and saves it to the "data fork" of a file named "bin" in the same folder as the GetRsFrk application (creating "bin" if it doesn't already exist).

This allows you to use the FDisasm tool (which disassembles the data fork of a file) on a Macintosh 680x0 application (which has the code in the resource fork).

After running GetRsFrk, you should next use FindRes.

An alternative to GetRsFrk is asPack, which also saves the data fork and the meta data into “bin”, in AppleSingle format.

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

f40b497c3469464cd0aca2aab22f08ff getrsfrk-1.1.0.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/P6eKnoCzqDfoLRAWwg5qmuvx/KuCC7pdzOQM74eEEOFuBrj
9HeHIdGIGj1VZ5HBaEJGUt/kMW8qDoN1FZ8GlXVwzdqwArjIiEfoG9AaROZHxrqo
2hKXfk47oyFcfBv1ld4qzyOouYJ5TdPIJvAaoR9XzjuvLRO8MqaxZRvbP3gPq3YN
-------- END GRY SIGNATURE --------

See the Compiling page for instructions on compiling GetRsFrk from the source code.

You can redistribute GetRsFrk and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. See the included file COPYING.

GetRsFrk is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.

:

If you find GetRsFrk useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/getrsfrk - feedback
copyright (c) 2010 Paul C. Pratt - last update 10/21/2010
-------------------------------------------------------------------------------- /docs/extras/icon2/index.html: -------------------------------------------------------------------------------- 1 | Mini vMac - Retro Alternate Icon
www.gryphel.com/c/minivmac/extras/icon2 - feedback

vMac Retro

Alternate Icon


Download

vMac_Retro_Icon.zip (37K) zipped files.

8K Picture

Joseph V. Barrile created this replacement icon for Mini vMac in Macintosh OS X. It is too big to be appropriate as the default icon for “Mini” vMac (as any true OS X style icons must be), but this is not a real problem for actual use.

To install this icon into a copy of the Mini vMac application, download vMac_Retro_Icon.zip and expand the archive to get the folder “vMac_Retro_Icon”, which contains the files “AppIcon.icns” and “README.txt”. Control click on the Mini vMac application (or right click with a two button mouse), and from the pop up menu, choose "Show Package Contents". Open the folder "Contents", which among other things contains the folder "Resources". Move the file "AppIcon.icns" into the "Resources" folder, replacing the existing file with the same name.

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

2f6209e62ac4cbb0dfc5f340d2402f1f vMac_Retro_Icon.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/FTXvT15ORUTnuACxYZrB4UJ99YXQC9vRh6nPJxa/0c3nuTE
BVywIQs3cLwK7Ib75afAL+2is8goYZbq4S2SetFt5TCFiShd1Z/4uE6vCYpY7rMj
5QNnINqpZRb71uZAIE2+t4R2uaLJ/BI7Y9PRctiiSCY3J1IWUF0FfqkjSkA22h9r
-------- END GRY SIGNATURE --------

“Copying/License:
I’m offering this as free software to be used as an application icon for Paul C. Pratt and his Mini vMac software project (http://minivmac.sourceforge.net) only and may not be sold or repackaged in any other manner. Joseph V. Barrile must be identified as the author of this work.”


www.gryphel.com/c/minivmac/extras/icon2 - feedback
copyright (c) 2014 Paul C. Pratt - last update 7/25/2014
-------------------------------------------------------------------------------- /docs/extras/icons/index.html: -------------------------------------------------------------------------------- 1 | Icons
www.gryphel.com/c/minivmac/extras/icons - feedback

Icons


Download

icnsosx-1.0.0.zip (60K) zipped files.

40K Picture

David Sibley created this nice set of replacement icons for Mini vMac in Macintosh OS X. They are too big to be appropriate as the default set of icons for “Mini” vMac, larger than the entire rest of the program (as any true OS X style icons must be), but this is not a real problem for actual use.

To install these icons into a copy of the Mini vMac application, download icnsosx-1.0.0.zip and expand the archive to get the folder 'icnsosx-1.0.0', which contains the folder "icons". The folder "icons" contains the files "AppIcon.icns", "DskIcon.icns", and "RomIcon.icns". Control click on the Mini vMac application (or right click with a two button mouse), and from the pop up menu, choose "Show Package Contents". Open the folder "Contents", which among other things contains the folder "Resources". Move the files "AppIcon.icns", "DskIcon.icns", and "RomIcon.icns" into the "Resources" folder, replacing the existing files with the same names.

In Mini vMac 3.0.3 or later, the ROM and Disk icons are not used unless Mini vMac is compiled with the option '-im 1'. (So if you don't use '-im 1', you only need "AppIcon.icns".)

Here are the md5 checksums for the downloads, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

2af006506de7549be14f94317918d59a icnsosx-1.0.0.zip
e6586af918c0cf75823739ad9c8b01b3 minivmim-3.0.4-umch.bin.tgz

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/C6M+dsOn5yKjfwAaH185UcA0S1bkGkqzhs69JQdmlmRWcu7
1+hD07g74d2cAZaQJlOvO+oDT0pdON0uvIqtY+Vi8odz0qn2M+1YZMOghrvBnLIM
OuRSX7zC12kEdA3qJLOX5BVmvOUt9bkbNJpC1cHRoGWsmmKsyTKdGcOfeHi7xWOG
-------- END GRY SIGNATURE --------

IcnsOSX is copyright (C) 2007 David Sibley.

You can redistribute IcnsOSX and/or modify it under them terms of version 2 of the GNU General Public License as published by the Free Software Foundation. See the included file COPYING.

IcnsOSX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.


www.gryphel.com/c/minivmac/extras/icons - feedback
copyright (c) 2007 Paul C. Pratt - last update 11/15/2007
-------------------------------------------------------------------------------- /docs/extras/md5fl/index.html: -------------------------------------------------------------------------------- 1 | Md5Fl
www.gryphel.com/c/minivmac/extras/md5fl - feedback

Md5Fl


Download

md5fl-1.2.0.zip (68K) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.

Md5Fl is an application for 680x0 Macintosh to calculate or verify an md5 checksum of a file.

(The related application Md5Im combines the functionality of Md5Fl and the ImportFl application, so as to conveniently checksum files on the real computer.)

The calculated md5 checksum will be displayed in Md5Fl's window. The checksum will also be placed on the clipboard. Before replacing the contents of the clipboard it will examine the old contents and see if matches the new value. If it matches, an "equals" sign is displayed on the right side of Md5Fl's window. If it doesn't match, but the old content looks like an md5 checksum, then a "not equals" sign is displayed. Otherwise, if the old content doesn't look like an md5 checksum, no extra symbol is displayed.

Md5Fl was created using md5 code from glibc-2.3.4, copyright the Free Software Foundation, and written by Ulrich Drepper.

The name "Md5Fl" stands for "MD5 of FiLe".

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

2a66cfc85f7dc26d570b17d09a17f0e1 md5fl-1.2.0.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/KSrN+dhysxRZ3CJUzWmSDnhry+g6TTVHu5Tl3rCnwpVaSTi
eDqvqLtxNCM4vV285GreNdxsEisPwTyOC0NfdnLv6eisnUVpkTEDTanAtIXAvycj
7xiO90AkNJSesQHNVaBY5mi8Ys+iOcQDpzjBcNPfKLZXQ6ijfkIU+lI1A9Y35HmR
-------- END GRY SIGNATURE --------

See the Compiling page for instructions on compiling Md5Fl from the source code.

You can redistribute Md5Fl and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. See the included file COPYING.

Md5Fl is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.

:

If you find Md5Fl useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/md5fl - feedback
copyright (c) 2010 Paul C. Pratt - last update 10/21/2010
-------------------------------------------------------------------------------- /docs/extras/mkkeystl/index.html: -------------------------------------------------------------------------------- 1 | MkKeysTl
www.gryphel.com/c/minivmac/extras/mkkeystl - feedback

MkKeysTl


Download

MkKeysTl-1.01.zip (74K) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.

MkKeysTl is a command line version of MakeKeys. It can be used in Macintosh Programmer’s Workshop to automate generating secret and public key pairs. It is written to be platform independent, using the C standard library, and would probably be easy to port to other platforms (but that is not supported).

It takes three arguments: First, a path to a text file containing truly random bytes in hexadecimal (not psuedo-random). Second, a path to a new output file in which to put the secret key. And third, a path to a new output file in which to put the public key.

MkKeysTl is in part descended from MacPGP source code, which, as far as I can tell, allows derived works for noncommercial use.

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

5e24c49d468815be31f8c03dcb571c6a MkKeysTl-1.01.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/MHhkmj0G2/yrT2Hn2Rx6UQwG3cZRA0BKusTm89ylU0rnot5
U9dJjYCxGEsGiqzfsMWha1pJbBOcEmzUB4kl7qDdZpwKXqRQe+DAoEoRr+WoMF98
q1rVfHEX2jWmMWVU2wmtNJIuM9of8MMW3vzff+mMgIXUGjLJbEFGw26qDfu8S5KF
-------- END GRY SIGNATURE --------

:

If you find MkKeysTl useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/mkkeystl - feedback
copyright (c) 2018 Paul C. Pratt - last update 10/20/2018
-------------------------------------------------------------------------------- /docs/extras/mnvmreg/index.html: -------------------------------------------------------------------------------- 1 | MnvMreg
www.gryphel.com/c/minivmac/extras/mnvmreg - feedback

MnvMreg


Download

mnvmreg-1.0.0.zip (20K) zip archive. Includes source code.

update - MnvMreg is obsolete as of Mini vMac 3.0.3 and later. Instead, use the '-im 1' compile time option.

MnvMreg is a utility to install Mini vMac into the Microsoft Windows registry, so that double clicking on a disk image file with the extension '.dsk' will open it with Mini vMac, and so that such disk image files and also '.rom' files will be displayed with custom icons.

Prior to version 1.0.0 of Mini vMac, every launch of the Mini vMac application would reinstall it in the registry. But since this could conflict with other applications that want to use the '.dsk' and '.rom' extensions, this feature was removed. MnvMreg brings this back as a 'use at your own risk' optional feature.

To use MnvMreg, move 'MnvMreg.exe' application into the same folder as the 'minivmac.exe' that you want to use. Then double click on it to launch it. It should give a confirmation dialog to indicate it succeeded, and then quit. If it fails, it should display a dialog with a brief error message.

If you move the Mini vMac application, you will need to run MnvMreg again.

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

8ce24f4a9ea518bc563f68218b496988 mnvmreg-1.0.0.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/N/In8YSWZpg29ecgjEwjYSn4ggzacdVVztLfiTbd26d/tSy
Px8vLvzUewks/1y5r0OY4TSvyaUMscf/Hf0oyN4J8BTZsoZ0pt5ignOmt35dEk1X
0gvSAqha2e6y+y1ddxJRebMs4smFlmQaVCFO58+rqtxm8OikHbr/Zv90DxFlgD9w
-------- END GRY SIGNATURE --------

You can redistribute MnvMreg and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. See the included file COPYING.

MnvMreg is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.

:

If you find MnvMreg useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/mnvmreg - feedback
copyright (c) 2010 Paul C. Pratt - last update 10/21/2010
-------------------------------------------------------------------------------- /docs/extras/pmakkeys/index.html: -------------------------------------------------------------------------------- 1 | PMakKeys
www.gryphel.com/c/minivmac/extras/pmakkeys - feedback

PMakKeys


Download

pmakkeys-1.1.0.zip (131K) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.

PMakKeys is a tool to make secret and public key pairs for use in writing and verifying digital signatures, just like MakeKeys, except that it uses a different format that is more or less compatible with the program MacPGP.

Screenshot

The tools PSgWrite and PSgCheck use the keys generated by PMakKeys.

PMakKeys is in part descended from MacPGP source code, which, as far as I can tell, allows derived works for noncommercial use. PMakKeys is generally compatible with MacPGP, but it is easier to legally distribute, since it doesn’t do cryptography. Since it only does one thing it should also be easier to use.

PMakKeys generates keys compatibile with MacPGP, but it does not encrypt the secret key. Another difference with MacPGP is that PMakKeys sets the user name field to "anon", rather than asking for one.

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

6318e745d955ac70113a6a753ad7d164 pmakkeys-1.1.0.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/JVgrzW5vjrPsNUQZyOWjePPTd5P+eWvhzDon3PnGsqVZ1hm
7h+mr3hloz+sND7zxIEgXONJnNUYfwON1Syw7Gw4+dEyDNVSzM3XqmiSgtnxeFfn
Q+oHCQnLIIZKqRk5ucLoiRnoYTfwM7cyNQSjUB0hEzVSFCna6mScBMcuDieoi5tH
-------- END GRY SIGNATURE --------

See the Compiling page for instructions on compiling PMakKeys from the source code.

:

If you find PMakKeys useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/pmakkeys - feedback
copyright (c) 2018 Paul C. Pratt - last update 9/24/2018
-------------------------------------------------------------------------------- /docs/extras/psgchktl/index.html: -------------------------------------------------------------------------------- 1 | PSgChkTl
www.gryphel.com/c/minivmac/extras/psgchktl - feedback

PSgChkTl


Download

PSgChkTl-1.01.zip (70K) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.

PSgChkTl is a command line version of PSgCheck. It can be used in Macintosh Programmer’s Workshop to automate checking digital signatures in MacPGP format. It is written to be platform independent, using the C standard library, and would probably be easy to port to other platforms (but that is not supported).

It takes two arguments: First, a path to a file containing a signed message. And second, a path to a file containing a public key, in ascii armored format.

If the signature is correctly signed, PSgChkTl will return a zero result ("{status}" in MPW). Otherwise the result will be non-zero.

PSgChkTl is in part descended from MacPGP source code, which, as far as I can tell, allows derived works for noncommercial use.

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

619f66c2e6aa20bc1a996b35e3c662ab PSgChkTl-1.01.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/C144FRwrUWDsAm4foX3HOd4Fs4BF8uyzDksfn7dO3RPvk3T
PB8u5Z0hJkUQQYA4Pdg7G69amjF4oMtjK+1XPspxlSg8aa+8Gbww00SeFwbJDvnH
f6k2UEr7Ulet1iEelRmPkedX8K/zoiSzoENpUA76C+ii92JNym9UH+MU4xQNVDnI
-------- END GRY SIGNATURE --------

:

If you find PSgChkTl useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/psgchktl - feedback
copyright (c) 2018 Paul C. Pratt - last update 10/20/2018
-------------------------------------------------------------------------------- /docs/extras/psgwrite/index.html: -------------------------------------------------------------------------------- 1 | PSgWrite
www.gryphel.com/c/minivmac/extras/psgwrite - feedback

PSgWrite


Download

psgwrite-1.2.0.zip (131K) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.

PSgWrite is a tool for creating digital signatures, just like SigWrite, except that it uses a different format that is more or less compatible with the program MacPGP.

Screenshot

The related tool PSgCheck can check digital signatures created with PSgWrite.

PSgWrite is in part descended from MacPGP source code, which, as far as I can tell, allows derived works for noncommercial use. PSgWrite is generally compatible with MacPGP, but it is easier to legally distribute, since it doesn’t do cryptography. Since it only does one thing it should also be easier to use.

PSgWrite only handles a subset of secret keys that MacPGP does. For one thing, it does not handle encrypted keys, which is what MacPGP would normally generate.

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

b66c8c36d27247975de97b233ae45273 psgwrite-1.2.0.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/Os4hAUa0bhgqJjPpyUXzATV8DG/5EDaTK4lPqoAbuuRG7/X
iekeQnXQuEI5+pW78BMjRA51JkCxwDDIA5CvhevVlo4olDjHh3z0+kPqA9CBmm2w
IdScDaenBObgQxwc2GFi1EcxXQqJicUuQYr5cVHSouLofjUTI+msWdxyLmOzt5vC
-------- END GRY SIGNATURE --------

See the Compiling page for instructions on compiling PSgWrite from the source code.

:

If you find PSgWrite useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/psgwrite - feedback
copyright (c) 2018 Paul C. Pratt - last update 9/24/2018
-------------------------------------------------------------------------------- /docs/extras/reasm/index.html: -------------------------------------------------------------------------------- 1 | ReAsm
www.gryphel.com/c/minivmac/extras/reasm - feedback

ReAsm (Alpha)


Download

reasm-200105.zip (info) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.

ReAsm is for reassembling the output of FDisasm.

Unlike other Macintosh Assemblers, ReAsm has no awareness of the structure of a Macintosh application, or even the structure of a Macintosh resource fork. Instead it can be used to produce any arbitrary flat data file. This makes it better suited for reassembling output of FDisasm, especially ROM images. A Macintosh application (with resource fork, file type, and file creator) can be produced by assembling an AppleSingle format file and then using asUnpack.

Example source files are included. To assemble them, move the ReAsm application into the “example” folder and run it, which creates the output file “bin”.

Nothing about ReAsm should be relied on yet. In particular, the syntax for the source file will change.

See the Compiling page for instructions on compiling ReAsm from the source code.

You can redistribute ReAsm and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. See the included file COPYING.

ReAsm is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.

:

If you find ReAsm useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/reasm - feedback
copyright (c) 2020 Paul C. Pratt - last update 1/5/2020
-------------------------------------------------------------------------------- /docs/extras/sigchktl/index.html: -------------------------------------------------------------------------------- 1 | SigChkTl
www.gryphel.com/c/minivmac/extras/sigchktl - feedback

SigChkTl


Download

SigChkTl-1.01.zip (58K) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.

SigChkTl is a command line version of SigCheck. It can be used in Macintosh Programmer’s Workshop to automate checking digital signatures through out this website. It is written to be platform independent, using the C standard library, and would probably be easy to port to other platforms (but that is not supported).

It takes two arguments: First, a path to a file containing a signed message. And second, a path to a file containing a public key, in ascii armored format.

If the signature is correctly signed, SigChkTl will return a zero result ("{status}" in MPW). Otherwise the result will be non-zero.

SigChkTl is in part descended from MacPGP source code, which, as far as I can tell, allows derived works for noncommercial use.

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

ff5ae9d24788cbe4ed821d3ab52c9cfd SigChkTl-1.01.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/H9iEmRVaYKIOk5+LVbSgVo/cGdjvjs7CiPbr/q6A4BuDvQe
1JWNhIWY9F2EOGlGwoCIi2JwSrWNtFENSEfBHP1bNKGUTZt5iGq+NtxwlECFc99G
JX7hkSrHKXZtwf12qpXym9KOfSnhBHbhMcoZKYk31DuRwgPoMhn3TKwNWisd/i0G
-------- END GRY SIGNATURE --------

:

If you find SigChkTl useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/sigchktl - feedback
copyright (c) 2018 Paul C. Pratt - last update 10/20/2018
-------------------------------------------------------------------------------- /docs/extras/sigwrttl/index.html: -------------------------------------------------------------------------------- 1 | SigWrtTl
www.gryphel.com/c/minivmac/extras/sigwrttl - feedback

SigWrtTl


Download

SigWrtTl-1.01.zip (57K) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.

SigWrtTl is a command line version of SigWrite. It can be used in Macintosh Programmer’s Workshop to automate creating digital signatures. It is written to be platform independent, using the C standard library, and would probably be easy to port to other platforms (but that is not supported).

It takes three arguments: First, a path to a file contained a message to be signed. Second, a path to a file containing a secret key, in ascii armored format. And third, a path to a new output file in which to put the signed message.

SigWrtTl is in part descended from MacPGP source code, which, as far as I can tell, allows derived works for noncommercial use.

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

757a695fde185fceb6131d5e65276282 SigWrtTl-1.01.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/NR+XtA5N7yDydifGmerpis7tA3FX2zcFzrUee9aUXkb17ja
iWhLoLm9u7k5V9s74ebYnRO8U/Yck+C6BXvqH4nP37ceffA/YodO1I+h9HfrjsF4
BAs8mjOD45JvfwpB67ol4smVWzyV00QBaVmPlPLv3MyybSVpaQZ3jNSEcp06wV5M
-------- END GRY SIGNATURE --------

:

If you find SigWrtTl useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/sigwrttl - feedback
copyright (c) 2018 Paul C. Pratt - last update 10/20/2018
-------------------------------------------------------------------------------- /docs/extras/sitpack/index.html: -------------------------------------------------------------------------------- 1 | sitPack
www.gryphel.com/c/minivmac/extras/sitpack - feedback

sitPack


Download

sitpack-1.0.0.zip (64K) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.

sitPack is an application to pack files and folders into uncompressed ".sit" format.

The main thing gained by implementing this was to learn how to customize the open file dialog to allow selecting folders. (With help from Apple sample code and sample code from Disinfectant.)

Here is the md5 checksum for the download, signed with Gryphel Key 5:

--------- GRY SIGNED TEXT ---------

b49f7a412037622ab3121da1e7e8a500 sitpack-1.0.0.zip

------- BEGIN GRY SIGNATURE -------
Gry/4Xa8CFcUzxdN/AWWrSW4IQcZtgwF8f6IDIMc7ctgkmUza/3rLlpiblpktgRk
T1l8TQkJBj0DpjtVricSX11pZMK4Ya8BnBBWFZWb7sS13xk4vLrkhMxLpjKaOy2/
OS8p3mDLl+axDUQ47ZkfKBMMNUemnYWMN8k5JLCto539dunXb/J7XWqxRIbRRH9T
-------- END GRY SIGNATURE --------

See the Compiling page for instructions on compiling sitPack from the source code.

You can redistribute sitPack and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. See the included file COPYING.

sitPack is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.

:

If you find sitPack useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K
www.gryphel.com/c/minivmac/extras/sitpack - feedback
copyright (c) 2011 Paul C. Pratt - last update 4/5/2011
-------------------------------------------------------------------------------- /docs/happy-mac-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/docs/happy-mac-options.png -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | µvMac - early Macintosh emulator 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 |

µvMac

16 | An emulator for early (68000-based) Macintoshes 17 |
18 |
19 | 20 |

About

21 |
22 | Summary: µvMac (micro vMac) is an emulator allows modern computers 23 | to run software made for early Macintosh 24 | computers, the computers that Apple sold from 1984 to 1996 25 | based upon Motorola's 680x0 microprocessors. 26 | This is a fork of Mini vMac, maintained by 27 | InvisibleUp. The original page for Mini 28 | vMac is hosted at gryphel.com. 29 |
30 | 31 |

Screenshots

32 |
33 |

What it looks like. For example, a Macintosh Plus running System 7.5.5:

34 | 35 |
36 | 37 |

License (GPL v2)

38 |

Credits

39 |

FAQ

40 |

Ports

41 | 42 |
43 |

How to Use

44 |

Getting Started

45 |

Using Mini vMac

46 |

Recipes

47 |

User Interface Instructions

48 |

Extra Macintosh Software

49 | 50 |
51 |

Development reference

52 |

Changelog

53 |

Emulated Hardware Reference

54 |

Compile options (obsolete, for dev reference only)

55 |

Source contents

56 |

Compiling (obsolete)

57 |

Developer-specific compile options (also obsolete)

58 |

Driver compile instructions

59 |

Localization

60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /docs/macii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/docs/macii.png -------------------------------------------------------------------------------- /docs/macplus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/docs/macplus.png -------------------------------------------------------------------------------- /docs/norom-mockup.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/docs/norom-mockup.gif -------------------------------------------------------------------------------- /docs/ports.html: -------------------------------------------------------------------------------- 1 | Mini vMac Ports
www.gryphel.com/c/minivmac/ports - feedback

Mini vMac

Ports


On the main Mini vMac download page I provide versions of Mini vMac compiled for several platforms. Other people have ported Mini vMac to other platforms. I've listed the ports that I know of on this page below. Note that I don't maintain these ports, and can not help you with them. If you port Mini vMac to another platform, please let me know.

Android

port by Gil Osher

iOS

port by “zydeco”

Nintendo 3DS

port by Tara Keeling

Windows RT

compiled by maintainer of “Windows ARM” website

Pocket PC

port by Fabio Concas

Solaris 10

(SPARC and x86)
packages by Luc Pauwels

:

Next - Localization


www.gryphel.com/c/minivmac/ports - feedback
copyright (c) 2016 Paul C. Pratt - last update 8/28/2016
-------------------------------------------------------------------------------- /docs/recipes/brsys7in/p2.html: -------------------------------------------------------------------------------- 1 | British System 7.0.1 install images - Recipe for Mini vMac, Page 2
www.gryphel.com/c/minivmac/recipes/brsys7in/p2 - feedback

British System 7.0.1 install images

Recipe for Mini vMac, Page 2


Previous Page

:

Launch the "ImportFl" application, such as by double clicking on its icon.

...

Import the file "Disk_Tools.image.sea.bin", such as by dragging the icon of the file onto the Mini vMac window.

Click the "Drive" button to switch to the "Untitled" disk.

...

Click the "Save" button to save the imported archive to the "Untitled" disk.

...

Choose "Quit" from the "File" menu.

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/brsys7in/p2 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/brsys7in/p3.html: -------------------------------------------------------------------------------- 1 | British System 7.0.1 install images - Recipe for Mini vMac, Page 3
www.gryphel.com/c/minivmac/recipes/brsys7in/p3 - feedback

British System 7.0.1 install images

Recipe for Mini vMac, Page 3


Previous Page

:

Click in "Page Up" area to scroll to the top of the "Untitled" window.

...

Launch the "binUnpk" application, such as by double clicking on its icon.

...

Choose "Open" from the "File" menu.

Click the "Drive" button to switch to the "Untitled" disk.

...

Select the archive file.

Click the "Open" button.

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/brsys7in/p3 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/brsys7in/p4.html: -------------------------------------------------------------------------------- 1 | British System 7.0.1 install images - Recipe for Mini vMac, Page 4
www.gryphel.com/c/minivmac/recipes/brsys7in/p4 - feedback

British System 7.0.1 install images

Recipe for Mini vMac, Page 4


Previous Page

:

Click the "Save" button.

...

Choose "Quit" from the "File" menu.

...

Launch the Self Extracting Image (".sea) application, such as by double clicking on its icon.

...

Click the "Continue" button.

...

Click the "Save" button.

...

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/brsys7in/p4 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/brsys7ut/p2.html: -------------------------------------------------------------------------------- 1 | British System 7.0.1 utility disk - Recipe for Mini vMac, Page 2
www.gryphel.com/c/minivmac/recipes/brsys7ut/p2 - feedback

British System 7.0.1 utility disk

Recipe for Mini vMac, Page 2


Previous Page

:

Click to select "System Software for any Macintosh".

Click the "Install" button.

...

...

...

...

Click the "Quit" button.

...

Choose "Restart" from the "Special" menu.

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/brsys7ut/p2 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/brsys7ut/p3.html: -------------------------------------------------------------------------------- 1 | British System 7.0.1 utility disk - Recipe for Mini vMac, Page 3
www.gryphel.com/c/minivmac/recipes/brsys7ut/p3 - feedback

British System 7.0.1 utility disk

Recipe for Mini vMac, Page 3


Previous Page

:

Mount again the "004M.dsk" image in Mini vMac.

Double click on the "Untitled" icon to open it.

...

Click in the zoom box in the upper right of the "Untitled" window to resize it.

...

Select the icons "Teach Text" and "Read Me", by dragging a rectangle around them.

...

...

Drag the selected icons to the "Wastebasket" (What the "Trash" is called in the British version).

...

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/brsys7ut/p3 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/brsys7ut/p4.html: -------------------------------------------------------------------------------- 1 | British System 7.0.1 utility disk - Recipe for Mini vMac, Page 4
www.gryphel.com/c/minivmac/recipes/brsys7ut/p4 - feedback

British System 7.0.1 utility disk

Recipe for Mini vMac, Page 4


Previous Page

:

Choose "Empty Wastebasket..." from the "Special" menu.

...

Click the "OK" button.

...

Resize the "Untitled" window.

...

Mount the image file "Sys6Util", such as by dragging the icon of the image onto the Mini vMac window.

Drag "Sys6Util" window lower.

...

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/brsys7ut/p4 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/index.html: -------------------------------------------------------------------------------- 1 | Recipes for Mini vMac
www.gryphel.com/c/minivmac/recipes - feedback

Recipes

for Mini vMac


These recipes assume you have read the Getting started with Mini vMac page, and have the Mini vMac application (the standard variation version that is appropriate for your operating system), a ROM image from a Macintosh Plus, and System 6.0.8 install disk images.

System 6 utility disk

Wrapped Lunar Phantom game

British System 7.0.1 install images

British System 7.0.1 utility disk

System 7.0.1 install images

System 7 Tune-Up install image

:

If you find these recipes useful, please consider helping the Gryphel Project, of which it is a part.

gryphel logo, 1K

Next - Mini vMac User Interface


www.gryphel.com/c/minivmac/recipes - feedback
copyright (c) 2012 Paul C. Pratt - last update 8/6/2012
-------------------------------------------------------------------------------- /docs/recipes/lnrphntm/index.html: -------------------------------------------------------------------------------- 1 | Wrapped Lunar Phantom - Recipe for Mini vMac
www.gryphel.com/c/minivmac/recipes/lnrphntm - feedback

Wrapped Lunar Phantom

Recipe for Mini vMac


Quick Summary

Install the game "Lunar Phantom" into a bootable disk image with "AutoQuit". This "wraps" the application, so that it can be used more as you would a native application.

Ingredients

The "Sys6Util.dsk" disk image file, from the "System 6 utility disk recipe".

The "Blanks" collection.

The "AutoQuit" disk image.

The "Lunar Phantom" disk image.

Start

Launch Mini vMac

Mount the image file "Sys6Util"

Unzip the file "1440K.zip" from the Blanks collection.

Mount the resulting "1440K.dsk" image in Mini vMac.

Open the "Untitled" disk, such as by double clicking on its icon.

...

Make the "Untitled" window larger.

...

...

Drag the "Untitled" window lower.

...

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/lnrphntm - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/lnrphntm/p2.html: -------------------------------------------------------------------------------- 1 | Wrapped Lunar Phantom - Recipe for Mini vMac, Page 2
www.gryphel.com/c/minivmac/recipes/lnrphntm/p2 - feedback

Wrapped Lunar Phantom

Recipe for Mini vMac, Page 2


Previous Page

:

Drag the "System Folder" icon onto the "Untitled" disk icon.

(This copies the "System Folder" to the "Untitled" disk image, and automatically places the icon in a good place in the "Untitled" window.)

...

...

...

Mount "AutoQuit" disk image.

Drag the "AutoQuit" application icon onto the Untitled disk icon.

...

...

Start renaming the duplicate "AutoQuit" application by clicking on the icon name.

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/lnrphntm/p2 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/lnrphntm/p3.html: -------------------------------------------------------------------------------- 1 | Wrapped Lunar Phantom - Recipe for Mini vMac, Page 3
www.gryphel.com/c/minivmac/recipes/lnrphntm/p3 - feedback

Wrapped Lunar Phantom

Recipe for Mini vMac, Page 3


Previous Page

:

Type the new name exactly - "Finder". (Six characters, don't type the quotes.)

Type the "return" key to finish renaming.

Drag this "Finder" icon onto the "System Folder" icon.

This will replace the "Finder" that is already in the "System Folder". You will be asked if you really want to do this. (If you are not asked, then you didn't name the replacement exactly to "Finder".)

...

...

Click the "OK" button.

...

Drag the "AutoQuit" disk icon to the trash to eject the disk image.

...

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/lnrphntm/p3 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/lnrphntm/p4.html: -------------------------------------------------------------------------------- 1 | Wrapped Lunar Phantom - Recipe for Mini vMac, Page 4
www.gryphel.com/c/minivmac/recipes/lnrphntm/p4 - feedback

Wrapped Lunar Phantom

Recipe for Mini vMac, Page 4


Previous Page

:

Mount "Lunar Phantom" disk image.

Drag the "Lunar Phantom 1.0" application icon onto the Untitled disk icon.

...

...

Drag the "Lunar_Phantom" disk icon to the trash to eject the disk image.

...

...

Click in "Page Left" area.

...

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/lnrphntm/p4 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/sys6util/p2.html: -------------------------------------------------------------------------------- 1 | System 6 utility disk - Recipe for Mini vMac, Page 2
www.gryphel.com/c/minivmac/recipes/sys6util/p2 - feedback

System 6 utility disk

Recipe for Mini vMac, Page 2


Previous Page

:

Hold down the shift key, and click to add "32-Bit QuickDraw".

(Without this, color won't work in System 6, in the current state of Mini vMac Mac II emulation).

Click the "Install" button.

...

...

Click the "Quit" button.

...

Choose "Restart" from the "Special" menu.

...

Mount the "Sys6Util" disk image.

Double click on the "Sys6Util" icon to open it.

:

Next Page


www.gryphel.com/c/minivmac/recipes/sys6util/p2 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/sys6util/p3.html: -------------------------------------------------------------------------------- 1 | System 6 utility disk - Recipe for Mini vMac, Page 3
www.gryphel.com/c/minivmac/recipes/sys6util/p3 - feedback

System 6 utility disk

Recipe for Mini vMac, Page 3


Previous Page

:

Make the "Sys6Util" window larger.

...

...

Choose "Clean Up Window" from the "Special" menu.

...

Click in "Page Up" area to scroll to top.

...

Click in "Page Left" area.

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/sys6util/p3 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/sys6util/p4.html: -------------------------------------------------------------------------------- 1 | System 6 utility disk - Recipe for Mini vMac, Page 4
www.gryphel.com/c/minivmac/recipes/sys6util/p4 - feedback

System 6 utility disk

Recipe for Mini vMac, Page 4


Previous Page

:

Drag "Sys6Util" window to bottom half of screen.

...

...

Mount "ImportFl" disk image.

Drag "ImportFl" application icon on Sys6Util disk icon.

(This copies the "ImportFl" application to the "Sys6Util" disk image, and automatically places the icon in a good place in the "Sys6Util" window.)

...

...

...

Drag "ImportFl" disk icon to the trash to eject the disk image.

...

...

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/sys6util/p4 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/sys7inst/p2.html: -------------------------------------------------------------------------------- 1 | System 7.0.1 install images - Recipe for Mini vMac, Page 2
www.gryphel.com/c/minivmac/recipes/sys7inst/p2 - feedback

System 7.0.1 install images

Recipe for Mini vMac, Page 2


Previous Page

:

Click the "Save" button.

...

Choose "Quit" from the "File" menu.

...

Open the "Untitled" disk, such as by double clicking on its icon.

...

Drag the "System_7.0.1.smi.bin" icon onto the "binUnpk" application icon.

...

...

Click the "Desktop" button.

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/sys7inst/p2 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/sys7inst/p3.html: -------------------------------------------------------------------------------- 1 | System 7.0.1 install images - Recipe for Mini vMac, Page 3
www.gryphel.com/c/minivmac/recipes/sys7inst/p3 - feedback

System 7.0.1 install images

Recipe for Mini vMac, Page 3


Previous Page

:

Double click on "Untitled".

...

Click the "Save" button.

...

Click in the zoom box in the upper right of the "Untitled" window to resize it.

...

Launch the "System_7.0.1.smi" application, such as by double clicking on its icon.

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/sys7inst/p3 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/sys7inst/p4.html: -------------------------------------------------------------------------------- 1 | System 7.0.1 install images - Recipe for Mini vMac, Page 4
www.gryphel.com/c/minivmac/recipes/sys7inst/p4 - feedback

System 7.0.1 install images

Recipe for Mini vMac, Page 4


Previous Page

:

Click the "Agree" button.

...

...

Open the "7.0.1 (1440k.images)" disk, such as by double clicking on its icon.

...

Drag the "7.0.1 (1440k.images)" window lower.

...

...

Choose "Select All" from the "Edit" menu.

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/sys7inst/p4 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/sys7tnin/p2.html: -------------------------------------------------------------------------------- 1 | System 7 Tune-Up install image - Recipe for Mini vMac, Page 2
www.gryphel.com/c/minivmac/recipes/sys7tnin/p2 - feedback

System 7 Tune-Up install image

Recipe for Mini vMac, Page 2


Previous Page

:

Launch the "ImportFl" application, such as by double clicking on its icon.

...

Import the file "System7_Tune-Up_1.1.1.sea.bin", such as by dragging the icon of the file onto the Mini vMac window.

Click the "Drive" button to switch to the "Untitled" disk.

...

Click the "Save" button to save the imported archive to the "Untitled" disk.

...

Choose "Quit" from the "File" menu.

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/sys7tnin/p2 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/sys7tnin/p3.html: -------------------------------------------------------------------------------- 1 | System 7 Tune-Up install image - Recipe for Mini vMac, Page 3
www.gryphel.com/c/minivmac/recipes/sys7tnin/p3 - feedback

System 7 Tune-Up install image

Recipe for Mini vMac, Page 3


Previous Page

:

Click in "Page Up" area to scroll to the top of the "Untitled" window.

...

Launch the "binUnpk" application, such as by double clicking on its icon.

...

Choose "Open" from the "File" menu.

...

Click the "Drive" button to switch to the "Untitled" disk.

...

Select the archive file.

Click the "Open" button.

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/sys7tnin/p3 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/recipes/sys7tnin/p4.html: -------------------------------------------------------------------------------- 1 | System 7 Tune-Up install image - Recipe for Mini vMac, Page 4
www.gryphel.com/c/minivmac/recipes/sys7tnin/p4 - feedback

System 7 Tune-Up install image

Recipe for Mini vMac, Page 4


Previous Page

:

Click the "Save" button.

...

Choose "Quit" from the "File" menu.

...

Launch the Self Extracting Image (".sea) application, such as by double clicking on its icon.

...

Click the "Save" button.

...

...

Launch the "ExportFl" application, such as by double clicking on its icon.

...

:

Next Page


www.gryphel.com/c/minivmac/recipes/sys7tnin/p4 - feedback
copyright (c) 2017 Paul C. Pratt - last update 10/30/2017
-------------------------------------------------------------------------------- /docs/screens/index.html: -------------------------------------------------------------------------------- 1 | Mini vMac Screenshots
www.gryphel.com/c/minivmac/screens - feedback

Mini vMac

Screenshots


All screenshots are of windowed mode. Full Screen mode looks the same in all versions.

Some computer monitors have trouble displaying the 50 percent gray pattern commonly used on old Macintosh computers and seen in these screenshots. The Magnify mode of Mini vMac helps to alleviate this problem.


Host OS: Macintosh OS X v10.6 Snow Leopard

Emulated: Macintosh System Software 6.0.8

(This copy of Snow Leopard for Mini vMac development was sponsored by ClockWise of E-Maculation.)

64K Picture

Host OS: Microsoft Windows 7

Emulated: HeartQuest 1.1 by Ingemar Ragnemalm, listed on the arcade games page

(This copy of Windows 7 for Mini vMac development was sponsored by Andrew Johnstone. It is running in VMware Fusion 3, sponsored by Pedro Maciel, Greg Lee, and ClockWise.)

64K Picture

Host OS: Linux - Ubuntu 8.04 LTS (Hardy Heron)

Emulated: Lunar Phantom 1.0 by Rolf Staflin, listed on the arcade games page

64K Picture

More Screenshots

:

Next - Testimonials

Or skip to - Download Mini vMac


www.gryphel.com/c/minivmac/screens - feedback
copyright (c) 2010 Paul C. Pratt - last update 1/9/2010
-------------------------------------------------------------------------------- /docs/screens/more.html: -------------------------------------------------------------------------------- 1 | More Mini vMac Screenshots
www.gryphel.com/c/minivmac/screens/more - feedback

More Mini vMac

Screenshots


Here are some additional Mini vMac screenshots. The latest screenshots are back on the main Mini vMac screenshots page.


Host OS: Macintosh OS X, 10.3.4

Emulated: System Software 7.5.5 is the last version that will run on the Macintosh Plus.

48K Picture

Host OS: Microsoft Windows XP

Emulated: Continuum by Randall H. Wilson and Brian Wilson is listed on the arcade games page.

48K Picture

Host OS: Red Hat Linux 9

Emulated: MacAstro by Nicolas Mercouroff is listed on the Astronomy page. This screenshot was edited, since that was easier than figuring out how to set the screen resolution to 640 by 480.

40K Picture

Host OS: Macintosh OS 9.2.2

Emulated: "The Fool's Errand" by Cliff Johnson is listed on the other games page.

32K Picture

Host OS: Microsoft Windows 98 Second Edition

Emulated: Space Station Pheta 2.7 by T&T Software, listed on the other games page

64K Picture

Host OS: Macintosh System 7.5.5

Emulated: Macintosh System Software 1.1 (System 3.2 / Finder 5.3).

32K Picture

www.gryphel.com/c/minivmac/screens/more - feedback
copyright (c) 2010 Paul C. Pratt - last update 1/9/2010
-------------------------------------------------------------------------------- /extras/mydriver/disk/README.txt: -------------------------------------------------------------------------------- 1 | Mini vMac: mydriver/README 2 | Paul C. Pratt 3 | www.gryphel.com 4 | February 23, 2002 5 | 6 | The mydriver folder contains source code 7 | for a replacement disk driver that is patched 8 | into the emulated rom. 9 | 10 | The compiled driver is already in ROMEMDEV.c 11 | (the initialization of sony_driver variable), 12 | so this source code is not needed for building 13 | Mini vMac. It is only needed if you want 14 | to change this driver. 15 | 16 | To compile the driver, use MPW commands 17 | such as: 18 | 19 | set srcdir hd4:Topaz:MinivMac:mydriver: 20 | asm -case on {srcdir}mydriver.a -o {srcdir}mydriver.a.o 21 | c {srcdir}mydriver.c -r -b -mbg off -opt full -o {srcdir}mydriver.c.o 22 | link {srcdir}mydriver.a.o {srcdir}mydriver.c.o -rt DRVR=128 -o {srcdir}mydriver 23 | 24 | Then you can use ResEdit to copy the hex data out 25 | of the DRVR 128 resource, format it a bit, and 26 | replace the initialization data of the variable 27 | sony_driver in the file ROMEMDEV.c 28 | 29 | (note: this is using the old c compiler, to use 30 | the current c compiler, use: 31 | SC {srcdir}mydriver.c -w 17 -proto strict -b -mbg off -opt all -o {srcdir}mydriver.c.o 32 | ) 33 | -------------------------------------------------------------------------------- /extras/trans.txt: -------------------------------------------------------------------------------- 1 | # Some source files are simple transformations of other source 2 | # files. Here are some MPW scripts to help keep them in sync. 3 | 4 | Set x "rd:t1.txt" 5 | 6 | 7 | Catenate "{project_d}"data:src:VIAEMDEV.c > "{x}" 8 | Open "{x}" 9 | Set CaseSensitive 1 10 | Find � "{x}" 11 | Replace -c � /'VIA1'/ 'VIA2' "{x}" 12 | Find � "{x}" 13 | Replace -c � /'VIAEMDEV'/ 'VIA2EMDV' "{x}" 14 | Find � "{x}" 15 | Replace -c � /'0x04'([0-9A-FX][0-9A-FX])�1/ '0x05'�1 "{x}" 16 | Unset SearchType 17 | 18 | Compare "{project_d}"data:src:VIA2EMDV.c "{x}" 19 | 20 | 21 | Catenate "{project_d}"data:src:VIA2EMDV.c > "{x}" 22 | Open "{x}" 23 | Set CaseSensitive 1 24 | Find � "{x}" 25 | Replace -c � /'VIA2EMDV'/ 'VIAEMDEV' "{x}" 26 | Find � "{x}" 27 | Replace -c � /'VIA2'/ 'VIA1' "{x}" 28 | Find � "{x}" 29 | Replace -c � /'0x05'([0-9A-FX][0-9A-FX])�1/ '0x04'�1 "{x}" 30 | Unset SearchType 31 | 32 | Compare "{project_d}"data:src:VIAEMDEV.c "{x}" 33 | -------------------------------------------------------------------------------- /gfx/bootdlg/base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/gfx/bootdlg/base.png -------------------------------------------------------------------------------- /gfx/bootdlg/model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/gfx/bootdlg/model.png -------------------------------------------------------------------------------- /gfx/bootdlg/model_se30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/gfx/bootdlg/model_se30.png -------------------------------------------------------------------------------- /gfx/bootdlg/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/gfx/bootdlg/start.png -------------------------------------------------------------------------------- /gfx/norom/norom-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/gfx/norom/norom-0.png -------------------------------------------------------------------------------- /gfx/norom/norom-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/gfx/norom/norom-1.png -------------------------------------------------------------------------------- /gfx/norom/norom-mockup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/gfx/norom/norom-mockup.png -------------------------------------------------------------------------------- /gfx/norom/norom.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/gfx/norom/norom.gif -------------------------------------------------------------------------------- /rsrc/HAPPYMAC/aside.xbm: -------------------------------------------------------------------------------- 1 | #define HMAC_ASIDE_WIDTH 16 2 | #define HMAC_ASIDE_HEIGHT 10 3 | static unsigned char HMAC_ASIDE_BITS[] = { 4 | 0x00, 0x00, 5 | 0x39, 0x38, 6 | 0x21, 0x20, 7 | 0x01, 0x00, 8 | 0x01, 0x00, 9 | 0x03, 0x00, 10 | 0x00, 0x00, 11 | 0x00, 0x00, 12 | 0x07, 0x80, 13 | 0x00, 0x00 14 | }; -------------------------------------------------------------------------------- /rsrc/HAPPYMAC/cheese.xbm: -------------------------------------------------------------------------------- 1 | #define HMAC_CHEESE_WIDTH 16 2 | #define HMAC_CHEESE_HEIGHT 10 3 | static unsigned char HMAC_CHEESE_BITS[] = { 4 | 0x10, 0x10, 5 | 0x28, 0x28, 6 | 0x00, 0x00, 7 | 0x00, 0x00, 8 | 0x3F, 0xF8, 9 | 0x20, 0x08, 10 | 0x20, 0x08, 11 | 0x20, 0x08, 12 | 0x10, 0x10, 13 | 0x0F, 0xE0, 14 | }; -------------------------------------------------------------------------------- /rsrc/HAPPYMAC/evil.xbm: -------------------------------------------------------------------------------- 1 | #define HMAC_EVIL_WIDTH 16 2 | #define HMAC_EVIL_HEIGHT 10 3 | static unsigned char HMAC_EVIL_BITS[] = { 4 | 0x00, 0x00, 5 | 0x10, 0x10, 6 | 0x08, 0x20, 7 | 0x0C, 0x60, 8 | 0x00, 0x00, 9 | 0x20, 0x08, 10 | 0x20, 0x08, 11 | 0x1F, 0xF0, 12 | 0x00, 0x00, 13 | 0x00, 0x00 14 | }; -------------------------------------------------------------------------------- /rsrc/HAPPYMAC/horror.xbm: -------------------------------------------------------------------------------- 1 | #define HMAC_HORROR_WIDTH 16 2 | #define HMAC_HORROR_HEIGHT 10 3 | static unsigned char HMAC_HORROR_BITS[] = { 4 | 0x38, 0x38, 5 | 0x44, 0x44, 6 | 0x44, 0x44, 7 | 0x44, 0x44, 8 | 0x38, 0x38, 9 | 0x03, 0x80, 10 | 0x03, 0x80, 11 | 0x03, 0x80, 12 | 0x03, 0x80, 13 | 0x03, 0x80 14 | }; -------------------------------------------------------------------------------- /rsrc/HAPPYMAC/lady.xbm: -------------------------------------------------------------------------------- 1 | #define HMAC_LADY_WIDTH 16 2 | #define HMAC_LADY_HEIGHT 10 3 | static unsigned char HMAC_LADY_BITS[] = { 4 | 0x38, 0x38, 5 | 0x45, 0x44, 6 | 0x55, 0x54, 7 | 0x45, 0x44, 8 | 0x39, 0x38, 9 | 0x03, 0x00, 10 | 0x00, 0x00, 11 | 0x00, 0x00, 12 | 0x07, 0x80, 13 | 0x03, 0x00 14 | }; -------------------------------------------------------------------------------- /rsrc/HAPPYMAC/moustache.xbm: -------------------------------------------------------------------------------- 1 | #define HMAC_MOUSTACHE_WIDTH 16 2 | #define HMAC_MOUSTACHE_HEIGHT 10 3 | static unsigned char HMAC_MOUSTACHE_BITS[] = { 4 | 0x00, 0x00, 5 | 0x11, 0x10, 6 | 0x11, 0x10, 7 | 0x01, 0x00, 8 | 0x01, 0x00, 9 | 0x03, 0x00, 10 | 0x1F, 0xE0, 11 | 0x00, 0x00, 12 | 0x08, 0x40, 13 | 0x07, 0x80 14 | }; -------------------------------------------------------------------------------- /rsrc/HAPPYMAC/nerdy.xbm: -------------------------------------------------------------------------------- 1 | #define HMAC_NERDY_WIDTH 16 2 | #define HMAC_NERDY_HEIGHT 10 3 | static unsigned char HMAC_NERDY_BITS[] = { 4 | 0x38, 0x38, 5 | 0x45, 0x45, 6 | 0xD7, 0xD6, 7 | 0x45, 0x44, 8 | 0x39, 0x38, 9 | 0x03, 0x00, 10 | 0x00, 0x00, 11 | 0x00, 0x00, 12 | 0x0F, 0xC0, 13 | 0x00, 0x00 14 | }; -------------------------------------------------------------------------------- /rsrc/HAPPYMAC/pirate.xbm: -------------------------------------------------------------------------------- 1 | #define HMAC_PIRATE_WIDTH 16 2 | #define HMAC_PIRATE_HEIGHT 10 3 | static unsigned char HMAC_PIRATE_BITS[] = { 4 | 0x00, 0x81, 5 | 0x00, 0x7E, 6 | 0x11, 0x7E, 7 | 0x11, 0x3C, 8 | 0x01, 0x3C, 9 | 0x01, 0x18, 10 | 0x03, 0x00, 11 | 0x00, 0x00, 12 | 0x08, 0x40, 13 | 0x07, 0x80 14 | }; -------------------------------------------------------------------------------- /rsrc/HAPPYMAC/sleepy.xbm: -------------------------------------------------------------------------------- 1 | #define HMAC_SLEEPY_WIDTH 16 2 | #define HMAC_SLEEPY_HEIGHT 10 3 | static unsigned char HMAC_SLEEPY_BITS[] = { 4 | 0x00, 0x00, 5 | 0x1C, 0x70, 6 | 0x22, 0x88, 7 | 0x00, 0x00, 8 | 0x1C, 0x70, 9 | 0x08, 0x20, 10 | 0x00, 0x00, 11 | 0x00, 0x00, 12 | 0x03, 0x80, 13 | 0x00, 0x00 14 | }; -------------------------------------------------------------------------------- /rsrc/HAPPYMAC/sly.xbm: -------------------------------------------------------------------------------- 1 | #define HMAC_SLY_WIDTH 16 2 | #define HMAC_SLY_HEIGHT 10 3 | static unsigned char HMAC_SLY_BITS[] = { 4 | 0x00, 0x00, 5 | 0x08, 0x20, 6 | 0x14, 0x50, 7 | 0x00, 0x00, 8 | 0x00, 0x00, 9 | 0x20, 0x08, 10 | 0x3F, 0xF8, 11 | 0x00, 0x00, 12 | 0x00, 0x00, 13 | 0x00, 0x00 14 | }; -------------------------------------------------------------------------------- /rsrc/HAPPYMAC/sunglasses.xbm: -------------------------------------------------------------------------------- 1 | #define HMAC_SUNGLASSES_WIDTH 16 2 | #define HMAC_SUNGLASSES_HEIGHT 10 3 | static unsigned char HMAC_SUNGLASSES_BITS[] = { 4 | 0x00, 0x00, 5 | 0xFF, 0xFE, 6 | 0x7D, 0x7C, 7 | 0x7D, 0x7C, 8 | 0x39, 0x38, 9 | 0x03, 0x00, 10 | 0x00, 0x00, 11 | 0x1F, 0xF0, 12 | 0x00, 0x00, 13 | 0x00, 0x00 14 | }; -------------------------------------------------------------------------------- /rsrc/HAPPYMAC/surprise.xbm: -------------------------------------------------------------------------------- 1 | #define HMAC_SURPRISE_WIDTH 16 2 | #define HMAC_SURPRISE_HEIGHT 10 3 | static unsigned char HMAC_SURPRISE_BITS[] = { 4 | 0x1C, 0x70, 5 | 0x22, 0x88, 6 | 0x41, 0x04, 7 | 0x49, 0x24, 8 | 0x41, 0x04, 9 | 0x22, 0x88, 10 | 0x1C, 0x70, 11 | 0x01, 0x00, 12 | 0x03, 0x80, 13 | 0x03, 0x80 14 | }; -------------------------------------------------------------------------------- /rsrc/HAPPYMAC/tongue.xbm: -------------------------------------------------------------------------------- 1 | #define HMAC_TONGUE_WIDTH 16 2 | #define HMAC_TONGUE_HEIGHT 10 3 | static unsigned char HMAC_TONGUE_BITS[] = { 4 | 0x00, 0x00, 5 | 0x1E, 0x78, 6 | 0x00, 0x00, 7 | 0x00, 0x00, 8 | 0x20, 0x04, 9 | 0x3F, 0xFC, 10 | 0x05, 0x40, 11 | 0x05, 0x40, 12 | 0x04, 0x40, 13 | 0x03, 0x80 14 | }; -------------------------------------------------------------------------------- /rsrc/HAPPYMAC/yuck.xbm: -------------------------------------------------------------------------------- 1 | #define HMAC_YUCK_WIDTH 16 2 | #define HMAC_YUCK_HEIGHT 10 3 | static unsigned char HMAC_YUCK_BITS[] = { 4 | 0x00, 0x00, 5 | 0x18, 0x30, 6 | 0x04, 0x40, 7 | 0x02, 0x80, 8 | 0x00, 0x00, 9 | 0x00, 0x00, 10 | 0x1F, 0xF0, 11 | 0x15, 0x50, 12 | 0x04, 0x40, 13 | 0x03, 0x80 14 | }; -------------------------------------------------------------------------------- /rsrc/HAPPYMAC/zombie.xbm: -------------------------------------------------------------------------------- 1 | #define HMAC_ZOMBIE_WIDTH 16 2 | #define HMAC_ZOMBIE_HEIGHT 10 3 | static unsigned char HMAC_ZOMBIE_BITS[] = { 4 | 0x70, 0x7C, 5 | 0x88, 0x82, 6 | 0x88, 0x8A, 7 | 0xA8, 0x8A, 8 | 0x70, 0x82, 9 | 0x00, 0x42, 10 | 0x00, 0x3C, 11 | 0x1E, 0x00, 12 | 0x3F, 0x00, 13 | 0x3F, 0x00 14 | }; -------------------------------------------------------------------------------- /rsrc/SONYDRV.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/rsrc/SONYDRV.bin -------------------------------------------------------------------------------- /rsrc/SONYICO.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/rsrc/SONYICO.bin -------------------------------------------------------------------------------- /rsrc/WIN32/ICONAPPW.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/rsrc/WIN32/ICONAPPW.ico -------------------------------------------------------------------------------- /rsrc/WIN32/ICONDSKW.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/rsrc/WIN32/ICONDSKW.ico -------------------------------------------------------------------------------- /rsrc/WIN32/ICONROMW.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/rsrc/WIN32/ICONROMW.ico -------------------------------------------------------------------------------- /rsrc/WIN32/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | true 33 | system 34 | 35 | 36 | -------------------------------------------------------------------------------- /rsrc/WIN32/main.rc: -------------------------------------------------------------------------------- 1 | #include "winresrc.h" 2 | 3 | LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 4 | 5 | // Application manifest 6 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "app.manifest" 7 | 8 | // Icons 9 | ICO_APP ICON DISCARDABLE "ICONAPPW.ico" 10 | ICO_DSK ICON DISCARDABLE "ICONDSKW.ico" 11 | ICO_ROM ICON DISCARDABLE "ICONROMW.ico" 12 | 13 | // Binary data 14 | SONY_DRV RCDATA "../SONYDRV.bin" 15 | SONY_ICO RCDATA "../SONYICO.bin" 16 | 17 | // Version information 18 | VS_VERSION_INFO VERSIONINFO 19 | FILEVERSION 0,37,0,0 20 | PRODUCTVERSION 0,37,0,0 21 | FILESUBTYPE 0 22 | BEGIN 23 | BLOCK "StringFileInfo" 24 | BEGIN 25 | BLOCK "040904E4" 26 | BEGIN 27 | VALUE "CompanyName", "InvisibleUp\0" 28 | VALUE "Comments", "" 29 | VALUE "FileDescription", "A 68k Macintosh emulator\0" 30 | VALUE "FileVersion", "v0.37.0\0" 31 | VALUE "InternalName", "microvmac\0" 32 | VALUE "LegalCopyright", "(c)1996-2023 various contributors. Licensed under the GPL v2.\0" 33 | VALUE "OriginalFilename", "microvmac.exe\0" 34 | VALUE "ProductName", "micro vMac\0" 35 | VALUE "ProductVersion", "v0.37.0\0" 36 | END 37 | END 38 | END 39 | -------------------------------------------------------------------------------- /rsrc/macOS/ICONAPPO.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/rsrc/macOS/ICONAPPO.icns -------------------------------------------------------------------------------- /rsrc/macOS/ICONDSKO.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/rsrc/macOS/ICONDSKO.icns -------------------------------------------------------------------------------- /rsrc/macOS/ICONROMO.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InvisibleUp/uvmac/c399d9ba58390182fc2f22946219665ae3526732/rsrc/macOS/ICONROMO.icns -------------------------------------------------------------------------------- /src/CFGMAN.h: -------------------------------------------------------------------------------- 1 | /* 2 | * CFGMAN.h 3 | * 4 | * Configuration Management 5 | * 6 | */ 7 | 8 | /* Load or create config and prepare for use */ 9 | #pragma once 10 | #include 11 | 12 | bool Config_TryInit(); 13 | 14 | /* Check if key exists */ 15 | bool Config_KeyExists(const char table[], const char key[]); 16 | /* Read a boolean */ 17 | bool Config_GetBool(const char table[], const char key[], bool *value, bool defaultValue); 18 | /* Read an integer */ 19 | bool Config_GetInt(const char table[], const char key[], int64_t *value, int64_t defaultValue); 20 | /* Read a double-precision floating point number */ 21 | bool Config_GetFloat(const char table[], const char key[], double *value, double defaultValue); 22 | /* Read a string value */ 23 | bool Config_GetString(const char table[], const char key[], char **value, const char *defaultValue); 24 | 25 | /* List of known tables and keys */ 26 | #define CONFIG_SCC_REALPORT(MACPORT) "SCC_#MACPORT", "RealPort" 27 | #define CONFIG_SCC_REALPORT(MACPORT) "SCC_#MACPORT", "RealPort" 28 | 29 | #define CONFIG_VIDEO_BLACK "Video", "ColorBlack" 30 | #define CONFIG_VIDEO_WHITE "Video", "ColorWhite" 31 | #define CONFIG_VIDEO_WIDTH "Video", "Width" 32 | #define CONFIG_VIDEO_HEIGHT "Video", "Height" 33 | #define CONFIG_VIDEO_DEPTH "Video", "Depth" 34 | #define CONFIG_VIDEO_USEHACK "Video", "UseLargeScreenHack" 35 | 36 | #define DISK_PATH(NUM) "Disk", "Path#NUM" 37 | -------------------------------------------------------------------------------- /src/ERRCODES.h: -------------------------------------------------------------------------------- 1 | /* 2 | error codes returned by Mini vMac extensions 3 | (passed back to the emulated 68k code). 4 | */ 5 | 6 | #ifndef ERRCODES_H 7 | #define ERRCODES_H 8 | 9 | typedef enum MacErr { 10 | mnvm_noErr = 0x0000, /* 0 - No Error */ 11 | mnvm_miscErr = 0xFFFF, /* 1 - Should probably replace these */ 12 | mnvm_controlErr = 0xFFEF, /* 17 - I/O System Errors */ 13 | mnvm_statusErr = 0xFFEE, /* 18 - Driver can't respond to Status call */ 14 | mnvm_closErr = 0xFFE8, /* 24 - I/O System Errors */ 15 | mnvm_eofErr = 0xFFD9, /* 39 - End of file */ 16 | mnvm_tmfoErr = 0xFFD6, /* 42 - too many files open */ 17 | mnvm_fnfErr = 0xFFD5, /* 43 - File not found */ 18 | mnvm_wPrErr = 0xFFD4, /* 44 - diskette is write protected */ 19 | mnvm_vLckdErr = 0xFFD2, /* 46 - volume is locked */ 20 | mnvm_dupFNErr = 0xFFD0, /* 48 - duplicate filename */ 21 | mnvm_opWrErr = 0xFFCF, /* 49 - file already open with with write permission */ 22 | mnvm_paramErr = 0xFFCE, /* 50 - error in parameter list */ 23 | mnvm_permErr = 0xFFCA, /* 54 - permissions error (on file open) */ 24 | mnvm_nsDrvErr = 0xFFC8, /* 56 - No Such Drive */ 25 | mnvm_wrPermErr = 0xFFC3, /* 61 - write permissions error */ 26 | mnvm_offLinErr = 0xFFBF, /* 65 - off-line drive */ 27 | mnvm_dirNFErr = 0xFF88, /* 120 - directory not found */ 28 | mnvm_afpAccessDenied = 0xEC78, /* 5000 - Insufficient access privileges for operation */ 29 | } MacErr_t; 30 | 31 | #endif // ERRCODES_H 32 | -------------------------------------------------------------------------------- /src/HW/ADB/ADBEMDEV.h: -------------------------------------------------------------------------------- 1 | /* 2 | ADBEMDEV.h 3 | 4 | Copyright (C) 2008 Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifdef ADBEMDEV_H 18 | #error "header already included" 19 | #else 20 | #define ADBEMDEV_H 21 | #endif 22 | 23 | 24 | extern void ADBstate_ChangeNtfy(void); 25 | extern void ADB_DoNewState(void); 26 | extern void ADB_DataLineChngNtfy(void); 27 | extern void ADB_Update(void); 28 | -------------------------------------------------------------------------------- /src/HW/DISK/IWMEMDEV.h: -------------------------------------------------------------------------------- 1 | /* 2 | IWMEVDEV.h 3 | 4 | Copyright (C) 2004 Philip Cummins, Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifndef IWMEVDEV_H 18 | #define IWMEVDEV_H 19 | 20 | extern void IWM_Reset(void); 21 | 22 | extern uint32_t IWM_Access(uint32_t Data, bool WriteMem, CPTR addr); 23 | 24 | #endif -------------------------------------------------------------------------------- /src/HW/DISK/SONYEMDV.h: -------------------------------------------------------------------------------- 1 | /* 2 | HW/DISK/SONYEMDV.h 3 | 4 | Copyright (C) 2004 Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifdef SONYEMDV_H 18 | #error "header already included" 19 | #else 20 | #define SONYEMDV_H 21 | #endif 22 | 23 | extern void ExtnDisk_Access(CPTR p); 24 | extern void ExtnSony_Access(CPTR p); 25 | 26 | extern void Sony_SetQuitOnEject(void); 27 | 28 | extern void Sony_EjectAllDisks(void); 29 | extern void Sony_Reset(void); 30 | 31 | extern void Sony_Update(void); 32 | -------------------------------------------------------------------------------- /src/HW/KBRD/KBRDEMDV.h: -------------------------------------------------------------------------------- 1 | /* 2 | HW/KBRD/KBRDEMDV.h 3 | 4 | Copyright (C) 2003 Philip Cummins, Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifdef KBRDEMDV_H 18 | #error "header already included" 19 | #else 20 | #define KBRDEMDV_H 21 | #endif 22 | 23 | 24 | extern void Kybd_DataLineChngNtfy(void); 25 | extern void DoKybd_ReceiveEndCommand(void); 26 | extern void DoKybd_ReceiveCommand(void); 27 | extern void KeyBoard_Update(void); 28 | -------------------------------------------------------------------------------- /src/HW/M68K/DISAM68K.h: -------------------------------------------------------------------------------- 1 | /* 2 | DISAM68K.h 3 | 4 | Copyright (C) 2010 Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | /* 18 | DISAssemble Motorola 68K instructions. 19 | */ 20 | 21 | #ifndef DIS1M68K_H 22 | #define DIS1M68K_H 23 | 24 | extern void DisasmOneOrSave(uint32_t pc); 25 | extern void m68k_WantDisasmContext(void); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /src/HW/M68K/FPCPEMDV.h: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/HW/M68K/MINEM68K.h: -------------------------------------------------------------------------------- 1 | /* 2 | MINEM68K.h 3 | 4 | Copyright (C) 2004 Bernd Schmidt, Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifndef MINEM68K_H 18 | #define MINEM68K_H 19 | 20 | extern void MINEM68K_Init( 21 | uint8_t *fIPL); 22 | #if SmallGlobals 23 | extern void MINEM68K_ReserveAlloc(void); 24 | #endif 25 | 26 | extern void m68k_IPLchangeNtfy(void); 27 | extern void DiskInsertedPsuedoException(CPTR newpc, uint32_t data); 28 | extern void m68k_reset(void); 29 | 30 | extern int32_t GetCyclesRemaining(void); 31 | extern void SetCyclesRemaining(int32_t n); 32 | 33 | extern void m68k_go_nCycles(uint32_t n); 34 | 35 | /* 36 | general purpose access of address space 37 | of emulated computer. (memory and 38 | memory mapped hardware.) 39 | */ 40 | 41 | extern uint8_t get_vm_byte(CPTR addr); 42 | extern uint16_t get_vm_word(CPTR addr); 43 | extern uint32_t get_vm_long(CPTR addr); 44 | 45 | extern void put_vm_byte(CPTR addr, uint8_t b); 46 | extern void put_vm_word(CPTR addr, uint16_t w); 47 | extern void put_vm_long(CPTR addr, uint32_t l); 48 | 49 | extern void SetHeadATTel(ATTep p); 50 | extern ATTep FindATTel(CPTR addr); 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /src/HW/MOUSE/MOUSEMDV.c: -------------------------------------------------------------------------------- 1 | /* 2 | MOUSEMDV.c 3 | 4 | Copyright (C) 2006 Philip Cummins, Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | /* 18 | MOUSe EMulated DeVice 19 | 20 | Emulation of the mouse in the Mac Plus. 21 | 22 | This code descended from "Mouse-MacOS.c" in Richard F. Bannister's 23 | Macintosh port of vMac, by Philip Cummins. 24 | */ 25 | 26 | #ifndef AllFiles 27 | #include "SYSDEPNS.h" 28 | #include "UI/MYOSGLUE.h" 29 | #include "UTIL/ENDIANAC.h" 30 | #include "EMCONFIG.h" 31 | #include "GLOBGLUE.h" 32 | #include "HW/SCC/SCCEMDEV.h" 33 | #include "HW/M68K/MINEM68K.h" 34 | #endif 35 | 36 | #include "HW/MOUSE/MOUSEMDV.h" 37 | 38 | void Mouse_Update(void) 39 | { 40 | #if HaveMasterEvtQLock 41 | if (0 != MasterEvtQLock) { 42 | --MasterEvtQLock; 43 | } 44 | #endif 45 | 46 | /* 47 | Check mouse position first. After mouse button or key event, 48 | can't process another mouse position until following tick, 49 | otherwise button or key will be in wrong place. 50 | */ 51 | 52 | /* 53 | if start doing this too soon after boot, 54 | will mess up memory check 55 | */ 56 | if (Mouse_Enabled()) { 57 | EvtQEl *p; 58 | 59 | if ( 60 | #if HaveMasterEvtQLock 61 | (0 == MasterEvtQLock) && 62 | #endif 63 | (nullpr != (p = EvtQOutP()))) 64 | { 65 | #if EmClassicKbrd 66 | #if EnableMouseMotion 67 | if (EvtQElKindMouseDelta == p->kind) { 68 | 69 | if ((p->u.pos.h != 0) || (p->u.pos.v != 0)) { 70 | put_ram_word(0x0828, 71 | get_ram_word(0x0828) + p->u.pos.v); 72 | put_ram_word(0x082A, 73 | get_ram_word(0x082A) + p->u.pos.h); 74 | put_ram_byte(0x08CE, get_ram_byte(0x08CF)); 75 | /* Tell MacOS to redraw the Mouse */ 76 | } 77 | EvtQOutDone(); 78 | } else 79 | #endif 80 | #endif 81 | if (EvtQElKindMousePos == p->kind) { 82 | uint32_t NewMouse = (p->u.pos.v << 16) | p->u.pos.h; 83 | 84 | if (get_ram_long(0x0828) != NewMouse) { 85 | put_ram_long(0x0828, NewMouse); 86 | /* Set Mouse Position */ 87 | put_ram_long(0x082C, NewMouse); 88 | #if EmClassicKbrd 89 | put_ram_byte(0x08CE, get_ram_byte(0x08CF)); 90 | /* Tell MacOS to redraw the Mouse */ 91 | #else 92 | put_ram_long(0x0830, NewMouse); 93 | put_ram_byte(0x08CE, 0xFF); 94 | /* Tell MacOS to redraw the Mouse */ 95 | #endif 96 | } 97 | EvtQOutDone(); 98 | } 99 | } 100 | } 101 | 102 | #if EmClassicKbrd 103 | { 104 | EvtQEl *p; 105 | 106 | if ( 107 | #if HaveMasterEvtQLock 108 | (0 == MasterEvtQLock) && 109 | #endif 110 | (nullpr != (p = EvtQOutP()))) 111 | { 112 | if (EvtQElKindMouseButton == p->kind) { 113 | MouseBtnUp = p->u.press.down ? 0 : 1; 114 | EvtQOutDone(); 115 | MasterEvtQLock = 4; 116 | } 117 | } 118 | } 119 | #endif 120 | } 121 | 122 | void Mouse_EndTickNotify(void) 123 | { 124 | if (Mouse_Enabled()) { 125 | /* tell platform specific code where the mouse went */ 126 | CurMouseV = get_ram_word(0x082C); 127 | CurMouseH = get_ram_word(0x082E); 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /src/HW/MOUSE/MOUSEMDV.h: -------------------------------------------------------------------------------- 1 | /* 2 | HW/MOUSE/MOUSEMDV.h 3 | 4 | Copyright (C) 2003 Philip Cummins, Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifdef MOUSEMDV_H 18 | #error "header already included" 19 | #else 20 | #define MOUSEMDV_H 21 | #endif 22 | 23 | extern void Mouse_Update(void); 24 | extern void Mouse_EndTickNotify(void); 25 | -------------------------------------------------------------------------------- /src/HW/POWERMAN/PMUEMDEV.h: -------------------------------------------------------------------------------- 1 | /* 2 | PMUEMDEV.h 3 | 4 | Copyright (C) 2008 Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifdef PMUEMDEV_H 18 | #error "header already included" 19 | #else 20 | #define PMUEMDEV_H 21 | #endif 22 | 23 | extern void PmuToReady_ChangeNtfy(void); 24 | extern void PMU_DoTask(void); 25 | -------------------------------------------------------------------------------- /src/HW/RAM/RAMADDR.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* map of address space */ 4 | 5 | #define kRAM_Base 0x00000000 /* when overlay off */ 6 | #if (CurEmMd == kEmMd_PB100) 7 | #define kRAM_ln2Spc 23 8 | #elif (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx) 9 | #define kRAM_ln2Spc 23 10 | #else 11 | #define kRAM_ln2Spc 22 12 | #endif 13 | 14 | #if IncludeVidMem 15 | #if CurEmMd == kEmMd_PB100 16 | #define kVidMem_Base 0x00FA0000 17 | #define kVidMem_ln2Spc 16 18 | #else 19 | #define kVidMem_Base 0x00540000 20 | #define kVidMem_ln2Spc 18 21 | #endif 22 | #endif 23 | 24 | #if CurEmMd == kEmMd_PB100 25 | #define kSCSI_Block_Base 0x00F90000 26 | #define kSCSI_ln2Spc 16 27 | #else 28 | #define kSCSI_Block_Base 0x00580000 29 | #define kSCSI_ln2Spc 19 30 | #endif 31 | 32 | #define kRAM_Overlay_Base 0x00600000 /* when overlay on */ 33 | #define kRAM_Overlay_Top 0x00800000 34 | 35 | #if CurEmMd == kEmMd_PB100 36 | #define kSCCRd_Block_Base 0x00FD0000 37 | #define kSCC_ln2Spc 16 38 | #else 39 | #define kSCCRd_Block_Base 0x00800000 40 | #define kSCC_ln2Spc 22 41 | #endif 42 | 43 | #if CurEmMd != kEmMd_PB100 44 | #define kSCCWr_Block_Base 0x00A00000 45 | #define kSCCWr_Block_Top 0x00C00000 46 | #endif 47 | 48 | #if CurEmMd == kEmMd_PB100 49 | #define kIWM_Block_Base 0x00F60000 50 | #define kIWM_ln2Spc 16 51 | #else 52 | #define kIWM_Block_Base 0x00C00000 53 | #define kIWM_ln2Spc 21 54 | #endif 55 | 56 | #if CurEmMd == kEmMd_PB100 57 | #define kVIA1_Block_Base 0x00F70000 58 | #define kVIA1_ln2Spc 16 59 | #else 60 | #define kVIA1_Block_Base 0x00E80000 61 | #define kVIA1_ln2Spc 19 62 | #endif 63 | 64 | #if CurEmMd == kEmMd_PB100 65 | #define kASC_Block_Base 0x00FB0000 66 | #define kASC_ln2Spc 16 67 | #endif 68 | #define kASC_Mask 0x00000FFF 69 | 70 | 71 | /* implementation of read/write for everything but RAM and ROM */ 72 | 73 | #define kSCC_Mask 0x03 74 | 75 | #define kVIA1_Mask 0x00000F 76 | #if EmVIA2 77 | #define kVIA2_Mask 0x00000F 78 | #endif 79 | 80 | #define kIWM_Mask 0x00000F /* Allocated Memory Bandwidth for IWM */ 81 | 82 | #if CurEmMd <= kEmMd_512Ke 83 | #define ROM_CmpZeroMask 0 84 | #elif CurEmMd <= kEmMd_Plus 85 | #if kROM_Size > 0x00020000 86 | #define ROM_CmpZeroMask 0 /* For hacks like Mac ROM-inator */ 87 | #else 88 | #define ROM_CmpZeroMask 0x00020000 89 | #endif 90 | #elif CurEmMd <= kEmMd_PB100 91 | #define ROM_CmpZeroMask 0 92 | #elif CurEmMd <= kEmMd_IIx 93 | #define ROM_CmpZeroMask 0 94 | #else 95 | #error "ROM_CmpZeroMask not defined" 96 | #endif 97 | 98 | #define kROM_cmpmask (0x00F00000 | ROM_CmpZeroMask) 99 | 100 | #if CurEmMd <= kEmMd_512Ke 101 | #define Overlay_ROM_CmpZeroMask 0x00100000 102 | #elif CurEmMd <= kEmMd_Plus 103 | #define Overlay_ROM_CmpZeroMask 0x00020000 104 | #elif CurEmMd <= kEmMd_Classic 105 | #define Overlay_ROM_CmpZeroMask 0x00300000 106 | #elif CurEmMd <= kEmMd_PB100 107 | #define Overlay_ROM_CmpZeroMask 0 108 | #elif CurEmMd <= kEmMd_IIx 109 | #define Overlay_ROM_CmpZeroMask 0 110 | #else 111 | #error "Overlay_ROM_CmpZeroMask not defined" 112 | #endif 113 | -------------------------------------------------------------------------------- /src/HW/ROM/ROMEMDEV.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "GLOBGLUE.h" 3 | #include "HW/ROM/ROMEMDEV.h" 4 | #include "UTIL/ENDIANAC.h" 5 | 6 | uint8_t * ROM = nullpr; 7 | bool ROM_loaded = false; 8 | 9 | uint32_t Calc_Checksum(uint8_t *rom, uint32_t len) 10 | { 11 | uint32_t i; 12 | uint32_t CheckSum = 0; 13 | uint8_t * p = 4 + rom; 14 | 15 | for (i = (len - 4) >> 1; --i >= 0; ) { 16 | CheckSum += do_get_mem_word(p); 17 | p += 2; 18 | } 19 | 20 | return CheckSum; 21 | } 22 | 23 | bool ROM_IsValid(void) 24 | { 25 | /*if(CheckRomCheckSum) { 26 | uint32_t CheckSum = Calc_Checksum(); 27 | 28 | if (CheckSum != do_get_mem_long(ROM)) { 29 | // Check against internal checksum 30 | WarnMsgCorruptedROM(); 31 | return mnvm_miscErr; 32 | } else if (!( 33 | CheckSum == kRomCheckSum1 || 34 | CheckSum == kRomCheckSum2 || 35 | CheckSum == kRomCheckSum3 36 | )) { 37 | // Unsupported ROM 38 | WarnMsgUnsupportedROM(); 39 | return mnvm_miscErr; 40 | } 41 | }*/ 42 | 43 | ROM_loaded = true; 44 | SpeedStopped = false; 45 | 46 | return true; 47 | } 48 | 49 | // Loop for when there's nothing to do but tell the user they're missing a ROM 50 | // TODO: Hijack this for config mode? 51 | bool WaitForRom(void) 52 | { 53 | return true; 54 | } 55 | -------------------------------------------------------------------------------- /src/HW/ROM/ROMEMDEV.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | extern uint8_t * ROM; 5 | extern bool ROM_loaded; 6 | 7 | uint32_t Calc_Checksum(uint8_t *rom, uint32_t len); 8 | bool ROM_IsValid(void); 9 | bool WaitForRom(void); 10 | -------------------------------------------------------------------------------- /src/HW/RTC/RTCEMDEV.h: -------------------------------------------------------------------------------- 1 | /* 2 | HW/RTC/RTCEMDEV.h 3 | 4 | Copyright (C) 2003 Philip Cummins, Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifndef RTCEMDEV_H 18 | #define RTCEMDEV_H 19 | 20 | extern bool RTC_Init(void); 21 | extern void RTC_Interrupt(void); 22 | 23 | extern void RTCunEnabled_ChangeNtfy(void); 24 | extern void RTCclock_ChangeNtfy(void); 25 | extern void RTCdataLine_ChangeNtfy(void); 26 | 27 | #endif -------------------------------------------------------------------------------- /src/HW/SCC/SCCEMDEV.h: -------------------------------------------------------------------------------- 1 | /* 2 | HW/SCC/SCCEMDEV.h 3 | 4 | Copyright (C) 2004 Philip Cummins, Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifndef SCCEMDEV_H 18 | #define SCCEMDEV_H 19 | 20 | extern void SCC_Reset(void); 21 | 22 | extern uint32_t SCC_Access(uint32_t Data, bool WriteMem, CPTR addr); 23 | 24 | extern bool SCC_InterruptsEnabled(void); 25 | 26 | #if EmLocalTalk 27 | extern void LocalTalkTick(void); 28 | extern int InitLocalTalk(void); 29 | #endif 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/HW/SCREEN/SCRNEMDV.h: -------------------------------------------------------------------------------- 1 | /* 2 | HW/SCREEN/SCRNEMDV.h 3 | 4 | Copyright (C) 2006 Philip Cummins, Richard F. Bannister, 5 | Paul C. Pratt 6 | 7 | You can redistribute this file and/or modify it under the terms 8 | of version 2 of the GNU General Public License as published by 9 | the Free Software Foundation. You should have received a copy 10 | of the license along with this file; see the file COPYING. 11 | 12 | This file is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | license for more details. 16 | */ 17 | 18 | #ifndef SCRNEMDV_H 19 | #define SCRNEMDV_H 20 | 21 | bool Screen_LoadCfg(void); 22 | bool Screen_Init(void); 23 | void Screen_EndTickNotify(void); 24 | 25 | extern uint16_t vMacScreenHeight; 26 | extern uint16_t vMacScreenWidth; 27 | extern uint16_t vMacScreenDepth; 28 | extern uint32_t vMacScreenNumPixels; 29 | extern uint32_t vMacScreenNumBits; 30 | extern uint32_t vMacScreenNumBytes; 31 | extern uint32_t vMacScreenBitWidth; 32 | extern uint32_t vMacScreenByteWidth; 33 | extern uint32_t vMacScreenMonoNumBytes; 34 | extern uint32_t vMacScreenMonoByteWidth; 35 | extern bool UseLargeScreenHack; 36 | extern char *ScreenColorBlack; 37 | extern char *ScreenColorWhite; 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /src/HW/SCSI/SCSIEMDV.h: -------------------------------------------------------------------------------- 1 | /* 2 | HW/SCSI/SCSIEMDV.h 3 | 4 | Copyright (C) 2004 Philip Cummins, Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifndef SCSIEMDV_H 18 | #define SCSIEMDV_H 19 | 20 | extern void SCSI_Reset(void); 21 | 22 | extern uint32_t SCSI_Access(uint32_t Data, bool WriteMem, CPTR addr); 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /src/HW/SOUND/ASCEMDEV.h: -------------------------------------------------------------------------------- 1 | /* 2 | HW/SOUND/ASCEMDEV.h 3 | 4 | Copyright (C) 2008 Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifndef ASCEMDEV_H 18 | #define ASCEMDEV_H 19 | 20 | extern uint32_t ASC_Access(uint32_t Data, bool WriteMem, CPTR addr); 21 | extern void ASC_SubTick(int SubTick); 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /src/HW/SOUND/SNDEMDEV.h: -------------------------------------------------------------------------------- 1 | /* 2 | HW/SOUND/SNDEMDEV.h 3 | 4 | Copyright (C) 2003 Philip Cummins, Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifdef SNDEMDEV_H 18 | #error "header already included" 19 | #else 20 | #define SNDEMDEV_H 21 | #endif 22 | 23 | #if SoundEnabled 24 | extern void MacSound_SubTick(int SubTick); 25 | #endif 26 | -------------------------------------------------------------------------------- /src/HW/VIA/VIA2EMDV.h: -------------------------------------------------------------------------------- 1 | /* 2 | HW/VIA/VIA2EMDV.h 3 | 4 | Copyright (C) 2004 Philip Cummins, Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifndef VIA2EMDV_H 18 | #define VIA2EMDV_H 19 | 20 | extern void VIA2_Zap(void); 21 | extern void VIA2_Reset(void); 22 | 23 | extern uint32_t VIA2_Access(uint32_t Data, bool WriteMem, CPTR addr); 24 | 25 | extern void VIA2_ExtraTimeBegin(void); 26 | extern void VIA2_ExtraTimeEnd(void); 27 | #ifdef VIA2_iCA1_PulseNtfy 28 | extern void VIA2_iCA1_PulseNtfy(void); 29 | #endif 30 | #ifdef VIA2_iCA2_PulseNtfy 31 | extern void VIA2_iCA2_PulseNtfy(void); 32 | #endif 33 | #ifdef VIA2_iCB1_PulseNtfy 34 | extern void VIA2_iCB1_PulseNtfy(void); 35 | #endif 36 | #ifdef VIA2_iCB2_PulseNtfy 37 | extern void VIA2_iCB2_PulseNtfy(void); 38 | #endif 39 | extern void VIA2_DoTimer1Check(void); 40 | extern void VIA2_DoTimer2Check(void); 41 | 42 | extern uint16_t VIA2_GetT1InvertTime(void); 43 | 44 | extern void VIA2_ShiftInData(uint8_t v); 45 | extern uint8_t VIA2_ShiftOutData(void); 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /src/HW/VIA/VIAEMDEV.h: -------------------------------------------------------------------------------- 1 | /* 2 | HW/VIA/VIAEMDEV.h 3 | 4 | Copyright (C) 2004 Philip Cummins, Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifndef VIAEMDEV_H 18 | #define VIAEMDEV_H 19 | #include 20 | 21 | bool VIA1_Zap(void); 22 | void VIA1_Reset(void); 23 | 24 | uint32_t VIA1_Access(uint32_t Data, bool WriteMem, uint32_t addr); 25 | 26 | void VIA1_ExtraTimeBegin(void); 27 | void VIA1_ExtraTimeEnd(void); 28 | void VIA1_iCA1_PulseNtfy(void); 29 | void VIA1_iCA2_PulseNtfy(void); 30 | void VIA1_iCB1_PulseNtfy(void); 31 | void VIA1_iCB2_PulseNtfy(void); 32 | void VIA1_DoTimer1Check(void); 33 | void VIA1_DoTimer2Check(void); 34 | 35 | uint16_t VIA1_GetT1InvertTime(void); 36 | 37 | void VIA1_ShiftInData(uint8_t v); 38 | uint8_t VIA1_ShiftOutData(void); 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /src/HW/VIDCARD/VIDEMDEV.h: -------------------------------------------------------------------------------- 1 | /* 2 | VIDEMDEV.h 3 | 4 | Copyright (C) 2008 Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifndef VIDEMDEV_H 18 | #define VIDEMDEV_H 19 | 20 | extern bool Vid_Init(void); 21 | extern uint16_t Vid_Reset(void); 22 | extern void Vid_Update(void); 23 | 24 | extern void ExtnVideo_Access(CPTR p); 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /src/PATCHES/HPMCHACK.h: -------------------------------------------------------------------------------- 1 | /* 2 | HPMCHACK.c 3 | 4 | Copyright (C) 2016 Steve Chamberlin, Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | /* 18 | HaPpy MaCintosh Hack 19 | 20 | Patch the ROM for alternatives to the 21 | Happy Macintosh icon displayed on boot 22 | when a disk is inserted. 23 | 24 | Bitmaps from http://www.bigmessowires.com/mac-rom-inator/ 25 | */ 26 | 27 | #include 28 | #include "SYSDEPNS.h" 29 | #include "UI/COMOSGLU.h" 30 | 31 | // Enum of alternate icons 32 | typedef enum AHM_types { 33 | kAHM_aside, 34 | kAHM_cheese, 35 | kAHM_evil, 36 | kAHM_horror, 37 | kAHM_lady_mac, 38 | kAHM_moustache, 39 | kAHM_nerdy, 40 | kAHM_pirate, 41 | kAHM_sleepy, 42 | kAHM_sly, 43 | kAHM_sunglasses, 44 | kAHM_surprise, 45 | kAHM_tongue, 46 | kAHM_yuck, 47 | kAHM_zombie 48 | } AHM_t; 49 | 50 | // Bitmap includes 51 | #include "aside.xbm" 52 | #include "cheese.xbm" 53 | #include "evil.xbm" 54 | #include "horror.xbm" 55 | #include "lady.xbm" 56 | #include "moustache.xbm" 57 | #include "nerdy.xbm" 58 | #include "pirate.xbm" 59 | #include "sleepy.xbm" 60 | #include "sly.xbm" 61 | #include "sunglasses.xbm" 62 | #include "surprise.xbm" 63 | #include "tongue.xbm" 64 | #include "yuck.xbm" 65 | #include "zombie.xbm" 66 | 67 | // Lookup table 68 | unsigned char * HMAC_BITS[] = { 69 | HMAC_ASIDE_BITS, 70 | HMAC_CHEESE_BITS 71 | }; 72 | 73 | #if CurEmMd <= kEmMd_Twig43 74 | #define HappyMacBase 0xA34 75 | #elif CurEmMd <= kEmMd_Twiggy 76 | #define HappyMacBase 0x8F4 77 | #elif CurEmMd <= kEmMd_128K 78 | #define HappyMacBase 0x8A0 79 | #elif CurEmMd <= kEmMd_Plus 80 | #define HappyMacBase 0xFD2 81 | #elif CurEmMd <= kEmMd_Classic 82 | #define HappyMacBase 0x125C 83 | #elif CurEmMd <= kEmMd_PB100 84 | #define HappyMacBase 0x2BB0 - 0x18 85 | #elif (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx) 86 | #define HappyMacBase 0x1948 - 0x18 87 | #endif 88 | 89 | static void PatchHappyMac(AHM_t ahm) 90 | { 91 | uint8_t *dst = ROM + HappyMacBase + 0x18; 92 | uint8_t *src = HMAC_BITS[ahm]; 93 | memcpy(dst, src, 20); 94 | } 95 | -------------------------------------------------------------------------------- /src/PATCHES/ROMEMDEV.c: -------------------------------------------------------------------------------- 1 | /* 2 | ROMEMDEV.c 3 | 4 | Copyright (C) 2007 Philip Cummins, Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | /* 18 | Read Only Memory EMulated DEVice 19 | 20 | Checks the header of the loaded ROM image, and then patches 21 | the ROM image. 22 | 23 | This code descended from "ROM.c" in vMac by Philip Cummins. 24 | 25 | Support for "Twiggy" Mac by Mathew Hybler. 26 | */ 27 | 28 | #include "EMCONFIG.h" 29 | #include "SYSDEPNS.h" 30 | #include "GLOBGLUE.h" 31 | #include "UI/MYOSGLUE.h" 32 | #include "UTIL/ENDIANAC.h" 33 | #include "PATCHES/ROMEMDEV.h" 34 | #include "PATCHES/SCRNHACK.h" 35 | #include "PATCHES/SONYDRV.h" 36 | #ifdef CurAltHappyMac 37 | #include "HPMCHACK.h" 38 | #endif 39 | 40 | #ifdef ln2mtb 41 | static void ROMscrambleForMTB(void) 42 | { 43 | int32_t j; 44 | uint8_t * p = ROM; 45 | uint8_t * p2 = ROM + (1 << ln2mtb); 46 | 47 | for (j = kROM_Size / (1 << ln2mtb) / 2; --j >= 0; ) { 48 | int32_t i; 49 | 50 | for (i = (1 << ln2mtb); --i >= 0; ) { 51 | uint8_t t0 = *p; 52 | uint8_t t1 = *p2; 53 | *p++ = t1; 54 | *p2++ = t0; 55 | } 56 | 57 | p += (1 << ln2mtb); 58 | p2 += (1 << ln2mtb); 59 | } 60 | } 61 | #endif 62 | 63 | bool ROM_Init(void) 64 | { 65 | #if DisableRomCheck 66 | 67 | /* skip the rom checksum */ 68 | #if CurEmMd <= kEmMd_Twig43 69 | /* no checksum code */ 70 | #elif CurEmMd <= kEmMd_Twiggy 71 | do_put_mem_word(0x136 + ROM, 0x6004); 72 | #elif CurEmMd <= kEmMd_128K 73 | do_put_mem_word(0xE2 + ROM, 0x6004); 74 | #elif CurEmMd <= kEmMd_Plus 75 | do_put_mem_word(0xD7A + ROM, 0x6022); 76 | #elif CurEmMd <= kEmMd_Classic 77 | do_put_mem_word(0x1C68 + ROM, 0x6008); 78 | #elif (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx) 79 | do_put_mem_word(0x2AB0 + ROM, 0x6008); 80 | #endif 81 | 82 | #endif /* DisableRomCheck */ 83 | 84 | 85 | #if DisableRamTest 86 | 87 | #if CurEmMd <= kEmMd_128K 88 | #elif CurEmMd <= kEmMd_Plus 89 | do_put_mem_word(3752 + ROM, 0x4E71); 90 | /* shorten the ram check read */ 91 | do_put_mem_word(3728 + ROM, 0x4E71); 92 | /* shorten the ram check write */ 93 | #elif CurEmMd <= kEmMd_Classic 94 | do_put_mem_word(134 + ROM, 0x6002); 95 | do_put_mem_word(286 + ROM, 0x6002); 96 | #elif (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx) 97 | do_put_mem_word(0xEE + ROM, 0x6002); 98 | do_put_mem_word(0x1AA + ROM, 0x6002); 99 | #endif 100 | 101 | #endif /* DisableRamTest */ 102 | 103 | #ifdef CurAltHappyMac 104 | PatchHappyMac(); 105 | #endif 106 | 107 | /* do_put_mem_word(862 + ROM, 0x4E71); */ /* shorten set memory */ 108 | 109 | Sony_Install(); 110 | //ScreenHack_Install(); in above fcn temporarily 111 | 112 | #ifdef ln2mtb 113 | ROMscrambleForMTB(); 114 | #endif 115 | 116 | return true; 117 | } 118 | -------------------------------------------------------------------------------- /src/PATCHES/ROMEMDEV.h: -------------------------------------------------------------------------------- 1 | /* 2 | PATCHES/ROMEMDEV.h 3 | 4 | Copyright (C) 2003 Philip Cummins, Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | #ifndef ROMEMDEV_H 18 | #define ROMEMDEV_H 19 | 20 | 21 | #ifndef DisableRomCheck 22 | #define DisableRomCheck 1 23 | #endif 24 | #ifndef DisableRamTest 25 | #define DisableRamTest 1 26 | #endif 27 | 28 | #define kVidMem_Base 0x00540000 29 | 30 | 31 | extern bool ROM_Init(void); 32 | 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/PATCHES/SCRNHACK.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | void ScreenHack_Install(uint8_t **pto); 4 | -------------------------------------------------------------------------------- /src/PATCHES/SONYDRV.c: -------------------------------------------------------------------------------- 1 | /* 2 | Replacement for .Sony driver 3 | 68k machine code, compiled from mydriver.a 4 | Included in the resource file for WIN32 builds 5 | */ 6 | #include 7 | #include 8 | #include "incbin/incbin.h" 9 | #ifdef _MSC_VER 10 | #include 11 | #endif 12 | 13 | #include "EMCONFIG.h" 14 | #include "GLOBGLUE.h" 15 | #include "UTIL/ENDIANAC.h" 16 | #include "UI/MYOSGLUE.h" 17 | #include "PATCHES/SONYDRV.h" 18 | #include "PATCHES/ROMEMDEV.h" 19 | //#include "PATCHES/SCRNHACK.h" 20 | 21 | // temporary screenhack stuff 22 | #include "HW/SCREEN/SCRNEMDV.h" 23 | 24 | // Include binaries 25 | #ifndef _MSC_VER 26 | INCBIN(SonyDriver, "rsrc/SONYDRV.bin"); 27 | INCBIN(SonyIcon, "rsrc/SONYICO.bin"); 28 | #endif 29 | 30 | void Sony_LoadDriver(uint8_t *pto, int *size) 31 | { 32 | #ifdef _MSC_VER 33 | HRSRC hDrvInfo = FindResource(NULL, "SONY_DRV", RT_RCDATA); 34 | HGLOBAL hDrv = LoadResource(NULL, hDrvInfo); 35 | DWORD sDrv = SizeofResource(NULL, hDrvInfo); 36 | void *pDrv = LockResource(hDrv); 37 | memcpy(pto, pDrv, sDrv); 38 | *size = sDrv; 39 | #else 40 | memcpy(pto, gSonyDriverData, gSonyDriverSize); 41 | *size = gSonyDriverSize; 42 | #endif 43 | } 44 | 45 | void Sony_LoadIcon(uint8_t *pto, int *icoSize) 46 | { 47 | disk_icon_addr = (pto - ROM) + kROM_Base; 48 | #ifdef _MSC_VER 49 | HRSRC hIcoInfo = FindResource(NULL, "SONY_ICO", RT_RCDATA); 50 | HGLOBAL hIco = LoadResource(NULL, hIcoInfo); 51 | DWORD sIco = SizeofResource(NULL, hIcoInfo); 52 | void *pIco = LockResource(hIco); 53 | memcpy(pto, pIco, sIco); 54 | pto += sizeof(sIco); 55 | #else 56 | memcpy(pto, gSonyIconData, gSonyIconSize); 57 | *icoSize = gSonyIconSize; 58 | #endif 59 | } 60 | 61 | void Sony_TwiggyPatch(uint8_t *pto) 62 | { 63 | if (CurEmMd == kEmMd_Twiggy || CurEmMd == kEmMd_Twig43) { 64 | /* 'Disk' instead of 'Sony' */ 65 | do_put_mem_long(pto + 0x14, 0x4469736B); 66 | if (CurEmMd == kEmMd_Twig43) { 67 | do_put_mem_word(pto + 0xEA, 0x0C8A); 68 | } else { 69 | do_put_mem_word(pto + 0xEA, 0x0B74); 70 | } 71 | } 72 | } 73 | 74 | void Sony_CallPatch(uint8_t *pto, int drvSize) 75 | { 76 | do_put_mem_word(pto, kcom_callcheck); 77 | do_put_mem_word(pto+2, kExtnSony); 78 | do_put_mem_long(pto+4, kExtn_Block_Base); /* pokeaddr */ 79 | } 80 | 81 | void Sony_Install(void) 82 | { 83 | uint8_t * pto = Sony_DriverBase + ROM; 84 | int drvSize, icoSize; 85 | if (!UseSonyPatch) { return; } 86 | Sony_LoadDriver(pto, &drvSize); 87 | Sony_TwiggyPatch(pto); 88 | 89 | pto += drvSize; 90 | Sony_CallPatch(pto, drvSize); 91 | pto += 8; 92 | 93 | Sony_LoadIcon(pto, &icoSize); 94 | pto += icoSize; 95 | 96 | // currently broken 97 | //ScreenHack_Install(&pto); 98 | } -------------------------------------------------------------------------------- /src/PATCHES/SONYDRV.h: -------------------------------------------------------------------------------- 1 | #define UseSonyPatch \ 2 | ((CurEmMd <= kEmMd_Classic) || (CurEmMd == kEmMd_II) \ 3 | || (CurEmMd == kEmMd_IIx)) 4 | 5 | #if CurEmMd <= kEmMd_Twig43 6 | #define Sony_DriverBase 0x1836 7 | #elif CurEmMd <= kEmMd_Twiggy 8 | #define Sony_DriverBase 0x16E4 9 | #elif CurEmMd <= kEmMd_128K 10 | #define Sony_DriverBase 0x1690 11 | #elif CurEmMd <= kEmMd_Plus 12 | #define Sony_DriverBase 0x17D30 13 | #elif CurEmMd <= kEmMd_Classic 14 | #define Sony_DriverBase 0x34680 15 | #elif (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx) 16 | #define Sony_DriverBase 0x2D72C 17 | #endif 18 | 19 | void Sony_Install(); -------------------------------------------------------------------------------- /src/PROGMAIN.h: -------------------------------------------------------------------------------- 1 | /* 2 | PROGMAIN.h 3 | 4 | Copyright (C) 2009 Philip Cummins, Richard F. Bannister, 5 | Paul C. Pratt 6 | 7 | You can redistribute this file and/or modify it under the terms 8 | of version 2 of the GNU General Public License as published by 9 | the Free Software Foundation. You should have received a copy 10 | of the license along with this file; see the file COPYING. 11 | 12 | This file is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | license for more details. 16 | */ 17 | 18 | #ifndef PROGMAIN_H 19 | #define PROGMAIN_H 20 | 21 | extern void EmulationReserveAlloc(void); 22 | extern void ProgramMain(void); 23 | 24 | #endif -------------------------------------------------------------------------------- /src/SYSDEPNS.h: -------------------------------------------------------------------------------- 1 | /* 2 | SYSDEPNS.h 3 | 4 | Copyright (C) 2006 Bernd Schmidt, Philip Cummins, Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | /* 18 | SYStem DEPeNdencies. 19 | */ 20 | 21 | #ifndef SYSDEPNS_H 22 | #define SYSDEPNS_H 23 | 24 | #include 25 | #include 26 | #include "CNFGGLOB.h" 27 | 28 | /* 29 | Largest efficiently supported 30 | representation types. uimr should be 31 | large enough to hold number of elements 32 | of any array we will deal with. 33 | */ 34 | typedef uint32_t uimr; 35 | typedef int32_t simr; 36 | 37 | #define nullpr ((void *) 0) 38 | 39 | #define anyp uint8_t * 40 | 41 | /* pascal string, single byte characters */ 42 | #define ps3p uint8_t * 43 | 44 | #ifndef reg_call 45 | #define reg_call 46 | #endif 47 | 48 | #ifndef osglu_call 49 | #define osglu_call 50 | #endif 51 | 52 | #define GLOBALOSGLUFUNC osglu_call 53 | #define EXPORTOSGLUFUNC extern osglu_call 54 | #define GLOBALOSGLUPROC osglu_call void 55 | #define EXPORTOSGLUPROC extern osglu_call void 56 | /* 57 | For functions in operating system glue that 58 | are called by rest of program. 59 | */ 60 | 61 | /* 62 | best type for uint16_t that is probably in register 63 | (when compiler messes up otherwise) 64 | */ 65 | 66 | #ifndef BigEndianUnaligned 67 | #define BigEndianUnaligned 0 68 | #endif 69 | 70 | #ifndef LittleEndianUnaligned 71 | #define LittleEndianUnaligned 0 72 | #endif 73 | 74 | #ifndef align_8 75 | #define align_8 76 | #endif 77 | 78 | #ifndef cond_rare 79 | #define cond_rare(x) (x) 80 | #endif 81 | 82 | #ifndef Have_ASR 83 | #define Have_ASR 0 84 | #endif 85 | 86 | #ifndef HaveSwapUi5r 87 | #define HaveSwapUi5r 0 88 | #endif 89 | 90 | #endif -------------------------------------------------------------------------------- /src/UI/CONTROLM.c: -------------------------------------------------------------------------------- 1 | /* 2 | UI/CONTROLM.c 3 | 4 | Copyright (C) 2007 Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | /* 18 | CONTROL Mode 19 | */ 20 | 21 | #include "SYSDEPNS.h" 22 | #include "CNFGGLOB.h" 23 | #include "CNFGRAPI.h" 24 | #include "STRCONST.h" 25 | #include "ERRCODES.h" 26 | 27 | #include "LANG/INTLCHAR.h" 28 | #include "UI/COMOSGLU.h" 29 | #include "UI/MYOSGLUE.h" 30 | #include "UTIL/ENDIANAC.h" 31 | 32 | #include "UI/CONTROLM.h" 33 | #include 34 | #include "UI/SDL2/OSGLUSD2.h" 35 | 36 | /* Constants and globals */ 37 | 38 | uimr SpecialModes = 0; 39 | bool NeedWholeScreenDraw = false; 40 | uint8_t * CntrlDisplayBuff = nullpr; 41 | 42 | #define ControlBoxh0 0 43 | #define ControlBoxw 62 44 | #define ControlBoxv0 0 45 | 46 | #define hLimit (ControlBoxh0 + ControlBoxw - 1) 47 | #define hStart (ControlBoxh0 + 1) 48 | 49 | typedef void (*SpclModeBody) (void); 50 | 51 | #define Keyboard_UpdateKeyMap1 Keyboard_UpdateKeyMap 52 | #define DisconnectKeyCodes1 DisconnectKeyCodes 53 | 54 | void MacMsgOverride(char *title, char *msg) 55 | { 56 | SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, title, msg, main_wind); 57 | } 58 | 59 | static void WarnMsgCorruptedROM(void) 60 | { 61 | MacMsgOverride(kStrCorruptedROMTitle, kStrCorruptedROMMessage); 62 | } 63 | 64 | static void WarnMsgUnsupportedROM(void) 65 | { 66 | MacMsgOverride(kStrUnsupportedROMTitle, 67 | kStrUnsupportedROMMessage); 68 | } 69 | 70 | -------------------------------------------------------------------------------- /src/UI/CONTROLM.h: -------------------------------------------------------------------------------- 1 | /* 2 | CONTROL Mode 3 | */ 4 | 5 | #ifndef CONTROLM_H 6 | #define CONTROLM_H 7 | 8 | #include "SYSDEPNS.h" 9 | #include "ERRCODES.h" 10 | 11 | /* Globals */ 12 | 13 | extern uimr SpecialModes; 14 | extern bool NeedWholeScreenDraw; 15 | extern uint8_t * CntrlDisplayBuff; 16 | 17 | /* Public Functions */ 18 | void MacMsgOverride(char *title, char *msg); 19 | 20 | #endif // CONTROLM_H 21 | -------------------------------------------------------------------------------- /src/UI/SDL2/DBGLOG.c: -------------------------------------------------------------------------------- 1 | /* --- sending debugging info to file --- */ 2 | 3 | #include 4 | #include 5 | #include 6 | #include "SYSDEPNS.h" 7 | #include "UI/MYOSGLUE.h" 8 | 9 | #if dbglog_HAVE 10 | 11 | #ifndef dbglog_ToStdErr 12 | #define dbglog_ToStdErr 0 13 | #endif 14 | #ifndef dbglog_ToSDL_Log 15 | #define dbglog_ToSDL_Log 0 16 | #endif 17 | 18 | #if ! dbglog_ToStdErr 19 | static FILE *dbglog_File = NULL; 20 | #endif 21 | 22 | static bool dbglog_open0(void) 23 | { 24 | #if dbglog_ToStdErr || dbglog_ToSDL_Log 25 | return true; 26 | #else 27 | if (NULL == app_parent) { 28 | dbglog_File = fopen("dbglog.txt", "w"); 29 | } else { 30 | char *t; 31 | 32 | if (mnvm_noErr == ChildPath(app_parent, "dbglog.txt", &t)) { 33 | dbglog_File = fopen(t, "w"); 34 | free(t); 35 | } 36 | } 37 | 38 | return (NULL != dbglog_File); 39 | #endif 40 | } 41 | 42 | static void dbglog_write0(char *s, uimr L) 43 | { 44 | #if dbglog_ToStdErr 45 | (void) fwrite(s, 1, L, stderr); 46 | #elif dbglog_ToSDL_Log 47 | char t[256 + 1]; 48 | 49 | if (L > 256) { 50 | L = 256; 51 | } 52 | (void) memcpy(t, s, L); 53 | t[L] = 1; 54 | 55 | SDL_Log("%s", t); 56 | #else 57 | if (dbglog_File != NULL) { 58 | (void) fwrite(s, 1, L, dbglog_File); 59 | } 60 | #endif 61 | } 62 | 63 | static void dbglog_close0(void) 64 | { 65 | #if ! dbglog_ToStdErr 66 | if (dbglog_File != NULL) { 67 | fclose(dbglog_File); 68 | dbglog_File = NULL; 69 | } 70 | #endif 71 | } 72 | 73 | #endif 74 | -------------------------------------------------------------------------------- /src/UI/SDL2/INTL.c: -------------------------------------------------------------------------------- 1 | 2 | /* --- control mode and internationalization --- */ 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include "CNFGRAPI.h" 9 | #include "SYSDEPNS.h" 10 | #include "UTIL/ENDIANAC.h" 11 | #include "UI/MYOSGLUE.h" 12 | #include "STRCONST.h" 13 | #include "LANG/INTLCHAR.h" 14 | 15 | #ifndef CanGetAppPath 16 | #define CanGetAppPath 1 17 | #endif 18 | 19 | static char *d_arg = NULL; 20 | static char *n_arg = NULL; 21 | 22 | #if CanGetAppPath 23 | static char *app_parent = NULL; 24 | static char *pref_dir = NULL; 25 | #endif 26 | 27 | #ifdef _WIN32 28 | #define PathSep '\\' 29 | #else 30 | #define PathSep '/' 31 | #endif 32 | 33 | MacErr_t ChildPath(char *x, char *y, char **r) 34 | { 35 | MacErr_t err = mnvm_miscErr; 36 | int nx = strlen(x); 37 | int ny = strlen(y); 38 | { 39 | if ((nx > 0) && (PathSep == x[nx - 1])) { 40 | --nx; 41 | } 42 | { 43 | int nr = nx + 1 + ny; 44 | char *p = malloc(nr + 1); 45 | if (p != NULL) { 46 | char *p2 = p; 47 | (void) memcpy(p2, x, nx); 48 | p2 += nx; 49 | *p2++ = PathSep; 50 | (void) memcpy(p2, y, ny); 51 | p2 += ny; 52 | *p2 = 0; 53 | *r = p; 54 | err = mnvm_noErr; 55 | } 56 | } 57 | } 58 | 59 | return err; 60 | } 61 | 62 | void MayFree(char *p) 63 | { 64 | if (NULL != p) { 65 | free(p); 66 | } 67 | } 68 | 69 | 70 | /* --- text translation --- */ 71 | 72 | void NativeStrFromCStr(char *r, char *s) 73 | { 74 | uint8_t ps[ClStrMaxLength]; 75 | int i; 76 | int L; 77 | 78 | ClStrFromSubstCStr(&L, ps, s); 79 | 80 | for (i = 0; i < L; ++i) { 81 | r[i] = Cell2PlainAsciiMap[ps[i]]; 82 | } 83 | 84 | r[L] = 0; 85 | } 86 | -------------------------------------------------------------------------------- /src/UI/SDL2/OSGLUSD2.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include "UI/MYOSGLUE.h" 7 | 8 | /* --- defines and macros and such --- */ 9 | 10 | // video defines 11 | #ifndef UseSDLscaling 12 | #define UseSDLscaling 0 13 | #endif 14 | 15 | #if 1 && ! UseSDLscaling 16 | #define MaxScale WindowScale 17 | #else 18 | #define MaxScale 1 19 | #endif 20 | 21 | #define CLUT_finalsz (256 * 8 * 4 * MaxScale) 22 | 23 | // sound defines 24 | #define kLn2SoundBuffers 4 /* kSoundBuffers must be a power of two */ 25 | #define kSoundBuffers (1 << kLn2SoundBuffers) 26 | #define kSoundBuffMask (kSoundBuffers - 1) 27 | 28 | #define DesiredMinFilledSoundBuffs 3 29 | /* 30 | if too big then sound lags behind emulation. 31 | if too small then sound will have pauses. 32 | */ 33 | 34 | #define kLnOneBuffLen 9 35 | #define kLnAllBuffLen (kLn2SoundBuffers + kLnOneBuffLen) 36 | #define kOneBuffLen (1UL << kLnOneBuffLen) 37 | #define kAllBuffLen (1UL << kLnAllBuffLen) 38 | #define kLnOneBuffSz (kLnOneBuffLen + kLn2SoundSampSz - 3) 39 | #define kLnAllBuffSz (kLnAllBuffLen + kLn2SoundSampSz - 3) 40 | #define kOneBuffSz (1UL << kLnOneBuffSz) 41 | #define kAllBuffSz (1UL << kLnAllBuffSz) 42 | #define kOneBuffMask (kOneBuffLen - 1) 43 | #define kAllBuffMask (kAllBuffLen - 1) 44 | #define dbhBufferSize (kAllBuffSz + kOneBuffSz) 45 | 46 | #define dbglog_SoundStuff (0 && dbglog_HAVE) 47 | #define dbglog_SoundBuffStats (0 && dbglog_HAVE) 48 | 49 | #ifndef UseRWops 50 | #define UseRWops 0 51 | #endif 52 | 53 | #if UseRWops 54 | #define FilePtr SDL_RWops * 55 | #define Seek SDL_RWseek 56 | #define SeekSet RW_SEEK_SET 57 | #define SeekCur RW_SEEK_CUR 58 | #define SeekEnd RW_SEEK_END 59 | #define FileRead(ptr, size, nmemb, stream) \ 60 | SDL_RWread(stream, ptr, size, nmemb) 61 | #define FileWrite(ptr, size, nmemb, stream) \ 62 | SDL_RWwrite(stream, ptr, size, nmemb) 63 | #define FileTell SDL_RWtell 64 | #define FileClose SDL_RWclose 65 | #define FileOpen SDL_RWFromFile 66 | #else 67 | #define FilePtr FILE * 68 | #define Seek fseek 69 | #define SeekSet SEEK_SET 70 | #define SeekCur SEEK_CUR 71 | #define SeekEnd SEEK_END 72 | #define FileRead fread 73 | #define FileWrite fwrite 74 | #define FileTell ftell 75 | #define FileClose fclose 76 | #define FileOpen fopen 77 | #define FileEof feof 78 | #endif 79 | 80 | 81 | 82 | /* --- globals --- */ 83 | 84 | #if MayFullScreen 85 | extern int hOffset; 86 | extern int vOffset; 87 | #endif 88 | extern bool UseFullScreen; 89 | extern bool UseMagnify; 90 | 91 | extern uint32_t TrueEmulatedTime; 92 | extern uint32_t LastTime; 93 | extern uint32_t NextIntTime; 94 | extern uint32_t NextFracTime; 95 | 96 | extern bool gBackgroundFlag; 97 | extern bool gTrueBackgroundFlag; 98 | extern bool CurSpeedStopped; 99 | 100 | extern SDL_Window *main_wind; 101 | extern SDL_Renderer *renderer; 102 | extern SDL_Texture *texture; 103 | extern SDL_PixelFormat *format; 104 | 105 | extern uint8_t * ScalingBuff; 106 | extern uint8_t * CLUT_final; 107 | 108 | extern bool HaveCursorHidden; 109 | extern bool WantCursorHidden; 110 | 111 | extern tpSoundSamp TheSoundBuffer; 112 | 113 | // Functions 114 | 115 | void DoKeyCode(SDL_Keysym *r, bool down); 116 | -------------------------------------------------------------------------------- /src/UI/SDL2/ROM.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "SYSDEPNS.h" 5 | #include "ERRCODES.h" 6 | #include "STRCONST.h" 7 | #include "UI/MYOSGLUE.h" 8 | #include "UI/COMOSGLU.h" 9 | #include "UI/CONTROLM.h" 10 | #include "UI/SDL2/OSGLUSD2.h" 11 | #include "HW/ROM/ROMEMDEV.h" 12 | 13 | /* --- ROM --- */ 14 | 15 | static char *rom_path = NULL; 16 | 17 | #if CanGetAppPath 18 | static MacErr_t LoadMacRomFromPrefDir(void) 19 | { 20 | MacErr_t err; 21 | char *t = NULL; 22 | char *t2 = NULL; 23 | 24 | if (NULL == pref_dir) { 25 | err = mnvm_fnfErr; 26 | } else 27 | if (mnvm_noErr != (err = 28 | ChildPath(pref_dir, "mnvm_rom", &t))) 29 | { 30 | /* fail */ 31 | } else 32 | if (mnvm_noErr != (err = 33 | ChildPath(t, RomFileName, &t2))) 34 | { 35 | /* fail */ 36 | } else 37 | { 38 | err = LoadMacRomFrom(t2); 39 | } 40 | 41 | MayFree(t2); 42 | MayFree(t); 43 | 44 | return err; 45 | } 46 | #endif 47 | 48 | #if CanGetAppPath 49 | static MacErr_t LoadMacRomFromAppPar(void) 50 | { 51 | MacErr_t err; 52 | char *d = (NULL == d_arg) ? app_parent : d_arg; 53 | char *t = NULL; 54 | 55 | if (NULL == d) { 56 | err = mnvm_fnfErr; 57 | } else 58 | if (mnvm_noErr != (err = 59 | ChildPath(d, RomFileName, &t))) 60 | { 61 | /* fail */ 62 | } else 63 | { 64 | err = LoadMacRomFrom(t); 65 | } 66 | 67 | MayFree(t); 68 | 69 | return err; 70 | } 71 | #endif 72 | 73 | bool LoadMacRom(void) 74 | { 75 | MacErr_t err; 76 | 77 | if ((NULL == rom_path) 78 | || (mnvm_fnfErr == (err = LoadMacRomFrom(rom_path)))) 79 | #if CanGetAppPath 80 | if (mnvm_fnfErr == (err = LoadMacRomFromAppPar())) 81 | if (mnvm_fnfErr == (err = LoadMacRomFromPrefDir())) 82 | #endif 83 | if (mnvm_fnfErr == (err = LoadMacRomFrom(RomFileName))) 84 | { 85 | } 86 | 87 | return true; /* keep launching Mini vMac, regardless */ 88 | } 89 | 90 | MacErr_t LoadMacRomFrom(char *path) 91 | { 92 | MacErr_t err; 93 | FilePtr ROM_File; 94 | int File_Size; 95 | 96 | ROM_File = FileOpen(path, "rb"); 97 | if (NULL == ROM_File) { 98 | err = mnvm_fnfErr; 99 | } else { 100 | File_Size = FileRead(ROM, 1, kROM_Size, ROM_File); 101 | if (File_Size != kROM_Size) { 102 | #ifdef FileEof 103 | if (FileEof(ROM_File)) 104 | #else 105 | if (File_Size > 0) 106 | #endif 107 | { 108 | MacMsgOverride(kStrShortROMTitle, 109 | kStrShortROMMessage); 110 | err = mnvm_eofErr; 111 | } else { 112 | MacMsgOverride(kStrNoReadROMTitle, 113 | kStrNoReadROMMessage); 114 | err = mnvm_miscErr; 115 | } 116 | } else { 117 | err = ROM_IsValid(); 118 | } 119 | FileClose(ROM_File); 120 | } 121 | 122 | return err; 123 | } 124 | 125 | -------------------------------------------------------------------------------- /src/UI/SDL2/TIMEDATE.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include "CNFGRAPI.h" 7 | #include "SYSDEPNS.h" 8 | #include "UTIL/ENDIANAC.h" 9 | #include "UI/MYOSGLUE.h" 10 | #include "STRCONST.h" 11 | 12 | /* --- time, date, location --- */ 13 | 14 | #define dbglog_TimeStuff (0 && dbglog_HAVE) 15 | 16 | uint32_t TrueEmulatedTime = 0; 17 | 18 | #define InvTimeDivPow 16 19 | #define InvTimeDiv (1 << InvTimeDivPow) 20 | #define InvTimeDivMask (InvTimeDiv - 1) 21 | #define InvTimeStep 1089590 /* 1000 / 60.14742 * InvTimeDiv */ 22 | 23 | uint32_t LastTime; 24 | uint32_t NextIntTime; 25 | uint32_t NextFracTime; 26 | 27 | void IncrNextTime(void) 28 | { 29 | NextFracTime += InvTimeStep; 30 | NextIntTime += (NextFracTime >> InvTimeDivPow); 31 | NextFracTime &= InvTimeDivMask; 32 | } 33 | 34 | void InitNextTime(void) 35 | { 36 | NextIntTime = LastTime; 37 | NextFracTime = 0; 38 | IncrNextTime(); 39 | } 40 | 41 | static uint32_t NewMacDateInSeconds; 42 | 43 | bool UpdateTrueEmulatedTime(void) 44 | { 45 | Uint32 LatestTime; 46 | int32_t TimeDiff; 47 | 48 | LatestTime = SDL_GetTicks(); 49 | if (LatestTime != LastTime) { 50 | 51 | NewMacDateInSeconds = LatestTime / 1000; 52 | /* no date and time api in SDL */ 53 | 54 | LastTime = LatestTime; 55 | TimeDiff = (LatestTime - NextIntTime); 56 | /* this should work even when time wraps */ 57 | if (TimeDiff >= 0) { 58 | if (TimeDiff > 256) { 59 | /* emulation interrupted, forget it */ 60 | ++TrueEmulatedTime; 61 | InitNextTime(); 62 | 63 | #if dbglog_TimeStuff 64 | dbglog_writelnNum("emulation interrupted", 65 | TrueEmulatedTime); 66 | #endif 67 | } else { 68 | do { 69 | ++TrueEmulatedTime; 70 | IncrNextTime(); 71 | TimeDiff = (LatestTime - NextIntTime); 72 | } while (TimeDiff >= 0); 73 | } 74 | return true; 75 | } else { 76 | if (TimeDiff < -256) { 77 | #if dbglog_TimeStuff 78 | dbglog_writeln("clock set back"); 79 | #endif 80 | /* clock goofed if ever get here, reset */ 81 | InitNextTime(); 82 | } 83 | } 84 | } 85 | return false; 86 | } 87 | 88 | 89 | bool CheckDateTime(void) 90 | { 91 | if (CurMacDateInSeconds != NewMacDateInSeconds) { 92 | CurMacDateInSeconds = NewMacDateInSeconds; 93 | return true; 94 | } else { 95 | return false; 96 | } 97 | } 98 | 99 | void StartUpTimeAdjust(void) 100 | { 101 | LastTime = SDL_GetTicks(); 102 | InitNextTime(); 103 | } 104 | 105 | bool InitLocationDat(void) 106 | { 107 | LastTime = SDL_GetTicks(); 108 | InitNextTime(); 109 | NewMacDateInSeconds = LastTime / 1000; 110 | CurMacDateInSeconds = NewMacDateInSeconds; 111 | 112 | return true; 113 | } 114 | -------------------------------------------------------------------------------- /src/UTIL/DATE2SEC.c: -------------------------------------------------------------------------------- 1 | /* 2 | UTIL/DATE2SEC.h 3 | Copyright (C) 2003 Bradford L. Barrett, Paul C. Pratt 4 | 5 | You can redistribute this file and/or modify it under the terms 6 | of version 2 of the GNU General Public License as published by 7 | the Free Software Foundation. You should have received a copy 8 | of the license along with this file; see the file COPYING. 9 | 10 | This file is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | license for more details. 14 | */ 15 | 16 | /* 17 | DATE 2(to) SEConds 18 | 19 | convert year/month/day/hour/minute/second 20 | to number of seconds since the beginning 21 | of 1904, the format for storing dates 22 | on the Macintosh. 23 | 24 | The function jdate is from the program Webalizer 25 | by Bradford L. Barrett. 26 | */ 27 | 28 | 29 | /* 30 | The function jdate was found at the end of the file 31 | webalizer.c in the program webalizer at 32 | "www.mrunix.net/webalizer/". 33 | Here is copyright info from the top of that file: 34 | 35 | webalizer - a web server log analysis program 36 | 37 | Copyright (C) 1997-2000 Bradford L. Barrett (brad@mrunix.net) 38 | 39 | This program is free software; you can redistribute it and/or modify 40 | it under the terms of the GNU General Public License as published by 41 | the Free Software Foundation; either version 2 of the License, or 42 | (at your option) any later version, and provided that the above 43 | copyright and permission notice is included with all distributed 44 | copies of this or derived software. 45 | */ 46 | 47 | #include "SYSDEPNS.h" 48 | #include "DATE2SEC.h" 49 | 50 | uint32_t jdate(int day, int month, int year) 51 | { 52 | uint32_t days; /* value returned */ 53 | int mtable[] = { 54 | 0, 31, 59, 90, 120, 151, 55 | 181, 212, 243, 273, 304, 334 56 | }; 57 | 58 | /* 59 | First, calculate base number including leap 60 | and Centenial year stuff 61 | */ 62 | 63 | days = (((uint32_t)year * 365) + day + mtable[month - 1] 64 | + ((year + 4) / 4) - ((year / 100) - (year / 400))); 65 | 66 | /* now adjust for leap year before March 1st */ 67 | 68 | if ((year % 4 == 0) 69 | && (! ((year % 100 == 0) && (year % 400 != 0))) 70 | && (month < 3)) 71 | { 72 | --days; 73 | } 74 | 75 | /* done, return with calculated value */ 76 | 77 | return (days + 5); 78 | } 79 | 80 | uint32_t Date2MacSeconds(int second, int minute, int hour, 81 | int day, int month, int year) 82 | { 83 | uint32_t curjdate; 84 | uint32_t basejdate; 85 | 86 | curjdate = jdate(day, month, year); 87 | basejdate = jdate(1, 1, 1904); 88 | return (((curjdate - basejdate) * 24 + hour) * 60 89 | + minute) * 60 + second; 90 | } 91 | -------------------------------------------------------------------------------- /src/UTIL/DATE2SEC.h: -------------------------------------------------------------------------------- 1 | #ifndef DATE2SEC_H 2 | #define DATE2SEC_H 3 | #include "SYSDEPNS.h" 4 | 5 | /* ************************************************************* */ 6 | /* */ 7 | /* JDATE - Julian date calculator */ 8 | /* */ 9 | /* Calculates the number of days since Jan 1, 0000. */ 10 | /* */ 11 | /* Originally written by Bradford L. Barrett (03/17/1988) */ 12 | /* Returns an unsigned long value representing the number of */ 13 | /* days since January 1, 0000. */ 14 | /* */ 15 | /* Note: Due to the changes made by Pope Gregory XIII in the */ 16 | /* 16th Centyry (Feb 24, 1582), dates before 1583 will */ 17 | /* not return a truely accurate number (will be at least */ 18 | /* 10 days off). Somehow, I don't think this will */ 19 | /* present much of a problem for most situations :) */ 20 | /* */ 21 | /* The number returned is adjusted by 5 to facilitate day of */ 22 | /* week calculations. The mod of the returned value gives the */ 23 | /* day of the week the date is. (ie: dow = days % 7) where */ 24 | /* dow will return 0=Sunday, 1=Monday, 2=Tuesday, etc... */ 25 | /* */ 26 | /* ************************************************************* */ 27 | uint32_t jdate(int day, int month, int year); 28 | 29 | uint32_t Date2MacSeconds( 30 | int second, int minute, int hour, int day, int month, int year 31 | ); 32 | 33 | 34 | #endif -------------------------------------------------------------------------------- /src/UTIL/PBUFSTDC.h: -------------------------------------------------------------------------------- 1 | /* 2 | UTILS/PBUFSTDC.h 3 | 4 | Copyright (C) 2018 Paul C. Pratt 5 | 6 | You can redistribute this file and/or modify it under the terms 7 | of version 2 of the GNU General Public License as published by 8 | the Free Software Foundation. You should have received a copy 9 | of the license along with this file; see the file COPYING. 10 | 11 | This file is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | license for more details. 15 | */ 16 | 17 | /* 18 | Parameter BUFfers implemented with STanDard C library 19 | */ 20 | 21 | 22 | #if IncludePbufs 23 | static void *PbufDat[NumPbufs]; 24 | #endif 25 | 26 | #if IncludePbufs 27 | static MacErr_t PbufNewFromPtr(void *p, uint32_t count, tPbuf *r) 28 | { 29 | tPbuf i; 30 | MacErr_t err; 31 | 32 | if (! FirstFreePbuf(&i)) { 33 | free(p); 34 | err = mnvm_miscErr; 35 | } else { 36 | *r = i; 37 | PbufDat[i] = p; 38 | PbufNewNotify(i, count); 39 | err = mnvm_noErr; 40 | } 41 | 42 | return err; 43 | } 44 | #endif 45 | 46 | #if IncludePbufs 47 | static void PbufKillToPtr(void **p, uint32_t *count, tPbuf r) 48 | { 49 | *p = PbufDat[r]; 50 | *count = PbufSize[r]; 51 | 52 | PbufDisposeNotify(r); 53 | } 54 | #endif 55 | 56 | #if IncludePbufs 57 | GLOBALOSGLUFUNC MacErr_t PbufNew(uint32_t count, tPbuf *r) 58 | { 59 | MacErr_t err = mnvm_miscErr; 60 | 61 | void *p = calloc(1, count); 62 | if (NULL != p) { 63 | err = PbufNewFromPtr(p, count, r); 64 | } 65 | 66 | return err; 67 | } 68 | #endif 69 | 70 | #if IncludePbufs 71 | GLOBALOSGLUPROC PbufDispose(tPbuf i) 72 | { 73 | void *p; 74 | uint32_t count; 75 | 76 | PbufKillToPtr(&p, &count, i); 77 | 78 | free(p); 79 | } 80 | #endif 81 | 82 | #if IncludePbufs 83 | static void UnInitPbufs(void) 84 | { 85 | tPbuf i; 86 | 87 | for (i = 0; i < NumPbufs; ++i) { 88 | if (PbufIsAllocated(i)) { 89 | PbufDispose(i); 90 | } 91 | } 92 | } 93 | #endif 94 | 95 | #if IncludePbufs 96 | #define PbufHaveLock 1 97 | #endif 98 | 99 | #if IncludePbufs 100 | static uint8_t * PbufLock(tPbuf i) 101 | { 102 | return (uint8_t *)PbufDat[i]; 103 | } 104 | #endif 105 | 106 | #if IncludePbufs 107 | #define PbufUnlock(i) 108 | #endif 109 | 110 | #if IncludePbufs 111 | GLOBALOSGLUPROC PbufTransfer(uint8_t * Buffer, 112 | tPbuf i, uint32_t offset, uint32_t count, bool IsWrite) 113 | { 114 | void *p = ((uint8_t *)PbufDat[i]) + offset; 115 | if (IsWrite) { 116 | (void) memcpy(p, Buffer, count); 117 | } else { 118 | (void) memcpy(Buffer, p, count); 119 | } 120 | } 121 | #endif 122 | --------------------------------------------------------------------------------