You are browsing as a guest. Sign up (or log in) to start making projects!

Crawssembly

  • 101 Devlogs
  • 245 Total hours

Programming languages are a lie! Learn how computers actually work! Scratch but for machine code. Runs on a custom-built rust-based VM and compiler. Over ~450 unlogged hours before starting Stardance. Programmed 100% in nano, no fancy editors used! ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ Github: https://github.com/Jonah-Crawford/Crawssembly‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ Crawssembly Online: https://crawssembly.ultimatecraw.xyz/‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ Crawssembly Docs: https://docs-crawssembly.ultimatecraw.xyz/

Open comments for this post

1h 23m 24s logged

The Crawssembly community is real 🙏 I’ve been reviewing a PR on the GitHub to improve the multiplication script in the CSL (std/math/multiply.craw)

0
0
11
Open comments for this post

37m 59s logged

I’ve been messing around with --input tag which seems to mess around a bit in the rust vm, but I think I’m getting closer to the cause

0
0
18
Open comments for this post

1h 2m 54s logged

Hack Club seems to have updated the rules on banner images, claiming it has to be an image of your project working. This is no issue for Crawssembly. The new banner is now the output of one of my programs, creating the banner pixel for pixel. This both compiles with the new rule, as it demonstrates Crawssembly functioning, while maintaining its identity.

1
0
33
Open comments for this post

4h 23m 32s logged

I’m still working on stack allocation, the complex parts are walking the stack properly to get the headers, along with making sure I don’t corrupt any data. The image attached shows the maximum heap block size in blue, with the data taken up by the header of that block in red (top corner)

1
0
40
Open comments for this post

1h 29m 56s logged

I’m going ahead with this schema for heap blocks, the reserved bits can be used for extra features that I might want to add in later versions

0
0
48
Open comments for this post

1h 7m 48s logged

Reading user input isn’t that easy compared to a language like Python, where you can just do input(). Each character has to be processed as soon as the keyboard records a press, and then saved to memory. I’m currently working on a block method that takes every 16 character you type, and allocates a small block on the heap for each press. This is going to be used for my big project :shhh-wx:

0
0
67
Open comments for this post

1h 24m 59s logged

Since IEEE 754 single precision can encode much larger numbers than a standard 32-bit binary number, you can use the library to approximate much larger values for computation

0
0
36
Open comments for this post

3h 21m 12s logged

I’ve been working on a IEEE 754 single precision 32-bit floating point number library for CSL, it turns out it’s more difficult than I expected!

0
1
35
Open comments for this post

55m 54s logged

Added a simple stack library for function calls and other uses, along with some smaller graphics programs such as screen/rectangle_fill.craw

This is also my official announcement that I’ll be doing much less programming, due to summer holiday starting now. This is because I can’t program during family time, camping weeks, and other events. In addition, I have University after summer holidays, so this reduced productivity will continue throughout the rest of Stardance. Thank you all for making Crawssembly the number 1 project on stardance!

0
0
31
Open comments for this post

53m 48s logged

I’m currently focusing on adding new functions to the screen library, such as rectangles, using the line program as a primitive

0
0
64
Open comments for this post

2h 10m 6s logged

I’ve been adding line functions at the moment, to be honest it’s harder than the circle! Getting the angles right is the hardest

0
0
79
Open comments for this post

3h 25m 7s logged

I’m not good at css, but I’m trying to make the CPM website simple and easy to use. It’ll take a while but it’s slowly coming together

0
0
42
Open comments for this post

15m 22s logged

It turns out I was way closer than I thought! Publishing your own Crawssembly projects is now out of alpha, into beta (Because only I have an API key atm!)

0
0
42
Open comments for this post

4h 4m 30s logged

CPM is being difficult, I’ve gone through multiple iterations now of the craw pkg publish command, but I feel like I’m getting close.

0
0
37
Open comments for this post

1h 13m 40s logged

I’ve been fighting with my server for a while now, the connection keeps on interrupting. As votes are currently coming in for Crawssembly v1.1.0, I suspect my score will be lower than expected due to the demo and doc websites coming offline randomly.

0
0
34
Open comments for this post

2h 11m 49s logged

My issues at the moment are about getting a command, craw pkg pack to create a CPM ready tarball of your project from the command line. That and my server is having a couple of internet issues at the moment which are hindering my progress.

This devlog is also an official announcement that I won’t be as active as normal over the next week. I have family coming around so my time programming will be limited. In addition, when summer holiday starts this will continue, which is why most of my time programming is in the June and early July, the rest of stardance will have fewer updates and less time spent on casm.

0
0
27
Open comments for this post

2h 16m 8s logged

