! MNFAX - Master Menu Program for Faxing
!
! Notice: The process and all the routines contained herein are
! the proprietary properties and trade secrets of Mini-
! Computer Business Applications, Inc. and Alpha Micro-
! systems. Except as provided by license agreement,
! this code shall not be duplicated, used, or disclosed
! for any purpose or reason, in whole or in part, without
! the express written consent of Alpha Microsystems.
!
MAP1 PROGRAM'NAME,S,6,"MNFAX"
MAP1 PROGRAM'DESC,S,33,"FAX MAIN MENU"
!
MAP1 MNU'AOPT,S,6 ! application option choosen
MAP1 MNU'MOPT,F,6 ! menu option choosen
MAP1 MNU'MCNT,F,6 ! menu array count
MAP1 MNU(32) ! 31-report menu, 32-sys management
MAP2 MNU'NAM,S,10 ! menu item program name
MAP2 MNU'CM1,S,1
MAP2 MNU'DSC,S,33 ! menu item description
MAP2 MNU'CM2,S,1
MAP2 MNU'LVL,S,3 ! menu item security 0-254, 255 hide
MAP2 MNU'CM3,S,1
MAP2 MNU'PSW,S,6 ! menu item password
MAP1 MNU'FACT,S,50 ! option log file account
MAP1 MNU'FNAM,S,50 ! option run file
!
!
!!INCLUDE MAP:CMESP.MAP
!****************************************************************************
!* *
!* SYSSTD.BSI - Standard AlphaBASIC / ESP development definitions *
!* *** Special version without *** *
!* *** auto system record load *** *
!* *
!****************************************************************************
!
! NOTICE
!
! All rights reserved. This software is the property of Alpha Microsystems
! and the material contained herein is the proprietary property and trade
! secrets of Alpha Microsystems, embodying substantial creative efforts and
! confidential information, ideas and expressions, no part of which may be
! reproduced or transmitted in any form or by any means, electronic,
! mechanical, or otherwise, including photocopying or input into any
! information storage or retrieval system without the express written
! permission of Alpha Microsystems.
!
! CAUTION: Unauthorized distribution or reproduction of this material may
! subject you to legal action.
!
! Copyright (C) 1984 - Distributed Management Systems, Inc.
! Copyright (C) 1992 - Alpha Microsystems
!
! Edit history:
!
![102] 07/15/90 Updated to support 8-bit characters. /RJH
![101] 07/05/88 Add option flag definitions for INITRM and ERRDSP. /CAE
![100] 02/12/84 Designed and implemented by Brett R. Halle.
!
!
! Standard data definitions.
!
MAP1 MENUS , X, 4096 ! Menu buffer
MAP1 SCREEN , X, 8192 ! Screen buffer.
MAP1 INIT , F, 6 ! INITRM control.
MAP1 CHAR , F, 6 ! Return character.
MAP1 FIELD , F, 6 ! Return field number.
MAP1 FALSE , F, 6, 0 ! Logical False is 0.
MAP1 TRUE , F, 6, NOT FALSE ! Logical True is NOT false.
!
! ESP Special Edit Flags.
!
! These constants are used to set/test flag values in the high order
! byte of the CHAR variable as used in a GTSCR call.
!
! ESP'POSTEDIT and ESP'PREEDIT are returned by GTSCR to indicate
! an interrupt condition occured.
!
! ESP'REPAINT may be passed to GTSCR to update the display of a
! screen that may have been clobbered by direct IO to the
! CRT display (e.g. PRINT TAB(-1,9);)
!
! ESP'RESETCHANGE may be passed to GTSCR to force a post-edit
! interrupt on change condition for the current field. This is
! useful when an error has been detected during a post-edit
! interrupt on change process and the user is placed back into
! the field to make a correction.
!
! ESP'DAF may be passed to GTSCR to force the reevaluation of all
! field formulas and redisplay of all fields.
!
MAP1 ESP'POSTEDIT, F, 6, 32768 ! Post edit interrupt flag.
MAP1 ESP'PREEDIT, F, 6, 16384 ! Pre edit interrupt flag.
MAP1 ESP'REPAINT, F, 6, 8192 ! Repaint ESP screen flag.
MAP1 ESP'RESETCHANGE,F, 6, 2048 ! Reset field change detect.
MAP1 ESP'DAF, F, 6, 1024 ! Redisplay all fields.
!
! ESP key-press constants.
!
MAP1 ESP'MENU, F, 6, 128+27 ! MENU key (Esc Esc).
MAP1 ESP'EXECUTE, F, 6, 128+ASC("X") ! EXECUTE key (Esc X).
MAP1 ESP'UPARROW, F, 6, 11 ! UP ARROW key (^K).
MAP1 ESP'NXTSCREEN, F, 6, 20 ! NEXT SCREEN Key (^T).
MAP1 ESP'PRVSCREEN, F, 6, 18 ! PREV SCREEN Key (^R).
MAP1 ESP'NXTMATCH, F, 6, 24 ! NEXT MATCH Key (^X).
MAP1 ESP'BEGLIN, F, 6, 21 ! BEG LINE (^U).
MAP1 ESP'CR, F, 6, 13 ! Carriage return.
MAP1 ESP'F1, F, 6, 128+1 ! F1 - Unshifted/shifted.
MAP1 ESP'F2, F, 6, 128+2 ! F2 - Unshifted/shifted.
MAP1 ESP'F3, F, 6, 128+3 ! F3 - Unshifted/shifted.
MAP1 ESP'F4, F, 6, 128+4 ! F4 - Unshifted/shifted.
MAP1 ESP'F5, F, 6, 128+5 ! F5 - Unshifted/shifted.
MAP1 ESP'F6, F, 6, 128+6 ! F6 - Unshifted/shifted.
MAP1 ESP'F7, F, 6, 128+7 ! F7 - Unshifted/shifted.
MAP1 ESP'F8, F, 6, 128+8 ! F8 - Unshifted/shifted.
MAP1 ESP'F9, F, 6, 128+9 ! F9 - Unshifted/shifted.
MAP1 ESP'F10, F, 6, 128+10 ! F10- Unshifted/shifted.
MAP1 ESP'F11, F, 6, 128+11 ! F11- Unshifted/shifted.
MAP1 ESP'F12, F, 6, 128+12 ! F12- Unshifted/shifted.
!
! Extended characters for 8-bit mode.
! [102]
!
MAP1 ESP'XMENU, F, 6, 256+27 ! MENU key (Esc Esc).
MAP1 ESP'XEXECUTE, F, 6, 256+ASC("X")! EXECUTE key (Esc X).
MAP1 ESP'XF1, F, 6, 256+1 ! F1 - Unshifted/shifted.
MAP1 ESP'XF2, F, 6, 256+2 ! F2 - Unshifted/shifted.
MAP1 ESP'XF3, F, 6, 256+3 ! F3 - Unshifted/shifted.
MAP1 ESP'XF4, F, 6, 256+4 ! F4 - Unshifted/shifted.
MAP1 ESP'XF5, F, 6, 256+5 ! F5 - Unshifted/shifted.
MAP1 ESP'XF6, F, 6, 256+6 ! F6 - Unshifted/shifted.
MAP1 ESP'XF7, F, 6, 256+7 ! F7 - Unshifted/shifted.
MAP1 ESP'XF8, F, 6, 256+8 ! F8 - Unshifted/shifted.
MAP1 ESP'XF9, F, 6, 256+9 ! F9 - Unshifted/shifted.
MAP1 ESP'XF10, F, 6, 256+10 ! F10- Unshifted/shifted.
MAP1 ESP'XF11, F, 6, 256+11 ! F11- Unshifted/shifted.
MAP1 ESP'XF12, F, 6, 256+12 ! F12- Unshifted/shifted.
!
! PRTSCR control values.
!
MAP1 ESP'FLRCHR, F, 6, 32 ! Filler character (space).
MAP1 ESP'PRTCTL, F, 6 ! PRTSCR control value:
MAP1 ESP'PRTTTL, F, 6, (256*1) ! Print titles.
MAP1 ESP'PRTHDR, F, 6, (256*2) ! Print detail headers.
MAP1 ESP'PRTDET, F, 6, (256*4) ! Print detail level.
MAP1 ESP'PRTST1, F, 6, (256*8) ! Print subtotal level 1.
MAP1 ESP'PRTST2, F, 6, (256*16) ! Print subtotal level 2.
MAP1 ESP'PRTST3, F, 6, (256*32) ! Print subtotal level 3.
MAP1 ESP'PRTGTL, F, 6, (256*64) ! Print grand totals.
!
! INITRM control options.
!
MAP1 INITRM'NCS, F, 6, (2^0) ! Do NOT clear screen.
MAP1 INITRM'NCA, F, 6, (2^1) ! Do NOT clear accumulators.
MAP1 INITRM'NSL, F, 6, (2^2) ! Do NOT change sts lines.
MAP1 INITRM'NPD, F, 6, (2^3) ! Do NOT read printer defs.
MAP1 INITRM'NEW, F, 6, (2^5) ! Characters are passed in 8-bit mode. [102]
MAP1 INITRM'RST, F, 6, (2^31) ! Reset terminal status.
! (Exit data mode and allow
! standard BASIC input.)
!
! ERRDSP control options.
!
MAP1 ERRDSP'NAK, F, 6, (2^0) ! No acknowledgement desired.
MAP1 ERRDSP'NBL, F, 6, (2^1) ! No blink desired.
MAP1 ERRDSP'NDG, F, 6, (2^2) ! No ding desired.
MAP1 ERRDSP'TTY, F, 6, (2^15) ! Output without CRT features.
!
!
!END-SYSSTD.BSI
!
++INCLUDE BAS:TOOLBX.BSI
!
MAP1 FILNAM,S,25
MAP1 INXCTL,F,6
MAP1 RTNCDE,F,6
MAP1 ENTRY,S,80
MAP1 CRLF,S,4,CHR(13)+CHR(10)
MAP1 X,F
MAP1 Y,F
100 MNU'MCNT=3
110 MNU( 1)="MNFAX.RUN ,Fax Queue , 0, "
120 MNU( 2)="MNFAX.RUN ,Create/Send Fax , 0, "
130 MNU( 3)="MNFAX.RUN ,Display Fax Log File , 0, "
!
!
140 FILEBASE 1 : XCALL NOECHO : SIGNIFICANCE 11
!
150 FILNAM="MNMNU.SC2"
160 XCALL FETCH,FILNAM,MENUS,INXCTL
170 IF INXCTL THEN GOTO ESP'ERR
!
180 X=(.LEVEL)*2 : XCALL SETUSR,2,X : XCALL SETUSR,3,X
!
190 INIT=INITRM'NCS+INITRM'NCA+INITRM'NSL+INITRM'NPD
MENU'INIT:
200 XCALL INITRM,PROGRAM'DESC,"QUORUM",INIT
210 XCALL SETUSR,5,120
220 XCALL OPNSCR,MENUS
230 XCALL HIDFLD,MENUS,TRUE,11,13,15,17,19,21,23,25
240 XCALL HIDFLD,MENUS,TRUE,26,28,30,32,34,36,38,40
MENU'LOOP:
250 IF MNU'MCNT<9 THEN FIELD=3 : X=1 ELSE FIELD=11 : &
IF MNU'MCNT<17 THEN X=2 ELSE X=1
260 FOR Y=1 TO MNU'MCNT
270 ENTRY=Y USING "##. "+MNU'DSC(Y)
280 XCALL SETVAL,MENUS,FIELD,ENTRY
290 XCALL SETFSC,MENUS,FIELD,VAL(MNU'LVL(Y))
300 XCALL TOOLBX,TBX'HIDFLD,MENUS,FIELD,FALSE
310 FIELD=FIELD+X : IF X=2 AND Y=8 THEN FIELD=FIELD-1
320 NEXT Y
330 FIELD=1 : CHAR=ESP'BEGLIN+ESP'REPAINT
340 XCALL SETVAL,MENUS,FIELD,""
MENU'ENTRY:
350 XCALL GTSCR,MENUS,CHAR,FIELD
!
360 IF (CHAR AND 255) = ESP'MENU THEN &
MNU'MOPT=(-1) : GOTO CLSEUP
!
370 IF (CHAR AND ESP'POSTEDIT) THEN &
ON FIELD GOTO MENU'CHK,MENU'PSW
!
380 GOTO MENU'ENTRY
!
MENU'CHK:
390 XCALL GETVAL,MENUS,FIELD,MNU'AOPT : MNU'MOPT=0
400 IF MNU'AOPT="" THEN CHAR=ESP'RESETCHANGE : GOTO MCHK'10
MCHK'4:
410 MNU'MOPT = VAL(MNU'AOPT)
420 IF (MNU'MOPT<1 OR MNU'MOPT>MNU'MCNT) THEN CHAR=ESP'RESETCHANGE : &
XCALL ERRDSP,"Invalid selection" : GOTO MCHK'10
MCHK'6:
430 IF MNU'MCNT<9 THEN X=MNU'MOPT+2 ELSE X=MNU'MOPT+10 : &
IF MNU'MCNT<17 THEN X=9+(MNU'MOPT*2) : IF MNU'MOPT>8 THEN X=X-1
440 XCALL GETFSC,MENUS,X,INXCTL
450 IF INXCTL=0 THEN CHAR=ESP'RESETCHANGE : &
XCALL ERRDSP, "Security clearance is not sufficient for the selection" : &
GOTO MCHK'10
460 IF MNU'PSW(MNU'MOPT)#"" THEN ELSE GOTO WINDUP
470 GOTO MENU'ENTRY
MCHK'10:
480 XCALL SETVAL,MENUS,1,""
490 GOTO MENU'ENTRY
MENU'PSW:
500 XCALL GETVAL,MENUS,FIELD,ENTRY
510 XCALL SETVAL,MENUS,FIELD,""
520 IF ENTRY = "" THEN GOTO MCHK'10
530 IF ENTRY <> MNU'PSW(MNU'MOPT) THEN CHAR=ESP'RESETCHANGE : &
XCALL ERRDSP,"Invalid Password" : GOTO MENU'ENTRY
WINDUP:
540 XCALL STRIP,MNU'NAM(MNU'MOPT)
550 MNU'FACT=":R"+CRLF+"RUN "
560 MNU'FNAM=MNU'NAM(MNU'MOPT)
570 IF INSTR(1,MNU'NAM(MNU'MOPT),PROGRAM'NAME)=0 THEN GOTO WU'2
580 ON MNU'MOPT GOTO FAXQUE,FAXEDT,FAXSTS
590 XCALL SETVAL,MENUS,2,"" : GOTO MCHK'10
WU'2:
600 LOOKUP MNU'FNAM,INXCTL : IF INXCTL=0 THEN CHAR=ESP'RESETCHANGE : &
XCALL ERRDSP,"Selection is not available or under construction" : &
XCALL SETVAL,MENUS,2,"" : GOTO MCHK'10
CLSEUP:
EXITUP:
610 IF MNU'MOPT>0 THEN ELSE GOTO EU'2
620 X=INSTR(1,MNU'FACT,"RUNDOS")
630 IF X=0 THEN XCALL WAIT,3 : CHAIN MNU'FACT+MNU'FNAM
640 XCALL CLSSCR,MENUS
650 INIT=INITRM'NCA+INITRM'NSL+INITRM'NPD+INITRM'RST
660 XCALL INITRM,PROGRAM'DESC,"QUORUM",INIT
670 RUNDOS MNU'FACT[(X+7),50]+MNU'FNAM
680 IF MNU'MOPT#999 THEN &
XCALL ERRDSP," Press any key to return to menu "
690 INIT=0 : GOTO MENU'INIT
EU'2:
700 XCALL CLSSCR,MENUS : XCALL INITRM
710 END
!
FAXQUE:
720 MNU'FACT="RUNDOS "
730 MNU'FNAM="SYS:FAXQUE.LIT"
740 GOTO WU'2
!
FAXEDT:
750 FILNAM="MNFAX.SC1"
760 XCALL FETCH,FILNAM,SCREEN,INXCTL
770 IF INXCTL THEN GOTO ESP'ERR
!
780 XCALL OPNSCR,SCREEN
FAXEDT'INIT:
790 FIELD=1 : CHAR=ESP'BEGLIN+ESP'REPAINT
800 XCALL SETVAL,SCREEN,FIELD,""
FAXEDT'ENTRY:
810 XCALL GTSCR,SCREEN,CHAR,FIELD
!
820 IF (CHAR AND 255) = ESP'MENU THEN &
GOTO FAXEDT'CLSEUP
!
!!!!! IF (CHAR AND ESP'POSTEDIT) THEN &
!!!!! ON FIELD GOTO
!
830 GOTO FAXEDT'ENTRY
FAXEDT'CLSEUP:
840 XCALL CLSSCR,SCREEN,1
850 CHAR=ESP'RESETCHANGE : GOTO MCHK'10
!!!!! INIT=0 : GOTO MENU'INIT
!
FAXSTS:
860 MNU'FACT="RUNDOS "
870 MNU'FNAM="SYS:FAXSTS.LIT"
880 GOTO WU'2
!
ESP'ERR:
890 PRINT "ESP ERROR = ";INXCTL
900 END
!