mirror of
https://github.com/Michaelangel007/apple2_hgr_font_tutorial.git
synced 2025-02-16 05:31:33 +00:00
Marked up all entered hex bytes
This commit is contained in:
parent
1b36b8263d
commit
e6ce351c47
38
README.md
38
README.md
@ -1,6 +1,6 @@
|
|||||||
#Apple ]\[ //e HGR Font 6502 Assembly Language Tutorial
|
#Apple ]\[ //e HGR Font 6502 Assembly Language Tutorial
|
||||||
|
|
||||||
Revision: 42, Jan 26, 2016.
|
Revision: 43, Jan 26, 2016.
|
||||||
|
|
||||||
# Table of Contents
|
# Table of Contents
|
||||||
|
|
||||||
@ -750,12 +750,14 @@ Here's the disassembly of our (hard-coded) DrawChar() program:
|
|||||||
|
|
||||||
Enter in:
|
Enter in:
|
||||||
|
|
||||||
|
```
|
||||||
900:20 0A 09 A9 00 A0 00 4C 10 03
|
900:20 0A 09 A9 00 A0 00 4C 10 03
|
||||||
90A:A5 E5 85 F5 A5 E6 85 F6 60
|
90A:A5 E5 85 F5 A5 E6 85 F6 60
|
||||||
310:4C 50 03
|
310:4C 50 03
|
||||||
350:A2 00 BD 00 62 91 F5 18
|
350:A2 00 BD 00 62 91 F5 18
|
||||||
358:A5 F6 69 04 85 F6 E8 E0
|
358:A5 F6 69 04 85 F6 E8 E0
|
||||||
360:08 D0 EF 60
|
360:08 D0 EF 60
|
||||||
|
```
|
||||||
|
|
||||||
We're almost ready to run this! We just need to initialize one variable -- where to draw the glyph at:
|
We're almost ready to run this! We just need to initialize one variable -- where to draw the glyph at:
|
||||||
|
|
||||||
@ -1006,9 +1008,11 @@ We just need to touch up our entry point `PrintChar` at $0310 instead of calling
|
|||||||
|
|
||||||
Enter in:
|
Enter in:
|
||||||
|
|
||||||
|
```
|
||||||
310:4C 4C 03
|
310:4C 4C 03
|
||||||
34C:A6 F6 86 FD
|
34C:A6 F6 86 FD
|
||||||
363:C8 A6 FD 86 F6 60
|
363:C8 A6 FD 86 F6 60
|
||||||
|
```
|
||||||
|
|
||||||
Let's try it out:
|
Let's try it out:
|
||||||
|
|
||||||
@ -1379,12 +1383,14 @@ We need to (again) touch up our `DrawChar` entry point at $0310 calling `_DrawCh
|
|||||||
|
|
||||||
Enter in:
|
Enter in:
|
||||||
|
|
||||||
|
```
|
||||||
B00:20 0A 09 A9 00 A0 00 4C 10 03
|
B00:20 0A 09 A9 00 A0 00 4C 10 03
|
||||||
310:4C 3A 03
|
310:4C 3A 03
|
||||||
33A:2A 2A 2A AA 29 F8
|
33A:2A 2A 2A AA 29 F8
|
||||||
340:8D 53 03 8A 29 03 2A 69
|
340:8D 53 03 8A 29 03 2A 69
|
||||||
348:60 8D 54 03
|
348:60 8D 54 03
|
||||||
B00G
|
B00G
|
||||||
|
```
|
||||||
|
|
||||||
We should now see an closed apple glyph!
|
We should now see an closed apple glyph!
|
||||||
|
|
||||||
@ -1813,10 +1819,11 @@ This is a little clunky but it is progress. Let's write the new SetCursorColRow(
|
|||||||
|
|
||||||
Enter in:
|
Enter in:
|
||||||
|
|
||||||
|
```
|
||||||
321: 86 F5 B9 A0 03 18 65
|
321: 86 F5 B9 A0 03 18 65
|
||||||
328:F5 85 F5 B9 B8 03 18 65
|
328:F5 85 F5 B9 B8 03 18 65
|
||||||
330:E6 85 F6 60
|
330:E6 85 F6 60
|
||||||
|
```
|
||||||
|
|
||||||
# DrawString()
|
# DrawString()
|
||||||
|
|
||||||
@ -1867,6 +1874,7 @@ And our example to verify that it works:
|
|||||||
|
|
||||||
Enter in:
|
Enter in:
|
||||||
|
|
||||||
|
```
|
||||||
37E:84 F0 86 F1 A0 00 B1 F0
|
37E:84 F0 86 F1 A0 00 B1 F0
|
||||||
386:F0 07 20 10 03 C0 28 90 F5 60
|
386:F0 07 20 10 03 C0 28 90 F5 60
|
||||||
|
|
||||||
@ -1874,6 +1882,7 @@ Enter in:
|
|||||||
1207:A2 12 A0 0E 4C 7E 03
|
1207:A2 12 A0 0E 4C 7E 03
|
||||||
120E:48 65 6C 6C 6F 20 57 6F 72 6C 64 00
|
120E:48 65 6C 6C 6F 20 57 6F 72 6C 64 00
|
||||||
1200G
|
1200G
|
||||||
|
```
|
||||||
|
|
||||||
![Screenshot 17](pics/hgrfont_17.png?raw=true)
|
![Screenshot 17](pics/hgrfont_17.png?raw=true)
|
||||||
|
|
||||||
@ -2023,6 +2032,7 @@ And here is the assembly:
|
|||||||
|
|
||||||
Enter in:
|
Enter in:
|
||||||
|
|
||||||
|
```
|
||||||
1300:A9 00 85 F3 85 E5 A9 20
|
1300:A9 00 85 F3 85 E5 A9 20
|
||||||
1308:85 E6 A4 F3 C0 18 B0 22
|
1308:85 E6 A4 F3 C0 18 B0 22
|
||||||
1310:A2 00 86 F2 20 21 03 38
|
1310:A2 00 86 F2 20 21 03 38
|
||||||
@ -2030,12 +2040,15 @@ Enter in:
|
|||||||
1320:F7 A4 F2 B1 F7 29 7F 20
|
1320:F7 A4 F2 B1 F7 29 7F 20
|
||||||
1328:3A 03 C0 28 90 F5 E6 F3
|
1328:3A 03 C0 28 90 F5 E6 F3
|
||||||
1330:D0 D8 60
|
1330:D0 D8 60
|
||||||
|
```
|
||||||
|
|
||||||
And now for the moment of truth! Don't worry if you can't see what you are typing.
|
And now for the moment of truth! Don't worry if you can't see what you are typing.
|
||||||
|
|
||||||
|
```
|
||||||
FC58G
|
FC58G
|
||||||
1300L
|
1300L
|
||||||
1300G
|
1300G
|
||||||
|
```
|
||||||
|
|
||||||
Voila!
|
Voila!
|
||||||
|
|
||||||
@ -2064,12 +2077,15 @@ Using one of the newer emulators with NTSC emulation, unfortunately, doesn't hel
|
|||||||
|
|
||||||
And just to prove that it copied the bottom 4 text rows as well:
|
And just to prove that it copied the bottom 4 text rows as well:
|
||||||
|
|
||||||
|
```
|
||||||
C052
|
C052
|
||||||
|
```
|
||||||
|
|
||||||
And to restore the bottom 4 text rows
|
And to restore the bottom 4 text rows
|
||||||
|
|
||||||
|
```
|
||||||
C053
|
C053
|
||||||
|
```
|
||||||
|
|
||||||
# Exercises
|
# Exercises
|
||||||
|
|
||||||
@ -2105,7 +2121,7 @@ Hey! Homework? Yes, the only (true) way to demonstrate you understand the theo
|
|||||||
|
|
||||||
Here are all the (core) routines we've entered in so far:
|
Here are all the (core) routines we've entered in so far:
|
||||||
|
|
||||||
|
```
|
||||||
0301: 48 6A 6A 6A 6A 20 0A
|
0301: 48 6A 6A 6A 6A 20 0A
|
||||||
0308:03 68 29 0F AA BD 90 03
|
0308:03 68 29 0F AA BD 90 03
|
||||||
0310:4C 3A 03 BD A0 03 85 F5
|
0310:4C 3A 03 BD A0 03 85 F5
|
||||||
@ -2128,6 +2144,7 @@ Here are all the (core) routines we've entered in so far:
|
|||||||
03B8:00 00 01 01 02 02 03 03
|
03B8:00 00 01 01 02 02 03 03
|
||||||
03C0:00 00 01 01 02 02 03 03
|
03C0:00 00 01 01 02 02 03 03
|
||||||
03C8:00 00 01 01 02 02 03 03
|
03C8:00 00 01 01 02 02 03 03
|
||||||
|
```
|
||||||
|
|
||||||
(To save this: `BSAVE CODE_0300.BIN,A$300,L$D0`)
|
(To save this: `BSAVE CODE_0300.BIN,A$300,L$D0`)
|
||||||
|
|
||||||
@ -2284,6 +2301,7 @@ We could code this up as:
|
|||||||
|
|
||||||
Enter in:
|
Enter in:
|
||||||
|
|
||||||
|
```
|
||||||
1900:A2 00 BD A0 03 85 FA BD
|
1900:A2 00 BD A0 03 85 FA BD
|
||||||
1908:B8 03 05 E6 85 FB E8 BD
|
1908:B8 03 05 E6 85 FB E8 BD
|
||||||
1910:A0 03 85 F8 BD B8 03 05
|
1910:A0 03 85 F8 BD B8 03 05
|
||||||
@ -2296,6 +2314,7 @@ Enter in:
|
|||||||
1948:00 A0 27 91 F8 88 10 FB
|
1948:00 A0 27 91 F8 88 10 FB
|
||||||
1950:18 A5 F9 69 04 85 F9 CA
|
1950:18 A5 F9 69 04 85 F9 CA
|
||||||
1958:D0 ED 60
|
1958:D0 ED 60
|
||||||
|
```
|
||||||
|
|
||||||
Excellent.
|
Excellent.
|
||||||
|
|
||||||
@ -2308,6 +2327,7 @@ We could manually unroll every loop such as this monstrosity (we trade space for
|
|||||||
|
|
||||||
Enter this (or download [hgr_scroll_up.bin](hgr_scroll_up.bin) or `BRUN HGR_SCROLL_UP`):
|
Enter this (or download [hgr_scroll_up.bin](hgr_scroll_up.bin) or `BRUN HGR_SCROLL_UP`):
|
||||||
|
|
||||||
|
```
|
||||||
1400:A2 27
|
1400:A2 27
|
||||||
1402:BD 00 24 9D 00 20
|
1402:BD 00 24 9D 00 20
|
||||||
1408:BD 00 28 9D 00 24
|
1408:BD 00 28 9D 00 24
|
||||||
@ -2503,7 +2523,7 @@ Enter this (or download [hgr_scroll_up.bin](hgr_scroll_up.bin) or `BRUN HGR_SCRO
|
|||||||
187C:A9 00 9D D0 3F
|
187C:A9 00 9D D0 3F
|
||||||
1881:CA 30 03 4C 02 14
|
1881:CA 30 03 4C 02 14
|
||||||
1887:60
|
1887:60
|
||||||
|
```
|
||||||
|
|
||||||
And let's write a little demo ...
|
And let's write a little demo ...
|
||||||
|
|
||||||
@ -2517,23 +2537,29 @@ And let's write a little demo ...
|
|||||||
|
|
||||||
Enter in:
|
Enter in:
|
||||||
|
|
||||||
|
```
|
||||||
13F7:A0 C0 20 00 14 88 D0 FA 60
|
13F7:A0 C0 20 00 14 88 D0 FA 60
|
||||||
|
```
|
||||||
|
|
||||||
(To save to disk type `BSAVE HGR_SCROLL_UP.BIN,A$13F7,L$490`)
|
(To save to disk type `BSAVE HGR_SCROLL_UP.BIN,A$13F7,L$490`)
|
||||||
|
|
||||||
And let's try it out:
|
And let's try it out:
|
||||||
|
|
||||||
|
```
|
||||||
1300L
|
1300L
|
||||||
1300G
|
1300G
|
||||||
1400G
|
1400G
|
||||||
1400G
|
1400G
|
||||||
1400G
|
1400G
|
||||||
|
```
|
||||||
|
|
||||||
![Screenshot 21](pics/hgrfont_21.png?raw=true)
|
![Screenshot 21](pics/hgrfont_21.png?raw=true)
|
||||||
|
|
||||||
And for the finale:
|
And for the grand finale:
|
||||||
|
|
||||||
|
```
|
||||||
13F7G
|
13F7G
|
||||||
|
```
|
||||||
|
|
||||||
Sweet !
|
Sweet !
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user