PROGRAMA
' CONVERTIDOR IFF - RAW DATA (V1.0) '
'
'
' (C) 1990 Francisco javier Rodr�guez
'
' (C) 1990 AMIGA WORLD
'
' Programado con: Amiga-500 (2MB)
' Ensamblador: DevPack 2.0
OpenLib = -408
CloseLib = -414
ExecBase = 4
Open = -30
Mode = 1005
clear = $10002
Allocmem = -198
Tama�o = 32000
Read =-42
Init: move.l execbase,a6
lea dosname,a1
moveq #0,d0
jsr OpenLib(a6)
move.l d0,dosBase
Beq error
move.l d0,a6
move.l #name,d1
move.l #Mode,d2
jsr open(a6)
move.l d0,conhandle
beq error
error: rts
move.l conhandle,d1
move.l #buffer,d2
move.l #80,d3
jsr read(a6)
Openfichero: move.l dosBase,a6
move.l #buffer,d1
move.l #mode,d2
jsr open(a6)
move.l d0,fichhandle
beq error
move.l d0,d1
move.l #buffer2,d2
move.l #32000,d3
jsr read(a6)
beq error
lea.l buffer2,a1
move.l #'body',d0
loop1 cmp.l (a1)+,d0
bne loop1
add.l #4,a1
jsr descomp
move.l 4,a6
move.l #tama�o,d0
move.l #clear,d1
jsr allocmem(a6)
move.l d0,baseplano
beq error1
jsr initstuff
move.l #$4000,d0
lea buffer,a0
move.l baseplano,a1
la1 move.w (a0)+,(a1)+
dbra d0,la1
loop btst #6,$bfe001
bne.s loop
jsr copend
move.l 4,a6
move.l baseplano,a1
move.l #tamano,d0
jsr freemem(a6)
fin rts
initstuff
clr.l d0
move.l baseplano,d1
move.w #$00e0,d2
move.w #3,d4
lea planos,a0
makecop
move.w d2,(a0)+
swap d1
move.w d1,(a0)+
add.w #2,d2
move.w d2,(a0)+
swap d1
move.w d1,(a0)+
add.w #2,d2
add.l #$2000,d1
dbf d4,makecop
move.w #$20,$dff09a
move.w #-$7c80,$dff096
lea copper,a1
move.l a1,$dff084
clr.w $dff08a
rts
copend
move.w #-$7fe0,$dff09a
move.w #$8000,$dff096
rts
cnop 0,2
descomp lea.l virtual,a0
move.l (a1)+,d0
loop2 move.l (a1)+,d1
cmp.l #127,d1
bmi nomen
loop3 move.l (a1)+,(a0)+
dbf d1,loop3
nomen cmp.l #128,d1
bpl loop4
move.l d1,(a0)+
jmp sigue
move.l d0,(a7)+
move.l (a1)+,d0
loop4 move.l (d0),(a0)+
dbf d1,loop4
move.l (a7)-,d0
dbf d0,loop2
rts
Buffer2: blk.b 32000
Buffer: blk.b 80
virtual: blk.b 32000
dosname: dc.b "dos.library"
name: dc.b "CON:20/10/100/200/Mi_ventana",0
even
dosBase: dc.l 0
conhandle: dc.l 0
copper dc.w $0100,%0100000000000000
ds.w 16
dc.w $008e,$2c81,$0090,$2cc1
dc.w $0092,$0038,$0094,$00d0
dc.w $0108,$0040,$010a,$0040
dc.w $0180,$000f,$0182,$0eee
dc.w $0184,$0bbb,$0186,$0243
dc.w $0188,$0499,$018a,$0feb
dc.w $ffff,$fffe
coplong dc.w $0
baseplano: dc.l 0
baselib: dc.l 0
filehandle dc.l 0
nomlib dc.b "dos.library",0
filename dc.b "df1:prueba.pc",0
even
buffer: ds.w $8000
even
end |