Hello, wellcome to APL11 for the QL. I made a couple of changes to adapt this better for the QL, namely: chr$(127) - that is the QL copyright char, shift-ESC on my keyboard has now the same function as to make life with QL editors easier. ( and c127 are used for overstrike chars) '_' can be part of name(used to be assign operator), needed to be done for filehandling This APL11 port is the first 'real' program that uses my signal extension to QDOS, it is absolutely cool. To use the signals install as lrespr signal_cde ert hot_res(chr$(236),sutil) ; alt-F2 ; and ex apl You may now do alt-F2, that opens a small menue, press ENTER for SIGINT or select one of the other signals. Due to the way APL11 tries to discard buffers(lseek()), they don't get discarded on con_ devices. SIGINT is hadled pretty restrictive by APL11, it can take a while before it actually interrupts the execution. The other signals eg SIGTERM get handled immediately but will kill APL11 after saving the workspace. Oh and don't forget '}' after a SIGINT, otherwise you remain in the suspended function. If you don't have ptr_gen you can use APL11 itself to send signals to itself or another APL11s with the command jobid Lkill signr The functionality of signal and kill is implemented in asig.c, I have actually a better version at home, only problem it does not yet work. Examples -------- For some mysterious reason the C comment char doesn't seem to work. always denotes 1 of ctl-h, chr$(127) - see above a{1 2 3 C assign a vector to a b{3 4 5 C b a+b C skalar addition aXb C mult a%b C division aJ.*b C inner produkt now, we want a factorial function: )editf fac C this brings us into the Editor, C eventually you need to setenv "EDITOR=..." C from SB (before starting apl) C once in that editor enter r { fac x ; a C r is result var, x is par, a local var } ((x<2),(x>1))/(rc,rt1) C read from right to left, compress the rc: r{ xXfac(x-1) C ..vector of the linenumbers with the cond vector }ret C '}' goto takes 1 arg(line number) rt1: r{ 1 ret: C editing in a file and )read fac may be more convenient fac 14 C try it )list fac )code fac f{Lcr 'fac' C now I am obscure, get function list as matrix f C print it \ C transpose it !! O| C and rotate f[1;] f[;1] C better no comment, well (,f)[V|f] C .. this may be usefull(sorting it) there are of course better ways to get the factorial, try r{fac x C anothe function def r{ X/Ix C generate vector, reduce-mul it the best way is to use '!': ! 1 2 3 4 5 ! (-1.5) C negative need the QL-BackQuota char, I dont C have it here offline )fns )vars )memory now a few matrix operations a{4 4R16?17 C random matrix L% C invert it b{I4 x{bL%a C solve ax=b (a+.Xx)-b C .. is that true? a{5 4R20?21 Ra C now we have 5x4 b{I5 x{bL%a C solve this!!! (approx)