antoine-source/leretour/apple2/fr/dracula.s
2024-01-08 15:19:56 +01:00

241 lines
6.0 KiB
ArmAsm

*
* Image Oric vers IIgs
*
mx %11
org $1000
lst off
*---
NEWVIDEO = $c029
dpPX = $fc
dpFROM = dpPX+2
*--- 16-bit
clc
xce
sep #$30
lda #$c1
sta NEWVIDEO
rep #$30
*--- Clear screen
ldx #0
txa
]lp stal $e12000,x
inx
inx
bpl ]lp
*--- Palette
ldx #0
]lp lda palette320,x
stal $e19e00,x
inx
inx
cpx #32
bcc ]lp
*--- PrŽparation de l'mage
lda #myPIC
sta dpFROM
*--- Traitement de l'image
sep #$20 ; A = 8-bit
ldx #0
theLOOP ldy #0
]lp lda (dpFROM),y
jsr outputPX
iny
cpy #17
bcc ]lp
rep #$20
lda dpFROM
clc
adc #17
sta dpFROM
txa
clc
adc #160-51 ; 17x3 (6 bits = 3 pixels)
tax
sep #$20
cpx #84*160 ; 84 lignes
bcc theLOOP
sec
xce
sep #$30
rts
*--- Output pixel
*
* bit
* 7 :
* 6 :
* 5 : pixel 1
* 4 : pixel 2
* 3 : pixel 3
* 2 : pixel 4
* 1 : pixel 5
* 0 : pixel 6
outputPX pha
stz dpPX
lda 1,s
and #%0010_0000
beq output1
lda #$f0
sta dpPX
output1 lda 1,s
and #%0001_0000
beq output2
lda #$0f
ora dpPX
sta dpPX
output2 lda dpPX
stal $e12000,x
inx
stz dpPX
lda 1,s
and #%0000_1000
beq output3
lda #$f0
sta dpPX
output3 lda 1,s
and #%0000_0100
beq output4
lda #$0f
ora dpPX
sta dpPX
output4 lda dpPX
stal $e12000,x
inx
stz dpPX
lda 1,s
and #%0000_0010
beq output5
lda #$f0
sta dpPX
output5 lda 1,s
and #%0000_0001
beq output6
lda #$0f
ora dpPX
sta dpPX
output6 lda dpPX
stal $e12000,x
inx
pla
rts
*----------- DATA : palette
palette320 dw $0000,$0777,$0841,$072C,$000F,$0080,$0F70,$0D00
dw $0FA9,$0FF0,$00E0,$04DF,$0DAF,$078F,$0CCC,$0FFF
o2gsCOLH hex 00,07,0A,09,04,0C,0B,0F
o2gsCOLL hex 00,70,A0,90,40,C0,B0,F0
*----------- DATA : DRACULA
myPIC
HEX 404040405F7F6040404040404040404040
HEX 404040437F7F7E40404040404040404040
HEX 4040405F7F7F7F78404040404040404040
HEX 4040437F7F7E7F7E404040404040404040
HEX 40405F7F7F604F7F604040404040404040
HEX 40437F7F7040437F704040404040404040
HEX 40405F7E4040407F784040404040404040
HEX 40417F704040404F7C4040404040404040
HEX 40404F40404040437E4040404040404040
HEX 40405E405C4040417F4040404040404040
HEX 40404E417C4040407F6040404040404040
HEX 40404C437E4040405F7040404040404040
HEX 40405C477F4C40404F7840404040404040
HEX 4040584F7F704040477C40404040404040
HEX 4040584F7E436040477C40404040404040
HEX 40405040407C4F40437E40404040404040
HEX 404050404F405070437E40404040404040
HEX 404050437C436048417F40404040404040
HEX 4040705C405C4040417F40404040404040
HEX 4040704043504040417F60404040404040
HEX 404070404F404040407F60404040404040
HEX 404173617E404760407F70404040404040
HEX 4041705E42405F70407F70404040404040
HEX 4041704042405F78407F78404040404040
HEX 4041704041407F78405F78404040404040
HEX 40417040415F7C7C405F7C404040404040
HEX 40417040415F704E405F7C404040404040
HEX 40417770465F716F405F7E404040404040
HEX 4040777F705F6163404F7E404140404040
HEX 4040777F784F4346404F74404770404040
HEX 4040777F79677F7C404F64417848404040
HEX 404057737A417F78424F464E4364404040
HEX 4040576078517F7042474F505E44404040
HEX 4040574650486040434651677F42404040
HEX 40405646504440404346614F7E42404040
HEX 4040667F7042404043454C7F7E41404040
HEX 40406D7F704140404346507F7C41404040
HEX 4041407F60587F474740607F7840604040
HEX 4041405F4F5C5F637F406C5F7040604040
HEX 404140404F5C5F7B7F407E5F6040604040
HEX 404140405F4E5F6B7E407E5F4040504040
HEX 404148417F4F4F6B7E405E5E4040504040
HEX 40414C437F6043637E40465C4040504040
HEX 40406C437F7843637E404C784040484040
HEX 40406E43637C41717C4070784040484040
HEX 40406777637F40787C4041704040484040
HEX 404057776170405C7C4441704040444040
HEX 404053774040405C5C4A43604040444040
HEX 70405377405F404E5C4A47404040444040
HEX 78404977417F7F4E4C494F404040424040
HEX 7C40497747794F474C4976404040424040
HEX 7C40487747494967445040404040424040
HEX 7C4044574D4F7973645048404040417040
HEX 7C404447597F7F736050487C4040404840
HEX 7C4044475F7F7F717050517E4040404640
HEX 7C4042475F7F7F717060577F4040404140
HEX 7F7F42435F7F7F717060577F6040404140
HEX 7F7F71437F7F7F717060577F7040404060
HEX 7F7F7E63797949716060577F7840404060
HEX 7F7F7C637D4949616140577F7840404060
HEX 7F7F78516F4F7F4361405B7F7C40404050
HEX 7F7F7051677F7C6341407B7F7C40404050
HEX 7F7F6049737F7C6342417D7F7E40404050
HEX 7F7F4048707F7D47424F7D7F7F40404050
HEX 7F7E4044787C4146425F7E7F7F60404050
HEX 7F7C404458704046445F7E7F7F60404050
HEX 7F7840424C40404E445F7E7F7F70404050
HEX 7F7760424440404C485F7F5F7F70404050
HEX 7F7058414243605C485F7F5F7F78404050
HEX 7C4F444062477058505F7F5F7F7C404050
HEX 7D7F7A40514F7F70705F7F4F7F7E404048
HEX 7D7F7D40487F7F73405F7F6F7F7F404048
HEX 7D7F7E60447F7F7C405F7F6F7F7F604048
HEX 7E7F7F50437F7F60405F7F6F7F7F704048
HEX 7E7F7F68417F7C40405F7F6F7F7F7C4048
HEX 7E7F7F74405F7040405F7F777F7E434048
HEX 7F5F7F7A40424040405B7F777F60407048
HEX 7F5F7F7D4042404040437F777E40404C48
HEX 7F5F7F7D4042404040437F777840404370
HEX 7F6F7F7E6042404040417F776040404040
HEX 7F6F7F7E6042404040417F776040404040
HEX 7F6F7F7F5044404040407F774040404040
HEX 7F777F7F5044404040407F764040404040
HEX 7F777F7F5048404040407F744040404040