73 lines
1.4 KiB
ArmAsm
73 lines
1.4 KiB
ArmAsm
// #LAYOUT# STD * #TAKE
|
|
// #LAYOUT# X16 * #IGNORE
|
|
// #LAYOUT# * KERNAL_0 #TAKE
|
|
// #LAYOUT# * * #IGNORE
|
|
|
|
//
|
|
// Screen code to PETSCII conversion - see:
|
|
//
|
|
// - https://www.lemon64.com/forum/viewtopic.php?t=66362
|
|
// - https://sta.c64.org/cbm64scrtopetext.html
|
|
//
|
|
|
|
|
|
screen_code_to_petscii:
|
|
|
|
cmp #$20
|
|
bcc s2p_adc_40 // $00-$1F -> $40-$5F
|
|
|
|
cmp #$40
|
|
bcc s2p_end // $20-$3F -> $20-$3F
|
|
|
|
cmp #$60
|
|
bcc s2p_adc_80 // $40-$5F -> $C0-$DF
|
|
|
|
cmp #$80
|
|
bcc s2p_adc_40 // $60-$7F -> $A0-$BF
|
|
|
|
// Here we have to check for quote mode
|
|
|
|
bit QTSW
|
|
bmi screen_code_to_petscii_quote
|
|
|
|
// Not quote mode - continue
|
|
|
|
cmp #$A0
|
|
bcc s2p_adc_C0 // $80-$9F -> $40-$5F
|
|
|
|
cmp #$C0
|
|
bcc s2p_adc_80 // $A0-$BF -> $20-$3F
|
|
|
|
cmp #$E0
|
|
bcc s2p_end // $C0-$DF -> $C0-$DF
|
|
|
|
clc
|
|
bcc s2p_adc_C0 // $E0-$FF -> $A0-$BF
|
|
|
|
s2p_adc_40:
|
|
|
|
adc #$40 // Carry already clear
|
|
|
|
s2p_end:
|
|
|
|
rts
|
|
|
|
s2p_adc_80:
|
|
|
|
adc #$80 // Carry already clear
|
|
rts
|
|
|
|
screen_code_to_petscii_quote:
|
|
|
|
cmp #$C0
|
|
bcc s2p_adc_80 // $80-$BF -> $00-$3F
|
|
|
|
clc
|
|
|
|
// FALLTROUGH $C0-$FF -> $80-$BF
|
|
|
|
s2p_adc_C0:
|
|
|
|
adc #$C0 // Carry already clear
|
|
rts
|