File: ion.inc - Tab length: 1 2 4 8 - Lines: on off - No wrap: on off

; The Ion Include File by Dan Englender

;----> Safe Memory Areas
; saferam1 = 768 bytes (apdram)
; saferam2 = 531 bytes (statram)
; saferam3 = 128 bytes (textmem)
; saferam4 = 66 bytes (ops)
; saferam5 = 10 bytes (imathptrs)

#ifdef  TI83
#define bcall(xxxx)     call xxxx
#define bcallz(xxxx)    call    z,xxxx
#define bcallnz(xxxx)   call    nz,xxxx
#define bcallc(xxxx)    call    c,xxxx
#define bcallnc(xxxx)   call    nc,xxxx
#define bjump(xxxx)     jp xxxx
 .addinstr BCALL *       CD   3 NOP 1
_htimesl        =$4382
usermemoff      =$8565
progstart       =9327h
libstart        =$0002
saferam1        =8265h
saferam2        =858Fh
saferam3        =80C9h
saferam4        =8039h
_zeroop1        =428Eh
_getcsc         =$4014
_homeup         =$4775
_newline        =$473D
_darkline       =$4AE0
_indicatorOff   =$4795
_indicatorOn    =$4791
_cleargbuf      =515Bh
_copygbuf       =4B9Ch
_clrlcdf        =4755h
_cleartextshad  =4765h
_clrscr         =4759h
_clrscrf        =475Dh
_cline          =4A84h
_iline          =4AE4h
_ipoint         =4AE8h
_ldhlind        =4000h
_divhlby10      =4008h
_cphlde         =4004h
_disphl         =4709h
_divhlbya       =400Ch
_hltimes9       =4146h
_vputmap        =477Dh
_vputs          =4781h
_vputsn         =4785h
_putmap         =4701h
_puts           =470Dh
_putps          =4715h
_parseinp       =$4E8C
_putc           =4705h
_getkey         =4CFEh
_getk           =4A18h
_rcly           =4EE0h
_rclx           =4EE8h
_memfree        =441Ah
_chksysvar      =442Ah
_findsym        =442Eh
_creategdb      =4486h
_createprog     =448Ah
_createreal     =4452h
_createstring   =4472h
_delvar         =44AAh
_insertmem      =4432h
_deletemem      =44B2h
_lcdbusy        =4066h
ptemp           =9317h
op1             =8039h
op2             =8044h
op3             =804Fh
op4             =805Ah
op5             =8065h
op6             =8070h
imathptr1       =8094h
imathptr2       =8096h
imathptr3       =8098h
imathptr4       =809Ah
imathptr5       =809Ch
progptr         =9319h
cmdshad         =9157h
plotsscreen     =8E29h
symtable        =$FE6E
currow          =800Ch
curcol          =800Dh
pencol          =8252h
penrow          =8253h
curgy           =886Dh
curgx           =886Eh
_op1toop2       =$418E
_op1toop3       =$417E
_op1toop4       =$416E
_op1toop5       =$41BE
_op1toop6       =$41BA
_op2toop1       =$41C2
_op2toop3       =$41F6
_op2toop4       =$4172
_op2toop5       =$41B2
_op2toop6       =$41B6
_op3toop1       =$41A2
_op3toop2       =$417A
_op3toop4       =$416A
_op3toop5       =$41AE
_op4toop1       =$419A
_op4toop2       =$4176
_op4toop3       =$41FA
_op4toop5       =$41AA
_op4toop6       =$4202
_op5toop1       =$419E
_op5toop2       =$4182
_op5toop3       =$41FE
_op5toop4       =$418A
_op5toop6       =$4186
_op6toop1       =$4196
_op6toop2       =$4192
_op6toop5       =$41A6
_op1exop2       =$4306
_op1exop3       =$42FE
_op1exop4       =$4302
_op1exop5       =$42EE
_op1exop6       =$42F2
_op2exop4       =$42F6
_op2exop5       =$42FA
_op2exop6       =$42E6
_op5exop6       =$42EA
_PUSHREALO1        .EQU           4536h
_PUSHREALO4        .EQU           452Ah
_POPREALO2         .EQU           44FAh
_POPREALO5         .EQU           44EEh
_PUSHREALO2        .EQU           4532h
_PUSHREALO5        .EQU           4526h
_POPREALO3         .EQU           44F6h
_POPREALO6         .EQU           44EAh
_PUSHREALO3        .EQU           452Eh
_PUSHREALO6        .EQU           4522h
_POPREALO1         .EQU           44FEh
_POPREALO4         .EQU           44F2h
_FPMULT            .EQU           40AAh
_FPADD             .EQU           4092h

