Difference between revisions of "Disassembly:Democart 2"

From veswiki
Jump to: navigation, search
 
Line 6: Line 6:
 
; Annotated and formatted Democart 2 disassembly.
 
; Annotated and formatted Democart 2 disassembly.
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
 
reset equ $0000 ; BIOS reset vector
 
delay equ $008F ; BIOS delay routine
 
clearscrn equ $00D0 ; BIOS clear screen routine
 
pushk equ $0107 ; BIOS K-stack push
 
popk equ $011E ; BIOS K-stack pop
 
drawchar equ $0679 ; BIOS draw character entry
 
drawchar_entry equ $067C ; BIOS draw character internal entry
 
 
 
; Auto labels for branch targets inside mixed code/data bytes.
 
L0B6E equ $0B6E
 
L0B7B equ $0B7B
 
L0B80 equ $0B80
 
L0B85 equ $0B85
 
L0B8B equ $0B8B
 
L0BB1 equ $0BB1
 
L0C1D equ $0C1D
 
L0C1F equ $0C1F
 
L0C64 equ $0C64
 
L0CD7 equ $0CD7
 
L0D04 equ $0D04
 
L0EE0 equ $0EE0
 
L0EF5 equ $0EF5
 
L0F58 equ $0F58
 
L0F7A equ $0F7A
 
 
 
 
 
processor f8
 
processor f8
 
org $0800
 
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 signature/start vector. First byte is $55 for a valid Channel F
 
; cartridge.
 
; -----------------------------------------------------------------------------
 
 
cartridge_start:
 
cartridge_start:
lr 5,A ; 0800 55
+
.byte $55, $2B
nop ; 0801 2b
 
  
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
; cartridge_entry
 
 
; Main Democart 2 script. Shows multiple demo screens, uses BIOS text and
 
; Main Democart 2 script. Shows multiple demo screens, uses BIOS text and
 
; graphics routines, then returns to BIOS reset.
 
; graphics routines, then returns to BIOS reset.
Line 55: Line 31:
 
cartridge_entry:
 
cartridge_entry:
 
lisu 3 ; 0802 63
 
lisu 3 ; 0802 63
lisl 7 ; 0803 6f
+
lisl 7 ; 0803 6F
 
lis 1 ; 0804 71
 
lis 1 ; 0804 71
lr S,A ; 0805 5c - store A in selected scratchpad register
+
lr S,A ; 0805 5C - store A in selected scratchpad register
 
pi $0135 ; 0806 28 01 35
 
pi $0135 ; 0806 28 01 35
dci L0BC6 ; 0809 2a 0b c6 - load DC with data/code pointer
+
dci L0BC6 ; 0809 2A 0B C6 - load DC with data/code pointer
pi draw_compressed_text ; 080c 28 0b a3
+
pi draw_stream ; 080C 28 0B A3
lisu 3 ; 080f 63
+
lisu 3 ; 080F 63
lisl 7 ; 0810 6f
+
lisl 7 ; 0810 6F
 
lis 3 ; 0811 73
 
lis 3 ; 0811 73
lr S,A ; 0812 5c - store A in selected scratchpad register
+
lr S,A ; 0812 5C - store A in selected scratchpad register
 
pi $0135 ; 0813 28 01 35
 
pi $0135 ; 0813 28 01 35
dci L0BCF ; 0816 2a 0b cf - load DC with data/code pointer
+
dci L0BCF ; 0816 2A 0B CF - load DC with data/code pointer
pi draw_compressed_text ; 0819 28 0b a3
+
pi draw_stream ; 0819 28 0B A3
lis 6 ; 081c 76
+
lis 6 ; 081C 76
lr 3,A ; 081d 53
+
lr 3,A ; 081D 53
pi clear_screen_o37_0 ; 081e 28 0f ea
+
pi clear_screen_o37_0 ; 081E 28 0F EA
 
li $26 ; 0821 20 26
 
li $26 ; 0821 20 26
 
lr 1,A ; 0823 51
 
lr 1,A ; 0823 51
Line 77: Line 53:
 
li $28 ; 0827 20 28
 
li $28 ; 0827 20 28
 
lr 3,A ; 0829 53
 
lr 3,A ; 0829 53
pi bios_drawchar_0215_wrapper ; 082a 28 0b 76
+
pi draw_entity_wrapper ; 082A 28 0B 76
li $26 ; 082d 20 26
+
li $26 ; 082D 20 26
lr 1,A ; 082f 51
+
lr 1,A ; 082F 51
 
li $21 ; 0830 20 21
 
li $21 ; 0830 20 21
 
lr 2,A ; 0832 52
 
lr 2,A ; 0832 52
 
li $28 ; 0833 20 28
 
li $28 ; 0833 20 28
 
lr 3,A ; 0835 53
 
lr 3,A ; 0835 53
pi bios_drawchar_0215_wrapper ; 0836 28 0b 76
+
pi draw_entity_wrapper ; 0836 28 0B 76
 
li $33 ; 0839 20 33
 
li $33 ; 0839 20 33
lr 1,A ; 083b 51
+
lr 1,A ; 083B 51
pi draw_three_prompt_markers ; 083c 28 0b 7d
+
pi draw_three_markers ; 083C 28 0B 7D
li $41 ; 083f 20 41
+
li $41 ; 083F 20 41
 
lr 1,A ; 0841 51
 
lr 1,A ; 0841 51
pi draw_three_prompt_markers ; 0842 28 0b 7d
+
pi draw_three_markers ; 0842 28 0B 7D
dci L0BD8 ; 0845 2a 0b d8 - load DC with data/code pointer
+
dci L0BD8 ; 0845 2A 0B D8 - load DC with data/code pointer
pi draw_compressed_text ; 0848 28 0b a3
+
pi draw_stream ; 0848 28 0B A3
clr ; 084b 70
+
clr ; 084B 70
lr 3,A ; 084c 53
+
lr 3,A ; 084C 53
pi clear_screen_o37_1 ; 084d 28 0f ed
+
pi clear_screen_o37_1 ; 084D 28 0F ED
 
li $14 ; 0850 20 14
 
li $14 ; 0850 20 14
 
lr 1,A ; 0852 51
 
lr 1,A ; 0852 51
 
lis 6 ; 0853 76
 
lis 6 ; 0853 76
 
lr 2,A ; 0854 52
 
lr 2,A ; 0854 52
pi bios_player_draw ; 0855 28 02 0e
+
pi $020E ; 0855 28 02 0E
 
li $14 ; 0858 20 14
 
li $14 ; 0858 20 14
lr 1,A ; 085a 51
+
lr 1,A ; 085A 51
li $2E ; 085b 20 2e
+
li $2E ; 085B 20 2E
lr 2,A ; 085d 52
+
lr 2,A ; 085D 52
pi bios_player_draw ; 085e 28 02 0e
+
pi $020E ; 085E 28 02 0E
 
li $12 ; 0861 20 12
 
li $12 ; 0861 20 12
 
lr 1,A ; 0863 51
 
lr 1,A ; 0863 51
Line 112: Line 88:
 
lr 0,A ; 0867 50
 
lr 0,A ; 0867 50
 
pi drawchar ; 0868 28 06 79 - BIOS draw character routine
 
pi drawchar ; 0868 28 06 79 - BIOS draw character routine
dci L0BE6 ; 086b 2a 0b e6 - load DC with data/code pointer
+
dci L0BE6 ; 086B 2A 0B E6 - load DC with data/code pointer
pi draw_compressed_text ; 086e 28 0b a3
+
pi draw_stream ; 086E 28 0B A3
 
lis 6 ; 0871 76
 
lis 6 ; 0871 76
 
lr 3,A ; 0872 53
 
lr 3,A ; 0872 53
pi clear_screen_o37_0 ; 0873 28 0f ea
+
pi clear_screen_o37_0 ; 0873 28 0F EA
 
lis 6 ; 0876 76
 
lis 6 ; 0876 76
lr HU,A ; 0877 5a
+
lr $A,A ; 0877 5A
dci L0C98 ; 0878 2a 0c 98 - load DC with data/code pointer
+
dci L0C98 ; 0878 2A 0C 98 - load DC with data/code pointer
li $20 ; 087b 20 20
+
li $20 ; 087B 20 20
lr 1,A ; 087d 51
+
lr 1,A ; 087D 51
lr 2,A ; 087e 52
+
lr 2,A ; 087E 52
 
L087F:
 
L087F:
li $80 ; 087f 20 80
+
li $80 ; 087F 20 80
 
lr 0,A ; 0881 50
 
lr 0,A ; 0881 50
pi bios_drawchar_bitmap_wrapper ; 0882 28 0f cd
+
pi b_drawchar_bmp_wrapper ; 0882 28 0F CD
 
lis 2 ; 0885 72
 
lis 2 ; 0885 72
as 1 ; 0886 c1
+
as 1 ; 0886 C1
 
lr 1,A ; 0887 51
 
lr 1,A ; 0887 51
ds HU ; 0888 3a
+
ds $A ; 0888 3A
bf 4,L087F ; 0889 94 f5
+
bnz L087F ; 0889 94 F5
pi short_delay ; 088b 28 0b 96
+
pi short_delay ; 088B 28 0B 96
lis 6 ; 088e 76
+
lis 6 ; 088E 76
lr 3,A ; 088f 53
+
lr 3,A ; 088F 53
pi clear_screen_o37_0 ; 0890 28 0f ea
+
pi clear_screen_o37_0 ; 0890 28 0F EA
 
li $18 ; 0893 20 18
 
li $18 ; 0893 20 18
 
lr 2,A ; 0895 52
 
lr 2,A ; 0895 52
 
li $30 ; 0896 20 30
 
li $30 ; 0896 20 30
 
lr 1,A ; 0898 51
 
lr 1,A ; 0898 51
dci L0CC8 ; 0899 2a 0c c8 - load DC with data/code pointer
+
dci L0CC8 ; 0899 2A 0C C8 - load DC with data/code pointer
li $80 ; 089c 20 80
+
li $80 ; 089C 20 80
lr 0,A ; 089e 50
+
lr 0,A ; 089E 50
pi bios_drawchar_bitmap_wrapper ; 089f 28 0f cd
+
pi b_drawchar_bmp_wrapper ; 089F 28 0F CD
lis 2 ; 08a2 72
+
lis 2 ; 08A2 72
as 1 ; 08a3 c1
+
as 1 ; 08A3 C1
lr 1,A ; 08a4 51
+
lr 1,A ; 08A4 51
li $80 ; 08a5 20 80
+
li $80 ; 08A5 20 80
lr 0,A ; 08a7 50
+
lr 0,A ; 08A7 50
dci L0CC8 ; 08a8 2a 0c c8 - load DC with data/code pointer
+
dci L0CC8 ; 08A8 2A 0C C8 - load DC with data/code pointer
pi bios_drawchar_bitmap_wrapper ; 08ab 28 0f cd
+
pi b_drawchar_bmp_wrapper ; 08AB 28 0F CD
li $30 ; 08ae 20 30
+
li $30 ; 08AE 20 30
lr 1,A ; 08b0 51
+
lr 1,A ; 08B0 51
li $20 ; 08b1 20 20
+
li $20 ; 08B1 20 20
lr 2,A ; 08b3 52
+
lr 2,A ; 08B3 52
li $80 ; 08b4 20 80
+
li $80 ; 08B4 20 80
lr 0,A ; 08b6 50
+
lr 0,A ; 08B6 50
dci L0CC8 ; 08b7 2a 0c c8 - load DC with data/code pointer
+
dci L0CC8 ; 08B7 2A 0C C8 - load DC with data/code pointer
pi bios_drawchar_bitmap_wrapper ; 08ba 28 0f cd
+
pi b_drawchar_bmp_wrapper ; 08BA 28 0F CD
lis 2 ; 08bd 72
+
lis 2 ; 08BD 72
as 1 ; 08be c1
+
as 1 ; 08BE C1
lr 1,A ; 08bf 51
+
lr 1,A ; 08BF 51
li $80 ; 08c0 20 80
+
li $80 ; 08C0 20 80
lr 0,A ; 08c2 50
+
lr 0,A ; 08C2 50
dci L0CC8 ; 08c3 2a 0c c8 - load DC with data/code pointer
+
dci L0CC8 ; 08C3 2A 0C C8 - load DC with data/code pointer
pi bios_drawchar_bitmap_wrapper ; 08c6 28 0f cd
+
pi b_drawchar_bmp_wrapper ; 08C6 28 0F CD
dci L0CD0 ; 08c9 2a 0c d0 - load DC with data/code pointer
+
dci L0CD0 ; 08C9 2A 0C D0 - load DC with data/code pointer
pi draw_compressed_text ; 08cc 28 0b a3
+
pi draw_stream ; 08CC 28 0B A3
lis 6 ; 08cf 76
+
lis 6 ; 08CF 76
lr 3,A ; 08d0 53
+
lr 3,A ; 08D0 53
pi clear_screen_o37_1 ; 08d1 28 0f ed
+
pi clear_screen_o37_1 ; 08D1 28 0F ED
li $13 ; 08d4 20 13
+
li $13 ; 08D4 20 13
lr 1,A ; 08d6 51
+
lr 1,A ; 08D6 51
lis 6 ; 08d7 76
+
lis 6 ; 08D7 76
lr 2,A ; 08d8 52
+
lr 2,A ; 08D8 52
pi bios_player_draw ; 08d9 28 02 0e
+
pi $020E ; 08D9 28 02 0E
li $13 ; 08dc 20 13
+
li $13 ; 08DC 20 13
lr 1,A ; 08de 51
+
lr 1,A ; 08DE 51
li $2F ; 08df 20 2f
+
li $2F ; 08DF 20 2F
lr 2,A ; 08e1 52
+
lr 2,A ; 08E1 52
pi bios_player_draw ; 08e2 28 02 0e
+
pi $020E ; 08E2 28 02 0E
li $11 ; 08e5 20 11
+
li $11 ; 08E5 20 11
lr 1,A ; 08e7 51
+
lr 1,A ; 08E7 51
lis 9 ; 08e8 79
+
lis 9 ; 08E8 79
lr 2,A ; 08e9 52
+
lr 2,A ; 08E9 52
li $24 ; 08ea 20 24
+
li $24 ; 08EA 20 24
lr 3,A ; 08ec 53
+
lr 3,A ; 08EC 53
pi bios_draw_a01fc_wrapper ; 08ed 28 0f c6
+
pi bios_draw_a01fc_wrapper ; 08ED 28 0F C6
li $5A ; 08f0 20 5a
+
li $5A ; 08F0 20 5A
lr 1,A ; 08f2 51
+
lr 1,A ; 08F2 51
lis 9 ; 08f3 79
+
lis 9 ; 08F3 79
lr 2,A ; 08f4 52
+
lr 2,A ; 08F4 52
li $24 ; 08f5 20 24
+
li $24 ; 08F5 20 24
lr 3,A ; 08f7 53
+
lr 3,A ; 08F7 53
pi bios_draw_a01fc_wrapper ; 08f8 28 0f c6
+
pi bios_draw_a01fc_wrapper ; 08F8 28 0F C6
lis 9 ; 08fb 79
+
lis 9 ; 08FB 79
lr 4,A ; 08fc 54
+
lr 4,A ; 08FC 54
dci L0C00 ; 08fd 2a 0c 00 - load DC with data/code pointer
+
dci L0C00 ; 08FD 2A 0C 00 - load DC with data/code pointer
 
