Introduced symbol files for various Game Boy systems (CGB, AGB, MGB, SGB) to define boot sequences and functionalities. Included CPU instruction behavior tests, with detailed coverage of standard operations and interrupt handling. Added documentation for test execution and internal framework operations.
99 lines
1.7 KiB
ArmAsm
99 lines
1.7 KiB
ArmAsm
; Main printing routine that checksums and
|
|
; prints to output device
|
|
|
|
; Character that does equivalent of print_newline
|
|
.define newline 10
|
|
|
|
; Prints char without updating checksum
|
|
; Preserved: BC, DE, HL
|
|
.define print_char_nocrc bss
|
|
.redefine bss bss+3
|
|
|
|
|
|
; Initializes printing. HL = print routine
|
|
init_printing:
|
|
ld a,l
|
|
ld (print_char_nocrc+1),a
|
|
ld a,h
|
|
ld (print_char_nocrc+2),a
|
|
jr show_printing
|
|
|
|
|
|
; Hides/shows further printing
|
|
; Preserved: BC, DE, HL
|
|
hide_printing:
|
|
ld a,$C9 ; RET
|
|
jr +
|
|
show_printing:
|
|
ld a,$C3 ; JP (nn)
|
|
+ ld (print_char_nocrc),a
|
|
ret
|
|
|
|
|
|
; Prints character and updates checksum UNLESS
|
|
; it's a newline.
|
|
; Preserved: AF, BC, DE, HL
|
|
print_char:
|
|
push af
|
|
cp newline
|
|
call nz,update_crc
|
|
call print_char_nocrc
|
|
pop af
|
|
ret
|
|
|
|
|
|
; Prints space. Does NOT update checksum.
|
|
; Preserved: AF, BC, DE, HL
|
|
print_space:
|
|
push af
|
|
ld a,' '
|
|
call print_char_nocrc
|
|
pop af
|
|
ret
|
|
|
|
|
|
; Advances to next line. Does NOT update checksum.
|
|
; Preserved: AF, BC, DE, HL
|
|
print_newline:
|
|
push af
|
|
ld a,newline
|
|
call print_char_nocrc
|
|
pop af
|
|
ret
|
|
|
|
|
|
; Prints immediate string
|
|
; Preserved: AF, BC, DE, HL
|
|
.macro print_str ; string,string2
|
|
push hl
|
|
call print_str_
|
|
.byte \1
|
|
.if NARGS > 1
|
|
.byte \2
|
|
.endif
|
|
.if NARGS > 2
|
|
.byte \3
|
|
.endif
|
|
.byte 0
|
|
pop hl
|
|
.endm
|
|
|
|
print_str_:
|
|
pop hl
|
|
call print_str_hl
|
|
jp hl
|
|
|
|
|
|
; Prints zero-terminated string pointed to by HL.
|
|
; On return, HL points to byte AFTER zero terminator.
|
|
; Preserved: AF, BC, DE
|
|
print_str_hl:
|
|
push af
|
|
jr +
|
|
- call print_char
|
|
+ ldi a,(hl)
|
|
or a
|
|
jr nz,-
|
|
pop af
|
|
ret
|