home *** CD-ROM | disk | FTP | other *** search
- REM *** MCGA.BAS ***
- REM *** (C) 1989 TOOLBOX ***
- REM *** Ansteuerung des VGA-Modus 13H (MCGA) in BASIC ***
-
- CALL initgraphic
- FOR y% = 0 TO 199
- FOR X% = 0 TO 319
- CALL plot(x%,y%,130)
- NEXT
- NEXT
- FOR i% = 16 TO 160
- CALL box(i%,i%,319-i%,199-i%,i%)
- NEXt i%
- x% = 16
- y% = 1
- Nochmal:
- x% = x% + y%
- IF (x% = 16) OR (x% = 31) THEN y% = -y%
- CALL SetCursor(10,12)
- CALL GraphPrint(" MCGA = 256 Farben ",x%)
-
- IF INKEY$ = "" GOTO Nochmal
-
- col% = 1
- FOR y% = 0 TO 199 STEP 5
- CALL doline(0,100,319,0+y%,0+col%)
- col% = col% + 1
- NEXT
-
- FOR y% = 0 TO 199 STEP 5
- CALL doline(0,0+y%,319,100,0+col%)
- col% = col% + 1
- NEXT
-
- WHILE INKEY$ =""
- WEND
-
- CALL exitgraphic
-
-
- END
-
- SUB plot(x%,y%,col%)
-
- DEF SEG = &HA000
-
- POKE y%*320+x%,col%
- END SUB
-
-
- SUB initgraphic
- REG 1,&H13
- CALL INTERRUPT &H10
- END SUB
-
-
- SUB exitgraphic
- REG 1,&H3
- CALL INTERRUPT &H10
- END SUB
-
-
- SUB GraphPrint(s$,col%)
- LOCAL i%
- FOR i% = 1 TO Len(s$)
- REG 1,14*256+ASC(MID$(s$,i%,1))
- REG 2,col%
- CALL INTERRUPT &H10
- NEXT
- END SUB
-
-
- SUB SetCursor(x%,y%)
- REG 1,2*256
- REG 2,0
- REG 4,y%*256+x%
- CALL INTERRUPT &H10
- END SUB
-
- SUB doline(x1%,y1%,x2%,y2%,col%)
-
- local abweichung%,deltax%,deltay%,x%,y%,zaehler%
- abweichung%=0
- deltax%=x2%-x1%
- deltay%=y2%-y1%
- IF deltay%<0 then
- SWAP x1%,x2%
- SWAP y1%,y2%
- deltax%=-deltax%
- deltay%=-deltay%
- END IF
- CALL plot(x1%,y1%,col%)
- x%=x1%
- y%=y2%
- IF deltax%>0 THEN
- IF deltax%<deltay% THEN
- FOR zaehler%=1 TO deltay%-1
- IF abweichung%<0 THEN
- X%=x%+1
- y%=y%+1
- CALL plot(x%,y%,col%)
- abweichung%=abweichung%+deltay%-deltax%
- ELSE
- y%=y%+1
- CALL plot(x%,y%,col%)
- abweichung%=abweichung%+deltay%-deltax%
- END IF
- NEXT
- ELSE
- FOR zaehler=1 TO deltax%-1
- IF abweichung%<=0 THEN
- x%=x%+1
- CALL plot(x%,y%,col%)
- abweichung%=abweichung%+deltay%
- ELSE
- x%=x%+1
- y%=y%+1
- CALL plot(x%,y%,col%)
- abweichung%=abweichung%+deltay%-deltax%
- END IF
- NEXT
- END IF
- ELSE
- IF ABS(deltax%)>=deltay% THEN
- FOR zaehler%=1 TO ABS(deltax%)-1
- IF abweichung%<=0 THEN
- x%=x%-1
- CALL plot(x%,y%,col%)
- abweichung%=abweichung%+deltay%
- ELSE
- x%=x%+1
- y%=y%+1
- CALL plot(x%,y%,col%)
- abweichung%=abweichung%+deltax%+deltay%
- END IF
- NEXT
- ELSE
- FOR zaehler%=1 TO deltay%-1
- IF abweichung%< 0 THEN
- x%=x%-1
- y%=y%+1
- CALL plot(x%,y%,col%)
- abweichung%=abweichung%+deltax%+deltay%
- ELSE
- y%=y%+1
- CALL plot(x%,y%,col%)
- abweichung%=abweichung%+deltax%
- END IF
- NEXT
- END IF
- END IF
- CALL plot(x%,y%,col%)
- END SUB
-
-
- SUB box(x1%,y1%,x2%,y2%,col%)
-
- CALL doline(0+x1%,0+y1%,0+x2%,0+y1%,0+col%)
- CALL doline(0+x1%,0+y1%,0+x1%,0+y2%,0+col%)
- CALL doline(0+x2%,0+y2%,0+x2%,0+y1%,0+col%)
- CALL doline(0+x2%,0+y2%,0+x1%,0+y2%,0+col%)
- END SUB