hgr: beginnings of hgr font routine

This commit is contained in:
Vince Weaver 2021-08-09 11:49:01 -04:00
parent e56c24f94d
commit 90092e4707
6 changed files with 931 additions and 5 deletions

View File

@ -8,10 +8,12 @@ EMPTY_DISK = ../../empty_disk
all: peasant.dsk
peasant.dsk: HELLO PEASANT
peasant.dsk: HELLO PEASANT FONT_TEST
cp $(EMPTY_DISK)/empty.dsk peasant.dsk
$(DOS33) -y peasant.dsk SAVE A HELLO
$(DOS33) -y peasant.dsk BSAVE -a 0x6000 PEASANT
$(DOS33) -y peasant.dsk BSAVE -a 0x6000 FONT_TEST
###
HELLO: hello.bas
@ -27,6 +29,15 @@ peasant.o: peasant.s graphics/graphics.inc
###
clean:
rm -f *~ *.o *.lst HELLO PEASANT
FONT_TEST: font_test.o
ld65 -o FONT_TEST font_test.o -C $(LINKER_SCRIPTS)/apple2_6000.inc
font_test.o: font_test.s hgr_font.s hgr_1x8_sprite.s
ca65 -o font_test.o font_test.s -l font_test.lst
###
clean:
rm -f *~ *.o *.lst HELLO PEASANT FONT_TEST

23
games/peasant/font_test.s Normal file
View File

@ -0,0 +1,23 @@
.include "hardware.inc"
GBASL = $26
GBASH = $27
CURSOR_X = $62
CURSOR_Y = $63
INL = $FC
INH = $FD
font_test:
jsr HGR
jsr hgr_put_char
end:
jmp end
.include "hgr_font.s"

View File

@ -29,7 +29,8 @@ PTRIG = $C070
; APPLESOFT BASIC ROUTINES
NORMAL = $F273
HGR2 = $F3D8
HGR2 = $F3D8
HGR = $F3E2
BKGND0 = $F3F4 ; clear current page to A
HPOSN = $F411 ; (Y,X),(A) (values stores in HGRX,XH,Y)
HPLOT0 = $F457 ; plot at (Y,X), (A)

View File

@ -1,3 +1,4 @@
5 HOME
20 PRINT CHR$(4)"BRUN PEASANT"
10 PRINT CHR$(4)"CATALOG"
20 REM PRINT CHR$(4)"BRUN PEASANT"

View File

@ -0,0 +1,45 @@
;======================
; hgr 1x8 draw sprite
;======================
; SPRITE in INL/INH
; Location at CURSOR_X CURSOR_Y*7
; X, Y, A trashed
hgr_draw_sprite_1x8:
; set up pointers
lda INL
sta hds_smc1+1
lda INH
sta hds_smc1+2
ldx #0
hgr_1x8_sprite_yloop:
txa
pha
clc
adc CURSOR_Y
ldx #0
ldy #0
; calc GBASL/GBASH
jsr HPOSN ; (Y,X),(A) (values stored in HGRX,XH,Y)
pla
tax
ldy CURSOR_X
lda (GBASL),Y
hds_smc1:
eor $D000,X ; not $0000 or it will make it ZP
sta (GBASL),Y
inx
cpx #8
bne hgr_1x8_sprite_yloop
rts

845
games/peasant/hgr_font.s Normal file
View File

