home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib22b.dsk / DHR.PALETTE.bas < prev    next >
BASIC Source File  |  2023-02-26  |  7KB  |  92 lines

  1. 10  REM  **********************
  2. 20  REM  *     DHR.PALETTE    *
  3. 30  REM  *  BY ROBERT DEVINE  *
  4. 40  REM  * COPYRIGHT (C) 1984 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * LINCOLN, MA. 01773 *
  7. 70  REM  **********************
  8. 140  PRINT  CHR$(4)"BLOAD DHR.DRIVER": HIMEM: 37507: CALL 37999: REM  LOAD DRIVER/PROTECT/SET-UP YTABLE
  9. 150  FOR X = 768 TO 776: READ Y: POKE X,Y: NEXT : REM  POKE BIT RETRIEVER INTO MEMORY
  10. 160  DATA  162,0,134,252,70,251,38,252,96
  11. 170  TEXT : HOME : VTAB 22: PRINT "** COPYRIGHT 1984 BY MICROSPARC, INC. **": VTAB 5: PRINT "WILL YOU WORK WITH (B)LANK SCREEN": PRINT "OR (E)XISTING PICTURE ?";: GET A$
  12. 180  PRINT : PRINT : IF A$ = "B"  THEN  HGR : CALL 37928: GOTO 260: REM  CLEAR DHR SCREEN
  13. 190  PRINT "IS PICTURE IN MEMORY Y/N ?";: GET A$: PRINT : IF A$ = "Y"  THEN 260
  14. 200  HOME : PRINT  CHR$(4)"CATALOG": PRINT : INPUT "WHAT IS PICTURE NAME ?";A$: ONERR  GOTO 870: REM  IF 'FILE NOT FOUND ERROR' OCCURS TURN DHR OFF - EXIT PROGRAM
  15. 210  PRINT  CHR$(4)"PR#3": CALL 37953: POKE 49235,0: HOME : CALL 37916: REM  INIT DHR/MIXED TEXT/CLEAR TEXT WINDOW
  16. 220  PRINT  CHR$(4)"BLOAD"A$"-PAGE1X": POKE 49236,0: POKE 49152,0: POKE 37948,56: CALL 37928: REM  LOAD PICTURE TO AUXILIARY MEMORY
  17. 230  PRINT  CHR$(4)"BLOAD"A$"-PAGE1": GOTO 270: REM  LOAD PICTURE TO MAIN MEMORY
  18. 240  POKE 49236,0:CX =  INT(X/7): IF CX/2 =  INT(CX/2)  THEN  POKE 49237,0
  19. 250 XC =  INT(CX/2) +X/7 -CX:XC =  INT(XC *7 +.5): RETURN : REM  TRANSLATE X (0-559) TO XC (0-279)
  20. 260  PRINT  CHR$(4)"PR#3": CALL 37953: REM  CARD ON/INIT DHR
  21. 270 P = 3:CB = 1:F = 1:X = 0:Y = 0: POKE 230,32: GOSUB 240: HCOLOR= P:XO = X:YO = Y: GOTO 470: REM  INITIALIZE PLOT MODE/COLOR BIT/SPEED=SLOW
  22. 280  VTAB 15: GET A$: PRINT : IF A$ = "V"  THEN L = 1: GOTO 510: REM  ENTER 'VISITING' MODE-MOVEMENT WILL NOT AFFECT SCREEN
  23. 290  IF A$ =  CHR$(11)  THEN Y = Y -F: GOTO 410: REM  MOVE UP
  24. 300  IF A$ =  CHR$(10)  THEN Y = Y +F: GOTO 410: REM  MOVE DOWN
  25. 310  IF A$ =  CHR$(8)  THEN X = X -F: ON (F = 4) GOTO 410:CB = CB -1: GOTO 410: REM  MOVE LEFT
  26. 320  IF A$ =  CHR$(32)  THEN X = X +F: ON (F = 4) GOTO 410:CB = CB +1: GOTO 410: REM  MOVE RIGHT
  27. 330  IF A$ = "F"  THEN F = 4: GOTO 510: REM  CHANGE TO FAST
  28. 340  IF A$ = "S"  THEN F = 1: GOTO 510: REM  CHANGE TO SLOW
  29. 350  IF A$ = "G"  THEN  POKE 49234,0: GOTO 280: REM  FULL SCREEN GRAPHICS
  30. 360  IF A$ = "T"  THEN  POKE 49235,0: GOTO 280: REM  RETURN TO TEXT WINDOW
  31. 370  IF A$ = "N"  THEN P = 0:L = 0: GOTO 450: REM  ENTER NOPLOT MODE
  32. 380  IF A$ = "P"  THEN P = 3:L = 0: GOTO 450: REM  ENTER PLOT MODE
  33. 390  IF A$ =  CHR$(19)  THEN  HOME : PRINT  CHR$(12); CHR$(21): CALL 37966: GOTO 670: REM  READY TO SAVE WORK
  34. 400  GOTO 280: REM  NO LEGAL COMMAND FOUND
  35. 410  IF X <0  THEN X = 0: GOTO 280
  36. 420  IF X >559  THEN X = 559: GOTO 280
  37. 430  IF Y <0  THEN Y = 0: GOTO 280
  38. 440  IF Y >191  THEN Y = 191: GOTO 280
  39. 450  GOSUB 240: ON L GOTO 470: HCOLOR= P: IF P = 3  THEN  HPLOT XC,Y:XO = X:YO = Y: GOTO 470
  40. 460 X1 = X:Y1 = Y:X = XO:Y = YO: GOSUB 240: HPLOT XC,Y:X = X1:Y = Y1: GOSUB 240: HCOLOR= 3: HPLOT XC,Y:XO = X:YO = Y: REM  NOPLOT MODE
  41. 470  POKE 6,Y: CALL 37988:B =  PEEK(38) + PEEK(39) *256 + INT(XC/7):V =  PEEK(B)
  42. 480  VTAB 21: PRINT "COLUMN="CX" ";: POKE 1403,12: IF CX/2 =  INT(CX/2)  THEN  PRINT "PAGE=1X";: GOTO 500
  43. 490  PRINT "PAGE=1 ";
  44. 500  POKE 1403,24: PRINT "HPLOT 'X'="XC"  ";: POKE 1403,40: PRINT "X="X"  ";: POKE 1403,48: PRINT "Y="Y"  ";: POKE 1403,60: PRINT "ADDRESS="B" "
  45. 510  VTAB 22: IF L = 1  THEN  PRINT "VISITING-MODE";: GOTO 540
  46. 520  IF P = 3  THEN  PRINT "PLOT-MODE    ";: GOTO 540
  47. 530  PRINT "NOPLOT-MODE  ";
  48. 540  POKE 1403,40: IF F = 1  THEN  PRINT "SPEED=SLOW": GOTO 560
  49. 550  PRINT "SPEED=FAST"
  50. 560  VTAB 23: PRINT "BYTE VALUE="V"  ";: POKE 1403,16: PRINT "BITS=";: REM  PRINT VALUE OF BYTE
  51. 570  POKE 251,V:B$ = ""
  52. 580  FOR M = 1 TO 8: CALL 768: IF  PEEK(252) = 1  THEN B$ = B$ +"1": GOTO 600
  53. 590 B$ = B$ +"0"
  54. 600  NEXT : FOR M = 1 TO 8
  55. 610  IF M = XC -(7 *( INT(XC/7))) +1  THEN  INVERSE : REM  INVERSE FOR THE BIT WE'RE ON
  56. 620  PRINT  MID$ (B$,M,1);: NORMAL : PRINT " ";: NEXT : PRINT " ";
  57. 630  POKE 1403,40: PRINT "HL-HR=" INT(XC/7)" ";: POKE 1403,52: PRINT "COLOR BLOCK=" INT(X/4)"  ";
  58. 640  POKE 1403,70: IF CB = 5  THEN CB = 1
  59. 650  IF CB = 0  THEN CB = 4
  60. 660  PRINT "BIT #";CB: GOTO 280
  61. 670  HOME : VTAB 6: PRINT "WANT TO SAVE YOUR WORK (Y/N) ?";: GET A$: PRINT : IF A$ = "N"  THEN 970
  62. 680  VTAB 10: PRINT "(S)HAPE TABLE or (P)ICTURE ?";: GET A$: PRINT : IF A$ < >"S"  AND A$ < >"P"  THEN 680
  63. 690  IF A$ = "P"  THEN 880
  64. 700  HOME : INPUT "ENTER VT (0 -39) ";VT: PRINT 
  65. 710  INPUT "ENTER VB (VT-39) ";VB: PRINT 
  66. 720  INPUT "ENTER HR (HL-39) ";HR: PRINT 
  67. 730  INPUT "ENTER HL (0 -39) ";HL: PRINT : PRINT 
  68. 740  INPUT "WHAT IS THE SHAPE# (64-146) ?";SHNUM: PRINT 
  69. 750  IF ((VB -VT +1) *(HR -HL +1)) *2 +SHNUM *256 >37506  THEN  PRINT : FLASH : PRINT "SHAPE TABLE TOO BIG TO FIT UNDER DRIVER": NORMAL : PRINT "SELECT LOWER SHAPE #": PRINT : GOTO 740
  70. 760  PRINT "ARE ALL SHAPE PARAMETERS CORRECT ? (Y/N)";: GET A$: PRINT : IF A$ < >"Y"  THEN 700
  71. 770  HIMEM: SHNUM *256: REM  RESET HIMEM TO PROTECT SHAPE
  72. 780  POKE 251,SHNUM: POKE 252,VT: POKE 253,VB: POKE 254,HR: POKE 255,HL
  73. 790  PRINT  CHR$(4)"PR#3": CALL 37953: POKE 49153,0: CALL 37850: REM  CREATE SHAPE TABLE
  74. 800  HGR : POKE 49152,0: CALL 37928: POKE 251,SHNUM: POKE 49153,0: CALL 37780: POKE 49236,0: REM  ERASE SCREEN AND DRAW SHAPE FROM TABLE
  75. 810  HOME : VTAB 21: PRINT "HERE IS THE SHAPE IN YOUR SHAPE TABLE.": PRINT "DO YOU WANT TO SAVE IT (Y/N) ?";: GET A$: PRINT 
  76. 820  IF A$ = "N"  THEN 870
  77. 830  HOME : VTAB 22: INPUT "WHAT IS THE NAME ?";A$
  78. 840  HOME : VTAB 22: PRINT "SAVING SHAPE TO DISK"
  79. 850  PRINT  CHR$(4)"BSAVE "A$",A"SHNUM *256",L"((VB -VT +1) *(HR -HL +1)) *2
  80. 860  PRINT  CHR$(4)"LOCK"A$
  81. 870  PRINT  CHR$(12); CHR$(21): CALL 37966: PRINT "FILE NOT FOUND PRESS ANY KEY TO RESTART": GET K$: PRINT : GOTO 170
  82. 880  PRINT : PRINT : INPUT "ENTER PICTURE NAME: ";A$: ONERR  GOTO 980
  83. 890  IF  LEN(A$) >23  THEN  PRINT : FLASH : PRINT "NAME IS TOO LONG": NORMAL : GOTO 880
  84. 900  PRINT : PRINT "SAVING PICTURE FROM MAIN MEMORY"
  85. 910 F$ = A$ +"-PAGE1": PRINT  CHR$(4)"BSAVE "F$",A$2000,L$2000"
  86. 920  PRINT  CHR$(4)"LOCK"F$
  87. 930  CALL 37953: POKE 49236,0: POKE 49152,0: POKE 37948,24: CALL 37928: CALL 37966: REM  MOVE PAGE1X TO PAGE1
  88. 940  PRINT : PRINT "SAVING PICTURE FROM AUXILIARY MEMORY"
  89. 950 F$ = A$ +"-PAGE1X": PRINT  CHR$(4)"BSAVE"F$",A$2000,L$2000"
  90. 960  PRINT  CHR$(4)"LOCK"F$
  91. 970  PRINT : PRINT  CHR$(4)"CATALOG": END 
  92. 980  PRINT : PRINT "DISK ERROR OCCURED-TRY AGAIN": GOTO 880: REM  IF TRYING TO RESAVE INTO LOCKED DISK FILE - USE A DIFFERENT PICTURE NAME