Тёмный
Masters of the Void
Masters of the Void
Masters of the Void
Подписаться
Комментарии
@bobweiram6321
@bobweiram6321 7 дней назад
Useless? This is a goldmine! It saddens me to see the dismal state of software these days. Open source has plunged us into a permanent state of mediocrity.
@petercoen
@petercoen 17 дней назад
is processing not some kind of new Hypercard? Loved trying out the tools in Hypercard on my IIci
@mattj65816
@mattj65816 19 дней назад
I learned early Apple GUI development on an Apple IIgs, whose operating system was kind of a slightly evolved version of Mac System ~3. It had a function called TaskMaster() (and TaskMasterDA() for desk accessories) that was more or less what is being described at 1:17:24.
@tenminutetokyo2643
@tenminutetokyo2643 Месяц назад
Ah yes, the good old days. Today development is too much tech diarrhea. People need to relearn the value of simplicity. To really learn how to do it get Dave Mark's Macintosh C Programming Primer.
@DL2SDR
@DL2SDR Месяц назад
I remember all this... Starting with CW10 Gold. Thanks!
@suobset
@suobset 2 месяца назад
I just started my useless dev journey into Mac OS 9 programming, thank you so much for this!!!
@1monki
@1monki 2 месяца назад
And there was NewtCard, a Hypercard clone for the Apple MessagePad. It was made by NS Basic Corporation in the late 90s. NewtCard created stacks on the Newton device and used a slate pad UI and tools. It was scripted in a Basic clone made by the same company. It wasn't as powerful as HC. But it produced DBs and simple programs.
@jammi__
@jammi__ 3 месяца назад
Wasn't HyperCard run under the 68LC040 emulator on PPC Macs? AFAIK, it was never ported to PPC, and that was one of the reasons it died off as an obsolete authoring platform, and things like Macromedia Director replaced it, especially since Director had the Shockwave plugin for browsers, and they made a more optimized version, Shockwave Flash, aka. just "Flash" later. Apple/Claris could've gone that route as well, and released some HyperCard browser plug-in, but I guess they lacked the foresight to do so.
@georgeleddy483
@georgeleddy483 3 месяца назад
And MacPaint had Mac Draw in the same file. You could rasterize pixel drawings. God I miss the Apple I used to know. And HyperCard was awesome. Scripts and graphics multimedia, etc. layers, templates, no ppt no complex apps. you know what happened. Tech went to the dark side. Everything is internet sales. All my stupid browsers do the same thing… sell you stuff.
@corrugateddesigner
@corrugateddesigner 3 месяца назад
I used hypercard to make hypercard programming tools to suit my own ends. I wonder if I can find it now
@billchatfield3064
@billchatfield3064 4 месяца назад
Very interesting. I love it. I'd be interested in seeing it in Pascal too. C++ is great, but I feel like Pascal is more retro. :D
@mastersofthevoid
@mastersofthevoid 4 месяца назад
I'll think about it. I haven't done Pascal in ages, so this would require some preparation, as the only Pascal compiler I own is the one that came with MPW, and I never really used it at the time. I basically started on the Mac using C, reading documentation in Pascal.
@FormlessFlesh
@FormlessFlesh 4 месяца назад
Thank you for the video! Have you ever used regex for character analysis? It seems like it would be a bit more efficient rather than a switch statement analyzing specific characters. Regardless, I do appreciate this video very much! It has helped me understand tokenizing a lot more.
@FormlessFlesh
@FormlessFlesh 4 месяца назад
To add to this, for anyone watching: Look up ASTs (abstract syntax trees) which is a tree-like structure that organizes the grammars for the language you are writing. As OP wrote in the video under enums, grammars can include identifiers (variables, functions, etc.), operators, int literals, etc. To implement an AST, Djikstra's Shunting Yard Algorithm makes use of stacks to implement a tree-like structure. This, in turn, can be extremely useful when you want your program to correctly process expressions that may utilize order of operations (ex. 1+2*4 vs (1+2)*4). It arranges everything in Reverse Polish notation for analysis.
@mastersofthevoid
@mastersofthevoid 4 месяца назад
Regexes work, but are a bit much just for analyzing character classes, and can't be used for full-on parsing, as they don't handle nested constructs like parentheses. You'd also want some sort of "streaming" regex parser to not have to get all regexes matched first, and then create objects from them. But my main reason was that I didn't want to use external dependencies like a regex parser library that viewers might not have.
@veccio
@veccio 4 месяца назад
I really appreciate your commitment! I reckon you probably weren't interested in 68k assembly, but what drove the decision to use C++? I was under the impression they used Pascal.
@mastersofthevoid
@mastersofthevoid 4 месяца назад
The original Mac in '84 used Pascal, but they pretty quickly started supporting C in the late 80ies, and by the mid-90ies, C++ was what most apps were written in. Most used existing frameworks like PowerPlant and TCL, or small indie frameworks like MacZoop instead of hand-rolling their own though.
@gerhardbrauckmann2908
@gerhardbrauckmann2908 4 месяца назад
We need Hypercard back for VisionOS and AR
@alexkatsanos8475
@alexkatsanos8475 5 месяцев назад
Who remembers SuperCard?
@ThomasPoecilia
@ThomasPoecilia 5 месяцев назад
I currently work in CodeWarrior on a game that I’ve got the source code from. It’s a big title from the 90s. It’s amazing to see you work in OS9 in the IDE of CodeWarrior. I really think it is an amazing tool without all the fuss and functionality today. It would be amazing to get in touch with you as you can probably be helpful in my project.
@JohnB5290
@JohnB5290 5 месяцев назад
I would have loved to have this video 27 years ago. Yet even today I enjoy watching it.
@amitdubey9384
@amitdubey9384 7 месяцев назад
Thanks for intuitive video series.
@mastersofthevoid
@mastersofthevoid 6 месяцев назад
Glad you like the videos!
@amitdubey9384
@amitdubey9384 6 месяцев назад
@@mastersofthevoid tx, I am in session 6, I was very much curious to know how bytecode can be generated in assembly direct from the nodes if u detail.
@mastersofthevoid
@mastersofthevoid 6 месяцев назад
@@amitdubey9384 You recursively call each operation's arguments in the tree to generate an instruction. A value (like a number) is just a PUSH_IMMEDIATE_INT instruction pushing that number. Once you've pushed both arguments, you generate code for the actual instruction (e.g. ADD_INTS), which pops both of its arguments and pushes the result.
@AngryCPPCoder
@AngryCPPCoder 8 месяцев назад
Hey those are great videos, and maybe you have the knowledge to help me with my issue, After installing Codeworrior 10 Gold, on reboot I get an error message " Sorry, a system error occurred, MetroNub 1.2 illegal instruction" and advises to disable the extension. if I disable the extension the system works, but I cant get the debugger to work. Any idea how to fix the issue?
@mastersofthevoid
@mastersofthevoid 6 месяцев назад
I don't know the exact solution, but you need a version of CodeWarrior that matches your version of MacOS. Also, not all emulators support debugging, so if you're emulating MacOS, trying a different (newer?) version of the emulator might help too.
@EricGranata
@EricGranata 8 месяцев назад
As a young HyperCard enthusiast, I always wondered how Myst was made. This video series is such a delight. Thanks!
@immortalsun
@immortalsun 8 месяцев назад
R.I.P. HyperCard
@Gwiazdonoszwiatropompka
@Gwiazdonoszwiatropompka 8 месяцев назад
Ja z laborek z hihu. Kocham XML, kocham PG.
@douglashudson4706
@douglashudson4706 9 месяцев назад
Nice _Secret of Monkey Island_ reference. I got to work with HyperCard in High School in '90/'91 instead of taking the usual required computers class (which was all Apple 2 stuff I already knew and could have taught.) I made a little bit of a "Choose Your Own Adventure" style thing with HyperCard... it was fun.
@jetfrog4574
@jetfrog4574 10 месяцев назад
God, I miss making crappy little adventure games with Hypercard like I did when I was a kid.
@anterpants
@anterpants 7 месяцев назад
HyperCard was my absolute favorite thing in the universe when I was 10 or 11.
@ltxr9973
@ltxr9973 10 месяцев назад
wow!
@GrahamTodd-ca
@GrahamTodd-ca 11 месяцев назад
I like how you mentioned SmallTalk because Hypercard's GUI was like that but more ... fantastic. Sometimes nostr (eg. its protocol of "notes") seems to have the potential for a globally distributed, encrypted, plug and play set of "card" based applications. But Hypercard's scripting was so cool it made you geel like a programmer ... 😍
@andre-le-bone-aparte
@andre-le-bone-aparte 11 месяцев назад
Just found your channel - Excellent Content! - Would be cool to see how to do Python programming on OS9
@mastersofthevoid
@mastersofthevoid 6 месяцев назад
I've only done a little Python so far, and I'm not sure I'd be qualified to make a video about that. But I think Macstodon (68000 Mac Mastodon client) was written in Python, might be worth checking in with the developer who wrote that.
@sideburn
@sideburn 11 месяцев назад
Ha! I just setup CW on my PowerBook G3 and build a couple sample apps. I loved CW back in the late 90s up til apple killed it with Xcode and OS X. Such a much more fun development environment back in the pre OS X days. I got an issue with CW9 and the MetroNub extension crashing so brought it up to Pro 6 and all good. Built for 68k PPC and Carbon. Now I’m tempted to hit the storage and grab all my jaz disks full of all my old source code I kept from my jobs back then. Fun stuff!
@kirishima638
@kirishima638 8 месяцев назад
Metrowerks dropped the ball, were slow to port CW and their frameworks (PowerPlant etc) to OSX and slow to embrace the new platform. ProjectBuilder was pretty awful by comparison but it was free. MW could have remained the premier development envisioned but they just didn’t care.
@sideburn
@sideburn 8 месяцев назад
@@kirishima638 yeah. It’s too bad. They were owning it for a good while.
@mastersofthevoid
@mastersofthevoid 6 месяцев назад
It probably didn't help that they got bought by Motorola, who then sold the Intel compiler to Borland, so when Apple switched to Intel, they couldn't follow along. CodeWarrior still exists as an embedded compiler for Freescale (fka Motorola's CPU division) CPUs though.
@kirishima638
@kirishima638 6 месяцев назад
@@mastersofthevoid yes that’s right! Didn’t they also sell the intel compiler right before Apple announced the switch?
@upp.social2490
@upp.social2490 Год назад
stop wasting bla bla and work out what you going to say and then just go and say it.. 2 hours..
@mastersofthevoid
@mastersofthevoid Год назад
It's an archive of a live stream. That's how it went.
@ajenkaxyok
@ajenkaxyok Год назад
Hey buddy, how can build bin overlays for PSX and PS2.
@mastersofthevoid
@mastersofthevoid Год назад
They aren't Macs, so I have no idea, sorry.
@ajenkaxyok
@ajenkaxyok Год назад
@@mastersofthevoid Psyq make executable psx files
@creeper2671
@creeper2671 Год назад
I have an old game engine, and one of the files extension is .ppob or ppobj. The developer said that it's an carbon file. I'm a noob into coding, so how can I properly compile it? I have sheepshaver with Mac os 9.
@mastersofthevoid
@mastersofthevoid Год назад
I don't know for sure, but it could just be a ResEdit-style resource fork containing the PPob resources separately (if it's an app for MacOS X, then probably just moved into the data fork). You'd just need a copy of CodeWarrior. If it's Carbon, you probably need one of the later MacOS X versions of CodeWarrior. These files don't need to be compiled, they are copied into the application's resource fork (or a special Resources file) and used by PowerPlant to know what a window should look like.
@creeper2671
@creeper2671 Год назад
@@mastersofthevoid which version of os x should I use? Also which codewarrior version will be good? Thanks for the answer.
@mastersofthevoid
@mastersofthevoid Год назад
@@creeper2671 You need a PowerPC version of macOS (and a machine/emulator to run it under). That's what those versions of CodeWarrior were for. Or at the least an Intel version of MacOS that still supports the Rosetta I PowerPC emulator. Carbon apps may also run on late MacOS 9 releases, so if you already have that, you can try it on there, too.
@creeper2671
@creeper2671 Год назад
@@mastersofthevoid I kinda worked
@matthiaszieger6272
@matthiaszieger6272 Год назад
great insights - if anyone of the younger watchers interested, 1979 the work on C++ started, first official version was come to live around 1985 , ISO standardization of the language in 1998, and the features highlighted here took more than another decade...
@mastersofthevoid
@mastersofthevoid Год назад
Thanks for the added detail :D
@perfectionbox
@perfectionbox Год назад
fwiw I made the source code to my 1996 PenStorm program for classic Mac available. I rebuilt it recently with Metrowerks 8.3 and uploaded it to Macintosh Repository.
@a4e69636b
@a4e69636b Год назад
Will you be making a video on MacZoop?
@mastersofthevoid
@mastersofthevoid 6 месяцев назад
That's a cool idea. I'll keep it in mind.
@a4e69636b
@a4e69636b Год назад
After watching this I really appreciate your Appkit for Classic project.
@hansneusidler7988
@hansneusidler7988 Год назад
There is a successor of hypercsrd, Livecode
@ivanh2674
@ivanh2674 Год назад
thanks
@skyranger1902
@skyranger1902 Год назад
We should protect this person at all costs! Thank you.
@nicsky20
@nicsky20 Год назад
Have an old project that I have to modify. Someone I know used the macclassic toolbox to make a windows program. This allowed old Mac programs to run in windows which was handy until I had to modify it. Now I need to learn how to do it. Thanks for the tutorial for ancient is development. PS my colleague said that the code was created when he was 5 years old!
@mastersofthevoid
@mastersofthevoid Год назад
Amazing! I only knew that some people used the bits of MacOS API that were (sort of secretly) included with QuickTime for Windows, wasn't aware other people re-implemented their own version. Would love to see that code put up on GitHub somewhere :D
@nicsky20
@nicsky20 Год назад
@@mastersofthevoid I will do this and send you a link. I don't understand the whole thing but I have the sources and maybe I could learn something as well. It could maybe be improved and would allow old os9 apps to run in windows which would be cool.
@IoIxD
@IoIxD Год назад
1:18 correction: the data actually IS out of order in the file. You just don't notice because there's a master table (two, actually) in the format that points to the offsets of each block.
@mastersofthevoid
@mastersofthevoid 6 месяцев назад
Oh yeah, I'm not talking about the file format (I'm aware, I wrote stackimport), I'm talking about the user interface. Most programming languages require you to write code to remember state, so most developers forget a lot of "secondary" state when a document is closed. It feels like someone is constantly re-shuffling your files and icons when compared to the real world, where statefulness is the default and work is required for stuff to move.
@stevez5134
@stevez5134 Год назад
where was this explanation 20 years ago???
@mastersofthevoid
@mastersofthevoid Год назад
Hopefully in the Inside Macintosh books, and Dave Mark's "Learn C on the Macintosh" and stuff like that :D
@BCThunderthud
@BCThunderthud Год назад
Yeah, I took a C class in college and trying to do my assignments in CodeWarrior was the hardest part of the class. Always ended up having to go to the lab and redo everything on a PC.
@marcov6576
@marcov6576 Месяц назад
one actually had to study and read books then for knowledge... life before youtube ;)
@squiddyg4926
@squiddyg4926 Год назад
Hello could you kindly explain how to implement if statements in your parser. this would be a great help thank you
@mastersofthevoid
@mastersofthevoid Год назад
There is a another video later in this playlist that goes into "if" statements.
@mastersofthevoid
@mastersofthevoid 4 месяца назад
Sorry, I just realized, I don't think I ever did "if" statements. An "if" statement is basically the same as the "while" loop in Part 8, just that instead of jumping back up for another loop, you jump down to the start of the "else" statement when the condition _doesn't_ match. And at the end of the "if" section, you need an (un-conditional) jump so you skip the "else" section's statements. The hardest part here is that by the time you write the jump statements, you don't know how far to jump yet. So you need to write out the instruction with a 0 jump offset, remember its address, and once you've written all the code out, you need to replace the 0 jump offset with the actual number of instructions.
@hansneusidler7988
@hansneusidler7988 Год назад
Livecode ist still alive, i use it.
@EricGranata
@EricGranata Год назад
They’re working on something cool with AI too.
@mastersofthevoid
@mastersofthevoid 6 месяцев назад
LiveCode is too much like a programming language. It has forgotten a lot of what made HyperCard unique, IMO.
@hansneusidler7988
@hansneusidler7988 6 месяцев назад
@@mastersofthevoid I never used hyoercard, so i cannot compare.
@hansneusidler7988
@hansneusidler7988 Год назад
Why did it die?
@mastersofthevoid
@mastersofthevoid Год назад
Because Apple was going out of business and Steve Jobs shut down every project that wasn't needed to release the iMac and save the company from dying, I guess 😢
@hansneusidler7988
@hansneusidler7988 Год назад
@@mastersofthevoid Despite shutting down hypecard being sad, saving of Apple was successful, the Most valuable company in the world.....
@alexkatsanos8475
@alexkatsanos8475 5 месяцев назад
Microsoft invested in it because of Office. I think that helped save it. We corporate Evangel Lists with Guy Kawasaki would not let Apple die!
@olegsemenenko3494
@olegsemenenko3494 Год назад
Hello Ulrich, do you use qemu as macos 9 emulator?
@mastersofthevoid
@mastersofthevoid Год назад
I use SheepShaver.
@sonkies5117
@sonkies5117 Год назад
Cosmic Asmo!
@sonkies5117
@sonkies5117 Год назад
I spent months worth of hours using this to make pseudo games on a Macintosh Plus then LCII when I was a child. This is the reason why I'm a programmer today, 30 years later. Great video, great memories, great respect.
@EricGranata
@EricGranata Год назад
We might have haunted the same AOL Keyword: HyperCard. 😃
@Carlixyz
@Carlixyz Год назад
14:15 my 2 cents are that Parameters is the OOP naming convention for arguments in a class function (AKA Methods). arguments is the classic name for default standalone functions instead...
@mastersofthevoid
@mastersofthevoid 6 месяцев назад
Wikipedia seems to disagree with both of us, in a way :D en.wikipedia.org/wiki/Parameter_(computer_programming)
@toonz9971
@toonz9971 Год назад
These videos are really fascinating! How did you ever learn to code like this for classic era Mac OS? Super cool!!
@mastersofthevoid
@mastersofthevoid 6 месяцев назад
Mainly, I was there when this stuff was new :D
@benbini
@benbini Год назад
I'm having trouble building XCMDs on a slightly earlier version of CW. Can you please share via GitHub your .MCPs so I can try to figure out what the configuration issue is?
@uliwitness
@uliwitness Год назад
I'll have to see if I still have a copy of the files. But in general, make sure you build a code resource, set its _resource_ type to XCMD or XFCN (for 68000 or "fat" externals, or xcmd and xfcn for PowerPC-only ones), not the file type, give it the name you want it to be available under in HyperCard. Fat XCMDs build the two architectures separately, then use the "merge" linker to combine them.