L0900:
 
L0900:
 
lm ; 0900 16 - load byte from DC and increment DC
 
lm ; 0900 16 - load byte from DC and increment DC
Line 205: Line 181:
 
lm ; 0904 16 - load byte from DC and increment DC
 
lm ; 0904 16 - load byte from DC and increment DC
 
lr 0,A ; 0905 50
 
lr 0,A ; 0905 50
xdc ; 0906 2c - exchange DC and H pointers
+
xdc ; 0906 2C - exchange DC and H pointers
dci $0C1B ; 0907 2a 0c 1b
+
dci $0C1B ; 0907 2A 0C 1B - load DC with data/code pointer
pi drawchar_entry ; 090a 28 06 7c
+
pi drawchar_entry ; 090A 28 06 7C
xdc ; 090d 2c - exchange DC and H pointers
+
xdc ; 090D 2C - exchange DC and H pointers
ds 4 ; 090e 34
+
ds 4 ; 090E 34
bf 4,L0900 ; 090f 94 f0
+
bnz L0900 ; 090F 94 F0
pi bios_score_prompt_wrapper ; 0911 28 0f d6
+
pi bios_score_prompt_wrapper ; 0911 28 0F D6
dci L0BF9 ; 0914 2a 0b f9 - load DC with data/code pointer
+
dci L0BF9 ; 0914 2A 0B F9 - load DC with data/code pointer
pi draw_compressed_text ; 0917 28 0b a3
+
pi draw_stream ; 0917 28 0B A3
lis 6 ; 091a 76
+
lis 6 ; 091A 76
lr 3,A ; 091b 53
+
lr 3,A ; 091B 53
pi clear_screen_o37_0 ; 091c 28 0f ea
+
pi clear_screen_o37_0 ; 091C 28 0F EA
clr ; 091f 70
+
clr ; 091F 70
 
lr 2,A ; 0920 52
 
lr 2,A ; 0920 52
 
lr 0,A ; 0921 50
 
lr 0,A ; 0921 50
lis $D ; 0922 7d
+
lis $D ; 0922 7D
lr HU,A ; 0923 5a
+
lr $A,A ; 0923 5A
 
L0924:
 
L0924:
li $7E ; 0924 20 7e
+
li $7E ; 0924 20 7E
 
lr 1,A ; 0926 51
 
lr 1,A ; 0926 51
 
pi drawchar ; 0927 28 06 79 - BIOS draw character routine
 
pi drawchar ; 0927 28 06 79 - BIOS draw character routine
lr A,2 ; 092a 42
+
lr A,2 ; 092A 42
inc ; 092b 1f
+
inc ; 092B 1F
lr 2,A ; 092c 52
+
lr 2,A ; 092C 52
ds HU ; 092d 3a
+
ds $A ; 092D 3A
bf 4,L0924 ; 092e 94 f5
+
bnz L0924 ; 092E 94 F5
 
L0930:
 
L0930:
 
lis 4 ; 0930 74
 
lis 4 ; 0930 74
as 2 ; 0931 c2
+
as 2 ; 0931 C2
 
lr 2,A ; 0932 52
 
lr 2,A ; 0932 52
 
lis 3 ; 0933 73
 
lis 3 ; 0933 73
 
lr 1,A ; 0934 51
 
lr 1,A ; 0934 51
 
L0935:
 
L0935:
li $C0 ; 0935 20 c0
+
li $C0 ; 0935 20 C0
 
lr 0,A ; 0937 50
 
lr 0,A ; 0937 50
dci $4000 ; 0938 2a 40 00
+
dci $4000 ; 0938 2A 40 00 - load DC with data/code pointer
 
; Points data counter to unused area.
 
; Points data counter to unused area.
; Pullups on data bus holds D7-D3 high in the real cartridge
+
; Hardware holds the proper value.
; and turns "Black Jack" table green.
 
; Replace with $0d8b if it's going to work 100% on Multi-Cart and emulation.
 
  
pi drawchar_entry ; 093b 28 06 7c
+
pi drawchar_entry ; 093B 28 06 7C
ds 1 ; 093e 31
+
ds 1 ; 093E 31
lr A,1 ; 093f 41
+
lr A,1 ; 093F 41
 
ci $77 ; 0940 25 77
 
ci $77 ; 0940 25 77
bt 2,L0935 ; 0942 82 f2
+
bc L0935 ; 0942 82 F2
 
lr A,2 ; 0944 42
 
lr A,2 ; 0944 42
 
ci $28 ; 0945 25 28
 
ci $28 ; 0945 25 28
bt 2,L0930 ; 0947 82 e8
+
bc L0930 ; 0947 82 E8
 
lis 3 ; 0949 73
 
lis 3 ; 0949 73
lr HU,A ; 094a 5a
+
lr $A,A ; 094A 5A
li $26 ; 094b 20 26
+
li $26 ; 094B 20 26
lr 2,A ; 094d 52
+
lr 2,A ; 094D 52
 
L094E:
 
L094E:
lis 8 ; 094e 78
+
lis 8 ; 094E 78
lr 1,A ; 094f 51
+
lr 1,A ; 094F 51
 
clr ; 0950 70
 
clr ; 0950 70
 
lr 0,A ; 0951 50
 
lr 0,A ; 0951 50
Line 266: Line 240:
 
pi drawchar ; 0952 28 06 79 - BIOS draw character routine
 
pi drawchar ; 0952 28 06 79 - BIOS draw character routine
 
lis 2 ; 0955 72
 
lis 2 ; 0955 72
as 2 ; 0956 c2
+
as 2 ; 0956 C2
 
lr 2,A ; 0957 52
 
lr 2,A ; 0957 52
 
ds 1 ; 0958 31
 
ds 1 ; 0958 31
ds HU ; 0959 3a
+
ds $A ; 0959 3A
bf 4,L0952 ; 095a 94 f7
+
bnz L0952 ; 095A 94 F7
pi drawchar ; 095c 28 06 79 - BIOS draw character routine
+
pi drawchar ; 095C 28 06 79 - BIOS draw character routine
lr A,2 ; 095f 42
+
lr A,2 ; 095F 42
inc ; 0960 1f
+
inc ; 0960 1F
 
lr 2,A ; 0961 52
 
lr 2,A ; 0961 52
 
ds 1 ; 0962 31
 
ds 1 ; 0962 31
Line 279: Line 253:
 
lr A,2 ; 0966 42
 
lr A,2 ; 0966 42
 
ci $31 ; 0967 25 31
 
ci $31 ; 0967 25 31
bf 2,L0973 ; 0969 92 09
+
bnc L0973 ; 0969 92 09
li $2B ; 096b 20 2b
+
li $2B ; 096B 20 2B
lr 2,A ; 096d 52
+
lr 2,A ; 096D 52
lis 3 ; 096e 73
+
lis 3 ; 096E 73
lr HU,A ; 096f 5a
+
lr $A,A ; 096F 5A
jmp L094E ; 0970 29 09 4e - unconditional jump
+
jmp L094E ; 0970 29 09 4E - unconditional jump
 
 
  
 
L0973:
 
L0973:
nop ; 0973 2b
+
nop ; 0973 2B
 
clr ; 0974 70
 
clr ; 0974 70
 
lr 0,A ; 0975 50
 
lr 0,A ; 0975 50
li $2D ; 0976 20 2d
+
li $2D ; 0976 20 2D
 
lr 2,A ; 0978 52
 
lr 2,A ; 0978 52
 
L0979:
 
L0979:
 
li $53 ; 0979 20 53
 
li $53 ; 0979 20 53
lr 1,A ; 097b 51
+
lr 1,A ; 097B 51
pi drawchar ; 097c 28 06 79 - BIOS draw character routine
+
pi drawchar ; 097C 28 06 79 - BIOS draw character routine
ds 1 ; 097f 31
+
ds 1 ; 097F 31
 
ds 2 ; 0980 32
 
ds 2 ; 0980 32
 
pi drawchar ; 0981 28 06 79 - BIOS draw character routine
 
pi drawchar ; 0981 28 06 79 - BIOS draw character routine
 
lis 3 ; 0984 73
 
lis 3 ; 0984 73
lr HU,A ; 0985 5a
+
lr $A,A ; 0985 5A
 
L0986:
 
L0986:
 
ds 2 ; 0986 32
 
ds 2 ; 0986 32
Line 307: Line 280:
 
ds 1 ; 0988 31
 
ds 1 ; 0988 31
 
pi drawchar ; 0989 28 06 79 - BIOS draw character routine
 
pi drawchar ; 0989 28 06 79 - BIOS draw character routine
ds HU ; 098c 3a
+
ds $A ; 098C 3A
bf 4,L0986 ; 098d 94 f8
+
bnz L0986 ; 098D 94 F8
lr A,2 ; 098f 42
+
lr A,2 ; 098F 42
 
ci $27 ; 0990 25 27
 
ci $27 ; 0990 25 27
bf 2,L099A ; 0992 92 07
+
bnc L099A ; 0992 92 07
 
li $30 ; 0994 20 30
 
li $30 ; 0994 20 30
 
lr 2,A ; 0996 52
 
lr 2,A ; 0996 52
 
jmp L0979 ; 0997 29 09 79 - unconditional jump
 
jmp L0979 ; 0997 29 09 79 - unconditional jump
 
  
 
L099A:
 
L099A:
pi bios_score_prompt_wrapper ; 099a 28 0f d6
+
pi bios_score_prompt_wrapper ; 099A 28 0F D6
dci L0C76 ; 099d 2a 0c 76 - load DC with data/code pointer
+
dci L0C76 ; 099D 2A 0C 76 - load DC with data/code pointer
li $69 ; 09a0 20 69
+
li $69 ; 09A0 20 69
lr HU,A ; 09a2 5a
+
lr $A,A ; 09A2 5A
pi draw_compressed_text ; 09a3 28 0b a3
+
pi draw_stream ; 09A3 28 0B A3
pi draw_compressed_text ; 09a6 28 0b a3
+
pi draw_stream ; 09A6 28 0B A3
clr ; 09a9 70
+
clr ; 09A9 70
lr HU,A ; 09aa 5a
+
lr $A,A ; 09AA 5A
pi draw_compressed_text ; 09ab 28 0b a3
+
pi draw_stream ; 09AB 28 0B A3
lis 3 ; 09ae 73
+
lis 3 ; 09AE 73
lr 3,A ; 09af 53
+
lr 3,A ; 09AF 53
pi clear_screen_o37_0 ; 09b0 28 0f ea
+
pi clear_screen_o37_0 ; 09B0 28 0F EA
dci L0C34 ; 09b3 2a 0c 34 - load DC with data/code pointer
+
dci L0C34 ; 09B3 2A 0C 34 - load DC with data/code pointer
xdc ; 09b6 2c - exchange DC and H pointers
+
xdc ; 09B6 2C - exchange DC and H pointers
dci L0C67 ; 09b7 2a 0c 67 - load DC with data/code pointer
+
dci L0C67 ; 09B7 2A 0C 67 - load DC with data/code pointer
lis 5 ; 09ba 75
+
lis 5 ; 09BA 75
lr HU,A ; 09bb 5a
+
lr $A,A ; 09BB 5A
 
L09BC:
 
L09BC:
lm ; 09bc 16 - load byte from DC and increment DC
+
lm ; 09BC 16 - load byte from DC and increment DC
lr 1,A ; 09bd 51
+
lr 1,A ; 09BD 51
lm ; 09be 16 - load byte from DC and increment DC
+
lm ; 09BE 16 - load byte from DC and increment DC
lr 2,A ; 09bf 52
+
lr 2,A ; 09BF 52
lm ; 09c0 16 - load byte from DC and increment DC
+
lm ; 09C0 16 - load byte from DC and increment DC
lr 0,A ; 09c1 50
+
lr 0,A ; 09C1 50
xdc ; 09c2 2c - exchange DC and H pointers
+
xdc ; 09C2 2C - exchange DC and H pointers
pi bios_drawchar_bitmap_wrapper ; 09c3 28 0f cd
+
pi b_drawchar_bmp_wrapper ; 09C3 28 0F CD
xdc ; 09c6 2c - exchange DC and H pointers
+
xdc ; 09C6 2C - exchange DC and H pointers
ds HU ; 09c7 3a
+
ds $A ; 09C7 3A
bf 4,L09BC ; 09c8 94 f3
+
bnz L09BC ; 09C8 94 F3
dci L0C5C ; 09ca 2a 0c 5c - load DC with data/code pointer
+
dci L0C5C ; 09CA 2A 0C 5C - load DC with data/code pointer
pi draw_compressed_text ; 09cd 28 0b a3
+
pi draw_stream ; 09CD 28 0B A3
lis 3 ; 09d0 73
+
lis 3 ; 09D0 73
lr 3,A ; 09d1 53
+
lr 3,A ; 09D1 53
pi clear_screen_o37_1 ; 09d2 28 0f ed
+
pi clear_screen_o37_1 ; 09D2 28 0F ED
pi bios_score_prompt_wrapper ; 09d5 28 0f d6
+
pi bios_score_prompt_wrapper ; 09D5 28 0F D6
lis 9 ; 09d8 79
+
lis 9 ; 09D8 79
lr HU,A ; 09d9 5a
+
lr $A,A ; 09D9 5A
dci L0CDE ; 09da 2a 0c de - load DC with data/code pointer
+
dci L0CDE ; 09DA 2A 0C DE - load DC with data/code pointer
 
L09DD:
 
L09DD:
lm ; 09dd 16 - load byte from DC and increment DC
+
lm ; 09DD 16 - load byte from DC and increment DC
lr 1,A ; 09de 51
+
lr 1,A ; 09DE 51
lm ; 09df 16 - load byte from DC and increment DC
+
lm ; 09DF 16 - load byte from DC and increment DC
lr 2,A ; 09e0 52
+
lr 2,A ; 09E0 52
lm ; 09e1 16 - load byte from DC and increment DC
+
lm ; 09E1 16 - load byte from DC and increment DC
lr 0,A ; 09e2 50
+
lr 0,A ; 09E2 50
xdc ; 09e3 2c - exchange DC and H pointers
+
xdc ; 09E3 2C - exchange DC and H pointers
dci $0CF9 ; 09e4 2a 0c f9
+
dci $0CF9 ; 09E4 2A 0C F9 - load DC with data/code pointer
pi drawchar_entry ; 09e7 28 06 7c
+
pi drawchar_entry ; 09E7 28 06 7C
xdc ; 09ea 2c - exchange DC and H pointers
+
xdc ; 09EA 2C - exchange DC and H pointers
ds HU ; 09eb 3a
+
ds $A ; 09EB 3A
bf 4,L09DD ; 09ec 94 f0
+
bnz L09DD ; 09EC 94 F0
dci $0D08 ; 09ee 2a 0d 08
+
dci $0D08 ; 09EE 2A 0D 08 - load DC with data/code pointer
pi draw_compressed_text ; 09f1 28 0b a3
+
pi draw_stream ; 09F1 28 0B A3
lis 3 ; 09f4 73
+
lis 3 ; 09F4 73
lr 3,A ; 09f5 53
+
lr 3,A ; 09F5 53
pi clear_screen_o37_1 ; 09f6 28 0f ed
+
pi clear_screen_o37_1 ; 09F6 28 0F ED
pi bios_score_prompt_wrapper ; 09f9 28 0f d6
+
pi bios_score_prompt_wrapper ; 09F9 28 0F D6
li $10 ; 09fc 20 10
+
li $10 ; 09FC 20 10
lr 1,A ; 09fe 51
+
lr 1,A ; 09FE 51
li $1A ; 09ff 20 1a
+
li $1A ; 09FF 20 1A
lr 2,A ; 0a01 52
+
lr 2,A ; 0A01 52
li $10 ; 0a02 20 10
+
li $10 ; 0A02 20 10
lr 3,A ; 0a04 53
+
lr 3,A ; 0A04 53
pi bios_drawchar_0215_wrapper ; 0a05 28 0b 76
+
pi draw_entity_wrapper ; 0A05 28 0B 76
lis 2 ; 0a08 72
+
lis 2 ; 0A08 72
lr HU,A ; 0a09 5a
+
lr $A,A ; 0A09 5A
 
