Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Runer112

Pages: 1 ... 83 84 [85] 86 87 ... 153
1261
Miscellaneous / Re: How do you pronounce z80?
« on: May 18, 2011, 04:52:34 pm »
So am I the only one who pronounces rra as "ruh-rah?" I wouldn't be surprised if I were.

1262
Miscellaneous / Re: How do you pronounce z80?
« on: May 18, 2011, 03:33:05 pm »
The only mnemonics I don't spell out are push, pop, sub, add, out, and, dec and halt.

:o You don't pronounce mnemonics like neg, bit, and call as words?


Thanks, that will help me remembering the mnemonics. also, doesnt ret mean "return"?

Yes, it does.

1263
Miscellaneous / How do you pronounce z80?
« on: May 18, 2011, 03:28:25 pm »
Simple question: how do you pronounce the z80 mnemonics? Don't feel compelled to mention every single instruction, but at least mention those you pronounce differently from me.


Capital letter means pronounce the letter, lowercase letters means pronounce the word. Ones in bold are ones I think I pronounce strangely!

ex        ex
exx        ex
ld        load
ldd        L-D-D
lddr        L-D-D-R
ldi        L-D-I
ldir        L-dir
pop        pop
push        push
adc        add-C
add        add
cp        C-P
cpd        C-P-D
cpdr        C-P-D-R
cpi        C-P-I
cpir        C-P-I-R
cpl        C-P-L
daa        daah
dec        deck
inc        ink
neg        neg
sbc        S-B-C
sub        sub
and        and
bit        bit
ccf        C-C-F
or        or
res        rez
scf        S-C-F
set        set
xor        X-or
rl        R-L
rla        R-L-A
rlc        R-L-C
rlca        R-L-C-A
rld        R-L-D
rr        R-R
rra        ruh-rah
rrc        R-R-C
rrca        R-R-C-A
rrd        R-R-D
sla        slah
sll        S-L-L
sra        srah
srl        SRL
call        call
djnz        D-J-N-Z
jp        J-P
jr        J-R
nop        no-op
ret        ret
reti        ready
retn        ret-N
rst        R-S-T
di        D-I
ei        E-I
halt        halt
im        imm
in        in
ind        I-N-D
indr        I-N-D-R
ini        I-N-I
inir        I-N-I-R
otdr        O-T-D-R
otir        O-T-I-R
out        out
outd        out-D
outi        outie

1264
z80man, the code for saving the CPU clock speed actually serves another useful purpose. It also saves the interrupt status, because the display routines have to disable interrupts to safely run. Because of the new display safety routine, if a program were designed to run at 15MHz, all it would need is one Full at the start and one copy of this safety routine. Removing any CPU speed instructions would only save about 20 bytes, not a very large savings. But I guess I still see the merits of your suggestion for people who want to crazily super-optimize. :P

Also, why is this in the Help Axe Optimize thread? It sounds more like a feature request.

1265
The Axe Parser Project / Re: Bug Reports
« on: May 18, 2011, 10:52:08 am »
Scout, neither of those should be able to cause crashes. When I wrote a quick test program with those two lines of code in a loop, nothing bad happened.

Also, Pxl-On(96,Z)r does nothing because 96 is out of the bounds of the screen.

1266
The Axe Parser Project / Re: Bug Reports
« on: May 17, 2011, 07:07:41 pm »
Oh yeah, I see now that loading and storing big-endian values with constant pointers worked correctly before 0.5.2. I was partially correct in saying that the bug has been around for a while, though. Although constant pointers never had problems, when storing big-endian values was introduced in Axe 0.4.7, it didn't work for non-constant pointers right from its release. So this bug/feature lack has been around for almost half a year. :o And it went completely unnoticed until a month and a half ago, when I noticed it and posted the bug report here. Apparently you didn't see my report. :P

This bug must have been present for a long time, because I can't even find a version of Axe in which this bug doesn't exist. Storing a 2-byte value backwards to an expression pointer like →{}rr throws a compile error. The error doesn't happen if the pointer is a constant, only if it's an expression.

1267
Ah, so you have. I checked for that because I know I had suggested that change, but after a quick glance and not seeing any returns on the end I figured they hadn't changed. I didn't think to look for the conditional returns in the middle of the routines.

1268
The Axe Parser Project / Re: Bug Reports
« on: May 16, 2011, 08:50:55 pm »
I think I might have mentioned this bug a while ago, and it's been around for a long time, but since it isn't fixed yet I'll mention it again. {CONST}rr, →{CONST}rr, and →{EXPR}rr are all broken. The first two compile into incorrect code, while the third won't compile.

1269
Updated for Axe 0.5.2. As usual, the updated file is attached to the first post. I'm also going to start a more detailed changelog, in case people are interested in knowing what exactly changed between versions of Axe. [NEW] denotes new Axe commands, [CHG] denotes changed Axe commands, and [FIX] denotes commands that haven't changed but have corrected information.

