Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Investigate Previous #121

Open
42 of 55 tasks
mihaip opened this issue Mar 21, 2023 · 10 comments
Open
42 of 55 tasks

Investigate Previous #121

mihaip opened this issue Mar 21, 2023 · 10 comments
Labels
Project Bigger projects

Comments

@mihaip
Copy link
Owner

mihaip commented Mar 21, 2023

NeXTSTep is not System Software/Mac OS, but it's a contemporary and would be interesting to see how it influenced Rhapsody and Mac OS X.

Homepage: http://previous.alternative-system.com/
Source code: https://sourceforge.net/projects/previous/
Mac builds: https://previous.unixdude.net/
Development discussions: http://www.nextcomputers.org/forums/index.php?topic=2642.0 (two threads mentioning Emscripten)
OS downloads: https://winworldpc.com/product/nextstep/3x and https://winworldpc.com/product/nextstep/4x

  • Basic boot
  • Video out
  • Sound out
  • Disk image loading
    • Floppy
    • Hard disk
    • CD-ROM
  • Keyboard input
  • Mouse input
  • Performance
    • Add framebuffer hashing
    • Avoid frequent Wasm <-> JS traversals (may need to move for(;;) {...} body in m68k_run_mmu040 to a separate non-inlined function)
    • Adjust emulated speed (see host_real_time_offset checks)
    • Investigate speeding up the boot by disabling networking bits
    • Semi-frequent skipped frames when moving the mouse around
    • Many disk chunks are loaded after the Workspace Manager is rendered
  • Bugs
  • Add support for more OS versions
    • NeXTStep 0.8 (tour)
    • NeXTStep 0.9
    • NeXTStep 1.x
    • NeXTStep 2.x
    • Add Developer tools to 3.3 image and defragment it
    • OPENSTEP 4.x (see this page for all the capitalization rules)
  • Features
  • NeXT version of Infinite HD
    • Doom and DoomEd
    • WorldWideWeb/Nexus
    • OmniWeb
    • Daydream/Darkmatter
  • UI
    • Add dark screen frame
    • Add NeXT-style appearance
    • Mark notable releases
    • Add "NeXT" filter
    • Allusion to NexT in the intro text and about screen (add FAQ?)
  • Code cleanup
    • Remove more SDL references
    • Remove need for SDLGui_Init,SDLGui_Text and other stubs
  • Update fork to 3.1 release and see if there's any benefit to using ADB input
@tweedyf
Copy link

tweedyf commented Aug 14, 2023

+1 for this! Many of the pre-Mosaic WWW browsers* compile and run in Previous, so this would be a wonderful way to be able to showcase them.

* http://9p.sdf.org/who/tweedy/ancient_browsers/index.html

@mihaip mihaip added the Project Bigger projects label Aug 26, 2023
@mihaip
Copy link
Owner Author

mihaip commented Jan 4, 2024

Getting somewhere:

localhost_3127_1992_System%207 1_machine=NeXTstation+Turbo+Color debug_paused=true

mihaip added a commit that referenced this issue Jan 5, 2024
Adds an experimental NeXTstation Turbo Color machine that that uses
the Previous NeXT emulator. See mihaip/previous@c970e08
and mihaip/previous@fefc81e for details
on the Previous changes.

Currently only loading the ROM and blitting to the screen are supported.

Updates #121
mihaip added a commit that referenced this issue Jan 7, 2024
Picks up mihaip/previous@a742eae
to allow NextSTEP 3.3 to be booted from.

Updates #121
mihaip added a commit that referenced this issue Jan 7, 2024
Includes:
- Reduction of JS <-> WASM jumps in core CPU loop (mihaip/previous@f101da8)
- Frame buffer correct component order (mihaip/previous@2b46018)
- Frame buffer content hashing (mihaip/previous@15a327d)
- Mouse input (mihaip/previous@5cd145e)

Updates #121
mihaip added a commit that referenced this issue Jan 7, 2024
We're spending a lot of time getting the current time (which involves
WASM -> JS jump), and it appears to have worse performance.

Updates #121
mihaip added a commit that referenced this issue Jan 7, 2024
@mihaip
Copy link
Owner Author

mihaip commented Jan 7, 2024

Early version of this is now running at https://infinitemac.org/1994/NeXTSTEP%203.3

mihaip added a commit that referenced this issue Jan 10, 2024
The boot process is quite long, ensure that we have everything that is
read ready.

Updates #121
mihaip added a commit that referenced this issue Jan 14, 2024
Makes the boot process more friendly.

Updates #121
mihaip added a commit that referenced this issue Jan 14, 2024
Picks up mihaip/previous@7e3b593
which consumes it on the Previous side.

