Ti Constructor
 
Loading...
Searching...
No Matches
variables.c
Go to the documentation of this file.
1#pragma once
6#define addRealObj(xxxxxxxxxx) ("\x00" xxxxxxxxxx)
7#define addListObj(xxxxxxxxxx) ("\x01" xxxxxxxxxx)
8#define addMatObj(xxxxxxxxxx) ("\x02" xxxxxxxxxx)
9#define addEquObj(xxxxxxxxxx) ("\x03" xxxxxxxxxx)
10#define addStrngObj(xxxxxxxxxx) ("\x04" xxxxxxxxxx)
11#define addProgObj(xxxxxxxxxx) ("\x05" xxxxxxxxxx)
12#define addProtProgObj(xxxxxxxxxx) ("\x06" xxxxxxxxxx)
13#define addPictObj(xxxxxxxxxx) ("\x07" xxxxxxxxxx)
14#define addGDBObj(xxxxxxxxxx) ("\x08" xxxxxxxxxx)
15#define addUnknownObj(xxxxxxxxxx) ("\x09" xxxxxxxxxx)
16#define addUnknownEquObj(xxxxxxxxxx) ("\x0A" xxxxxxxxxx)
17#define addNewEquObj(xxxxxxxxxx) ("\x0B" xxxxxxxxxx)
18#define addCplxObj(xxxxxxxxxx) ("\x0C" xxxxxxxxxx)
19#define addCListObj(xxxxxxxxxx) ("\x0D" xxxxxxxxxx)
20#define addUndefObj(xxxxxxxxxx) ("\x0E" xxxxxxxxxx)
21#define addWindowObj(xxxxxxxxxx) ("\x0F" xxxxxxxxxx)
22#define addZStoObj(xxxxxxxxxx) ("\x10" xxxxxxxxxx)
23#define addTblRngObj(xxxxxxxxxx) ("\x11" xxxxxxxxxx)
24#define addLCDObj(xxxxxxxxxx) ("\x12" xxxxxxxxxx)
25#define addBackupObj(xxxxxxxxxx) ("\x13" xxxxxxxxxx)
26#define addAppObj(xxxxxxxxxx) ("\x14" xxxxxxxxxx)
27#define addAppVarObj(xxxxxxxxxx) ("\x15" xxxxxxxxxx)
28#define addTempProgObj(xxxxxxxxxx) ("\x16" xxxxxxxxxx)
29#define addGroupObj(xxxxxxxxxx) ("\x17" xxxxxxxxxx)
30
46char* getOrCreateVar(char* name, int size)__naked{
47 #asm
48 pop de
49 pop hl
50 push hl
51 push de
52
53
54
55 rst rMOV9TOOP1
56 abcall(_ChkFindSym)
57 jr c,notfound
58 ex de,hl
59 xor a
60 cp b
61 jr z,unarchived
62
63
64 di
65
66 exx
67 push ix
68 abcall(_Arc_Unarc)
69 pop ix
70 exx
71
72 ei
73 jp _getOrCreateVar
74
75
76 unarchived:
77
78 ret
79
80 notfound:
81 pop de
82 pop bc
83 pop hl // hl = size
84 push hl
85 push bc
86 push de
87
88 ld a, (bc)
89 abcall(_CreateVar) // old _CreateAppVar
90 jp _getOrCreateVar
91
92
93
94 #endasm
95}
96
105// took me 7 hours to figure out, but _Arc_Unarc destroys everything and it is better off to let it destroy the shadow registers instead, otherwise everything crashes
106void archive(char* name)__naked{
107 #asm
108 pop de
109 pop hl
110 push hl
111 push de
112
113 rst 0x20 ; Mov9ToOP1
114 di
115
116 exx
117 push ix
118 abcall(_Arc_Unarc)
119 pop ix
120 exx
121
122 ei
123 ret
124
125 #endasm
126
127}
128
134void delete(char* name)__naked{
135 #asm
136 pop de
137 pop hl
138 push hl
139 push de
140
141 rst 0x20 ; Mov9ToOP1
142 abcall(_ChkFindSym)
143 abcall(_DelVar)
144 ret
145 #endasm
146}
#define abcall(__LABEL__)
The asm for a bcall.
Definition essentials.c:71
void archive(char *name) __naked
Toggles if a var is archived.
Definition variables.c:106
char * getOrCreateVar(char *name, int size) __naked
Gets a var or creates one a given size.
Definition variables.c:46