Setup git repo

This commit is contained in:
~erin 2022-03-06 21:01:34 -05:00
commit 2719260c41
No known key found for this signature in database
GPG Key ID: DA70E064A8C70F44
6 changed files with 538 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
bin/

BIN
icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 B

17
makefile Normal file
View File

@ -0,0 +1,17 @@
# ----------------------------
# Makefile Options
# ----------------------------
NAME = TEST
ICON = icon.png
DESCRIPTION = "Test TI-84 program"
COMPRESSED = NO
ARCHIVED = NO
CFLAGS = -Wall -Wextra -Oz
CXXFLAGS = -Wall -Wextra -Oz
HAS_PRINTF := NO
# ----------------------------
include $(shell cedev-config --makefile)

27
obj/icon.src Normal file
View File

@ -0,0 +1,27 @@
section .icon
jp ___prgm_init
db $01
public ___icon
___icon:
db $10, $10
db $FF, $FF, $FF, $FF, $FE, $B5, $B5, $D6, $D6, $B5, $B5, $FE, $FF, $FF, $FF, $FF
db $FF, $FF, $FF, $B5, $DE, $DF, $96, $56, $56, $96, $DF, $DE, $B5, $FF, $FF, $FF
db $FF, $FF, $B5, $DF, $56, $0E, $0D, $0D, $0D, $0D, $0D, $4E, $DF, $B5, $FF, $FF
db $FF, $B5, $DF, $2E, $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0D, $2E, $DF, $B5, $FF
db $FE, $DE, $56, $0D, $0D, $05, $05, $05, $05, $05, $05, $0D, $0D, $4E, $DE, $FE
db $B5, $DF, $0D, $05, $2D, $B7, $DF, $96, $4D, $D7, $D7, $B6, $05, $0D, $B7, $B5
db $B5, $96, $05, $2D, $FF, $DE, $76, $96, $4D, $FF, $96, $6E, $05, $05, $76, $B5
db $D6, $4E, $05, $76, $FF, $0D, $05, $05, $4D, $FF, $B6, $76, $05, $05, $4D, $D6
db $D6, $4E, $05, $76, $FF, $05, $05, $05, $4D, $FF, $B6, $76, $05, $05, $4D, $D6
db $B5, $76, $05, $2D, $FF, $B7, $6E, $96, $4D, $FF, $76, $4E, $05, $05, $6D, $B5
db $B5, $DE, $05, $05, $4D, $DE, $FF, $96, $4D, $DE, $DE, $B7, $05, $05, $B6, $B5
db $FE, $DE, $4E, $05, $05, $04, $04, $04, $04, $04, $04, $05, $05, $2D, $DE, $FE
db $FF, $B5, $DF, $2D, $05, $04, $04, $04, $04, $04, $05, $05, $0D, $D6, $B5, $FF
db $FF, $FF, $B5, $DF, $4D, $05, $04, $04, $04, $04, $05, $2D, $B6, $B5, $FF, $FF
db $FF, $FF, $FF, $B5, $DE, $B6, $6D, $2D, $2D, $4D, $96, $DE, $B5, $FF, $FF, $FF
db $FF, $FF, $FF, $FF, $FE, $B5, $B5, $D6, $D6, $B5, $B5, $DE, $FF, $FF, $FF, $FF
public ___description
___description:
db "Test TI-84 program", 0
___prgm_init:

357
obj/src/main.c.src Normal file
View File

