| Register | FAQ | Calendar | Search | Today's Posts | Mark Forums Read |
|
#1
| |||
| |||
| For some time now, I've been working with Prof. Paul Penfield at MIT to make the "MARTHA" APL circuit analysis software available on the web (http://www.marthallama.org). The initial version is designed to run using APLSE to keep the entry bar as low as possible. One of the hurdles has been figuring out how to get APLSE to run seamlessly in Windows XP. Microsoft changed the way their DOS emulator worked when they went to XP, and that broke some key functionality. Getting the APL characters to work was tricky to figure out, but I _thought_ I had it all sorted out & documented. I just got handed a new PC at work, and I couldn't get the fonts working (using my own instructions). After a couple of weeks of cursing & tinkering, I found the missing piece. It turns out the default for the DOS emulator is to set the screen buffer to 300 lines. The APLFONT program is expecting a 25 line VGA, and it gets confused. There are several ways of fixing this (including an obscure one I had used but failed to document). In any event, I now have what I hope is a complete set of files & instructions to run APLSE (or APL*PLUS/PC) in Windows XP. I'm still fighting with getting more memory. Playing with expanded & extended memory settings in the shortcut doesn't seem to help. At least the APL characters work well now both in full screen and in a window. I wrote a test routine using APL*PLUS/PC's run-time interpreter, and I've verified that the characters work on a variety of modern systems. So, if anyone wants a free APL to play with on Windows XP, you can find (hopefully) everything you need here: http://marthallama.org/apl/ Please let me know if you have any problems, and I'd love to hear of any tricks to get more memory free. P.S. Someone has reported getting some flavor of DOS APL working in Vista, but I don't know to what degree, or how they did it. Doug White |
|
#2
| |||
| |||
| I have never used MARTHA, don't know the details of how it works, so perhaps my suggestions are completely wrong. Back in the 1970s, in our timesharing company, whose clients typically used 300 and 1200 baud printing or display terminals, virtually all of the interactive software was designed to work without the presence of the full APL character set. Of course, this was long before windows, IBM 3270s, and so on. But provided the user does not have to do "real" APL programming to use MARTHA and is instead writing "scripts", I would imagine the same sort of design principles could be used here, sidestepping all of that difficulty (and bad language) inherent in getting the APL character set to work. Certainly in the APL*Plus/PC system it would be possible to write small cover functions to sandwich interactive script editing between symbol substitution programs and so on. It may not be as pretty as The Real Thing, but I imagine that with a well thought out substitution scheme, the potential for growing the MARTHA user base (and improving APL's reputation) is there. I'd be happy to have a look at MARTHA more closely. More memory free: This was an excellent product as it worked as well as it did with only 640K of main memory. STSC later released the APL*Plus\386 system shortly, when suitable machines came out. This solved the memory problem. I think you have two options which you can exploit, which won't add to memory, but rather better use the memory that you have. Firstly, you can exploit the fact that whatever XP machine you are running is several orders of magnitude faster than the DOS PC the APL software was designed for. And you can get away with things which would have been too slow. If you have large functions, you can do a kind of demand paging. For example, suppose the FOO function is huge but infrequently used. You could easily make a function paging file, storing one function per component. Presumably, there won't be that many functions like this. Suppose the "inner" (big) FOO function goes to component 12. Your "outer" (little) FOO function could look something like this: Z := L FOO R;FOO [1] 'C:\myfiles\aplprog' []FSTIE 1 [2] []DEF []FREAD 1 12 [3] []FUNTIE 1 [4] Z := L FOO R (You see, I don't go for the APL character set when it's not practical to use it. Similarly, I don't like the format which vaguely looks like RTF with all the stuff in curly braces A{is}{boing}{camouflage} {distemper}{squiggle}N+Z{grunt}{gorgonzola}X) Back to paging, you are trading space for time. If you have large static in-memory matrices, you can do the same sort of thing. Same for large temporary matrices. Also, be sure to stick with 8.3 file naming conventions. Secondly, although I haven't tried this, you can probably have a lot of DOS APL sessions open on your multi-gigabyte XP computer. I would imagine you can write a program which does the following: Take an expression Write the expression to a new component file Wait until the following is done Start another APL session Load a workspace Read that component file Execute the expression Put the answer in the component file Close the APL session Read the answer from the component file Erase the file Return the answer Otherwise, I would suggest providing versions of MARTHA for use with the Dyalog £50 Personal Edition and the free personal APLX for Linux. |
![]() |
| Thread Tools | |
| Display Modes | |
In an effort to better serve ads to our visitors, cookies are used on objectmix.com. For more information, check out our Privacy Policy.