CPM officially works! The pipeline of Crawssembly Source -> Tarball -> Github -> CPM -> craw pkg install -> executestd functions!

0
0
25
Open comments for this post

46m 3s logged

I’ve been having some internet issues with my server recently, so my productivity has slowed. However I’m at the final testing stages of linking github repos to get craw install <package> to work. The test is done on a simple repo but it should be enough to see if it works

0
0
76
Open comments for this post

1h 19m 47s logged

Compiling from a local tarball works! I’ll be working on the database soon so users can search and download. My plan is that the program is stored as a github repo, similar to cargo.

0
0
28
Open comments for this post

2h 40m 9s logged

Package manager is coming along… slowly. I’m still working on getting a local package to install into the global executestd file inside the home folder, but it’s taking it’s time!

0
0
35
Open comments for this post

1h 37m 4s logged

v1.2.0 is already underway! I’ve spent some time constructing a cargo crate for Crawssembly to allow other rust programs to use Crawssembly’s logic. So now YOU can add Crawssembly to your programs!

0
0
36
Ship #2

Crawssembly v1.1.0 ready to ship!

“Programming languages are a lie!”

This is Crawssembly, a project that’s been in production for almost a year. It is an educational assembly-like programming language that teaches users how computers actually work. Programming languages like Python, Ruby, and Java pull the wool over your eyes by abstraction and simplification. Crawssembly is the first step to seeing clearly.

  • 13 devlogs
  • 32h
  • 19.65x multiplier
  • 633 Stardust
Try project → See source code →
Open comments for this post

1h 28m 51s logged

Basic multiplication and division are the first to enter the CSL! I focused on making them memory efficient rather than time efficient, because using fewer registers makes it easier for beginners to use them in normal programs. And because Crawssembly is very very quick (Almost C level speeds) a couple extra thousand ticks won’t be missed for these first programs

0
0
65
Open comments for this post

1h 55m 16s logged

File execution is now working! You can insert programs using execute path/to/program.craw, this leads to the Crawssembly Standard Library, a collection of useful programs that can be accessed using executestd program.craw, such as multiply or division code.

0
0
51
Open comments for this post

1h 10m 8s logged

I’m going to confess here, I was a bit lazy. I decided that, because I could create the time program, I rewarded myself by adding a native ISO 8601 time output command io text iso rXX. Elegant? Yes. Low-Level? Not as much as I would like. But the choice was either make a single line of code to simplify programs like this massively, or wire in a tediously made, messy 350 line program that doesn’t fully account for the 400 leap year rule or leap seconds. Hmm…

TLDR; I caved to simplicity. But CrawFS file listing from boot now display file genesis time!

0
0
44
Open comments for this post

1h 2m 10s logged

The time program finally works! I wrapped it in a loop so it reloads every 200ms to make a real-time clock. Soon I’ll port it to the CrawFS system to read file creation dates

0
0
61
Open comments for this post

4h 29m 6s logged

It turns out that time resolution is much harder than I thought! It’s taken me a while but I’ve got the program working for CCYY-MM-DD

0
0
54
Open comments for this post

3h 21m 25s logged

CrawFS reading is almost done, but I need to program a way to take a raw Unix timestamp and convert it into a nice iso 8601 format (CCYY-MM-DD HH:MM:SS) for the ‘Time created’ field

0
0
79
Open comments for this post

1h 56m 27s logged

Reading a specific file is clearly much harder than reading the boot sector. It turns out that parsing user input is a devious task itself!

0
0
69
Open comments for this post

6h 27m 33s logged

Did someone say boot sectors? That’s right, Crawssembly can now read CrawFS boot sectors and output the file table data! This took a surprisingly long time, as the binary boot sector is very delicate.

0
0
47
Open comments for this post

2h 3m 23s logged

I’ve been working on a basic file system, CrawFS, used as a stepping stone towards real ones like FAT16, FAT32, and NTFS.

0
0
49
Open comments for this post

1h 38m 35s logged

No time to waste after v1.0.0 is released! I’ve added raw disk sector editing for Crawssembly; an opt-in way of reading and writing to your real disk, rather than a VM.

! THIS COULD DESTROY YOUR COMPUTER !

So only do it if you know what you’re doing, as a single bit change will probably brick your entire machine if you use the --raw-disk option

0
0
64
Ship #1

Crawssembly: The beginner’s gateway to low-level thinking.

                         "Programming languages are a lie!"

This is Crawssembly, a project that’s been in production for almost a year. It is an educational assembly-like programming language that teaches users how computers actually work. Programming languages like Python, Ruby, and Java pull the wool over your eyes by abstraction and simplification. Crawssembly is the first step to seeing clearly.

  • 46 devlogs
  • 133h
  • 19.78x multiplier
  • 2409 Stardust