@ -0,0 +1,357 @@
section .text,"ax",@progbits
assume adl = 1
section .text,"ax",@progbits
public _print
_print:
call __frameset0
ld a, (ix + 9)
ld l, (ix + 12)
push hl
ld l, a
push hl
call _os_SetCursorPos
pop hl
pop hl
ld hl, (ix + 6)
push hl
call _os_PutStrFull
pop hl
or a, a
sbc hl, hl
pop ix
ret
section .text,"ax",@progbits
section .text,"ax",@progbits
public _clearLine
_clearLine:
call __frameset0
ld a, (ix + 6)
or a, a
sbc hl, hl
push hl
ld l, a
push hl
call _os_SetCursorPos
pop hl
pop hl
ld hl, L_.str
push hl
call _os_PutStrFull
pop hl
or a, a
sbc hl, hl
pop ix
ret
section .text,"ax",@progbits
section .text,"ax",@progbits
public _print_ui
_print_ui:
ld hl, -33
call __frameset
ld de, 0
lea hl, ix - 24
ld (ix - 27), hl
push de
push de
call _os_SetCursorPos
pop hl
pop hl
or a, a
sbc hl, hl
push hl
push hl
ld hl, L_.str.1
push hl
call _print
ld bc, (ix + 6)
pop hl
pop hl
pop hl
ld hl, L_.str.2
ld (ix - 24), hl
ld hl, L_.str.3
ld (ix - 21), hl
ld hl, L_.str.4
ld (ix - 18), hl
ld de, 3
push bc
pop hl
or a, a
sbc hl, de
inc de
jq nz, BB2_1
ld de, (ix + 9)
push de
pop hl
add hl, bc
or a, a
sbc hl, bc
ld hl, 2
jq z, BB2_7
dec de
ex de, hl
jq BB2_7
BB2_1:
ld iy, (ix + 9)
push bc
pop hl
or a, a
sbc hl, de
jq nz, BB2_2
ld de, 2
lea bc, iy
push bc
pop hl
or a, a
sbc hl, de
ld hl, 0
jq z, BB2_7
inc bc
push bc
pop hl
jq BB2_7
BB2_2:
lea hl, iy
BB2_7:
ld iy, L_.str.5
ld de, 1
ld bc, 3
ld (ix - 33), hl
call __imulu
push de
pop bc
push hl
pop de
ld hl, (ix - 27)
add hl, de
ld (hl), iy
ld de, 4
BB2_8:
push bc
pop hl
or a, a
sbc hl, de
jq z, BB2_10
push bc
ld (ix - 30), bc
call _clearLine
pop hl
ld hl, (ix - 27)
ld hl, (hl)
ld de, 2
push de
ld de, (ix - 30)
push de
push hl
call _print
ld bc, (ix - 30)
ld de, 4
pop hl
pop hl
pop hl
inc bc
ld iy, (ix - 27)
lea iy, iy + 3
ld (ix - 27), iy
jq BB2_8
BB2_10:
or a, a
sbc hl, hl
push hl
ld hl, 5
push hl
ld hl, L_.str.6
push hl
call _print
pop hl
pop hl
pop hl
ld hl, (ix - 33)
ld sp, ix
pop ix
ret
section .text,"ax",@progbits
section .text,"ax",@progbits
public _get_input
_get_input:
ld hl, -43
call __frameset
ld iy, -720868
or a, a
sbc hl, hl
lea de, ix - 25
ld (ix - 43), de
ld (ix - 37), hl
ld (ix - 40), hl
BB3_1:
ld l, (iy)
ld h, (iy + 1)
ld (ix - 31), hl
ld hl, -720866
push de
ld e, (hl)
inc hl
ld d, (hl)
ld l, e
ld h, d
pop de
ld (ix - 28), hl
call _kb_Scan
ld iy, -720868
ld l, (iy)
ld h, (iy + 1)
ld (ix - 34), hl
ld hl, -720866
ld e, (hl)
inc hl
ld d, (hl)
ld bc, (ix - 31)
ld a, c
cp a, 1
jq z, BB3_4
ld hl, (ix - 34)
ld a, l
cp a, 1
jq nz, BB3_4
ld hl, (ix - 37)
push hl
ld hl, L_.str.7
push hl
ld hl, (ix - 43)
push hl
ld (ix - 31), de
call ___sprintf
pop hl
pop hl
pop hl
ld hl, 17
push hl
ld hl, 5
push hl
ld hl, (ix - 43)
push hl
call _print
ld de, (ix - 31)
ld iy, -720868
pop hl
pop hl
pop hl
ld hl, (ix - 37)
inc hl
ld (ix - 37), hl
BB3_4:
ld a, e
ld hl, (ix - 28)
xor a, l
or a, a
jq z, BB3_10
ld a, e
cp a, 1
ld hl, 4
jq z, BB3_8
ld a, e
cp a, 8
jq nz, BB3_9
ld hl, 3
BB3_8:
ld de, (ix - 40)
push de
push hl
call _print_ui
ld (ix - 40), hl
pop hl
pop hl
BB3_9:
ld iy, -720868
BB3_10:
ld l, (iy)
ld h, (iy + 1)
ld a, l
cp a, 64
jq nz, BB3_1
ld sp, ix
pop ix
ret
section .text,"ax",@progbits
section .text,"ax",@progbits
public _main
_main:
ld iy, -3145600
call _os_ClrLCD
call _os_HomeUp
call _os_DrawStatusBar
or a, a
sbc hl, hl
push hl
push hl
call _print_ui
pop hl
pop hl
call _get_input
BB4_1:
call _os_GetCSC
or a, a
jq z, BB4_1
or a, a
sbc hl, hl
ret
section .text,"ax",@progbits
section .rodata,"a",@progbits
private L_.str
L_.str:
db " ", 0
section .rodata,"a",@progbits
private L_.str.1
L_.str.1:
db "Test: ", 0
section .rodata,"a",@progbits
private L_.str.2
L_.str.2:
db "[ ] one", 0
section .rodata,"a",@progbits
private L_.str.3
L_.str.3:
db "[ ] two", 0
section .rodata,"a",@progbits
private L_.str.4
L_.str.4:
db "[ ] three", 0
section .rodata,"a",@progbits
private L_.str.5
L_.str.5:
db "[x] three", 0
section .rodata,"a",@progbits
private L_.str.6
L_.str.6:
db "<Enter> pressed: ", 0
section .rodata,"a",@progbits
private L_.str.7
L_.str.7:
db "%d", 0
ident "clang version 14.0.0 (https://github.com/jacobly0/llvm-project a139def90d26173f771eb1eca797633d1fbb2797)"
extern _os_DrawStatusBar
extern __Unwind_SjLj_Register
extern _os_ClrLCD
extern __Unwind_SjLj_Unregister
extern __frameset
extern _os_PutStrFull
extern __imulu
extern _kb_Scan
extern ___sprintf
extern __frameset0
extern _os_HomeUp
extern _os_SetCursorPos
extern _os_GetCSC

