home *** CD-ROM | disk | FTP | other *** search
-
- MODULE 'dos/dos'
-
- DEF rdarg
- DEF argarray[11]:LIST
- DEF source[150]:STRING
- DEF dest[150]:STRING
- DEF dummy[250]:STRING
- DEF fh1,fh2,res,i
- DEF red,grn,blu
- DEF buffer
-
- PROC main() HANDLE
- buffer:=New(1000)
- argarray[0]:=0
- argarray[1]:=0
- rdarg:=ReadArgs('FROM/A,TO',argarray,0)
-
- IF argarray[0]<>NIL
- StrCopy(source,argarray[0],ALL)
- ENDIF
- IF argarray[1]<>NIL
- StrCopy(dest,argarray[1],ALL)
- IF StrLen(dest)<1
- StrCopy(dest,source,ALL)
- i:=InStr(UpperStr(dest),'.MAP')
- StrCopy(dest,source,i)
- StrAdd(dest,'.CEL',ALL)
- ENDIF
- ENDIF
-
- WriteF('Translating "\s" to "\s"...\n',source,dest)
-
- IF rdarg>0
- IF (fh1:=Open(source,MODE_OLDFILE))
- IF (fh2:=Open(dest,MODE_NEWFILE))
-
- Read(fh1,buffer,12) -> P6.16.1.255.
- res:=Read(fh1,buffer,3*16)
- FOR i:=0 TO 15
- IF res<0 THEN Raise("DOS")
-
- red:=Shr(Char(buffer+(i*3)),4)
- grn:=Shr(Char(buffer+(i*3)+1),4)
- blu:=Shr(Char(buffer+(i*3)+2),4)
-
- PutChar(buffer+(i*2),(Shl(red,4) OR blu))
- PutChar(buffer+(i*2)+1,grn)
-
- ENDFOR
- FOR i:=0 TO 9
- res:=Write(fh2,buffer,32)
- IF res<0 THEN Raise("DOS")
- ENDFOR
- ELSE
- Raise("DOS")
- ENDIF
- ELSE
- Raise("DOS")
- ENDIF
- ELSE
- Raise("DOS")
- ENDIF
- EXCEPT DO
- IF fh1 THEN Close(fh1)
- IF fh2 THEN Close(fh2)
- IF buffer THEN Dispose(buffer)
- IF exception THEN WriteF('An error occured.\n\n')
- ENDPROC
-