$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) '/*------------------------------------------------------------------*/ $CODE SEG "MLIB2" '/*------------------------------------------------------------------*/ DECLARE SUB BUTTON(Text$,Press%,Row%,Col%,HotKey%,ButtonAttr%,Attr%) DECLARE SUB BWINDOW(Title$,Toprow%,Leftcolumn%,Bottomrow%,Rightcolumn%,Attr%, Shadow%, Border%) DECLARE FUNCTION GETSCREEN() AS STRING DECLARE SUB PUTSCREEN(BYVAL X AS STRING) DECLARE SUB CalcByte(Attr%,LowByte%,HiByte%) DECLARE SUB MCLICKED(Rgt%,Lft%,Row%,Col%) DECLARE SUB MOUSEOFF() DECLARE SUB MOUSEON() DECLARE FUNCTION ISMOUSELBR() DECLARE SUB SAY(BYVAL Row AS INTEGER, BYVAL Col AS INTEGER, BYVAL Text AS STRING, BYVAL Attr AS INTEGER) '/*------------------------------------------------------------------*/ FUNCTION YNBOX(Title$,Text$,DMOUSE%,ButtonAttr%,Attr%,Shadow%,Border%) PUBLIC AS INTEGER Location% = 10 CALCBYTE Attr%,FGround%,BGround% HotKey% = FGround% Finished% = 0 IF DMOUSE% THEN MOUSEOFF X% = LEN (Text$) AND 1 IF X% = 0 THEN 'see if the string is odd or even Prompt$ = Text$ ELSE Prompt$ = Text$ + CHR$(32) 'if it's odd add a space END IF IF LEN (Prompt$) <= 16 THEN 'only size the box if the string Size% = 20 'is less than 16 characters ELSEIF LEN (Prompt$) >= 16 THEN Size% = LEN (Prompt$) + 4 'make the box fit the string END IF YesNoScreen$ = GETSCREEN BWINDOW Title$,Location%, 40 - (Size% / 2), Location% + 4, 40 + (Size% / 2) - 1, Attr%, Shadow%, Border% '/*COLOR Fground%, Bground% '/*LOCATE Location% + 1, 40 - LEN (Prompt$) / 2,0 '/*PRINT Prompt$; SAY Location%+1,40-LEN(Prompt$)/2,Prompt$,Attr% Row% = Location% + 2 Col% = 40 - (Size% / 2) + 3 IF DMOUSE% THEN '/* COLOR FGround%,BGround% '/* LOCATE Location%,40 - (Size% / 2) + 1,0 '/* PRINT CHR$(91,254,93); SAY Location%,40-(Size%/2)+1,CHR$(91,254,93),Attr% END IF DO BUTTON " @YES ",0,Row%,Col%,HotKey%,ButtonAttr%,Attr% BUTTON " @NO ",0,Row%,Col% + 9,HotKey%,ButtonAttr%,Attr% WHILE NOT INSTAT IF DMOUSE% THEN MOUSEON Rgt% = 0:Lft% = 0 MCLICKED Rgt%,Lft%,MRow%,MCol% IF Lft% AND MRow% = Row% THEN IF ISMOUSELBR THEN SELECT CASE MCol% CASE Col% TO Col% + 5 Chose% = 89 MOUSEOFF GOTO KeyBoardRoutine CASE Col% + 9 TO Col% + 13 Chose% = 78 MOUSEOFF GOTO KeyBoardRoutine END SELECT END IF ELSE IF Lft% AND MRow% = Location% AND MCol% = 40 - (Size% / 2) + 2 THEN IF ISMOUSELBR THEN Chose% = 27 GOTO KeyBoardRoutine END IF END IF END IF END IF WEND Ky$ = INKEY$ IF LEN(Ky$) = 1 THEN Chose% = ASC(Ky$) ELSE Chose% = -ASC(RIGHT$(Ky$,1)) END IF KeyBoardRoutine: SELECT CASE Chose% CASE 89,121 'Yes IF DMOUSE% THEN MOUSEOFF Button " @YES ",1,Row%,Col%,HotKey%,ButtonAttr%,Attr% FUNCTION = 1 Finished% = 1 CASE 78,110 'No IF DMOUSE% THEN MOUSEOFF Button " @NO ",1,Row%,Col% + 9,HotKey%,ButtonAttr%,Attr% FUNCTION = 0 Finished% = 1 CASE 27 FUNCTION = 0 Finished% = 1 CASE ELSE BEEP END SELECT LOOP UNTIL Finished% IF DMOUSE% THEN MOUSEON DELAY .5 IF DMOUSE% THEN MOUSEOFF PUTSCREEN YesNoScreen$ END FUNCTION '/*------------------------------------------------------------------*/ ' $INCLUDE "C:\CODE\MLIB\MLIB.INC" ' R = YNBOX("Title String","Are you working?",0,79,48,0,1) '/*------------------------------------------------------------------*/