$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 FUNCTION GETVIDEOSEGMENT() AS INTEGER '/*------------------------------------------------------------------*/ ' GETWINDOW(ROW,COL,BROW,RCOL) ' Get Text/Colors in window. ' Returns a string containg the characters representing ROW, COL, ' NCOLS followed by character/attribute pairs. ' EXAMPLE: T$ = GETWINDOW(10,1,40,15) ' ^ ^ ^ ^ ' | | | +-- Right column ' | | +----- Bottom Row ' | +-------- Left Column ' +---------- Top Row '/*------------------------------------------------------------------*/ FUNCTION GETWINDOW(ULR%,ULC%,LRR%,LRC%) PUBLIC AS STRING DEF SEG=GETVIDEOSEGMENT IF LRC% > 80 THEN LRC% = 80 A$="" Rows%=LRR%-(ULR%-1) Cols%=LRC%-(ULC%-1) FOR Y%=ULR% TO ULR%+Rows%-1 A$=A$+PEEK$(((Y%-1)*160)+((ULC%-1)*2),Cols%*2) NEXT Y% FUNCTION = CHR$(ULR%,ULC%,Cols%*2)+A$ DEF SEG END FUNCTION '/*------------------------------------------------------------------*/ SUB PUTWINDOW(Temp$) PUBLIC T$=Temp$ DEF SEG = 0 DEF SEG=GETVIDEOSEGMENT ULR%=ASCII(LEFT$(T$,1)) ULC%=ASCII(MID$(T$,2,1)) Cols%=ASCII(MID$(T$,3,1)) T$=MID$(T$,4) A$=LEFT$(T$,Cols%) T$=MID$(T$,Cols%+1) U%=ULR% WHILE A$<>"" POKE$ ((U%-1)*160)+((ULC%-1)*2),A$ A$=LEFT$(T$,Cols%) T$=MID$(T$,Cols%+1) INCR U% WEND DEF SEG END SUB '/*------------------------------------------------------------------*/ FUNCTION REATTR(ULR%,ULC%,LRR%,LRC%,ATTR%) PUBLIC AS STRING TR$ = GETWINDOW(ULR%,ULC%,LRR%,LRC%) T$ = TR$ FOR CNT = 5 TO LEN(T$) STEP 2 MID$(T$,CNT,1) = CHR$(ATTR%) NEXT CNT PUTWINDOW T$ FUNCTION = TR$ END FUNCTION '/*------------------------------------------------------------------*/ FUNCTION RECHAR(ULR%,ULC%,LRR%,LRC%,C$) PUBLIC AS STRING T$ = GETWINDOW(ULR%,ULC%,LRR%,LRC%) TR$ = T$ FOR CNT = 4 TO LEN(T$) STEP 2 MID$(T$,CNT,1) = C$ NEXT CNT PUTWINDOW T$ FUNCTION = TR$ END FUNCTION '/*------------------------------------------------------------------*/ SUB PUTWINDOWAT(ULR%,ULC%,BYVAL TEMP$) PUBLIC MID$(TEMP$,1,1) = CHR$(ULR%) MID$(TEMP$,2,1) = CHR$(ULC%) PUTWINDOW TEMP$ END SUB '/*------------------------------------------------------------------*/ ' $INCLUDE "C:\CODE\MLIB\MLIB.INC" ' CMD$ = COMMAND$ ' F$ = WORD(CMD$,1) ' T$ = WORD(CMD$,2) ' S = INSTR(1,T$,",") ' CC = VAL(MID$(T$,1,S-1))+1 ' CR = VAL(MID$(T$,S+1))+1 ' OPEN"I",1,F$ ' LINE INPUT#1,A$ ' CLOSE#1 ' PUTWINDOWAT CR,CC,A$ '/*------------------------------------------------------------------*/