ô APV File rewriter v 0.01 Fô Provides a method of loading and saving APV files from BBC BASIC ô (C) Jon Ripley 2006 (: 2ô Allocate memory <: FÓ = + 6 * 1024^2 Pò_APVLoad("Win32api.apv") Zò_APVInfo dò_APVSave("Win33api.apv") nà x: ‚ô Load APV file ŒÝ ò_APVLoad(file$) –ê in%  : ªin% = Žfile$ ´: 2¾header$ = ½š#in%+½š#in%+½š#in%+½š#in%+½š#in% ÈvMajor = š#in% ÒvMinor = š#in% ÜvRevision = š#in% æ: ðnSubs = ¤_DWORD(in%) únFuncs = ¤_DWORD(in%) nConst = ¤_DWORD(in%) nTypes = ¤_DWORD(in%) nEnums = ¤_DWORD(in%) ": R,Þ DeclN$(nSubs+nFuncs), DeclP$(nSubs+nFuncs), ConstN$(nConst), ConstD$(nConst) D6Þ TypeN$(nTypes), TypeD$(nTypes), EnumN$(nEnums), EnumD$(nEnums) @: -Jò_STRARY(DeclN$(), 0, nSubs+nFuncs, in%) -Tò_STRARY(DeclP$(), 1, nSubs+nFuncs, in%) '^ò_STRARY(TypeN$(), 1, nTypes, in%) 'hò_STRARY(TypeD$(), 1, nTypes, in%) 'rò_STRARY(ConstN$(), 1, nConst, in%) '|ò_STRARY(ConstD$(), 1, nConst, in%) '†ò_STRARY(EnumN$(), 1, nEnums, in%) 'ò_STRARY(EnumD$(), 1, nEnums, in%) š: ¤Ù#in% ®á ¸: "Âô Display APV file information ÌÝ ò_APVInfo Öñ "Header: "header$ 1àñ "Version: ";vMajor;".";vMinor;"r";vRevision êñ "Subs: ";nSubs ôñ "Funcs: ";nFuncs þñ "Const: ";nConst ñ "Types: ";nTypes ñ "Enums: ";nEnums á &: 0ô Save as APV file :Ý ò_APVSave(file$) Dê out% N: Xout% = ®file$ b: lÕ#out%,header$; vÕ#out%,vMajor €Õ#out%,vMinor ŠÕ#out%,vRevision ”: žò_wDWORD(nSubs, out%) ¨ò_wDWORD(nFuncs, out%) ²ò_wDWORD(nConst, out%) ¼ò_wDWORD(nTypes, out%) Æò_wDWORD(nEnums, out%) Ð: /Úò_wSTRARY(DeclN$(), 0, nSubs+nFuncs, out%) /äò_wSTRARY(DeclP$(), 1, nSubs+nFuncs, out%) )îò_wSTRARY(TypeN$(), 1, nTypes, out%) )øò_wSTRARY(TypeD$(), 1, nTypes, out%) )ò_wSTRARY(ConstN$(), 1, nConst, out%) ) ò_wSTRARY(ConstD$(), 1, nConst, out%) )ò_wSTRARY(EnumN$(), 1, nEnums, out%) ) ò_wSTRARY(EnumD$(), 1, nEnums, out%) *: 4Ù#out% >á H: Rô Read DWORD from file ;\Ý ¤_DWORD(in%)=š#in%+(š#in%<<8)+(š#in%<<16)+(š#in%<<24) f: pô Write DWORD to file zÝ ò_wDWORD(num, out%) „Õ#out%, num € 255 ŽÕ#out%, num>>8 € 255 ˜Õ#out%, num>>16 € 255 ¢Õ#out%, num>>24 € 255 ¬á ¶: $Àô Read VB string array from file )ÊÝ ò_STRARY(arr$(), start%, end%, in%) Ôê txt$, len%,i% Þã i%=start% ¸ end% èlen% = š#in%+(š#in%<<8) òã j%=1 ¸ len% üarr$(i%)+=½š#in% í í á $: #.ô Write VB string array to file *8Ý ò_wSTRARY(arr$(), start%, end%, in%) Bê txt$, i% Lã i%=start% ¸ end% VÕ#out%,©arr$(i%) € 255 `Õ#out%,©arr$(i%)>>8 € 255 jã j%=1 ¸ len% tÕ#out%,arr$(i%); ~í ˆí ’á ÿÿ