home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 10 / titel / mcga.bas < prev    next >
Encoding:
BASIC Source File  |  1989-09-07  |  3.3 KB  |  163 lines

  1. REM ***                  MCGA.BAS                     ***
  2. REM ***            (C) 1989 TOOLBOX                   ***
  3. REM *** Ansteuerung des VGA-Modus 13H (MCGA) in BASIC ***
  4.  
  5.   CALL initgraphic
  6.   FOR y% = 0 TO 199
  7.     FOR X% = 0 TO 319
  8.       CALL plot(x%,y%,130)
  9.     NEXT
  10.   NEXT
  11.   FOR i% = 16 TO 160
  12.     CALL box(i%,i%,319-i%,199-i%,i%)
  13.   NEXt i%
  14.   x% = 16
  15.   y% = 1
  16. Nochmal:
  17.   x% = x% + y%
  18.   IF (x% = 16) OR (x% = 31) THEN y% = -y%
  19.   CALL SetCursor(10,12)
  20.   CALL GraphPrint(" MCGA = 256 Farben ",x%)
  21.  
  22.   IF INKEY$ = "" GOTO Nochmal
  23.  
  24.   col% = 1
  25.   FOR y% = 0 TO 199 STEP 5
  26.     CALL doline(0,100,319,0+y%,0+col%)
  27.     col% = col% + 1
  28.   NEXT
  29.  
  30.   FOR y% = 0 TO 199 STEP 5
  31.     CALL doline(0,0+y%,319,100,0+col%)
  32.     col% = col% + 1
  33.   NEXT
  34.  
  35.    WHILE INKEY$ =""
  36.    WEND
  37.  
  38.    CALL exitgraphic
  39.  
  40.  
  41. END
  42.  
  43. SUB plot(x%,y%,col%)
  44.  
  45.   DEF SEG = &HA000
  46.  
  47.   POKE y%*320+x%,col%
  48. END SUB
  49.  
  50.  
  51. SUB initgraphic
  52.   REG 1,&H13
  53.   CALL INTERRUPT &H10
  54. END SUB
  55.  
  56.  
  57. SUB exitgraphic
  58.   REG 1,&H3
  59.   CALL INTERRUPT &H10
  60. END SUB
  61.  
  62.  
  63. SUB GraphPrint(s$,col%)
  64.   LOCAL i%
  65.   FOR i% = 1 TO Len(s$)
  66.     REG 1,14*256+ASC(MID$(s$,i%,1))
  67.     REG 2,col%
  68.     CALL INTERRUPT &H10
  69.   NEXT
  70. END SUB
  71.  
  72.  
  73. SUB SetCursor(x%,y%)
  74.   REG 1,2*256
  75.   REG 2,0
  76.   REG 4,y%*256+x%
  77.   CALL INTERRUPT &H10
  78. END SUB
  79.  
  80. SUB doline(x1%,y1%,x2%,y2%,col%)
  81.  
  82. local abweichung%,deltax%,deltay%,x%,y%,zaehler%
  83.   abweichung%=0
  84.   deltax%=x2%-x1%
  85.   deltay%=y2%-y1%
  86.   IF deltay%<0 then
  87.     SWAP x1%,x2%
  88.     SWAP y1%,y2%
  89.     deltax%=-deltax%
  90.     deltay%=-deltay%
  91.   END IF
  92.   CALL plot(x1%,y1%,col%)
  93.   x%=x1%
  94.   y%=y2%
  95.   IF deltax%>0 THEN
  96.     IF deltax%<deltay% THEN
  97.       FOR zaehler%=1 TO deltay%-1
  98.         IF abweichung%<0 THEN
  99.           X%=x%+1
  100.           y%=y%+1
  101.           CALL plot(x%,y%,col%)
  102.           abweichung%=abweichung%+deltay%-deltax%
  103.         ELSE
  104.           y%=y%+1
  105.           CALL plot(x%,y%,col%)
  106.           abweichung%=abweichung%+deltay%-deltax%
  107.         END IF
  108.       NEXT
  109.     ELSE
  110.       FOR zaehler=1 TO deltax%-1
  111.         IF abweichung%<=0 THEN
  112.           x%=x%+1
  113.           CALL plot(x%,y%,col%)
  114.           abweichung%=abweichung%+deltay%
  115.         ELSE
  116.           x%=x%+1
  117.           y%=y%+1
  118.           CALL plot(x%,y%,col%)
  119.           abweichung%=abweichung%+deltay%-deltax%
  120.         END IF
  121.       NEXT
  122.     END IF
  123.   ELSE
  124.     IF ABS(deltax%)>=deltay% THEN
  125.       FOR zaehler%=1 TO ABS(deltax%)-1
  126.         IF abweichung%<=0 THEN
  127.           x%=x%-1
  128.           CALL plot(x%,y%,col%)
  129.           abweichung%=abweichung%+deltay%
  130.         ELSE
  131.           x%=x%+1
  132.           y%=y%+1
  133.           CALL plot(x%,y%,col%)
  134.           abweichung%=abweichung%+deltax%+deltay%
  135.         END IF
  136.       NEXT
  137.     ELSE
  138.       FOR zaehler%=1 TO deltay%-1
  139.         IF abweichung%< 0 THEN
  140.           x%=x%-1
  141.           y%=y%+1
  142.           CALL plot(x%,y%,col%)
  143.           abweichung%=abweichung%+deltax%+deltay%
  144.         ELSE
  145.           y%=y%+1
  146.           CALL plot(x%,y%,col%)
  147.           abweichung%=abweichung%+deltax%
  148.         END IF
  149.       NEXT
  150.     END IF
  151.   END IF
  152.   CALL plot(x%,y%,col%)
  153. END SUB
  154.  
  155.  
  156. SUB box(x1%,y1%,x2%,y2%,col%)
  157.  
  158.   CALL doline(0+x1%,0+y1%,0+x2%,0+y1%,0+col%)
  159.   CALL doline(0+x1%,0+y1%,0+x1%,0+y2%,0+col%)
  160.   CALL doline(0+x2%,0+y2%,0+x2%,0+y1%,0+col%)
  161.   CALL doline(0+x2%,0+y2%,0+x1%,0+y2%,0+col%)
  162. END SUB
  163.