Try project → See source code →
Open comments for this post

28m 27s logged

THIS IS IT!

The moment I’ve been waiting for almost a year, the first stable release of Crawssembly v1.0.0! And what fortune that I get to share it with you people on Stardance!

0
0
75
Open comments for this post

2h 44m 18s logged

Crawssembly is soon to be shipped on version 1.0.0! A massive milestone for a project I started ~11 months ago. The raffle discs have been burned, and final preparations are underway for release.

1
1
169
Open comments for this post

2h 53m 49s logged

Basic syntax highlighting for nano! Simply run craw install-nano to gain access to these beautiful new colours when editing .craw files.

0
0
42
Open comments for this post

3h 20m 25s logged

RAFFLE UPDATE!

The 3 discs have been completed. Soon, Crawssembly will be shipped on it’s first release! Remember to follow Crawssembly before the 1st July 00:00 UTC for your chance to win one of these beautiful pieces of computing history!

0
0
45
Open comments for this post

2h 3m 22s logged

I’ve been working on fixing up the activities in the README.md, and providing possible solutions for each. The image below is a possible output of the activity “Smiling Screen”

0
0
34
Open comments for this post

39m 34s logged

Adding the last features for pong was quite simple, making the computer lag behind a random amount utilises the current millisecond UNIX timestamp, with the least significant 2 bits being used as the ‘reaction time’, along with a per-frame flag to increase this reaction time to solve for repeating loops. The scoring system at this point is just the number of pixels in the top corner, unlike the real pong which used numbers. Perhaps for a later version?

0
0
38
Open comments for this post

6h 40m 26s logged

PONG is very almost finished, all that needs to be done is to fine-tune the computer movement and finish displaying the score.

0
0
63
Open comments for this post

1h 42m 3s logged

I’m now moving onto some game examples. I’m working on a basic version of the popular game PONG, the hardest part is going to be the graphics syncing up with the mathematical logic

0
0
32
Open comments for this post

1h 56m 59s logged

The structure of the compiler is complete, but getting it to work is another beast of debugging. I think this is the first program of its kind; the first program where no one, not even me, can understand it fully. A true milestone for Crawssembly

0
0
39
Open comments for this post

3h 8m 20s logged

Integer parsing requires multiplication by 10, which in Base-10 is easy as you can just add a zero at the end. But in binary you can’t do this, as that would be multiplying by 2. So you need to get a bit more creative when multiplying by a known amount in binary.

The code below shows how a number, ‘abc’ can be expressed as 100a + 10b + c. This is real code from my Crawssembly compiler written in Crawssembly.

0
0
24
Open comments for this post

2h 4m 51s logged

I’ve done a little experiment with a reduced branch of Crawssembly made for tiny ISA’s, with instructions only a single byte wide! An image of what the CPU’s core might look like is shown below.

0
0
43
Open comments for this post

5h 31m 11s logged

The trie is complete! Although I’ve still much to do for the compiler, such as per-character parsing, storage of label elements, calculation of register codes, etc…

0
0
37
Open comments for this post

1h 46m 23s logged

7/24 trie branches have been added to the compiler, totalling just under 1000 lines of Crawssembly code, the longest hand-written .craw program ever made!

0
0
32
Open comments for this post

6h 18m 3s logged

Adding branches still takes a while, but it’s much more efficient than testing every character for every instruction. So far I’ve mapped 17 out of ~64 command strings.

1
0
44
Open comments for this post

7h 36m 50s logged

I’ll be taking a break over the weekend, as I’ve just completed my final exams and I’m celebrating. I’ll be back proper on Monday.

Today I worked on creating a trie for Crawssembly’s commands, which can be used to increase efficiency in my compiler to parse instructions faster. Rather than checking every char for every instruction like

cal add -65 r01                ; if r01 = 65, this will be 0
ifz 10                         ; continue if 0
    cal add -70 r02            ; if r02 = 65, this will be 0
    ifz 20                     ; continue if 0
        etc...

I can split each branch into separate instructions, reducing line count and time-to-compile

0
0
46
Open comments for this post

3h 16m 59s logged

The C emitter function now works to the same standard as Crawssembly Online!

In other news, I’m starting to write a Crawssembly compiler in Crawssembly! This is a big step and proves that Crawssembly’s language is comprehensive enough to take on this task.

3
0
147
Open comments for this post

4h 13m 33s logged

I’m working on a way to convert Crawssembly into native ASM language, by writing to a C file and compiling that output.

0
0
73
Open comments for this post

45m 29s logged

ATTENTION! The moment has arrived; The CRAWSSEMBLY Raffle!