136
src/main.c Normal file
View File

@ -0,0 +1,136 @@
/*
*--------------------------------------
* Program Name: MY_PROGRAM
* Author: Erin L. Nova
* License: CNPLv7+
* Description: A test TI-84 program
*--------------------------------------
*/
#include <tice.h>
#include <keypadc.h>
#include <stdio.h>
enum Directions {
None,
Left,
Right,
Up,
Down,
};
int print(const char *string, int x, int y) { // Function to easily print to a location on screen
os_SetCursorPos(x, y);
os_PutStrFull(string);
return 0;
}
int clearLine(int x) {
os_SetCursorPos(x, 0);
os_PutStrFull(" ");
return 0;
}
int print_ui(enum Directions direction, int prev_index) {
os_SetCursorPos(0, 0); // Reset cursor position
print("Test: ", 0, 0);
int index = prev_index;
int num_items = 3;
char *items[8];
items[0] = "\[ ] one";
items[1] = "\[ ] two";
items[2] = "\[ ] three";
switch (direction) {
case Down:
if (index != num_items-1) {
index++;
} else {
index = 0;
}
break;
case Up:
if (index != 0) {
index--;
} else {
index = num_items-1;
}
break;
}
items[index] = "\[x] three";
int i;
for (i = 0; i < num_items; i++) {
clearLine(i+1);
print(items[i], i+1, 2);
}
print("<Enter> pressed: ", num_items+2, 0);
return index;
}
void get_input() {
// Key variable
kb_key_t key, dir_key, prev_key, prev_dir_key;
int counter = 0;
int index = 0;
// Loop until 2nd is pressed
do {
// Update kb_Data
prev_key = kb_Data[6];
prev_dir_key = kb_Data[7];
kb_Scan();
// Load group registers
key = kb_Data[6];
dir_key = kb_Data[7];
char str[25];
// Make sure it's a new press
if (key != prev_key) {
// Check what key it is
switch (key) {
case kb_Enter:
sprintf(str, "%d", counter);
print(str, 5, 17);
counter++;
break;
default:
break;
}
}
// Make sure it's a new press
if (dir_key != prev_dir_key) {
// Check what key it is
switch (dir_key) {
case kb_Down:
index = print_ui(Down, index);
break;
case kb_Up:
index = print_ui(Up, index);
break;
}
}
} while (kb_Data[6] != kb_Clear);
}
int main(void) {
os_ClrHome(); // Clear the screen
print_ui(None, 0);
get_input();
// Wait for input
while (!os_GetCSC());
return 0;
}