!!!Fast Graphics 15 Routines

General Information

Author: 	Carsten Strotmann \\
Language: 	ACTION! \\
Compiler/Interpreter: 	ACTION! \\
Published: 	12.04.90 \\

! Fast Graphics 15 Routines

{{{


00010			 .LI OFF
00020 ******************************
00030 *									 *
00040 * PROGRAMM:GR15GRAFIK		  *
00050 * AUTOR	:CARSTEN STROTMANN *
00060 * DATUM	:						*
00070 * VERSION :						*
00080 * FUER	 :ACTION!			  *
00090 *									 *
00100 ******************************
00110 ;
00120 ROWAC	 =	$70
00130 COLAC	 =	$72
00140 BITMSK	=	$6E
00150 SHFAMT	=	$6F
00160 SAVMSC	=	$58
00170 XNEU	  =	$5A
00180 YNEU	  =	$5B
00190 XALT	  =	$55
00200 YALT	  =	$54
00210 ZAEHLER  =	$E4
00220 DELTAX	=	$76
00230 DELTAY	=	$77
00240 XFLAG	 =	$74
00250 YFLAG	 =	$75
00251 HLP		=	$E6
00260 HILFA	 =	$E9
00270 HILFB	 =	$EB
00280 HILFT	 =	$ED
00290 FILLDAT  =	$2FD
00300 ;
00310 ;
00320			 .OR $0600
00330			 .OF "D:GR15MOD.COM"
00340 ;
00350 ;
00360 PLOT
00370			 AND #3
00380			 STA BITMSK
00390			 STX XALT
00400			 STY YALT
00410			 LDA #0
00420			 STA HLP
00430			 STA HLP+1
00440			 STA HLP+2
00450			 TYA
00460			 ASL
00470			 ROL HLP
00480			 ASL
00490			 ROL HLP
00500			 ASL
00510			 ROL HLP	 Y*8
00520			 STA HLP+1
00530			 LDX HLP
00540			 STX HLP+2
00550			 ASL
00560			 ROL HLP
00570			 ASL
00580			 ROL HLP
00590			 CLC
00600			 ADC HLP+1
00610			 STA HLP+1
00620			 LDA HLP+2
00630			 ADC HLP
00640			 STA HLP+2
00650			 CLC
00660			 LDA SAVMSC
00670			 ADC HLP+1
00680			 STA ROWAC
00690			 LDA SAVMSC+1
00700			 ADC HLP+2
00710			 STA ROWAC+1
00720			 LDA XALT
00730			 AND #3	 ;X MOD 4
00740			 STA SHFAMT
00750			 LDA XALT
00760			 LSR	 ;X/4
00770			 LSR
00780			 CLC
00790			 ADC ROWAC
00800			 STA ROWAC
00810			 BCC .3
00820			 INC ROWAC+1
00830 .3		 LDX BITMSK
00840			 LDA COLR,X
00850			 LDX SHFAMT
00860			 AND OFFS,X
00870			 STA BITMSK
00880			 LDY #0
00890			 LDA (ROWAC),Y
00900			 AND OFF2,X
00910			 ORA BITMSK
00920			 STA (ROWAC),Y
00930			 RTS
00940 ------------------------------
00950 OFFS	  .HX C0300C03
00960 OFF2	  .HX 3FCFF3FC
00970 COLR	  .HX 00AA55FF
00990 ------------------------------
01000			 .OR $7000
01010 ;
01020 LINE
01030			 STX XNEU
01040			 STY YNEU
01050			 STA FILLDAT
01060			 LDX XALT
01070			 LDY YALT
01080			 JSR PLOT
01090			 LDA #0
01100			 STA XFLAG
01110			 STA YFLAG
01120			 LDX XNEU
01130			 LDY YNEU
01140 ;
01150			 CPX XALT
01160			 BNE .1
01170			 CPY YALT
01180			 BNE .1
01190			 RTS
01200 ;
01210 .1		 CPX XALT
01220			 BCC DRX
01230			 INC XFLAG
01240			 TXA
01250			 SBC XALT
01260			 JMP DR2
01270 ;
01280 DRX
01290			 DEC XFLAG
01300			 SEC
01310			 LDA XALT
01320			 SBC XNEU
01330 ;
01340 DR2
01350			 STA DELTAX
01360			 CPY YALT
01370			 BCC DRY
01380			 INC YFLAG
01390			 TYA
01400			 SBC YALT
01410			 JMP DR3
01420 ;
01430 DRY
01440			 DEC YFLAG
01450			 SEC
01460			 LDA YALT
01470			 SBC YNEU
01480 ;
01490 DR3
01500			 STA DELTAY
01510			 LDA XALT
01520			 STA XNEU
01530			 LDA YALT
01540			 STA YNEU
01550			 LDA DELTAX
01560			 CMP DELTAY
01570			 BCC DRYSTEP
01580 ;
01590			 LDA DELTAY
01600			 ASL
01610			 STA HILFA
01620			 LDA #0
01630			 ROL
01640			 STA HILFA+1
01650 ;
01660			 SEC
01670			 LDA HILFA
01680			 SBC DELTAX
01690			 STA HILFT
01700			 LDA HILFA+1
01710			 SBC #0
01720			 STA HILFT+1
01730 ;
01740			 SEC
01750			 LDA HILFT
01760			 SBC DELTAX
01770			 STA HILFB
01780			 LDA HILFT+1
01790			 SBC #0
01800			 STA HILFB+1
01810 ;
01820			 LDA DELTAX
01830			 STA ZAEHLER
01840 ;
01850 DXSCHL
01860			 CLC
01870			 LDA XNEU
01880			 ADC XFLAG
01890			 STA XNEU
01900			 LDA HILFT+1
01910			 BPL DRX5
01920 ;
01930			 CLC
01940			 LDA HILFT
01950			 ADC HILFA
01960			 STA HILFT
01970			 LDA HILFT+1
01980			 ADC HILFA+1
01990			 STA HILFT+1
02000 ;
02010			 JMP DRX4
02020 ;
02030 DRX5
02040			 CLC
02050			 LDA HILFT
02060			 ADC HILFB
02070			 STA HILFT
02080			 LDA HILFT+1
02090			 ADC HILFB+1
02100			 STA HILFT+1
02110 ;
02120			 CLC
02130			 LDA YNEU
02140			 ADC YFLAG
02150			 STA YNEU
02160 ;
02170 DRX4
02180			 LDX XNEU
02190			 LDY YNEU
02200			 LDA FILLDAT
02210			 JSR PLOT
02220			 DEC ZAEHLER
02230			 BNE DXSCHL
02240			 JMP DREND
02250 ;
02260 DRYSTEP
02270			 LDA DELTAX
02280			 ASL
02290			 STA HILFA
02300			 LDA #0
02310			 ROL
02320			 STA HILFA+1
02330 ;
02340			 SEC
02350			 LDA HILFA
02360			 SBC DELTAY
02370			 STA HILFT
02380			 LDA HILFA+1
02390			 SBC #0
02400			 STA HILFT+1
02410 ;
02420			 SEC
02430			 LDA HILFT
02440			 SBC DELTAY
02450			 STA HILFB
02460			 LDA HILFT+1
02470			 SBC #0
02480			 STA HILFB+1
02490 ;
02500			 LDA DELTAY
02510			 STA ZAEHLER
02520 ;
02530 DYSCHL
02540			 CLC
02550			 LDA YNEU
02560			 ADC YFLAG
02570			 STA YNEU
02580			 LDA HILFT+1
02590			 BPL DRY5
02600 ;
02610			 CLC
02620			 LDA HILFT
02630			 ADC HILFA
02640			 STA HILFT
02650			 LDA HILFT+1
02660			 ADC HILFA+1
02670			 STA HILFT+1
02680 ;
02690			 JMP DRY4
02700 ;
02710 DRY5
02720			 CLC
02730			 LDA HILFT
02740			 ADC HILFB
02750			 STA HILFT
02760			 LDA HILFT+1
02770			 ADC HILFB+1
02780			 STA HILFT+1
02790			 CLC
02800			 LDA XNEU
02810			 ADC XFLAG
02820			 STA XNEU
02830 DRY4
02840			 LDX XNEU
02850			 LDY YNEU
02860			 LDA FILLDAT
02870			 JSR PLOT
02880			 DEC ZAEHLER
02890			 BNE DYSCHL
02900 ;
02910 DREND
02920			 LDX XNEU
02930			 LDY YNEU
02940			 STX XALT
02950			 STY YALT
02960			 RTS
02970 ------------------------------

}}}

