Disassembly:Democart 2

From veswiki
Revision as of 00:34, 5 August 2026 by E5frog (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This is a disassembly of the Channel F Democart 2. Original code is copyright © 1977 Fairchild Semiconductor.

; -----------------------------------------------------------------------------
; Annotated and formatted Democart 2 disassembly.
; -----------------------------------------------------------------------------
		processor f8
		org	$0800

reset				equ	$0000
delay				equ	$008F
clrscrn				equ	$00D0
pushk				equ	$0107
popk				equ	$011E
drawchar			equ	$0679
drawchar_entry			equ	$067C
b_drawchar_bmp_entry		equ	$068A
b_score_left			equ	$02AC
b_score_right			equ	$02B5


cartridge_start:
		.byte	$55, $2B

; -----------------------------------------------------------------------------
; Main Democart 2 script. Shows multiple demo screens, uses BIOS text and
; graphics routines, then returns to BIOS reset.
; -----------------------------------------------------------------------------

cartridge_entry:
		lisu	3				; 0802 63
		lisl	7				; 0803 6F
		lis	1				; 0804 71
		lr	S,A				; 0805 5C - store A in selected scratchpad register
		pi	$0135				; 0806 28 01 35
		dci	L0BC6				; 0809 2A 0B C6 - load DC with data/code pointer
		pi	draw_stream			; 080C 28 0B A3
		lisu	3				; 080F 63
		lisl	7				; 0810 6F
		lis	3				; 0811 73
		lr	S,A				; 0812 5C - store A in selected scratchpad register
		pi	$0135				; 0813 28 01 35
		dci	L0BCF				; 0816 2A 0B CF - load DC with data/code pointer
		pi	draw_stream			; 0819 28 0B A3
		lis	6				; 081C 76
		lr	3,A				; 081D 53
		pi	clear_screen_o37_0		; 081E 28 0F EA
		li	$26				; 0821 20 26
		lr	1,A				; 0823 51
		li	$14				; 0824 20 14
		lr	2,A				; 0826 52
		li	$28				; 0827 20 28
		lr	3,A				; 0829 53
		pi	draw_entity_wrapper		; 082A 28 0B 76
		li	$26				; 082D 20 26
		lr	1,A				; 082F 51
		li	$21				; 0830 20 21
		lr	2,A				; 0832 52
		li	$28				; 0833 20 28
		lr	3,A				; 0835 53
		pi	draw_entity_wrapper		; 0836 28 0B 76
		li	$33				; 0839 20 33
		lr	1,A				; 083B 51
		pi	draw_three_markers		; 083C 28 0B 7D
		li	$41				; 083F 20 41
		lr	1,A				; 0841 51
		pi	draw_three_markers		; 0842 28 0B 7D
		dci	L0BD8				; 0845 2A 0B D8 - load DC with data/code pointer
		pi	draw_stream			; 0848 28 0B A3
		clr					; 084B 70
		lr	3,A				; 084C 53
		pi	clear_screen_o37_1		; 084D 28 0F ED
		li	$14				; 0850 20 14
		lr	1,A				; 0852 51
		lis	6				; 0853 76
		lr	2,A				; 0854 52
		pi	$020E				; 0855 28 02 0E
		li	$14				; 0858 20 14
		lr	1,A				; 085A 51
		li	$2E				; 085B 20 2E
		lr	2,A				; 085D 52
		pi	$020E				; 085E 28 02 0E
		li	$12				; 0861 20 12
		lr	1,A				; 0863 51
		lr	2,A				; 0864 52
		li	$58				; 0865 20 58
		lr	0,A				; 0867 50
		pi	drawchar			; 0868 28 06 79 - BIOS draw character routine
		dci	L0BE6				; 086B 2A 0B E6 - load DC with data/code pointer
		pi	draw_stream			; 086E 28 0B A3
		lis	6				; 0871 76
		lr	3,A				; 0872 53
		pi	clear_screen_o37_0		; 0873 28 0F EA
		lis	6				; 0876 76
		lr	$A,A				; 0877 5A
		dci	L0C98				; 0878 2A 0C 98 - load DC with data/code pointer
		li	$20				; 087B 20 20
		lr	1,A				; 087D 51
		lr	2,A				; 087E 52
L087F:
		li	$80				; 087F 20 80
		lr	0,A				; 0881 50
		pi	b_drawchar_bmp_wrapper		; 0882 28 0F CD
		lis	2				; 0885 72
		as	1				; 0886 C1
		lr	1,A				; 0887 51
		ds	$A				; 0888 3A
		bnz	L087F				; 0889 94 F5
		pi	short_delay			; 088B 28 0B 96
		lis	6				; 088E 76
		lr	3,A				; 088F 53
		pi	clear_screen_o37_0		; 0890 28 0F EA
		li	$18				; 0893 20 18
		lr	2,A				; 0895 52
		li	$30				; 0896 20 30
		lr	1,A				; 0898 51
		dci	L0CC8				; 0899 2A 0C C8 - load DC with data/code pointer
		li	$80				; 089C 20 80
		lr	0,A				; 089E 50
		pi	b_drawchar_bmp_wrapper		; 089F 28 0F CD
		lis	2				; 08A2 72
		as	1				; 08A3 C1
		lr	1,A				; 08A4 51
		li	$80				; 08A5 20 80
		lr	0,A				; 08A7 50
		dci	L0CC8				; 08A8 2A 0C C8 - load DC with data/code pointer
		pi	b_drawchar_bmp_wrapper		; 08AB 28 0F CD
		li	$30				; 08AE 20 30
		lr	1,A				; 08B0 51
		li	$20				; 08B1 20 20
		lr	2,A				; 08B3 52
		li	$80				; 08B4 20 80
		lr	0,A				; 08B6 50
		dci	L0CC8				; 08B7 2A 0C C8 - load DC with data/code pointer
		pi	b_drawchar_bmp_wrapper		; 08BA 28 0F CD
		lis	2				; 08BD 72
		as	1				; 08BE C1
		lr	1,A				; 08BF 51
		li	$80				; 08C0 20 80
		lr	0,A				; 08C2 50
		dci	L0CC8				; 08C3 2A 0C C8 - load DC with data/code pointer
		pi	b_drawchar_bmp_wrapper		; 08C6 28 0F CD
		dci	L0CD0				; 08C9 2A 0C D0 - load DC with data/code pointer
		pi	draw_stream			; 08CC 28 0B A3
		lis	6				; 08CF 76
		lr	3,A				; 08D0 53
		pi	clear_screen_o37_1		; 08D1 28 0F ED
		li	$13				; 08D4 20 13
		lr	1,A				; 08D6 51
		lis	6				; 08D7 76
		lr	2,A				; 08D8 52
		pi	$020E				; 08D9 28 02 0E
		li	$13				; 08DC 20 13
		lr	1,A				; 08DE 51
		li	$2F				; 08DF 20 2F
		lr	2,A				; 08E1 52
		pi	$020E				; 08E2 28 02 0E
		li	$11				; 08E5 20 11
		lr	1,A				; 08E7 51
		lis	9				; 08E8 79
		lr	2,A				; 08E9 52
		li	$24				; 08EA 20 24
		lr	3,A				; 08EC 53
		pi	bios_draw_a01fc_wrapper		; 08ED 28 0F C6
		li	$5A				; 08F0 20 5A
		lr	1,A				; 08F2 51
		lis	9				; 08F3 79
		lr	2,A				; 08F4 52
		li	$24				; 08F5 20 24
		lr	3,A				; 08F7 53
		pi	bios_draw_a01fc_wrapper		; 08F8 28 0F C6
		lis	9				; 08FB 79
		lr	4,A				; 08FC 54
		dci	L0C00				; 08FD 2A 0C 00 - load DC with data/code pointer
L0900:
		lm					; 0900 16 - load byte from DC and increment DC
		lr	1,A				; 0901 51
		lm					; 0902 16 - load byte from DC and increment DC
		lr	2,A				; 0903 52
		lm					; 0904 16 - load byte from DC and increment DC
		lr	0,A				; 0905 50
		xdc					; 0906 2C - exchange DC and H pointers
		dci	$0C1B				; 0907 2A 0C 1B - load DC with data/code pointer
		pi	drawchar_entry			; 090A 28 06 7C
		xdc					; 090D 2C - exchange DC and H pointers
		ds	4				; 090E 34
		bnz	L0900				; 090F 94 F0
		pi	bios_score_prompt_wrapper	; 0911 28 0F D6
		dci	L0BF9				; 0914 2A 0B F9 - load DC with data/code pointer
		pi	draw_stream			; 0917 28 0B A3
		lis	6				; 091A 76
		lr	3,A				; 091B 53
		pi	clear_screen_o37_0		; 091C 28 0F EA
		clr					; 091F 70
		lr	2,A				; 0920 52
		lr	0,A				; 0921 50
		lis	$D				; 0922 7D
		lr	$A,A				; 0923 5A
L0924:
		li	$7E				; 0924 20 7E
		lr	1,A				; 0926 51
		pi	drawchar			; 0927 28 06 79 - BIOS draw character routine
		lr	A,2				; 092A 42
		inc					; 092B 1F
		lr	2,A				; 092C 52
		ds	$A				; 092D 3A
		bnz	L0924				; 092E 94 F5
L0930:
		lis	4				; 0930 74
		as	2				; 0931 C2
		lr	2,A				; 0932 52
		lis	3				; 0933 73
		lr	1,A				; 0934 51
L0935:
		li	$C0				; 0935 20 C0
		lr	0,A				; 0937 50
		dci	$4000				; 0938 2A 40 00 - load DC with data/code pointer
; Points data counter to unused area.
; Hardware holds the proper value.

		pi	drawchar_entry			; 093B 28 06 7C
		ds	1				; 093E 31
		lr	A,1				; 093F 41
		ci	$77				; 0940 25 77
		bc	L0935				; 0942 82 F2
		lr	A,2				; 0944 42
		ci	$28				; 0945 25 28
		bc	L0930				; 0947 82 E8
		lis	3				; 0949 73
		lr	$A,A				; 094A 5A
		li	$26				; 094B 20 26
		lr	2,A				; 094D 52
L094E:
		lis	8				; 094E 78
		lr	1,A				; 094F 51
		clr					; 0950 70
		lr	0,A				; 0951 50
L0952:
		pi	drawchar			; 0952 28 06 79 - BIOS draw character routine
		lis	2				; 0955 72
		as	2				; 0956 C2
		lr	2,A				; 0957 52
		ds	1				; 0958 31
		ds	$A				; 0959 3A
		bnz	L0952				; 095A 94 F7
		pi	drawchar			; 095C 28 06 79 - BIOS draw character routine
		lr	A,2				; 095F 42
		inc					; 0960 1F
		lr	2,A				; 0961 52
		ds	1				; 0962 31
		pi	drawchar			; 0963 28 06 79 - BIOS draw character routine
		lr	A,2				; 0966 42
		ci	$31				; 0967 25 31
		bnc	L0973				; 0969 92 09
		li	$2B				; 096B 20 2B
		lr	2,A				; 096D 52
		lis	3				; 096E 73
		lr	$A,A				; 096F 5A
		jmp	L094E				; 0970 29 09 4E - unconditional jump

L0973:
		nop					; 0973 2B
		clr					; 0974 70
		lr	0,A				; 0975 50
		li	$2D				; 0976 20 2D
		lr	2,A				; 0978 52
L0979:
		li	$53				; 0979 20 53
		lr	1,A				; 097B 51
		pi	drawchar			; 097C 28 06 79 - BIOS draw character routine
		ds	1				; 097F 31
		ds	2				; 0980 32
		pi	drawchar			; 0981 28 06 79 - BIOS draw character routine
		lis	3				; 0984 73
		lr	$A,A				; 0985 5A
L0986:
		ds	2				; 0986 32
		ds	2				; 0987 32
		ds	1				; 0988 31
		pi	drawchar			; 0989 28 06 79 - BIOS draw character routine
		ds	$A				; 098C 3A
		bnz	L0986				; 098D 94 F8
		lr	A,2				; 098F 42
		ci	$27				; 0990 25 27
		bnc	L099A				; 0992 92 07
		li	$30				; 0994 20 30
		lr	2,A				; 0996 52
		jmp	L0979				; 0997 29 09 79 - unconditional jump

L099A:
		pi	bios_score_prompt_wrapper	; 099A 28 0F D6
		dci	L0C76				; 099D 2A 0C 76 - load DC with data/code pointer
		li	$69				; 09A0 20 69
		lr	$A,A				; 09A2 5A
		pi	draw_stream			; 09A3 28 0B A3
		pi	draw_stream			; 09A6 28 0B A3
		clr					; 09A9 70
		lr	$A,A				; 09AA 5A
		pi	draw_stream			; 09AB 28 0B A3
		lis	3				; 09AE 73
		lr	3,A				; 09AF 53
		pi	clear_screen_o37_0		; 09B0 28 0F EA
		dci	L0C34				; 09B3 2A 0C 34 - load DC with data/code pointer
		xdc					; 09B6 2C - exchange DC and H pointers
		dci	L0C67				; 09B7 2A 0C 67 - load DC with data/code pointer
		lis	5				; 09BA 75
		lr	$A,A				; 09BB 5A
L09BC:
		lm					; 09BC 16 - load byte from DC and increment DC
		lr	1,A				; 09BD 51
		lm					; 09BE 16 - load byte from DC and increment DC
		lr	2,A				; 09BF 52
		lm					; 09C0 16 - load byte from DC and increment DC
		lr	0,A				; 09C1 50
		xdc					; 09C2 2C - exchange DC and H pointers
		pi	b_drawchar_bmp_wrapper		; 09C3 28 0F CD
		xdc					; 09C6 2C - exchange DC and H pointers
		ds	$A				; 09C7 3A
		bnz	L09BC				; 09C8 94 F3
		dci	L0C5C				; 09CA 2A 0C 5C - load DC with data/code pointer
		pi	draw_stream			; 09CD 28 0B A3
		lis	3				; 09D0 73
		lr	3,A				; 09D1 53
		pi	clear_screen_o37_1		; 09D2 28 0F ED
		pi	bios_score_prompt_wrapper	; 09D5 28 0F D6
		lis	9				; 09D8 79
		lr	$A,A				; 09D9 5A
		dci	L0CDE				; 09DA 2A 0C DE - load DC with data/code pointer
L09DD:
		lm					; 09DD 16 - load byte from DC and increment DC
		lr	1,A				; 09DE 51
		lm					; 09DF 16 - load byte from DC and increment DC
		lr	2,A				; 09E0 52
		lm					; 09E1 16 - load byte from DC and increment DC
		lr	0,A				; 09E2 50
		xdc					; 09E3 2C - exchange DC and H pointers
		dci	$0CF9				; 09E4 2A 0C F9 - load DC with data/code pointer
		pi	drawchar_entry			; 09E7 28 06 7C
		xdc					; 09EA 2C - exchange DC and H pointers
		ds	$A				; 09EB 3A
		bnz	L09DD				; 09EC 94 F0
		dci	$0D08				; 09EE 2A 0D 08 - load DC with data/code pointer
		pi	draw_stream			; 09F1 28 0B A3
		lis	3				; 09F4 73
		lr	3,A				; 09F5 53
		pi	clear_screen_o37_1		; 09F6 28 0F ED
		pi	bios_score_prompt_wrapper	; 09F9 28 0F D6
		li	$10				; 09FC 20 10
		lr	1,A				; 09FE 51
		li	$1A				; 09FF 20 1A
		lr	2,A				; 0A01 52
		li	$10				; 0A02 20 10
		lr	3,A				; 0A04 53
		pi	draw_entity_wrapper		; 0A05 28 0B 76
		lis	2				; 0A08 72
		lr	$A,A				; 0A09 5A
L0A0A:
		lis	$F				; 0A0A 7F
		lr	3,A				; 0A0B 53
		lis	$F				; 0A0C 7F
		as	1				; 0A0D C1
		lr	1,A				; 0A0E 51
		pi	draw_entity_wrapper		; 0A0F 28 0B 76
		ds	$A				; 0A12 3A
		bnz	L0A0A				; 0A13 94 F6
		li	$69				; 0A15 20 69
		lr	$A,A				; 0A17 5A
		dci	L0D14				; 0A18 2A 0D 14 - load DC with data/code pointer
		pi	draw_stream			; 0A1B 28 0B A3
		pi	draw_stream			; 0A1E 28 0B A3
		pi	draw_stream			; 0A21 28 0B A3
		li	$30				; 0A24 20 30
		lr	1,A				; 0A26 51
		li	$28				; 0A27 20 28
		lr	2,A				; 0A29 52
		li	$10				; 0A2A 20 10
		lr	3,A				; 0A2C 53
		pi	draw_entity_wrapper		; 0A2D 28 0B 76
		lis	6				; 0A30 76
		lr	$A,A				; 0A31 5A
		dci	L0D44				; 0A32 2A 0D 44 - load DC with data/code pointer
L0A35:
		lm					; 0A35 16 - load byte from DC and increment DC
		lr	1,A				; 0A36 51
		lm					; 0A37 16 - load byte from DC and increment DC
		lr	2,A				; 0A38 52
		lm					; 0A39 16 - load byte from DC and increment DC
		lr	0,A				; 0A3A 50
		xdc					; 0A3B 2C - exchange DC and H pointers
		pi	drawchar			; 0A3C 28 06 79 - BIOS draw character routine
		xdc					; 0A3F 2C - exchange DC and H pointers
		ds	$A				; 0A40 3A
		bnz	L0A35				; 0A41 94 F3
		dci	L0D56				; 0A43 2A 0D 56 - load DC with data/code pointer
		clr					; 0A46 70
		lr	$A,A				; 0A47 5A
		pi	draw_stream			; 0A48 28 0B A3
		lis	6				; 0A4B 76
		lr	3,A				; 0A4C 53
		pi	clear_screen_o37_1		; 0A4D 28 0F ED
		pi	bios_score_prompt_wrapper	; 0A50 28 0F D6
		dci	L0D61				; 0A53 2A 0D 61 - load DC with data/code pointer
		li	$69				; 0A56 20 69
		lr	$A,A				; 0A58 5A
		pi	draw_stream			; 0A59 28 0B A3
		pi	draw_stream			; 0A5C 28 0B A3
		pi	draw_stream			; 0A5F 28 0B A3
		clr					; 0A62 70
		lr	$A,A				; 0A63 5A
		pi	draw_stream			; 0A64 28 0B A3
		lis	6				; 0A67 76
		lr	3,A				; 0A68 53
		pi	clear_screen_o37_1		; 0A69 28 0F ED
		pi	bios_score_prompt_wrapper	; 0A6C 28 0F D6
		dci	L0D79				; 0A6F 2A 0D 79 - load DC with data/code pointer
		lis	6				; 0A72 76
		lr	$A,A				; 0A73 5A
L0A74:
		lm					; 0A74 16 - load byte from DC and increment DC
		lr	1,A				; 0A75 51
		lm					; 0A76 16 - load byte from DC and increment DC
		lr	2,A				; 0A77 52
		lm					; 0A78 16 - load byte from DC and increment DC
		lr	0,A				; 0A79 50
		xdc					; 0A7A 2C - exchange DC and H pointers
		dci	L0D8B				; 0A7B 2A 0D 8B - load DC with data/code pointer
		pi	b_drawchar_bmp_wrapper		; 0A7E 28 0F CD
		xdc					; 0A81 2C - exchange DC and H pointers
		ds	$A				; 0A82 3A
		bnz	L0A74				; 0A83 94 F0
		dci	$0D99				; 0A85 2A 0D 99 - load DC with data/code pointer
		xdc					; 0A88 2C - exchange DC and H pointers
		dci	L0DA8				; 0A89 2A 0D A8 - load DC with data/code pointer
		lis	3				; 0A8C 73
		lr	$A,A				; 0A8D 5A
L0A8E:
		lm					; 0A8E 16 - load byte from DC and increment DC
		lr	1,A				; 0A8F 51
		lm					; 0A90 16 - load byte from DC and increment DC
		lr	2,A				; 0A91 52
		lm					; 0A92 16 - load byte from DC and increment DC
		lr	0,A				; 0A93 50
		xdc					; 0A94 2C - exchange DC and H pointers
		pi	drawchar_entry			; 0A95 28 06 7C
		xdc					; 0A98 2C - exchange DC and H pointers
		ds	$A				; 0A99 3A
		bnz	L0A8E				; 0A9A 94 F3
		dci	L0D93				; 0A9C 2A 0D 93 - load DC with data/code pointer
		pi	draw_stream			; 0A9F 28 0B A3
		lis	6				; 0AA2 76
		lr	3,A				; 0AA3 53
		pi	clear_screen_o37_0		; 0AA4 28 0F EA
		dci	L0DB1				; 0AA7 2A 0D B1 - load DC with data/code pointer
		lis	2				; 0AAA 72
		lr	$A,A				; 0AAB 5A
L0AAC:
		lm					; 0AAC 16 - load byte from DC and increment DC
		lr	1,A				; 0AAD 51
		lm					; 0AAE 16 - load byte from DC and increment DC
		lr	2,A				; 0AAF 52
		lm					; 0AB0 16 - load byte from DC and increment DC
		lr	0,A				; 0AB1 50
		xdc					; 0AB2 2C - exchange DC and H pointers
		dci	$0F58				; 0AB3 2A 0F 58 - load DC with data/code pointer
		pi	drawchar_entry			; 0AB6 28 06 7C
		xdc					; 0AB9 2C - exchange DC and H pointers
		ds	$A				; 0ABA 3A
		bnz	L0AAC				; 0ABB 94 F0
		lis	4				; 0ABD 74
		lr	$A,A				; 0ABE 5A
		li	$10				; 0ABF 20 10
		lr	2,A				; 0AC1 52
L0AC2:
		li	$17				; 0AC2 20 17
		lr	1,A				; 0AC4 51
		li	$81				; 0AC5 20 81
		lr	0,A				; 0AC7 50
		pi	drawchar			; 0AC8 28 06 79 - BIOS draw character routine
		lis	5				; 0ACB 75
		as	2				; 0ACC C2
		lr	2,A				; 0ACD 52
		ci	$27				; 0ACE 25 27
		bc	L0AC2				; 0AD0 82 F1
		li	$1A				; 0AD2 20 1A
		lr	1,A				; 0AD4 51
		li	$1A				; 0AD5 20 1A
		lr	2,A				; 0AD7 52
		dci	L0DC3				; 0AD8 2A 0D C3 - load DC with data/code pointer
		lis	6				; 0ADB 76
		lr	$A,A				; 0ADC 5A
L0ADD:
		lm					; 0ADD 16 - load byte from DC and increment DC
		lr	0,A				; 0ADE 50
		xdc					; 0ADF 2C - exchange DC and H pointers
		dci	L0DC9				; 0AE0 2A 0D C9 - load DC with data/code pointer
		pi	drawchar_entry			; 0AE3 28 06 7C
		ds	1				; 0AE6 31
		ds	1				; 0AE7 31
		xdc					; 0AE8 2C - exchange DC and H pointers
		ds	$A				; 0AE9 3A
		bnz	L0ADD				; 0AEA 94 F2
		li	$2C				; 0AEC 20 2C
		lr	2,A				; 0AEE 52
		li	$12				; 0AEF 20 12
		lr	1,A				; 0AF1 51
		li	$80				; 0AF2 20 80
		lr	0,A				; 0AF4 50
		dci	L0DCE				; 0AF5 2A 0D CE - load DC with data/code pointer
		pi	b_drawchar_bmp_wrapper		; 0AF8 28 0F CD
		li	$43				; 0AFB 20 43
		lr	1,A				; 0AFD 51
		li	$40				; 0AFE 20 40
		lr	0,A				; 0B00 50
		dci	L0DCE				; 0B01 2A 0D CE - load DC with data/code pointer
		pi	b_drawchar_bmp_wrapper		; 0B04 28 0F CD
		pi	bios_score_prompt_wrapper	; 0B07 28 0F D6
		dci	L0DB7				; 0B0A 2A 0D B7 - load DC with data/code pointer
		pi	draw_stream			; 0B0D 28 0B A3
		lis	6				; 0B10 76
		lr	3,A				; 0B11 53
		pi	clear_screen_o37_0		; 0B12 28 0F EA
		dci	L0DD6				; 0B15 2A 0D D6 - load DC with data/code pointer
		lis	8				; 0B18 78
		lr	2,A				; 0B19 52
L0B1A:
		lis	$F				; 0B1A 7F
L0B1B:
		lr	1,A				; 0B1B 51
		li	$C0				; 0B1C 20 C0
		lr	0,A				; 0B1E 50
		lm					; 0B1F 16 - load byte from DC and increment DC
		xdc					; 0B20 2C - exchange DC and H pointers
		lr	$A,A				; 0B21 5A
		sr	4				; 0B22 14
		sl	4				; 0B23 15
		sr	1				; 0B24 12
		lr	$B,A				; 0B25 5B
		lr	A,$A				; 0B26 4A
		sl	4				; 0B27 15
		sr	1				; 0B28 12
		lr	$A,A				; 0B29 5A
		dci	L0E26				; 0B2A 2A 0E 26 - load DC with data/code pointer
		lr	A,$B				; 0B2D 4B
		adc					; 0B2E 8E
		pi	b_drawchar_bmp_wrapper		; 0B2F 28 0F CD
		ds	1				; 0B32 31
		dci	L0E26				; 0B33 2A 0E 26 - load DC with data/code pointer
		lr	A,$A				; 0B36 4A
		adc					; 0B37 8E
		li	$C0				; 0B38 20 C0
		lr	0,A				; 0B3A 50
		pi	b_drawchar_bmp_wrapper		; 0B3B 28 0F CD
		xdc					; 0B3E 2C - exchange DC and H pointers
		ds	1				; 0B3F 31
		lr	A,1				; 0B40 41
		ci	$5A				; 0B41 25 5A
		bc	L0B1B				; 0B43 82 D7
		lis	4				; 0B45 74
		as	2				; 0B46 C2
		lr	2,A				; 0B47 52
		ci	$2F				; 0B48 25 2F
		bc	L0B1A				; 0B4A 82 CF
		dci	L0E96				; 0B4C 2A 0E 96 - load DC with data/code pointer
		pi	draw_stream			; 0B4F 28 0B A3
		lis	6				; 0B52 76
		lr	3,A				; 0B53 53
		pi	clear_screen_o37_0		; 0B54 28 0F EA
L0B57:
		dci	L0E9D				; 0B57 2A 0E 9D - load DC with data/code pointer
		lis	$C				; 0B5A 7C
L0B5B:
		lr	$A,A				; 0B5B 5A
L0B5C:
		lm					; 0B5C 16 - load byte from DC and increment DC
		lr	1,A				; 0B5D 51
		lm					; 0B5E 16 - load byte from DC and increment DC
		lr	2,A				; 0B5F 52
		lm					; 0B60 16 - load byte from DC and increment DC
		lr	0,A				; 0B61 50
		xdc					; 0B62 2C - exchange DC and H pointers
		dci	L0EC1				; 0B63 2A 0E C1 - load DC with data/code pointer
		pi	drawchar_entry			; 0B66 28 06 7C
		xdc					; 0B69 2C - exchange DC and H pointers
		ds	$A				; 0B6A 3A
		bnz	L0B5C				; 0B6B 94 F0
		dci	L0EE4				; 0B6D 2A 0E E4 - load DC with data/code pointer
		pi	draw_stream			; 0B70 28 0B A3
		jmp	reset				; 0B73 29 00 00 - unconditional jump

; -----------------------------------------------------------------------------
; Wrapper around BIOS draw routine at $0215. Saves K, then tail-jumps into BIOS
; code.
; -----------------------------------------------------------------------------
draw_entity_wrapper:
		lr	K,P				; 0B76 08
		pi	pushk				; 0B77 28 01 07 - bios pushk - save return address on BIOS K-stack
		jmp	$0215				; 0B7A 29 02 15 - bios, calls draw char - unconditional jump

; -----------------------------------------------------------------------------
; Draws three repeated BIOS objects at fixed Y positions $0A, $17 and $24 using
; BIOS routine $01F6.
; -----------------------------------------------------------------------------
draw_three_markers:
		lr	K,P				; 0B7D 08
		pi	pushk				; 0B7E 28 01 07 - bios pushk - save return address on BIOS K-stack
		lis	$A				; 0B81 7A
		lr	2,A				; 0B82 52
		pi	$01F6				; 0B83 28 01 F6
		li	$17				; 0B86 20 17
		lr	2,A				; 0B88 52
		pi	$01F6				; 0B89 28 01 F6
		li	$24				; 0B8C 20 24
		lr	2,A				; 0B8E 52
		pi	$01F6				; 0B8F 28 01 F6
		pi	popk				; 0B92 28 01 1E - restore return address from BIOS K-stack
		pk					; 0B95 0C - return via K/P after BIOS K-stack restore

; -----------------------------------------------------------------------------
; Short delay helper. Uses r0 as outer counter and r5 as BIOS delay parameter.
; -----------------------------------------------------------------------------
short_delay:
		lr	K,P				; 0B96 08
		lis	3				; 0B97 73
		lr	0,A				; 0B98 50
		lis	$F				; 0B99 7F
		lr	5,A				; 0B9A 55
short_delay_loop:
		pi	delay				; 0B9B 28 00 8F
		ds	0				; 0B9E 30
		bnz	short_delay_loop		; 0B9F 94 FB
		lr	P,K				; 0BA1 09
		pop					; 0BA2 1C - return from subroutine

; -----------------------------------------------------------------------------
; Draws a compressed or data-driven text/object stream. DC points at stream
; header: count, Y, X, then character/object bytes.
; -----------------------------------------------------------------------------
draw_stream:
		lr	K,P				; 0BA3 08
		pi	pushk				; 0BA4 28 01 07 - bios pushk - save return address on BIOS K-stack
		lm					; 0BA7 16 - load byte from DC and increment DC
		lr	3,A				; 0BA8 53
		lm					; 0BA9 16 - load byte from DC and increment DC
		lr	2,A				; 0BAA 52
		lm					; 0BAB 16 - load byte from DC and increment DC
		lr	1,A				; 0BAC 51

; -----------------------------------------------------------------------------
; Inner stream loop. Loads one stream item from DC and draws through BIOS
; drawchar entry with alternate glyph/data pointer.
; -----------------------------------------------------------------------------
draw_stream_next:
		lm					; 0BAD 16 - load byte from DC and increment DC
		lr	0,A				; 0BAE 50
		xdc					; 0BAF 2C - exchange DC and H pointers
		dci	L0EEF				; 0BB0 2A 0E EF - load DC with data/code pointer

; -----------------------------------------------------------------------------
; Calls BIOS drawchar entry for one stream item, advances, and repeats until
; count expires.
; -----------------------------------------------------------------------------
draw_stream_call:
		pi	drawchar_entry			; 0BB3 28 06 7C
		xdc					; 0BB6 2C - exchange DC and H pointers
		ds	3				; 0BB7 33
		bnz	draw_stream_next		; 0BB8 94 F4
		lr	A,$A				; 0BBA 4A
		ci	$69				; 0BBB 25 69
		bz	draw_stream_done		; 0BBD 84 04
		pi	short_delay			; 0BBF 28 0B 96

; -----------------------------------------------------------------------------
; Restores return address from BIOS K-stack and returns from stream drawing
; routine.
; -----------------------------------------------------------------------------
draw_stream_done:
		pi	popk				; 0BC2 28 01 1E - restore return address from BIOS K-stack
		pk					; 0BC5 0C - return via K/P after BIOS K-stack restore

L0BC6:
		lr	QU,A				; 0BC6 06
		sl	1				; 0BC7 13
		out	$91				; 0BC8 27 91
		bf	9,L0B57				; 0BCA 99 8C
		bnz	L0B5B				; 0BCC 94 8E
		db	$A3				; 0BCE A3
L0BCF:
		lr	QU,A				; 0BCF 06
		oi	$26				; 0BD0 22 26
		lr	D,A				; 0BD2 5E - store A and decrement ISAR
		lr	A,D				; 0BD3 4E - read selected scratchpad register and decrement ISAR
		lr	8,A				; 0BD4 58
		lr	8,A				; 0BD5 58
		lr	2,A				; 0BD6 52
		lr	I,A				; 0BD7 5D - store A and increment ISAR
L0BD8:
		lr	IS,A				; 0BD8 0B
		ds	1				; 0BD9 31
		di					; 0BDA 1A
		bf	$E, L0B6E			; 0BDB 9E 92
		xm					; 0BDD 8C
		lr	A,KU				; 0BDE 00
		lr	D,A				; 0BDF 5E - store A and decrement ISAR
		lr	A,$A				; 0BE0 4A
		lr	A,S				; 0BE1 4C - read selected scratchpad register
		lr	A,KU				; 0BE2 00
		asd	D				; 0BE3 DE
		asd	9				; 0BE4 D9
		as	D				; 0BE5 CE
L0BE6:
		lr	DC,H				; 0BE6 10
		li	$0A				; 0BE7 20 0A
		bf	$D, L0B7B			; 0BE9 9D 91
		bf	9, L0B85			; 0BEB 99 99
		bf	$E, L0B80			; 0BED 9E 92
		bno	L0B80				; 0BEF 98 90
		lr	A,KU				; 0BF1 00
		br	draw_three_markers		; 0BF2 90 8A - unconditional jump

; -----------------------------------------------------------------------------
; data_tables
; Smart disassembly marks $0BF4-$0FC5 as data.
; -----------------------------------------------------------------------------

L0BF4:
		.byte	$96, $96, $8E, $9C, $A3		; 0BF4
L0BF9:
		.byte	$04, $2B, $2D, $5E, $4A, $58, $54	; 0BF9
L0C00:
		.byte	$2A, $10, $C0, $42, $10, $C0, $36, $1B	; 0C00
		.byte	$C0, $2A, $25, $C0, $42, $25, $C0, $19	; 0C08
		.byte	$0D, $83, $52, $28, $84, $17, $0B, $C1	; 0C10
		.byte	$54, $2A, $42			; 0C18
L0C1B:
		.byte	$00, $20, $70, $20, $00, $20, $70, $E0	; 0C1B
		.byte	$50, $08, $80, $50, $38, $70, $20, $08	; 0C23
		.byte	$08, $08, $08, $F8, $F8, $80, $80, $80	; 0C2B
		.byte	$80				; 0C33
L0C34:
		.byte	$0E, $FF, $FF, $3F, $2A, $2E, $2A, $2E	; 0C34
		.byte	$70, $FF, $FF, $FC, $54, $74, $54, $74	; 0C3C
		.byte	$5D, $55, $5D, $55, $5D, $55, $5D, $55	; 0C44
		.byte	$00, $40, $60, $7D, $7F, $7D, $00, $00	; 0C4C
		.byte	$00, $02, $06, $BE, $FE, $BE, $00, $00	; 0C54
L0C5C:
		.byte	$08, $13, $1F, $9D, $9A, $92, $9E, $8F	; 0C5C
		.byte	$92, $9C, $8E			; 0C64
L0C67:
		.byte	$30, $2E, $C0, $33, $2E, $C0, $31, $33	; 0C67
		.byte	$C0, $0B, $32, $80, $5C, $32, $40	; 0C6F
L0C76:
		.byte	$0C, $0B, $17, $40, $45, $40, $40, $00	; 0C76
		.byte	$00, $00, $00, $40, $45, $40, $40, $04	; 0C7E
		.byte	$33, $2E, $4B, $4E, $5E, $66, $09, $1C	; 0C86
		.byte	$20, $4B, $56, $4A, $4C, $54, $53, $4A	; 0C8E
		.byte	$4C, $54			; 0C96
L0C98:
		.byte	$F8, $84, $82, $81, $81, $81, $81, $FF	; 0C98
		.byte	$00, $00, $00, $1C, $23, $22, $22, $DC	; 0CA0
		.byte	$00, $00, $00, $78, $C7, $44, $44, $38	; 0CA8
		.byte	$04, $04, $04, $04, $FC, $44, $44, $7F	; 0CB0
		.byte	$10, $28, $28, $28, $28, $28, $10, $EF	; 0CB8
		.byte	$00, $00, $00, $08, $14, $14, $08, $F6	; 0CC0
L0CC8:
		.byte	$FF, $C3, $A5, $99, $99, $A5, $C3, $FF	; 0CC8
L0CD0:
		.byte	$0B, $30, $19, $8A, $DF, $5E, $99, $00	; 0CD0
		.byte	$4D, $59, $D9, $CD, $56, $8E	; 0CD8
L0CDE:
		.byte	$1B, $10, $82, $50, $27, $82, $25, $0D	; 0CDE
		.byte	$C1, $3D, $10, $C1, $36, $1B, $C1, $2F	; 0CE6
		.byte	$25, $C1, $47, $28, $C1, $17, $0B, $C0	; 0CEE
		.byte	$54, $2A, $40			; 0CF6
L0CF9:
		.byte	$00, $20, $F8, $70, $00, $00, $50, $20	; 0CF9
		.byte	$50, $00, $20, $70, $D8, $70, $20	; 0D01
L0D08:
		.byte	$09, $16, $1D, $5D, $5A, $4A, $4C, $4E	; 0D08
		.byte	$00, $61, $4A, $5C		; 0D10
L0D14:
		.byte	$0D, $10, $13, $00, $42, $43, $00, $00	; 0D14
		.byte	$00, $47, $42, $00, $00, $00, $41, $43	; 0D1C
		.byte	$0D, $16, $13, $E9, $44, $42, $00, $00	; 0D24
		.byte	$EA, $41, $43, $00, $00, $E2, $00, $43	; 0D2C
		.byte	$0D, $1E, $13, $00, $46, $45, $00, $00	; 0D34
		.byte	$00, $45, $49, $00, $00, $00, $43, $49	; 0D3C
L0D44:
		.byte	$2E, $2B, $81, $28, $2C, $43, $35, $2C	; 0D44
		.byte	$46, $3B, $2C, $49, $35, $24, $42, $3B	; 0D4C
		.byte	$24, $43			; 0D54
L0D56:
		.byte	$08, $09, $20, $97, $8A, $9E, $91, $9B	; 0D56
		.byte	$9F, $92, $A4			; 0D5E
L0D61:
		.byte	$03, $27, $14, $40, $40, $40, $01, $2D	; 0D61
		.byte	$14, $6A, $02, $33, $33, $42, $40, $06	; 0D69
		.byte	$11, $27, $CB, $CA, $D0, $CE, $D6, $DD	; 0D71
L0D79:
		.byte	$14, $19, $80, $1A, $19, $80, $30, $19	; 0D79
		.byte	$40, $36, $19, $40, $4D, $19, $40, $53	; 0D81
		.byte	$19, $40			; 0D89
L0D8B:
		.byte	$FE, $FE, $FE, $FE, $FE, $FE, $FE, $00	; 0D8B
L0D93:
		.byte	$03, $11, $2E, $98, $92, $97	; 0D93
L0D99:
		.byte	$D8, $D8, $D8, $D8, $D8, $00, $70, $00	; 0D99
		.byte	$70, $00, $00, $F0, $00, $7F, $00	; 0DA1
L0DA8:
		.byte	$18, $1A, $80, $34, $1A, $40, $51, $1A	; 0DA8
		.byte	$40				; 0DB0
L0DB1:
		.byte	$10, $10, $80, $10, $23, $40	; 0DB1
L0DB7:
		.byte	$09, $08, $17, $CD, $DC, $CA, $D0, $00	; 0DB7
		.byte	$DC, $CA, $CC, $CE		; 0DBF
L0DC3:
		.byte	$C0, $80, $40, $C0, $80, $40	; 0DC3
L0DC9:
		.byte	$F0, $F0, $F0, $F0, $00		; 0DC9
L0DCE:
		.byte	$FF, $FF, $00, $00, $00, $00, $00, $00	; 0DCE
L0DD6:
		.byte	$45, $45, $45, $49, $C5, $4C, $54, $C5	; 0DD6
		.byte	$C7, $63, $DD, $D7, $5D, $D1, $DD, $46	; 0DDE
		.byte	$D4, $64, $67, $61, $DD, $DD, $DD, $D1	; 0DE6
		.byte	$87, $57, $CC, $5D, $D7, $6D, $86, $76	; 0DEE
		.byte	$D4, $6C, $CC, $67, $61, $4B, $64, $92	; 0DF6
		.byte	$76, $0C, $C5, $14, $CB, $60, $C6, $75	; 0DFE
		.byte	$05, $4C, $CB, $6D, $42, $54, $54, $5D	; 0E06
		.byte	$46, $75, $4C, $C6, $D4, $76, $76, $7B	; 0E0E
		.byte	$8C, $C6, $A4, $54, $67, $54, $54, $51	; 0E16
		.byte	$7C, $C2, $76, $7B, $CC, $B6, $76, $76	; 0E1E
L0E26:
		.byte	$FE, $FE, $C0, $C0, $FE, $FE, $00, $00	; 0E26
		.byte	$FE, $FE, $C6, $C6, $C6, $C6, $00, $00	; 0E2E
		.byte	$FE, $FE, $06, $06, $FE, $FE, $00, $00	; 0E36
		.byte	$C6, $C6, $C6, $C6, $FE, $FE, $00, $00	; 0E3E
		.byte	$FE, $FE, $C0, $C0, $C6, $C6, $00, $00	; 0E46
		.byte	$FE, $FE, $06, $06, $C6, $C6, $00, $00	; 0E4E
		.byte	$C6, $C6, $06, $06, $FE, $FE, $00, $00	; 0E56
		.byte	$C6, $C6, $C0, $C0, $FE, $FE, $00, $00	; 0E5E
		.byte	$C6, $C6, $C0, $C0, $C6, $C6, $00, $00	; 0E66
		.byte	$FE, $FE, $00, $00, $C6, $C6, $00, $00	; 0E6E
		.byte	$C6, $C6, $06, $06, $C6, $C6, $00, $00	; 0E76
		.byte	$C6, $C6, $00, $00, $FE, $FE, $00, $00	; 0E7E
		.byte	$FE, $FE, $00, $00, $FE, $FE, $00, $00	; 0E86
		.byte	$C6, $C6, $C6, $C6, $C6, $C6, $00, $00	; 0E8E
L0E96:
		.byte	$04, $33, $2B, $57, $4A, $64, $4E	; 0E96
L0E9D:
		.byte	$15, $1A, $40, $18, $0D, $40, $35, $0A	; 0E9D
		.byte	$40, $50, $0D, $40, $12, $22, $41, $37	; 0EA5
		.byte	$14, $41, $58, $22, $41, $37, $1D, $42	; 0EAD
		.byte	$35, $36, $43, $34, $31, $84, $36, $30	; 0EB5
		.byte	$45, $2F, $30, $C6		; 0EBD
L0EC1:
		.byte	$10, $38, $38, $28, $28, $10, $38, $38	; 0EC1
		.byte	$28, $E8, $A0, $F0, $70, $50, $50, $20	; 0EC9
		.byte	$70, $70, $D8, $00, $80, $80, $80, $80	; 0ED1
		.byte	$80, $E0, $E0, $00, $00, $00, $20, $78	; 0ED9
		.byte	$70, $50, $50			; 0EE1
L0EE4:
		.byte	$08, $25, $20, $8B, $8A, $9D, $8E, $8B	; 0EE4
		.byte	$8A, $96, $96			; 0EEC
L0EEF:
		.byte	$F8, $88, $88, $88, $F8, $20, $60, $20	; 0EEF
		.byte	$20, $70, $F8, $08, $F8, $80, $F8, $F8	; 0EF7
		.byte	$08, $38, $08, $F8, $88, $88, $F8, $08	; 0EFF
		.byte	$08, $F8, $80, $F8, $08, $F8, $80, $80	; 0F07
		.byte	$F8, $88, $F8, $F8, $08, $10, $10, $10	; 0F0F
		.byte	$F8, $88, $F8, $88, $F8, $F8, $88, $F8	; 0F17
		.byte	$08, $08, $F8, $88, $F8, $88, $88, $F8	; 0F1F
		.byte	$48, $78, $48, $F8, $F8, $80, $80, $80	; 0F27
		.byte	$F8, $F8, $48, $48, $48, $F8, $F8, $80	; 0F2F
		.byte	$E0, $80, $F8, $F8, $80, $E0, $80, $80	; 0F37
		.byte	$F8, $80, $98, $88, $F8, $88, $88, $F8	; 0F3F
		.byte	$88, $88, $F8, $20, $20, $20, $F8, $F8	; 0F47
		.byte	$20, $20, $A0, $E0, $90, $A0, $C0, $A0	; 0F4F
		.byte	$90				; 0F57
L0F58:
		.byte	$00, $C8, $FF, $C8, $00, $80, $80, $80	; 0F58
		.byte	$80, $F8, $88, $D8, $A8, $88, $88, $88	; 0F60
		.byte	$C8, $A8, $98, $88, $F8, $88, $88, $88	; 0F68
		.byte	$F8, $F8, $88, $F8, $80, $80, $F8, $88	; 0F70
		.byte	$88, $90, $E8, $F8, $88, $F8, $90, $88	; 0F78
		.byte	$F8, $80, $F8, $08, $F8, $F8, $20, $20	; 0F80
		.byte	$20, $20, $88, $88, $88, $88, $F8, $88	; 0F88
		.byte	$88, $88, $50, $20, $88, $88, $A8, $D8	; 0F90
		.byte	$88, $88, $50, $20, $50, $88, $88, $88	; 0F98
		.byte	$F8, $20, $20, $F8, $10, $20, $40, $F8	; 0FA0
		.byte	$00, $00, $00, $00, $00, $F8, $08, $38	; 0FA8
		.byte	$00, $20, $00, $00, $00, $00, $40, $20	; 0FB0
		.byte	$20, $20, $00, $20, $20, $20, $F8, $20	; 0FB8
		.byte	$20, $00, $00, $F8, $00, $00	; 0FC0

; -----------------------------------------------------------------------------
; 		lr	A,KU				; 0fc5 00
; bios_draw_a01fc_wrapper
; Wrapper for BIOS routine $01FC. Used for a repeated object/sprite style draw.
; -----------------------------------------------------------------------------
bios_draw_a01fc_wrapper:
		lr	K,P				; 0FC6 08
		pi	pushk				; 0FC7 28 01 07 - bios pushk - save return address on BIOS K-stack
		jmp	$01FC				; 0FCA 29 01 FC - unconditional jump

; -----------------------------------------------------------------------------
; b_drawchar_bmp_wrapper
; Wrapper for BIOS drawchar bitmap entry. Sets r4=8 before tail-jumping into
; BIOS drawchar internals.
; -----------------------------------------------------------------------------
b_drawchar_bmp_wrapper:
		lr	K,P				; 0FCD 08
		pi	pushk				; 0FCE 28 01 07 - bios pushk - save return address on BIOS K-stack
		lis	8				; 0FD1 78
		lr	4,A				; 0FD2 54
		jmp	b_drawchar_bmp_entry	; 0FD3 29 06 8A - unconditional jump

; -----------------------------------------------------------------------------
; bios_score_prompt_wrapper
; Wrapper around BIOS score/prompt rendering helper. Initializes object bytes
; at O26/O27 before BIOS calls.
; -----------------------------------------------------------------------------
bios_score_prompt_wrapper:
		lr	K,P				; 0FD6 08
		pi	pushk				; 0FD7 28 01 07 - bios pushk - save return address on BIOS K-stack
		lisu	2				; 0FDA 62
		lisl	6				; 0FDB 6E
		li	$99				; 0FDC 20 99
		lr	I,A				; 0FDE 5D - store A and increment ISAR
		lr	S,A				; 0FDF 5C - store A in selected scratchpad register
		pi	b_score_left			; 0FE0 28 02 AC
		pi	b_score_right		; 0FE3 28 02 B5
		pi	popk				; 0FE6 28 01 1E - restore return address from BIOS K-stack
		pk					; 0FE9 0C - return via K/P after BIOS K-stack restore

; -----------------------------------------------------------------------------
; clear_screen_o37_0
; Clear-screen wrapper variant. Stores 0 in O37 before calling BIOS clearscrn.
; -----------------------------------------------------------------------------
clear_screen_o37_0:
		clr					; 0FEA 70
		br	clear_screen_common		; 0FEB 90 02 - unconditional jump

; -----------------------------------------------------------------------------
; clear_screen_o37_1
; Clear-screen wrapper variant. Stores 1 in O37 before calling BIOS clearscrn.
; -----------------------------------------------------------------------------
clear_screen_o37_1:
		lis	1				; 0FED 71

; -----------------------------------------------------------------------------
; clear_screen_common
; Common clear-screen helper. Stores O37, builds r3=$D0+r3, then calls BIOS
; clearscrn.
; -----------------------------------------------------------------------------
clear_screen_common:
		lisu	3				; 0FEE 63
		lisl	7				; 0FEF 6F
		lr	S,A				; 0FF0 5C - store A in selected scratchpad register
		lr	K,P				; 0FF1 08
		pi	pushk				; 0FF2 28 01 07 - bios pushk - save return address on BIOS K-stack
		li	$D0				; 0FF5 20 D0
		as	3				; 0FF7 C3
		lr	3,A				; 0FF8 53
		pi	clrscrn				; 0FF9 28 00 D0 - bios clear screen routine
		pi	popk				; 0FFC 28 01 1E - restore return address from BIOS K-stack
		pk					; 0FFF 0C - return via K/P after BIOS K-stack restore


		IF	0
; Smart data report
; =================
; Mode: enabled by -s or /s
; Memory range: $0800-$0FFF
; Code bytes: 1070
; Data bytes: 978
;
; DCI data roots from reachable code:
;   $0BC6 from $0809
;   $0BCF from $0816
;   $0BD8 from $0845
;   $0BE6 from $086B
;   $0C98 from $0878
;   $0CC8 from $0899
;   $0CC8 from $08A8
;   $0CC8 from $08B7
;   $0CC8 from $08C3
;   $0CD0 from $08C9
;   $0C00 from $08FD
;   $0C1B from $0907
;   $0BF9 from $0914
;   $0EEF from $0BB0
;   $0E9D from $0B57
;   $0EC1 from $0B63
;   $0EE4 from $0B6D
;   $0C76 from $099D
;   $0C34 from $09B3
;   $0C67 from $09B7
;   $0C5C from $09CA
;   $0CDE from $09DA
;   $0CF9 from $09E4
;   $0D08 from $09EE
;   $0D14 from $0A18
;   $0D44 from $0A32
;   $0D56 from $0A43
;   $0D61 from $0A53
;   $0D79 from $0A6F
;   $0D8B from $0A7B
;   $0D99 from $0A85
;   $0DA8 from $0A89
;   $0D93 from $0A9C
;   $0DB1 from $0AA7
;   $0F58 from $0AB3
;   $0DC3 from $0AD8
;   $0DC9 from $0AE0
;   $0DCE from $0AF5
;   $0DCE from $0B01
;   $0DB7 from $0B0A
;   $0DD6 from $0B15
;   $0E26 from $0B2A
;   $0E26 from $0B33
;   $0E96 from $0B4C
;
; Data intervals emitted as .byte:
;   $0BF4-$0FC5 (978 bytes)
		ENDIF