• Stars
    star
    115
  • Rank 305,916 (Top 7 %)
  • Language
    C++
  • Created over 13 years ago
  • Updated about 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An intuitive software erector kit targeted at people new to programming, but with enough potential to stay useful once they've learned, inspired by HyperCard.

What is it

In short, Stacksmith is a HyperCard clone that runs on the current version of Mac OS X.

How to build

Make sure you've inited all the submodules (especially the Leonie sub-submodule of the Forge submodule!) using

git submodule update --init --recursive

then just build the Stacksmith Xcode project. If you want to contribute, note that you'll probably have to change the subprojects to point to your own clones of the subprojects. These instructions might be helpful: http://365git.tumblr.com/post/12581972612/set-up-a-submodule-where-only-you-have-write-access

Debugging Hammer code

Stacksmith's scripting language (its analog to HyperTalk) is called Hammer. There is a source-level debugger for it in the ForgeDebugger project. To use it, simply click to the left of a line of your script where you want to start debugging. Stacksmith will launch and connect to the separate ForgeDebugger application and display script text and bytecode in it, as well as local variables and the call stack, and even the stack where temporary variables live. Should this not work, you can also try launching the debugger application manually, and inserting a "debug checkpoint" command in your script.

What is what

Stacksmith consists of several parts:

  • Stacksmith - the Hypercard clone proper
  • ForgeDebugger - the debugger. Yes, it's currently a separate application. This will change eventually.
  • Forge - the part that reads scripts and compiles them into a special bytecode. This is written in C++, but its public API consists of a handful of C functions with a LEO prefix. [Cross platform]
  • Leonie - the part that runs bytecode (i.e. the "compiled" scripts generated by Forge). All of the functions in there are prefixed with LEO [Cross platform]
  • stackimport - A command-line tool that Stacksmith uses to import HyperCard stacks. [Almost cross platform]
  • Sparkle, UKPaintView, UKSyntaxColoredTextDocument, UliKit, UKMelodyQueue, ULINetSocket - Mac-specific helper code used to implement various parts of Stacksmith.

License

Note: Some submodules may be subject to different licenses.

Copyright 2003-2014 by Uli Kusterer.

This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

   1. The origin of this software must not be misrepresented; you must not
   claim that you wrote the original software. If you use this software
   in a product, an acknowledgment in the product documentation would be
   appreciated but is not required.

   2. Altered source versions must be plainly marked as such, and must not be
   misrepresented as being the original software.

   3. This notice may not be removed or altered from any source
   distribution.

More Repositories

1

UliKit

Miscellaneous open-sourced MacOS Cocoa code by yours truly.
Objective-C
229
star
2

UKSyntaxColoredTextDocument

An NSViewController (and optional document class) that implements syntax coloring and code editing-related features in an NSTextView.
Objective-C
164
star
3

AppKitForClassic

Toy project that re-implements bits of AppKit for classic MacOS 9 on 680x0 (and emulated on PowerPC) using Metrowerks CodeWarrior Pro 6's MWObjC Objective-C compiler.
Objective-C
123
star
4

stackimport

A command line tool that reads a HyperCard stack and generates a folder with XML and PBM files from it containing a more easily readable representation of its contents. Based on Tyler Vano's and Rebecca Bettencourt's code from http://creysoft.com/xtalk/
C++
38
star
5

simpleparser

Source code to go with my parser programming tutorial videos.
C++
37
star
6

UKPaintView

A simple NSView subclass that implements a paint canvas into which users can draw with various paint tools.
Objective-C
36
star
7

ReClassicfication

Maybe one day a WINE-style implementation of the classic Mac Toolbox.
C
33
star
8

UKSoundWaveformView

A simple example for a view that displays a waveform illustrating a sound file's contents.
Objective-C
32
star
9

LittleGit

A TortoiseSVN-like Finder badge plugin for Git on Mac.
Swift
26
star
10

ULINetSocket

A Cocoa wrapper around Unix sockets based on NetSocket by Dustin Mierau.
Objective-C
26
star
11

