mirror of
https://github.com/Michaelangel007/apple2_hgr_font_tutorial.git
synced 2024-11-25 07:32:25 +00:00
Fix hex literal immediate vals
This commit is contained in:
parent
99f0cf9f99
commit
6c1a2695e2
20
README.md
20
README.md
@ -1,6 +1,6 @@
|
|||||||
#Apple ]\[ //e HGR Font 6502 Assembly Language Tutorial
|
#Apple ]\[ //e HGR Font 6502 Assembly Language Tutorial
|
||||||
|
|
||||||
Revision: 55, Jan 27, 2016.
|
Revision: 56, Jan 27, 2016.
|
||||||
|
|
||||||
# Table of Contents
|
# Table of Contents
|
||||||
|
|
||||||
@ -1386,16 +1386,16 @@ That might look like something like this:
|
|||||||
ROL ; C=R A=0stuvwPQ
|
ROL ; C=R A=0stuvwPQ
|
||||||
ROL ; C=0 A=stuvwPQR
|
ROL ; C=0 A=stuvwPQR
|
||||||
PHA
|
PHA
|
||||||
AND #1F ; = %000stuvw
|
AND #$1F ; = %000stuvw
|
||||||
STA _LoadFont+1 ; AddressLo = FontLo + (c*8)
|
STA _LoadFont+1 ; AddressLo = FontLo + (c*8)
|
||||||
PLA
|
PLA
|
||||||
AND #E0
|
AND #$E0
|
||||||
CLC
|
CLC
|
||||||
ADC AddressHi
|
ADC AddressHi
|
||||||
STA _LoadFont+2
|
STA _LoadFont+2
|
||||||
```
|
```
|
||||||
|
|
||||||
Hmm, that seems like an **awful lot of work** just for some `bit-shuffling`!! For one thing we're doing a shift and `stuvw` is not taking advantage of it. Can we not we make use of the fact that we will eventually be doing `AND #1F` -> `AND #F8` and `AND #E0` -> `AND #07` ?
|
Hmm, that seems like an **awful lot of work** just for some `bit-shuffling`!! For one thing we're doing a shift and `stuvw` is not taking advantage of it. Can we not we make use of the fact that we will eventually be doing `AND #1F` -> `AND #$F8` and `AND #E0` -> `AND #07` ?
|
||||||
|
|
||||||
The **lateral** thinking is to _use partial results_.
|
The **lateral** thinking is to _use partial results_.
|
||||||
|
|
||||||
@ -1405,11 +1405,11 @@ The **lateral** thinking is to _use partial results_.
|
|||||||
2 Q Rstuvw?P
|
2 Q Rstuvw?P
|
||||||
3 R stuvw?PQ
|
3 R stuvw?PQ
|
||||||
--push A--
|
--push A--
|
||||||
stuvw000 <- A & #F8
|
stuvw000 <- A & #$F8
|
||||||
--store low byte offset--
|
--store low byte offset--
|
||||||
--pop A--
|
--pop A--
|
||||||
4 s tuvw?PQR
|
4 s tuvw?PQR
|
||||||
00000PQR <- A & #07
|
00000PQR <- A & #$07
|
||||||
--CLC--
|
--CLC--
|
||||||
--add FontHi to A
|
--add FontHi to A
|
||||||
--store high byte offset--
|
--store high byte offset--
|
||||||
@ -1429,7 +1429,7 @@ Listing 7:
|
|||||||
033B:2A ROL ; C=Q A=%Rstuvw?P
|
033B:2A ROL ; C=Q A=%Rstuvw?P
|
||||||
033C:2A ROL ; C=R A=%stuvw?PQ
|
033C:2A ROL ; C=R A=%stuvw?PQ
|
||||||
033D:AA TAX ; X=%stuvw?PQ push glyph
|
033D:AA TAX ; X=%stuvw?PQ push glyph
|
||||||
033E:29 F8 AND #F8 ; A=%stuvw000
|
033E:29 F8 AND #$F8 ; A=%stuvw000
|
||||||
0340:8D 53 03 STA _LoadFont+1 ; AddressLo = (c*8)
|
0340:8D 53 03 STA _LoadFont+1 ; AddressLo = (c*8)
|
||||||
0343:8A TXA ; A=%stuvw?PQ pop glyph
|
0343:8A TXA ; A=%stuvw?PQ pop glyph
|
||||||
0344:29 03 AND #3 ; Optimization: s=0 implicit CLC !
|
0344:29 03 AND #3 ; Optimization: s=0 implicit CLC !
|
||||||
@ -1448,7 +1448,7 @@ Here is a comparison between the original and final version (clock cycle timings
|
|||||||
2 AND #1F 2 ROL
|
2 AND #1F 2 ROL
|
||||||
2 ASL 2 ROL
|
2 ASL 2 ROL
|
||||||
2 ASL 2 TAX
|
2 ASL 2 TAX
|
||||||
2 ASL 2 AND #F8
|
2 ASL 2 AND #$F8
|
||||||
2 ADC #<Font 4 STA _LoadFont+1
|
2 ADC #<Font 4 STA _LoadFont+1
|
||||||
4 STA _LoadFont+1 2 TXA
|
4 STA _LoadFont+1 2 TXA
|
||||||
4 PLA 2 AND #3
|
4 PLA 2 AND #3
|
||||||
@ -1618,7 +1618,7 @@ Listing 8:
|
|||||||
; FUNC: DrawHexNib() = $030C
|
; FUNC: DrawHexNib() = $030C
|
||||||
; PARAM: A = nibble to print as hex char
|
; PARAM: A = nibble to print as hex char
|
||||||
030A: DrawHexNib
|
030A: DrawHexNib
|
||||||
030A:29 0F AND #F ; base 16
|
030A:29 0F AND #$F ; base 16
|
||||||
030C:AA TAX ;
|
030C:AA TAX ;
|
||||||
030D:BD 90 03 LDA NIB2HEX,X ; nibble to ASCII
|
030D:BD 90 03 LDA NIB2HEX,X ; nibble to ASCII
|
||||||
; intentional fall into PrintChar
|
; intentional fall into PrintChar
|
||||||
@ -2264,7 +2264,7 @@ Here are all the (core) font rendering routines we've entered in so far:
|
|||||||
0338:03 68 2A 2A 2A AA 29 F8
|
0338:03 68 2A 2A 2A AA 29 F8
|
||||||
0340:8D 53 03 8A 29 03 2A 69
|
0340:8D 53 03 8A 29 03 2A 69
|
||||||
0348:60 8D 54 03 A6 F6 86 FD
|
0348:60 8D 54 03 A6 F6 86 FD
|
||||||
0350:A2 00 BD 00 00 91 F5 18
|
0350:A2 00 BD 00 60 91 F5 18
|
||||||
0358:A5 F6 69 04 85 F6 E8 E0
|
0358:A5 F6 69 04 85 F6 E8 E0
|
||||||
0360:08 D0 EF C8 A6 FD 86 F6
|
0360:08 D0 EF C8 A6 FD 86 F6
|
||||||
0368:60
|
0368:60
|
||||||
|
Loading…
Reference in New Issue
Block a user