home *** CD-ROM | disk | FTP | other *** search
/ PC Plus 58 / ISSUE_58_JUL_1991 / MAGAZINE / PALSYS.BAS < prev    next >
Encoding:
BASIC Source File  |  1991-01-01  |  2.9 KB  |  109 lines

  1. DEFINT A-Z
  2. '$INCLUDE: 'qb.bi'
  3. ON ERROR GOTO hand
  4. IF COMMAND$ <> "" THEN GOTO nloadpal
  5. DIM dave AS regtype
  6. CLS
  7. GOSUB usage
  8. LOCATE 3, 1
  9. FOR p = 0 TO 15: COLOR p: LOCATE p + 3, 7: PRINT STRING$(9, CHR$(219)); : PRINT : NEXT
  10. col = 3: oldcol = 4
  11. DO WHILE 1
  12.     dave.ax = &H1007
  13.     dave.bx = col - 3
  14.     CALL interrupt(&H10, dave, dave)
  15.     dacreg = dave.bx / 256
  16.     dave.ax = &H1015
  17.     dave.bx = dacreg
  18.     CALL interrupt(&H10, dave, dave)
  19.     r = (dave.dx / 256): g = (dave.cx / 256): b = (dave.cx AND 255)
  20.     LOCATE col, 6: PRINT CHR$(26): LOCATE col, 16: PRINT CHR$(27)
  21.     LOCATE oldcol, 6: PRINT CHR$(32): LOCATE oldcol, 16: PRINT CHR$(32)
  22.     oldcol = col
  23.     DO WHILE oldcol = col
  24.         LOCATE 4, 40: COLOR 15: PRINT "Colour ="; col - 3;
  25.         PRINT " R ="; r; " G ="; g; " B ="; b; "  ";
  26.         g$ = INPUT$(1): g$ = LCASE$(g$)
  27.         IF g$ = "8" THEN col = col - 1 ELSE IF g$ = "2" THEN col = col + 1
  28.         IF g$ = "7" THEN r = r - 1 ELSE IF g$ = "9" THEN r = r + 1
  29.         IF g$ = "4" THEN g = g - 1 ELSE IF g$ = "6" THEN g = g + 1
  30.         IF g$ = "1" THEN b = b - 1 ELSE IF g$ = "3" THEN b = b + 1
  31.         IF g$ = "s" THEN GOSUB savepal
  32.         IF g$ = "l" THEN GOSUB loadpal
  33.         IF g$ = "q" THEN
  34.             dave.ax = &H4C00
  35.             CALL interrupt(&H21, dave, dave)
  36.         END IF
  37.         IF r > 63 THEN r = 63 ELSE IF r < 0 THEN r = 0
  38.         IF g > 63 THEN g = 63 ELSE IF g < 0 THEN g = 0
  39.         IF b > 63 THEN b = 63 ELSE IF b < 0 THEN b = 0
  40.         IF col < 3 THEN col = 3 ELSE IF col > 18 THEN col = 18
  41.         dave.ax = &H1010
  42.         dave.bx = dacreg
  43.         dave.dx = r * 256
  44.         dave.cx = (256 * g) + b
  45.         CALL interrupt(&H10, dave, dave)
  46.         g$ = ""
  47.     LOOP
  48. LOOP
  49.  
  50. loadpal:
  51. LOCATE 6, 40: INPUT "Filename : ", a$
  52. LOCATE 6, 40: PRINT SPACE$(39);
  53. LOCATE 6, 40: PRINT "Loading palette...";
  54. OPEN "I", 1, a$
  55. FOR c = 0 TO 15
  56. INPUT #1, r, g, b
  57. dave.ax = &H1007: dave.bx = c
  58. CALL interrupt(&H10, dave, dave)
  59. dacreg = dave.bx / 256: dave.ax = &H1010: dave.bx = dacreg
  60. dave.dx = r * 256: dave.cx = (256 * g) + b
  61. CALL interrupt(&H10, dave, dave)
  62. NEXT
  63. CLOSE #1
  64. LOCATE 6, 40: PRINT SPACE$(39);
  65. RETURN
  66.  
  67. savepal:
  68. LOCATE 6, 40: INPUT "Filename : ", a$
  69. LOCATE 6, 40: PRINT SPACE$(39);
  70. LOCATE 6, 40: PRINT "Saving palette...";
  71. OPEN "O", 1, a$
  72. FOR c = 0 TO 15
  73. dave.ax = &H1007: dave.bx = c
  74. CALL interrupt(&H10, dave, dave)
  75. dacreg = dave.bx / 256: dave.ax = &H1015: dave.bx = dacreg
  76. CALL interrupt(&H10, dave, dave)
  77. r = (dave.dx / 256): g = (dave.cx / 256): b = (dave.cx AND 255)
  78. PRINT #1, r, g, b
  79. NEXT
  80. CLOSE #1
  81. LOCATE 6, 40: PRINT SPACE$(39);
  82. RETURN
  83.  
  84. usage:
  85. COLOR 15
  86. LOCATE 8, 40: PRINT "7 - Lose Red     9 - Gain Red"
  87. LOCATE 9, 40: PRINT "4 - Lose Green   6 - Gan  Green"
  88. LOCATE 10, 40: PRINT "1 - Lose Blue    3 - Gain Blue"
  89. LOCATE 12, 40: PRINT "8 - Move up      2 - Move Down"
  90. LOCATE 13, 40: PRINT "L - Load Palette S - Save Palette"
  91. LOCATE 14, 40: PRINT "Q - Quit to DOS"
  92. LOCATE 17, 40: PRINT "Written by D. Patient 1991"
  93. RETURN
  94.  
  95.  
  96. hand:
  97. PRINT "An error has occured."
  98. ERROR ERR
  99. END
  100.  
  101. nloadpal:
  102. GOSUB loadpal
  103. dave.ax = &H4C00
  104. CALL interrupt(&H21, dave, dave)
  105.  
  106.  
  107.  
  108.  
  109.