oldiconutil

A command-line tool to postprocess iconutil-generated .icns files to make them compatible with Mac OS X 10.5
Objective-C
25
star
12

UKDiffView

A view that takes an original file and a text-form diff and displays it in a graphical form, and can selectively apply the modifications it contains.
Objective-C
25
star
13

UliPhoneKit

Miscellaneous open-sourced Cocoa Touch code by yours truly.
Objective-C
23
star
14

IconFamily

Troy Stephens's Cocoa/Objective-C wrapper for Mac OS X Icon Services’ β€œIconFamily” data type. Its main purpose is to enable Cocoa applications to easily assign custom file icons from NSImage instances.
Objective-C
20
star
15

bytecodeinterpreter

Sample code to go with my "Writing a bytecode virtual machine in C++" video.
C++
17
star
16

ulisworldwdef

Source code to the Uli's World WDEF for Mac OS 9 and earlier that draws window borders with a System 7 look.
C
16
star
17

UKFileWatcher

A bunch of classes for detecting changes of files and folders. Extracted from UliKit. Home of UKKQueue.
Objective-C
15
star
18

cpptoswift

Hack that'll hopefully one day auto-generate a Swift wrapper around C++ source code.
Swift
13
star
19

talkingmoose

The Talking Moose source code.
Objective-C
11
star
20

MenubarlessClock

A menu bar clock for when your menu bar is hidden.
Objective-C
11
star
21

UKDockableView

A view that can be torn out of a window, or dropped into another window again.
Objective-C
11
star
22

HIDRemoteSDK

Unofficial Github repo hosting Felix Schwarz's Apple Remote class.
Objective-C
11
star
23

chirp

An RSS-based, passive, load-balanceable distributed Twitter clone (server-side).
PHP
11
star
24

ValueConverter

Programmers' GUI tool for converting between various data types.
Swift
10
star
25

CAHMaker

A little app I made that takes a text file and builds "Cards Against Humanity" cards from it as individual PNG files on your desktop, ready for printing via a service like Moo.com or MeinSpiel.de.
Objective-C
9
star
26

XFromApp

Old source code to run HyperCard, SuperCard or Oracle Media Objects XCMDs and XFCNs on Classic MacOS and Carbon.
C++
8
star
27

UKSoundFileRecorder

This is a class that uses CoreAudio to record sound from a sound input and writes it to a file or hand the audio samples to a delegate.
Objective-C
8
star
28

ULIResourceFork

Cocoa code that relies only on Unix and non-deprecated Mac APIs to read resource forks. If you're looking for a POSIX-only codebase, see my ReClassicfication repository instead.
Objective-C
8
star
29

ULIMelodyQueue

A little helper class (plus sample app) for playing melodies with individual samples (think MOD files or HyperCard "play" command) using a CoreAudio AudioQueue. Only works on Mac OS X, not on iOS so far.
Objective-C
7
star
30

snd2wav

Code for converting the raw data from a System 7 sound file's 'snd ' resource or an 'snd ' resource found in a HyperCard stack to WAVE format. Port of Hopper262's Perl code to C++, with extensions to cover more formats.
C++
7
star
31

filie-system6

A small Finder clone for System 6. Just as a fun retro programming project.
C++
6
star
32

AGIconFamily

Seth Willits's modern version of an icon management class.
Objective-C
6
star
33

mpw-sillyballs

Test for building a Classic macOS app on MacOS X using ksherlock's mpw tool.
C
6
star
34

simplegame-classic

A simple game engine written for macOS classic (currently macOS 9, but intended for older versions eventually).
C++
6
star
35

UKDistributedView

Open source Finder icon view class. This requires the UliKit directory next to it, or it won't compile.
Objective-C
6
star
36

iTunesCantComplain

A screen saver that shows song progress and lyrics from the current playing iTunes song.
Objective-C
6
star
37

eleven

A simple, modular, BSD-socket-based C++ chat server and client. Intended as a foundation for embedding in other apps and building actual chat systems on top of, or network communication for other client/server systems.
C++
6
star
38