Get the chance to win a LIMITED-EDITION installer and collectable Crawssembly Disc!
The disc contains the official compiler, virtual machine, and documentation. Also included are un-released legacy files from development. Simply follow Crawssembly on Stardance to enter your name!

Shipping may vary depending on the UK Postal service. There are 3 physical First Edition discs available worldwide. If you’re outside the UK, I may ask you to contribute towards postage if shipping costs are high.

The 3 winners will be announced on the 1st of July! So get your entry in before 23:59 UTC 30th June! Don’t miss this opportunity! Follow Crawssembly today and support open-source learning!

3
0
391
Super Star

As a prize for your great work, look out for a bonus prize in the mail :)

Open comments for this post

1h 56m 59s logged

Random number generator has been added to the example group, I used XOR and bit shifts with the new command io time milli, which extracts the current UNIX timestamp in milliseconds, as the seed. Basic, but quite random from a human perspective.

0
0
68
Open comments for this post

17m 20s logged

File input now works for macOS Crawssembly! Run craw myprogram.craw --file myinputs.file to run! (The image is from Linux, not from my Mac because it’s too old for me to log in to stardance and post a ss from it, but I can assure you it works!)

0
0
66
Open comments for this post

1h 53m 35s logged

macOS can now do everything windows can except use the speakers, scan-line free graphics, and access files. These will be the largest source of my time.

0
0
44
Open comments for this post

1h 12m 51s logged

I’m currently working on getting macOS support running. At the moment, macOS is only confirmed to work to the same level as Crawssembly Online. Hopefully I can get it to the same standard as Linux and Dos systems!

0
0
53
Open comments for this post

1h 12m 3s logged

My respect to real CPU designers, this is tricky work! The most difficult thing is working with the 256 different registers, that’s lots of wiring to get done.

4
3
1599
Open comments for this post

55m 38s logged

Demo and README in working order, for real this time!

The final things to do before shipping:
Full macOS functionality: Maybe
Add documentation to demo: Yes
Add syntax highlighting to demo: Maybe
Final Cleanup: Yes

0
0
45
Open comments for this post

43m 56s logged

I don’t usually work with frontend, so the demo won’t look anywhere near as nice as some of the other projects on Stardance, but as long as it’s usable then I’m happy.

0
0
34
Open comments for this post

2h 3m 44s logged

Many thanks to Koy Camerini-Yachdav, who tested Crawssembly on Mac OS! Their efforts go towards helping more people understand how computers actually work. ❤️

In other news, Crawssembly is soon ready for the first official release. I estimate <2 weeks before a ship fully working on both Linux and Windows systems will be made!

0
0
36
Open comments for this post

2h 12m 30s logged

README.md now has documentation about all commands that will be in the first release. I’m yet to make the live demo and the documentation about machine codes though!

0
0
49
Open comments for this post

3h 4m 27s logged

Crawssembly Programs can now be force-quit by pressing CRTL+C. I should have added this long ago, but I added it in the end.

2
1
55
Open comments for this post

5h 12m logged

I’ve been doing some user testing, and have made changes to the documentation and program, such as adding craw myfile.craw --dump-decoded and craw myfile.craw --tui commands easy to use and run.

0
1
65
Open comments for this post

21h 39m 56s logged

Dynamic graphic size achieved! You can now set the screen size of the Crawssembly program by running craw myfile.craw --screen WIDTHxHEIGHT using the –screen argument.

0
1
87
Open comments for this post

4h 10m 44s logged

README.md now contains enough information about Crawssembly to make it Turing Complete. The rest involves storage, input devices, and output service commands.

0
0
127
Open comments for this post

21m 43s logged

Crawssembly is officially clear for Windows & Linux OS releases! Mac OS support will hopefully come soon. There may be some linux distros that are special and cause some weird and wonderful problems, but for the generic versions (Think Ubuntu) I’m confident that Crawssembly is compatible.

0
0
120
Open comments for this post

4h 32m 2s logged

Never understood what binary actually is? Why is it important, and why are binary skills becoming less important? All this, and more, is revealed in the Crawssembly Project; the ultimate guide to learning the fundamentals of real computer design, and assembly-like languages.

0
0
227
Open comments for this post

3h 16m 58s logged

More work done on the docs today. I’m assuming near-zero knowledge about computing to allow all to access the Crawssembly Project

0
0
111
Open comments for this post

3h 25m 49s logged

Most of my efforts today are going to the README.md file, helping beginners get their heads around Assembly-like languages

0
0
86
Open comments for this post

1h 32m 30s logged

Currently working on adding logical branching (‘if’ statements) to CRISP, my high-level language to compile into Crawssembly

0
0
91

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…