_OP1SET0           .EQU           4286h

_SIN               .EQU           40F6h
_op1set1        =$4232
_op1set2        =$4242
_op1set3        =$423A
_op1set4        =$4236
_op2set0        =$4282
_op2set1        =$4252
_op2set2        =$4246
_op2set3        =$422E
_op2set4        =$422A
_op2set5        =$4222
_op2set8        =$421E
_op2set60       =$4EA8
_op2setA        =$4226
_op3set0        =$427E
_op3set1        =$421A
_op3set2        =$423E
_op4set0        =$427A
_op4set1        =$4216
_op5set0        =$4276
_pushop1        =$454A
_pushop3        =$4542
_popop1         =$44E6
_popop3         =$44E2
_setxxop1       =$4A74
_setxxop2       =$4A78
_setxxxxop2     =$4A7C
_dispop1a       =$51D4
_mov9toop1      =$4206
contrast        =$8008
#endif
#ifdef  TI83P
#define bcall(xxxx)     rst 28h \ .dw xxxx
#define bcallz(xxxx)    jr nz,$+5 \ rst 28h \ .dw xxxx
#define bcallnz(xxxx)   jr      z,$+5 \ rst 28h \ .dw xxxx
#define bcallc(xxxx)    jr      nc,$+5 \ rst 28h \ .dw xxxx
#define bcallnc(xxxx)   jr      c,$+5   \ rst 28h \ .dw xxxx
#define bjump(xxxx)     call 50h \ .dw xxxx
 .addinstr BCALL *       EF   3 NOP 1