ObjectiveK

Source code to C source code compiler for a simple object-oriented language with vtables, categories, and significant indentation.
C
5
star
39

UKInterface

A little study on how one could build a user interface with pretty much automatic layout from information in a user-readable XML file.
Objective-C
5
star
40

WideningBezierPathTest

A tiny test app that shows how one could display bezier paths with varying line widths using Cocoa.
Objective-C
5
star
41

minivmac-hostclipboardxfcn

HyperCard XFCN for use with the Mini vMac emulator that lets you read and/or write the host computer's clipboard from inside the emulator.
SWIG
5
star
42

Forge

Parser for the HyperTalk-like Hammer programming language, targeting the Leonie bytecode interpreter.
C++
5
star
43

SwiftyMacTableView

Example of making a table view on MacOS using Swift.
Swift
5
star
44

Leonie

Bytecode interpreter and primitive code generation backend for a HyperTalk-like programming language named Hammer.
C
5
star
45

WebKammer

A simple Swift app that shows a webcam in a borderless window that floats on top ov every window and works even on top of fullscreen windows.
Swift
5
star
46

classic-finder-app

Fork of Classic Finder App from https://bitbucket.org/bszyman/classic-finder-app/ so I can make a few changes.
Objective-C
5
star
47

parserandcompiler

Code for our new tutorial that combines simpleparser and bytecodeinterpreter into an actual working bytecode programming language.
C++
5
star
48

TADSWorkbench

Source code for my TADS Workbench IDE for the text adventure development system.
Perl
4
star
49

ULITearOffMenu

Let's implement tear off menu palettes on OS X 10.12 Sierra and later.
Objective-C
4
star
50

RootlessForEmulators

A little example of how one would implement a rootless display for an emulator that uses one large back buffer (like MacOS 9 would).
Objective-C
4
star
51

CutTheCord

Borderless browser app for watching Netflix in a floating window above all other apps.
Swift
4
star
52

tinymarkdown

Single-file C++ Markdown-to-HTML conversion code. (Currently only implements a subset)
C++
4
star
53

BarneyBlaster

Port of an old Mac OS 9 screensaver to Mac OS X.
C
4
star
54

Stacks

Stacksmith test stacks and example stacks.
CSS
4
star
55

ocpre

Dumb little preprocessor that adds string interpolation to Objective-C.
Objective-C
4
star
56

CairoTestMac

A simple example application that uses the cross-platform Cairo graphics library to draw into a Cocoa NSView.
Objective-C
4
star
57

xDraw

An old HyperCard native code plugin (XCMD) for doing all sorts of drawing commands in HyperCard, quickly, and even with color.
C
4
star
58

winner

An exploration of how to write a graphics library/window server to run on top of Ubuntu Linux.
C++
3
star
59

commando

A command line tool for configuring scripts and command line tools using a GUI.
Swift
3
star
60

Macoun2018FromIOSToMac

Sample code for my talk "from iOS to Mac" from Macoun 2018
Swift
3
star
61

dansappledouble

Utility code that can extract an AppleDouble file's contents and extract the individual resources from its resource fork segment.
C++
3
star
62

MovieTheatre

A little sample app that uses Apple's DVD player framework.
Objective-C
3
star
63

ocimages

A little command line tool that generates string constants for all the images in an asset catalog or folder suitable for passing to [NSImage imageNamed: ...].
Objective-C
3
star
64

fool

Small study on how Git works.
Swift
3
star
65

velocity

C++-ish language transpiler to C++.
C++
3
star
66

ULIThemeKit

Subclasses of AppKit controls that show how to theme them. Related to my talk at Macoun 2012.
Objective-C
3
star
67

BugmaticX

Mac GUI client for bugmatic, and therefore offline viewer for Github Issues bug databases.
Objective-C++
3
star
68

r0ketmap

Mac app to visualize the positions of the CCC r0ket tags at the congress (it simply scrapes and graphically displays the official JSON location data)
Objective-C
2
star
69

CardSharp