L0A0A:
 
L0A0A:
lis $F ; 0a0a 7f
+
lis $F ; 0A0A 7F
lr 3,A ; 0a0b 53
+
lr 3,A ; 0A0B 53
lis $F ; 0a0c 7f
+
lis $F ; 0A0C 7F
as 1 ; 0a0d c1
+
as 1 ; 0A0D C1
lr 1,A ; 0a0e 51
+
lr 1,A ; 0A0E 51
pi bios_drawchar_0215_wrapper ; 0a0f 28 0b 76
+
pi draw_entity_wrapper ; 0A0F 28 0B 76
ds HU ; 0a12 3a
+
ds $A ; 0A12 3A
bf 4,L0A0A ; 0a13 94 f6
+
bnz L0A0A ; 0A13 94 F6
li $69 ; 0a15 20 69
+
li $69 ; 0A15 20 69
lr HU,A ; 0a17 5a
+
lr $A,A ; 0A17 5A
dci L0D14 ; 0a18 2a 0d 14 - load DC with data/code pointer
+
dci L0D14 ; 0A18 2A 0D 14 - load DC with data/code pointer
pi draw_compressed_text ; 0a1b 28 0b a3
+
pi draw_stream ; 0A1B 28 0B A3
pi draw_compressed_text ; 0a1e 28 0b a3
+
pi draw_stream ; 0A1E 28 0B A3
pi draw_compressed_text ; 0a21 28 0b a3
+
pi draw_stream ; 0A21 28 0B A3
li $30 ; 0a24 20 30
+
li $30 ; 0A24 20 30
lr 1,A ; 0a26 51
+
lr 1,A ; 0A26 51
li $28 ; 0a27 20 28
+
li $28 ; 0A27 20 28
lr 2,A ; 0a29 52
+
lr 2,A ; 0A29 52
li $10 ; 0a2a 20 10
+
li $10 ; 0A2A 20 10
lr 3,A ; 0a2c 53
+
lr 3,A ; 0A2C 53
pi bios_drawchar_0215_wrapper ; 0a2d 28 0b 76
+
pi draw_entity_wrapper ; 0A2D 28 0B 76
lis 6 ; 0a30 76
+
lis 6 ; 0A30 76
lr HU,A ; 0a31 5a
+
lr $A,A ; 0A31 5A
dci L0D44 ; 0a32 2a 0d 44 - load DC with data/code pointer
+
dci L0D44 ; 0A32 2A 0D 44 - load DC with data/code pointer
 
L0A35:
 
L0A35:
lm ; 0a35 16 - load byte from DC and increment DC
+
lm ; 0A35 16 - load byte from DC and increment DC
lr 1,A ; 0a36 51
+
lr 1,A ; 0A36 51
lm ; 0a37 16 - load byte from DC and increment DC
+
lm ; 0A37 16 - load byte from DC and increment DC
lr 2,A ; 0a38 52
+
lr 2,A ; 0A38 52
lm ; 0a39 16 - load byte from DC and increment DC
+
lm ; 0A39 16 - load byte from DC and increment DC
lr 0,A ; 0a3a 50
+
lr 0,A ; 0A3A 50
xdc ; 0a3b 2c - exchange DC and H pointers
+
xdc ; 0A3B 2C - exchange DC and H pointers
pi drawchar ; 0a3c 28 06 79 - BIOS draw character routine
+
pi drawchar ; 0A3C 28 06 79 - BIOS draw character routine
xdc ; 0a3f 2c - exchange DC and H pointers
+
xdc ; 0A3F 2C - exchange DC and H pointers
ds HU ; 0a40 3a
+
ds $A ; 0A40 3A
bf 4,L0A35 ; 0a41 94 f3
+
bnz L0A35 ; 0A41 94 F3
dci L0D56 ; 0a43 2a 0d 56 - load DC with data/code pointer
+
dci L0D56 ; 0A43 2A 0D 56 - load DC with data/code pointer
clr ; 0a46 70
+
clr ; 0A46 70
lr HU,A ; 0a47 5a
+
lr $A,A ; 0A47 5A
pi draw_compressed_text ; 0a48 28 0b a3
+
pi draw_stream ; 0A48 28 0B A3
lis 6 ; 0a4b 76
+
lis 6 ; 0A4B 76
lr 3,A ; 0a4c 53
+
lr 3,A ; 0A4C 53
pi clear_screen_o37_1 ; 0a4d 28 0f ed
+
pi clear_screen_o37_1 ; 0A4D 28 0F ED
pi bios_score_prompt_wrapper ; 0a50 28 0f d6
+
pi bios_score_prompt_wrapper ; 0A50 28 0F D6
dci L0D61 ; 0a53 2a 0d 61 - load DC with data/code pointer
+
dci L0D61 ; 0A53 2A 0D 61 - load DC with data/code pointer
li $69 ; 0a56 20 69
+
li $69 ; 0A56 20 69
lr HU,A ; 0a58 5a
+
lr $A,A ; 0A58 5A
pi draw_compressed_text ; 0a59 28 0b a3
+
pi draw_stream ; 0A59 28 0B A3
pi draw_compressed_text ; 0a5c 28 0b a3
+
pi draw_stream ; 0A5C 28 0B A3
pi draw_compressed_text ; 0a5f 28 0b a3
+
pi draw_stream ; 0A5F 28 0B A3
clr ; 0a62 70
+
clr ; 0A62 70
lr HU,A ; 0a63 5a
+
lr $A,A ; 0A63 5A
pi draw_compressed_text ; 0a64 28 0b a3
+
pi draw_stream ; 0A64 28 0B A3
lis 6 ; 0a67 76
+
lis 6 ; 0A67 76
lr 3,A ; 0a68 53
+
lr 3,A ; 0A68 53
pi clear_screen_o37_1 ; 0a69 28 0f ed
+
pi clear_screen_o37_1 ; 0A69 28 0F ED
pi bios_score_prompt_wrapper ; 0a6c 28 0f d6
+
pi bios_score_prompt_wrapper ; 0A6C 28 0F D6
dci L0D79 ; 0a6f 2a 0d 79 - load DC with data/code pointer
+
dci L0D79 ; 0A6F 2A 0D 79 - load DC with data/code pointer
lis 6 ; 0a72 76
+
lis 6 ; 0A72 76
lr HU,A ; 0a73 5a
+
lr $A,A ; 0A73 5A
 
L0A74:
 
L0A74:
lm ; 0a74 16 - load byte from DC and increment DC
+
lm ; 0A74 16 - load byte from DC and increment DC
lr 1,A ; 0a75 51
+
lr 1,A ; 0A75 51
lm ; 0a76 16 - load byte from DC and increment DC
+
lm ; 0A76 16 - load byte from DC and increment DC
lr 2,A ; 0a77 52
+
lr 2,A ; 0A77 52
lm ; 0a78 16 - load byte from DC and increment DC
+
lm ; 0A78 16 - load byte from DC and increment DC
lr 0,A ; 0a79 50
+
lr 0,A ; 0A79 50
xdc ; 0a7a 2c - exchange DC and H pointers
+
xdc ; 0A7A 2C - exchange DC and H pointers
dci L0D8B ; 0a7b 2a 0d 8b - load DC with data/code pointer
+
dci L0D8B ; 0A7B 2A 0D 8B - load DC with data/code pointer
pi bios_drawchar_bitmap_wrapper ; 0a7e 28 0f cd
+
pi b_drawchar_bmp_wrapper ; 0A7E 28 0F CD
xdc ; 0a81 2c - exchange DC and H pointers
+
xdc ; 0A81 2C - exchange DC and H pointers
ds HU ; 0a82 3a
+
ds $A ; 0A82 3A
bf 4,L0A74 ; 0a83 94 f0
+
bnz L0A74 ; 0A83 94 F0
dci $0D99 ; 0a85 2a 0d 99
+
dci $0D99 ; 0A85 2A 0D 99 - load DC with data/code pointer
xdc ; 0a88 2c - exchange DC and H pointers
+
xdc ; 0A88 2C - exchange DC and H pointers
dci L0DA8 ; 0a89 2a 0d a8 - load DC with data/code pointer
+
dci L0DA8 ; 0A89 2A 0D A8 - load DC with data/code pointer
lis 3 ; 0a8c 73
+
lis 3 ; 0A8C 73
lr HU,A ; 0a8d 5a
+
lr $A,A ; 0A8D 5A
 
L0A8E:
 
L0A8E:
lm ; 0a8e 16 - load byte from DC and increment DC
+
lm ; 0A8E 16 - load byte from DC and increment DC
lr 1,A ; 0a8f 51
+
lr 1,A ; 0A8F 51
lm ; 0a90 16 - load byte from DC and increment DC
+
lm ; 0A90 16 - load byte from DC and increment DC
lr 2,A ; 0a91 52
+
lr 2,A ; 0A91 52
lm ; 0a92 16 - load byte from DC and increment DC
+
lm ; 0A92 16 - load byte from DC and increment DC
lr 0,A ; 0a93 50
+
lr 0,A ; 0A93 50
xdc ; 0a94 2c - exchange DC and H pointers
+
xdc ; 0A94 2C - exchange DC and H pointers
pi drawchar_entry ; 0a95 28 06 7c
+
pi drawchar_entry ; 0A95 28 06 7C
xdc ; 0a98 2c - exchange DC and H pointers
+
xdc ; 0A98 2C - exchange DC and H pointers
ds HU ; 0a99 3a
+
ds $A ; 0A99 3A
bf 4,L0A8E ; 0a9a 94 f3
+
bnz L0A8E ; 0A9A 94 F3
dci L0D93 ; 0a9c 2a 0d 93 - load DC with data/code pointer
+
dci L0D93 ; 0A9C 2A 0D 93 - load DC with data/code pointer
pi draw_compressed_text ; 0a9f 28 0b a3
+
pi draw_stream ; 0A9F 28 0B A3
lis 6 ; 0aa2 76
+
lis 6 ; 0AA2 76
lr 3,A ; 0aa3 53
+
lr 3,A ; 0AA3 53
pi clear_screen_o37_0 ; 0aa4 28 0f ea
+
pi clear_screen_o37_0 ; 0AA4 28 0F EA
dci L0DB1 ; 0aa7 2a 0d b1 - load DC with data/code pointer
+
dci L0DB1 ; 0AA7 2A 0D B1 - load DC with data/code pointer
lis 2 ; 0aaa 72
+
lis 2 ; 0AAA 72
lr HU,A ; 0aab 5a
+
lr $A,A ; 0AAB 5A
 
L0AAC:
 
L0AAC:
lm ; 0aac 16 - load byte from DC and increment DC
+
lm ; 0AAC 16 - load byte from DC and increment DC
lr 1,A ; 0aad 51
+
lr 1,A ; 0AAD 51
lm ; 0aae 16 - load byte from DC and increment DC
+
lm ; 0AAE 16 - load byte from DC and increment DC
lr 2,A ; 0aaf 52
+
lr 2,A ; 0AAF 52
lm ; 0ab0 16 - load byte from DC and increment DC
+
lm ; 0AB0 16 - load byte from DC and increment DC
lr 0,A ; 0ab1 50
+
lr 0,A ; 0AB1 50
xdc ; 0ab2 2c - exchange DC and H pointers
+
xdc ; 0AB2 2C - exchange DC and H pointers
dci $0F58 ; 0ab3 2a 0f 58
+
dci $0F58 ; 0AB3 2A 0F 58 - load DC with data/code pointer
pi drawchar_entry ; 0ab6 28 06 7c
+
pi drawchar_entry ; 0AB6 28 06 7C
xdc ; 0ab9 2c - exchange DC and H pointers
+
xdc ; 0AB9 2C - exchange DC and H pointers
ds HU ; 0aba 3a
+
ds $A ; 0ABA 3A
bf 4,L0AAC ; 0abb 94 f0
+
bnz L0AAC ; 0ABB 94 F0
lis 4 ; 0abd 74
+
lis 4 ; 0ABD 74
lr HU,A ; 0abe 5a
+
lr $A,A ; 0ABE 5A
li $10 ; 0abf 20 10
+
li $10 ; 0ABF 20 10
lr 2,A ; 0ac1 52
+
lr 2,A ; 0AC1 52
 
L0AC2:
 
L0AC2:
li $17 ; 0ac2 20 17
+
li $17 ; 0AC2 20 17
lr 1,A ; 0ac4 51
+
lr 1,A ; 0AC4 51
li $81 ; 0ac5 20 81
+
li $81 ; 0AC5 20 81
lr 0,A ; 0ac7 50
+
lr 0,A ; 0AC7 50
pi drawchar ; 0ac8 28 06 79 - BIOS draw character routine
+
pi drawchar ; 0AC8 28 06 79 - BIOS draw character routine
lis 5 ; 0acb 75
+
lis 5 ; 0ACB 75
as 2 ; 0acc c2
+
as 2 ; 0ACC C2
lr 2,A ; 0acd 52
+
lr 2,A ; 0ACD 52
ci $27 ; 0ace 25 27
+
ci $27 ; 0ACE 25 27
bt 2,L0AC2 ; 0ad0 82 f1
+
bc L0AC2 ; 0AD0 82 F1
li $1A ; 0ad2 20 1a
+
li $1A ; 0AD2 20 1A
lr 1,A ; 0ad4 51
+
lr 1,A ; 0AD4 51
li $1A ; 0ad5 20 1a
+
li $1A ; 0AD5 20 1A
lr 2,A ; 0ad7 52
+
lr 2,A ; 0AD7 52
dci L0DC3 ; 0ad8 2a 0d c3 - load DC with data/code pointer
+
dci L0DC3 ; 0AD8 2A 0D C3 - load DC with data/code pointer
lis 6 ; 0adb 76
+
lis 6 ; 0ADB 76
lr HU,A ; 0adc 5a
+
lr $A,A ; 0ADC 5A
 
L0ADD:
 
