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