$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 "MLIB6" '/*------------------------------------------------------------------*/ FUNCTION OVERLAY(BYVAL NW AS STRING, BYVAL TARGET AS STRING, BYVAL N AS INTEGER, BYVAL L AS INTEGER, BYVAL PAD AS STRING) PUBLIC AS STRING IF N = 0 THEN N = 1 LNEW = LEN(NW) IF L = 0 THEN L = LNEW IF LNEW < L THEN NW = NW + STRING$(L-LNEW,PAD) IF LNEW > L THEN NW = LEFT$(NW,L) LNEW = LEN(NW) LTARGET = LEN(TARGET) IF N > LTARGET THEN TARGET = TARGET + STRING$(N-LTARGET,PAD) LTARGET = LEN(TARGET) END IF OL = N + LNEW - 1 IF OL > LTARGET THEN TARGET = TARGET + STRING$(OL-LTARGET," ") MID$(TARGET,N,LNEW) = NW OVERLAY = TARGET END FUNCTION '/*------------------------------------------------------------------*/ 'CLS 'PRINT "TESTING OVERLAY FUNCTION" 'PRINT " " 'PRINT OVERLAY(" ","abcdef",3,0," ");" 'ab def'" 'PRINT OVERLAY(".","abcdef",3,2," ");" 'ab. ef'" 'PRINT OVERLAY("qq","abcd",0,0," ");" 'qqcd'" 'PRINT OVERLAY("qq","abcd",4,0," ");" 'abcqq'" 'PRINT OVERLAY("123","abc",5,6,"+");" 'abc+123+++'" 'INPUT Z