Files
2017-05-03 13:39:59 +12:00

49 lines
751 B
ArmAsm

decodeiff40 ;for 40 columns...
;
moveq #40,d7
jmp decodeiff3
;
decodeiff ;a0=trimmed IFF file,a1=dest bitmap
;
moveq #80,d7
decodeiff3 ;
move (a0)+,d0 ;pixel width
lsr #3,d0 ;to byte width
move (a0)+,d1 ;pixel height
cmp #200,d1
bcs.s .hok
move #199,d1
.hok subq #1,d1 ;to dbf
move (a0)+,d2 ;depth
subq #1,d2 ;to dbf
addq #6,a0 ;skip header
;
.loop5 move d2,d5 ;depth
;
.loop4 move.l a1,a2
move d0,d4 ;how many bytes in line
;
.loop moveq #0,d3
move.b (a0)+,d3
bmi.s .repeat
sub d3,d4
.loop3 move.b (a0)+,(a2)+
dbf d3,.loop3
jmp .skip
;
.repeat cmp.b #-128,d3
beq.s .loop
neg.b d3
sub d3,d4
.loop2 move.b (a0),(a2)+
dbf d3,.loop2
addq #1,a0
.skip subq #1,d4
bgt.s .loop
;
add d7,a1
dbf d5,.loop4
dbf d1,.loop5
rts