$CPU 8086 'make compatible with XT systems $LIB ALL OFF 'turn off all PowerBASIC libraries $ERROR ALL OFF 'turn off all PowerBASIC error checking $OPTIMIZE SIZE 'optimize for smaller code $COMPILE UNIT 'compile to a UNIT (.PBU) '$COMPILE EXE 'compile to a UNIT (.PBU) DEFINT A-Z 'Required for all numeric functions, forces PB to not 'include floating point in UNIT (makes it smaller) '/*-------------------------------------------------------------------- DECLARE FUNCTION GETSCREEN() AS STRING DECLARE SUB TWINDOW(ROW,COL,NROW,NCOL,ATTR,OPT$,BTYPE) DECLARE SUB SAY(BYVAL Row AS INTEGER, BYVAL Col AS INTEGER, BYVAL Text AS STRING, BYVAL Attr AS INTEGER) DECLARE SUB PUTSCREEN(BYVAL X AS STRING) DECLARE SUB EDIT(ROW,COL,ATTR,LTH,F$,RKEY$,OPT$) '/*-------------------------------------------------------------------- $CODE SEG "MLIB2" '/*-------------------------------------------------------------------- ' EBOX ROW,COL,EATTR,PROMPT$,STRING,LENGTH,OPT$,ATTR,RKEY$,BOX ' Edit Box. ' Displays a EditBOX at row/col. ' ROW = Row to start with. If 0 then row centering is used. ' COL = Column to start with. If 0 then column centering is used. ' EATTR = Edit box color. Color of box and PROMPT$ in box. ' PROMPT$ = Prompt displayed to left of edit field. If length of ' PROMPT$ + the length of STRING or LENGTH exceeds 60, ' the a scrolling edit window is used (See EDIT). Make ' sure that the length of PROMPT$ does not exceed 50 ' characters or it will be truncated. ' STRING = String to be edited. ' LENGTH = Total allowed length of STRING. If zero then the ' current length of STRING is used. If > than zero ' then that length is returned. ' OPT$ = Edit options desired (See EDIT and TWINDOW). ' ATTR = Color of STRING during edit. ' RKEY$ = Load with key codes that you want to exit edit. If ' null (0 length) then ESC and enter are the defaults. ' Returns the last key pressed during edit. ' BOX = Type of box. See TBOX for types. ' ' EXAMPLE: EBOX 0,0,112,"Enter Text:",E$,60,"TITLE'Here is my box' AU",31,RKEY$,1 '/*-------------------------------------------------------------------- SUB EBOX(BYVAL TROW AS INTEGER, BYVAL COL AS INTEGER, BYVAL EBATTR AS INTEGER, P AS STRING, EL AS STRING, BYVAL ELTH AS INTEGER, BYVAL TPE AS STRING, BYVAL ATTR AS INTEGER, BYVAL RKEY AS STRING,BYVAL BT AS INTEGER) PUBLIC IF TROW = 0 THEN TROW = (25\2) '/* --- Save Screen ---*/ SAVEEBOX$ = GETSCREEN '/* --- Determine Length of Edit String ---*/ IF ELTH = 0 THEN ELTH = LEN(EL) '/* --- Determine Length of Prompt$ ---*/ IF LEN(P) > 50 THEN P = LEFT$(P,50) PL = LEN(P) TLTH = PL + 2 + ELTH '/* --- Use Scrolling Edit? ---*/ IF ELTH > 40 OR TLTH > 60 THEN IF TLTH > 60 AND PL < 50 THEN WS = 60 - PL - 2 CL = WS ELSE WS = 40 CL = 40 END IF ELSE WS = 0 CL = ELTH END IF '/* --- Calculate Centered Window on Designated Line ---*/ IF COL = 0 THEN LCOL =((80\2) - (LEN(P)+ CL + 2) \ 2) ELSE LCOL = COL RCOL = LCOL + (LEN(P) + CL + 2) '/* --- Put Up Window ---*/ OSR = 1 '/* IF INSTR(1,TITLE,"_") > 0 THEN OSR = 3 '/* IF INSTR(1,TITLE,"-") > 0 THEN OSR = 0 '/* IF OSR = 0 THEN '/* TWINDOW TITLE,TROW,LCOL,1,RCOL-LCOL+1,EBATTR,1,BT '/* ELSE '/* TWINDOW TITLE,TROW,LCOL,3,RCOL-LCOL+1,EBATTR,1,BT '/* END IF IF INSTR(1,TPE,"TP1") > 0 THEN OSR = 3 IF OSR <> 3 THEN TWINDOW TROW,LCOL,3,RCOL-LCOL+2,EBATTR,TPE,BT ELSE TWINDOW TROW,LCOL,3,RCOL-LCOL+2,EBATTR,TPE,BT END IF '/* --- Display Text Prompt ---*/ IF INSTR(1,TPE,"TMIN") > 0 THEN SAY TROW+OSR,LCOL,STRING$(RCOL-LCOL+2,32),EBATTR SAY TROW+OSR,LCOL+2,P,EBATTR '/* --- Edit String ---*/ OPT$ = TPE IF WS > 0 THEN OPT$ = OPT$ + " WS'"+RIGHT$(STR$(WS),LEN(STR$(WS))-1)+"'" EDIT TROW+OSR,LCOL+2+LEN(P),ATTR,ELTH,EL,RKEY$,OPT$ '/* LGEDIT EL, TPE,TROW+1,LCOL+2+LEN(P)+2,ELTH,ATTR,RKEY$,WS '/* --- Restore Screen ---*/ PUTSCREEN SAVEEBOX$ END SUB '/*-------------------------------------------------------------------- ' $INCLUDE "C:\CODE\MLIB\MLIB.INC" ' DL$ = DRIVELIST ' PROMT$ = "Select from ("+DL$+") " ' OPT$ = "ALLOW'"+DL$+"' UPPER TITLE'TITLE HERE TODAY ONE'" ' RKEY$ = CHR$(27,13) ' EBOX 0,0,48,PROMT$,SDRIVE$,21,OPT$,31,RKEY$,1