A little app I made that takes a sheet of 'Cards Against Gallifrey' playing cards and splits them into individual playing cards again so you can send them to MeinSpiel.de or Moo.com.
Objective-C
2
star
70

ObjectiveK2

Small experiment to see if I can create the equivalent of objc_msgSend().
Assembly
2
star
71

Circuitous

A little project I made at the ObjCGN Hackathon that lets you build and use an electric circuit. Since I only had a day, I went with a (probably too) simple algorithm, which is buggy.
Objective-C
2
star
72

Filie

Rebirth of my System 7-style spatial Finder clone.
Objective-C
2
star
73

codeport

Test that implements something like the Cocoa responder chain in C++, would be useful for C++ cross-platform application frameworks.
C++
2
star
74

ocstoryboards

Tool that generates constants for segues/scenes in a Storyboard so you can't mis-type them because the compiler will complain.
Swift
2
star
75

ULITextClipping

Code that reads both new-style (10.12 plist-based) and old-style (resource fork-based) text clipping files without using deprecated API.
Objective-C
2
star
76

vanguardbot

A Twitch chatbot for Windows and macOS.
C++
2
star
77

TrackStorer

An old app that I used to transfer songs from iTunes onto my non-iPod MP3 player years ago.
Objective-C
2
star
78

ocstrings

Tool to generate compiler-checkable constants for your strings files.
Objective-C
2
star
79

Thikrya

WIP on a more visual code editor.
Objective-C
2
star
80

ULIProxies

A few classes that forward messages to another object in some way, but modify thread or timing.
Objective-C
2
star
81

bugmatic

Offline-searchable bug tracker with support for locally enqueueing bugs and then synching back to Github issues.
C++
2
star
82

socialsldef

A MacOS 9 List Definition Function (plus test app) for showing avatars, usernames and social media messages in a List Manager list.
C++
2
star
83

Lanyon

Simple GUI wrapper around Jekyll that takes care of setting stuff up for me and saves me from having to remember command lines.
Objective-C
1
star
84

AngelPlayer

Simple AVFoundation-based movie player that correctly maintains window height and corner positioning and can play multiple files.
Objective-C
1
star
85

file_disk

A C++ class for a file format that can hold fake files. I.e. a block file format with look-up by name.
C++
1
star
86

Interconnect2D

Maybe one day a game?
Objective-C
1
star
87

TEXAS

A small toy UTF8 text layout/editing engine.
Objective-C++
1
star
88

AngelTemplate_old

A very rudimentary data file editor.
Objective-C
1
star
89

objc

SuperCard XFcns to let you call directly into Objective C from a SuperCard script. Not very pretty, and you have to know what you're doing, but it basically works.
C++
1
star
90

ULIWebArchiveUnpacker

Quick hack that turns Safari .webarchive files back into separate files.
1
star
91

ForgeDebugger

A source-level debugger for Leonie bytecode while it is running.
Objective-C
1
star
92

xFiles

HyperCard XFCN that lists all files in a directory, and also lists their type/creator codes so it's easy to list files with associated icons.
C
1
star
93

mpw-selectionmode-xcmd

HyperCard native-code plugin built using MPW on MacOS X.
Rich Text Format
1
star
94

dans-shell

A simple toy shell that's supposed to be more like a real programming language, less like a search-and-replace program with side effects.
C++
1
star
95

SwiftExamples-MasterDetailSourceListWindow

A Swift example for Mike Yenco for how to create a master-detail view in Swift that shows a list of its views and loads view controllers for their detail view.
Swift
1
star
96

FakeNestedWindows

Proof-of-concept for using actual windows that look like they're just being drawn into another window.
Objective-C
1
star
97

FileExplorer

Just toying with a file navigation app.
Objective-C
1
star
98

CodingService

A service plug-in for Mac OS X that does some useful things that programmers may want to do with text selections in their scripts.
Objective-C
1
star
99

ULITwitchbot

A primitive configurable Twitch chat bot.
Objective-C
1
star
100

MotVMovieMaker

Tool for creating the code flow animations for my Masters of the Void web site.
Swift
1
star