At 10:59 �� 1/7/2001 +0100, you wrote:
> > >Executables can be tested via the FTYP function (type 1 is executable)
> > >of Toolkit 2.
> >
> > Yes, they could also be identified (and some more interesting info gleaned)
> > from the first couple of bytes, the executable header. Don't remember the
> > definition of the top of my head, but I know hex 4AFB appears in it :-)
>
>It's only a 'suggestion' (that most [commercial] programs obey), code
>will still execute if it doesn't have this format - it's just that
>extensions (like 'JOBS') will not be able to display any 'job name'.
>
>When a program is EXEC'd it starts executing with the first byte of the
>file.  The suggestion was that the program should start:
>
>   00:  xx xx xx xx xx xx xx 4A FB
>   08:  LL LL nn nn nn nn nn nn nn
>   10:  nn ....
>
>where xx = executable code (usually it's just a BRA[.S] instruction =
>$60 ..), LLLL = the length of the program name (.W, usually 00LL), nn =
>the bytes of the name, eg:
>
>   00:  60 00 04 E0 00 00 4A FB �.....J.
>   08:  00 06 45 64 69 74 6F 72 ..Editor
>   10:  6D 64 76 32 5F 00 00 7E mdv2_..~
>   etc
>
>is the start of my file editor.  On 'JOBS', this appears as:
>
>Job tag   owner priority
>0   0     0     32
>4   5     0    s40   Editor
>
> > Resident extensions cannot be recognized as they are just pieces of code,
> > they are called after they are loaded (LRESPR), but don't have any defined
> > headers etc.
>
>Although there is no defined header, they usually start with code that
>links the next names in and then exits, and looks something like:
>
>    00: 43 FA 00 0C        LEA    table,A1
>    04: 34 78 01 10        MOVE.W $0110,A2
>    08: 4E 92              JSR    (A2)
>    0A: 70 00              MOVEQ  #$00,D0
>    0C: 4E 75              RTS
>    10: 00 nn        table DC.W   4        ; Number of PROCs
>    12: oo oo              DC.W   proc1-*  ; offset to 1st proc code
>    14: 00 LL              DC.W   5        ; length of name
>    16: 70 72 6F 63 49     DC.B   'proc1'  ; name of 1st proc
>    1B: 00                 ALIGN           ; Words must be on even
>boundaries
>    1C: .....              <rest of proc defn's>
>
>Tho' the LEA and MOVE.W may be the other way round, in which case the
>file will start:
>
>    00: 34 78 01 10        MOVE.W $0110,A2
>    04: 43 FA 00 08        LEA    table,A1
>
>But when you get to pure executable code as opposed to a job (eg the
>Breakout game that came with the QL), there's no defined standard or
>suggestion, so good luck.
>
>Robert

A-ha! this gets better and better :-) At least now I have an idea :-) Thx 
all for the info :-)


Phoebus


Reply via email to