We need to use an alternate key code map and send modifier state
separately.

Updates #121
mihaip added a commit that referenced this issue Jan 16, 2024
Makes it easier switch to the boot ROM by selecting no disks.

Updates #121
mihaip added a commit that referenced this issue Jan 16, 2024
Picks up mihaip/previous#fe1ce2c333bc51ef675a5bf023a8451885439a8b
which allows Previous-based machines to mount CD-ROMs after startup.

Also adds some NeXT CD-ROMs to the library, and platform filtering
so that we don't show them for Macs (or vice versa).

Updates #121
mihaip added a commit that referenced this issue Jan 19, 2024
Since many of them don't have cover images, add support for default
covers (and also use them for the MacHack CD-ROMs).

Updates #121
Updates #166
mihaip added a commit that referenced this issue Jan 19, 2024
Picks up mihaip/previous@5fdb077 to
get grayscale blitting working.

Also reorganizes the machines and disk list a bit to separate out the
NeXT ones.

Updates #121
mihaip added a commit that referenced this issue Jan 21, 2024
Despite the name it actually seems to result in faster motion when
enabled.

Updates #121
mihaip added a commit that referenced this issue Jan 21, 2024
The current one was too small to have software installed on it. Switch to a
1GB image that is stored as a zip file so that the extra space is not counted
against the GitHub LFS quota.

In addition to changing the disk size, I also:
- Changed mouse speed (moved it down a notch)
- Enabled right-clicks to show menus (currently unsupported by the JS host)
- Installed the NeXTStep 3.3 user patch 3
    - Found on https://www.nextcomputers.org/NeXTfiles/Software/NEXTSTEP/Patches/NEXTSTEP_3.3_User_Patch_3/NSOSY2K.iso
    - Had to be installed as root, so I opened /NextAdmin/Installer.app using
      the OpenSesame "Open As Root" Services menu command
- Added the placeholder "Welcome!" file so that it can be replaced with the
  welcome "sticky" contents (needed support for NeXT's custom text encoding)

Updates #121
mihaip added a commit that referenced this issue Jan 21, 2024
Mostly a faithful replica of what NeXTSTEP 3.3 looked like, except that
it did not have an active state for checkboxes.

Updates #121
mihaip added a commit that referenced this issue Jan 21, 2024
They changed after it was redone in feccd6a

Updates #121
@Lucas-mother3
Copy link

I have a question, is there a possibility of utilizing a differently formatted Infinite HD disk image under NeXTSTEP? Or is NeXTSTEP already have HFS support?

@mihaip
Copy link
Owner Author

mihaip commented Jan 24, 2024

NeXTSTEP has HFS support (I'm not sure since which version, but it's definitely there in 3.3), which does allow the Infinite HD and Saved HD disks to get mounted. Saved HD is useful, both for persistence and as a bit-bucket to transfer data to/from other emulators (most useful when used in combination with Basilisk II/SheepShaver based ones, because then you can use The Outside World to get data in/out).

Infinite HD is less useful because you can't actually run any software on it (though it might be fun to get Daydream running). However, I can look into whether I can make a variant of it that has NeXTSTEP-only software. (there's already a System 6-and-earlier variant of Infinite HD that gets built).

image

@Lucas-mother3
Copy link

NeXTSTEP has HFS support (I'm not sure since which version, but it's definitely there in 3.3), which does allow the Infinite HD and Saved HD disks to get mounted. Saved HD is useful, both for persistence and as a bit-bucket to transfer data to/from other emulators (most useful when used in combination with Basilisk II/SheepShaver based ones, because then you can use The Outside World to get data in/out).

Infinite HD is less useful because you can't actually run any software on it (though it might be fun to get Daydream running). However, I can look into whether I can make a variant of it that has NeXTSTEP-only software. (there's already a System 6-and-earlier variant of Infinite HD that gets built).

image

I could recommend getting the WorldWideWeb/Nexus working on that, and putting it into Infinite HD. Maybe Doom too if we could be able to use and distribute the NeXTSTEP source. I am interested in NeXT emulation mainly to try out the first ever web browser.

mihaip added a commit that referenced this issue Jan 25, 2024
Sends the state of the right mouse button separately from the left
mouse button. It's consumed on the emulator side via
mihaip/previous@6e22be0.

Updates #121
mihaip added a commit that referenced this issue Jan 25, 2024
Ensure that placeholder files are created for disk files too.

Updates #121
mihaip added a commit that referenced this issue Jan 25, 2024
Picks up mihaip/previous@24b88aa. In
addition to make sound work, also reduces the binary size this since
was the last use of SDL.

