$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 "MLIB12" '/*------------------------------------------------------------------*/ %FLAGS = 0 %AX = 1 %BX = 2 %CX = 3 %DX = 4 %SI = 5 %DI = 6 %BP = 7 %DS = 8 %ES = 9 FUNCTION VFADE() PUBLIC AS STRING ' IF LEN( Target$ ) = 0 THEN Target$ = STRING$( 765, 0 ) REG %AX, &H1017 REG %BX, 0 REG %CX, 255 REG %ES, STRSEG( Target$ ) REG %DX, STRPTR( Target$ ) CALL INTERRUPT &H10 ' END IF FOR J% = 1 TO 32 CALL FadeDAC( -4, Target$ ) NEXT J% FUNCTION = Target$ END FUNCTION SUB VSHOW(BYVAL Target$) PUBLIC IF LEN( Target$ ) = 0 THEN EXIT SUB END IF FOR J% = 1 TO 32 CALL FadeDAC( 4, Target$ ) NEXT J% END SUB SUB FadeDAC(BYVAL Inc%, BYVAL Target$) PRIVATE LOCAL Buff$, N%, K% Buff$ = STRING$( 765, 0 ) REG %AX, &H1017 REG %BX, 0 REG %CX, 255 REG %ES, STRSEG( Buff$ ) REG %DX, STRPTR( Buff$ ) CALL INTERRUPT &H10 FOR J% = 1 TO LEN( Buff$ ) N% = ASC( MID$( Buff$, J%, 1 )) + Inc% IF N% < 0 THEN N% = 0 K% = ASC( MID$( Target$, J%, 1 )) IF N% > K% THEN N% = K% MID$( Buff$, J%, 1 ) = CHR$( N% ) NEXT J% REG %AX, &H1012 REG %BX, 0 REG %CX, 255 REG %ES, STRSEG( Buff$ ) REG %DX, STRPTR( Buff$ ) CALL INTERRUPT &H10 END SUB '/*------------------------------------------------------------------ ' $INCLUDE "C:\CODE\MLIB\MLIB.INC" ' CLS ' SHELL "D C:\" ' A$ = VFADE ' INPUT Z ' VSHOW A$ ' INPUT Z