appBackupScreen =$9872  ; 768 bytes
_ldhlind        =$4009
_htimesl        =$4276
_convop1        =$4AEF
contrast        =8447h
_darkline       =$47DD
_darkpoint      =$47F2
_archUnarch     =$4FD8
_enoughRam      =$42FD
usermemoff      =$89EC
libstart        =$0004
progstart       =9D95h
;saferam1       =86ECh
saferam1        =9872h
saferam2        =858fh
saferam3        =8508h
saferam4        =8478h
saferamp        =9872h
saferamp2       =8251h
_homeup         =$4558
_newline        =$452E
_cleargbuf      =4BD0h
_indicatorOn    =456Dh
_indicatorOff   =4570h
_copygbuf       =486Ah
_clrlcdf        =4540h
_cleartextshad  =454Ch
_clrscr         =4543h
_clrscrf        =4546h
_cline          =4798h
_iline          =47E0h
_ipoint         =47E3h
_ParseInp       =4A9Bh
_divhlby10      =400Fh
_cphlde         =400Ch
_disphl         =4507h
_divhlbya       =4012h
_hltimes9       =40F9h
_vputmap        =455Eh
_vputs          =4561h
_vputsn         =4564h
_putmap         =4501h
_puts           =450Ah
_putps          =4510h
_putc           =4504h
_getkey         =4972h
_getk           =4744h
_getcsc         =4018h
;_RCLY          =4EE0h
;_RCLX          =4EE8h
_memfree        =$42E5
_chksysvar      =42F1h
_findsym        =42F4h
;_CREATEGDB     =4486h
;_CREATEREAL    =4452h
;_CREATESTRNG   =4472h
_createprog     =$4339
_createprotprog =$4E6D
_delvar         =4351h
_insertmem      =42F7h
_deletemem      =4357h
_lcdbusy        =4051h
op1             =8478h
op2             =8483h
op3             =8499h
op4             =8499h
op5             =84A4h
op6             =84AFh
imathptr1       =84D3h
imathptr2       =84D5h
imathptr3       =84D7h
imathptr4       =84D9h
imathptr5       =84DBh
progptr         =9830h
cmdshad         =966Eh
plotsscreen     =9340h
symtable        =$FE6E
currow          =844Bh
curcol          =844Ch
pencol          =86D7h
penrow          =86D8h
curgy           =8D18h
curgx           =8D19h
_PushRealO1     .equ 43BAh
_PushRealO2     .equ 43B7h
_PushRealO3     .equ 43B4h
_PushRealO4     .equ 43B1h
_PushRealO5     .equ 43AEh
_PushRealO6     .equ 43ABh
_FPAdd  .equ 4072h
_FPDiv  .equ 4099h
_FPMult .equ 4084h
_OP1ExOP4       .equ 421Ch
_OP1Set0        .equ 41BFh
_OP3SET2        .equ 41A4h
_PopRealO1      =4390h
_PopRealO2      =438Dh
_PopRealO3      =438Ah
_PopRealO4      =4387h
_PopRealO5      =4384h
_PopRealO6      =4381h
_op5exop6       =420Ah
_op5set0        =41B3h
_cpop1op2       =$4111
_op3toop4       =$4114
_op1toop4       =$4117
_op2toop4       =$411A
_op4toop2       =$411D
_op3toop2       =$4120
_op1toop3       =$4123
_op5toop2       =$4126
_op5toop6       =$4129
_op5toop4       =$412C
_op1toop2       =$412F
_op6toop2       =$4132
_op6toop1       =$4135
_op4toop1       =$4138
_op5toop1       =$413B
_op3toop1       =$413E
_op6toop5       =$4141
_op4toop5       =$4144
_op3toop5       =$4147
_op2toop5       =$414A
_op2toop6       =$414D
_op1toop6       =$4150
_op1toop5       =$4153
_op2toop1       =$4156
_op2toop3       =$416E
_op4toop3       =$4171
_op5toop3       =$4174
_op4toop6       =$4177
_OP1Set1        .equ 419Bh
_OP1Set2        .equ 41A7h
_OP1Set3        .equ 41A1h
_OP1Set4        .equ 419Eh
_pushop1        =$43C9
_popop1         =$437E
_arc_unarc      .equ 4FD8h
_sin            =40BDh
_zeroop1        =$41C5
_zeroop2        =$41C8
_zeroop3        =$41CB
_setxxop1       =$478C
_setxxop2       =$478F
_setxxxxop2     =$4792
_dispop1a       =4BF7h
_mov9toop1      =$417A
_delvararc      =$4fC6
ptemp           =982Eh
#endif
grbuf           =plotsscreen
graph_mem       =plotsscreen
gbuf            =plotsscreen
sram            =saferam1
apdram          =saferam1
statram         =saferam2
statvars        =saferam2
vat             =progptr
saferam5        =imathptr1
_grbufcpy       =_copygbuf
_grbufclr       =_cleargbuf
_clrlcdfull     =_clrlcdf
_clrscrnfull    =_clrscrf
_chkfindsym     =_chksysvar
textshadow      =saferam3
savesscreen     =saferam1
;-----> Ion Functions
lVectors        =cmdshad+80
ionVersion      =lVectors
ionRandom       =lVectors+3
ionPutSprite    =lVectors+6
ionLargeSprite  =lVectors+9
ionGetPixel     =lVectors+12
ionFastCopy     =lVectors+15
ionDetect       =lVectors+18
ionDecompress   =lVectors+21