----

! ACTION Routinen

{{{


;********************************
;**									 **
;** Phoenix SoftCrew ACTION!	**
;** Programme und Tips f. 8Bit **
;**									 **
;** Carsten Strotmann			 **
;**									 **
;********************************

; Programmname:Gr.15 Fast Modul
; done by:Carsten Strotmann
; Filename:GR15MOD.ACT
; first Version:12.04.90
; last change:12.04.90
; fast gr 15 routines
;

;

PROC FPlot=$0600 (BYTE color,x,y)
PROC FLine=$7000 (BYTE color,x,y)

PROC Pixel (CARD x,y)

 IF x>=0 AND x<160 AND y>=0 AND y<192 THEN
  FPlot (color,x,y)
 FI

RETURN
  
PROC LineTo (BYTE x1,y1,x2,y2)

 Pixel (x1,y1)
 FLine (color,x2,y2)

RETURN

CARD FUNC Abs (INT val)

 IF val<0 THEN
  val=-val
 FI

RETURN (val)

{code}

----

1.1.1 Demo Program

{code}

;********************************
;**									 **
;** Phoenix SoftCrew ACTION!	**
;** Programme und Tips f. 8Bit **
;**									 **
;** Carsten Strotmann			 **
;**									 **
;********************************

; Programname:BOX15.ACT
; done by:BJOERN ISREAL/CARSTEN STROTMANN
; Filename:BOX15.ACT
; first Version:22.04.90
; last change:22.04.90
; DEMO
;

INCLUDE "GR15MOD.ACT"

PROC Kiste ()

 BYTE hcol=710,pcol=709,rcol=712,
		za,c,pza,
		xpos1,xpos2,px1,px2,
		ypos1,ypos2,py1,py2,
		x2pos1,x2pos2,px21,px22,
		y2pos1,y2pos2,py21,py22,
		rra,rri,obra,obri,ura,uri,lra,lri

 rra=150
 rri=140
 obra=3
 obri=13
 ura=190
 uri=180
 lra=3
 lri=13

 xpos1=10
 ypos1=10
 xpos2=30
 ypos2=20
 
 x2pos1=10
 y2pos1=10
 x2pos2=30
 y2pos2=20

 px1=3
 px2=3 
 py1=3
 py2=3

 px21=3
 px22=3
 py21=3
 py22=3

 c=1

 pza=0
 za=0

 Graphics (31)

 hcol=12
 pcol=2
 rcol=14

 color=2

 LineTo (0,0,159,0)
 LineTo (159,0,159,191)
 LineTo (159,191,0,191)
 LineTo (0,191,0,0)

 DO
  xpos1==+px1
  xpos2==+px2
  ypos1==+py1
  ypos2==+py2

  IF xpos1>rra THEN
	px1=-3
  FI

  IF xpos1<lra THEN
	px1=3
  FI

  IF xpos2>rri THEN
	px2=-3
  FI

  IF xpos2<lri THEN
	px2=3
  FI

;
;******
;

  IF ypos1>ura THEN
	py1=-3
  FI

  IF ypos1<obra THEN
	py1=3
  FI

  IF ypos2>uri THEN
	py2=-3
  FI

  IF ypos2<obri THEN
	py2=3
  FI

;
;****
;

  color=1

  LineTo (xpos1,ypos1,xpos2,ypos2)
 
  IF pza=0 THEN
	za==+1
  FI

  IF za=30 THEN
	pza=1

	x2pos1==+px21
	x2pos2==+px22
	y2pos1==+py21
	y2pos2==+py22

	IF x2pos1>rra THEN
	 px21=-3
	FI

	IF x2pos1<lra THEN
	 px21=3
	FI

	IF x2pos2>rri THEN
	 px22=-3 
	FI

	IF x2pos2<lri THEN
	 px22=3
	FI

;
;****
;

	IF y2pos1>ura THEN
	 py21=-3
	FI

	IF y2pos1<obra THEN
	 py21=3
	FI

	IF y2pos2>uri THEN
	 py22=-3
	FI

	IF y2pos2<obri THEN
	 py22=3
	FI

;
;****
;

	color=0

	LineTo (x2pos1,y2pos1,x2pos2,y2pos2)
  FI
 OD

RETURN

}}}