z80:The Application Header
From Learn @ Cemetech
Revision as of 21:30, 31 May 2016 by Xeda112358 (talk | contribs) (Totally overhauled this page, corrected misconceptions.)
Applications need a header, which is essentially data and info about the app that the OS uses to interact with it. The app header is comprised of fields,some of which are required, others of which are not. It is a long-standing myth that the application header needs to be 128 bytes.
Minimal App Header
.db $80,$0F ,0,0,0,0 ;This field is required. It is supposed to be the size of the app, but it doesn't get used. .db $80,$12 ,$01,$04 ;This is the app signing key. .db $80,$4x ,"name" ;This is the app name, where 'x' is the length of the name, up to 8. .db $80,$81 ,# ;where # is the number of app pages used. .db $80,$90 ;Indicate that there is no splash screen .db $03,$22,$09,$00 ;Date stamp. Required, but unused. .db $02,$00 ;date stamp signature <<insert optional fields>> .db $80,$70 ;Indicates the start of the application code.
Optional fields
.db $80,$7F, 0,0,0,0 ;Field: Program Image length, Length=0, N/A. Basically the size of the app, again. .db $80,$21, 1 ;Field: App ID, ID=1 .db $80,$31, 1 ;Field: App Build, Build=1 .db $80,$21, 1 ;Field: Program Revision, Revision=1 .db $80,$C2, 1,13 ;Field: Lowest base code (OS version) that the app can run on. in this example, OS v1.13.