$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 GETSCREEN() AS STRING DECLARE SUB PUTSCREEN(BYVAL X AS STRING) DECLARE SUB MDELAY(COUNT AS WORD) DECLARE FUNCTION GETVIDEOSEGMENT() AS INTEGER '/*------------------------------------------------------------------*/ $CODE SEG "MLIB5" '/*------------------------------------------------------------------*/ ' DSCREENJ(SCREEN$) ' Display Screen format J. ' Display Screen by moving new in as a spiral outside in. ' SCREEN$ = Mem (binary) screen to display. ' Returns old screen. ' EXAMPLE: OLD$ = DSCREENJ(SCREEN$) '/*------------------------------------------------------------------*/ FUNCTION DSCREENJ(TEMP$) PUBLIC AS STRING R$ = GETSCREEN '/*-21---------------------------------------------------------------*/ Speed% = 10 Attr% = 0 SRow% = 1 : ERow% = 25 : SCol% = 1 : ECol% = 80 : PokeBackScreen% = 0 IF LEN(TEMP$) THEN PokeBackScreen% = 1 DEF SEG=GETVIDEOSEGMENT ELSE IF Attr% THEN FGround% = 15 AND Attr% BGround% = 255 AND (Attr% - LowByte%) \ 16 COLOR FGround%,BGround% ELSE COLOR 0,0 END IF END IF FOR a% = 1 TO 12 FOR i% = SCol% TO ECol% LOCATE SRow%,i%,0 IF PokeBackScreen% THEN Address% = ((SRow% - 1) * 160) + (i% * 2) - 2 POKE$ Address%,GetByte$(TEMP$,Address%,2) ELSE PRINT " "; END IF CALL MDELAY(1) FOR j% = 1 TO Speed% FOR k% = 1 TO Speed% : NEXT k% NEXT j% NEXT i% INCR SRow% : DECR ECol% FOR i% = SRow% TO ERow% LOCATE i%,ECol%,0 IF PokeBackScreen% THEN Address% = ((i% - 1) * 160) + (ECol% * 2) - 2 POKE$ Address%,GetByte$(TEMP$,Address%,4) ELSE PRINT " "; END IF FOR j% = 1 TO Speed% FOR k% = 1 TO Speed% : NEXT k% NEXT j% NEXT i% DECR ECol% FOR i% = ECol% TO SCol% STEP -1 LOCATE ERow%,i%,0 IF PokeBackScreen% THEN Address% = ((ERow% - 1) * 160) + (i% * 2) - 2 POKE$ Address%,GetByte$(TEMP$,Address%,2) ELSE PRINT " "; END IF FOR j% = 1 TO Speed% FOR k% = 1 TO Speed% : NEXT k% NEXT j% NEXT i% DECR ERow% FOR i% = ERow% TO SRow% STEP -1 LOCATE i%,SCol%,0 IF PokeBackScreen% THEN Address% = ((i% - 1) * 160) + (SCol% * 2) - 2 POKE$ Address%,GetByte$(TEMP$,Address%,4) ELSE PRINT " "; END IF FOR j% = 1 TO Speed% FOR k% = 1 TO Speed% : NEXT k% NEXT j% NEXT i% INCR SCol%,2 NEXT a% 'This is the final centre part ---------------------------------------------- FOR i% = SCol% TO ECol% LOCATE SRow%,i%,0 IF PokeBackScreen% THEN Address% = ((SRow% - 1) * 160) + (i% * 2) - 2 POKE$ Address%,GetByte$(TEMP$,Address%,2) ELSE PRINT " "; END IF FOR j% = 1 TO Speed% FOR k% = 1 TO Speed% : NEXT k% NEXT j% NEXT i% DEF SEG '============================================================================ FUNCTION = R$ END FUNCTION '/*------------------------------------------------------------------*/ FUNCTION GetByte$(BaseScreen$,Address%,NumBytes%) GetByte$ = MID$(BaseScreen$,Address% + 1,NumBytes%) '============================================================================ END FUNCTION '/*------------------------------------------------------------------*/ ' $INCLUDE "C:\CODE\MLIB\MLIB.INC" ' TD$ = GETMEM("c:\code\mapper\APOGEE.MEM") ' T2$ = GETMEM("c:\code\mapper\VMESAM.MEM") ' PUTSCREEN T2$ ' Y$ = GETKEY ' T$ = DSCREENJ(TD$) ' Y$ = GETKEY '/*------------------------------------------------------------------*/