L0ADD:
lm ; 0add 16 - load byte from DC and increment DC
+
lm ; 0ADD 16 - load byte from DC and increment DC
lr 0,A ; 0ade 50
+
lr 0,A ; 0ADE 50
xdc ; 0adf 2c - exchange DC and H pointers
+
xdc ; 0ADF 2C - exchange DC and H pointers
dci L0DC9 ; 0ae0 2a 0d c9 - load DC with data/code pointer
+
dci L0DC9 ; 0AE0 2A 0D C9 - load DC with data/code pointer
pi drawchar_entry ; 0ae3 28 06 7c
+
pi drawchar_entry ; 0AE3 28 06 7C
ds 1 ; 0ae6 31
+
ds 1 ; 0AE6 31
ds 1 ; 0ae7 31
+
ds 1 ; 0AE7 31
xdc ; 0ae8 2c - exchange DC and H pointers
+
xdc ; 0AE8 2C - exchange DC and H pointers
ds HU ; 0ae9 3a
+
ds $A ; 0AE9 3A
bf 4,L0ADD ; 0aea 94 f2
+
bnz L0ADD ; 0AEA 94 F2
li $2C ; 0aec 20 2c
+
li $2C ; 0AEC 20 2C
lr 2,A ; 0aee 52
+
lr 2,A ; 0AEE 52
li $12 ; 0aef 20 12
+
li $12 ; 0AEF 20 12
lr 1,A ; 0af1 51
+
lr 1,A ; 0AF1 51
li $80 ; 0af2 20 80
+
li $80 ; 0AF2 20 80
lr 0,A ; 0af4 50
+
lr 0,A ; 0AF4 50
dci L0DCE ; 0af5 2a 0d ce - load DC with data/code pointer
+
dci L0DCE ; 0AF5 2A 0D CE - load DC with data/code pointer
pi bios_drawchar_bitmap_wrapper ; 0af8 28 0f cd
+
pi b_drawchar_bmp_wrapper ; 0AF8 28 0F CD
li $43 ; 0afb 20 43
+
li $43 ; 0AFB 20 43
lr 1,A ; 0afd 51
+
lr 1,A ; 0AFD 51
li $40 ; 0afe 20 40
+
li $40 ; 0AFE 20 40
lr 0,A ; 0b00 50
+
lr 0,A ; 0B00 50
dci L0DCE ; 0b01 2a 0d ce - load DC with data/code pointer
+
dci L0DCE ; 0B01 2A 0D CE - load DC with data/code pointer
pi bios_drawchar_bitmap_wrapper ; 0b04 28 0f cd
+
pi b_drawchar_bmp_wrapper ; 0B04 28 0F CD
pi bios_score_prompt_wrapper ; 0b07 28 0f d6
+
pi bios_score_prompt_wrapper ; 0B07 28 0F D6
dci L0DB7 ; 0b0a 2a 0d b7 - load DC with data/code pointer
+
dci L0DB7 ; 0B0A 2A 0D B7 - load DC with data/code pointer
pi draw_compressed_text ; 0b0d 28 0b a3
+
pi draw_stream ; 0B0D 28 0B A3
lis 6 ; 0b10 76
+
lis 6 ; 0B10 76
lr 3,A ; 0b11 53
+
lr 3,A ; 0B11 53
pi clear_screen_o37_0 ; 0b12 28 0f ea
+
pi clear_screen_o37_0 ; 0B12 28 0F EA
dci L0DD6 ; 0b15 2a 0d d6 - load DC with data/code pointer
+
dci L0DD6 ; 0B15 2A 0D D6 - load DC with data/code pointer
lis 8 ; 0b18 78
+
lis 8 ; 0B18 78
lr 2,A ; 0b19 52
+
lr 2,A ; 0B19 52
 
L0B1A:
 
L0B1A:
lis $F ; 0b1a 7f
+
lis $F ; 0B1A 7F
 
L0B1B:
 
L0B1B:
lr 1,A ; 0b1b 51
+
lr 1,A ; 0B1B 51
li $C0 ; 0b1c 20 c0
+
li $C0 ; 0B1C 20 C0
lr 0,A ; 0b1e 50
+
lr 0,A ; 0B1E 50
lm ; 0b1f 16 - load byte from DC and increment DC
+
lm ; 0B1F 16 - load byte from DC and increment DC
xdc ; 0b20 2c - exchange DC and H pointers
+
xdc ; 0B20 2C - exchange DC and H pointers
lr HU,A ; 0b21 5a
+
lr $A,A ; 0B21 5A
sr 4 ; 0b22 14
+
sr 4 ; 0B22 14
sl 4 ; 0b23 15
+
sl 4 ; 0B23 15
sr 1 ; 0b24 12
+
sr 1 ; 0B24 12
lr HL,A ; 0b25 5b
+
lr $B,A ; 0B25 5B
lr A,HU ; 0b26 4a
+
lr A,$A ; 0B26 4A
sl 4 ; 0b27 15
+
sl 4 ; 0B27 15
sr 1 ; 0b28 12
+
sr 1 ; 0B28 12
lr HU,A ; 0b29 5a
+
lr $A,A ; 0B29 5A
dci L0E26 ; 0b2a 2a 0e 26 - load DC with data/code pointer
+
dci L0E26 ; 0B2A 2A 0E 26 - load DC with data/code pointer
lr A,HL ; 0b2d 4b
+
lr A,$B ; 0B2D 4B
adc ; 0b2e 8e
+
adc ; 0B2E 8E
pi bios_drawchar_bitmap_wrapper ; 0b2f 28 0f cd
+
pi b_drawchar_bmp_wrapper ; 0B2F 28 0F CD
ds 1 ; 0b32 31
+
ds 1 ; 0B32 31
dci L0E26 ; 0b33 2a 0e 26 - load DC with data/code pointer
+
dci L0E26 ; 0B33 2A 0E 26 - load DC with data/code pointer
lr A,HU ; 0b36 4a
+
lr A,$A ; 0B36 4A
adc ; 0b37 8e
+
adc ; 0B37 8E
li $C0 ; 0b38 20 c0
+
li $C0 ; 0B38 20 C0
lr 0,A ; 0b3a 50
+
lr 0,A ; 0B3A 50
pi bios_drawchar_bitmap_wrapper ; 0b3b 28 0f cd
+
pi b_drawchar_bmp_wrapper ; 0B3B 28 0F CD
xdc ; 0b3e 2c - exchange DC and H pointers
+
xdc ; 0B3E 2C - exchange DC and H pointers
ds 1 ; 0b3f 31
+
ds 1 ; 0B3F 31
lr A,1 ; 0b40 41
+
lr A,1 ; 0B40 41
ci $5A ; 0b41 25 5a
+
ci $5A ; 0B41 25 5A
bt 2,L0B1B ; 0b43 82 d7
+
bc L0B1B ; 0B43 82 D7
lis 4 ; 0b45 74
+
lis 4 ; 0B45 74
as 2 ; 0b46 c2
+
as 2 ; 0B46 C2
lr 2,A ; 0b47 52
+
lr 2,A ; 0B47 52
ci $2F ; 0b48 25 2f
+
ci $2F ; 0B48 25 2F
bt 2,L0B1A ; 0b4a 82 cf
+
bc L0B1A ; 0B4A 82 CF
dci L0E96 ; 0b4c 2a 0e 96 - load DC with data/code pointer
+
dci L0E96 ; 0B4C 2A 0E 96 - load DC with data/code pointer
pi draw_compressed_text ; 0b4f 28 0b a3
+
pi draw_stream ; 0B4F 28 0B A3
lis 6 ; 0b52 76
+
lis 6 ; 0B52 76
lr 3,A ; 0b53 53
+
lr 3,A ; 0B53 53
pi clear_screen_o37_0 ; 0b54 28 0f ea
+
pi clear_screen_o37_0 ; 0B54 28 0F EA
 
L0B57:
 
L0B57:
dci L0E9D ; 0b57 2a 0e 9d - load DC with data/code pointer
+
dci L0E9D ; 0B57 2A 0E 9D - load DC with data/code pointer
lis $C ; 0b5a 7c
+
lis $C ; 0B5A 7C
 
L0B5B:
 
L0B5B:
lr HU,A ; 0b5b 5a
+
lr $A,A ; 0B5B 5A
 
L0B5C:
 
L0B5C:
lm ; 0b5c 16 - load byte from DC and increment DC
+
lm ; 0B5C 16 - load byte from DC and increment DC
lr 1,A ; 0b5d 51
+
lr 1,A ; 0B5D 51
lm ; 0b5e 16 - load byte from DC and increment DC
+
lm ; 0B5E 16 - load byte from DC and increment DC
lr 2,A ; 0b5f 52
+
lr 2,A ; 0B5F 52
lm ; 0b60 16 - load byte from DC and increment DC
+
lm ; 0B60 16 - load byte from DC and increment DC
lr 0,A ; 0b61 50
+
lr 0,A ; 0B61 50
xdc ; 0b62 2c - exchange DC and H pointers
+
xdc ; 0B62 2C - exchange DC and H pointers
dci L0EC1 ; 0b63 2a 0e c1 - load DC with data/code pointer
+
dci L0EC1 ; 0B63 2A 0E C1 - load DC with data/code pointer
pi drawchar_entry ; 0b66 28 06 7c
+
pi drawchar_entry ; 0B66 28 06 7C
xdc ; 0b69 2c - exchange DC and H pointers
+
xdc ; 0B69 2C - exchange DC and H pointers
ds HU ; 0b6a 3a
+
ds $A ; 0B6A 3A
bf 4,L0B5C ; 0b6b 94 f0
+
bnz L0B5C ; 0B6B 94 F0
dci L0EE4 ; 0b6d 2a 0e e4 - load DC with data/code pointer
+
dci L0EE4 ; 0B6D 2A 0E E4 - load DC with data/code pointer
pi draw_compressed_text ; 0b70 28 0b a3
+
pi draw_stream ; 0B70 28 0B A3
jmp reset ; 0b73 29 00 00 - unconditional jump
+
jmp reset ; 0B73 29 00 00 - unconditional jump
 
 
  
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
; bios_drawchar_0215_wrapper
 
 
; Wrapper around BIOS draw routine at $0215. Saves K, then tail-jumps into BIOS
 
; Wrapper around BIOS draw routine at $0215. Saves K, then tail-jumps into BIOS
 
; code.
 
; code.
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
bios_drawchar_0215_wrapper:
+
draw_entity_wrapper:
lr K,P ; 0b76 08
+
lr K,P ; 0B76 08
pi pushk ; 0b77 28 01 07 - bios pushk - save return address on BIOS K-stack
+
pi pushk ; 0B77 28 01 07 - bios pushk - save return address on BIOS K-stack
jmp bios_draw_entity ; 0b7a 29 02 15 - bios, calls draw char - unconditional jump
+
jmp $0215 ; 0B7A 29 02 15 - bios, calls draw char - unconditional jump
 
 
  
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
; draw_three_prompt_markers
 
 
; Draws three repeated BIOS objects at fixed Y positions $0A, $17 and $24 using
 
; Draws three repeated BIOS objects at fixed Y positions $0A, $17 and $24 using
 
; BIOS routine $01F6.
 
; BIOS routine $01F6.
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
draw_three_prompt_markers:
+
draw_three_markers:
lr K,P ; 0b7d 08
+
lr K,P ; 0B7D 08
pi pushk ; 0b7e 28 01 07 - bios pushk - save return address on BIOS K-stack
+
pi pushk ; 0B7E 28 01 07 - bios pushk - save return address on BIOS K-stack
lis $A ; 0b81 7a
+
lis $A ; 0B81 7A
lr 2,A ; 0b82 52
+
lr 2,A ; 0B82 52
pi bios_draw_lives ; 0b83 28 01 f6
+
pi $01F6 ; 0B83 28 01 F6
li $17 ; 0b86 20 17
+
li $17 ; 0B86 20 17
lr 2,A ; 0b88 52
+
lr 2,A ; 0B88 52
pi bios_draw_lives ; 0b89 28 01 f6
+
pi $01F6 ; 0B89 28 01 F6
li $24 ; 0b8c 20 24
+
li $24 ; 0B8C 20 24
lr 2,A ; 0b8e 52
+
lr 2,A ; 0B8E 52
pi bios_draw_lives ; 0b8f 28 01 f6
+
pi $01F6 ; 0B8F 28 01 F6
pi popk ; 0b92 28 01 1e - restore return address from BIOS K-stack
+
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
+
pk ; 0B95 0C - return via K/P after BIOS K-stack restore
 
 
  
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
; short_delay
 
 
; Short delay helper. Uses r0 as outer counter and r5 as BIOS delay parameter.
 
; Short delay helper. Uses r0 as outer counter and r5 as BIOS delay parameter.
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
 
short_delay:
 
short_delay:
lr K,P ; 0b96 08
+
lr K,P ; 0B96 08
lis 3 ; 0b97 73
+
lis 3 ; 0B97 73
lr 0,A ; 0b98 50
+
lr 0,A ; 0B98 50
lis $F ; 0b99 7f
+
lis $F ; 0B99 7F
lr 5,A ; 0b9a 55
+
lr 5,A ; 0B9A 55
 
short_delay_loop:
 
short_delay_loop:
pi delay ; 0b9b 28 00 8f
+
pi delay ; 0B9B 28 00 8F
ds 0 ; 0b9e 30
+
ds 0 ; 0B9E 30
bf 4,short_delay_loop ; 0b9f 94 fb
+
bnz short_delay_loop ; 0B9F 94 FB
lr P,K ; 0ba1 09
+
lr P,K ; 0BA1 09
pop ; 0ba2 1c - return from subroutine
+
pop ; 0BA2 1C - return from subroutine
 
 
  
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
; draw_compressed_text
 
 
; Draws a compressed or data-driven text/object stream. DC points at stream
 
; Draws a compressed or data-driven text/object stream. DC points at stream
 
; header: count, Y, X, then character/object bytes.
 
; header: count, Y, X, then character/object bytes.
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
draw_compressed_text:
+
draw_stream:
lr K,P ; 0ba3 08
+
lr K,P ; 0BA3 08
pi pushk ; 0ba4 28 01 07 - bios pushk - save return address on BIOS K-stack
+
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
+
lm ; 0BA7 16 - load byte from DC and increment DC
lr 3,A ; 0ba8 53
+
lr 3,A ; 0BA8 53
lm ; 0ba9 16 - load byte from DC and increment DC
+
lm ; 0BA9 16 - load byte from DC and increment DC
lr 2,A ; 0baa 52
+
lr 2,A ; 0BAA 52
lm ; 0bab 16 - load byte from DC and increment DC
+
lm ; 0BAB 16 - load byte from DC and increment DC
lr 1,A ; 0bac 51
+
lr 1,A ; 0BAC 51
  
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
; draw_compressed_text_next_char
 
 
; Inner stream loop. Loads one stream item from DC and draws through BIOS
 
; Inner stream loop. Loads one stream item from DC and draws through BIOS
 
; drawchar entry with alternate glyph/data pointer.
 
; drawchar entry with alternate glyph/data pointer.
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
draw_compressed_text_next_char:
+
draw_stream_next:
lm ; 0bad 16 - load byte from DC and increment DC
+
lm ; 0BAD 16 - load byte from DC and increment DC
lr 0,A ; 0bae 50
+
lr 0,A ; 0BAE 50
xdc ; 0baf 2c - exchange DC and H pointers
+
xdc ; 0BAF 2C - exchange DC and H pointers
dci L0EEF ; 0bb0 2a 0e ef - load DC with data/code pointer
+
dci L0EEF ; 0BB0 2A 0E EF - load DC with data/code pointer
  
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
; draw_compressed_text_write_char
 
 
; Calls BIOS drawchar entry for one stream item, advances, and repeats until
 
