It is currently Tue Mar 19, 2024 2:23 am


All times are UTC - 8 hours [ DST ]




Post new topic Reply to topic  [ 8 posts ] 
Author Message
 Post subject: What is the initial design for MASH ?
PostPosted: Wed Dec 08, 2010 9:58 am 
User avatar

Joined: Wed Nov 17, 2010 4:02 pm
Posts: 71
Location: Houston TX
Real Name: David Whitten
Began Programming in MUMPS: 06 Jan 1982
I expect that MASH is intended to be an enhanced command line, and it is intended to be written in MUMPS. The David Bolduc's Victory Programming Environment does something like this.

VPE allows a programmer to do many things. This information is from VPE version 10.

1) Command Line History - ability to retrieve previous commands issued and re use them.
2) QWIK Commands - user defined commands either per person or for the entire shop (system)
3) Online help for FileMan and Kernel.
4) Vendor Generic Utilities to manipulate routines, globals, and FileMan Files.

5) Example KWIKs are:
5.1) VShell
5.2) VGL
5.3) VRR
5.4) VEDD

S Y S T E M Q W I K S
System QWIKs come with the VShell. To invoke a System QWIK, type two dots
followed by the name. For example, to run VGL you would type ..VGL.
The following is a list of the available System QWIKs, grouped by category:

1.) QWIK RELATED

QB Assign User QWIKs to a Box. See BOXES help text.
QC Copy a QWIK.
QD Delete a QWIK.
QE Add/Edit a QWIK. Same as <TAB>.
QL1 List User QWIKs/Description - Same as <F1>1.
QL2 List User QWIKs/Code - Same as <F1>2.
QL3 List System QWIKs/Description - Same as <F1>3.
QL4 List System QWIKs/Code - Same as <F1>4.
QSAVE Saves your User QWIKs to a routine. Use for back-up or to send your
QWIKs to another programmer. This option also restores previously
saved QWIKs.
QV Create QWIKs that will run on different vendors' Mumps systems. See
VENDOR SPECIFIC CONFIGURATIONS help text.
QVL List Vendor Specific Code for QWIKs set up with QV.

2.) SHELL RELATED

CLH Resequences your Command Line History. The VShell saves your last 20
commands. As new commands are added and old commands dropped, the
sequence number of each entry can get large. You may type ..CLH
at anytime, to resequence the numbers back to 1-20.
DTMVT For DataTree users. If you Control C out of some DataTree utilities,
VT100 terminal emulation is no longer in effect and you will see
junk on the screen. Use this QWIK to reset your terminal to VT100.
PARAM Enter System Parameters. See MISCELLANEOUS help text.
PUR The VShell has it's own scratch area: ^%ZVEMS("%"). PUR will purge
older nodes left behind by a previous session.
PURVGL Purge VGL's Command Line History.
PURVRR Purge VRR's Command Line History.
PURVEDD Purge VEDD's Command Line History.
PURVSHL Purge Command Line History for the VShell.
UL List VShell Users, including DUZ and ID numbers.
VER Displays VShell version number.

3.) PROGRAMMER TOOLS

ASCII ASCII table display.
CAL 6 month calendar display.
E VRoutine Editor.
KEY Display escape sequence for any key pressed.
LBRY Routine Library. Used with ..E to help prevent routines from being
accidentily overwritten when there are multiple programmers working
on the same routines.
NOTES VPE programmer notes.
RL Routine Lister
RTN Start a new M routine. You may enter your lines of
code and it will prompt you for a routine name and save it to disk.
VEDD VElectronic Data Dictionary.
VGL VGlobal Lister.
VRR VRoutine Reader.
ZD Kill all local variables that start with %1(parameter).
ZP Use to ZPRINT a routine.
ZR Use to ZREMOVE from 1 to 9 routines.
ZW ZWRITE the symbol table. Writes the variables one page at a time.

4.) FILEMAN/VA KERNEL RELATED

FMC Fileman programmer calls.
FMTI Fileman Input Template display.
FMTP Fileman Print Template display.
FMTS Fileman Sort Template display.
LF VA KERNEL Libray Functions.
XQRT Help text for VA Kernel menu options.

5.) VENDOR GENERIC QWIKS

