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