Fixed hex dump of font so it doesn't beep

This commit is contained in:
Michaelangel007 2016-01-26 11:28:56 -08:00
parent 3c8eb406a2
commit 9047680030

271
README.md
View File

@ -1,6 +1,6 @@
#Apple ]\[ //e HGR Font 6502 Assembly Language Tutorial #Apple ]\[ //e HGR Font 6502 Assembly Language Tutorial
Revision: 40, Jan 26, 2016. Revision: 41, Jan 26, 2016.
# Table of Contents # Table of Contents
@ -36,6 +36,7 @@ Revision: 40, Jan 26, 2016.
* Exercise 1: ScrollHgrUpLine() * Exercise 1: ScrollHgrUpLine()
* Exercise 2: ScrollHgrUpPixel() * Exercise 2: ScrollHgrUpPixel()
* Recap * Recap
* What's Next?
* Conclusion * Conclusion
* Solutions * Solutions
* Solution 1: ScrollHgrUpLine() * Solution 1: ScrollHgrUpLine()
@ -445,138 +446,146 @@ Ouch! We're using 1K of our precious 64K. Now we know why all those font glyphs
### Raw Font Data ### Raw Font Data
I've saved you the trouble of converting all the pixels to hex. Remember, you may want to **mute your sound** since the Apple will beep at the semi-colon "comments". I've saved you the trouble of converting all the pixels to hex. :-)
Enter in (or download the raw binary [font.bin](font.bin) and with AppleWin press `F7`, type `bload font.bin,6000`, press `F7`): Enter in (or download the raw binary [font.bin](font.bin) and with AppleWin press `F7`, type `bload font.bin,6000`, press `F7`):
6000:10 08 36 7F 3F 3F 7E 36 ; ^@ ```
6008:10 08 36 41 21 21 4A 36 ; ^A 6000:10 08 36 7F 3F 3F 7E 36 '@'^
6010:00 00 02 06 0E 1E 36 42 ; ^B 6008:10 08 36 41 21 21 4A 36 'A'^
6018:7F 22 14 08 08 14 2A 7F ; ^C 6010:00 00 02 06 0E 1E 36 42 'B'^
6020:00 40 20 11 0A 04 04 00 ; ^D 6018:7F 22 14 08 08 14 2A 7F 'C'^
6028:7F 3F 5F 6C 75 7B 7B 7F ; ^E 6020:00 40 20 11 0A 04 04 00 'D'^
6030:70 60 7E 31 79 30 3F 02 ; ^F 6028:7F 3F 5F 6C 75 7B 7B 7F 'E'^
6038:00 18 07 00 07 0C 08 70 ; ^G 6030:70 60 7E 31 79 30 3F 02 'F'^
6040:08 04 02 7F 02 04 08 00 ; ^H 6038:00 18 07 00 07 0C 08 70 'G'^
6048:00 00 00 00 00 00 00 2A ; ^I 6040:08 04 02 7F 02 04 08 00 'H'^
6050:08 08 08 08 49 2A 1C 08 ; ^J 6048:00 00 00 00 00 00 00 2A 'I'^
6058:08 1C 2A 49 08 08 08 08 ; ^K 6050:08 08 08 08 49 2A 1C 08 'J'^
6060:7F 00 00 00 00 00 00 00 ; ^L 6058:08 1C 2A 49 08 08 08 08 'K'^
6068:40 40 40 44 46 7F 06 04 ; ^M 6060:7F 00 00 00 00 00 00 00 'L'^
6070:3F 3F 3F 3F 3F 3F 3F 3F ; ^N 6068:40 40 40 44 46 7F 06 04 'M'^
6078:13 18 1C 7E 1C 18 10 6F ; ^O 6070:3F 3F 3F 3F 3F 3F 3F 3F 'N'^
6080:64 0C 1C 3F 1C 0C 04 7B ; ^P 6078:13 18 1C 7E 1C 18 10 6F 'O'^
6088:40 48 08 7F 3E 1C 48 40 ; ^Q 6080:64 0C 1C 3F 1C 0C 04 7B 'P'^
6090:40 48 1C 3E 7E 08 48 40 ; ^R 6088:40 48 08 7F 3E 1C 48 40 'Q'^
6098:00 00 00 7F 00 00 00 00 ; ^S 6090:40 48 1C 3E 7E 08 48 40 'R'^
60A0:01 01 01 01 01 01 01 7F ; ^T 6098:00 00 00 7F 00 00 00 00 'S'^
60A8:08 10 20 7F 20 10 08 00 ; ^U 60A0:01 01 01 01 01 01 01 7F 'T'^
60B0:2A 55 2A 55 2A 55 2A 55 ; ^V 60A8:08 10 20 7F 20 10 08 00 'U'^
60B8:55 2A 55 2A 55 2A 55 2A ; ^W 60B0:2A 55 2A 55 2A 55 2A 55 'V'^
60C0:00 3E 41 01 01 01 7F 00 ; ^X 60B8:55 2A 55 2A 55 2A 55 2A 'W'^
60C8:00 00 3F 40 40 40 7F 00 ; ^Y 60C0:00 3E 41 01 01 01 7F 00 'X'^
60D0:40 40 40 40 40 40 40 40 ; ^Z 60C8:00 00 3F 40 40 40 7F 00 'Y'^
60D8:08 1C 3E 7F 3E 1C 08 00 ; ^[ 60D0:40 40 40 40 40 40 40 40 'Z'^
60E0:7F 00 00 00 00 00 00 7F ; ^\ 60D8:08 1C 3E 7F 3E 1C 08 00 '['^
60E8:14 14 77 00 77 14 14 00 ; ^] 60E0:7F 00 00 00 00 00 00 7F '\'^
60F0:7F 40 40 4C 4C 40 40 7F ; ^^ 60E8:14 14 77 00 77 14 14 00 ']'^
60F8:01 01 01 01 01 01 01 01 ; ^_ 60F0:7F 40 40 4C 4C 40 40 7F '^'^
6100:00 00 00 00 00 00 00 00 ; 60F8:01 01 01 01 01 01 01 01 '_'^
6108:08 08 08 08 08 00 08 00 ; ! 6100:00 00 00 00 00 00 00 00 '
6110:14 14 14 00 00 00 00 00 ; " 6108:08 08 08 08 08 00 08 00 '!
6118:14 14 3E 14 3E 14 14 00 ; # 6110:14 14 14 00 00 00 00 00 '"
6120:08 3C 0A 1C 28 1E 08 00 ; $ 6118:14 14 3E 14 3E 14 14 00 '#
6128:06 26 10 08 04 32 30 00 ; % 6120:08 3C 0A 1C 28 1E 08 00 '$
6130:04 0A 0A 04 2A 12 2C 00 ; & 6128:06 26 10 08 04 32 30 00 '%
6138:08 08 08 00 00 00 00 00 ; ' 6130:04 0A 0A 04 2A 12 2C 00 '&
6140:08 04 02 02 02 04 08 00 ; ( 6138:08 08 08 00 00 00 00 00 ''
6148:08 10 20 20 20 10 08 00 ; ) 6140:08 04 02 02 02 04 08 00 '(
6150:08 2A 1C 08 1C 2A 08 00 ; * 6148:08 10 20 20 20 10 08 00 ')
6158:00 08 08 3E 08 08 00 00 ; + 6150:08 2A 1C 08 1C 2A 08 00 '*
6160:00 00 00 00 08 08 04 00 ; , 6158:00 08 08 3E 08 08 00 00 '+
6168:00 00 00 3E 00 00 00 00 ; - 6160:00 00 00 00 08 08 04 00 ',
6170:00 00 00 00 00 00 08 00 ; . 6168:00 00 00 3E 00 00 00 00 '-
6178:00 20 10 08 04 02 00 00 ; / 6170:00 00 00 00 00 00 08 00 '.
6180:1C 22 32 2A 26 22 1C 00 ; 0 6178:00 20 10 08 04 02 00 00 '/
6188:08 0C 08 08 08 08 1C 00 ; 1 6180:1C 22 32 2A 26 22 1C 00 '0
6190:1C 22 20 18 04 02 3E 00 ; 2 6188:08 0C 08 08 08 08 1C 00 '1
6198:3E 20 10 18 20 22 1C 00 ; 3 6190:1C 22 20 18 04 02 3E 00 '2
61A0:10 18 14 12 3E 10 10 00 ; 4 6198:3E 20 10 18 20 22 1C 00 '3
61A8:3E 02 1E 20 20 22 1C 00 ; 5 61A0:10 18 14 12 3E 10 10 00 '4
61B0:38 04 02 1E 22 22 1C 00 ; 6 61A8:3E 02 1E 20 20 22 1C 00 '5
61B8:3E 20 10 08 04 04 04 00 ; 7 61B0:38 04 02 1E 22 22 1C 00 '6
61C0:1C 22 22 1C 22 22 1C 00 ; 8 61B8:3E 20 10 08 04 04 04 00 '7
61C8:1C 22 22 3C 20 10 0E 00 ; 9 61C0:1C 22 22 1C 22 22 1C 00 '8
61D0:00 00 08 00 08 00 00 00 ; : 61C8:1C 22 22 3C 20 10 0E 00 '9
61D8:00 00 08 00 08 08 04 00 ; ; 61D0:00 00 08 00 08 00 00 00 ':
61E0:10 08 04 02 04 08 10 00 ; < 61D8:00 00 08 00 08 08 04 00 ';
61E8:00 00 3E 00 3E 00 00 00 ; = 61E0:10 08 04 02 04 08 10 00 '<
61F0:04 08 10 20 10 08 04 00 ; > 61E8:00 00 3E 00 3E 00 00 00 '=
61F8:1C 22 10 08 08 00 08 00 ; ? 61F0:04 08 10 20 10 08 04 00 '>
6200:1C 22 2A 3A 1A 02 3C 00 ; @ 61F8:1C 22 10 08 08 00 08 00 '?
6208:08 14 22 22 3E 22 22 00 ; A 6200:1C 22 2A 3A 1A 02 3C 00 '@
6210:1E 22 22 1E 22 22 1E 00 ; B 6208:08 14 22 22 3E 22 22 00 'A
6218:1C 22 02 02 02 22 1C 00 ; C 6210:1E 22 22 1E 22 22 1E 00 'B
6220:1E 22 22 22 22 22 1E 00 ; D 6218:1C 22 02 02 02 22 1C 00 'C
6228:3E 02 02 1E 02 02 3E 00 ; E 6220:1E 22 22 22 22 22 1E 00 'D
6230:3E 02 02 1E 02 02 02 00 ; F 6228:3E 02 02 1E 02 02 3E 00 'E
6238:3C 02 02 02 32 22 3C 00 ; G 6230:3E 02 02 1E 02 02 02 00 'F
6240:22 22 22 3E 22 22 22 00 ; H 6238:3C 02 02 02 32 22 3C 00 'G
6248:1C 08 08 08 08 08 1C 00 ; I 6240:22 22 22 3E 22 22 22 00 'H
6250:20 20 20 20 20 22 1C 00 ; J 6248:1C 08 08 08 08 08 1C 00 'I
6258:22 12 0A 06 0A 12 22 00 ; K 6250:20 20 20 20 20 22 1C 00 'J
6260:02 02 02 02 02 02 3E 00 ; L 6258:22 12 0A 06 0A 12 22 00 'K
6268:22 36 2A 2A 22 22 22 00 ; M 6260:02 02 02 02 02 02 3E 00 'L
6270:22 22 26 2A 32 22 22 00 ; N 6268:22 36 2A 2A 22 22 22 00 'M
6278:1C 22 22 22 22 22 1C 00 ; O 6270:22 22 26 2A 32 22 22 00 'N
6280:1E 22 22 1E 02 02 02 00 ; P 6278:1C 22 22 22 22 22 1C 00 'O
6288:1C 22 22 22 2A 12 2C 00 ; Q 6280:1E 22 22 1E 02 02 02 00 'P
6290:1E 22 22 1E 0A 12 22 00 ; R 6288:1C 22 22 22 2A 12 2C 00 'Q
6298:1C 22 02 1C 20 22 1C 00 ; S 6290:1E 22 22 1E 0A 12 22 00 'R
62A0:3E 08 08 08 08 08 08 00 ; T 6298:1C 22 02 1C 20 22 1C 00 'S
62A8:22 22 22 22 22 22 1C 00 ; U 62A0:3E 08 08 08 08 08 08 00 'T
62B0:22 22 22 22 22 14 08 00 ; V 62A8:22 22 22 22 22 22 1C 00 'U
62B8:22 22 22 2A 2A 36 22 00 ; W 62B0:22 22 22 22 22 14 08 00 'V
62C0:22 22 14 08 14 22 22 00 ; X 62B8:22 22 22 2A 2A 36 22 00 'W
62C8:22 22 14 08 08 08 08 00 ; Y 62C0:22 22 14 08 14 22 22 00 'X
62D0:3E 20 10 08 04 02 3E 00 ; Z 62C8:22 22 14 08 08 08 08 00 'Y
62D8:3E 06 06 06 06 06 3E 00 ; [ 62D0:3E 20 10 08 04 02 3E 00 'Z
62E0:00 02 04 08 10 20 00 00 ; \ 62D8:3E 06 06 06 06 06 3E 00 '[
62E8:3E 30 30 30 30 30 3E 00 ; ] 62E0:00 02 04 08 10 20 00 00 '\
62F0:00 00 08 14 22 00 00 00 ; ^ 62E8:3E 30 30 30 30 30 3E 00 ']
62F8:00 00 00 00 00 00 00 7F ; _ 62F0:00 00 08 14 22 00 00 00 '^
6300:04 08 10 00 00 00 00 00 ; ` 62F8:00 00 00 00 00 00 00 7F '_
6308:00 00 1C 20 3C 22 3C 00 ; a 6300:04 08 10 00 00 00 00 00 '`
6310:02 02 1E 22 22 22 1E 00 ; b 6308:00 00 1C 20 3C 22 3C 00 'a
6318:00 00 3C 02 02 02 3C 00 ; c 6310:02 02 1E 22 22 22 1E 00 'b
6320:20 20 3C 22 22 22 3C 00 ; d 6318:00 00 3C 02 02 02 3C 00 'c
6328:00 00 1C 22 3E 02 3C 00 ; e 6320:20 20 3C 22 22 22 3C 00 'd
6330:18 24 04 1E 04 04 04 00 ; f 6328:00 00 1C 22 3E 02 3C 00 'e
6338:00 00 1C 22 22 3C 20 1C ; g 6330:18 24 04 1E 04 04 04 00 'f
6340:02 02 1E 22 22 22 22 00 ; h 6338:00 00 1C 22 22 3C 20 1C 'g
6348:08 00 0C 08 08 08 1C 00 ; i 6340:02 02 1E 22 22 22 22 00 'h
6350:10 00 18 10 10 10 12 0C ; j 6348:08 00 0C 08 08 08 1C 00 'i
6358:02 02 22 12 0E 12 22 00 ; k 6350:10 00 18 10 10 10 12 0C 'j
6360:0C 08 08 08 08 08 1C 00 ; l 6358:02 02 22 12 0E 12 22 00 'k
6368:00 00 36 2A 2A 2A 22 00 ; m 6360:0C 08 08 08 08 08 1C 00 'l
6370:00 00 1E 22 22 22 22 00 ; n 6368:00 00 36 2A 2A 2A 22 00 'm
6378:00 00 1C 22 22 22 1C 00 ; o 6370:00 00 1E 22 22 22 22 00 'n
6380:00 00 1E 22 22 1E 02 02 ; p 6378:00 00 1C 22 22 22 1C 00 'o
6388:00 00 3C 22 22 3C 20 20 ; q 6380:00 00 1E 22 22 1E 02 02 'p
6390:00 00 3A 06 02 02 02 00 ; r 6388:00 00 3C 22 22 3C 20 20 'q
6398:00 00 3C 02 1C 20 1E 00 ; s 6390:00 00 3A 06 02 02 02 00 'r
63A0:04 04 1E 04 04 24 18 00 ; t 6398:00 00 3C 02 1C 20 1E 00 's
63A8:00 00 22 22 22 32 2C 00 ; u 63A0:04 04 1E 04 04 24 18 00 't
63B0:00 00 22 22 22 14 08 00 ; v 63A8:00 00 22 22 22 32 2C 00 'u
63B8:00 00 22 22 2A 2A 36 00 ; w 63B0:00 00 22 22 22 14 08 00 'v
63C0:00 00 22 14 08 14 22 00 ; x 63B8:00 00 22 22 2A 2A 36 00 'w
63C8:00 00 22 22 22 3C 20 1C ; y 63C0:00 00 22 14 08 14 22 00 'x
63D0:00 00 3E 10 08 04 3E 00 ; z 63C8:00 00 22 22 22 3C 20 1C 'y
63D8:38 0C 0C 06 0C 0C 38 00 ; { 63D0:00 00 3E 10 08 04 3E 00 'z
63E0:08 08 08 08 08 08 08 08 ; | 63D8:38 0C 0C 06 0C 0C 38 00 '{
63E8:0E 18 18 30 18 18 0E 00 ; } 63E0:08 08 08 08 08 08 08 08 '|
63F0:2C 1A 00 00 00 00 00 00 ; ~ 63E8:0E 18 18 30 18 18 0E 00 '}
63F8:00 2A 14 2A 14 2A 00 00 ; 63F0:2C 1A 00 00 00 00 00 00 '~
63F8:00 2A 14 2A 14 2A 00 00 '*
```
I also recommend "saving" a copy of this font higher in memory.
```
7000<6000.63FFM
```
(For the advanced user, you can save this: `BSAVE FONT.BIN,A$6000,L$400`) (For the advanced user, you can save this: `BSAVE FONT.BIN,A$6000,L$400`)
@ -2122,6 +2131,8 @@ Here are all the (core) routines we've entered in so far:
(To save this: `BSAVE CODE_0300.BIN,A$300,L$D0`) (To save this: `BSAVE CODE_0300.BIN,A$300,L$D0`)
# What's next?
What's left? Quite a few things actually: What's left? Quite a few things actually:
* Copy the 80-Column text screen to DHGR (Double High Resolution) * Copy the 80-Column text screen to DHGR (Double High Resolution)