[Coco] Proposed change on coVDG (level1)

Robert Gault robert.gault at att.net
Fri Jan 30 10:50:17 EST 2015


Louis,

There may be an algorithm that would fit your code but as is, it doesn't work. 
For example your code converts $60 to $27 (old code $67).

Any chance of a typo in your new code?

Robert

Luis Antoniosi (CoCoDemus) wrote:
> hey,
>
> One thing that drives me crazy on level1 is the velocity, or lack of, to
> output on screen.
> I've checked the CoVDG Write and I found a bit awkward code.
> If you examine it you will see it priorizes the wrong stuff, first comes
> graphic blocks, then several characters
> replacements and at the very end of the compare chains you get the text.
>
> I propose this one instead, very short and text oriented. it seems to work
> good. the commented code is the old one. I do a direct
> mapping of the characters except by '`' that becomes reverse apostrophe
> (good for spotting the differnce).
>
> Other good change is that this mapping is automatically applied:
>
> | = up arrow
> ^ = reverse up arrow
> { = reverse [
> | = reverse \
> } = reverse ]
> ~ = reverse left arrow
> _ = left arrow
>
> What do you think ? Any reason for that old code ?
>
> Write
> * new code
> cmpa #$1F
> bls Dispatch
> ldb <V.CFlag,u
> cmpa #$40 numbers ?
> bcc L0001
> adda #$40
> bra L00D0
> L0001 cmpa #$60 lowercase ?
> beq L0003 '`'
> ble L00D0 uppercase
> L0002 tsta
> bmi L00D0 graphic blocks
> suba #$60
> bra L00D0 lowercase
> L0003 lda #$27
> bra L00D0
>
> * old code
> *  tsta
> *         bmi   L00D0
> *  cmpa  #$1F byte $1F?
> *         bls   Dispatch branch if lower or same
> *         ldb   <V.CFlag,u
> *  beq   L00B0
> *         cmpa  #$5E '^' ?
> *         bne   L00A0
> *         lda   #$00
> *         bra   L00D0
> *L00A0    cmpa  #$5F '_' ?
> *         bne   L00A8
> *         lda   #$1F
> *         bra   L00D0
> *L00A8    cmpa  #$60 '`' ?
> *         bne   L00C0
> *         lda   #$67
> *         bra   L00D0
> *L00B0    cmpa  #$7C '|' ?
> *         bne   L00B8
> *         lda   #$21
> *         bra   L00D0
> *L00B8    cmpa  #$7E '~' ?
> *         bne   L00C0
> *         lda   #$2D
> *         bra   L00D0
> *L00C0    cmpa  #$60 lowercase ?
> *         bcs   L00C8
> *         suba  #$60
> *         bra   L00D0
> *L00C8    cmpa  #$40 uppercase ?
> *         bcs   L00CE
> *         suba  #$40
> *L00CE    eora  #$40
>
> L00D0    ldx   <V.CrsrA,u get cursor address in X
>           sta   ,x+ store character at address
>           stx   <V.CrsrA,u update cursor address
>           cmpx  <V.ScrnE,u end of screen?
>           bcs   L00DF branch if not
>           bsr   SScrl else if at end of screen, scroll it
> L00DF    bsr   ShowCrsr ends with a CLRB/RTS anyhow
>



More information about the Coco mailing list