10 rem ************************************************************
20 rem **            ATARI To IFF Picture converter              **
30 rem **                                                        **
40 rem **                  By Francois Lionet                    **
50 rem ************************************************************
60 key off : mode 1 : curs on : show on : locate 0,0 : centre ">> IFF picture converter <<<"
70 N$=file select$("*.PI1","  Please choose a .NEO or .PI1              picture.")
80 if N$="" then default : end 
90 X=instr(N$,".PI1") : if X=0 then X=instr(N$,".NEO")
100 if X=0 then bell : goto 60
110 NS$=left$(N$,X)+"IFF"
120 hide on : curs off : mode 0 : fade 1 : wait 7
130 load N$
140 erase 11 : reserve as work 11,50000
150 AD=start(11)
160 A$="FORM" : gosub 400 : A=0 : gosub 390 : A$="ILBM" : gosub 400
170 A$="BMHD" : gosub 400 : A=20 : gosub 390
180 doke AD,320 : doke AD+2,200 : doke AD+4,0 : doke AD+6,0 : poke AD+8,4 : poke AD+9,0 : poke AD+10,0 : poke AD+11,0 : doke AD+12,0 : poke AD+14,10 : poke AD+15,11 : doke AD+16,320 : doke AD+18,200
190 AD=AD+20
200 A$="CMAP" : gosub 400 : A=48 : gosub 390
210 for X=0 to 15
220 C=colour(X) : R=(C and $700)/$100 : G=(C and $70)/$10 : B=C and $7
230 poke AD,R*32 : poke AD+1,G*32 : poke AD+2,B*32 : AD=AD+3
240 next X
250 A$="BODY" : gosub 400 : A=32000 : gosub 390
260 for Y=0 to 199
270 for P=0 to 3 : AE=logic+Y*160+P*2
280 for X=0 to 19*8 step 8
290 doke AD,deek(AE+X) : doke AE+X,0 : AD=AD+2
300 next X
310 next P
320 next Y
330 loke start(11)+4,AD-start(11)-8
340 fade 1 : wait 8 : fade 1,0,$777 : mode 1 : locate 0,10 : centre "Saving "+NS$
350 show on 
360 NS$=file select$("*.iff",space$((32-len(N$))/2)+NS$)
370 bsave NS$,start(11) to AD
380 goto 60
390 loke AD,A : AD=AD+4 : return 
400 loke AD,leek(varptr(A$)) : AD=AD+4 : return