; Calls BIOS drawchar entry for one stream item, advances, and repeats until
 
; count expires.
 
; count expires.
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
draw_compressed_text_write_char:
+
draw_stream_call:
pi drawchar_entry ; 0bb3 28 06 7c
+
pi drawchar_entry ; 0BB3 28 06 7C
xdc ; 0bb6 2c - exchange DC and H pointers
+
xdc ; 0BB6 2C - exchange DC and H pointers
ds 3 ; 0bb7 33
+
ds 3 ; 0BB7 33
bf 4,draw_compressed_text_next_char ; 0bb8 94 f4
+
bnz draw_stream_next ; 0BB8 94 F4
lr A,HU ; 0bba 4a
+
lr A,$A ; 0BBA 4A
ci $69 ; 0bbb 25 69
+
ci $69 ; 0BBB 25 69
bt 4,draw_compressed_text_done ; 0bbd 84 04
+
bz draw_stream_done ; 0BBD 84 04
pi short_delay ; 0bbf 28 0b 96
+
pi short_delay ; 0BBF 28 0B 96
  
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
; draw_compressed_text_done
 
 
; Restores return address from BIOS K-stack and returns from stream drawing
 
; Restores return address from BIOS K-stack and returns from stream drawing
 
; routine.
 
; routine.
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
draw_compressed_text_done:
+
draw_stream_done:
pi popk ; 0bc2 28 01 1e - restore return address from BIOS K-stack
+
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
+
pk ; 0BC5 0C - return via K/P after BIOS K-stack restore
 
 
  
 
L0BC6:
 
L0BC6:
lr QU,A ; 0bc6 06
+
lr QU,A ; 0BC6 06
sl 1 ; 0bc7 13
+
sl 1 ; 0BC7 13
out $91 ; 0bc8 27 91
+
out $91 ; 0BC8 27 91
bf 9,L0B57 ; 0bca 99 8c
+
bf 9,L0B57 ; 0BCA 99 8C
bf 4,L0B5B ; 0bcc 94 8e
+
bnz L0B5B ; 0BCC 94 8E
.byte $A3
+
db $A3 ; 0BCE A3
 
L0BCF:
 
L0BCF:
lr QU,A ; 0bcf 06
+
lr QU,A ; 0BCF 06
oi $26 ; 0bd0 22 26
+
oi $26 ; 0BD0 22 26
lr D,A ; 0bd2 5e - store A and decrement ISAR
+
lr D,A ; 0BD2 5E - store A and decrement ISAR
lr A,D ; 0bd3 4e - read selected scratchpad register and decrement ISAR
+
lr A,D ; 0BD3 4E - read selected scratchpad register and decrement ISAR
lr 8,A ; 0bd4 58
+
lr 8,A ; 0BD4 58
lr 8,A ; 0bd5 58
+
lr 8,A ; 0BD5 58
lr 2,A ; 0bd6 52
+
lr 2,A ; 0BD6 52
lr I,A ; 0bd7 5d - store A and increment ISAR
+
lr I,A ; 0BD7 5D - store A and increment ISAR
 
L0BD8:
 
L0BD8:
lr IS,A ; 0bd8 0b
+
lr IS,A ; 0BD8 0B
ds 1 ; 0bd9 31
+
ds 1 ; 0BD9 31
di ; 0bda 1a
+
di ; 0BDA 1A
bf $E,L0B6E ; 0bdb 9e 92
+
bf $E, L0B6E ; 0BDB 9E 92
xm ; 0bdd 8c
+
xm ; 0BDD 8C
lr A,KU ; 0bde 00
+
lr A,KU ; 0BDE 00
lr D,A ; 0bdf 5e - store A and decrement ISAR
+
lr D,A ; 0BDF 5E - store A and decrement ISAR
lr A,HU ; 0be0 4a
+
lr A,$A ; 0BE0 4A
lr A,S ; 0be1 4c - read selected scratchpad register
+
lr A,S ; 0BE1 4C - read selected scratchpad register
lr A,KU ; 0be2 00
+
lr A,KU ; 0BE2 00
asd D ; 0be3 de
+
asd D ; 0BE3 DE
asd J ; 0be4 d9
+
asd 9 ; 0BE4 D9
as D ; 0be5 ce
+
as D ; 0BE5 CE
 
L0BE6:
 
L0BE6:
lr DC,H ; 0be6 10
+
lr DC,H ; 0BE6 10
li $0A ; 0be7 20 0a
+
li $0A ; 0BE7 20 0A
bf $D,L0B7B ; 0be9 9d 91
+
bf $D, L0B7B ; 0BE9 9D 91
bf 9,L0B85 ; 0beb 99 99
+
bf 9, L0B85 ; 0BEB 99 99
bf $E,L0B80 ; 0bed 9e 92
+
bf $E, L0B80 ; 0BED 9E 92
bf 8,L0B80 ; 0bef 98 90
+
bno L0B80 ; 0BEF 98 90
lr A,KU ; 0bf1 00
+
lr A,KU ; 0BF1 00
bf 0,draw_three_prompt_markers ; 0bf2 90 8a
+
br draw_three_markers ; 0BF2 90 8A - unconditional jump
 +
 
 +
; -----------------------------------------------------------------------------
 +
; data_tables
 +
; Smart disassembly marks $0BF4-$0FC5 as data.
 +
; -----------------------------------------------------------------------------
 +
 
 
L0BF4:
 
L0BF4:
bf 6,L0B8B ; 0bf4 96 96
+
.byte $96, $96, $8E, $9C, $A3 ; 0BF4
L0BF6:
 
adc ; 0bf6 8e
 
bf $C,short_delay_loop ; 0bf7 9c a3
 
 
L0BF9:
 
L0BF9:
lr KU,A ; 0bf9 04
+
.byte $04, $2B, $2D, $5E, $4A, $58, $54 ; 0BF9
L0BFA:
 
nop ; 0bfa 2b
 
.byte $2D
 
lr D,A ; 0bfc 5e - store A and decrement ISAR
 
lr A,HU ; 0bfd 4a
 
lr 8,A ; 0bfe 58
 
lr 4,A ; 0bff 54
 
 
L0C00:
 
L0C00:
dci $10C0 ; 0c00 2a 10 c0
+
.byte $2A, $10, $C0, $42, $10, $C0, $36, $1B ; 0C00
lr A,2 ; 0c03 42
+
.byte $C0, $2A, $25, $C0, $42, $25, $C0, $19 ; 0C08
lr DC,H ; 0c04 10
+
.byte $0D, $83, $52, $28, $84, $17, $0B, $C1 ; 0C10
as 0 ; 0c05 c0
+
.byte $54, $2A, $42 ; 0C18
ds 6 ; 0c06 36
+
L0C1B:
ei ; 0c07 1b
+
.byte $00, $20, $70, $20, $00, $20, $70, $E0 ; 0C1B
as 0 ; 0c08 c0
+
.byte $50, $08, $80, $50, $38, $70, $20, $08 ; 0C23
dci $25C0 ; 0c09 2a 25 c0
+
.byte $08, $08, $08, $F8, $F8, $80, $80, $80 ; 0C2B
lr A,2 ; 0c0c 42
+
.byte $80 ; 0C33
ci $C0 ; 0c0d 25 c0
 
lnk ; 0c0f 19
 
lr P0,Q ; 0c10 0d
 
bt 3,L0C64 ; 0c11 83 52
 
pi $8417 ; 0c13 28 84 17
 
lr IS,A ; 0c16 0b
 
as 1 ; 0c17 c1
 
lr 4,A ; 0c18 54
 
dci $4200 ; 0c19 2a 42 00
 
L0C1C:
 
li $70 ; 0c1c 20 70
 
li $00 ; 0c1e 20 00
 
li $70 ; 0c20 20 70
 
xs 0 ; 0c22 e0
 
lr 0,A ; 0c23 50
 
lr K,P ; 0c24 08
 
bt 0,L0C76 ; 0c25 80 50
 
ds 8 ; 0c27 38
 
clr ; 0c28 70
 
li $08 ; 0c29 20 08
 
lr K,P ; 0c2b 08
 
lr K,P ; 0c2c 08
 
lr K,P ; 0c2d 08
 
ns 8 ; 0c2e f8
 
ns 8 ; 0c2f f8
 
bt 0,L0BB1 ; 0c30 80 80
 
bt 0,draw_compressed_text_write_char ; 0c32 80 80
 
 
L0C34:
 
L0C34:
lr Q,DC ; 0c34 0e
+
.byte $0E, $FF, $FF, $3F, $2A, $2E, $2A, $2E ; 0C34
.byte $FF
+
.byte $70, $FF, $FF, $FC, $54, $74, $54, $74 ; 0C3C
.byte $FF
+
.byte $5D, $55, $5D, $55, $5D, $55, $5D, $55 ; 0C44
.byte $3F
+
.byte $00, $40, $60, $7D, $7F, $7D, $00, $00 ; 0C4C
dci $2E2A ; 0c38 2a 2e 2a
+
.byte $00, $02, $06, $BE, $FE, $BE, $00, $00 ; 0C54
.byte $2E
 
clr ; 0c3c 70
 
.byte $FF
 
.byte $FF
 
ns S ; 0c3f fc
 
lr 4,A ; 0c40 54
 
lis 4 ; 0c41 74
 
lr 4,A ; 0c42 54
 
lis 4 ; 0c43 74
 
lr I,A ; 0c44 5d - store A and increment ISAR
 
lr 5,A ; 0c45 55
 
lr I,A ; 0c46 5d - store A and increment ISAR
 
lr 5,A ; 0c47 55
 
lr I,A ; 0c48 5d - store A and increment ISAR
 
lr 5,A ; 0c49 55
 
lr I,A ; 0c4a 5d - store A and increment ISAR
 
lr 5,A ; 0c4b 55
 
lr A,KU ; 0c4c 00
 
lr A,0 ; 0c4d 40
 
lisu 0 ; 0c4e 60
 
lis $D ; 0c4f 7d
 
lis $F ; 0c50 7f
 
lis $D ; 0c51 7d
 
lr A,KU ; 0c52 00
 
lr A,KU ; 0c53 00
 
lr A,KU ; 0c54 00
 
lr A,QU ; 0c55 02
 
lr QU,A ; 0c56 06
 
outs 14 ; 0c57 be
 
ns D ; 0c58 fe
 
outs 14 ; 0c59 be
 
lr A,KU ; 0c5a 00
 
lr A,KU ; 0c5b 00
 
 
L0C5C:
 
L0C5C:
lr K,P ; 0c5c 08
+
.byte $08, $13, $1F, $9D, $9A, $92, $9E, $8F ; 0C5C
sl 1 ; 0c5d 13
+
.byte $92, $9C, $8E ; 0C64
inc ; 0c5e 1f
 
bf $D,L0BFA ; 0c5f 9d 9a
 
bf 2,L0C00 ; 0c61 92 9e
 
br7 L0BF6 ; 0c63 8f 92
 
L0C65:
 
bf $C,L0BF4 ; 0c65 9c 8e
 
 
L0C67:
 
L0C67:
ds 0 ; 0c67 30
+
.byte $30, $2E, $C0, $33, $2E, $C0, $31, $33 ; 0C67
.byte $2E
+
.byte $C0, $0B, $32, $80, $5C, $32, $40 ; 0C6F
as 0 ; 0c69 c0
 
ds 3 ; 0c6a 33
 
.byte $2E
 
as 0 ; 0c6c c0
 
ds 1 ; 0c6d 31
 
ds 3 ; 0c6e 33
 
as 0 ; 0c6f c0
 
lr IS,A ; 0c70 0b
 
ds 2 ; 0c71 32
 
bt 0,L0CCF ; 0c72 80 5c
 
ds 2 ; 0c74 32
 
lr A,0 ; 0c75 40
 
 
L0C76:
 
L0C76:
pk ; 0c76 0c - return via K/P after BIOS K-stack restore
+
.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
lr IS,A ; 0c77 0b
+
.byte $20, $4B, $56, $4A, $4C, $54, $53, $4A ; 0C8E
st ; 0c78 17
+
.byte $4C, $54 ; 0C96
lr A,0 ; 0c79 40
 
lr A,5 ; 0c7a 45
 
lr A,0 ; 0c7b 40
 
lr A,0 ; 0c7c 40
 
lr A,KU ; 0c7d 00
 
lr A,KU ; 0c7e 00
 
lr A,KU ; 0c7f 00
 
lr A,KU ; 0c80 00
 
lr A,0 ; 0c81 40
 
lr A,5 ; 0c82 45
 
lr A,0 ; 0c83 40
 
lr A,0 ; 0c84 40
 
lr KU,A ; 0c85 04
 
ds 3 ; 0c86 33
 
.byte $2E
 
lr A,HL ; 0c88 4b
 
lr A,D ; 0c89 4e - read selected scratchpad register and decrement ISAR
 
lr D,A ; 0c8a 5e - store A and decrement ISAR
 
lisu 6 ; 0c8b 66
 
lr P,K ; 0c8c 09
 
pop ; 0c8d 1c - return from subroutine
 
 
 
 
 
li $4B ; 0c8e 20 4b
 
lr 6,A ; 0c90 56
 
lr A,HU ; 0c91 4a
 
lr A,S ; 0c92 4c - read selected scratchpad register
 
lr 4,A ; 0c93 54
 
lr 3,A ; 0c94 53
 
lr A,HU ; 0c95 4a
 
lr A,S ; 0c96 4c - read selected scratchpad register
 
lr 4,A ; 0c97 54
 
 
L0C98:
 
L0C98:
ns 8 ; 0c98 f8
+
.byte $F8, $84, $82, $81, $81, $81, $81, $FF ; 0C98
bt 4,L0C1C ; 0c99 84 82
+
.byte $00, $00, $00, $1C, $23, $22, $22, $DC ; 0CA0
bt 1,L0C1D ; 0c9b 81 81
+
.byte $00, $00, $00, $78, $C7, $44, $44, $38 ; 0CA8
bt 1,L0C1F ; 0c9d 81 81
+
.byte $04, $04, $04, $04, $FC, $44, $44, $7F ; 0CB0
.byte $FF
+
.byte $10, $28, $28, $28, $28, $28, $10, $EF ; 0CB8
lr A,KU ; 0ca0 00
+
.byte $00, $00, $00, $08, $14, $14, $08, $F6 ; 0CC0
lr A,KU ; 0ca1 00
 
lr A,KU ; 0ca2 00
 
pop ; 0ca3 1c - return from subroutine
 
 
 
 
 
xi $22 ; 0ca4 23 22
 
oi $DC ; 0ca6 22 dc
 
lr A,KU ; 0ca8 00
 
lr A,KU ; 0ca9 00
 
lr A,KU ; 0caa 00
 
lis 8 ; 0cab 78
 
as 7 ; 0cac c7
 
lr A,4 ; 0cad 44
 
lr A,4 ; 0cae 44
 
ds 8 ; 0caf 38
 
lr KU,A ; 0cb0 04
 
