home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / s85xx / s8504b.d64 / interface.src < prev    next >
Text File  |  1995-03-30  |  5KB  |  272 lines

  1. ; INTERFACE - EASY PARAMETER SETTING FOR SHAPE
  2. ; DRAWING ROUTINES FROM BASIC.
  3. ;
  4. ; RICHARD L. RYLANDER  11/23/84
  5. ;
  6. ;****************************************
  7. ORIGIN=$CAC8
  8. RAM   =$0393
  9. ;
  10. ; PARAMETER LOCATIONS FOR VARIOUS SHAPES
  11. ;
  12. XCENT =$036A
  13. YCENT =$036F
  14. XPLOT =$033F
  15. YPLOT =$0341
  16. XMIN  =$034A
  17. YMIN  =$034C
  18. XMID  =$034D
  19. YMID  =$034F
  20. XMAX  =$0350
  21. YMAX  =$0352
  22. RADIUS =$0377
  23. HLEN  =$0389
  24. RI    =$038F
  25. RO    =$038E
  26. ;
  27. HVFLAG =$0383
  28. VALUE =$0344
  29. PLTFLG =$033E
  30. ;
  31. DEFLAG =$FB
  32. ;
  33. ;****************************************
  34. ;
  35. ; FUNCTION LOCATIONS
  36. ;
  37. GRFON =$C0E2      ; SWITCH TO GRAPHICS MODE
  38. GRFOFF =$C103      ; RETURN TO TEXT DISPLAY
  39. ;
  40. CLEARR=$C12C       ; CLEAR BITMAP
  41. CLRBYT=$C135       ; CLEAR (FILL) BYTE
  42. COLORR=$C118       ; LOAD COLOR MAP
  43. COLBYT=$C119       ; COLOR BYTE
  44. ;
  45. PLOTR =$C14B      ; POINT PLOT ROUTINE
  46. LINER =$C2DB       ; DRAW A LINE
  47. FACETR =$C4E1       ; DRAW A SHADED FACET
  48. ;
  49. ;****************************************
  50. ;
  51. ; SHADED SHAPE DRAWING ROUTINES
  52. ;
  53. SPHERR=$C7C7       ; SPHERE
  54. CYLNDR=$C864       ; CYLINDER
  55. TORUSR=$C90F       ; TOP-VIEW TOROID
  56. EDGTOR=$C88F       ; EDGE-VIEW TOROID
  57. SPOOLR=$CA3B       ; INSIDE-VIEW TOROID
  58. ;
  59. ;****************************************
  60. ;
  61. ; BASIC ROM ROUTINES
  62. ;
  63. CHKCOM=$AEFD       ; CHECK FOR COMMA
  64. EVAEXP=$AD9E       ; EVALUATE EXPRESSION
  65. FLTFIX=$B1AA       ; CONVERT TO FIXED
  66. ;
  67. *=RAM
  68. LINFAC *=*+1       ; LINE OR FACET FLAG
  69. ;
  70. *=ORIGIN
  71. ;
  72. ;****************************************
  73. ;
  74. ; GET PARAMETERS FROM BASIC CALLING STATEMENT
  75. ; OF THE FORM:
  76. ; SYS(FNCTN),PARAM1,PARAM2,PARAM3[OPT]
  77. ; WHERE THE THIRD PARAMETER (FOR EXAMPLE)
  78. ; MAY BE OPTIONAL (A DEFAULT VALUE IS USED
  79. ; IF THE PARAMETER IS NOT SPECIFIED)
  80. ;
  81. GETNUM JSR CHKCOM   ; LOOK FOR COMMA
  82.        JSR EVAEXP   ; EVALUATE EXPRESSION
  83.        JSR FLTFIX   ; CHANGE TO INTEGER WITH
  84. ; HIGH BYTE IN "A" AND LOW BYTE IN "Y"
  85.        RTS
  86. ;
  87. ; CHECK FOR ADDITIONAL (OPTIONAL) PARAMETERS
  88. ;
  89. PCHECK LDA #$2C     ; "," COMMA
  90.        LDY #0
  91.        STY DEFLAG
  92.        CMP ($7A),Y
  93.        BNE NOMORE   ; NO COMMA - USE DEFAULT
  94.        JMP $0073
  95. NOMORE LDY #$80
  96.        STY DEFLAG
  97.        RTS
  98. ;
  99. ; GET TWO ADDITIONAL PARAMETERS FOR TOROIDS
  100. ;
  101. GETTWO JSR PCHECK
  102.        BIT DEFLAG
  103.        BMI DFAULT
  104.        JSR EVAEXP
  105.        JSR FLTFIX
  106.        STY RI
  107.        JSR GETNUM
  108.        STY RO
  109. DFAULT RTS
  110. ;
  111. ;****************************************
  112. ;
  113. ; SET CENTER COORDINATES
  114. ;
  115. CENTER JSR GETNUM
  116.        STY XCENT
  117.        STA XCENT+1
  118.        JSR GETNUM
  119.        STY YCENT
  120.        RTS
  121. ;
  122. ;****************************************
  123. ;
  124. ; CLEAR THE BITMAP, FILLING WITH (OPTIONAL)
  125. ; FILL VALUE SPECIFIED OR WITH (DEFAULT) "0"
  126. ;
  127. CLEAR2 JSR PCHECK
  128.        BIT DEFLAG
  129.        BMI DEFCLR
  130.        JSR EVAEXP
  131.        JSR FLTFIX
  132.        .BYTE $2C
  133. DEFCLR LDY #0
  134.        STY CLRBYT
  135.        JMP CLEARR
  136. ;
  137. ;****************************************
  138. ;
  139. ; FILL COLOR MAP WITH (OPTIONAL) COLOR BYTE
  140. ; SPECIFIED OR WITH (DEFAULT) "$01"
  141. ; (BLACK DOTS ON WHITE BACKGROUND)
  142. ;
  143. COLOR2 JSR PCHECK
  144.        BIT DEFLAG
  145.        BMI DEFCOL
  146.        JSR EVAEXP
  147.        JSR FLTFIX
  148.        .BYTE $2C
  149. DEFCOL LDY #$01
  150.        STY COLBYT
  151.        JMP COLORR
  152. ;
  153. ;****************************************
  154. ;
  155. ; PLOT OR UNPLOT POINTS
  156. ;
  157. PLOT2  LDA #0
  158.        .BYTE $2C
  159. UNPLT2 LDA #$80
  160.        STA PLTFLG
  161.        JSR GETNUM
  162.        STY XPLOT
  163.        STA XPLOT+1
  164.        JSR GETNUM
  165.        STY YPLOT
  166.        JMP PLOTR
  167. ;
  168. ;****************************************
  169. ;
  170. ; DRAW LINES BETWEEN (X1,Y1) AND (X2,Y2)
  171. ; OR SHADED FACETS BETWEEN THREE POINTS
  172. ; (X1,Y1), (X2,Y2) AND (X3,Y3)
  173. ;
  174. LINE2  LDA #0
  175.        .BYTE $2C
  176. FACET2 LDA #$80
  177.        STA LINFAC
  178.        JSR GETNUM
  179.        STY XMIN
  180.        STA XMIN+1
  181.        JSR GETNUM
  182.        STY YMIN
  183.        JSR GETNUM
  184.        STY XMID
  185.        STA XMID+1
  186.        JSR GETNUM
  187.        STY YMID
  188.        BIT LINFAC
  189.        BPL LDRAW
  190.        JSR GETNUM
  191.        STY XMAX
  192.        STA XMAX+1
  193.        JSR GETNUM
  194.        STY YMAX
  195.        JSR GETNUM
  196.        STY VALUE
  197.        JMP FACETR
  198. LDRAW  JMP LINER
  199. ;
  200. ;****************************************
  201. ;
  202. ; DRAW A SPHERE CENTERED AT (XCENT,YCENT)
  203. ; DEFAULT RADIUS IS LAST VALUE USED
  204. ;
  205. SPHER2 JSR CENTER
  206.        JSR PCHECK
  207.        BIT DEFLAG
  208.        BMI SKIP1
  209.        JSR EVAEXP
  210.        JSR FLTFIX
  211.        STY RADIUS
  212. SKIP1  JMP SPHERR
  213. ;
  214. ;****************************************
  215. ;
  216. ; DRAW A TOP-VIEW TOROID AT (XCENT,YCENT)
  217. ; DEFAULT INNER AND OUTER RADII ARE LAST USED
  218. ;
  219. TORUS2 JSR CENTER
  220.        JSR GETTWO
  221.        JMP TORUSR
  222. ;
  223. ;****************************************
  224. ;
  225. ; DRAW CYLINDERS WITH AXES HORIZONTAL OR
  226. ; VERTICAL.  DEFAULT RADIUS AND "HALF-LENGTH"
  227. ; ARE LAST VALUES USED.
  228. ;
  229. VCYL2  LDA #$80
  230.        .BYTE $2C
  231. HCYL2  LDA #0
  232.        STA HVFLAG
  233.        JSR CENTER
  234.        JSR PCHECK
  235.        BIT DEFLAG
  236.        BMI SKIP2
  237.        JSR EVAEXP
  238.        JSR FLTFIX
  239.        STY RADIUS
  240.        JSR GETNUM
  241.        STY HLEN
  242. SKIP2  JMP CYLNDR
  243. ;
  244. ;****************************************
  245. ;
  246. ; DRAW EDGE-VIEW TOROIDS WITH AXES HORIZONTAL
  247. ; OR VERTICAL
  248. ; INNNER AND OUTER RADII ARE OPTIONAL
  249. ;
  250. VTOR2  LDA #$80
  251.        .BYTE $2C
  252. HTOR2  LDA #0
  253.        STA HVFLAG
  254.        JSR CENTER
  255.        JSR GETTWO
  256.        JMP EDGTOR
  257. ;
  258. ;****************************************
  259. ;
  260. ; DRAW INSIDE-VIEW TOROIDS, "SPOOLS",
  261. ; WITH AXES HORIZONTAL OR VERTICAL
  262. ; INNER AND OUTER RADII ARE OPTIONAL
  263. ;
  264. VSPL2  LDA #$80
  265.        .BYTE $2C
  266. HSPL2  LDA #0
  267.        STA HVFLAG
  268.        JSR CENTER
  269.        JSR GETTWO
  270.        JMP SPOOLR
  271. .END
  272.