|
Inferno #08
30 ноября 2005 |
|
For Coderz - Small programmers' tricks.

1. Drafting tables at HL '
In compiling the table at HL '
instead of design
PUSH DE
EXX
POP DE
LD (HL), E
INC HL
LD (HL), D
(45 bars)
You can use the
LD A, D
EXA
LD A, E
EXX
LD (HL), A
INC HL
EXA
LD (HL), A
(40 bars)
Observed when writing sprite motion
zhka for Pang 16C.
2. Change case letters
Used in ACEdit during commissioning
character (if the Caps Lock).
RECAP CP "Є
RET NC
XOR 1
CP "E
RET NC
XOR 1
CP "P
JNC BECAPRL
CP "
RET NC
CP "and
JNC BECAPOK
CP "P
JNC BECAPRL
CP "A
JNC BECAPOK
CP "@
RET Z
CP "_
RET Z
CP "A
RET C
CP "{
RET NC
CP "[
JC $ +5
CP "a
RET C
BECAPOK XOR 80
BECAPRL XOR # 70
RET
3. How to count bars
If you need to quickly figure out how to
process cycles, does not need to take ka
lkulyator and put bars on top teams
down. I use a more convenient way:
We believe the number of teams with 4 ticks
(The team with 8 cycles is considered two, coma
ndy with 12 cycles - three, the team with 11
ticks believe in 4-cycle). Multiply by
4. Write (or store).
We believe the number of teams with 7 ticks
(The team with 11 clock cycles are also counted). Clever
isplay 7. Write (or store).
We believe the number of teams with 10 cycles.
Multiply by 10.
Count the number of teams with 6 cycles (if
is). Multiply by 6.
Other commands you can find separated
flax.
All add up and get rezultat.Dlya
small protsedurok easy to calculate in
mind with almost no chance of making a mistake.
If the program is large, then we can go
top-down and put sticks on paper
(Line sticks - 4-clock instructions strictly
PFA 7-clock, etc.). But it already seems
for continuous counting. For the latter to
minimize errors, consider the two-fold:
top-down and bottom up. Conveniently still under
Subtotals be written (see the example in
following sketch).
If the procedure uses a branch that
Who like:
JR cc, skip
skip
then we must proceed as follows:
If we want the maximum number of so-
Comrade, we believe JR 7 cycles and transmission
Kai no one team (but for one 4-way
quantum team maximum is still JR =
= 12 cycles).
If we need the average number of cycles, and
the probability that the condition is 50%,
then consider JR a 9.5 cycles, and time ful
lneniya internal divide by 2.
If you use a full alternative
(Two branches), then separately consider the time you
complement each branch.
4. Microtone
Recalculation of music with microtone during AY
it's best to make the following photon
rmule: t = f (xhi) * k (xlo), where xhi = note, xlo =
= Microtone, and f () and k () - some functions.
f represents a table FRQTAB,
that it is desirable to calculate on the basis that
Blitz Sound Tracker (more precisely, on the basis of parameters
parameters on which to construct the table ST,
t.k.v table ST is the mistake). The formula for
f about the following: f = fST * 248/256.
Notes to the table go from high to low.
k for 16 microtone (1 / 32 tone) holds
Camping within 1 + ((0 .. 14) / 256) and approximately
is 1 + (xlo/256). Since 1 + (16/256) <
<2 ^ (1 / 12), then jump the 15 th microtone
for the next note will not (but they will
very close, that gives some neravnome
rnost, noticeable by ear).
EXPER
And it was: DE =% 0nnnnnnnmmmm0000
; Was: HL = period for AY
;---------------------; BC = f (xhi)
LD L, D;% 0nnnnnnn
SLA L
LD H, 'FRQTAB
LD C, (HL)
INC L
LD B, (HL);% 0000xxxx
, 37
;---------------------; + BC * xlo/256
LD L, 0, can not be correctly rounded
LD H, E;% mmmm0000
SLA H
, 56
JR NC, $ +3; ^
ADD HL, BC;
ADD HL, HL;
JR NC, $ +3; MAX 105
ADD HL, BC;
ADD HL, HL;
JR NC, $ +3;
ADD HL, BC;
ADD HL, HL;
JR NC, $ +3;
ADD HL, BC; v
, 161
; Now H must be added to BC
LD A, C
ADD A, H
LD L, A
ADC A, B
SUB L
LD H, A
, 185
RET
The second approximation k (needed for 64 or
256 microtone) can be found, again analysis
cumin table chastot.Nahodim that the factor
if xlo in case 256 microtone from the center:
(2 ^ (1 / 24) -1) / 128 = 0.0002289 ў15/65536 almost
exactly! However, we add is not from the center,
instead we have (remind) table moved
relatively Sound Tracker.
For this procedure, these extreme octaves
(2 top, 2 bottom) in Table FRQTAB USD
zhny be converted to 2 octaves closer to
center, or for high unattainable nuzh
Naya accuracy, and for the low in the multiplication
will overflow!
EXP256
And it was: DE =% 0nnnnnnnmmmmmm00
; Was: HL = period for AY
;---------------------; BC = f (xhi)
LD L, D;% 0nnnnnnn
SLA L
LD H, 'FRQTAB
LD C, (HL);% llllllll
INC L
LD B, (HL);% 0000hhhh
, 37
;---------------------; DE = g (xlo)
; G (xlo) ~ = xlo * 15.22/16
LD A, E
RRA
RRA
RRA
RRA
AND # C
SUB E
NEG
ADD A, A
LD H, A
LD L, 128> 6
; 91
;---------------------; + BC * g (xlo) / 65536
JR NC, $ +3; MAX 1918
ADD HL, BC;
DUP 5
ADD HL, HL;
JR NC, $ +3; MAX 145
ADD HL, BC;
EDUP
, 254
SRL H
RR L
SRL H
, 278
; Now H must be added to BC
LD A, H
ADD A, C
LD L, A
ADC A, B
SUB L
LD H, A
, 302
LD A, D
CP 2 * 12
JR NC, E256N3L
2 upper octave
; HL shift 2 bits right
SRL H
RR L
SRL H
RR L
; MAX 352
RET
E256N3L
CP 6 * 12
RET C
2 octaves lower
; HL shift 2 bits to the left
ADD HL, HL
ADD HL, HL
RET
Full program with the table and the generator
rum table looking for in your application.
5. Disk B
With the change of version alasma (current -
5.03) there was a very useful sly
st, saves space at work
whose diskette ishodnikami.Realizatsiya coma
ndy MOVE in assembler, though reduced those
snotu, but not enough, now organized
additional savings.
The thing is: it is assumed that
when you start your computer or emulator in di
skovod B tucked "system disk". Au
critical sticking the disk at startup
Unreal Speccy can realize through. Bat
or by changing the command line in the treated
tchikah file types. The latter can draw
lat or handles - via Windows Explorer or
through Total Commander, or by creating and ZAPU
Steve reg-file the appropriate form. In about
general, the choice is.
So, to "drive system" should be just
vengeance:
ACEdit
BGE
PT3 + PT Util
ALASM + STS
HRUST1
ZXRar + ZXUnRar
PUSHER
Laser Compact
as well as the following standard files:
mrip *. H - avtosborschik slow
m2hr *. H - avtosborschik fast
SAVEOBJ *. H - sohranyalka chunks of memory
smallunr.H - unpacker ZXRar
DEHRUST.C - unpacker HRUST1
playFAST.H - Player PT3
and anything else to your taste.
What have we got? And we got that from
Working diskettes can now all this degree
Ret! From alasma can only boot
the size of one sector!
To load files from B to directives
you (cite examples):
INCLUDE "B: mrip *"
INCBIN "B: DEHRUST"
The remaining system programs can be
very fast and easy way to start right from
Mr Gluk Reset Service.
Unfortunately, such a useful program
as SCUT, can not switch drives,
therefore it can not be written on a "system
Disc. "Let's wait when it will be analogous
log.
Alone Coder
Other articles:
Similar articles:
В этот день... 14 November