Pressing PF1 4 yields this table:
S Y S T E M Q W I K S (..QWIK) ID: 51487 BOX:
===============================================================================
1) ASCII 3 D ASCII^%ZVEMST
2) CAL 3 D CALENDAR^%ZVEMST
3) CLH 2 D CLH^%ZVEMSY1
4) DIC 4 D DICCALL^%ZVEMSU1
5) DOS 5 W $C(7),!?2,"Not available for this M Vendor.",!
6) DTMVT 2 Q:VEE("OS")'=9 Q:VEE("IO")'=1 U 1:VT=1
7) E 3 X ^%ZVEMS("E")
8) FMC 4 D ^%ZVEMSF
9) FMTI 4 D DIET^%ZVEMSU1
10) FMTP 4 D DIPT^%ZVEMSU1
11) FMTS 4 D DIBT^%ZVEMSU1
12) G 5 D ^%G
13) GCOPY 5 W $C(7),!?2,"Not available for this M Vendor.",!
14) GD 5 D ^%GD
15) GDE 5 W $C(7),!?2,"Not available for this M Vendor.",!
16) GEDIT 5 D ^%GED
17) GLB 5 D GLB^%ZVEMKT(%1,"SC",%2)
18) GR 5 D ^%GI
19) GS 5 W $C(7),!?2,"Not available for this M Vendor.",!
20) GSE 5 W $C(7),!?2,"Not available for this M Vendor.",!
21) GSEL 5 D ^%GSET
22) KEY 3 D KEY^%ZVEMSU1
23) LBRY 3 D ^%ZVEMRLM
24) LF 4 D ^%ZVEMSL
25) LOCKTAB 5 W $C(7),!?2,"Not available for this M Vendor.",!
26) NOTES 3 D HELP^%ZVEMKT("NOTES")
27) PARAM 2 D ^%ZVEMSP
28) PUR 2 D PURGE^%ZVEMSU
29) PURVEDD 2 KILL ^%ZVEMS("CLH",VEE("ID"),"VEDD")
30) PURVGL 2 KILL ^%ZVEMS("CLH",VEE("ID"),"VGL")
31) PURVRR 2 KILL ^%ZVEMS("CLH",VEE("ID"),"VRR")
32) PURVSHL 2 KILL ^%ZVEMS("CLH",VEE("ID"),"VSHL")
33) QB 1 D BOX^%ZVEMSQU
34) QC 1 D COPY^%ZVEMSQU
35) QD 1 D DELETE^%ZVEMSQU
36) QE 1 S VEESHC="<TAB>" D ^%ZVEMSQ
37) QL1 1 S VEESHC="<F1-1>" D ^%ZVEMSQ
38) QL2 1 S VEESHC="<F1-2>" D ^%ZVEMSQ
39) QL3 1 S VEESHC="<F1-3>" D ^%ZVEMSQ
40) QL4 1 S VEESHC="<F1-4>" D ^%ZVEMSQ
41) QSAVE 1 D SAVE^%ZVEMSS
42) QV 1 D VENDOR^%ZVEMSQV
43) QVL 1 D VENLIST^%ZVEMSQW
44) RCHANGE 5 D ^%RCHANGE
45) RCMP 5 D ^%RCMP
46) RCOPY 5 D ^%RCOPY
47) RD 5 D ^%RD
48) RDEL 5 D ^%RDELETE
49) RL 5 D ^%ZVEMSRL
50) RR 5 D ^%RI
51) RS 5 D ^%RO
52) RSEARCH 5 D ^%RFIND
53) RSEL 5 D ^%RSET
54) RSIZE 5 W $C(7),!?2,"Not available for this M Vendor.",!
55) RTN 5 D ^%ZVEMSNR
56) UCI 5 W $C(7),!?2,"Not available for this M Vendor.",!
57) UL 2 D LIST^%ZVEMSID
58) UTIL 5 W $C(7),!?2,"Not available for this M Vendor.",!
59) VEDD 3 D PARAM^%ZVEMD(%1,%2,%3)
60) VER 2 D VERSION^%ZVEMSU2
61) VGL 3 D PARAM^%ZVEMG(%1)
62) VRR 3 D PARAM^%ZVEMR(%1)
63) XQH 4 D XQH^%ZVEMST
64) ZD 3 D ^%ZVEMSD
65) ZP 3 D ZPRINT^%ZVEMSU2
66) ZR 3 Q:'$$ZREMOVE^%ZVEMSU2() NEW I,X F I=1:1:9 S X=@("%"_I) Q
:X']"" ZR ZS @X W !?2,X," Removed..."
67) ZW 3 D WRITE^%ZVEMSPS(%1)


Top
Offline Profile  
 
 Post subject: Re: What is the initial design for MASH ?
PostPosted: Fri Dec 10, 2010 4:37 pm 
Site Admin
User avatar

Joined: Mon Nov 01, 2010 1:39 pm
Posts: 16
Real Name: DL Wicksell
Began Programming in MUMPS: 15 Mar 2008
I'm the station chief for the MASH station. David, you are correct in that it will be something like VPE. The idea is that we are creating a M[UMPS] shell, analogous to a command line shell in an operating system. But we are also creating a kind of standard library for M[UMPS].

The shell will be a more powerful programmer mode, and should work for any implementation of M[UMPS]. It will be written in M[UMPS], and will be utilizing VPE code. In fact, I am currently refactoring, renamespacing, and adding functionality to the VPE code set. I have added a system QWIK, called ZInsert, which will allow someone to paste a routine into VPE, and have it do its normal syntax checking, etc. It is kind of a workaround for GT.M's lack of a routine buffer, though with much less functionality. I am also very close to having a full syntax highlighting feature working in VPE.