lr KU,A ; 0cb1 04
 
lr KU,A ; 0cb2 04
 
lr KU,A ; 0cb3 04
 
ns S ; 0cb4 fc
 
lr A,4 ; 0cb5 44
 
lr A,4 ; 0cb6 44
 
lis $F ; 0cb7 7f
 
lr DC,H ; 0cb8 10
 
pi $2828 ; 0cb9 28 28 28
 
pi $2810 ; 0cbc 28 28 10
 
.byte $EF
 
lr A,KU ; 0cc0 00
 
lr A,KU ; 0cc1 00
 
lr A,KU ; 0cc2 00
 
lr K,P ; 0cc3 08
 
sr 4 ; 0cc4 14
 
sr 4 ; 0cc5 14
 
lr K,P ; 0cc6 08
 
ns 6 ; 0cc7 f6
 
 
L0CC8:
 
L0CC8:
.byte $FF
+
.byte $FF, $C3, $A5, $99, $99, $A5, $C3, $FF ; 0CC8
as 3 ; 0cc9 c3
 
ins 5 ; 0cca a5
 
bf 9,L0C65 ; 0ccb 99 99
 
ins 5 ; 0ccd a5
 
as 3 ; 0cce c3
 
L0CCF:
 
.byte $FF
 
 
L0CD0:
 
L0CD0:
lr IS,A ; 0cd0 0b
+
.byte $0B, $30, $19, $8A, $DF, $5E, $99, $00 ; 0CD0
ds 0 ; 0cd1 30
+
.byte $4D, $59, $D9, $CD, $56, $8E ; 0CD8
lnk ; 0cd2 19
 
nm ; 0cd3 8a
 
.byte $DF
 
lr D,A ; 0cd5 5e - store A and decrement ISAR
 
bf 9,L0CD7 ; 0cd6 99 00
 
lr A,I ; 0cd8 4d - read selected scratchpad register and increment ISAR
 
lr J,A ; 0cd9 59
 
asd J ; 0cda d9
 
as I ; 0cdb cd
 
lr 6,A ; 0cdc 56
 
adc ; 0cdd 8e
 
 
L0CDE:
 
L0CDE:
ei ; 0cde 1b
+
.byte $1B, $10, $82, $50, $27, $82, $25, $0D ; 0CDE
lr DC,H ; 0cdf 10
+
.byte $C1, $3D, $10, $C1, $36, $1B, $C1, $2F ; 0CE6
bt 2,L0D31 ; 0ce0 82 50
+
.byte $25, $C1, $47, $28, $C1, $17, $0B, $C0 ; 0CEE
out $82 ; 0ce2 27 82
+
.byte $54, $2A, $40 ; 0CF6
ci $0D ; 0ce4 25 0d
+
L0CF9:
as 1 ; 0ce6 c1
+
.byte $00, $20, $F8, $70, $00, $00, $50, $20 ; 0CF9
ds I ; 0ce7 3d
+
.byte $50, $00, $20, $70, $D8, $70, $20 ; 0D01
lr DC,H ; 0ce8 10
+
L0D08:
as 1 ; 0ce9 c1
+
.byte $09, $16, $1D, $5D, $5A, $4A, $4C, $4E ; 0D08
ds 6 ; 0cea 36
+
.byte $00, $61, $4A, $5C ; 0D10
ei ; 0ceb 1b
 
as 1 ; 0cec c1
 
L0CED:
 
.byte $2F
 
ci $C1 ; 0cee 25 c1
 
lr A,7 ; 0cf0 47
 
pi $C117 ; 0cf1 28 c1 17
 
lr IS,A ; 0cf4 0b
 
as 0 ; 0cf5 c0
 
lr 4,A ; 0cf6 54
 
dci $4000 ; 0cf7 2a 40 00
 
li $F8 ; 0cfa 20 f8
 
clr ; 0cfc 70
 
L0CFD:
 
lr A,KU ; 0cfd 00
 
lr A,KU ; 0cfe 00
 
lr 0,A ; 0cff 50
 
li $50 ; 0d00 20 50
 
lr A,KU ; 0d02 00
 
li $70 ; 0d03 20 70
 
asd 8 ; 0d05 d8
 
clr ; 0d06 70
 
li $09 ; 0d07 20 09
 
lm ; 0d09 16 - load byte from DC and increment DC
 
lr W,J ; 0d0a 1d
 
lr I,A ; 0d0b 5d - store A and increment ISAR
 
lr HU,A ; 0d0c 5a
 
lr A,HU ; 0d0d 4a
 
lr A,S ; 0d0e 4c - read selected scratchpad register
 
lr A,D ; 0d0f 4e - read selected scratchpad register and decrement ISAR
 
lr A,KU ; 0d10 00
 
lisu 1 ; 0d11 61
 
lr A,HU ; 0d12 4a
 
lr S,A ; 0d13 5c - store A in selected scratchpad register
 
 
L0D14:
 
L0D14:
lr P0,Q ; 0d14 0d
+
.byte $0D, $10, $13, $00, $42, $43, $00, $00 ; 0D14
lr DC,H ; 0d15 10
+
.byte $00, $47, $42, $00, $00, $00, $41, $43 ; 0D1C
sl 1 ; 0d16 13
+
.byte $0D, $16, $13, $E9, $44, $42, $00, $00 ; 0D24
lr A,KU ; 0d17 00
+
.byte $EA, $41, $43, $00, $00, $E2, $00, $43 ; 0D2C
lr A,2 ; 0d18 42
+
.byte $0D, $1E, $13, $00, $46, $45, $00, $00 ; 0D34
lr A,3 ; 0d19 43
+
.byte $00, $45, $49, $00, $00, $00, $43, $49 ; 0D3C
lr A,KU ; 0d1a 00
 
lr A,KU ; 0d1b 00
 
lr A,KU ; 0d1c 00
 
lr A,7 ; 0d1d 47
 
lr A,2 ; 0d1e 42
 
lr A,KU ; 0d1f 00
 
lr A,KU ; 0d20 00
 
lr A,KU ; 0d21 00
 
lr A,1 ; 0d22 41
 
lr A,3 ; 0d23 43
 
lr P0,Q ; 0d24 0d
 
lm ; 0d25 16 - load byte from DC and increment DC
 
sl 1 ; 0d26 13
 
xs J ; 0d27 e9
 
lr A,4 ; 0d28 44
 
L0D29:
 
lr A,2 ; 0d29 42
 
lr A,KU ; 0d2a 00
 
lr A,KU ; 0d2b 00
 
xs HU ; 0d2c ea
 
lr A,1 ; 0d2d 41
 
lr A,3 ; 0d2e 43
 
lr A,KU ; 0d2f 00
 
lr A,KU ; 0d30 00
 
L0D31:
 
xs 2 ; 0d31 e2
 
lr A,KU ; 0d32 00
 
lr A,3 ; 0d33 43
 
lr P0,Q ; 0d34 0d
 
lr J,W ; 0d35 1e
 
sl 1 ; 0d36 13
 
lr A,KU ; 0d37 00
 
lr A,6 ; 0d38 46
 
lr A,5 ; 0d39 45
 
lr A,KU ; 0d3a 00
 
lr A,KU ; 0d3b 00
 
lr A,KU ; 0d3c 00
 
lr A,5 ; 0d3d 45
 
lr A,J ; 0d3e 49
 
lr A,KU ; 0d3f 00
 
lr A,KU ; 0d40 00
 
lr A,KU ; 0d41 00
 
lr A,3 ; 0d42 43
 
lr A,J ; 0d43 49
 
 
L0D44:
 
L0D44:
.byte $2E
+
.byte $2E, $2B, $81, $28, $2C, $43, $35, $2C ; 0D44
nop ; 0d45 2b
+
.byte $46, $3B, $2C, $49, $35, $24, $42, $3B ; 0D4C
bt 1,L0D6F ; 0d46 81 28
+
.byte $24, $43 ; 0D54
xdc ; 0d48 2c - exchange DC and H pointers
 
lr A,3 ; 0d49 43
 
ds 5 ; 0d4a 35
 
xdc ; 0d4b 2c - exchange DC and H pointers
 
lr A,6 ; 0d4c 46
 
ds HL ; 0d4d 3b
 
xdc ; 0d4e 2c - exchange DC and H pointers
 
lr A,J ; 0d4f 49
 
ds 5 ; 0d50 35
 
ai $42 ; 0d51 24 42
 
ds HL ; 0d53 3b
 
ai $43 ; 0d54 24 43
 
 
L0D56:
 
L0D56:
lr K,P ; 0d56 08
+
.byte $08, $09, $20, $97, $8A, $9E, $91, $9B ; 0D56
lr P,K ; 0d57 09
+
.byte $9F, $92, $A4 ; 0D5E
li $97 ; 0d58 20 97
 
nm ; 0d5a 8a
 
bf $E,L0CED ; 0d5b 9e 91
 
bf $B,L0CFD ; 0d5d 9b 9f
 
bf 2,L0D04 ; 0d5f 92 a4
 
 
L0D61:
 
L0D61:
lr A,QL ; 0d61 03
+
.byte $03, $27, $14, $40, $40, $40, $01, $2D ; 0D61
out $14 ; 0d62 27 14
+
.byte $14, $6A, $02, $33, $33, $42, $40, $06 ; 0D69
lr A,0 ; 0d64 40
+
.byte $11, $27, $CB, $CA, $D0, $CE, $D6, $DD ; 0D71
lr A,0 ; 0d65 40
 
lr A,0 ; 0d66 40
 
lr A,KL ; 0d67 01
 
.byte $2D
 
sr 4 ; 0d69 14
 
lisl 2 ; 0d6a 6a
 
lr A,QU ; 0d6b 02
 
ds 3 ; 0d6c 33
 
ds 3 ; 0d6d 33
 
lr A,2 ; 0d6e 42
 
L0D6F:
 
lr A,0 ; 0d6f 40
 
lr QU,A ; 0d70 06
 
L0D71:
 
lr H,DC ; 0d71 11
 
out $CB ; 0d72 27 cb
 
as HU ; 0d74 ca
 
asd 0 ; 0d75 d0
 
as D ; 0d76 ce
 
asd 6 ; 0d77 d6
 
asd I ; 0d78 dd
 
 
L0D79:
 
L0D79:
sr 4 ; 0d79 14
+
.byte $14, $19, $80, $1A, $19, $80, $30, $19 ; 0D79
lnk ; 0d7a 19
+
.byte $40, $36, $19, $40, $4D, $19, $40, $53 ; 0D81
bt 0,L0D96 ; 0d7b 80 1a
+
.byte $19, $40 ; 0D89
lnk ; 0d7d 19
 
bt 0,L0DAF ; 0d7e 80 30
 
lnk ; 0d80 19
 
lr A,0 ; 0d81 40
 
ds 6 ; 0d82 36
 
lnk ; 0d83 19
 
lr A,0 ; 0d84 40
 
lr A,I ; 0d85 4d - read selected scratchpad register and increment ISAR
 
lnk ; 0d86 19
 
lr A,0 ; 0d87 40
 
lr 3,A ; 0d88 53
 
lnk ; 0d89 19
 
lr A,0 ; 0d8a 40
 
 
L0D8B:
 
L0D8B:
ns D ; 0d8b fe
+
.byte $FE, $FE, $FE, $FE, $FE, $FE, $FE, $00 ; 0D8B
ns D ; 0d8c fe
 
ns D ; 0d8d fe
 
ns D ; 0d8e fe
 
ns D ; 0d8f fe
 
ns D ; 0d90 fe
 
ns D ; 0d91 fe
 
lr A,KU ; 0d92 00
 
 
L0D93:
 
L0D93:
lr A,QL ; 0d93 03
+
.byte $03, $11, $2E, $98, $92, $97 ; 0D93
lr H,DC ; 0d94 11
+
L0D99:
.byte $2E
+
.byte $D8, $D8, $D8, $D8, $D8, $00, $70, $00 ; 0D99
L0D96:
+
.byte $70, $00, $00, $F0, $00, $7F, $00 ; 0DA1
bf 8,L0D29 ; 0d96 98 92
 
bf 7,L0D71 ; 0d98 97 d8
 
asd 8 ; 0d9a d8
 
asd 8 ; 0d9b d8
 
asd 8 ; 0d9c d8
 
asd 8 ; 0d9d d8
 
lr A,KU ; 0d9e 00
 
clr ; 0d9f 70
 
lr A,KU ; 0da0 00
 
clr ; 0da1 70
 
lr A,KU ; 0da2 00
 
lr A,KU ; 0da3 00
 
ns 0 ; 0da4 f0
 
lr A,KU ; 0da5 00
 
lis $F ; 0da6 7f
 
lr A,KU ; 0da7 00
 
 
L0DA8:
 
L0DA8:
com ; 0da8 18
+
.byte $18, $1A, $80, $34, $1A, $40, $51, $1A ; 0DA8
di ; 0da9 1a
+
.byte $40 ; 0DB0
bt 0,L0DDF ; 0daa 80 34
 
di ; 0dac 1a
 
lr A,0 ; 0dad 40
 
lr 1,A ; 0dae 51
 
L0DAF:
 
di ; 0daf 1a
 
lr A,0 ; 0db0 40
 
 
L0DB1:
 
L0DB1:
lr DC,H ; 0db1 10
+
.byte $10, $10, $80, $10, $23, $40 ; 0DB1
lr DC,H ; 0db2 10
 
bt 0,L0DC4 ; 0db3 80 10
 
xi $40 ; 0db5 23 40
 
 
L0DB7:
 
L0DB7:
lr P,K ; 0db7 09
+
.byte $09, $08, $17, $CD, $DC, $CA, $D0, $00 ; 0DB7
lr K,P ; 0db8 08
+
.byte $DC, $CA, $CC, $CE ; 0DBF
st ; 0db9 17
 
as I ; 0dba cd
 
asd S ; 0dbb dc
 
as HU ; 0dbc ca
 
asd 0 ; 0dbd d0
 
lr A,KU ; 0dbe 00
 
asd S ; 0dbf dc
 
as HU ; 0dc0 ca
 
as S ; 0dc1 cc
 
as D ; 0dc2 ce
 
 
L0DC3:
 
L0DC3:
as 0 ; 0dc3 c0
+
.byte $C0, $80, $40, $C0, $80, $40 ; 0DC3
L0DC4:
 
bt 0,L0E05 ; 0dc4 80 40
 
as 0 ; 0dc6 c0
 
bt 0,L0E08 ; 0dc7 80 40
 
 
L0DC9:
 
L0DC9:
ns 0 ; 0dc9 f0
+
.byte $F0, $F0, $F0, $F0, $00 ; 0DC9
ns 0 ; 0dca f0
 
ns 0 ; 0dcb f0
 
ns 0 ; 0dcc f0
 
lr A,KU ; 0dcd 00
 
 
L0DCE:
 
L0DCE:
.byte $FF
+
.byte $FF, $FF, $00, $00, $00, $00, $00, $00 ; 0DCE
.byte $FF
 
lr A,KU ; 0dd0 00
 
lr A,KU ; 0dd1 00
 
lr A,KU ; 0dd2 00
 
lr A,KU ; 0dd3 00
 
lr A,KU ; 0dd4 00
 
