Last active
January 2, 2026 02:21
-
-
Save jac18281828/f5cd0e873a938895c377eb27d69f8158 to your computer and use it in GitHub Desktop.
75 Hard Time Tracker in MMIX
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| LOC #1000 | |
| START_TIME IS 1767310000 | |
| DAY IS 86400 | |
| Main | |
| TRAP 0, Time, 0 | |
| SETI $1, START_TIME | |
| SETI $3, DAY | |
| MULI $3, $3, 3 % buffer for 3 days | |
| ADDU $1, $1, $3 | |
| SUBU $0, $255, $1 | |
| BN $0, Error | |
| BZ $0, Done | |
| SETI $1, DAY | |
| DIVU $0, $0, $1 | |
| JMP Done | |
| Done | |
| LDA $255, Message | |
| TRAP 0, Fputs, StdOut | |
| % $0 has number of days | |
| PUSHJ $0, PrintDays | |
| LDA $255, Unit | |
| TRAP 0, Fputs, StdOut | |
| SETI $255, '\n' % newline | |
| TRAP 0, Fputc, StdOut | |
| SETI $255, 0 | |
| TRAP 0, Halt, 0 | |
| Error | |
| SETI $255, -1 | |
| TRAP 0, Halt, 0 | |
| Tmp IS $254 | |
| Reversed IS $253 | |
| % Print $0 as a number | |
| % Algorithm: reverse the number into $253, then print digits in order | |
| PrintDays | |
| BZ $0, PrintZero | |
| % Reverse the number: reversed = 0 | |
| SETI Reversed, 0 | |
| SET Tmp, $0 | |
| ReverseLoop | |
| BZ Tmp, PrintLoop | |
| % Extract one digit | |
| DIVI $1, Tmp, 10 % $1 = quotient, rR = remainder | |
| GET $2, rR % $2 = digit | |
| % Build reversed number: reversed = reversed * 10 + digit | |
| MULI Reversed, Reversed, 10 | |
| ADDU Reversed, Reversed, $2 | |
| SET Tmp, $1 | |
| JMP ReverseLoop | |
| PrintLoop | |
| BZ Reversed, PrintDone | |
| % Extract rightmost digit from reversed number | |
| DIVI $1, Reversed, 10 | |
| GET $2, rR | |
| % Print digit | |
| ADDUI $255, $2, '0' | |
| TRAP 0, Fputc, StdOut | |
| SET Reversed, $1 | |
| JMP PrintLoop | |
| PrintZero | |
| SETI $255, '0' | |
| TRAP 0, Fputc, StdOut | |
| PrintDone | |
| POP 0, 0 | |
| LOC Data_Segment | |
| Message | |
| BYTE "You have completed ", 0 | |
| Unit | |
| BYTE " days", 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment