**********************************************************************
* Name: SYS
* Stack:
* Desc: SYSEVAL shorthand + float conversions
**********************************************************************
ASSEMBLE
CON(1) 8
RPL
xNAME SYS
::
CK1&Dispatch
hxs XEQSYSEVAL
bint SYSEVAL
real %>%%
ereal %%>%
ecmp C%%>C%
cmp
::
C%>%% GX? ITE G_%%>C%% %%>C%%
;
arry
::
DUP ELEMENTTYPE
TYPEREAL #=casedrop
::
DUP DIMLIMITS %%0 MAKEARRY
CODE
GOSBVL =PopASavptr
C=DAT1 A ->short
DAT1=A A Return ->long
D0=C ->short
D1=A ->long
D0=D0+ 15
D1=D1+ 5
C=DAT1 A
C=C+A A
D=C A ->longend-5
D1=D1+ 10
A=DAT0 A
A=A+1 A dims+1
C=A A
C=C+C A
C=C+C A
A=A+C A
CD0EX skip dimensions
C=C+A A
CD1EX
C=C+A A
-- D0=C
A=DAT1 W short
D1=D1+ 16
GOSBVL =SPLITA long
SETHEX
GOSBVL =PUTAB0 store
CD0EX
?C<D A
GOYES --
GOVLNG =GETPTRLOOP
ENDCODE
;
TYPEEREL #=casedrop
::
DUP DIMLIMITS %0 MAKEARRY
DUP ARSIZE #1+_ONE_DO (DO)
INDEX@ 3PICK GETATELN DROP
%%>% INDEX@ PUTREALEL
LOOP
SWAPDROP
;
SETTYPEERR
;
;
**********************************************************************