lr A,KU ; 0dd5 00
 
 
L0DD6:
 
L0DD6:
lr A,5 ; 0dd6 45
+
.byte $45, $45, $45, $49, $C5, $4C, $54, $C5 ; 0DD6
lr A,5 ; 0dd7 45
+
.byte $C7, $63, $DD, $D7, $5D, $D1, $DD, $46 ; 0DDE
lr A,5 ; 0dd8 45
+
.byte $D4, $64, $67, $61, $DD, $DD, $DD, $D1 ; 0DE6
lr A,J ; 0dd9 49
+
.byte $87, $57, $CC, $5D, $D7, $6D, $86, $76 ; 0DEE
as 5 ; 0dda c5
+
.byte $D4, $6C, $CC, $67, $61, $4B, $64, $92 ; 0DF6
lr A,S ; 0ddb 4c - read selected scratchpad register
+
.byte $76, $0C, $C5, $14, $CB, $60, $C6, $75 ; 0DFE
lr 4,A ; 0ddc 54
+
.byte $05, $4C, $CB, $6D, $42, $54, $54, $5D ; 0E06
as 5 ; 0ddd c5
+
.byte $46, $75, $4C, $C6, $D4, $76, $76, $7B ; 0E0E
as 7 ; 0dde c7
+
.byte $8C, $C6, $A4, $54, $67, $54, $54, $51 ; 0E16
L0DDF:
+
.byte $7C, $C2, $76, $7B, $CC, $B6, $76, $76 ; 0E1E
lisu 3 ; 0ddf 63
 
asd I ; 0de0 dd
 
asd 7 ; 0de1 d7
 
lr I,A ; 0de2 5d - store A and increment ISAR
 
asd 1 ; 0de3 d1
 
asd I ; 0de4 dd
 
lr A,6 ; 0de5 46
 
asd 4 ; 0de6 d4
 
lisu 4 ; 0de7 64
 
lisu 7 ; 0de8 67
 
lisu 1 ; 0de9 61
 
asd I ; 0dea dd
 
asd I ; 0deb dd
 
asd I ; 0dec dd
 
asd 1 ; 0ded d1
 
bt 7,L0E46 ; 0dee 87 57
 
as S ; 0df0 cc
 
lr I,A ; 0df1 5d - store A and increment ISAR
 
asd 7 ; 0df2 d7
 
lisl 5 ; 0df3 6d
 
bt 6,L0E6B ; 0df4 86 76
 
asd 4 ; 0df6 d4
 
lisl 4 ; 0df7 6c
 
as S ; 0df8 cc
 
lisu 7 ; 0df9 67
 
lisu 1 ; 0dfa 61
 
lr A,HL ; 0dfb 4b
 
lisu 4 ; 0dfc 64
 
bf 2,L0E74 ; 0dfd 92 76
 
pk ; 0dff 0c - return via K/P after BIOS K-stack restore
 
 
 
 
 
as 5 ; 0e00 c5
 
sr 4 ; 0e01 14
 
as HL ; 0e02 cb
 
lisu 0 ; 0e03 60
 
as 6 ; 0e04 c6
 
L0E05:
 
lis 5 ; 0e05 75
 
lr KL,A ; 0e06 05
 
lr A,S ; 0e07 4c - read selected scratchpad register
 
L0E08:
 
as HL ; 0e08 cb
 
lisl 5 ; 0e09 6d
 
lr A,2 ; 0e0a 42
 
lr 4,A ; 0e0b 54
 
lr 4,A ; 0e0c 54
 
lr I,A ; 0e0d 5d - store A and increment ISAR
 
lr A,6 ; 0e0e 46
 
lis 5 ; 0e0f 75
 
lr A,S ; 0e10 4c - read selected scratchpad register
 
as 6 ; 0e11 c6
 
asd 4 ; 0e12 d4
 
lis 6 ; 0e13 76
 
lis 6 ; 0e14 76
 
lis $B ; 0e15 7b
 
xm ; 0e16 8c
 
as 6 ; 0e17 c6
 
ins 4 ; 0e18 a4
 
lr 4,A ; 0e19 54
 
lisu 7 ; 0e1a 67
 
lr 4,A ; 0e1b 54
 
lr 4,A ; 0e1c 54
 
lr 1,A ; 0e1d 51
 
lis $C ; 0e1e 7c
 
as 2 ; 0e1f c2
 
lis 6 ; 0e20 76
 
lis $B ; 0e21 7b
 
as S ; 0e22 cc
 
outs 6 ; 0e23 b6
 
lis 6 ; 0e24 76
 
lis 6 ; 0e25 76
 
 
L0E26:
 
L0E26:
ns D ; 0e26 fe
+
.byte $FE, $FE, $C0, $C0, $FE, $FE, $00, $00 ; 0E26
ns D ; 0e27 fe
+
.byte $FE, $FE, $C6, $C6, $C6, $C6, $00, $00 ; 0E2E
as 0 ; 0e28 c0
+
.byte $FE, $FE, $06, $06, $FE, $FE, $00, $00 ; 0E36
as 0 ; 0e29 c0
+
.byte $C6, $C6, $C6, $C6, $FE, $FE, $00, $00 ; 0E3E
ns D ; 0e2a fe
+
.byte $FE, $FE, $C0, $C0, $C6, $C6, $00, $00 ; 0E46
ns D ; 0e2b fe
+
.byte $FE, $FE, $06, $06, $C6, $C6, $00, $00 ; 0E4E
lr A,KU ; 0e2c 00
+
.byte $C6, $C6, $06, $06, $FE, $FE, $00, $00 ; 0E56
lr A,KU ; 0e2d 00
+
.byte $C6, $C6, $C0, $C0, $FE, $FE, $00, $00 ; 0E5E
ns D ; 0e2e fe
+
.byte $C6, $C6, $C0, $C0, $C6, $C6, $00, $00 ; 0E66
ns D ; 0e2f fe
+
.byte $FE, $FE, $00, $00, $C6, $C6, $00, $00 ; 0E6E
as 6 ; 0e30 c6
+
.byte $C6, $C6, $06, $06, $C6, $C6, $00, $00 ; 0E76
as 6 ; 0e31 c6
+
.byte $C6, $C6, $00, $00, $FE, $FE, $00, $00 ; 0E7E
as 6 ; 0e32 c6
+
.byte $FE, $FE, $00, $00, $FE, $FE, $00, $00 ; 0E86
as 6 ; 0e33 c6
+
.byte $C6, $C6, $C6, $C6, $C6, $C6, $00, $00 ; 0E8E
lr A,KU ; 0e34 00
 
lr A,KU ; 0e35 00
 
ns D ; 0e36 fe
 
ns D ; 0e37 fe
 
lr QU,A ; 0e38 06
 
lr QU,A ; 0e39 06
 
ns D ; 0e3a fe
 
ns D ; 0e3b fe
 
lr A,KU ; 0e3c 00
 
lr A,KU ; 0e3d 00
 
as 6 ; 0e3e c6
 
as 6 ; 0e3f c6
 
as 6 ; 0e40 c6
 
as 6 ; 0e41 c6
 
ns D ; 0e42 fe
 
ns D ; 0e43 fe
 
lr A,KU ; 0e44 00
 
lr A,KU ; 0e45 00
 
L0E46:
 
ns D ; 0e46 fe
 
ns D ; 0e47 fe
 
as 0 ; 0e48 c0
 
as 0 ; 0e49 c0
 
as 6 ; 0e4a c6
 
as 6 ; 0e4b c6
 
lr A,KU ; 0e4c 00
 
lr A,KU ; 0e4d 00
 
ns D ; 0e4e fe
 
ns D ; 0e4f fe
 
lr QU,A ; 0e50 06
 
lr QU,A ; 0e51 06
 
as 6 ; 0e52 c6
 
as 6 ; 0e53 c6
 
lr A,KU ; 0e54 00
 
lr A,KU ; 0e55 00
 
L0E56:
 
as 6 ; 0e56 c6
 
as 6 ; 0e57 c6
 
L0E58:
 
lr QU,A ; 0e58 06
 
lr QU,A ; 0e59 06
 
ns D ; 0e5a fe
 
ns D ; 0e5b fe
 
lr A,KU ; 0e5c 00
 
lr A,KU ; 0e5d 00
 
as 6 ; 0e5e c6
 
as 6 ; 0e5f c6
 
as 0 ; 0e60 c0
 
as 0 ; 0e61 c0
 
ns D ; 0e62 fe
 
ns D ; 0e63 fe
 
lr A,KU ; 0e64 00
 
lr A,KU ; 0e65 00
 
as 6 ; 0e66 c6
 
as 6 ; 0e67 c6
 
as 0 ; 0e68 c0
 
as 0 ; 0e69 c0
 
as 6 ; 0e6a c6
 
L0E6B:
 
as 6 ; 0e6b c6
 
lr A,KU ; 0e6c 00
 
lr A,KU ; 0e6d 00
 
ns D ; 0e6e fe
 
ns D ; 0e6f fe
 
lr A,KU ; 0e70 00
 
lr A,KU ; 0e71 00
 
as 6 ; 0e72 c6
 
as 6 ; 0e73 c6
 
L0E74:
 
lr A,KU ; 0e74 00
 
lr A,KU ; 0e75 00
 
as 6 ; 0e76 c6
 
as 6 ; 0e77 c6
 
L0E78:
 
lr QU,A ; 0e78 06
 
lr QU,A ; 0e79 06
 
as 6 ; 0e7a c6
 
as 6 ; 0e7b c6
 
lr A,KU ; 0e7c 00
 
lr A,KU ; 0e7d 00
 
as 6 ; 0e7e c6
 
as 6 ; 0e7f c6
 
lr A,KU ; 0e80 00
 
lr A,KU ; 0e81 00
 
ns D ; 0e82 fe
 
ns D ; 0e83 fe
 
L0E84:
 
lr A,KU ; 0e84 00
 
lr A,KU ; 0e85 00
 
ns D ; 0e86 fe
 
ns D ; 0e87 fe
 
lr A,KU ; 0e88 00
 
lr A,KU ; 0e89 00
 
ns D ; 0e8a fe
 
ns D ; 0e8b fe
 
lr A,KU ; 0e8c 00
 
lr A,KU ; 0e8d 00
 
L0E8E:
 
as 6 ; 0e8e c6
 
as 6 ; 0e8f c6
 
as 6 ; 0e90 c6
 
as 6 ; 0e91 c6
 
as 6 ; 0e92 c6
 
as 6 ; 0e93 c6
 
lr A,KU ; 0e94 00
 
lr A,KU ; 0e95 00
 
 
L0E96:
 
L0E96:
lr KU,A ; 0e96 04
+
.byte $04, $33, $2B, $57, $4A, $64, $4E ; 0E96
ds 3 ; 0e97 33
 
nop ; 0e98 2b
 
lr 7,A ; 0e99 57
 
lr A,HU ; 0e9a 4a
 
lisu 4 ; 0e9b 64
 
lr A,D ; 0e9c 4e - read selected scratchpad register and decrement ISAR
 
 
L0E9D:
 
L0E9D:
sl 4 ; 0e9d 15
+
.byte $15, $1A, $40, $18, $0D, $40, $35, $0A ; 0E9D
di ; 0e9e 1a
+
.byte $40, $50, $0D, $40, $12, $22, $41, $37 ; 0EA5
lr A,0 ; 0e9f 40
+
.byte $14, $41, $58, $22, $41, $37, $1D, $42 ; 0EAD
com ; 0ea0 18
+
.byte $35, $36, $43, $34, $31, $84, $36, $30 ; 0EB5
lr P0,Q ; 0ea1 0d
+
.byte $45, $2F, $30, $C6 ; 0EBD
lr A,0 ; 0ea2 40
 
ds 5 ; 0ea3 35
 
lr A,IS ; 0ea4 0a
 
lr A,0 ; 0ea5 40
 
lr 0,A ; 0ea6 50
 
lr P0,Q ; 0ea7 0d
 
lr A,0 ; 0ea8 40
 
sr 1 ; 0ea9 12
 
oi $41 ; 0eaa 22 41
 
ds 7 ; 0eac 37
 
L0EAD:
 
sr 4 ; 0ead 14
 
lr A,1 ; 0eae 41
 
lr 8,A ; 0eaf 58
 
oi $41 ; 0eb0 22 41
 
ds 7 ; 0eb2 37
 
lr W,J ; 0eb3 1d
 
lr A,2 ; 0eb4 42
 
ds 5 ; 0eb5 35
 
ds 6 ; 0eb6 36
 
lr A,3 ; 0eb7 43
 
ds 4 ; 0eb8 34
 
ds 1 ; 0eb9 31
 
L0EBA:
 
bt 4,L0EF1 ; 0eba 84 36
 
ds 0 ; 0ebc 30
 
lr A,5 ; 0ebd 45
 
L0EBE:
 
.byte $2F
 
ds 0 ; 0ebf 30
 
as 6 ; 0ec0 c6
 
 
L0EC1:
 
L0EC1:
lr DC,H ; 0ec1 10
+
.byte $10, $38, $38, $28, $28, $10, $38, $38 ; 0EC1
ds 8 ; 0ec2 38
+
.byte $28, $E8, $A0, $F0, $70, $50, $50, $20 ; 0EC9
ds 8 ; 0ec3 38
+
.byte $70, $70, $D8, $00, $80, $80, $80, $80 ; 0ED1
pi $2810 ; 0ec4 28 28 10
+
.byte $80, $E0, $E0, $00, $00, $00, $20, $78 ; 0ED9
ds 8 ; 0ec7 38
+
.byte $70, $50, $50 ; 0EE1
ds 8 ; 0ec8 38
 
pi $E8A0 ; 0ec9 28 e8 a0
 
ns 0 ; 0ecc f0
 
clr ; 0ecd 70
 
lr 0,A ; 0ece 50
 
lr 0,A ; 0ecf 50
 
li $70 ; 0ed0 20 70
 
clr ; 0ed2 70
 
asd 8 ; 0ed3 d8
 
lr A,KU ; 0ed4 00
 
bt 0,L0E56 ; 0ed5 80 80
 
bt 0,L0E58 ; 0ed7 80 80
 
L0ED9:
 
bt 0,L0EBA ; 0ed9 80 e0
 
xs 0 ; 0edb e0
 
lr A,KU ; 0edc 00
 
lr A,KU ; 0edd 00
 
L0EDE:
 
lr A,KU ; 0ede 00
 
li $78 ; 0edf 20 78
 
clr ; 0ee1 70
 
lr 0,A ; 0ee2 50
 
lr 0,A ; 0ee3 50
 
 
L0EE4:
 
L0EE4:
lr K,P ; 0ee4 08
+
.byte $08, $25, $20, $8B, $8A, $9D, $8E, $8B ; 0EE4
ci $20 ; 0ee5 25 20
+
.byte $8A, $96, $96 ; 0EEC
om ; 0ee7 8b
 
nm ; 0ee8 8a
 
bf $D,L0E78 ; 0ee9 9d 8e
 
om ; 0eeb 8b
 
nm ; 0eec 8a
 
bf 6,L0E84 ; 0eed 96 96
 
 
L0EEF:
 
