[A83] Re: Official H**s Replacement Commands & Questions & PulseWidthMod
[Prev][Next][Index][Thread]
[A83] Re: Official H**s Replacement Commands & Questions & PulseWidthModulation
LDIR copies BC bytes from HL (source) to DE (dest). It's not very efficient,
though. Unrolling it as LDI's is more efficient.
Bits are 7,6,5,4,3,2,1,0 in that order: so using the bit command tests that
bit of the byte. Sensibly, if the bit is nonzero (1), then you check that
with the NZ flag..
It doesn't exactly seem that your code would work, because B is always reset
to the value 0 after one go through the loop, which would make changing the
width not be noticed. But optimization ideas anyway:
#define WAIT ei\ halt\ djnz $-2
begin:
ld b,0
loop:
bcall(_getky)
cp kDown
inc b \ ret
jr nz,notdown
notdown:
cp kUp
jr nz,notup
dec b \ ret
notup:
cp kClear
ret z
ld a,$C3 ;off
out($00),a
WAIT
ld a,$C0 ;on
WAIT
jr loop
-----Original Message-----
From: assembly-83-bounce@lists.ticalc.org
[mailto:assembly-83-bounce@lists.ticalc.org]On Behalf Of Ronald Teune
Sent: Monday, July 02, 2001 6:39 AM
To: Assembly 83
Subject: [A83] Official H**s Replacement Commands & Questions &
PulseWidthModulation
HRC1: ex de,hl = push de \ push hl \ pop de \ pop hl ;this should work, I
guess
HRC2: ld a,xx = push bc \ ld b,xx \ ld a,b \ pop bc
More crap coming soon, maybe...
Feel free to add other commands...
Question:
1 What does ldir do? Does it copy the graph buffer to the screen? In
ionm.z80 it's used to run a module stored in saferam1 (graph buffer?)
2 Is there a command that extracts bits from a variable? I think 'bit' does
the trick, so bit 1 is the first bit of a and bit 2 is the 2nd bit of a
and bit 3 the 3rd, ... and I think it sets the zero flag for 1 and the
nonzero flag for 0. Is this correct?
PWM:
Didn't test it, but this should work. The 'on' pulse is a bit longer than
the 'off' pulse.
begin:
ld b,0
loop:
bcall(_getky)
cp kDown
call z, incb ;speed down
cp kUp
call z, decb ;speed up
cp kClear
ret z
ld a,C3 ;off
out(00),a
call wait
ld a,C0 ;on
call wait
jp loop
incb:
inc b \ ret
decb:
dec b \ ret
wait:
ei \ halt \ djnz wait \ ret
References: