richard@islenet.UUCP (Richard Foulk) (12/14/84)
Several people have asked for graphics routines for use with the Aztec C
compiler on the Apple 2. I promised to send these to someone a while
back but I seem to have lost their address.
Anyway, here they are. I haven't used this stuff in quite some time so
my recollection of it is a bit vague but I'm pretty sure everything works.
At least on an Apple 2e with Aztec C version 1.05B (probably not the current
version). These routines should have been put into separate files and built
into a library, I just never got around to it. The formatting of the code
probably looks a bit strange since the Aztec editor has tab stops every
four columns instead of every eight.
If you can't figure out what each routine does just check your Applesoft
manual, most of the names are the same.
My having created and posted these routines should in no way be construed
as an endorsement of Apple computers or as a statement that Apple computers
are suitable for any purpose whatsoever.
These routines are Copyleft 1984 by Me. Enjoy.
Richard Foulk
-------------------------------cut here--------------------------------------
public hgr_ hgr(page);
public text_ text();
public rot_ rot(rotation);
public scale_ scale(scale_factor);
public xdraw_ xdraw(shape_no, x, y);
public draw_ draw(shape_no, x, y);
public hcolor_ hcolor(color);
public pdl_ pdl(paddle_no);
public plotline plotline(x, y, x2, y2);
public plot_ plot(x, y); plot a point
public plotto_ plotto(x, y); plot a line from the current loc
public clear_ clear(); clear hires screen
public peek_ peek(ad);
public poke_ poke(ad, byte);
sp equ 2
r0 equ 8
flag equ 0
temp equ 0
shapel equ $1a
shapeh equ $1b
shapepnt equ $e8 pointer to shape table
rotz equ $f9 shape rotation value is stored here
scalez equ $e7
hgr equ $f3e2
hgr2 equ $f3d8
rombyte equ $e000 this location holds a $4c if roms are enabled
selram equ $c080 select ram card
selrom equ $c081 select roms
hgr_ jsr romcheck check if rom selected and select if not
ldy #0
lda (sp),y
and #1
beq two
jsr hgr
jmp done
two jsr hgr2
done lda flag master exit, reselects ram-card if necessary
bne rts1
sta selram re-select ram card
rts1 rts
text_ lda $c051 turn on text mode
lda $c052 nomix
lda $c054 primary page
rts
pdl_ ldy #0
lda (sp),y
tax
jsr $fb1e go read paddle(x)
sty r0 val returned in y
lda #0
sta r0+1
rts
rot_ ldy #0
lda (sp),y
sta rotz
rts
scale_ ldy #0
lda (sp),y
sta scalez
rts
hcolor_ jsr romcheck
ldy #0
lda (sp),y
tax
jsr $f6f0
jmp done
plotline * plotline(x1, y1, x2, y2);
jsr romcheck
jsr plt plot a dot at x1 y1
jsr pltto
jmp done
plotto_
jsr romcheck
ldy #0
jsr pltto2
jmp done
pltto ldy #4
pltto2 lda (sp),y
pha x2 low
iny
lda (sp),y
tax x2 high
iny
lda (sp),y
tay y2
pla
jsr $f53a plot from current loc to x2 y2
rts
plot_ jsr romcheck plot(x, y);
jsr plt
jmp done
plt ldy #0
lda (sp),y
tax x1 low
iny
lda (sp),y
sta flag x1 high, save temporarily
iny
lda (sp),y y1
ldy flag
jsr $f457 plot a point
rts
romcheck
lda rombyte check if basic is "up" (ROMs)
sta flag init flag as no toggle necessary to call roms
cmp #$4c
beq ret
lda #0
sta selrom turn on roms
sta flag and set flag
ret rts
xdraw_ jsr romcheck
jsr drsetup
jsr $f661 xdraw routine
jmp done
draw_ jsr romcheck
jsr drsetup
jsr $f605 draw routine
jmp done
drsetup ldy #0
lda (sp),y get shape number
tax
jsr setshp
ldy #4
lda (sp),y Y location
sta $e2
dey
lda (sp),y X high
sta $e1
dey
lda (sp),y X low
sta $e0
tax setup registers for call
ldy $e1
lda $e2
jsr $f417 set position
lda rotz
rts
setshp lda shapepnt
sta shapel
lda shapepnt+1
sta shapeh
txa
dp1 asl a
bcc dp2
inc shapeh
clc
dp2 tay
lda (shapel),y
adc shapel
tax
iny
lda (shapel),y
adc shapepnt+1
sta shapeh
stx shapel
rts
clear_ lda #$20
sta temp+1
lda #0
sta temp
tay
ldx #$20
cloop sta (temp),y
iny
bne cloop
inc temp+1
dex
bne cloop
rts
peek_ ldy #1
lda (sp),y
sta temp+1
dey
lda (sp),y
sta temp
lda (temp),y
sta r0
lda #0
sta r0+1
rts
poke_ ldy #0
lda (sp),y
sta temp
iny
lda (sp),y
sta temp+1
iny
lda (sp),y
ldy #0
sta (temp),y
rts
end
--
Richard Foulk ...{dual,vortex,ihnp4}!islenet!richard
Honolulu, Hawaii