$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 RATTR(ATTR) AS INTEGER DECLARE SUB SAY(BYVAL Row AS INTEGER, BYVAL Col AS INTEGER, BYVAL Text AS STRING, BYVAL Attr AS INTEGER) DECLARE FUNCTION GETSCREEN() AS STRING DECLARE SUB PUTSCREEN(BYVAL X AS STRING) DECLARE FUNCTION FORMAT(BYVAL NUM AS EXT, BYVAL BEF AS INTEGER, BYVAL AFT AS INTEGER) AS STRING DECLARE SUB SBOX(TOPROW%,LEFTCOLUMN%,Title$,CHOICES$(),ROPT%,RKEY$,Rtrn$,WINSIZE%,DMOUSE%,TAG%,DefaultPointer%,HIATTR%,ATTR%,BATTR%,OPT%) '/*------------------------------------------------------------------*/ $CODE SEG "MLIB4" '/*------------------------------------------------------------------*/ ' ABOX(ROW,COL,ATTR,BTYPE) ' ASCII Box. ' Displays a scroll box displaying ASCII codes and characters. ' If ESC is pressed, -27 is returned. ' IF ENTER is pressed, ascii code at bar is returned. ' ROW = Start row. If 0, row centering is used. ' COL = Start column. If 0, column centering is used. ' ATTR = Color of box and text. Bar color is opposite. ' If 0 then default color scheme is used. ' BTYPE = Type of box. If 0 then 1 is used. ' See TBOX for types. ' EXAMPLE: T = ABOX(0,0,0,0) ' T = ABOX(1,1,12,5) ' '/*------------------------------------------------------------------*/ FUNCTION ABOX(ROW,COL,ATTR,BTYPE) PUBLIC AS INTEGER HSCREEN$ = GETSCREEN '/* --- Center Box? --- IF ROW = 0 THEN ROW = 12 - (9/2) END IF IF COL = 0 THEN COL = 40 - (24/2) END IF '/* --- Default Box Type? --- IF BTYPE = 0 THEN BTYPE = 1 '/* --- Default Colors? --- IF ATTR = 0 THEN ATTR = 31 :'/*Color of Box HATTR = 15 ELSE BATTR = ATTR HATTR = RATTR(ATTR) END IF REDIM Table$(256) k% = 1 FOR i% = 0 TO 255 A$ = FORMAT(i%,3,0) + " " + CHR$(i%) + " " + RIGHT$("0"+HEX$(i%)+"H",3)+" " Table$(i%+1) = A$ NEXT i% Table$(i%+1) = "" SBOX ROW,COL,"ASCII Table",Table$(),1,RKEY$,RTRN$,12,0,0,0,HATTR,ATTR,ATTR,BTYPE IF RKEY$ = CHR$(27) THEN FUNCTION = -27 ELSE FUNCTION = VAL(RTRN$)-1 END FUNCTION '/*------------------------------------------------------------------*/ ' $INCLUDE "C:\CODE\MLIB\MLIB.INC" ' T = ABOX(0,0,0,0) ' SAY 25,1,STR$(T),31 ' Y$ = GETKEY