trigflags       .EQU       0           ; IY OFFSET VALUE
trigdeg         .EQU       2
;
plotflags       .EQU       2           ; IY OFFSET VALUE
plotloc         .EQU       1
plotdisp        .EQU       2
;
grfmodeflags    .EQU       2           ; IY OFFSET VALUE
grffuncm        .EQU       4
grfpolarm       .EQU       5
grfparamm       .EQU       6
grfrecurm       .EQU       7
;
graphflags      .EQU       3           ; IY OFFSET VALUE
graphdraw       .EQU       0
graphcursor     .EQU       2
;
grfdbflags      .EQU       4           ; IY OFFSET VALUE
grfdot          .EQU       0
grfsimul        .EQU       1
grfgrid         .EQU       2
grfpolar        .EQU       3
grfnocoord      .EQU       4
grfnoaxis       .EQU       5
grflabel        .EQU       6
;
textflags       .EQU       5           ; IY OFFSET VALUE
textEraseBelow  .EQU       1
textScrolled    .EQU       2
textInverse     .EQU       3
;
onflags         .EQU       9           ; IY OFFSET VALUE
onRunning       .EQU       3
onInterrupt     .EQU       4
;
statflags       .EQU       9           ; IY OFFSET VALUE
statsvalid      .EQU       6
;
fmtflags        .EQU       10          ; IY OFFSET VALUE
fmtExponent     .EQU       0
fmtEng          .EQU       1
;
nummode         .EQU       10          ; IY OFFSET VALUE
FMTREAL         .EQU       5
FMTRECT         .EQU       6
FMTPOLAR        .EQU       7
;
curflags        .EQU       12          ; IY OFFSET VALUE
curAble         .EQU       2
curOn           .EQU       3
curLock         .EQU       4
;
appflags        .EQU       13          ; IY OFFSET VALUE
appTextSave     .EQU       1
appAutoScroll   .EQU       2
;
PLOTFLAG2       .EQU       17          ; IY OFFSET VALUE
EXPR_PARAM      .EQU       3
EXPR_WRITING    .EQU       4
;
indicflags      .EQU       18          ; IY OFFSET VALUE
indicRun        .EQU       0
indicOnly       .EQU       2
;
shiftflags      .EQU       18          ; IY OFFSET VALUE
shift2nd        .EQU       3
shiftAlpha      .EQU       4
shiftALock      .EQU       6
;
tblflags        .EQU       19          ; IY OFFSET VALUE
AutoFill        .EQU       4
AutoCalc        .EQU       5
;
sgrflags        .EQU       20          ; IY OFFSET VALUE
grfSplit        .EQU       0
VertSplit       .EQU       1
WRITE_ON_GRAPH  .EQU       4
textwrite       .EQU       7
;
asm_flag1       .EQU       33          ; IY OFFSET VALUE
asm_flag1_0     .EQU       0
asm_flag1_1     .EQU       1
asm_flag1_2     .EQU       2
asm_flag1_3     .EQU       3
asm_flag1_4     .EQU       4
asm_flag1_5     .EQU       5
asm_flag1_6     .EQU       6
asm_flag1_7     .EQU       7
;
asm_flag2       .EQU       34          ; IY OFFSET VALUE
asm_flag2_0     .EQU       0
asm_flag2_1     .EQU       1
asm_flag2_2     .EQU       2
asm_flag2_3     .EQU       3
asm_flag2_4     .EQU       4
asm_flag2_5     .EQU       5
asm_flag2_6     .EQU       6
asm_flag2_7     .EQU       7
;
asm_flag3       .EQU       35          ; IY OFFSET VALUE
asm_flag3_0     .EQU       0
asm_flag3_1     .EQU       1
asm_flag3_2     .EQU       2
asm_flag3_3     .EQU       3
asm_flag3_4     .EQU       4
asm_flag3_5     .EQU       5
asm_flag3_6     .EQU       6
asm_flag3_7     .EQU       7