@ -0,0 +1,845 @@
; Apple II font based on the one in ROM that sadly we can't access
; For II/II+ was uppercase only 5x7 using 2513 character generator
; For IIe moved to 5x8 though the descenders on lowercase can touch next line
; This is fixed-width can only put the fonts easily in a 40x24 grid
hgr_put_char:
lda #10
sta CURSOR_X
lda #10
sta CURSOR_Y
lda #<(hgr_font+(('A'-$20)*8))
sta INL
lda #>(hgr_font+(('A'-$20)*8))
sta INH
jsr hgr_draw_sprite_1x8
rts
.include "hgr_1x8_sprite.s"
; we skip control chars before $20
hgr_font:
; ' ' $20
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
; ! $21
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $00 ; 00000
.byte $04 ; 00100
.byte $00
; " $22
.byte $0a ; 01010
.byte $0a ; 01010
.byte $0a ; 01010
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00
; #
.byte $0a ; 01010
.byte $0a ; 01010
.byte $1f ; 11111
.byte $0a ; 01010
.byte $1f ; 11111
.byte $0a ; 01010
.byte $0a ; 01010
.byte $00
; $
.byte $04 ; 00100
.byte $0f ; 01111
.byte $14 ; 10100
.byte $0e ; 01110
.byte $05 ; 00101
.byte $1e ; 11110
.byte $04 ; 00100
.byte $00
; %
.byte $18 ; 11000
.byte $19 ; 11001
.byte $02 ; 00010
.byte $04 ; 00100
.byte $08 ; 01000
.byte $13 ; 10011
.byte $03 ; 00011
.byte $00
; &
.byte $08 ; 01000
.byte $14 ; 10100
.byte $14 ; 10100
.byte $08 ; 01000
.byte $15 ; 10101
.byte $12 ; 10010
.byte $0d ; 01101
.byte $00
; '
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00
; (
.byte $04 ; 00100
.byte $08 ; 01000
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
.byte $08 ; 01000
.byte $04 ; 00100
.byte $00
; )
.byte $04 ; 00100
.byte $02 ; 00010
.byte $01 ; 00001
.byte $01 ; 00001
.byte $01 ; 00001
.byte $02 ; 00010
.byte $04 ; 00100
.byte $00
; *
.byte $04 ; 00100
.byte $15 ; 10101
.byte $0e ; 01110
.byte $04 ; 00100
.byte $0e ; 01110
.byte $15 ; 10101
.byte $04 ; 00100
.byte $00
; +
.byte $00 ; 00000
.byte $04 ; 00100
.byte $04 ; 00100
.byte $1f ; 11111
.byte $04 ; 00100
.byte $04 ; 00100
.byte $00 ; 00000
.byte $00
; ,
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $04 ; 00100
.byte $04 ; 00100
.byte $08 ; 01000
.byte $00
; -
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $1f ; 11111
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 01000
.byte $00
; .
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $04 ; 00100
.byte $00
; /
.byte $00 ; 00000
.byte $01 ; 00001
.byte $02 ; 00010
.byte $04 ; 00100
.byte $08 ; 01000
.byte $10 ; 10000
.byte $00 ; 00100
.byte $00
; 0
.byte $0e ; 01110
.byte $11 ; 10001
.byte $13 ; 10011
.byte $15 ; 10101
.byte $19 ; 11001
.byte $11 ; 10001
.byte $0e ; 01110
.byte $00
; 1
.byte $04 ; 00100
.byte $0c ; 01100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $0e ; 01110
.byte $00
; 2
.byte $0e ; 01110
.byte $11 ; 10001
.byte $01 ; 00001
.byte $06 ; 00110
.byte $08 ; 01000
.byte $10 ; 10000
.byte $1f ; 11111
.byte $00
; 3
.byte $1f ; 11111
.byte $01 ; 00001
.byte $02 ; 00010
.byte $06 ; 00110
.byte $01 ; 00001
.byte $11 ; 10001
.byte $0e ; 01110
.byte $00
; 4
.byte $02 ; 00010
.byte $06 ; 00110
.byte $0a ; 01010
.byte $12 ; 10010
.byte $1f ; 11111
.byte $02 ; 00010
.byte $02 ; 00010
.byte $00
; 5
.byte $1f ; 11111
.byte $10 ; 10000
.byte $1e ; 11110
.byte $01 ; 00001
.byte $01 ; 00001
.byte $11 ; 10001
.byte $0e ; 01110
.byte $00
; 6
.byte $07 ; 00111
.byte $08 ; 01000
.byte $10 ; 10000
.byte $1e ; 11110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $0e ; 01110
.byte $00
; 7
.byte $1f ; 11111
.byte $01 ; 00001
.byte $02 ; 00010
.byte $04 ; 00100
.byte $08 ; 01000
.byte $08 ; 01000
.byte $08 ; 01000
.byte $00
; 8
.byte $0e ; 01110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $0e ; 01110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $0e ; 01110
.byte $00
; 9
.byte $0e ; 01110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $0f ; 01111
.byte $01 ; 00001
.byte $02 ; 00010
.byte $1c ; 11100
.byte $00
; :
.byte $00 ; 00000
.byte $00 ; 00000
.byte $04 ; 00100
.byte $00 ; 00000
.byte $04 ; 00100
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00
; ;
.byte $00 ; 00000
.byte $00 ; 00000
.byte $04 ; 00100
.byte $00 ; 00000
.byte $04 ; 00100
.byte $04 ; 00100
.byte $08 ; 01000
.byte $00
; <
.byte $02 ; 00010
.byte $04 ; 00100
.byte $08 ; 01000
.byte $10 ; 10000
.byte $08 ; 01000
.byte $04 ; 00100
.byte $02 ; 00010
.byte $00
; =
.byte $00 ; 00000
.byte $00 ; 00000
.byte $1f ; 11111
.byte $00 ; 00000
.byte $1f ; 11111
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00
; >
.byte $08 ; 01000
.byte $04 ; 00100
.byte $02 ; 00010
.byte $01 ; 00001
.byte $02 ; 00010
.byte $04 ; 00100
.byte $08 ; 01000
.byte $00
; ?
.byte $0e ; 01110
.byte $11 ; 10001
.byte $02 ; 00010
.byte $04 ; 00100
.byte $04 ; 00100
.byte $00 ; 00000
.byte $04 ; 00100
.byte $00
; @
.byte $0e ; 01110
.byte $11 ; 10001
.byte $15 ; 10101
.byte $17 ; 10111
.byte $16 ; 10110
.byte $10 ; 10000
.byte $0f ; 01111
.byte $00
; A
.byte $04 ; 00100
.byte $0a ; 01010
.byte $11 ; 10001
.byte $11 ; 10001
.byte $1f ; 11111
.byte $11 ; 10001
.byte $11 ; 10001
.byte $00
.byte $1e ; 11110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $1e ; 11110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $1e ; 11110
; B
.byte $0e ; 01110
.byte $11 ; 10001
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
.byte $11 ; 10001
.byte $0e ; 01110
; C
.byte $1e ; 11110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $1e ; 11110
; D
.byte $1f ; 11111
.byte $10 ; 10000
.byte $10 ; 10000
.byte $1e ; 11110
.byte $10 ; 10000
.byte $10 ; 10000
.byte $1f ; 11111
; E
.byte $1f ; 11111
.byte $10 ; 10000
.byte $10 ; 10000
.byte $1e ; 11110
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
; F
.byte $0f ; 01111
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
.byte $13 ; 10011
.byte $11 ; 10001
.byte $0f ; 01111
; G
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $1f ; 11111
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
; H
.byte $0e ; 01110
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $0e ; 01110
; I
.byte $01 ; 00001
.byte $01 ; 00001
.byte $01 ; 00001
.byte $01 ; 00001
.byte $01 ; 00001
.byte $11 ; 10001
.byte $0e ; 01110
; J
.byte $11 ; 10001
.byte $12 ; 10010
.byte $14 ; 10100
.byte $18 ; 11000
.byte $14 ; 10100
.byte $12 ; 10010
.byte $11 ; 10001
; K
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
.byte $1f ; 11111
; L
.byte $11 ; 10001
.byte $1b ; 11011
.byte $15 ; 10101
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
; M
.byte $11 ; 10001
.byte $11 ; 10001
.byte $19 ; 11001
.byte $15 ; 10101
.byte $13 ; 10011
.byte $11 ; 10001
.byte $11 ; 10001
; N
.byte $0e ; 01110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $0e ; 01110
; O
.byte $1e ; 11110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $1e ; 11110
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
; P
.byte $0e ; 01110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $15 ; 10101
.byte $12 ; 10010
.byte $0d ; 01101
; Q
.byte $1e ; 11110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $1e ; 11110
.byte $14 ; 10100
.byte $12 ; 10010
.byte $11 ; 10001
; R
.byte $0e ; 01110
.byte $11 ; 10001
.byte $10 ; 10000
.byte $0e ; 01110
.byte $01 ; 00001
.byte $11 ; 10001
.byte $0e ; 01110
; S
.byte $1f ; 11111
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
; T
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $0e ; 01110
; U
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $0a ; 01010
.byte $04 ; 00100
; V
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $15 ; 10101
.byte $15 ; 10101
.byte $1b ; 11011
.byte $11 ; 10001
; W
.byte $11 ; 10001
.byte $11 ; 10001
.byte $0a ; 01010
.byte $04 ; 00100
.byte $0a ; 01010
.byte $11 ; 10001
.byte $11 ; 10001
; X
.byte $11 ; 10001
.byte $11 ; 10001
.byte $0a ; 01010
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
; Y
.byte $1f ; 11111
.byte $01 ; 00001
.byte $02 ; 00010
.byte $04 ; 00100
.byte $08 ; 01000
.byte $10 ; 10000
.byte $1f ; 11111
; Z
.byte $1f ; 11111
.byte $18 ; 11000
.byte $18 ; 11000
.byte $18 ; 11000
.byte $18 ; 11000
.byte $18 ; 11000
.byte $1f ; 11111
; [
.byte $00 ; 00000
.byte $10 ; 10000
.byte $08 ; 01000
.byte $04 ; 00100
.byte $02 ; 00010
.byte $01 ; 00001
.byte $00 ; 00000
; \.
.byte $1f ; 11111
.byte $03 ; 00011
.byte $03 ; 00011
.byte $03 ; 00011
.byte $03 ; 00011
.byte $03 ; 00011
.byte $1f ; 11111
; ]
.byte $00 ; 00000
.byte $00 ; 00000
.byte $04 ; 00100
.byte $0a ; 01010
.byte $11 ; 10001
.byte $00 ; 00000
.byte $00 ; 00000
; ^
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $1f ; 11111
; _
;*******************
; Lowercase
;*******************
.byte $0e ; 01110
.byte $11 ; 10001
.byte $15 ; 10101
.byte $17 ; 10111
.byte $16 ; 10110
.byte $10 ; 10000
.byte $0f ; 01111
; @
.byte $04 ; 00100
.byte $0a ; 01010
.byte $11 ; 10001
.byte $11 ; 10001
.byte $1f ; 11111
.byte $11 ; 10001
.byte $11 ; 10001
; A
.byte $1e ; 11110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $1e ; 11110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $1e ; 11110
; B
.byte $0e ; 01110
.byte $11 ; 10001
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
.byte $11 ; 10001
.byte $0e ; 01110
; C
.byte $1e ; 11110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $1e ; 11110
; D
.byte $1f ; 11111
.byte $10 ; 10000
.byte $10 ; 10000
.byte $1e ; 11110
.byte $10 ; 10000
.byte $10 ; 10000
.byte $1f ; 11111
; E
.byte $1f ; 11111
.byte $10 ; 10000
.byte $10 ; 10000
.byte $1e ; 11110
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
; F
.byte $0f ; 01111
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
.byte $13 ; 10011
.byte $11 ; 10001
.byte $0f ; 01111
; G
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $1f ; 11111
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
; H
.byte $0e ; 01110
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $0e ; 01110
; I
.byte $01 ; 00001
.byte $01 ; 00001
.byte $01 ; 00001
.byte $01 ; 00001
.byte $01 ; 00001
.byte $11 ; 10001
.byte $0e ; 01110
; J
.byte $11 ; 10001
.byte $12 ; 10010
.byte $14 ; 10100
.byte $18 ; 11000
.byte $14 ; 10100
.byte $12 ; 10010
.byte $11 ; 10001
; K
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
.byte $1f ; 11111
; L
.byte $11 ; 10001
.byte $1b ; 11011
.byte $15 ; 10101
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
; M
.byte $11 ; 10001
.byte $11 ; 10001
.byte $19 ; 11001
.byte $15 ; 10101
.byte $13 ; 10011
.byte $11 ; 10001
.byte $11 ; 10001
; N
.byte $0e ; 01110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $0e ; 01110
; O
.byte $1e ; 11110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $1e ; 11110
.byte $10 ; 10000
.byte $10 ; 10000
.byte $10 ; 10000
; P
.byte $0e ; 01110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $15 ; 10101
.byte $12 ; 10010
.byte $0d ; 01101
; Q
.byte $1e ; 11110
.byte $11 ; 10001
.byte $11 ; 10001
.byte $1e ; 11110
.byte $14 ; 10100
.byte $12 ; 10010
.byte $11 ; 10001
; R
.byte $0e ; 01110
.byte $11 ; 10001
.byte $10 ; 10000
.byte $0e ; 01110
.byte $01 ; 00001
.byte $11 ; 10001
.byte $0e ; 01110
; S
.byte $1f ; 11111
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
; T
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $0e ; 01110
; U
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $0a ; 01010
.byte $04 ; 00100
; V
.byte $11 ; 10001
.byte $11 ; 10001
.byte $11 ; 10001
.byte $15 ; 10101
.byte $15 ; 10101
.byte $1b ; 11011
.byte $11 ; 10001
; W
.byte $11 ; 10001
.byte $11 ; 10001
.byte $0a ; 01010
.byte $04 ; 00100
.byte $0a ; 01010
.byte $11 ; 10001
.byte $11 ; 10001
; X
.byte $11 ; 10001
.byte $11 ; 10001
.byte $0a ; 01010
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
.byte $04 ; 00100
; Y
.byte $1f ; 11111
.byte $01 ; 00001
.byte $02 ; 00010
.byte $04 ; 00100
.byte $08 ; 01000
.byte $10 ; 10000
.byte $1f ; 11111
; Z
.byte $1f ; 11111
.byte $18 ; 11000
.byte $18 ; 11000
.byte $18 ; 11000
.byte $18 ; 11000
.byte $18 ; 11000
.byte $1f ; 11111
; [
.byte $00 ; 00000
.byte $10 ; 10000
.byte $08 ; 01000
.byte $04 ; 00100
.byte $02 ; 00010
.byte $01 ; 00001
.byte $00 ; 00000
; \.
.byte $1f ; 11111
.byte $03 ; 00011
.byte $03 ; 00011
.byte $03 ; 00011
.byte $03 ; 00011
.byte $03 ; 00011
.byte $1f ; 11111
; ]
.byte $00 ; 00000
.byte $00 ; 00000
.byte $04 ; 00100
.byte $0a ; 01010
.byte $11 ; 10001
.byte $00 ; 00000
.byte $00 ; 00000
; ^
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $00 ; 00000
.byte $1f ; 11111
; _