Updates #121
mihaip added a commit that referenced this issue Jan 27, 2024
@Lucas-mother3
Copy link

Lucas-mother3 commented Jan 27, 2024

ISO downloads for a bunch of NeXTStep/OpenSTEP versions (including "J" versions):
https://fsck.technology/software/NeXT/NeXTSTEP%20Installation%20Media/
https://fsck.technology/software/NeXT/OpenStep%20Installation%20Media/

@rocheston
Copy link

Does Networking work in NeXTSTEP in Infinite Mac? Can you ping 1.1.1.1?

@mihaip
Copy link
Owner Author

mihaip commented Feb 1, 2024

Does Networking work in NeXTSTEP in Infinite Mac? Can you ping 1.1.1.1?

No networking support at this time.

mihaip added a commit that referenced this issue Feb 3, 2024
Adds a subset of machines, hopefully enough to run notable OS releases.
ROMs are from the Previous repository.

Also tweaks the power-on-test behavior to always enable it, but only
do the verbose/visible mode if explicitly requested.

Updates #121
Fixes #281
mihaip added a commit that referenced this issue Feb 3, 2024
Includes mihaip/previous@61a0d9e so
that the screen remains black until after the VRAM power-on-test test
completes.

Updates #121
mihaip added a commit that referenced this issue Feb 3, 2024
mihaip added a commit that referenced this issue Feb 9, 2024
Includes mihaip/previous@bba8287
which allows the NeXTstep 0.8 disk from https://winworldpc.com/product/nextstep/0x
to boot (it's a 2GB image and thus was running into the signed/unsigned
issue that was fixed).

Updates #121
mihaip added a commit that referenced this issue Feb 9, 2024
The disk image from the archive (https://www.nextcomputers.org/forums/index.php?msg=31489)
had a lot of random data in the unused blocks, so I cleaned them up
(by creating large empty files and deleting them) to reduce the
post-chunked size (the import process now displays some stats). I also
disabled the startup fsck by creating the /bootdisk/fastboot file.

Updates #121
mihaip added a commit that referenced this issue Feb 10, 2024
Includes an optimization of the 030 emulation loop (mihaip/previous@8978760)
and making sure that we don't let the emulated CPU run too fast
(mihaip/previous@7a7523d).

Updates #121
mihaip added a commit that referenced this issue Feb 16, 2024
And remove support for loading them directly from nextcomputers.org -- they're
not set up to serve large files frequently.

Updates #121
mihaip added a commit that referenced this issue Feb 18, 2024
mihaip added a commit that referenced this issue Feb 18, 2024
Based on the 4.0 disk image from https://www.nextcomputers.org/forums/index.php?msg=31489,
with the mouse speed reduced slightly and the "Welcome!" document added.

Also adds a "NeXT" filter in the disk browser.

Updates #121
mihaip added a commit that referenced this issue Feb 18, 2024
I’m including it despite my policy of generally not having betas, because it has
some interesting UI explorations that inform the Mac OS X Dock (see
https://www.highcaffeinecontent.com/blog/20190522-(Dont-Fear)-The-Reaper)

Created by running Upgrader.app from the 4.0 PR1 ISO at
https://archive.org/details/NeXTOSIMAGES  on top of the 3.3 install.

Updates #121
mihaip added a commit that referenced this issue Feb 25, 2024
Based on the disk images from https://www.nextcomputers.org/forums/index.php?msg=31489,
with the mouse speed reduced slightly, the "Welcome!" document added and the
date/time reset.

Updates #121
mihaip added a commit that referenced this issue Feb 25, 2024
Based on the disk images from https://www.nextcomputers.org/forums/index.php?msg=31489,
with the mouse speed reduced slightly, the "Welcome!" document added and the
date/time reset.

Updates #121
mihaip added a commit that referenced this issue Feb 25, 2024
Based on the disk images from https://www.nextcomputers.org/forums/index.php?msg=31489,
with the mouse speed reduced slightly, and the date/time reset.

Updates #121
@mihaip
Copy link
Owner Author

mihaip commented Mar 14, 2024

There is now a NeXT version of Infinite HD with some apps. Notably, it includes Daydream/Darkmatter (a Mac emulator) thus you can experience System 7.1 running on black hardware:

image

mihaip added a commit that referenced this issue Mar 15, 2024
mihaip added a commit that referenced this issue Mar 16, 2024
…ed device

NeXTStep cannot boot from read-only media.

Updates #121
mihaip added a commit that referenced this issue Mar 23, 2024
mihaip added a commit that referenced this issue Mar 29, 2024
mihaip added a commit that referenced this issue Mar 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Project Bigger projects
Projects
None yet
Development

No branches or pull requests

4 participants