The MASH library is an attempt to provide a standard library of functionality to any M[UMPS] system. It will add functionality similar to routines that are provided with the various M[UMPS] implementations, but will provide an API, so that code can be written to be portable among the implementations. It will also abstract out low-level I/O functionality. The idea is that you can write your routines to call the MASH library for I/O, and the library will take care of whether you are connected to a terminal device, or a web browser, or a graphical client, or whatever. It will also be implementation agnostic. I already have a database that will handle I/O among any kind of terminal device in the UNIX/Linux world, though it isn't quite finished yet.

These are just a few of the ideas, and they are still in flux. If anyone has anything they'd like to see, or would like to help, feel free to let us all know here in the Mumpster forum. Thanks again for your interest in this project.

_________________
"If a thing is worth doing, it is worth doing badly." ~GK Chesterton

DL Wicksell
President / CEO
Fourth Watch Software, LC


Top
Offline Profile  
 
 Post subject: Re: What is the initial design for MASH ?
PostPosted: Thu Feb 03, 2011 2:40 pm 
User avatar

Joined: Mon Nov 01, 2010 3:33 pm
Posts: 104
Location: Australia
Real Name: Ray Newman
Began Programming in MUMPS: 01 Jul 1976
The MV1 distro has a very limited MCL (MUMPS command language). This is based around a much more complex MCL used in-house for development. If interested, I could supply a copy (which currently only works on MV1 but previously worked on DSM and MSM).

As for ZI, I prefer the MV1 approach of storing the routine source in ^$ROUTINE(rouname,n) = line of code for n = 1 to last line and ^$ROUTINE(rouname,0) = compiled code for that routine.

Ray Newman


Top
Offline Profile  
 
 Post subject: Re: What is the initial design for MASH ?
PostPosted: Fri Feb 04, 2011 1:58 pm 
Site Admin

Joined: Mon Nov 01, 2010 1:31 pm
Posts: 10
Location: Las Cruces, NM 88012 USA
Real Name: LD "Gus" Landis
Began Programming in MUMPS: 15 Aug 1991
Dear Ray,

This is sort of off topic for MASH...

I would very much appreciate any and all you have for "accessories"
to MUMPS V1! It would be a shame to lose any of what you have done.

I am happy to receive any items you have at ldlandis@gmail.com.
Thank you!

Cheers,
--ldl

_________________
3960 Schooner Loop 651-340-4007
Las Cruces, NM 88012-6067


Top
Offline Profile  
 
 Post subject: Re: What is the initial design for MASH ?
PostPosted: Thu Mar 31, 2011 1:36 pm 

Joined: Mon Jan 31, 2011 2:20 pm
Posts: 1
Real Name: Greg Kreis
Began Programming in MUMPS: 0- 0-1979
This is interesting... So is the refactoring of VPE going to create a rich library? Dave and I worked on VPE (he did all the coding) for many years and I use it all the time. I would LOVE to see the FM "// and replace with data" entry paradigm be replaced with calls to VPE and its support of data entry with cursor keys, even how it works with wrapped data.


Top
Offline Profile  
 
 Post subject: Re: What is the initial design for MASH ?
PostPosted: Wed Sep 05, 2012 12:04 pm 
Site Admin
User avatar

Joined: Mon Nov 01, 2010 1:39 pm
Posts: 16
Real Name: DL Wicksell
Began Programming in MUMPS: 15 Mar 2008
Yes Mr. Kreis, this is exactly what we had in mind. However, I haven't had time to look at this work in quite some time, and the MDC hasn't met in close to a year now. I learned VPE from your 'VPE User Guide', which is fantastic BTW. When we start to look at this again, are you interested in helping out? Or are you simply indicating that you are an interested bystander, who will cheer from the sidelines? Either way, thank you for the support.

_________________
"If a thing is worth doing, it is worth doing badly." ~GK Chesterton

DL Wicksell
President / CEO
Fourth Watch Software, LC


Top
Offline Profile  
 
 Post subject: Re: What is the initial design for MASH ?
PostPosted: Thu Sep 06, 2012 2:39 am 
User avatar

Joined: Mon Nov 01, 2010 3:33 pm
Posts: 104
Location: Australia
Real Name: Ray Newman
Began Programming in MUMPS: 01 Jul 1976
Hi,

To look at the MCL (MUMPS Command Language) that we used during the development of ONE, see https://sourceforge.net/projects/oneapplications/files/

Ray Newman


Top
Offline Profile  
 
 Post subject: Re: What is the initial design for MASH ?
PostPosted: Thu Feb 06, 2014 3:39 pm 
User avatar

Joined: Wed Nov 17, 2010 4:02 pm
Posts: 71
Location: Houston TX
Real Name: David Whitten
Began Programming in MUMPS: 06 Jan 1982
I was browsing indiegogo for tech projects, and found this page about a better command line for SBCL (Open Source Common Lisp) and thought this might be an interesting source of ideas:

http://common-lisp.net/project/slime/

What do you think?


Top
Offline Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 8 posts ] 

All times are UTC - 8 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Theme created StylerBB.net