diff options
| author | Jacob McDonnell <jacob@simplelittledream.com> | 2021-08-18 17:31:19 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@simplelittledream.com> | 2021-08-18 17:31:19 -0400 |
| commit | 9a6959b2700ec54392fb2ffb145bacae66fc2269 (patch) | |
| tree | 34704cfbbb55e349ab91c09138911f2906e90988 /Dice | |
initial commit
Diffstat (limited to 'Dice')
| -rw-r--r-- | Dice/.DS_Store | bin | 0 -> 6148 bytes | |||
| -rw-r--r-- | Dice/bin/Dice.8xp | bin | 0 -> 8831 bytes | |||
| -rw-r--r-- | Dice/bin/Dice.bin | bin | 0 -> 8755 bytes | |||
| -rwxr-xr-x | Dice/makefile | 20 | ||||
| -rw-r--r-- | Dice/obj/dice.c.src | 180 | ||||
| -rw-r--r-- | Dice/obj/icon.src | 9 | ||||
| -rw-r--r-- | Dice/src/dice.c | 55 |
7 files changed, 264 insertions, 0 deletions
diff --git a/Dice/.DS_Store b/Dice/.DS_Store Binary files differnew file mode 100644 index 0000000..0c36b57 --- /dev/null +++ b/Dice/.DS_Store diff --git a/Dice/bin/Dice.8xp b/Dice/bin/Dice.8xp Binary files differnew file mode 100644 index 0000000..774dc72 --- /dev/null +++ b/Dice/bin/Dice.8xp diff --git a/Dice/bin/Dice.bin b/Dice/bin/Dice.bin Binary files differnew file mode 100644 index 0000000..8fccb59 --- /dev/null +++ b/Dice/bin/Dice.bin diff --git a/Dice/makefile b/Dice/makefile new file mode 100755 index 0000000..77bdc07 --- /dev/null +++ b/Dice/makefile @@ -0,0 +1,20 @@ +# ---------------------------- +# Makefile Options +# ---------------------------- + +NAME ?= Dice +ICON ?= icon.png +DESCRIPTION ?= "Dice Roller" +COMPRESSED ?= NO +ARCHIVED ?= NO + +CFLAGS ?= -Wall -Wextra -Oz +CXXFLAGS ?= -Wall -Wextra -Oz + +# ---------------------------- + +ifndef CEDEV +$(error CEDEV environment path variable is not set) +endif + +include $(CEDEV)/meta/makefile.mk diff --git a/Dice/obj/dice.c.src b/Dice/obj/dice.c.src new file mode 100644 index 0000000..82bfd3c --- /dev/null +++ b/Dice/obj/dice.c.src @@ -0,0 +1,180 @@ + section .text,"ax",@progbits + assume adl = 1 + section .text,"ax",@progbits + public _main +_main: +BB0_1: + ld iy, -3145600 + call _os_ClrLCD + call _os_HomeUp + call _os_DrawStatusBar + ld hl, L_.str + push hl + call _printf_ + pop hl + call _getInput + push hl + call _diceRoll + push hl + pop de + pop hl + push de + pop hl + ld bc, -1 + or a, a + sbc hl, bc + jq z, BB0_4 + push de + ld hl, L_.str.1 + push hl + call _printf_ + pop hl + pop hl +BB0_3: + call _os_GetCSC + or a, a + jq z, BB0_3 + jq BB0_1 +BB0_4: + or a, a + sbc hl, hl + ret + section .text,"ax",@progbits + + section .text,"ax",@progbits + public _diceRoll +_diceRoll: + ld hl, -4 + call __frameset + ld hl, (ix + 6) + ld de, -1 + or a, a + sbc hl, de + jq nz, BB1_2 + ld hl, -1 + jq BB1_3 +BB1_2: + pea ix + -4 + call _time + pop de + push hl + call _srand + pop hl + call _rand + ld bc, (ix + 6) + call __irems + inc hl +BB1_3: + ld sp, ix + pop ix + ret + section .text,"ax",@progbits + + section .text,"ax",@progbits + public _getInput +_getInput: + ld hl, -30 + call __frameset + ld.sis hl, 0 + ld (ix + -30), l + ld (ix + -29), h + lea hl, ix + -22 + ld (ix + -28), hl +BB2_1: + call _os_GetKey + ld e, l + ld d, h + ld.sis bc, 5 + or a, a + sbc.sis hl, bc + jq z, BB2_4 + ld l, e + ld h, d + ld.sis bc, 9 + or a, a + sbc.sis hl, bc + jq z, BB2_5 + ld a, e + add a, -94 + ld c, (ix + -30) + ld b, (ix + -29) + ld e, b + ld l, e + ld iyl, e + rlc l + sbc hl, hl + push hl + pop de + ld d, iyl + ld e, c + ld hl, (ix + -28) + add hl, de + ld (hl), a + inc.sis bc + ld (ix + -30), c + ld (ix + -29), b + ld l, a + rlc l + sbc hl, hl + ld l, a + push hl + ld hl, L_.str.2 + push hl + call _printf_ + pop hl + pop hl + jq BB2_1 +BB2_4: + ld hl, 10 + push hl + pea ix + -25 + ld hl, (ix + -28) + push hl + call _strtol + pop de + pop de + pop de + ld c, 8 + call __ishl + call __ishrs + jq BB2_6 +BB2_5: + ld hl, -1 +BB2_6: + ld sp, ix + pop ix + ret + section .text,"ax",@progbits + + section .rodata,"a",@progbits + private L_.str +L_.str: + db "Dice Roll",012o,"Press Clear to exit",012o,"How many sides?",012o,"Input: ",000o + + section .rodata,"a",@progbits + private L_.str.1 +L_.str.1: + db "",012o,"Output: %d",000o + + section .rodata,"a",@progbits + private L_.str.2 +L_.str.2: + db "%c",000o + + ident "clang version 12.0.0 (https://github.com/jacobly0/llvm-project 170be88120e3aa88c20eea5615ba76b8f1d6c647)" + extern __Unwind_SjLj_Register + extern __Unwind_SjLj_Unregister + extern __frameset + extern _srand + extern __irems + extern _printf_ + extern _rand + extern _strtol + extern _os_GetCSC + extern _os_ClrLCD + extern _os_DrawStatusBar + extern _os_HomeUp + extern _time + extern _os_GetKey + extern __ishrs + extern __ishl diff --git a/Dice/obj/icon.src b/Dice/obj/icon.src new file mode 100644 index 0000000..24ec1cb --- /dev/null +++ b/Dice/obj/icon.src @@ -0,0 +1,9 @@ + section .icon + + jp ___prgm_init + db $02 + + public ___description +___description: + db "Dice Roller", 0 +___prgm_init: diff --git a/Dice/src/dice.c b/Dice/src/dice.c new file mode 100644 index 0000000..5aee7b9 --- /dev/null +++ b/Dice/src/dice.c @@ -0,0 +1,55 @@ +#include <tice.h> +#include <stdio.h> +#include <stdlib.h> +#include <time.h> + +#define EnterKey 5 +#define maxline 22 +#define ExitKey 9 +#define ExitCode -1 + +int diceRoll(int sides); +int getInput(void); + +int main(void) +{ + while (true) { + os_ClrHome(); + + printf("Dice Roll\nPress Clear to exit\nHow many sides?\nInput: "); + + int ans = diceRoll(getInput()); + + if (ans == ExitCode) + break; + + printf("\nOutput: %d", ans); + + while (!os_GetCSC()); + } + return 0; +} + +int diceRoll(int sides) +{ + if (sides == ExitCode) + return ExitCode; + time_t t; + srand((unsigned) time(&t)); + return (rand() % sides) + 1; +} + +int getInput(void) +{ + char number[maxline]; + char *ptr; + int16_t key, i = 0, output; + while((key = os_GetKey()) != EnterKey) { + if(key == ExitKey) + return ExitCode; + number[i] = (key - 142) + '0'; + printf("%c", number[i++]); + } + output = strtol(number, &ptr, 10); + return output; +} |
