appmake +zx -o $@ --org 28000 --blockname $(name) -b $<
%.o: %.asm
- $(AS) -o $@ $(ASFLAGS) $< >/dev/null
+ $(AS) -o $@ $(ASFLAGS) -L $*.lst $< >/dev/null
+
+testrom.o: testrom.asm glyphs.inc logo.inc
.PHONY: clean
clean:
- rm -f $(bin) $(rom) $(tap) $(obj)
+ rm -f $(bin) $(rom) $(tap) $(obj) $(obj:.o=.lst)
.PHONY: run
run: $(tap)
--- /dev/null
+#define zxkeyb_width 56
+#define zxkeyb_height 16
+static unsigned char zxkeyb_bits[] = {
+ 0xfc, 0x7f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x3f, 0x3f, 0x00,
+ 0x00, 0x00, 0xfc, 0x7f, 0x1c, 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x38, 0x1c,
+ 0x0e, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x2e, 0x38, 0x47, 0x00, 0x00, 0x20, 0x00, 0x27, 0xf1, 0x43, 0x00, 0x00,
+ 0x20, 0x00, 0x97, 0x00, 0x22, 0x00, 0x24, 0x10, 0x80, 0x53, 0x9c, 0x28,
+ 0x0c, 0x97, 0x1e, 0xc0, 0x73, 0xa2, 0xe4, 0x92, 0x72, 0x11, 0x60, 0x88,
+ 0x12, 0x33, 0x51, 0x12, 0x19, 0x70, 0x89, 0xcc, 0x9d, 0x49, 0x1b, 0x0d,
+ 0x78, 0x86, 0x3f, 0x7b, 0xf6, 0x17, 0x0b, 0xfc, 0x30, 0xc0, 0x08, 0x00,
+ 0x00, 0x00, 0xfc, 0x7f, 0xaf, 0x22, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x6f,
+ 0x3e, 0x00, 0x00, 0x00};
; vi:filetype=z80:
+glyph_0:
+ db %00111000
+ db %01001100
+ db %01001100
+ db %01010100
+ db %01100100
+ db %01100100
+ db %00111000
+ db %00000000
+glyph_1:
+ db %00010000
+ db %00110000
+ db %00010000
+ db %00010000
+ db %00010000
+ db %00010000
+ db %00111000
+ db %00000000
+glyph_2:
+ db %00111000
+ db %01000100
+ db %00000100
+ db %00001000
+ db %00010000
+ db %00100000
+ db %01111100
+ db %00000000
+glyph_3:
+ db %00111000
+ db %01000100
+ db %00000100
+ db %00011000
+ db %00000100
+ db %01000100
+ db %00111000
+ db %00000000
+glyph_4:
+ db %00001000
+ db %00011000
+ db %00101000
+ db %01001000
+ db %01111100
+ db %00001000
+ db %00001000
+ db %00000000
+glyph_5:
+ db %01111100
+ db %01000000
+ db %01111000
+ db %00000100
+ db %00000100
+ db %01000100
+ db %00111000
+ db %00000000
+glyph_6:
+ db %00111000
+ db %01000100
+ db %01000000
+ db %01111000
+ db %01000100
+ db %01000100
+ db %00111000
+ db %00000000
+glyph_7:
+ db %01111100
+ db %00000100
+ db %00001000
+ db %00001000
+ db %00010000
+ db %00010000
+ db %00010000
+ db %00000000
+glyph_8:
+ db %00111000
+ db %01000100
+ db %01000100
+ db %00111000
+ db %01000100
+ db %01000100
+ db %00111000
+ db %00000000
+glyph_9:
+ db %00111000
+ db %01000100
+ db %01000100
+ db %00111100
+ db %00000100
+ db %01000100
+ db %00111000
+ db %00000000
glyph_a:
db %00010000
db %00101000
db %00101000
- db %01111100
db %01000100
+ db %01111100
db %01000100
db %11101110
db %00000000
--- /dev/null
+; vi:filetype=z80:
+logo:
+ db $3f,$fe,$fc,$fc,$00,$00,$00
+ db $3f,$fe,$fc,$fc,$00,$00,$00
+ db $3f,$fe,$38,$70,$00,$00,$00
+ db $3c,$1c,$38,$70,$00,$00,$00
+ db $30,$30,$1c,$e0,$00,$00,$00
+ db $00,$74,$1c,$e2,$00,$00,$04
+ db $00,$e4,$8f,$c2,$00,$00,$04
+ db $00,$e9,$00,$44,$00,$24,$08
+ db $01,$ca,$39,$14,$30,$e9,$78
+ db $03,$ce,$45,$27,$49,$4e,$88
+ db $06,$11,$48,$cc,$8a,$48,$98
+ db $0e,$91,$33,$b9,$92,$d8,$b0
+ db $1e,$61,$fc,$de,$6f,$e8,$d0
+ db $3f,$0c,$03,$10,$00,$00,$00
+ db $3f,$fe,$f5,$44,$00,$00,$00
+ db $3f,$fe,$f6,$7c,$00,$00,$00
attr_addr equ $5800
ula_port equ $fe
+
main:
call init
- ld c, 16
+
+ ld hl, fb_addr + 25
+ call draw_logo
+
+ ld c, 4
ld b, 12
call calc_cell_addr
- ld a, 'F'
- call putchar
- inc de
- ld a, 'O'
- call putchar
- inc de
- ld a, 'O'
- call putchar
+ ld hl, str_foobar
+ call putstr
.looptop:
jr .looptop
pop af
ret
+ ; hl: dest
+draw_logo:
+ ld de, logo
+ ld b, 16
+.logoy: ld c, 7
+ push bc
+.logox: ld a, (de)
+ ld (hl), a
+ inc de
+ inc l
+ dec c
+ jr nz, .logox
+ ld bc, 7
+ sbc hl, bc
+ inc h
+
+ ld a, h
+ and $e7
+ ld h, a
+ and $7
+ jr nz, .skipinc
+ ld a, l
+ add $20
+ ld l, a
+.skipinc:
+ pop bc
+ dec b
+ jr nz, .logoy
+ ret
; de: dest
; a: char
putchar:
- sub 'A'
+ ; is it a digit?
+ ld bc, glyph_0
+ sub '0'
+ ret c
+ cp 10
+ jr c, .common
+ ; is it A-Z ?
+ sub 'A'-'0'
ret c
cp 27
ret nc
+ ld bc, glyph_a
+.common:
push de
+ push hl
sla a
sla a
sla a
ld h, 0
ld l, a
- ld bc, glyph_a
add hl, bc
ld c, 8
.chartop:
inc hl
dec c
jr nz, .chartop
+ pop hl
pop de
ret
+ ; de: dest
+ ; hl: str
+putstr:
+ xor a
+ ld b, (hl)
+ cp b
+ jr z, .done
+ ld a, b
+ call putchar
+ inc hl
+ inc de
+ jr putstr
+.done: ret
+
+ ; de: dest
+ ; a: number
+putbin8:
+ ld b, 8
+
+
+str_foobar asciiz 'FOOBAR 1234567890'
+
include glyphs.inc
+ include logo.inc