L0EEF:
ns 8 ; 0eef f8
+
.byte $F8, $88, $88, $88, $F8, $20, $60, $20 ; 0EEF
am ; 0ef0 88
+
.byte $20, $70, $F8, $08, $F8, $80, $F8, $F8 ; 0EF7
L0EF1:
+
.byte $08, $38, $08, $F8, $88, $88, $F8, $08 ; 0EFF
am ; 0ef1 88
+
.byte $08, $F8, $80, $F8, $08, $F8, $80, $80 ; 0F07
am ; 0ef2 88
+
.byte $F8, $88, $F8, $F8, $08, $10, $10, $10 ; 0F0F
L0EF3:
+
.byte $F8, $88, $F8, $88, $F8, $F8, $88, $F8 ; 0F17
ns 8 ; 0ef3 f8
+
.byte $08, $08, $F8, $88, $F8, $88, $88, $F8 ; 0F1F
L0EF4:
+
.byte $48, $78, $48, $F8, $F8, $80, $80, $80 ; 0F27
li $60 ; 0ef4 20 60
+
.byte $F8, $F8, $48, $48, $48, $F8, $F8, $80 ; 0F2F
li $20 ; 0ef6 20 20
+
.byte $E0, $80, $F8, $F8, $80, $E0, $80, $80 ; 0F37
clr ; 0ef8 70
+
.byte $F8, $80, $98, $88, $F8, $88, $88, $F8 ; 0F3F
ns 8 ; 0ef9 f8
+
.byte $88, $88, $F8, $20, $20, $20, $F8, $F8 ; 0F47
lr K,P ; 0efa 08
+
.byte $20, $20, $A0, $E0, $90, $A0, $C0, $A0 ; 0F4F
ns 8 ; 0efb f8
+
.byte $90 ; 0F57
bt 0,L0EF5 ; 0efc 80 f8
+
L0F58:
ns 8 ; 0efe f8
+
.byte $00, $C8, $FF, $C8, $00, $80, $80, $80 ; 0F58
lr K,P ; 0eff 08
+
.byte $80, $F8, $88, $D8, $A8, $88, $88, $88 ; 0F60
ds 8 ; 0f00 38
+
.byte $C8, $A8, $98, $88, $F8, $88, $88, $88 ; 0F68
lr K,P ; 0f01 08
+
.byte $F8, $F8, $88, $F8, $80, $80, $F8, $88 ; 0F70
L0F02:
+
.byte $88, $90, $E8, $F8, $88, $F8, $90, $88 ; 0F78
ns 8 ; 0f02 f8
+
.byte $F8, $80, $F8, $08, $F8, $F8, $20, $20 ; 0F80
am ; 0f03 88
+
.byte $20, $20, $88, $88, $88, $88, $F8, $88 ; 0F88
am ; 0f04 88
+
.byte $88, $88, $50, $20, $88, $88, $A8, $D8 ; 0F90
ns 8 ; 0f05 f8
+
.byte $88, $88, $50, $20, $50, $88, $88, $88 ; 0F98
lr K,P ; 0f06 08
+
.byte $F8, $20, $20, $F8, $10, $20, $40, $F8 ; 0FA0
L0F07:
+
.byte $00, $00, $00, $00, $00, $F8, $08, $38 ; 0FA8
lr K,P ; 0f07 08
+
.byte $00, $20, $00, $00, $00, $00, $40, $20 ; 0FB0
ns 8 ; 0f08 f8
+
.byte $20, $20, $00, $20, $20, $20, $F8, $20 ; 0FB8
bt 0,L0F02 ; 0f09 80 f8
+
.byte $20, $00, $00, $F8, $00, $00 ; 0FC0
lr K,P ; 0f0b 08
 
ns 8 ; 0f0c f8
 
bt 0,L0E8E ; 0f0d 80 80
 
ns 8 ; 0f0f f8
 
am ; 0f10 88
 
ns 8 ; 0f11 f8
 
ns 8 ; 0f12 f8
 
lr K,P ; 0f13 08
 
lr DC,H ; 0f14 10
 
lr DC,H ; 0f15 10
 
lr DC,H ; 0f16 10
 
L0F17:
 
ns 8 ; 0f17 f8
 
am ; 0f18 88
 
ns 8 ; 0f19 f8
 
am ; 0f1a 88
 
ns 8 ; 0f1b f8
 
L0F1C:
 
ns 8 ; 0f1c f8
 
am ; 0f1d 88
 
ns 8 ; 0f1e f8
 
lr K,P ; 0f1f 08
 
lr K,P ; 0f20 08
 
ns 8 ; 0f21 f8
 
am ; 0f22 88
 
ns 8 ; 0f23 f8
 
am ; 0f24 88
 
am ; 0f25 88
 
ns 8 ; 0f26 f8
 
L0F27:
 
lr A,8 ; 0f27 48
 
lis 8 ; 0f28 78
 
lr A,8 ; 0f29 48
 
ns 8 ; 0f2a f8
 
ns 8 ; 0f2b f8
 
bt 0,L0EAD ; 0f2c 80 80
 
bt 0,L0F27 ; 0f2e 80 f8
 
ns 8 ; 0f30 f8
 
L0F31:
 
lr A,8 ; 0f31 48
 
lr A,8 ; 0f32 48
 
lr A,8 ; 0f33 48
 
ns 8 ; 0f34 f8
 
ns 8 ; 0f35 f8
 
bt 0,L0F17 ; 0f36 80 e0
 
bt 0,L0F31 ; 0f38 80 f8
 
ns 8 ; 0f3a f8
 
bt 0,L0F1C ; 0f3b 80 e0
 
bt 0,L0EBE ; 0f3d 80 80
 
ns 8 ; 0f3f f8
 
bt 0,L0ED9 ; 0f40 80 98
 
am ; 0f42 88
 
ns 8 ; 0f43 f8
 
am ; 0f44 88
 
am ; 0f45 88
 
ns 8 ; 0f46 f8
 
am ; 0f47 88
 
am ; 0f48 88
 
ns 8 ; 0f49 f8
 
li $20 ; 0f4a 20 20
 
li $F8 ; 0f4c 20 f8
 
ns 8 ; 0f4e f8
 
li $20 ; 0f4f 20 20
 
ins 0 ; 0f51 a0
 
xs 0 ; 0f52 e0
 
bf 0,L0EF4 ; 0f53 90 a0
 
as 0 ; 0f55 c0
 
ins 0 ; 0f56 a0
 
bf 0,L0F58 ; 0f57 90 00
 
as 8 ; 0f59 c8
 
.byte $FF
 
as 8 ; 0f5b c8
 
lr A,KU ; 0f5c 00
 
bt 0,L0EDE ; 0f5d 80 80
 
bt 0,L0EE0 ; 0f5f 80 80
 
ns 8 ; 0f61 f8
 
L0F62:
 
am ; 0f62 88
 
asd 8 ; 0f63 d8
 
ins 8 ; 0f64 a8
 
am ; 0f65 88
 
am ; 0f66 88
 
am ; 0f67 88
 
as 8 ; 0f68 c8
 
ins 8 ; 0f69 a8
 
bf 8,L0EF3 ; 0f6a 98 88
 
ns 8 ; 0f6c f8
 
am ; 0f6d 88
 
am ; 0f6e 88
 
am ; 0f6f 88
 
ns 8 ; 0f70 f8
 
ns 8 ; 0f71 f8
 
am ; 0f72 88
 
ns 8 ; 0f73 f8
 
bt 0,L0EF5 ; 0f74 80 80
 
ns 8 ; 0f76 f8
 
am ; 0f77 88
 
am ; 0f78 88
 
bf 0,L0F62 ; 0f79 90 e8
 
ns 8 ; 0f7b f8
 
am ; 0f7c 88
 
ns 8 ; 0f7d f8
 
bf 0,L0F07 ; 0f7e 90 88
 
ns 8 ; 0f80 f8
 
bt 0,L0F7A ; 0f81 80 f8
 
lr K,P ; 0f83 08
 
ns 8 ; 0f84 f8
 
ns 8 ; 0f85 f8
 
li $20 ; 0f86 20 20
 
li $20 ; 0f88 20 20
 
am ; 0f8a 88
 
am ; 0f8b 88
 
am ; 0f8c 88
 
am ; 0f8d 88
 
ns 8 ; 0f8e f8
 
am ; 0f8f 88
 
am ; 0f90 88
 
am ; 0f91 88
 
lr 0,A ; 0f92 50
 
li $88 ; 0f93 20 88
 
am ; 0f95 88
 
ins 8 ; 0f96 a8
 
asd 8 ; 0f97 d8
 
am ; 0f98 88
 
am ; 0f99 88
 
lr 0,A ; 0f9a 50
 
li $50 ; 0f9b 20 50
 
am ; 0f9d 88
 
am ; 0f9e 88
 
am ; 0f9f 88
 
ns 8 ; 0fa0 f8
 
li $20 ; 0fa1 20 20
 
ns 8 ; 0fa3 f8
 
lr DC,H ; 0fa4 10
 
li $40 ; 0fa5 20 40
 
ns 8 ; 0fa7 f8
 
lr A,KU ; 0fa8 00
 
lr A,KU ; 0fa9 00
 
lr A,KU ; 0faa 00
 
lr A,KU ; 0fab 00
 
lr A,KU ; 0fac 00
 
ns 8 ; 0fad f8
 
lr K,P ; 0fae 08
 
ds 8 ; 0faf 38
 
lr A,KU ; 0fb0 00
 
li $00 ; 0fb1 20 00
 
lr A,KU ; 0fb3 00
 
lr A,KU ; 0fb4 00
 
lr A,KU ; 0fb5 00
 
lr A,0 ; 0fb6 40
 
li $20 ; 0fb7 20 20
 
li $00 ; 0fb9 20 00
 
li $20 ; 0fbb 20 20
 
li $F8 ; 0fbd 20 f8
 
li $20 ; 0fbf 20 20
 
lr A,KU ; 0fc1 00
 
lr A,KU ; 0fc2 00
 
ns 8 ; 0fc3 f8
 
lr A,KU ; 0fc4 00
 
lr A,KU ; 0fc5 00
 
  
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
 +
; lr A,KU ; 0fc5 00
 
; bios_draw_a01fc_wrapper
 
; bios_draw_a01fc_wrapper
 
; Wrapper for BIOS routine $01FC. Used for a repeated object/sprite style draw.
 
; Wrapper for BIOS routine $01FC. Used for a repeated object/sprite style draw.
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
 
bios_draw_a01fc_wrapper:
 
bios_draw_a01fc_wrapper:
lr K,P ; 0fc6 08
+
lr K,P ; 0FC6 08
pi pushk ; 0fc7 28 01 07 - bios pushk - save return address on BIOS K-stack
+
pi pushk ; 0FC7 28 01 07 - bios pushk - save return address on BIOS K-stack
jmp $01FC ; 0fca 29 01 fc - unconditional jump
+
jmp $01FC ; 0FCA 29 01 FC - unconditional jump
 
 
  
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
; bios_drawchar_bitmap_wrapper
+
; b_drawchar_bmp_wrapper
 
; Wrapper for BIOS drawchar bitmap entry. Sets r4=8 before tail-jumping into
 
; Wrapper for BIOS drawchar bitmap entry. Sets r4=8 before tail-jumping into
 
; BIOS drawchar internals.
 
; BIOS drawchar internals.
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
bios_drawchar_bitmap_wrapper:
+
b_drawchar_bmp_wrapper:
lr K,P ; 0fcd 08
+
lr K,P ; 0FCD 08
pi pushk ; 0fce 28 01 07 - bios pushk - save return address on BIOS K-stack
+
pi pushk ; 0FCE 28 01 07 - bios pushk - save return address on BIOS K-stack
lis 8 ; 0fd1 78
+
lis 8 ; 0FD1 78
lr 4,A ; 0fd2 54
+
lr 4,A ; 0FD2 54
jmp bios_drawchar_bitmap_entry ; 0fd3 29 06 8a - unconditional jump
+
jmp b_drawchar_bmp_entry ; 0FD3 29 06 8A - unconditional jump
 
 
  
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
Line 1,723: Line 924:
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
 
bios_score_prompt_wrapper:
 
bios_score_prompt_wrapper:
lr K,P ; 0fd6 08
+
lr K,P ; 0FD6 08
pi pushk ; 0fd7 28 01 07 - bios pushk - save return address on BIOS K-stack
+
pi pushk ; 0FD7 28 01 07 - bios pushk - save return address on BIOS K-stack
lisu 2 ; 0fda 62
+
lisu 2 ; 0FDA 62
lisl 6 ; 0fdb 6e
+
lisl 6 ; 0FDB 6E
li $99 ; 0fdc 20 99
+
li $99 ; 0FDC 20 99
lr I,A ; 0fde 5d - store A and increment ISAR
+
lr I,A ; 0FDE 5D - store A and increment ISAR
lr S,A ; 0fdf 5c - store A in selected scratchpad register
+
lr S,A ; 0FDF 5C - store A in selected scratchpad register
pi bios_score_left ; 0fe0 28 02 ac
+
pi b_score_left ; 0FE0 28 02 AC
pi bios_score_right ; 0fe3 28 02 b5
+
pi b_score_right ; 0FE3 28 02 B5
pi popk ; 0fe6 28 01 1e - restore return address from BIOS K-stack
+
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
+
pk ; 0FE9 0C - return via K/P after BIOS K-stack restore
 
 
  
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
Line 1,741: Line 941:
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
 
clear_screen_o37_0:
 
clear_screen_o37_0:
clr ; 0fea 70
+
clr ; 0FEA 70
bf 0,clear_screen_common ; 0feb 90 02
+
br clear_screen_common ; 0FEB 90 02 - unconditional jump
  
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
Line 1,749: Line 949:
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
 
clear_screen_o37_1:
 
clear_screen_o37_1:
lis 1 ; 0fed 71
+
lis 1 ; 0FED 71
  
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
Line 1,757: Line 957:
 
; -----------------------------------------------------------------------------
 
; -----------------------------------------------------------------------------
 
clear_screen_common:
 
clear_screen_common:
lisu 3 ; 0fee 63
+
lisu 3 ; 0FEE 63
lisl 7 ; 0fef 6f
+
lisl 7 ; 0FEF 6F
lr S,A ; 0ff0 5c - store A in selected scratchpad register
+
lr S,A ; 0FF0 5C - store A in selected scratchpad register
lr K,P ; 0ff1 08
+
lr K,P ; 0FF1 08
pi pushk ; 0ff2 28 01 07 - bios pushk - save return address on BIOS K-stack
+
pi pushk ; 0FF2 28 01 07 - bios pushk - save return address on BIOS K-stack
li $D0 ; 0ff5 20 d0
+
li $D0 ; 0FF5 20 D0
as 3 ; 0ff7 c3
+
as 3 ; 0FF7 C3
lr 3,A ; 0ff8 53
+
lr 3,A ; 0FF8 53
pi clearscrn ; 0ff9 28 00 d0 - bios clear screen routine
+
pi clrscrn ; 0FF9 28 00 D0 - bios clear screen routine
pi popk ; 0ffc 28 01 1e - restore return address from BIOS K-stack
+
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
+
pk ; 0FFF 0C - return via K/P after BIOS K-stack restore
  
  
</pre>
+
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

Latest revision as of 00:34, 5 August 2026

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