Changes:
  • [FIX] Header size information
  • [FIX] Added notes specifying that most 2-byte backwards loading commands are broken
  • [CHG] Negative 8-bit constant equality checking (e.g. =⁻42) now works
  • [NEW] Trivial comparisons ≥0, >65535, ≤65535, and <0
  • [CHG] Constant unsigned comparisons ( > <) are smaller and faster  —  ~2 bytes smaller, ~8 cycles faster
  • [CHG] >VAR and <EXPR optimized for size  —  1 byte smaller, 5 cycles slower
  • [NEW] Optimizations for bitwise logic operations with constant operands
  • [NEW] Optimized For() loops if the upper bound is a constant  —  1 byte smaller, 17 cycles faster
  • [CHG] Nibble reading commands changed as a result of a bug fix and are now big-endian
  • [NEW] Routine for preserving CPU speed and interrupt status before display commands
  • [CHG] Adjusted all buffer display commands for the addition above
  • [FIX] Speed estimates for commands that access the LCD
  • [CHG] Full is smaller and faster  —  1 byte smaller, 3 cycles faster
  • [CHG] All GetCalc() routines properly handle pointers to real and complex float variables
  • [CHG] Archived variable locating routine optimized for size  —  5 bytes smaller
  • [CHG] Pt-Mask() bug fix to work properly for aligned sprites

1270
The Axe Parser Project / Re: Bug Reports
« on: May 16, 2011, 06:14:09 pm »
A few suggestions/bug reports regarding the new version of Axe:

  • The nibble reading and writing commands have opposite endianness again. I would suggest changing p_NibSto to be big-endian like the reading commands currently are, since a lot of people complained about the nibble commands being little-endian. Which makes sense, because big-endian style is a lot better for things like reading from nibble tilemaps. Big-endian nibble order better corresponds with how hex data is added and displayed.
  • p_Safety is, well, I have no idea. It works, but it has lots of code that serves no apparent purpose. I'll post what I think the routine should probably look like following this list.
  • Probably not a big deal, but if either p_FastCopy or p_DrawAndClr were called immediately after sending data to the LCD, the initial row setting would fail. This could be fixed by moving the safety call after the ld hl,plotSScreen and adding some waste instructions after the initial row setting.
  • Commands.htm still says that DispGraphr and DispGraphrr will not work at 15MHz.

Don't get me wrong though, the new update isn't all bad. The CPU speed and interrupt saving with display commands will make things a lot simpler, and I always love new constant optimizations, of which there were a ton. But on the topic of constant optimizations, although For() loops with a constant upper bound got a slight upgrade, it missed the much larger upgrade that the constant comparisons received. Any chance of sneaking that into For() loops as well?


Code: (Less crazy p_Safety) [Select]
p_Safety: ;Output: af holds state to-be-pushed
.db __SafetyEnd-1-$ ;DESTROYS B, all other registers okay.
in a,($02) ;Save model settings
rla ;BE flag into carry
sbc a,a ;00 if BE else FF
jr z,__SafetyBE ;Check If model is base edition
in a,($20) ;Get current speed setting
__SafetyBE:
ld b,a ;Save speed setting
xor a
out ($20),a ;Set speed to slow
ld a,i ;pe if interrupts
di
ld a,b ;Restore speed setting
ret
__SafetyEnd:

1271
The Axe Parser Project / Re: Features Wishlist
« on: May 16, 2011, 05:08:53 pm »
You can "avoid" the three-corners bug already by checking the key you want to check and then making sure the 3 corner keys aren't all pressed as well. For instance:
Code: [Select]
getKey(47) and not(getKey(48) and getKey(40) and getKey(39))

Although in reality you're not avoiding the bug, you're just changing how it works. Without the fix, pressing the 3 corner keys but not the key you want will result in a false positive. But on the other side of the coin, with the fix, pressing 2 of the corner keys as well as the key you want will result in a false negative.

1272
Axe / Re: Axe Q&A
« on: May 16, 2011, 05:05:18 pm »
In pure Axe it would be very difficult. The least of your problems would be copying a rectangular part of the image to the screen. A much larger obstacle would be that every Axe drawing and buffer command depends on using a 96x64 buffer, whereas it sounds like you would be using a 192x128 buffer.

1273
The Axe Parser Project / Re: Features Wishlist
« on: May 16, 2011, 04:57:27 pm »
To be fair, I can't think of how these features would be terribly useful. I've never encountered a game or program that tells me to press any key except ENTER, or a game that tells me to press ENTER and not touch any other keys. If you can suggest a good use for it to me, then I will submit that it could be useful as a built-in feature.

1274
The Axe Parser Project / Re: Features Wishlist
« on: May 16, 2011, 04:44:15 pm »
The second code example you posted already works. But while checking for individual keys or any key is easy, what you suggest is not nearly as easy. This is a good example of the kind of function that could be useful in an Axiom, but isn't really needed enough (especially for its relative complexity compared to other key commands) to warrant making it a built-in feature.

1275
Axe / Re: Problems reading and displaying data from programs
« on: May 16, 2011, 01:42:10 pm »
Oh right, I forgot. Instead of defining program names like "4ABC"[00], you should define them like [04]"ABC"[00]. You want the first byte to be 4, not the ASCII value for 4.

Pages: 1 ... 83 84 [85] 86 87 ... 153