11 ms·
Bringing Objective-C to the Amiga
- adamnemecek 8y agoHow can I run Amiga os on sometthing less exotic?
- Midar 8y agoThis is actually a port to the real Amiga, and not one of those new exotic Amigas. But if you want to run AmigaOS 3, you can just use FS-UAE. In fact, that screenshot is from FS-UAE, as always copying things over to a real Amiga can be quite annoying during development :).
- mveety 8y agoFor AmigaOS proper, you'll need emulation. You can run AROS on just run of the mill x86 hardware, though, which is a pretty good alternative. It's source compatible with AmigaOS, and there's an Amiga emulator that lets you run 68k programs more-or-less transparently. It's a pretty good alternative.
- Fjolsvith 8y agoI use the Amiga Forever package to run AmigaOS on my Windows 10 computer. Installation is quick and works flawlessly. I'm even able to remote in using Remote Desktop and access my AmigaOS from my laptop. There are 3 different versions with varying prices. (http://www.amigaforever.com/ http://www.amigaforever.com/) It uses the WinUAE emulator, which you can download for free. (http://www.winuae.net/ http://www.winuae.net/) You would need to purchase roms to go with this though. The Amiga Forever distro includes roms. Edit: Shameless plug: I used to run a CNet BBS back in the day and I got back into that scene by setting up another CNet bbs on my virtual Amiga. You can telnet to it at chksmak.cnetbbs.net:2600
- blackrock 8y agoDoes anyone else look at Objective-C code, and just want to puke?
- DrJokepu 8y agoBeauty is in the eye of the beholder.
- keyle 8y agoIt's certainly a bit different but it's not puke-worthy. For someone who writes Obj-C daily, I'm sure Swift feels pretty different. Try reading your own perl script you wrote in the 90ies, that's fun.
- dangerbird2 8y agoAnd because objective-C is a very strict superset of C (much more so than C++), it's really critical that the oop extensions have a very different syntax from the C subset. There is little confusion what part of the code is "objective", and what is "C"
- kenver 8y agoIt’s not puke inducing, but it is verbose. The language designers just took a different approach to how to write code. Just for some background, it came out at a similar time to c++. Both were designed to be a ‘better c’
- Apocryphon 8y agoPersonally I prefer the brackets of ObjC to the colon overload of C++
- saagarjha 8y ago> the colon overload of C++ There's a lot of colons here too: - (id)outputImageProviderFromBufferWithPixelFormat:(NSString *)format pixelsWide:(NSUInteger)width pixelsHigh:(NSUInteger)height baseAddress:(const void *)baseAddress bytesPerRow:(NSUInteger)rowBytes releaseCallback:(QCPlugInBufferReleaseCallback)callback releaseContext:(void *)context colorSpace:(CGColorSpaceRef)colorSpace shouldColorMatch:(BOOL)colorMatch;
- bwldrbst 8y agoThis looks fun, considering how much of an influence Next seems to have had on OS 2 & 3. And not just the colour schemes either, BOOPSI (https://en.wikipedia.org/wiki/BOOPSI https://en.wikipedia.org/wiki/BOOPSI) looks like an attempt to get some ObjC features into plain old C.
- mpweiher 8y agoFunky! I "brought" Objective-C to the Amiga sometime in ~1986/1987. I had recently acquired one of the first Amigas in Germany, still a US NTSC model, and also seen Objective-C discussed in a BYTE article. The beautiful OO structure of the Amiga Exec kernel and the higher OS levels built on top of those abstractions (except the abomination that was AmigaDOS) was almost certainly an inspiration. Having also recently purchased my first C compiler, Manx Aztec C, I initially had some fun with implementing OOP via some Macros and the Amiga shared library mechanism, which was essentially an array of function pointers/C++ vtable. I don't quite remember when I got the crazy idea of actually implementing an Objective-C runtime and preprocessor, before or after getting the book. I do remember that it felt very much "here goes nothing", and it really was nothing. I was in high school, I had no CS training, didn't know about compilers, hadn't programmed in C for more than a couple of months. So I wrote a weird lexer that used a bitmap and two counts to cover all the regex cases, a syntactic recognizer that could tell the Objective-C constructs apart most of the time (it had a hard time distinguishing a method send with a cast from indexing into the return of a function call). And a runtime and basic object library. My dictionary implementation turned out to be ordered almost by accident, I have grown very fond of ordered sets and dicts. It also had automatic serialization ("passivation" as it's called in the book), something Apple has only gotten around to just now, and only for Swift. It worked and I never looked back. I later ported it to i386 and QNX + MS-DOS for a project, replacing the assembly-language messenger function with a pure ANSI-C one returning the function pointer of the method (a technique later rediscovered for the GNU runtime). When NeXT came out I knew I had to have one. And ditched my implementation in a heartbeat: SEP! Interestingly, there was another Objective-C implementation from Germany in around the same timeframe called M:OOP, which actually got a little bit of press coverage: https://ekartco.com/wp-content/uploads/2012/11/m_oop.pdf https://ekartco.com/wp-content/uploads/2012/11/m_oop.pdf As far as I could tell, it never got the fully generic objc_msgSend() running, with only a limited number of arguments supported. Fun times, but also valuable lessons: - Go tackle "crazy ambitious" projects. - A language that can be implemented by a kid with a C compiler is a gem. - An architectural approach to language is really valuable.
- jmpt 8y agoMarcel, you rock! :) BTW, love your book.
- mhd 8y agoIt's interesting to see that ObjC has some heritage on the Amiga. That explain why MorphOS (one of the Amiga ecosystem fragments) is doing something similar[1] these days. [1]: http://morphos-team.net/guide/objective-c http://morphos-team.net/guide/objective-c
- apple4ever 8y agoVery cool! I ported ObjFW to the Omega2 (still have some things to clean up before releasing it to the public).
- Midar 8y agoHm, Omega2 seems to run OpenWrt, if I see it right? In that case, it should even just work. Alternatively, if you want to avoid OpenWrt, there's also ObjFW on bare-metal ARM: https://heap.zone/blog/?68 https://heap.zone/blog/?68